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

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 (125) 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 +1 -1
  16. package/components/datepicker/demo/api.md +2 -2
  17. package/components/datepicker/demo/customize.min.js +155 -66
  18. package/components/datepicker/demo/index.min.js +155 -66
  19. package/components/datepicker/dist/{src/auro-calendar.d.ts → auro-calendar.d.ts} +3 -1
  20. package/components/datepicker/dist/{src/auro-datepicker.d.ts → auro-datepicker.d.ts} +5 -2
  21. package/components/datepicker/dist/blackoutUtils.d.ts +43 -0
  22. package/components/datepicker/dist/index.js +155 -66
  23. package/components/datepicker/dist/registered.js +155 -66
  24. package/components/dropdown/demo/customize.min.js +1 -1
  25. package/components/dropdown/demo/getting-started.min.js +1 -1
  26. package/components/dropdown/demo/index.min.js +1 -1
  27. package/components/dropdown/dist/index.js +1 -1
  28. package/components/dropdown/dist/registered.js +1 -1
  29. package/components/form/demo/customize.min.js +165 -76
  30. package/components/form/demo/getting-started.min.js +165 -76
  31. package/components/form/demo/index.min.js +165 -76
  32. package/components/form/demo/registerDemoDeps.min.js +165 -76
  33. package/components/input/demo/customize.min.js +1 -1
  34. package/components/input/demo/getting-started.min.js +1 -1
  35. package/components/input/demo/index.min.js +1 -1
  36. package/components/input/dist/index.js +1 -1
  37. package/components/input/dist/registered.js +1 -1
  38. package/components/radio/demo/customize.min.js +1 -1
  39. package/components/radio/demo/getting-started.min.js +1 -1
  40. package/components/radio/demo/index.min.js +1 -1
  41. package/components/radio/dist/index.js +1 -1
  42. package/components/radio/dist/registered.js +1 -1
  43. package/components/select/demo/customize.min.js +2 -2
  44. package/components/select/demo/getting-started.min.js +2 -2
  45. package/components/select/demo/index.min.js +2 -2
  46. package/components/select/dist/index.js +2 -2
  47. package/components/select/dist/registered.js +2 -2
  48. package/custom-elements.json +453 -343
  49. package/package.json +5 -2
  50. package/components/checkbox/demo/customize.js +0 -22
  51. package/components/checkbox/demo/demo-support.js +0 -1
  52. package/components/checkbox/demo/getting-started.js +0 -22
  53. package/components/checkbox/demo/index.js +0 -8
  54. package/components/checkbox/demo/styles.scss +0 -1
  55. package/components/combobox/demo/customize.js +0 -24
  56. package/components/combobox/demo/demo-support.js +0 -1
  57. package/components/combobox/demo/getting-started.js +0 -21
  58. package/components/combobox/demo/index.js +0 -23
  59. package/components/combobox/demo/styles.scss +0 -1
  60. package/components/counter/demo/customize.js +0 -21
  61. package/components/counter/demo/demo-support.js +0 -1
  62. package/components/counter/demo/index.js +0 -21
  63. package/components/counter/demo/styles.scss +0 -1
  64. package/components/datepicker/demo/customize.js +0 -17
  65. package/components/datepicker/demo/demo-support.js +0 -1
  66. package/components/datepicker/demo/index.js +0 -23
  67. package/components/datepicker/demo/styles.scss +0 -1
  68. package/components/dropdown/demo/customize.js +0 -9
  69. package/components/dropdown/demo/demo-support.js +0 -1
  70. package/components/dropdown/demo/getting-started.js +0 -9
  71. package/components/dropdown/demo/index.js +0 -16
  72. package/components/dropdown/demo/styles.scss +0 -1
  73. package/components/form/demo/customize.js +0 -28
  74. package/components/form/demo/demo-support.js +0 -1
  75. package/components/form/demo/getting-started.js +0 -9
  76. package/components/form/demo/index.js +0 -5
  77. package/components/form/demo/registerDemoDeps.js +0 -23
  78. package/components/form/demo/styles.scss +0 -1
  79. package/components/input/demo/customize.js +0 -25
  80. package/components/input/demo/demo-support.js +0 -1
  81. package/components/input/demo/getting-started.js +0 -8
  82. package/components/input/demo/index.js +0 -8
  83. package/components/input/demo/styles.css +0 -974
  84. package/components/input/demo/styles.scss +0 -1
  85. package/components/menu/demo/demo-support.js +0 -1
  86. package/components/menu/demo/index.js +0 -25
  87. package/components/menu/demo/styles.scss +0 -1
  88. package/components/radio/demo/customize.js +0 -22
  89. package/components/radio/demo/demo-support.js +0 -1
  90. package/components/radio/demo/getting-started.js +0 -24
  91. package/components/radio/demo/index.js +0 -8
  92. package/components/radio/demo/styles.scss +0 -1
  93. package/components/select/demo/customize.js +0 -11
  94. package/components/select/demo/demo-support.js +0 -1
  95. package/components/select/demo/getting-started.js +0 -26
  96. package/components/select/demo/index.js +0 -11
  97. package/components/select/demo/styles.scss +0 -1
  98. /package/components/datepicker/dist/{src/auro-calendar-cell.d.ts → auro-calendar-cell.d.ts} +0 -0
  99. /package/components/datepicker/dist/{src/auro-calendar-month.d.ts → auro-calendar-month.d.ts} +0 -0
  100. /package/components/datepicker/dist/{src/buttonVersion.d.ts → buttonVersion.d.ts} +0 -0
  101. /package/components/datepicker/dist/{src/datepickerKeyboardStrategy.d.ts → datepickerKeyboardStrategy.d.ts} +0 -0
  102. /package/components/datepicker/dist/{src/iconVersion.d.ts → iconVersion.d.ts} +0 -0
  103. /package/components/datepicker/dist/{src/index.d.ts → index.d.ts} +0 -0
  104. /package/components/datepicker/dist/{src/popoverVersion.d.ts → popoverVersion.d.ts} +0 -0
  105. /package/components/datepicker/dist/{src/styles → styles}/classic/color-css.d.ts +0 -0
  106. /package/components/datepicker/dist/{src/styles → styles}/classic/style-css.d.ts +0 -0
  107. /package/components/datepicker/dist/{src/styles → styles}/color-calendar-css.d.ts +0 -0
  108. /package/components/datepicker/dist/{src/styles → styles}/color-cell-css.d.ts +0 -0
  109. /package/components/datepicker/dist/{src/styles → styles}/color-css.d.ts +0 -0
  110. /package/components/datepicker/dist/{src/styles → styles}/color-month-css.d.ts +0 -0
  111. /package/components/datepicker/dist/{src/styles → styles}/shapeSize-css.d.ts +0 -0
  112. /package/components/datepicker/dist/{src/styles → styles}/snowflake/color-css.d.ts +0 -0
  113. /package/components/datepicker/dist/{src/styles → styles}/snowflake/style-css.d.ts +0 -0
  114. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-cell-css.d.ts +0 -0
  115. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-css.d.ts +0 -0
  116. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-month-css.d.ts +0 -0
  117. /package/components/datepicker/dist/{src/styles → styles}/style-css.d.ts +0 -0
  118. /package/components/datepicker/dist/{src/styles → styles}/tokens-css.d.ts +0 -0
  119. /package/components/datepicker/dist/{src/utilities.d.ts → utilities.d.ts} +0 -0
  120. /package/components/datepicker/dist/{src/utilitiesCalendar.d.ts → utilitiesCalendar.d.ts} +0 -0
  121. /package/components/datepicker/dist/{src/utilitiesCalendarRender.d.ts → utilitiesCalendarRender.d.ts} +0 -0
  122. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/day.d.ts +0 -0
  123. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-calendar.d.ts +0 -0
  124. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-cell.d.ts +0 -0
  125. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker.d.ts +0 -0
@@ -11550,6 +11550,102 @@ class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,cl
11550
11550
 
11551
11551
  var popoverVersion = '6.0.1';
11552
11552
 
11553
+ /**
11554
+ * Single source of truth for parsing and matching blackout dates across the
11555
+ * datepicker. Both `auro-calendar` (memoized Set + `isDateBlackout`) and the
11556
+ * pre-`firstUpdated` fallback inside `auro-calendar-cell` route through these
11557
+ * helpers so the YYYY-MM-DD → seconds conversion and the merge-with-legacy
11558
+ * `disabledDays` rules are defined exactly once.
11559
+ */
11560
+
11561
+ /**
11562
+ * Converts a `YYYY-MM-DD` ISO date string to a Unix timestamp (seconds)
11563
+ * representing local midnight on that calendar day. Returns `null` for
11564
+ * inputs that don't parse to a finite timestamp.
11565
+ *
11566
+ * Uses the `new Date(year, monthIndex, day)` constructor (NOT
11567
+ * `new Date(isoStr)`) so the result is local-midnight rather than UTC
11568
+ * midnight — required to keep the calendar grid aligned with the user's
11569
+ * local calendar day in negative-offset timezones.
11570
+ *
11571
+ * @param {string} isoStr - Date string in `YYYY-MM-DD` format.
11572
+ * @returns {number|null} Local-midnight Unix timestamp (seconds), or null.
11573
+ */
11574
+ function parseIsoToTimestamp(isoStr) {
11575
+ if (typeof isoStr !== 'string') {
11576
+ return null;
11577
+ }
11578
+ const parts = isoStr.split('-');
11579
+ if (parts.length !== 3) {
11580
+ return null;
11581
+ }
11582
+ const year = parseInt(parts[0], 10);
11583
+ const month = parseInt(parts[1], 10);
11584
+ const day = parseInt(parts[2], 10);
11585
+ if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) {
11586
+ return null;
11587
+ }
11588
+ // Reject overflow values like "2024-13-40" — JS `new Date(year, month, day)`
11589
+ // silently normalizes those to a different calendar day, which would
11590
+ // disable the wrong date if we let the result through.
11591
+ if (month < 1 || month > 12 || day < 1 || day > 31) {
11592
+ return null;
11593
+ }
11594
+ const date = new Date(year, month - 1, day);
11595
+ // Guard the residual case where JS still rolls a value (e.g. Feb 30 → Mar 2).
11596
+ // After construction, getFullYear/getMonth/getDate should match the inputs.
11597
+ if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
11598
+ return null;
11599
+ }
11600
+ const ts = Math.floor(date.getTime() / 1000);
11601
+ return Number.isFinite(ts) ? ts : null;
11602
+ }
11603
+
11604
+ /**
11605
+ * Builds a `Set<number>` of seconds-since-epoch timestamps covering both the
11606
+ * legacy `disabledDays` (already-numeric) array and the ISO `blackoutDates`
11607
+ * array. Use this for O(1) membership checks in hot paths.
11608
+ *
11609
+ * @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
11610
+ * @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
11611
+ * @returns {Set<number>}
11612
+ */
11613
+ function buildBlackoutSet(disabledDays, blackoutDates) {
11614
+ const set = new Set();
11615
+ if (Array.isArray(disabledDays)) {
11616
+ for (const day of disabledDays) {
11617
+ const ts = parseInt(day, 10);
11618
+ if (Number.isFinite(ts)) {
11619
+ set.add(ts);
11620
+ }
11621
+ }
11622
+ }
11623
+ if (Array.isArray(blackoutDates)) {
11624
+ for (const isoStr of blackoutDates) {
11625
+ const ts = parseIsoToTimestamp(isoStr);
11626
+ if (ts !== null) {
11627
+ set.add(ts);
11628
+ }
11629
+ }
11630
+ }
11631
+ return set;
11632
+ }
11633
+
11634
+ /**
11635
+ * One-shot membership test for a single timestamp against both blackout
11636
+ * sources. Allocates a Set on each call; only use this in cold paths
11637
+ * (e.g. the pre-`firstUpdated` cell fallback). Hot paths should hold the
11638
+ * Set returned from `buildBlackoutSet` and `.has(ts)` directly.
11639
+ *
11640
+ * @param {number} dateTs - Unix timestamp (seconds) to test.
11641
+ * @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
11642
+ * @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
11643
+ * @returns {boolean}
11644
+ */
11645
+ function isBlackoutTimestamp(dateTs, disabledDays, blackoutDates) {
11646
+ return buildBlackoutSet(disabledDays, blackoutDates).has(dateTs);
11647
+ }
11648
+
11553
11649
  /* 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 */
11554
11650
 
11555
11651
  class AuroCalendarCell extends LitElement {
@@ -11748,8 +11844,10 @@ class AuroCalendarCell extends LitElement {
11748
11844
  // consumer or test mutated cell.disabledDays directly), the Set does
11749
11845
  // not reflect that addition — fall through to the per-cell scan only
11750
11846
  // when the reference no longer matches. Production data flow keeps
11751
- // these identical, so this branch stays cold.
11752
- if (this.disabledDays && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
11847
+ // these identical, so this branch stays cold. Guarded with
11848
+ // Array.isArray to match `_getBlackoutSet`'s contract: non-array
11849
+ // values are treated as empty rather than crashing on `.findIndex`.
11850
+ if (Array.isArray(this.disabledDays) && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
11753
11851
  if (this.disabledDays.findIndex((dd) => parseInt(dd, 10) === this.day.date) !== -1) {
11754
11852
  return true;
11755
11853
  }
@@ -11758,25 +11856,9 @@ class AuroCalendarCell extends LitElement {
11758
11856
  }
11759
11857
 
11760
11858
  // Pre-firstUpdated fallback — the cell may render once before the
11761
- // ancestor calendar is wired up. Uses the legacy O(N) scan so the
11762
- // result stays correct, just slower for the very first render.
11763
- if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
11764
- (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
11765
- return true;
11766
- }
11767
-
11768
- const blackoutDates = this.datepicker?.blackoutDates;
11769
- if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
11770
- const date = new Date(this.day.date * 1000);
11771
- const yyyy = date.getFullYear();
11772
- const mm = String(date.getMonth() + 1).padStart(2, '0');
11773
- const dd = String(date.getDate()).padStart(2, '0');
11774
- if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
11775
- return true;
11776
- }
11777
- }
11778
-
11779
- return false;
11859
+ // ancestor calendar is wired up. Routes through the shared
11860
+ // blackoutUtils helper so the parsing rules stay in one place.
11861
+ return isBlackoutTimestamp(this.day.date, this.disabledDays, this.datepicker?.blackoutDates);
11780
11862
  }
11781
11863
 
11782
11864
  /**
@@ -12176,9 +12258,14 @@ class AuroCalendarCell extends LitElement {
12176
12258
 
12177
12259
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
12178
12260
  if (outOfRange) {
12261
+ // Strip every aria attribute the in-range branch may have set on a
12262
+ // previous render — if a cell flips from in-range to out-of-range
12263
+ // (calendar shifts months, minDate/maxDate change, etc.).
12179
12264
  this.removeAttribute('role');
12180
12265
  this.removeAttribute('aria-label');
12181
12266
  this.removeAttribute('aria-current');
12267
+ this.removeAttribute('aria-selected');
12268
+ this.removeAttribute('aria-disabled');
12182
12269
  return;
12183
12270
  }
12184
12271
 
@@ -13427,7 +13514,7 @@ class AuroBibtemplate extends LitElement {
13427
13514
  }
13428
13515
  }
13429
13516
 
13430
- var formkitVersion$2 = '202606251933';
13517
+ var formkitVersion$2 = '202606252104';
13431
13518
 
13432
13519
  let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=literal`${unsafeStatic(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1=css`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
13433
13520
  `,u$4=css`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
@@ -14115,11 +14202,15 @@ class AuroCalendar extends RangeDatepicker {
14115
14202
  * @returns {Set<Number>}
14116
14203
  */
14117
14204
  _getBlackoutSet() {
14118
- const disabledDays = this.disabledDays || [];
14205
+ // Guard with Array.isArray so a non-array truthy value (string, object,
14206
+ // etc.) is treated as "no legacy disabledDays" — keeps the deprecation
14207
+ // warning and the memoization key consistent with what buildBlackoutSet
14208
+ // will actually consume (also an Array.isArray check).
14209
+ const disabledDays = Array.isArray(this.disabledDays) ? this.disabledDays : [];
14119
14210
  const blackoutDates = this.datepicker?.blackoutDates;
14120
- if (this._blackoutSet
14121
- && this._cachedBlackoutDisabledDays === disabledDays
14122
- && this._cachedBlackoutDates === blackoutDates) {
14211
+ if (this._blackoutSet &&
14212
+ this._cachedBlackoutDisabledDays === disabledDays &&
14213
+ this._cachedBlackoutDates === blackoutDates) {
14123
14214
  return this._blackoutSet;
14124
14215
  }
14125
14216
 
@@ -14127,23 +14218,10 @@ class AuroCalendar extends RangeDatepicker {
14127
14218
  this._warnDisabledDaysDeprecated();
14128
14219
  }
14129
14220
 
14130
- const set = new Set(disabledDays.map((day) => parseInt(day, 10)));
14131
-
14132
- // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
14133
- if (Array.isArray(blackoutDates)) {
14134
- for (const isoStr of blackoutDates) {
14135
- const parts = isoStr.split('-');
14136
- const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
14137
- if (Number.isFinite(ts)) {
14138
- set.add(ts);
14139
- }
14140
- }
14141
- }
14142
-
14143
- this._blackoutSet = set;
14221
+ this._blackoutSet = buildBlackoutSet(disabledDays, blackoutDates);
14144
14222
  this._cachedBlackoutDisabledDays = disabledDays;
14145
14223
  this._cachedBlackoutDates = blackoutDates;
14146
- return set;
14224
+ return this._blackoutSet;
14147
14225
  }
14148
14226
 
14149
14227
  /**
@@ -14792,32 +14870,15 @@ class AuroCalendar extends RangeDatepicker {
14792
14870
  }
14793
14871
 
14794
14872
  /**
14795
- * Checks whether a given date is a blackout date.
14873
+ * Checks whether a given date is a blackout date. Delegates to the
14874
+ * memoized `_getBlackoutSet` so the YYYY-MM-DD parsing and the
14875
+ * legacy/ISO merge rules live in exactly one place (see `blackoutUtils.js`).
14796
14876
  * @private
14797
14877
  * @param {Number} dateTs - Unix timestamp (seconds).
14798
14878
  * @returns {Boolean} True if the date is blacked out.
14799
14879
  */
14800
14880
  isDateBlackout(dateTs) {
14801
- // Check legacy disabledDays.
14802
- if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
14803
- if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
14804
- return true;
14805
- }
14806
- }
14807
-
14808
- // Check ISO blackoutDates.
14809
- const blackoutDates = this.datepicker?.blackoutDates;
14810
- if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
14811
- const date = new Date(dateTs * 1000);
14812
- const yyyy = date.getFullYear();
14813
- const mm = String(date.getMonth() + 1).padStart(2, '0');
14814
- const dd = String(date.getDate()).padStart(2, '0');
14815
- if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
14816
- return true;
14817
- }
14818
- }
14819
-
14820
- return false;
14881
+ return this._getBlackoutSet().has(dateTs);
14821
14882
  }
14822
14883
 
14823
14884
  /**
@@ -19082,7 +19143,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
19082
19143
  }
19083
19144
  };
19084
19145
 
19085
- var formkitVersion$1 = '202606251933';
19146
+ var formkitVersion$1 = '202606252104';
19086
19147
 
19087
19148
  let AuroElement$2 = class AuroElement extends LitElement {
19088
19149
  static get properties() {
@@ -32675,7 +32736,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
32675
32736
  }
32676
32737
  };
32677
32738
 
32678
- var formkitVersion = '202606251933';
32739
+ var formkitVersion = '202606252104';
32679
32740
 
32680
32741
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
32681
32742
  // See LICENSE in the project root for license information.
@@ -34583,7 +34644,10 @@ class AuroDatePicker extends AuroElement {
34583
34644
  },
34584
34645
 
34585
34646
  /**
34586
- * Label announced for cells after the range (or after start when no end is selected).
34647
+ * Label announced for cells after a fully selected range (both
34648
+ * `dateFrom` and `dateTo` are set). While a range is still being
34649
+ * picked (`dateFrom` set, `dateTo` unset), focused cells past the
34650
+ * start use `rangeLabelEndPreview` instead.
34587
34651
  * @default 'after range'
34588
34652
  */
34589
34653
  rangeLabelAfterRange: {
@@ -34639,7 +34703,7 @@ class AuroDatePicker extends AuroElement {
34639
34703
  },
34640
34704
 
34641
34705
  /**
34642
- * Dates that the user should have for reference as part of their decision making when selecting a date.
34706
+ * Dates that the user should have for reference as part of their decision-making when selecting a date.
34643
34707
  * This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
34644
34708
  */
34645
34709
  referenceDates: {
@@ -35966,6 +36030,15 @@ class AuroDatePicker extends AuroElement {
35966
36030
  // Add the tag name as an attribute if it is different than the component name
35967
36031
  this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
35968
36032
 
36033
+ // If the element was disconnected before this first render finished,
36034
+ // disconnectedCallback's microtask already aborted the controller. The
36035
+ // connectedCallback reinit guard skips that case because `hasUpdated`
36036
+ // is still false. Mint a fresh controller here so configure* registers
36037
+ // listeners against a live signal.
36038
+ if (this._listenerAbortController.signal.aborted) {
36039
+ this._listenerAbortController = new AbortController();
36040
+ }
36041
+
35969
36042
  this.configureDropdown();
35970
36043
  this.configureInput();
35971
36044
  this.configureCalendar();
@@ -35977,6 +36050,22 @@ class AuroDatePicker extends AuroElement {
35977
36050
  connectedCallback() {
35978
36051
  super.connectedCallback();
35979
36052
 
36053
+ // True reconnect after `disconnectedCallback` aborted our controller:
36054
+ // the existing signal is dead, so listeners registered against it
36055
+ // would never fire. Create a fresh controller and re-run the
36056
+ // configure* wiring (each method is idempotent — it just re-caches
36057
+ // child refs and re-registers listeners against the new signal).
36058
+ // `hasUpdated` gates this so the *first* connect (which precedes
36059
+ // firstUpdated) still falls through to firstUpdated's initial wiring.
36060
+ if (this.hasUpdated && this._listenerAbortController.signal.aborted) {
36061
+ this._listenerAbortController = new AbortController();
36062
+ this.configureDropdown();
36063
+ this.configureInput();
36064
+ this.configureCalendar();
36065
+ this.configureDatepicker();
36066
+ this.configureClickHandler();
36067
+ }
36068
+
35980
36069
  this.locale = this.domHandler.getLocale(this);
35981
36070
  }
35982
36071