@aurodesignsystem-dev/auro-formkit 0.0.0-pr1530.2 → 0.0.0-pr1531.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 (53) 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 +15 -6
  7. package/components/combobox/demo/getting-started.min.js +15 -6
  8. package/components/combobox/demo/index.min.js +15 -6
  9. package/components/combobox/dist/index.js +15 -6
  10. package/components/combobox/dist/registered.js +15 -6
  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 +8 -17
  16. package/components/datepicker/demo/api.md +1 -1
  17. package/components/datepicker/demo/customize.min.js +41 -178
  18. package/components/datepicker/demo/index.min.js +41 -178
  19. package/components/datepicker/demo/keyboard-behavior.md +3 -3
  20. package/components/datepicker/demo/voiceover.md +4 -4
  21. package/components/datepicker/demo/why-datepicker.md +2 -2
  22. package/components/datepicker/dist/auro-calendar-cell.d.ts +0 -11
  23. package/components/datepicker/dist/auro-calendar.d.ts +2 -26
  24. package/components/datepicker/dist/auro-datepicker.d.ts +1 -9
  25. package/components/datepicker/dist/index.js +41 -178
  26. package/components/datepicker/dist/registered.js +41 -178
  27. package/components/dropdown/demo/customize.min.js +1 -1
  28. package/components/dropdown/demo/getting-started.min.js +1 -1
  29. package/components/dropdown/demo/index.min.js +1 -1
  30. package/components/dropdown/dist/index.js +1 -1
  31. package/components/dropdown/dist/registered.js +1 -1
  32. package/components/form/demo/customize.min.js +89 -254
  33. package/components/form/demo/getting-started.min.js +89 -254
  34. package/components/form/demo/index.min.js +89 -254
  35. package/components/form/demo/registerDemoDeps.min.js +89 -254
  36. package/components/input/demo/customize.min.js +13 -4
  37. package/components/input/demo/getting-started.min.js +13 -4
  38. package/components/input/demo/index.min.js +13 -4
  39. package/components/input/dist/index.js +13 -4
  40. package/components/input/dist/registered.js +13 -4
  41. package/components/radio/demo/customize.min.js +1 -1
  42. package/components/radio/demo/getting-started.min.js +1 -1
  43. package/components/radio/demo/index.min.js +1 -1
  44. package/components/radio/dist/index.js +1 -1
  45. package/components/radio/dist/registered.js +1 -1
  46. package/components/select/demo/customize.min.js +16 -62
  47. package/components/select/demo/getting-started.min.js +16 -62
  48. package/components/select/demo/index.min.js +16 -62
  49. package/components/select/dist/auro-select.d.ts +0 -6
  50. package/components/select/dist/index.js +16 -62
  51. package/components/select/dist/registered.js +16 -62
  52. package/custom-elements.json +1480 -1510
  53. package/package.json +1 -1
@@ -11638,28 +11638,23 @@ var popoverVersion = '6.0.1';
11638
11638
  * @returns {number|null} Local-midnight Unix timestamp (seconds), or null.
11639
11639
  */
11640
11640
  function parseIsoToTimestamp(isoStr) {
11641
- // Strict YYYY-MM-DD matcher with named groups. Rejects trailing garbage
11642
- // ("2024x-01-01"), short segments ("2024-1-1"), and any non-digit
11643
- // characters. `parseInt` alone accepted both because it stops at the
11644
- // first non-digit and doesn't require a minimum length.
11645
- const ISO_DATE_RE = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/u;
11646
- const MAX_MONTH = 12;
11647
- const MAX_DAY = 31;
11648
-
11649
11641
  if (typeof isoStr !== 'string') {
11650
11642
  return null;
11651
11643
  }
11652
- const match = ISO_DATE_RE.exec(isoStr);
11653
- if (!match) {
11644
+ const parts = isoStr.split('-');
11645
+ if (parts.length !== 3) {
11646
+ return null;
11647
+ }
11648
+ const year = parseInt(parts[0], 10);
11649
+ const month = parseInt(parts[1], 10);
11650
+ const day = parseInt(parts[2], 10);
11651
+ if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) {
11654
11652
  return null;
11655
11653
  }
11656
- const year = Number(match.groups.year);
11657
- const month = Number(match.groups.month);
11658
- const day = Number(match.groups.day);
11659
11654
  // Reject overflow values like "2024-13-40" — JS `new Date(year, month, day)`
11660
11655
  // silently normalizes those to a different calendar day, which would
11661
11656
  // disable the wrong date if we let the result through.
11662
- if (month < 1 || month > MAX_MONTH || day < 1 || day > MAX_DAY) {
11657
+ if (month < 1 || month > 12 || day < 1 || day > 31) {
11663
11658
  return null;
11664
11659
  }
11665
11660
  const date = new Date(year, month - 1, day);
@@ -12237,36 +12232,13 @@ class AuroCalendarCell extends LitElement {
12237
12232
  }
12238
12233
 
12239
12234
  firstUpdated() {
12240
- this._initFromAncestors();
12241
- }
12242
-
12243
- /**
12244
- * Wires the cell to its ancestor calendar-month and calendar (and, via
12245
- * the calendar, to the datepicker). Extracted from firstUpdated() so the
12246
- * retry loop can re-attempt without recursively invoking a Lit lifecycle
12247
- * method (which is outside the framework's contract).
12248
- * @private
12249
- * @returns {void}
12250
- */
12251
- _initFromAncestors() {
12252
12235
  const calendarMonth = this.runtimeUtils.closestElement('auro-formkit-calendar-month', this);
12253
12236
  const calendar = this.runtimeUtils.closestElement('auro-formkit-calendar', calendarMonth);
12254
12237
 
12255
12238
  if (!calendar) {
12256
- // Retry on the next event-loop turn to give the ancestor chain a chance
12257
- // to attach — but cap attempts so a permanently detached cell doesn't
12258
- // spin forever. 10 turns is far more than any observed race needs.
12259
- this._firstUpdatedRetries = (this._firstUpdatedRetries || 0) + 1;
12260
- if (this._firstUpdatedRetries > 10) {
12261
- return;
12262
- }
12263
- this._firstUpdatedRetryTimer = setTimeout(() => {
12264
- this._firstUpdatedRetryTimer = null;
12265
- this._initFromAncestors();
12266
- }, 0);
12239
+ setTimeout(() => this.firstUpdated(), 0);
12267
12240
  return;
12268
12241
  }
12269
- this._firstUpdatedRetries = 0;
12270
12242
  this.calendar = calendar;
12271
12243
  this.datepicker = calendar.datepicker;
12272
12244
  this._slotContentHandler = () => {
@@ -12294,10 +12266,6 @@ class AuroCalendarCell extends LitElement {
12294
12266
  if (this.datepicker && this._slotContentHandler) {
12295
12267
  this.datepicker.removeEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
12296
12268
  }
12297
- if (this._firstUpdatedRetryTimer) {
12298
- clearTimeout(this._firstUpdatedRetryTimer);
12299
- this._firstUpdatedRetryTimer = null;
12300
- }
12301
12269
  }
12302
12270
 
12303
12271
  /**
@@ -13669,7 +13637,7 @@ class AuroBibtemplate extends LitElement {
13669
13637
  }
13670
13638
  }
13671
13639
 
13672
- var formkitVersion$2 = '202607022225';
13640
+ var formkitVersion$2 = '202607022131';
13673
13641
 
13674
13642
  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}
13675
13643
  `,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}}
@@ -13808,10 +13776,7 @@ class AuroCalendar extends RangeDatepicker {
13808
13776
  * Support will be removed in a future major release.
13809
13777
  * @private
13810
13778
  */
13811
- // Initialize the backing field directly so the constructor's default
13812
- // empty array doesn't trigger the deprecation warning. Assignments from
13813
- // consumers still route through the setter below.
13814
- this._disabledDays = [];
13779
+ this.disabledDays = [];
13815
13780
 
13816
13781
  /**
13817
13782
  * @private
@@ -13844,44 +13809,6 @@ class AuroCalendar extends RangeDatepicker {
13844
13809
  this._calendarInstanceId = Date.now().toString(36);
13845
13810
  }
13846
13811
 
13847
- /**
13848
- * @deprecated See constructor JSDoc — migrate to
13849
- * `auro-datepicker.blackoutDates`. The getter/setter pair exists so the
13850
- * one-time deprecation warning fires as soon as a consumer assigns a
13851
- * non-empty array (empty assignments are ignored — an empty array is
13852
- * indistinguishable from the constructor default and would produce a
13853
- * spurious warning), rather than only when `_getBlackoutSet()` happens
13854
- * to rebuild.
13855
- * @returns {Array} The current legacy `disabledDays` array.
13856
- */
13857
- get disabledDays() {
13858
- return this._disabledDays;
13859
- }
13860
-
13861
- /**
13862
- * @param {Array} value - The legacy `disabledDays` array to set.
13863
- */
13864
- set disabledDays(value) {
13865
- const oldValue = this._disabledDays;
13866
- // Coerce non-arrays to `[]`. Consumers occasionally pass `null`
13867
- // (Lit's Array attribute converter returns null for a missing/empty
13868
- // attribute) or misuse the API; downstream code in
13869
- // `auro-calendar-cell.isEnabled` calls `.findIndex()` on this value
13870
- // without an Array.isArray guard, so a truthy non-array would throw
13871
- // at render.
13872
- const coerced = Array.isArray(value) ? value : [];
13873
- if (coerced.length > 0) {
13874
- this._warnDisabledDaysDeprecated();
13875
- }
13876
- this._disabledDays = coerced;
13877
- // `disabledDays` is a Lit `@property({ type: Array })` on the
13878
- // RangeDatepicker base class; Lit's generated setter (which we've
13879
- // overridden here to insert the warning) is what normally invalidates
13880
- // the reactive cycle. Re-invoke requestUpdate manually so consumer
13881
- // assignments still re-render the calendar.
13882
- this.requestUpdate('disabledDays', oldValue);
13883
- }
13884
-
13885
13812
  static get styles() {
13886
13813
  return [
13887
13814
  styleCss$7,
@@ -14427,19 +14354,8 @@ class AuroCalendar extends RangeDatepicker {
14427
14354
  /**
14428
14355
  * Returns a memoized Set of blackout timestamps (seconds) drawn from both
14429
14356
  * the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
14430
- *
14431
- * The cache invalidates on **reference identity** only when the
14432
- * consumer reassigns the array (`el.blackoutDates = [...]`), matching
14433
- * Lit's own reactivity semantics for array properties. In-place mutations
14434
- * on the existing array (`push`, `splice`, index assignment) will NOT
14435
- * invalidate the cache and the new entries will be silently ignored.
14436
- * Consumers must reassign to update — see the JSDoc on
14437
- * `auro-datepicker.blackoutDates` for the recommended pattern.
14438
- *
14439
- * A shallow-equality tier was considered but rejected: it would run
14440
- * O(N) work on every cell render (this method is called per-cell via
14441
- * `isBlackout()`) and still wouldn't catch same-length value swaps,
14442
- * offering a false sense of safety.
14357
+ * The cache invalidates when either source array's reference changes, which
14358
+ * matches Lit's own reactive identity semantics for array properties.
14443
14359
  * @private
14444
14360
  * @returns {Set<Number>}
14445
14361
  */
@@ -14620,24 +14536,7 @@ class AuroCalendar extends RangeDatepicker {
14620
14536
  // rendered month(s) first so a single-month calendar does not pick a date
14621
14537
  // that has no DOM cell. Determine the visible range based on centralDate and
14622
14538
  // the number of rendered months.
14623
- //
14624
- // numCalendars is assigned inside renderAllCalendars(), which runs during
14625
- // render() — so by the time the visible-change handler in updated()
14626
- // calls computeActiveDate() in the same cycle, numCalendars is normally
14627
- // set. Guard against the pre-first-render path anyway (e.g. any future
14628
- // caller that reaches computeActiveDate before render() has run):
14629
- // Math.max(undefined, 1) is NaN, which would silently skip the
14630
- // visible-month scan below. Fall back to maximumRenderableMonths'
14631
- // desktop default (1 for non-range, 2 for range) so the scan window is
14632
- // correctly sized whenever numCalendars is not yet populated.
14633
- let renderedMonths = null;
14634
-
14635
- if (Number.isFinite(this.numCalendars) && this.numCalendars > 0) {
14636
- renderedMonths = this.numCalendars;
14637
- } else {
14638
- renderedMonths = this.noRange ? 1 : 2;
14639
- }
14640
-
14539
+ const renderedMonths = Math.max(this.numCalendars, 1);
14641
14540
  const visibleAnchor = this.centralDateObject ?? new Date(now * 1000);
14642
14541
  const visMonthStart = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth(), 1);
14643
14542
  visMonthStart.setHours(0, 0, 0, 0);
@@ -14907,8 +14806,6 @@ class AuroCalendar extends RangeDatepicker {
14907
14806
  let targetIndex = -1;
14908
14807
  if (direction === 'next') {
14909
14808
  targetIndex = currentIndex + 1;
14910
- } else if (direction === 'prev') {
14911
- targetIndex = currentIndex - 1;
14912
14809
  }
14913
14810
 
14914
14811
  if (targetIndex >= 0 && targetIndex < allCells.length) {
@@ -15513,10 +15410,6 @@ class AuroCalendar extends RangeDatepicker {
15513
15410
  * originally tried aria-live="polite" here, but VoiceOver treats
15514
15411
  * polite as "wait until idle" — which never happens during active
15515
15412
  * keyboard navigation — so the announcements were silently dropped.
15516
- *
15517
- * This is a documented deviation from WCAG 2.1 SC 4.1.3, which
15518
- * prefers `polite` for status messages. See the "Documented
15519
- * Deviation" section in components/datepicker/docs/pages/accessibility.md.
15520
15413
  * @private
15521
15414
  * @param {String} dateStr - The localized date string to announce.
15522
15415
  * @returns {void}
@@ -19562,7 +19455,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
19562
19455
  }
19563
19456
  };
19564
19457
 
19565
- var formkitVersion$1 = '202607022225';
19458
+ var formkitVersion$1 = '202607022131';
19566
19459
 
19567
19460
  let AuroElement$2 = class AuroElement extends LitElement {
19568
19461
  static get properties() {
@@ -32087,8 +31980,8 @@ class BaseInput extends AuroElement$1 {
32087
31980
  */
32088
31981
  set format(value) {
32089
31982
  const oldValue = this._format;
32090
- this._format = value ? value.toLowerCase() : value;
32091
- this._userSetFormat = Boolean(value);
31983
+ this._format = value;
31984
+ this._userSetFormat = true;
32092
31985
  this.requestUpdate('format', oldValue);
32093
31986
  }
32094
31987
 
@@ -32100,7 +31993,7 @@ class BaseInput extends AuroElement$1 {
32100
31993
  */
32101
31994
  _setFormatFromLocale(value) {
32102
31995
  const oldValue = this._format;
32103
- this._format = value ? value.toLowerCase() : value;
31996
+ this._format = value;
32104
31997
  this.requestUpdate('format', oldValue);
32105
31998
  }
32106
31999
 
@@ -32151,6 +32044,15 @@ class BaseInput extends AuroElement$1 {
32151
32044
 
32152
32045
  this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
32153
32046
 
32047
+ // Normalize the format token to lowercase so case-mixed values supplied
32048
+ // via attribute (e.g. `format="MM/DD/YYYY"`) hit the `dateFormatMap`
32049
+ // lookup inside `setCustomHelpTextMessage`. Without this, an uppercase
32050
+ // format silently misses the map and leaves `setCustomValidityForType`
32051
+ // unset.
32052
+ if (this.format) {
32053
+ this._setFormatFromLocale(this.format.toLowerCase());
32054
+ }
32055
+
32154
32056
  // use validity message override if declared when initializing the component
32155
32057
  if (this.hasAttribute('setCustomValidity')) {
32156
32058
  this.ValidityMessageOverride = this.setCustomValidity;
@@ -33177,7 +33079,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
33177
33079
  }
33178
33080
  };
33179
33081
 
33180
- var formkitVersion = '202607022225';
33082
+ var formkitVersion = '202607022131';
33181
33083
 
33182
33084
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
33183
33085
  // See LICENSE in the project root for license information.
@@ -34554,15 +34456,6 @@ const datepickerKeyboardStrategy = {
34554
34456
  evt.stopPropagation();
34555
34457
  evt.preventDefault();
34556
34458
 
34557
- // Signal to the visibility-change handler in auro-datepicker.js that
34558
- // focus should be restored to the trigger regardless of hasFocus.
34559
- // hidePopover() (desktop non-modal path) does not auto-restore focus,
34560
- // and hiding the grid's popover ancestor drops focus to <body>. That
34561
- // synchronously fires focusout on the datepicker host — clearing
34562
- // hasFocus — before updated() runs, which would otherwise skip the
34563
- // input refocus. Native <dialog>.close() (modal path) restores focus
34564
- // itself, but the flag is harmless there.
34565
- component._restoreFocusOnClose = true;
34566
34459
  component.hideBib();
34567
34460
  },
34568
34461
 
@@ -34836,14 +34729,6 @@ class AuroDatePicker extends AuroElement {
34836
34729
 
34837
34730
  /**
34838
34731
  * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
34839
- *
34840
- * **Immutable update required.** The datepicker treats this array as
34841
- * immutable and memoizes a lookup Set keyed on the array's reference
34842
- * identity — matching Lit's own reactivity semantics for array
34843
- * properties. In-place mutations (`blackoutDates.push(...)`,
34844
- * `blackoutDates[i] = ...`, `blackoutDates.splice(...)`) will not
34845
- * invalidate the cache and the new entries will be silently ignored.
34846
- * To update, reassign the property: `el.blackoutDates = [...el.blackoutDates, '2024-12-25']`.
34847
34732
  */
34848
34733
  blackoutDates: {
34849
34734
  type: Array,
@@ -35729,13 +35614,12 @@ class AuroDatePicker extends AuroElement {
35729
35614
  this.calendar.activeCellDate = null;
35730
35615
 
35731
35616
  // Show the month containing the selected date (or today) instead of
35732
- // whichever month the user last navigated to. Route through
35733
- // updateCentralDate so centralDate stays first-of-month.
35617
+ // whichever month the user last navigated to.
35734
35618
  // Respect consumer-provided centralDate/calendarStartDate if no value is set.
35735
35619
  if (this.valueObject) {
35736
- this.calendarRenderUtil.updateCentralDate(this, this.value);
35620
+ this.centralDate = this.value;
35737
35621
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
35738
- this.calendarRenderUtil.updateCentralDate(this, new Date());
35622
+ this.centralDate = dateFormatter$1.toISOFormatString(new Date());
35739
35623
  }
35740
35624
  }
35741
35625
 
@@ -35793,15 +35677,8 @@ class AuroDatePicker extends AuroElement {
35793
35677
  // Always clear the inert flag. Only restore focus to the input when the datepicker
35794
35678
  // still has focus (e.g. Escape, date selected) — not when the user tabbed away,
35795
35679
  // which would pull them back and require extra Tab presses to escape.
35796
- //
35797
- // `_restoreFocusOnClose` is set by the Escape handler in
35798
- // datepickerKeyboardStrategy.js to force restore even when hasFocus
35799
- // has already been cleared — hidePopover() (desktop non-modal path)
35800
- // can drop focus to <body> before this update fires.
35801
35680
  this.dropdown.trigger.inert = false;
35802
- const shouldRestoreFocus = this.hasFocus || this._restoreFocusOnClose;
35803
- this._restoreFocusOnClose = false;
35804
- if (shouldRestoreFocus) {
35681
+ if (this.hasFocus) {
35805
35682
  requestAnimationFrame(() => {
35806
35683
  if (!this.dropdown.isPopoverVisible) {
35807
35684
  this.inputList[0].focus();
@@ -36247,18 +36124,6 @@ class AuroDatePicker extends AuroElement {
36247
36124
  this.calendar.requestUpdate();
36248
36125
  this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
36249
36126
  }
36250
-
36251
- // Range invariant: if a value change (from click or programmatic) has
36252
- // moved start past end, clear valueEnd here so both properties land in
36253
- // the SAME reactive cycle. Doing it in updated() would schedule a
36254
- // second cycle after cellClickActive/wasCellClick has already been
36255
- // consumed by the value branch, leaving the valueEnd branch to run
36256
- // with a stale handshake and racing with any intervening programmatic
36257
- // value assignments.
36258
- if ((changedProperties.has('value') || changedProperties.has('valueEnd')) &&
36259
- this.valueObject && this.valueEndObject && this.valueObject > this.valueEndObject) {
36260
- this.valueEnd = undefined;
36261
- }
36262
36127
  }
36263
36128
 
36264
36129
  updated(changedProperties) {
@@ -36326,12 +36191,8 @@ class AuroDatePicker extends AuroElement {
36326
36191
 
36327
36192
  if (this.value && this.value.length === this.inputList[0].lengthForType && !(this.wasCellClick && this.range)) {
36328
36193
  // Skip centralDate update when user clicked a cell in range mode
36329
- // to prevent the displayed months from shifting. Route through
36330
- // updateCentralDate so centralDate stays first-of-month — direct
36331
- // assignment of the raw value briefly holds a mid-month string
36332
- // and violates the invariant that observers (e.g. calendar sync)
36333
- // rely on.
36334
- this.calendarRenderUtil.updateCentralDate(this, this.value);
36194
+ // to prevent the displayed months from shifting
36195
+ this.centralDate = this.value;
36335
36196
  }
36336
36197
 
36337
36198
  this.setHasValue();
@@ -36389,10 +36250,8 @@ class AuroDatePicker extends AuroElement {
36389
36250
 
36390
36251
  if (this.valueEnd && this.valueEnd.length === this.inputList[1].lengthForType && !this.wasCellClick) {
36391
36252
  // Skip centralDate update when user clicked a cell in range mode
36392
- // to prevent the displayed months from shifting. Route through
36393
- // updateCentralDate to preserve the first-of-month invariant
36394
- // (see matching comment in the value branch above).
36395
- this.calendarRenderUtil.updateCentralDate(this, this.valueEnd);
36253
+ // to prevent the displayed months from shifting
36254
+ this.centralDate = this.valueEnd;
36396
36255
  }
36397
36256
 
36398
36257
  this.validate();
@@ -36416,6 +36275,10 @@ class AuroDatePicker extends AuroElement {
36416
36275
  this.validation.validate(lastInput, true);
36417
36276
  }
36418
36277
 
36278
+ if (this.valueObject && this.valueEndObject && this.valueObject > this.valueEndObject) {
36279
+ this.valueEnd = undefined;
36280
+ }
36281
+
36419
36282
  // This resets the datepicker when the minDate is set to a new value that is
36420
36283
  // a later date than the current value date
36421
36284
  if (changedProperties.has('minDate') && this.minDate) {