@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
@@ -5135,7 +5135,7 @@ function normalizeDates$3(context, ...dates) {
5135
5135
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
5136
5136
  * //=> Tue Sep 02 2014 00:00:00
5137
5137
  */
5138
- function startOfDay$4(date, options) {
5138
+ function startOfDay$3(date, options) {
5139
5139
  const _date = toDate$3(date, options?.in);
5140
5140
  _date.setHours(0, 0, 0, 0);
5141
5141
  return _date;
@@ -5183,8 +5183,8 @@ function differenceInCalendarDays$3(laterDate, earlierDate, options) {
5183
5183
  earlierDate,
5184
5184
  );
5185
5185
 
5186
- const laterStartOfDay = startOfDay$4(laterDate_);
5187
- const earlierStartOfDay = startOfDay$4(earlierDate_);
5186
+ const laterStartOfDay = startOfDay$3(laterDate_);
5187
+ const earlierStartOfDay = startOfDay$3(earlierDate_);
5188
5188
 
5189
5189
  const laterTimestamp =
5190
5190
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$3(laterStartOfDay);
@@ -12331,7 +12331,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$2 {
12331
12331
  }
12332
12332
  };
12333
12333
 
12334
- var formkitVersion$8 = '202606241801';
12334
+ var formkitVersion$8 = '202606251933';
12335
12335
 
12336
12336
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12337
12337
  // See LICENSE in the project root for license information.
@@ -14415,7 +14415,7 @@ function normalizeDates$1(context, ...dates) {
14415
14415
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
14416
14416
  * //=> Tue Sep 02 2014 00:00:00
14417
14417
  */
14418
- function startOfDay$2(date, options) {
14418
+ function startOfDay$1(date, options) {
14419
14419
  const _date = toDate$1(date, options?.in);
14420
14420
  _date.setHours(0, 0, 0, 0);
14421
14421
  return _date;
@@ -14463,8 +14463,8 @@ function differenceInCalendarDays$1(laterDate, earlierDate, options) {
14463
14463
  earlierDate,
14464
14464
  );
14465
14465
 
14466
- const laterStartOfDay = startOfDay$2(laterDate_);
14467
- const earlierStartOfDay = startOfDay$2(earlierDate_);
14466
+ const laterStartOfDay = startOfDay$1(laterDate_);
14467
+ const earlierStartOfDay = startOfDay$1(earlierDate_);
14468
14468
 
14469
14469
  const laterTimestamp =
14470
14470
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$1(laterStartOfDay);
@@ -23921,8 +23921,8 @@ class RangeDatepickerCell extends i$2 {
23921
23921
  const parsedDateFrom = parseInt(dateFrom, 10);
23922
23922
  const parsedDateTo = parseInt(dateTo, 10);
23923
23923
  if (day) {
23924
- if (getTime(startOfDay$2(parsedDateTo * 1000)) / 1000 === day.date ||
23925
- getTime(startOfDay$2(parsedDateFrom * 1000)) / 1000 === day.date) {
23924
+ if (getTime(startOfDay$1(parsedDateTo * 1000)) / 1000 === day.date ||
23925
+ getTime(startOfDay$1(parsedDateFrom * 1000)) / 1000 === day.date) {
23926
23926
  this.selected = true;
23927
23927
  }
23928
23928
  if (((hoveredDate === day.date || day.date < hoveredDate) &&
@@ -24110,7 +24110,7 @@ class RangeDatepickerCalendar extends i$2 {
24110
24110
  this.dayNamesOfTheWeek = [];
24111
24111
  this.daysOfMonth = [];
24112
24112
  this._locale = null;
24113
- this.currentDate = parseInt(format$1(startOfDay$2(Date.now()), 't'), 10);
24113
+ this.currentDate = parseInt(format$1(startOfDay$1(Date.now()), 't'), 10);
24114
24114
  this.localeChanged();
24115
24115
  this.yearAndMonthChanged(this.year, this.month);
24116
24116
  }
@@ -24584,7 +24584,7 @@ __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
24584
24584
  __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
24585
24585
  AuroLibraryRuntimeUtils$5$1.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
24586
24586
 
24587
- var styleCss$5$2 = i$4`.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}`;
24587
+ var styleCss$5$2 = i$4`.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}`;
24588
24588
 
24589
24589
  var colorCss$5$2 = i$4`: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}`;
24590
24590
 
@@ -24611,12 +24611,6 @@ var popoverVersion = '6.0.1';
24611
24611
 
24612
24612
  /* 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 */
24613
24613
 
24614
- const startOfDay$1 = (ms) => {
24615
- const date = new Date(ms);
24616
- date.setHours(0, 0, 0, 0);
24617
- return date.getTime();
24618
- };
24619
-
24620
24614
  class AuroCalendarCell extends i$2 {
24621
24615
  constructor() {
24622
24616
  super();
@@ -24663,6 +24657,14 @@ class AuroCalendarCell extends i$2 {
24663
24657
  type: Boolean,
24664
24658
  reflect: true
24665
24659
  },
24660
+ /**
24661
+ * @deprecated Propagated from the legacy `auro-calendar.disabledDays`
24662
+ * Unix-timestamp array. The cell honors it for backward compatibility
24663
+ * (see the divergence-check fallback inside `isBlackout`), but
24664
+ * consumers should migrate to `auro-datepicker.blackoutDates`
24665
+ * (YYYY-MM-DD ISO strings). The calendar emits a one-time
24666
+ * deprecation warning the first time a non-empty value is observed.
24667
+ */
24666
24668
  disabledDays: { type: Array },
24667
24669
  isCurrentDate: { type: Boolean },
24668
24670
  locale: { type: String },
@@ -24708,8 +24710,8 @@ class AuroCalendarCell extends i$2 {
24708
24710
  const parsedDateTo = parseInt(dateTo, 10);
24709
24711
 
24710
24712
  if (day) {
24711
- const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
24712
- const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
24713
+ const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
24714
+ const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
24713
24715
 
24714
24716
  if (day.date === departTimestamp || day.date === returnTimestamp) {
24715
24717
  this.selected = true;
@@ -24793,22 +24795,42 @@ class AuroCalendarCell extends i$2 {
24793
24795
  return false;
24794
24796
  }
24795
24797
 
24796
- // Check against disabledDays timestamps (legacy path)
24798
+ // Delegate to the calendar's memoized blackout Set for O(1) lookup
24799
+ // (instead of rescanning disabledDays + blackoutDates per render). The
24800
+ // Set is rebuilt only when either source array reference changes — see
24801
+ // auro-calendar.js#_getBlackoutSet.
24802
+ if (this.calendar && typeof this.calendar._getBlackoutSet === 'function') {
24803
+ if (this.calendar._getBlackoutSet().has(this.day.date)) {
24804
+ return true;
24805
+ }
24806
+ // If the cell's local disabledDays diverged from the calendar's (a
24807
+ // consumer or test mutated cell.disabledDays directly), the Set does
24808
+ // not reflect that addition — fall through to the per-cell scan only
24809
+ // when the reference no longer matches. Production data flow keeps
24810
+ // these identical, so this branch stays cold.
24811
+ if (this.disabledDays && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
24812
+ if (this.disabledDays.findIndex((dd) => parseInt(dd, 10) === this.day.date) !== -1) {
24813
+ return true;
24814
+ }
24815
+ }
24816
+ return false;
24817
+ }
24818
+
24819
+ // Pre-firstUpdated fallback — the cell may render once before the
24820
+ // ancestor calendar is wired up. Uses the legacy O(N) scan so the
24821
+ // result stays correct, just slower for the very first render.
24797
24822
  if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
24798
24823
  (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
24799
24824
  return true;
24800
24825
  }
24801
24826
 
24802
- // Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
24803
24827
  const blackoutDates = this.datepicker?.blackoutDates;
24804
-
24805
24828
  if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
24806
24829
  const date = new Date(this.day.date * 1000);
24807
24830
  const yyyy = date.getFullYear();
24808
24831
  const mm = String(date.getMonth() + 1).padStart(2, '0');
24809
24832
  const dd = String(date.getDate()).padStart(2, '0');
24810
- const cellDate = `${yyyy}-${mm}-${dd}`;
24811
- if (blackoutDates.includes(cellDate)) {
24833
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
24812
24834
  return true;
24813
24835
  }
24814
24836
  }
@@ -24919,12 +24941,12 @@ class AuroCalendarCell extends i$2 {
24919
24941
  const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
24920
24942
  if (!Number.isFinite(parsedDateFrom)) return null;
24921
24943
 
24922
- const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
24944
+ const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
24923
24945
  const dayDate = this.day.date;
24924
24946
 
24925
24947
  const parsedDateTo = Number.parseInt(this.dateTo, 10);
24926
24948
  const hasDateTo = Number.isFinite(parsedDateTo);
24927
- const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
24949
+ const returnTimestamp = hasDateTo ? new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
24928
24950
 
24929
24951
  if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
24930
24952
 
@@ -24934,7 +24956,9 @@ class AuroCalendarCell extends i$2 {
24934
24956
 
24935
24957
  if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
24936
24958
 
24937
- // After start date, no end date yet, or after end date
24959
+ if (!hasDateTo && dayDate > departTimestamp) return this.datepicker.rangeLabelEndPreview || 'previewing range end';
24960
+
24961
+ // After end date when both dateFrom and dateTo are set.
24938
24962
  return this.datepicker.rangeLabelAfterRange || 'after range';
24939
24963
  }
24940
24964
 
@@ -24947,7 +24971,7 @@ class AuroCalendarCell extends i$2 {
24947
24971
  */
24948
24972
  isDepartDate(day, dateFrom) {
24949
24973
  const parsedDateFrom = parseInt(dateFrom, 10);
24950
- const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
24974
+ const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
24951
24975
 
24952
24976
  return this.selected && day.date === departTimestamp;
24953
24977
  }
@@ -24962,7 +24986,7 @@ class AuroCalendarCell extends i$2 {
24962
24986
  */
24963
24987
  isReturnDate(day, dateFrom, dateTo) {
24964
24988
  const parsedDateTo = parseInt(dateTo, 10);
24965
- const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
24989
+ const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
24966
24990
 
24967
24991
  return this.selected && day.date === returnTimestamp && dateFrom;
24968
24992
  }
@@ -25126,6 +25150,7 @@ class AuroCalendarCell extends i$2 {
25126
25150
  setTimeout(() => this.firstUpdated(), 0);
25127
25151
  return;
25128
25152
  }
25153
+ this.calendar = calendar;
25129
25154
  this.datepicker = calendar.datepicker;
25130
25155
  this._slotContentHandler = () => {
25131
25156
  this.handleSlotContent();
@@ -25183,12 +25208,13 @@ class AuroCalendarCell extends i$2 {
25183
25208
  this._cachedButton = this.shadowRoot.querySelector('button.day');
25184
25209
  });
25185
25210
 
25186
- // Update host-level aria attributes for ariaActiveDescendantElement.
25211
+ // Keep the host's gridcell aria attributes in sync with the day data.
25187
25212
  this.updateHostAria();
25188
25213
  }
25189
25214
 
25190
25215
  // Update host aria when selection changes (aria-selected, range labels)
25191
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
25216
+ // or when isCurrentDate flips (aria-current).
25217
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected') || properties.has('isCurrentDate')) {
25192
25218
  this.updateHostAria();
25193
25219
  }
25194
25220
 
@@ -25199,8 +25225,8 @@ class AuroCalendarCell extends i$2 {
25199
25225
  }
25200
25226
 
25201
25227
  /**
25202
- * Updates ARIA attributes on the host element so that
25203
- * ariaActiveDescendantElement can expose cell info to the SR.
25228
+ * Sets host-level ARIA so each cell exposes its date, selection state,
25229
+ * and blackout status to assistive tech browsing the month grid.
25204
25230
  * @private
25205
25231
  * @returns {void}
25206
25232
  */
@@ -25211,14 +25237,20 @@ class AuroCalendarCell extends i$2 {
25211
25237
  if (outOfRange) {
25212
25238
  this.removeAttribute('role');
25213
25239
  this.removeAttribute('aria-label');
25240
+ this.removeAttribute('aria-current');
25214
25241
  return;
25215
25242
  }
25216
25243
 
25217
- // The host acts as the gridcell for ariaActiveDescendantElement.
25218
25244
  this.setAttribute('role', 'gridcell');
25219
25245
  this.setAttribute('aria-label', this.getAriaLabel());
25220
25246
  this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
25221
25247
 
25248
+ if (this.isCurrentDate) {
25249
+ this.setAttribute('aria-current', 'date');
25250
+ } else {
25251
+ this.removeAttribute('aria-current');
25252
+ }
25253
+
25222
25254
  if (this.isBlackout()) {
25223
25255
  this.setAttribute('aria-disabled', 'true');
25224
25256
  } else {
@@ -25233,7 +25265,7 @@ class AuroCalendarCell extends i$2 {
25233
25265
  * @returns {void}
25234
25266
  */
25235
25267
  focusButton() {
25236
- const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
25268
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([disabled])');
25237
25269
  if (button) {
25238
25270
  button.focus({ focusVisible: true });
25239
25271
  }
@@ -25241,7 +25273,9 @@ class AuroCalendarCell extends i$2 {
25241
25273
 
25242
25274
  /**
25243
25275
  * Imperatively marks this cell as active without triggering a Lit re-render.
25244
- * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
25276
+ * Buttons stay tabindex="-1" because DOM focus stays on the grid wrapper
25277
+ * arrow keys move the active cell imperatively and the live region carries
25278
+ * the SR announcement.
25245
25279
  * @returns {void}
25246
25280
  */
25247
25281
  setActive() {
@@ -25283,10 +25317,13 @@ class AuroCalendarCell extends i$2 {
25283
25317
  if (!btn || !this.day) return;
25284
25318
 
25285
25319
  const dayDate = this.day.date;
25286
- const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
25320
+ const departTimestamp = new Date(dateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
25287
25321
  const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
25288
- const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
25289
- const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
25322
+ // `>=` so hovering the depart cell itself (a same-day round-trip
25323
+ // preview) still surfaces a visual cue: the depart cell receives both
25324
+ // rangeDepartDate and lastHoveredDate.
25325
+ const isLastHovered = dayDate === hoveredDate && hoveredDate >= departTimestamp;
25326
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate >= departTimestamp;
25290
25327
 
25291
25328
  btn.classList.toggle('inRange', isInRange);
25292
25329
  btn.classList.toggle('lastHoveredDate', isLastHovered);
@@ -25344,7 +25381,6 @@ class AuroCalendarCell extends i$2 {
25344
25381
  @focus="${outOfRange ? undefined : this.handleFocus}"
25345
25382
  class="${e$2(buttonClasses)}"
25346
25383
  ?disabled="${outOfRange}"
25347
- aria-hidden="${outOfRange ? 'true' : A$7}"
25348
25384
  tabindex="-1">
25349
25385
  <div class="buttonWrapper" aria-hidden="true">
25350
25386
  <div class="currentDayMarker">${this.day?.title || A$7}</div>
@@ -26450,7 +26486,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$2 {
26450
26486
  }
26451
26487
  };
26452
26488
 
26453
- var formkitVersion$2$1 = '202606241801';
26489
+ var formkitVersion$2$1 = '202606251933';
26454
26490
 
26455
26491
  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$5`${s$5(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$4`: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}
26456
26492
  `,u$4$2=i$4`.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}}
@@ -26573,7 +26609,11 @@ class AuroCalendar extends RangeDatepicker {
26573
26609
  this.calendarRangeMonths = null;
26574
26610
 
26575
26611
  /**
26576
- * Legacy array of disabled-date timestamps.
26612
+ * @deprecated Use `auro-datepicker.blackoutDates` (an array of
26613
+ * `YYYY-MM-DD` ISO strings) instead. This legacy array of Unix
26614
+ * timestamps is still honored for backward compatibility but emits a
26615
+ * one-time `console.debug` the first time a non-empty value is observed.
26616
+ * Support will be removed in a future major release.
26577
26617
  * @private
26578
26618
  */
26579
26619
  this.disabledDays = [];
@@ -26830,17 +26870,44 @@ class AuroCalendar extends RangeDatepicker {
26830
26870
  * @returns {void}
26831
26871
  */
26832
26872
  updateActiveCellForVisibleMonth() {
26833
- // Use double-rAF to ensure child month/cell components have fully
26834
- // rendered and cached their button references before we set tabindex.
26835
- requestAnimationFrame(() => {
26836
- requestAnimationFrame(() => {
26837
- const newDate = this.computeActiveDate({ skipDateFrom: true });
26873
+ this._afterMonthRender(() => {
26874
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
26838
26875
 
26839
- if (newDate !== null && newDate !== undefined) {
26840
- this.activeCellDate = newDate;
26841
- this.setActiveCell(this.activeCellDate);
26842
- }
26843
- });
26876
+ if (newDate !== null && newDate !== undefined) {
26877
+ this.activeCellDate = newDate;
26878
+ this.setActiveCell(this.activeCellDate);
26879
+ }
26880
+ });
26881
+ }
26882
+
26883
+ /**
26884
+ * Schedules `callback` two animation frames out, giving the child
26885
+ * `auro-formkit-calendar-month` and `auro-formkit-calendar-cell` elements
26886
+ * a full render-and-paint cycle to settle before the callback reads or
26887
+ * mutates DOM.
26888
+ *
26889
+ * Why two frames, not one:
26890
+ * 1. Lit batches property updates and renders in a microtask, so frame N
26891
+ * schedules the render but the new DOM may not be painted yet.
26892
+ * 2. Cells re-cache `_cachedButton` inside their own `updateComplete.then`,
26893
+ * which also lands a tick later. Reading buttons from frame N+1
26894
+ * (after both renders + cache refresh have flushed) reliably hits the
26895
+ * new month's cells.
26896
+ *
26897
+ * Used by every code path that calls `handleNextMonth`/`handlePrevMonth`
26898
+ * and then needs to inspect the freshly-rendered cells (cross-month
26899
+ * keyboard nav, boundary events, `updateActiveCellForVisibleMonth`).
26900
+ * Do NOT collapse to a single rAF — it intermittently lands before
26901
+ * `_cachedButton` is refreshed, which silently breaks focus restoration
26902
+ * and `setActiveCell` lookups.
26903
+ * @private
26904
+ * @param {() => void} callback - Runs once after the month re-render and
26905
+ * the cells' button caches have refreshed.
26906
+ * @returns {void}
26907
+ */
26908
+ _afterMonthRender(callback) {
26909
+ requestAnimationFrame(() => {
26910
+ requestAnimationFrame(callback);
26844
26911
  });
26845
26912
  }
26846
26913
 
@@ -26958,6 +27025,47 @@ class AuroCalendar extends RangeDatepicker {
26958
27025
  return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
26959
27026
  }
26960
27027
 
27028
+ /**
27029
+ * Picks the focusable cell whose date is closest to targetTs. Used as a
27030
+ * fallback after a month-boundary nav when the exact target date isn't
27031
+ * focusable — typically because the month re-render lagged or the date
27032
+ * was filtered out by isOutOfRange. When two cells are equidistant, the
27033
+ * navigation direction breaks the tie so the user moves the way they
27034
+ * pressed (forward → later cell, backward → earlier cell).
27035
+ * @private
27036
+ * @param {Array} cells - Focusable cells from getAllFocusableCells.
27037
+ * @param {Number} targetTs - Desired Unix timestamp (seconds).
27038
+ * @param {'next'|'prev'} direction - Navigation direction.
27039
+ * @returns {Object|null} The nearest cell, or null when cells is empty.
27040
+ */
27041
+ pickNearestCell(cells, targetTs, direction) {
27042
+ if (!cells.length) {
27043
+ return null;
27044
+ }
27045
+ const forward = direction === 'next';
27046
+ let best = null;
27047
+ let bestDelta = Infinity;
27048
+ cells.forEach((cell) => {
27049
+ if (!cell.day) {
27050
+ return;
27051
+ }
27052
+ const distance = Math.abs(cell.day.date - targetTs);
27053
+ if (distance < bestDelta) {
27054
+ best = cell;
27055
+ bestDelta = distance;
27056
+ return;
27057
+ }
27058
+ if (distance === bestDelta && best) {
27059
+ if (forward && cell.day.date > best.day.date) {
27060
+ best = cell;
27061
+ } else if (!forward && cell.day.date < best.day.date) {
27062
+ best = cell;
27063
+ }
27064
+ }
27065
+ });
27066
+ return best;
27067
+ }
27068
+
26961
27069
  /**
26962
27070
  * Gets all focusable cells across all rendered months.
26963
27071
  * @private
@@ -26974,9 +27082,9 @@ class AuroCalendar extends RangeDatepicker {
26974
27082
 
26975
27083
  /**
26976
27084
  * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
26977
- * Uses imperative DOM manipulation — no Lit re-render triggered.
26978
- * Also updates ariaActiveDescendantElement on the grid wrapper so
26979
- * screen readers announce the active cell without moving DOM focus.
27085
+ * Uses imperative DOM manipulation — no Lit re-render triggered. DOM focus
27086
+ * stays on the grid wrapper; the live region (see getOrCreateLiveRegion)
27087
+ * is what announces the active cell to assistive tech.
26980
27088
  * @param {Number} date - Unix timestamp of the cell to activate.
26981
27089
  * @returns {void}
26982
27090
  */
@@ -27057,6 +27165,72 @@ class AuroCalendar extends RangeDatepicker {
27057
27165
  this.clearRangePreview();
27058
27166
  }
27059
27167
 
27168
+ /**
27169
+ * Returns a memoized Set of blackout timestamps (seconds) drawn from both
27170
+ * the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
27171
+ * The cache invalidates when either source array's reference changes, which
27172
+ * matches Lit's own reactive identity semantics for array properties.
27173
+ * @private
27174
+ * @returns {Set<Number>}
27175
+ */
27176
+ _getBlackoutSet() {
27177
+ const disabledDays = this.disabledDays || [];
27178
+ const blackoutDates = this.datepicker?.blackoutDates;
27179
+ if (this._blackoutSet
27180
+ && this._cachedBlackoutDisabledDays === disabledDays
27181
+ && this._cachedBlackoutDates === blackoutDates) {
27182
+ return this._blackoutSet;
27183
+ }
27184
+
27185
+ if (disabledDays.length > 0) {
27186
+ this._warnDisabledDaysDeprecated();
27187
+ }
27188
+
27189
+ const set = new Set(disabledDays.map((day) => parseInt(day, 10)));
27190
+
27191
+ // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
27192
+ if (Array.isArray(blackoutDates)) {
27193
+ for (const isoStr of blackoutDates) {
27194
+ const parts = isoStr.split('-');
27195
+ const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
27196
+ if (Number.isFinite(ts)) {
27197
+ set.add(ts);
27198
+ }
27199
+ }
27200
+ }
27201
+
27202
+ this._blackoutSet = set;
27203
+ this._cachedBlackoutDisabledDays = disabledDays;
27204
+ this._cachedBlackoutDates = blackoutDates;
27205
+ return set;
27206
+ }
27207
+
27208
+ /**
27209
+ * Per-class flag that gates the `disabledDays` deprecation warning so it
27210
+ * fires exactly once per page no matter how many calendars or rebuild
27211
+ * cycles encounter the legacy array.
27212
+ * @private
27213
+ */
27214
+ static _warnedDisabledDaysDeprecation = false;
27215
+
27216
+ /**
27217
+ * One-time `console.debug` directing consumers from the legacy
27218
+ * `disabledDays` Unix-timestamp API to the ISO `blackoutDates` API. Fires
27219
+ * the first time `_getBlackoutSet` rebuilds from a non-empty
27220
+ * `disabledDays`; subsequent calls (on this or any other AuroCalendar
27221
+ * instance on the page) are silent.
27222
+ * @private
27223
+ * @returns {void}
27224
+ */
27225
+ _warnDisabledDaysDeprecated() {
27226
+ if (AuroCalendar._warnedDisabledDaysDeprecation) {
27227
+ return;
27228
+ }
27229
+ AuroCalendar._warnedDisabledDaysDeprecation = true;
27230
+ // eslint-disable-next-line no-console
27231
+ 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.');
27232
+ }
27233
+
27060
27234
  /**
27061
27235
  * Computes the initial active date from data properties alone — no DOM required.
27062
27236
  * Priority:
@@ -27101,21 +27275,10 @@ class AuroCalendar extends RangeDatepicker {
27101
27275
  const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
27102
27276
  const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
27103
27277
 
27104
- // Build a Set of blackout timestamps for O(1) lookup.
27105
- const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
27106
-
27107
- // Also include ISO-format blackoutDates from the datepicker if available.
27108
- // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
27109
- const isoBlackouts = this.datepicker?.blackoutDates;
27110
- if (Array.isArray(isoBlackouts)) {
27111
- for (const isoStr of isoBlackouts) {
27112
- const parts = isoStr.split('-');
27113
- const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
27114
- if (Number.isFinite(ts)) {
27115
- blackoutSet.add(ts);
27116
- }
27117
- }
27118
- }
27278
+ // Build a Set of blackout timestamps for O(1) lookup. Memoized by the
27279
+ // identity of the source arrays so rapid month nav doesn't rebuild the
27280
+ // Set (and re-parse every ISO string) on every keypress.
27281
+ const blackoutSet = this._getBlackoutSet();
27119
27282
 
27120
27283
  /**
27121
27284
  * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
@@ -27311,8 +27474,8 @@ class AuroCalendar extends RangeDatepicker {
27311
27474
 
27312
27475
  /**
27313
27476
  * Handles arrow key navigation on the calendar grid wrapper.
27314
- * Focus stays on the grid wrapper; only ariaActiveDescendantElement
27315
- * and the visual active-cell indicator change.
27477
+ * Focus stays on the grid wrapper; only the visual active-cell indicator
27478
+ * changes. The live region announces the new active cell.
27316
27479
  * @private
27317
27480
  * @param {KeyboardEvent} event - The keyboard event.
27318
27481
  * @returns {void}
@@ -27377,21 +27540,21 @@ class AuroCalendar extends RangeDatepicker {
27377
27540
  } else {
27378
27541
  this.handlePrevMonth({ skipActiveUpdate: true });
27379
27542
  }
27380
- requestAnimationFrame(() => {
27381
- requestAnimationFrame(() => {
27382
- const cells = this.getAllFocusableCells();
27383
- const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
27384
- if (target) {
27385
- this.setActiveCell(target.day.date);
27386
- this.handleCellFocused({ detail: { date: target.day.date } });
27387
- } else if (cells.length > 0) {
27388
- const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
27543
+ this._afterMonthRender(() => {
27544
+ const cells = this.getAllFocusableCells();
27545
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
27546
+ if (target) {
27547
+ this.setActiveCell(target.day.date);
27548
+ this.handleCellFocused({ detail: { date: target.day.date } });
27549
+ } else {
27550
+ const fallback = this.pickNearestCell(cells, targetTs, navDir);
27551
+ if (fallback) {
27389
27552
  this.setActiveCell(fallback.day.date);
27390
27553
  this.handleCellFocused({ detail: { date: fallback.day.date } });
27391
27554
  }
27392
- // Re-focus grid wrapper after month change re-render
27393
- this.focusActiveCell();
27394
- });
27555
+ }
27556
+ // Re-focus grid wrapper after month change re-render
27557
+ this.focusActiveCell();
27395
27558
  });
27396
27559
  }
27397
27560
  }
@@ -27417,26 +27580,20 @@ class AuroCalendar extends RangeDatepicker {
27417
27580
  } else {
27418
27581
  this.handlePrevMonth({ skipActiveUpdate: true });
27419
27582
  }
27420
- requestAnimationFrame(() => {
27421
- requestAnimationFrame(() => {
27422
- const cells = this.getAllFocusableCells();
27423
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
27424
- if (target) {
27425
- this.setActiveCell(target.day.date);
27426
- this.handleCellFocused({ detail: { date: target.day.date } });
27427
- } else if (cells.length > 0) {
27428
- let nearest = null;
27429
-
27430
- if (navDirection === 'next') {
27431
- [nearest] = cells;
27432
- } else {
27433
- nearest = cells[cells.length - 1];
27434
- }
27583
+ this._afterMonthRender(() => {
27584
+ const cells = this.getAllFocusableCells();
27585
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
27586
+ if (target) {
27587
+ this.setActiveCell(target.day.date);
27588
+ this.handleCellFocused({ detail: { date: target.day.date } });
27589
+ } else {
27590
+ const nearest = this.pickNearestCell(cells, targetDate, navDirection);
27591
+ if (nearest) {
27435
27592
  this.setActiveCell(nearest.day.date);
27436
27593
  this.handleCellFocused({ detail: { date: nearest.day.date } });
27437
27594
  }
27438
- this.focusActiveCell();
27439
- });
27595
+ }
27596
+ this.focusActiveCell();
27440
27597
  });
27441
27598
  }
27442
27599
  }
@@ -27486,19 +27643,17 @@ class AuroCalendar extends RangeDatepicker {
27486
27643
  }
27487
27644
 
27488
27645
  this.handleNextMonth({ skipActiveUpdate: true });
27489
- requestAnimationFrame(() => {
27490
- requestAnimationFrame(() => {
27491
- const cells = this.getAllFocusableCells();
27492
- const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
27493
- if (target) {
27494
- this.setActiveCell(target.day.date);
27495
- this.focusActiveCell();
27496
- } else if (cells.length > 0) {
27497
- // Fallback: first cell of the last rendered month
27498
- this.setActiveCell(cells[cells.length - 1].day.date);
27499
- this.focusActiveCell();
27500
- }
27501
- });
27646
+ this._afterMonthRender(() => {
27647
+ const cells = this.getAllFocusableCells();
27648
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
27649
+ if (target) {
27650
+ this.setActiveCell(target.day.date);
27651
+ this.focusActiveCell();
27652
+ } else if (cells.length > 0) {
27653
+ // Fallback: first cell of the last rendered month
27654
+ this.setActiveCell(cells[cells.length - 1].day.date);
27655
+ this.focusActiveCell();
27656
+ }
27502
27657
  });
27503
27658
  } else if (direction === 'prev' && this.showPrevMonthBtn) {
27504
27659
  // Navigate to previous month and focus the computed previous date.
@@ -27512,19 +27667,17 @@ class AuroCalendar extends RangeDatepicker {
27512
27667
  }
27513
27668
 
27514
27669
  this.handlePrevMonth({ skipActiveUpdate: true });
27515
- requestAnimationFrame(() => {
27516
- requestAnimationFrame(() => {
27517
- const cells = this.getAllFocusableCells();
27518
- const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
27519
- if (target) {
27520
- this.setActiveCell(target.day.date);
27521
- this.focusActiveCell();
27522
- } else if (cells.length > 0) {
27523
- // Fallback: last cell of the first rendered month
27524
- this.setActiveCell(cells[0].day.date);
27525
- this.focusActiveCell();
27526
- }
27527
- });
27670
+ this._afterMonthRender(() => {
27671
+ const cells = this.getAllFocusableCells();
27672
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
27673
+ if (target) {
27674
+ this.setActiveCell(target.day.date);
27675
+ this.focusActiveCell();
27676
+ } else if (cells.length > 0) {
27677
+ // Fallback: last cell of the first rendered month
27678
+ this.setActiveCell(cells[0].day.date);
27679
+ this.focusActiveCell();
27680
+ }
27528
27681
  });
27529
27682
  }
27530
27683
  } else if (key === 'ArrowDown' || key === 'ArrowUp') {
@@ -27552,20 +27705,18 @@ class AuroCalendar extends RangeDatepicker {
27552
27705
  } else {
27553
27706
  this.handlePrevMonth({ skipActiveUpdate: true });
27554
27707
  }
27555
- requestAnimationFrame(() => {
27556
- requestAnimationFrame(() => {
27557
- const cells = this.getAllFocusableCells();
27558
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
27559
- if (target) {
27560
- this.setActiveCell(target.day.date);
27561
- this.focusActiveCell();
27562
- } else if (cells.length > 0) {
27563
- // Clamp to nearest focusable cell
27564
- const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
27565
- this.setActiveCell(nearest.day.date);
27566
- this.focusActiveCell();
27567
- }
27568
- });
27708
+ this._afterMonthRender(() => {
27709
+ const cells = this.getAllFocusableCells();
27710
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
27711
+ if (target) {
27712
+ this.setActiveCell(target.day.date);
27713
+ this.focusActiveCell();
27714
+ } else if (cells.length > 0) {
27715
+ // Clamp to nearest focusable cell
27716
+ const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
27717
+ this.setActiveCell(nearest.day.date);
27718
+ this.focusActiveCell();
27719
+ }
27569
27720
  });
27570
27721
  }
27571
27722
  }
@@ -27604,8 +27755,9 @@ class AuroCalendar extends RangeDatepicker {
27604
27755
  return;
27605
27756
  }
27606
27757
 
27607
- // With aria-activedescendant, the button no longer receives native focus,
27608
- // so we use the debounced live region for the full context announcement.
27758
+ // DOM focus stays on the grid wrapper while arrow keys move the active
27759
+ // cell, so cell buttons never receive native focus. The debounced live
27760
+ // region carries the full-context announcement instead.
27609
27761
  const announcement = this.buildFocusAnnouncement(date);
27610
27762
  this.announceFocusDebounced(announcement);
27611
27763
 
@@ -27675,10 +27827,10 @@ class AuroCalendar extends RangeDatepicker {
27675
27827
  return null;
27676
27828
  }
27677
27829
 
27678
- const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
27830
+ const departTs = new Date(parsedFrom * 1000).setHours(0, 0, 0, 0) / 1000;
27679
27831
  const parsedTo = Number.parseInt(this.dateTo, 10);
27680
27832
  const hasTo = Number.isFinite(parsedTo);
27681
- const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
27833
+ const returnTs = hasTo ? new Date(parsedTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
27682
27834
 
27683
27835
  if (date === departTs) {
27684
27836
  return this.datepicker.rangeLabelStart || 'range start';
@@ -27692,6 +27844,9 @@ class AuroCalendar extends RangeDatepicker {
27692
27844
  if (hasTo && date > departTs && date < returnTs) {
27693
27845
  return this.datepicker.rangeLabelInRange || 'in range';
27694
27846
  }
27847
+ if (!hasTo && date > departTs) {
27848
+ return this.datepicker.rangeLabelEndPreview || 'previewing range end';
27849
+ }
27695
27850
  return this.datepicker.rangeLabelAfterRange || 'after range';
27696
27851
  }
27697
27852
 
@@ -27888,9 +28043,34 @@ class AuroCalendar extends RangeDatepicker {
27888
28043
  // the last one.
27889
28044
  if (this._announceRafId) {
27890
28045
  cancelAnimationFrame(this._announceRafId);
28046
+ this._announceRafId = null;
27891
28047
  }
28048
+ this._deliverAnnouncement(dateStr, 0);
28049
+ }
28050
+
28051
+ /**
28052
+ * Writes `dateStr` to the live region. If the dropdown's dialog hasn't
28053
+ * mounted yet (so getOrCreateLiveRegion can't attach), retries on the
28054
+ * next animation frame up to MAX_LIVE_REGION_RETRIES instead of silently
28055
+ * dropping the announcement. The retry uses the same `_announceRafId`
28056
+ * the double-rAF below uses, so a newer announceSelection call (or
28057
+ * disconnectedCallback) cancels any in-flight retry.
28058
+ * @private
28059
+ * @param {String} dateStr - The localized date string to announce.
28060
+ * @param {Number} attempts - Number of prior retry attempts.
28061
+ * @returns {void}
28062
+ */
28063
+ _deliverAnnouncement(dateStr, attempts) {
27892
28064
  const liveRegion = this.getOrCreateLiveRegion();
27893
28065
  if (!liveRegion) {
28066
+ const MAX_LIVE_REGION_RETRIES = 10;
28067
+ if (attempts < MAX_LIVE_REGION_RETRIES) {
28068
+ this._announceRafId = requestAnimationFrame(() => {
28069
+ this._deliverAnnouncement(dateStr, attempts + 1);
28070
+ });
28071
+ } else {
28072
+ this._announceRafId = null;
28073
+ }
27894
28074
  return;
27895
28075
  }
27896
28076
 
@@ -28076,7 +28256,7 @@ class AuroCalendar extends RangeDatepicker {
28076
28256
  </button>
28077
28257
  ` : undefined}
28078
28258
  </div>
28079
- <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}">
28259
+ <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}">
28080
28260
  ${this.renderAllCalendars()}
28081
28261
  </div>
28082
28262
  </div>
@@ -31961,7 +32141,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$2 {
31961
32141
  }
31962
32142
  };
31963
32143
 
31964
- var formkitVersion$1$3 = '202606241801';
32144
+ var formkitVersion$1$3 = '202606251933';
31965
32145
 
31966
32146
  let AuroElement$2$2 = class AuroElement extends i$2 {
31967
32147
  static get properties() {
@@ -38358,7 +38538,7 @@ function normalizeDates$2(context, ...dates) {
38358
38538
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
38359
38539
  * //=> Tue Sep 02 2014 00:00:00
38360
38540
  */
38361
- function startOfDay$3(date, options) {
38541
+ function startOfDay$2(date, options) {
38362
38542
  const _date = toDate$2(date, options?.in);
38363
38543
  _date.setHours(0, 0, 0, 0);
38364
38544
  return _date;
@@ -38406,8 +38586,8 @@ function differenceInCalendarDays$2(laterDate, earlierDate, options) {
38406
38586
  earlierDate,
38407
38587
  );
38408
38588
 
38409
- const laterStartOfDay = startOfDay$3(laterDate_);
38410
- const earlierStartOfDay = startOfDay$3(earlierDate_);
38589
+ const laterStartOfDay = startOfDay$2(laterDate_);
38590
+ const earlierStartOfDay = startOfDay$2(earlierDate_);
38411
38591
 
38412
38592
  const laterTimestamp =
38413
38593
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$2(laterStartOfDay);
@@ -45554,7 +45734,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$2 {
45554
45734
  }
45555
45735
  };
45556
45736
 
45557
- var formkitVersion$7 = '202606241801';
45737
+ var formkitVersion$7 = '202606251933';
45558
45738
 
45559
45739
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
45560
45740
  // See LICENSE in the project root for license information.
@@ -47031,6 +47211,7 @@ class AuroDatePicker extends AuroElement$5 {
47031
47211
  this.rangeLabelBeforeRange = 'before range';
47032
47212
  this.rangeLabelInRange = 'in range';
47033
47213
  this.rangeLabelAfterRange = 'after range';
47214
+ this.rangeLabelEndPreview = 'previewing range end';
47034
47215
  this.blackoutDates = [];
47035
47216
  this.blackoutLabel = 'unavailable';
47036
47217
  this.navLabelPrevMonth = 'Previous month';
@@ -47130,6 +47311,22 @@ class AuroDatePicker extends AuroElement$5 {
47130
47311
  */
47131
47312
  this.handleClick = this.handleClick.bind(this);
47132
47313
 
47314
+ /**
47315
+ * Single AbortController shared by every listener registered in the
47316
+ * configure* methods. Lets disconnectedCallback tear all of them down
47317
+ * with one abort() call.
47318
+ *
47319
+ * The genuine leak risk is the listeners attached to children that can
47320
+ * outlive the host if they get reparented — `this.dropdown`,
47321
+ * `this.calendar`, and the inputs inside the dropdown's slot.
47322
+ * Listeners attached to `this` (e.g. focusin/focusout on the host)
47323
+ * form a self-contained reference graph that the GC can collect with
47324
+ * the host anyway, but they share the same signal so the cleanup
47325
+ * pattern stays uniform across all configure* sites.
47326
+ * @private
47327
+ */
47328
+ this._listenerAbortController = new AbortController();
47329
+
47133
47330
  /**
47134
47331
  * @private
47135
47332
  */
@@ -47178,6 +47375,7 @@ class AuroDatePicker extends AuroElement$5 {
47178
47375
 
47179
47376
  /**
47180
47377
  * Label announced for blackout (disabled but in-range) date cells.
47378
+ * @default 'unavailable'
47181
47379
  */
47182
47380
  blackoutLabel: {
47183
47381
  type: String,
@@ -47194,6 +47392,7 @@ class AuroDatePicker extends AuroElement$5 {
47194
47392
 
47195
47393
  /**
47196
47394
  * Accessible label for the calendar grid containing the days of the month.
47395
+ * @default 'Calendar days of the month'
47197
47396
  */
47198
47397
  calendarGridLabel: {
47199
47398
  type: String,
@@ -47356,6 +47555,7 @@ class AuroDatePicker extends AuroElement$5 {
47356
47555
 
47357
47556
  /**
47358
47557
  * Accessible label for the next month navigation button.
47558
+ * @default 'Next month'
47359
47559
  */
47360
47560
  navLabelNextMonth: {
47361
47561
  type: String,
@@ -47364,6 +47564,7 @@ class AuroDatePicker extends AuroElement$5 {
47364
47564
 
47365
47565
  /**
47366
47566
  * Accessible label for the previous month navigation button.
47567
+ * @default 'Previous month'
47367
47568
  */
47368
47569
  navLabelPrevMonth: {
47369
47570
  type: String,
@@ -47442,6 +47643,7 @@ class AuroDatePicker extends AuroElement$5 {
47442
47643
 
47443
47644
  /**
47444
47645
  * Label announced for cells after the range (or after start when no end is selected).
47646
+ * @default 'after range'
47445
47647
  */
47446
47648
  rangeLabelAfterRange: {
47447
47649
  type: String,
@@ -47450,6 +47652,7 @@ class AuroDatePicker extends AuroElement$5 {
47450
47652
 
47451
47653
  /**
47452
47654
  * Label announced for cells before the range start.
47655
+ * @default 'before range'
47453
47656
  */
47454
47657
  rangeLabelBeforeRange: {
47455
47658
  type: String,
@@ -47458,14 +47661,27 @@ class AuroDatePicker extends AuroElement$5 {
47458
47661
 
47459
47662
  /**
47460
47663
  * Label announced for the range end date cell.
47664
+ * @default 'range end'
47461
47665
  */
47462
47666
  rangeLabelEnd: {
47463
47667
  type: String,
47464
47668
  reflect: true
47465
47669
  },
47466
47670
 
47671
+ /**
47672
+ * Label announced for the focused cell while previewing a range end
47673
+ * (dateFrom set, dateTo not yet selected). Tells AT users that
47674
+ * pressing Enter would commit this cell as the range end.
47675
+ * @default 'previewing range end'
47676
+ */
47677
+ rangeLabelEndPreview: {
47678
+ type: String,
47679
+ reflect: true
47680
+ },
47681
+
47467
47682
  /**
47468
47683
  * Label announced for cells within the selected range.
47684
+ * @default 'in range'
47469
47685
  */
47470
47686
  rangeLabelInRange: {
47471
47687
  type: String,
@@ -47474,6 +47690,7 @@ class AuroDatePicker extends AuroElement$5 {
47474
47690
 
47475
47691
  /**
47476
47692
  * Label announced for the range start date cell.
47693
+ * @default 'range start'
47477
47694
  */
47478
47695
  rangeLabelStart: {
47479
47696
  type: String,
@@ -47838,10 +48055,26 @@ class AuroDatePicker extends AuroElement$5 {
47838
48055
  // ─── Vendor calendar time conversions ─────────────────────────────────────
47839
48056
 
47840
48057
  /**
47841
- * Converts a Unix timestamp (seconds) from the vendor calendar to an ISO date string.
48058
+ * Converts a Unix timestamp (seconds) from the vendored range-datepicker
48059
+ * (`src/vendor/wc-range-datepicker/day.js`) to an ISO date string.
48060
+ *
48061
+ * Timezone contract:
48062
+ * - INPUT: `time` is assumed to be the seconds-since-epoch of **local
48063
+ * midnight** for the intended calendar day. The vendor's Day constructor
48064
+ * builds it via `date-fns format(date, 't')` from a locally-constructed
48065
+ * Date, so this assumption currently holds end-to-end.
48066
+ * - OUTPUT: `dateFormatter.toISOFormatString` reads the Date's local
48067
+ * getFullYear/getMonth/getDate components, so the returned YYYY-MM-DD
48068
+ * string matches the local calendar day.
48069
+ *
48070
+ * If the vendor ever switches to emitting UTC-midnight timestamps, this
48071
+ * conversion will silently shift the returned date by one day in zones
48072
+ * west of UTC. Any vendor swap should re-verify this contract; the TZ
48073
+ * regression suite (`npm run test:hst`, UTC-10) will catch the symptom.
48074
+ *
47842
48075
  * @private
47843
- * @param {number} time - Unix timestamp in seconds.
47844
- * @returns {string} ISO date string (yyyy-mm-dd).
48076
+ * @param {number} time - Unix timestamp (seconds), local midnight of the day.
48077
+ * @returns {string} ISO date string (yyyy-mm-dd) reflecting the local calendar day.
47845
48078
  */
47846
48079
  convertWcTimeToDate(time) {
47847
48080
  return dateFormatter$1.toISOFormatString(new Date(time * 1000));
@@ -47943,8 +48176,8 @@ class AuroDatePicker extends AuroElement$5 {
47943
48176
  }
47944
48177
  }
47945
48178
 
47946
- // Focus the calendar grid wrapper (aria-activedescendant handles
47947
- // the SR announcement for the active cell).
48179
+ // Focus the calendar grid wrapper. The live region (announced just
48180
+ // below) handles the SR announcement for the active cell.
47948
48181
  if (activeCell) {
47949
48182
  this.calendar.focusActiveCell();
47950
48183
 
@@ -47994,11 +48227,13 @@ class AuroDatePicker extends AuroElement$5 {
47994
48227
  this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
47995
48228
  }
47996
48229
 
48230
+ const { signal } = this._listenerAbortController;
48231
+
47997
48232
  this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
47998
48233
  if (!this.isPopoverVisible) {
47999
48234
  this.dropdown.show();
48000
48235
  }
48001
- });
48236
+ }, { signal });
48002
48237
 
48003
48238
  this.dropdown.addEventListener('auroDropdown-toggled', () => {
48004
48239
  this.notifyDatepickerToggled();
@@ -48016,7 +48251,7 @@ class AuroDatePicker extends AuroElement$5 {
48016
48251
  if (this.valueObject) {
48017
48252
  this.centralDate = this.value;
48018
48253
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
48019
- this.centralDate = new Date();
48254
+ this.centralDate = dateFormatter$1.toISOFormatString(new Date());
48020
48255
  }
48021
48256
  }
48022
48257
 
@@ -48096,7 +48331,7 @@ class AuroDatePicker extends AuroElement$5 {
48096
48331
  this.forceScrollOnNextMobileCalendarRender = false;
48097
48332
  }, 0);
48098
48333
  }
48099
- });
48334
+ }, { signal });
48100
48335
 
48101
48336
  // Handle responsive strategy changes while the dropdown is open
48102
48337
  // (e.g. resizing from desktop → mobile or vice versa).
@@ -48143,7 +48378,7 @@ class AuroDatePicker extends AuroElement$5 {
48143
48378
  });
48144
48379
  });
48145
48380
  }
48146
- });
48381
+ }, { signal });
48147
48382
  }
48148
48383
 
48149
48384
  /**
@@ -48156,6 +48391,8 @@ class AuroDatePicker extends AuroElement$5 {
48156
48391
 
48157
48392
  this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
48158
48393
 
48394
+ const { signal } = this._listenerAbortController;
48395
+
48159
48396
  this.inputList.forEach((input, index) => {
48160
48397
  input.addEventListener('input', (event) => {
48161
48398
  event.stopPropagation();
@@ -48167,7 +48404,7 @@ class AuroDatePicker extends AuroElement$5 {
48167
48404
  }
48168
48405
 
48169
48406
  this.notifyValueChanged();
48170
- });
48407
+ }, { signal });
48171
48408
 
48172
48409
  input.addEventListener('auroFormElement-validated', (evt) => {
48173
48410
  // not to bubble up input's validated event.
@@ -48183,7 +48420,7 @@ class AuroDatePicker extends AuroElement$5 {
48183
48420
  this.validity = evt.detail.validity;
48184
48421
  this.errorMessage = evt.detail.message;
48185
48422
  }
48186
- });
48423
+ }, { signal });
48187
48424
  });
48188
48425
  }
48189
48426
 
@@ -48197,6 +48434,8 @@ class AuroDatePicker extends AuroElement$5 {
48197
48434
  this.calendar.datepicker = this;
48198
48435
  this.calendar.dropdown = this.dropdown;
48199
48436
 
48437
+ const { signal } = this._listenerAbortController;
48438
+
48200
48439
  this.calendar.addEventListener('auroCalendar-dateSelected', () => {
48201
48440
  if (this.inputList[0].value !== this.calendar.dateFrom && this.calendar.dateFrom !== undefined) {
48202
48441
  this.inputList[0].value = this.convertWcTimeToDate(this.calendar.dateFrom);
@@ -48205,11 +48444,11 @@ class AuroDatePicker extends AuroElement$5 {
48205
48444
  if (this.inputList[1] && this.calendar.dateTo && this.inputList[1].value !== this.calendar.dateTo) {
48206
48445
  this.inputList[1].value = this.convertWcTimeToDate(this.calendar.dateTo);
48207
48446
  }
48208
- });
48447
+ }, { signal });
48209
48448
 
48210
48449
  this.calendar.addEventListener('auroCalendar-dismissRequest', () => {
48211
48450
  this.dropdown.hide();
48212
- });
48451
+ }, { signal });
48213
48452
 
48214
48453
  this.calendar.addEventListener('auroCalendar-centralDateChanged', (event) => {
48215
48454
  const match = this.centralDateObject && this.util.datesMatch(event.detail.date, this.centralDateObject);
@@ -48219,7 +48458,7 @@ class AuroDatePicker extends AuroElement$5 {
48219
48458
  }
48220
48459
 
48221
48460
  this.notifyMonthChanged(event);
48222
- });
48461
+ }, { signal });
48223
48462
  }
48224
48463
 
48225
48464
  /**
@@ -48228,10 +48467,17 @@ class AuroDatePicker extends AuroElement$5 {
48228
48467
  * @returns {void}
48229
48468
  */
48230
48469
  configureDatepicker() {
48470
+ // These listeners are on `this` (the host), so they would GC with the
48471
+ // host even without the abort signal — see the leak rationale on
48472
+ // `_listenerAbortController`. The signal is still passed for uniform
48473
+ // cleanup semantics with the child-element listeners in the other
48474
+ // configure* methods.
48475
+ const { signal } = this._listenerAbortController;
48476
+
48231
48477
  this.addEventListener('focusin', () => {
48232
48478
  this.touched = true;
48233
48479
  this.hasFocus = true;
48234
- });
48480
+ }, { signal });
48235
48481
 
48236
48482
  this.addEventListener('focusout', () => {
48237
48483
  this.hasFocus = false;
@@ -48243,7 +48489,7 @@ class AuroDatePicker extends AuroElement$5 {
48243
48489
  if (!this.matches(':focus-within')) {
48244
48490
  this.validate();
48245
48491
  }
48246
- });
48492
+ }, { signal });
48247
48493
 
48248
48494
  if (this.valueObject) {
48249
48495
  this.calendar.dateFrom = this.convertToWcValidTime(this.valueObject);
@@ -48441,6 +48687,36 @@ class AuroDatePicker extends AuroElement$5 {
48441
48687
  return this.validity !== undefined && this.validity !== 'valid';
48442
48688
  }
48443
48689
 
48690
+ /**
48691
+ * Per-class dedup set used by `_warnInvalidLocale`. Static so the dedup
48692
+ * spans every datepicker instance on the page; lives on the class (not
48693
+ * at module scope) so it stays an encapsulated implementation detail of
48694
+ * this component and does not interfere with WCA's class-JSDoc
48695
+ * attachment.
48696
+ * @private
48697
+ */
48698
+ static _warnedInvalidLocales = new Set();
48699
+
48700
+ /**
48701
+ * Logs a one-time `console.debug` when an unsupported locale falls back to
48702
+ * en-US. Deduped by the offending tag so noisy re-renders that resurface
48703
+ * the same bad value stay quiet, but each new bad value still signals so
48704
+ * consumers can spot the typo or missing tag.
48705
+ * @private
48706
+ * @param {string|undefined} badLocale - The locale value that failed.
48707
+ * @returns {void}
48708
+ */
48709
+ _warnInvalidLocale(badLocale) {
48710
+ const key = String(badLocale ?? '');
48711
+ const seen = AuroDatePicker._warnedInvalidLocales;
48712
+ if (seen.has(key)) {
48713
+ return;
48714
+ }
48715
+ seen.add(key);
48716
+ // eslint-disable-next-line no-console
48717
+ 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".`);
48718
+ }
48719
+
48444
48720
  /**
48445
48721
  * Lifecycle method to check if the locale is valid.
48446
48722
  * @ignore
@@ -48451,10 +48727,15 @@ class AuroDatePicker extends AuroElement$5 {
48451
48727
  if (changedProperties.has('locale')) {
48452
48728
  try {
48453
48729
  const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
48454
- this._validLocale = supported.length > 0 ? this.locale : 'en-US';
48730
+ if (supported.length > 0) {
48731
+ this._validLocale = this.locale;
48732
+ } else {
48733
+ this._validLocale = 'en-US';
48734
+ this._warnInvalidLocale(this.locale);
48735
+ }
48455
48736
  } catch {
48456
- console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
48457
48737
  this._validLocale = 'en-US';
48738
+ this._warnInvalidLocale(this.locale);
48458
48739
  }
48459
48740
 
48460
48741
  const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
@@ -48536,8 +48817,6 @@ class AuroDatePicker extends AuroElement$5 {
48536
48817
  // Skip centralDate update when user clicked a cell in range mode
48537
48818
  // to prevent the displayed months from shifting
48538
48819
  this.centralDate = this.value;
48539
- //TODO: TEST THIS CHANGE
48540
- // this.calendarRenderUtil.updateCentralDate(this, this.value);
48541
48820
  }
48542
48821
 
48543
48822
  this.setHasValue();
@@ -48597,8 +48876,6 @@ class AuroDatePicker extends AuroElement$5 {
48597
48876
  // Skip centralDate update when user clicked a cell in range mode
48598
48877
  // to prevent the displayed months from shifting
48599
48878
  this.centralDate = this.valueEnd;
48600
- // TODO: TEST THIS CHANGE
48601
- // this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
48602
48879
  }
48603
48880
 
48604
48881
  this.validate();
@@ -48740,7 +49017,7 @@ class AuroDatePicker extends AuroElement$5 {
48740
49017
  * @returns {void}
48741
49018
  */
48742
49019
  configureClickHandler() {
48743
- this.addEventListener('click', this.handleClick);
49020
+ this.addEventListener('click', this.handleClick, { signal: this._listenerAbortController.signal });
48744
49021
  }
48745
49022
 
48746
49023
  firstUpdated() {
@@ -48762,6 +49039,17 @@ class AuroDatePicker extends AuroElement$5 {
48762
49039
  this.locale = this.domHandler.getLocale(this);
48763
49040
  }
48764
49041
 
49042
+ disconnectedCallback() {
49043
+ super.disconnectedCallback();
49044
+ // Defer so that re-parenting (auro-drawer slotting it into a dialog,
49045
+ // for example) does not abort listeners we still need after reconnect.
49046
+ queueMicrotask(() => {
49047
+ if (!this.isConnected) {
49048
+ this._listenerAbortController.abort();
49049
+ }
49050
+ });
49051
+ }
49052
+
48765
49053
  // layout render methods
48766
49054
  // ------------------------------------
48767
49055
 
@@ -50257,7 +50545,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$2 {
50257
50545
  }
50258
50546
  };
50259
50547
 
50260
- var formkitVersion$1$2 = '202606241801';
50548
+ var formkitVersion$1$2 = '202606251933';
50261
50549
 
50262
50550
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
50263
50551
  // See LICENSE in the project root for license information.
@@ -54585,7 +54873,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$2 {
54585
54873
  }
54586
54874
  };
54587
54875
 
54588
- var formkitVersion$6 = '202606241801';
54876
+ var formkitVersion$6 = '202606251933';
54589
54877
 
54590
54878
  let AuroElement$1$2 = class AuroElement extends i$2 {
54591
54879
  static get properties() {
@@ -58525,7 +58813,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$2 {
58525
58813
  }
58526
58814
  };
58527
58815
 
58528
- var formkitVersion$5 = '202606241801';
58816
+ var formkitVersion$5 = '202606251933';
58529
58817
 
58530
58818
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
58531
58819
  // See LICENSE in the project root for license information.
@@ -60275,7 +60563,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$2 {
60275
60563
  }
60276
60564
  };
60277
60565
 
60278
- var formkitVersion$4 = '202606241801';
60566
+ var formkitVersion$4 = '202606251933';
60279
60567
 
60280
60568
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
60281
60569
  // See LICENSE in the project root for license information.
@@ -65490,7 +65778,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$2 {
65490
65778
  }
65491
65779
  };
65492
65780
 
65493
- var formkitVersion$2 = '202606241801';
65781
+ var formkitVersion$2 = '202606251933';
65494
65782
 
65495
65783
  let AuroElement$2$1 = class AuroElement extends i$2 {
65496
65784
  static get properties() {
@@ -79083,7 +79371,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$2 {
79083
79371
  }
79084
79372
  };
79085
79373
 
79086
- var formkitVersion$1$1 = '202606241801';
79374
+ var formkitVersion$1$1 = '202606251933';
79087
79375
 
79088
79376
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
79089
79377
  // See LICENSE in the project root for license information.
@@ -80204,7 +80492,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$2 {
80204
80492
  }
80205
80493
  };
80206
80494
 
80207
- var formkitVersion$3 = '202606241801';
80495
+ var formkitVersion$3 = '202606251933';
80208
80496
 
80209
80497
  var styleCss$1$3 = i$4`.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}`;
80210
80498
 
@@ -88995,7 +89283,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
88995
89283
  }
88996
89284
  };
88997
89285
 
88998
- var formkitVersion$1 = '202606241801';
89286
+ var formkitVersion$1 = '202606251933';
88999
89287
 
89000
89288
  class AuroElement extends i$2 {
89001
89289
  static get properties() {
@@ -91016,7 +91304,7 @@ class AuroHelpText extends i$2 {
91016
91304
  }
91017
91305
  }
91018
91306
 
91019
- var formkitVersion = '202606241801';
91307
+ var formkitVersion = '202606251933';
91020
91308
 
91021
91309
  var styleCss = i$4`.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}`;
91022
91310