@aurodesignsystem-dev/auro-formkit 0.0.0-pr1530.1 → 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 (51) 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 +43 -21
  7. package/components/combobox/demo/getting-started.min.js +43 -21
  8. package/components/combobox/demo/index.min.js +43 -21
  9. package/components/combobox/dist/index.js +43 -21
  10. package/components/combobox/dist/registered.js +43 -21
  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 +4 -13
  16. package/components/datepicker/demo/api.md +1 -1
  17. package/components/datepicker/demo/customize.min.js +69 -193
  18. package/components/datepicker/demo/index.min.js +69 -193
  19. package/components/datepicker/demo/voiceover.md +1 -1
  20. package/components/datepicker/dist/auro-calendar-cell.d.ts +0 -11
  21. package/components/datepicker/dist/auro-calendar.d.ts +2 -26
  22. package/components/datepicker/dist/auro-datepicker.d.ts +1 -9
  23. package/components/datepicker/dist/index.js +69 -193
  24. package/components/datepicker/dist/registered.js +69 -193
  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 +159 -239
  31. package/components/form/demo/getting-started.min.js +159 -239
  32. package/components/form/demo/index.min.js +159 -239
  33. package/components/form/demo/registerDemoDeps.min.js +159 -239
  34. package/components/input/demo/customize.min.js +41 -19
  35. package/components/input/demo/getting-started.min.js +41 -19
  36. package/components/input/demo/index.min.js +41 -19
  37. package/components/input/dist/base-input.d.ts +20 -4
  38. package/components/input/dist/index.js +41 -19
  39. package/components/input/dist/registered.js +41 -19
  40. package/components/radio/demo/customize.min.js +1 -1
  41. package/components/radio/demo/getting-started.min.js +1 -1
  42. package/components/radio/demo/index.min.js +1 -1
  43. package/components/radio/dist/index.js +1 -1
  44. package/components/radio/dist/registered.js +1 -1
  45. package/components/select/demo/customize.min.js +2 -2
  46. package/components/select/demo/getting-started.min.js +2 -2
  47. package/components/select/demo/index.min.js +2 -2
  48. package/components/select/dist/index.js +2 -2
  49. package/components/select/dist/registered.js +2 -2
  50. package/custom-elements.json +1619 -1595
  51. 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 = '202607022134';
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 = '202607022134';
19458
+ var formkitVersion$1 = '202607022131';
19566
19459
 
19567
19460
  let AuroElement$2 = class AuroElement extends LitElement {
19568
19461
  static get properties() {
@@ -31570,14 +31463,16 @@ class BaseInput extends AuroElement$1 {
31570
31463
  this.label = 'Input label is undefined';
31571
31464
  this.layout = 'classic';
31572
31465
  this.locale = 'en-US';
31466
+ this._format = undefined;
31467
+
31468
+ /** @private */
31469
+ this._userSetFormat = false;
31573
31470
  this.max = undefined;
31574
31471
  this.maxLength = undefined;
31575
31472
  this.min = undefined;
31576
31473
  this.minLength = undefined;
31577
31474
  this.noValidate = false;
31578
31475
  this.onDark = false;
31579
- // Raw values returned from the input mask before model normalization.
31580
- this._rawMaskValue = undefined;
31581
31476
  this.required = false;
31582
31477
  this.setCustomValidityForType = undefined;
31583
31478
  // Credit Card is intentionally excluded — its mask manages the cursor
@@ -31735,7 +31630,8 @@ class BaseInput extends AuroElement$1 {
31735
31630
  */
31736
31631
  format: {
31737
31632
  type: String,
31738
- reflect: true
31633
+ reflect: true,
31634
+ noAccessor: true
31739
31635
  },
31740
31636
 
31741
31637
  /**
@@ -32073,6 +31969,34 @@ class BaseInput extends AuroElement$1 {
32073
31969
  return this.max && dateFormatter.isValidDate(this.max) ? dateFormatter.stringToDateInstance(this.max) : undefined;
32074
31970
  }
32075
31971
 
31972
+ get format() {
31973
+ return this._format;
31974
+ }
31975
+
31976
+ /**
31977
+ * Overrides LitElement's generated accessor so we can track whether the
31978
+ * consumer explicitly set `format`. Locale-derived updates use
31979
+ * `_setFormatFromLocale` instead, which skips this flag.
31980
+ */
31981
+ set format(value) {
31982
+ const oldValue = this._format;
31983
+ this._format = value;
31984
+ this._userSetFormat = true;
31985
+ this.requestUpdate('format', oldValue);
31986
+ }
31987
+
31988
+ /**
31989
+ * Sets format without marking it as user-set. Used by locale auto-derive
31990
+ * so that a subsequent locale change can still update the format.
31991
+ * @private
31992
+ * @param {string} value
31993
+ */
31994
+ _setFormatFromLocale(value) {
31995
+ const oldValue = this._format;
31996
+ this._format = value;
31997
+ this.requestUpdate('format', oldValue);
31998
+ }
31999
+
32076
32000
  connectedCallback() {
32077
32001
  super.connectedCallback();
32078
32002
 
@@ -32126,7 +32050,7 @@ class BaseInput extends AuroElement$1 {
32126
32050
  // format silently misses the map and leaves `setCustomValidityForType`
32127
32051
  // unset.
32128
32052
  if (this.format) {
32129
- this.format = this.format.toLowerCase();
32053
+ this._setFormatFromLocale(this.format.toLowerCase());
32130
32054
  }
32131
32055
 
32132
32056
  // use validity message override if declared when initializing the component
@@ -32235,12 +32159,10 @@ class BaseInput extends AuroElement$1 {
32235
32159
  updated(changedProperties) {
32236
32160
  super.updated(changedProperties);
32237
32161
 
32238
- // When locale changes without an explicit format override, derive format from the new locale.
32239
- // Only runs if the current format is still the previous locale's default (not user-overridden).
32162
+ // When locale changes, auto-derive format unless the consumer explicitly set one.
32240
32163
  if (changedProperties.has('locale') && !changedProperties.has('format') && this.type === 'date') {
32241
- const previousLocaleFormat = getDateFormatFromLocale(changedProperties.get('locale'));
32242
- if (!this.format || this.format.toLowerCase() === previousLocaleFormat) {
32243
- this.format = getDateFormatFromLocale(this.locale);
32164
+ if (!this._userSetFormat) {
32165
+ this._setFormatFromLocale(getDateFormatFromLocale(this.locale));
32244
32166
  }
32245
32167
  }
32246
32168
 
@@ -32411,9 +32333,6 @@ class BaseInput extends AuroElement$1 {
32411
32333
  this.maskInstance.on('accept', () => {
32412
32334
  if (this._configuringMask) return;
32413
32335
  this.value = this.util.toModelValue(this.maskInstance.value, this.format);
32414
- if (this.type === "date") {
32415
- this._rawMaskValue = this.maskInstance.value;
32416
- }
32417
32336
  });
32418
32337
 
32419
32338
  // Mask fires 'complete' on the restore step below for any value that
@@ -32421,9 +32340,6 @@ class BaseInput extends AuroElement$1 {
32421
32340
  this.maskInstance.on('complete', () => {
32422
32341
  if (this._configuringMask) return;
32423
32342
  this.value = this.util.toModelValue(this.maskInstance.value, this.format);
32424
- if (this.type === "date") {
32425
- this._rawMaskValue = this.maskInstance.value;
32426
- }
32427
32343
  });
32428
32344
 
32429
32345
  // Write existingValue through the mask (not the input directly) so
@@ -32660,8 +32576,7 @@ class BaseInput extends AuroElement$1 {
32660
32576
 
32661
32577
  // Set default date format if type=date and no format is defined
32662
32578
  if (this.type === "date" && !this.format) {
32663
- // Use locale to determine default date format
32664
- this.format = this.util.getDateMaskFromLocale().toLowerCase();
32579
+ this._setFormatFromLocale(this.util.getDateMaskFromLocale().toLowerCase());
32665
32580
  this.util.updateFormat(this.format);
32666
32581
  }
32667
32582
  }
@@ -32690,7 +32605,7 @@ class BaseInput extends AuroElement$1 {
32690
32605
  const creditCard = this.matchInputValueToCreditCard();
32691
32606
  const previousFormat = this.format;
32692
32607
 
32693
- this.format = creditCard.maskFormat;
32608
+ this._setFormatFromLocale(creditCard.maskFormat);
32694
32609
 
32695
32610
  this.maxLength = creditCard.formatLength;
32696
32611
  this.minLength = creditCard.formatMinLength;
@@ -33164,7 +33079,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
33164
33079
  }
33165
33080
  };
33166
33081
 
33167
- var formkitVersion = '202607022134';
33082
+ var formkitVersion = '202607022131';
33168
33083
 
33169
33084
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
33170
33085
  // See LICENSE in the project root for license information.
@@ -34541,15 +34456,6 @@ const datepickerKeyboardStrategy = {
34541
34456
  evt.stopPropagation();
34542
34457
  evt.preventDefault();
34543
34458
 
34544
- // Signal to the visibility-change handler in auro-datepicker.js that
34545
- // focus should be restored to the trigger regardless of hasFocus.
34546
- // hidePopover() (desktop non-modal path) does not auto-restore focus,
34547
- // and hiding the grid's popover ancestor drops focus to <body>. That
34548
- // synchronously fires focusout on the datepicker host — clearing
34549
- // hasFocus — before updated() runs, which would otherwise skip the
34550
- // input refocus. Native <dialog>.close() (modal path) restores focus
34551
- // itself, but the flag is harmless there.
34552
- component._restoreFocusOnClose = true;
34553
34459
  component.hideBib();
34554
34460
  },
34555
34461
 
@@ -34823,14 +34729,6 @@ class AuroDatePicker extends AuroElement {
34823
34729
 
34824
34730
  /**
34825
34731
  * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
34826
- *
34827
- * **Immutable update required.** The datepicker treats this array as
34828
- * immutable and memoizes a lookup Set keyed on the array's reference
34829
- * identity — matching Lit's own reactivity semantics for array
34830
- * properties. In-place mutations (`blackoutDates.push(...)`,
34831
- * `blackoutDates[i] = ...`, `blackoutDates.splice(...)`) will not
34832
- * invalidate the cache and the new entries will be silently ignored.
34833
- * To update, reassign the property: `el.blackoutDates = [...el.blackoutDates, '2024-12-25']`.
34834
34732
  */
34835
34733
  blackoutDates: {
34836
34734
  type: Array,
@@ -35716,13 +35614,12 @@ class AuroDatePicker extends AuroElement {
35716
35614
  this.calendar.activeCellDate = null;
35717
35615
 
35718
35616
  // Show the month containing the selected date (or today) instead of
35719
- // whichever month the user last navigated to. Route through
35720
- // updateCentralDate so centralDate stays first-of-month.
35617
+ // whichever month the user last navigated to.
35721
35618
  // Respect consumer-provided centralDate/calendarStartDate if no value is set.
35722
35619
  if (this.valueObject) {
35723
- this.calendarRenderUtil.updateCentralDate(this, this.value);
35620
+ this.centralDate = this.value;
35724
35621
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
35725
- this.calendarRenderUtil.updateCentralDate(this, new Date());
35622
+ this.centralDate = dateFormatter$1.toISOFormatString(new Date());
35726
35623
  }
35727
35624
  }
35728
35625
 
@@ -35780,15 +35677,8 @@ class AuroDatePicker extends AuroElement {
35780
35677
  // Always clear the inert flag. Only restore focus to the input when the datepicker
35781
35678
  // still has focus (e.g. Escape, date selected) — not when the user tabbed away,
35782
35679
  // which would pull them back and require extra Tab presses to escape.
35783
- //
35784
- // `_restoreFocusOnClose` is set by the Escape handler in
35785
- // datepickerKeyboardStrategy.js to force restore even when hasFocus
35786
- // has already been cleared — hidePopover() (desktop non-modal path)
35787
- // can drop focus to <body> before this update fires.
35788
35680
  this.dropdown.trigger.inert = false;
35789
- const shouldRestoreFocus = this.hasFocus || this._restoreFocusOnClose;
35790
- this._restoreFocusOnClose = false;
35791
- if (shouldRestoreFocus) {
35681
+ if (this.hasFocus) {
35792
35682
  requestAnimationFrame(() => {
35793
35683
  if (!this.dropdown.isPopoverVisible) {
35794
35684
  this.inputList[0].focus();
@@ -36234,18 +36124,6 @@ class AuroDatePicker extends AuroElement {
36234
36124
  this.calendar.requestUpdate();
36235
36125
  this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
36236
36126
  }
36237
-
36238
- // Range invariant: if a value change (from click or programmatic) has
36239
- // moved start past end, clear valueEnd here so both properties land in
36240
- // the SAME reactive cycle. Doing it in updated() would schedule a
36241
- // second cycle after cellClickActive/wasCellClick has already been
36242
- // consumed by the value branch, leaving the valueEnd branch to run
36243
- // with a stale handshake and racing with any intervening programmatic
36244
- // value assignments.
36245
- if ((changedProperties.has('value') || changedProperties.has('valueEnd')) &&
36246
- this.valueObject && this.valueEndObject && this.valueObject > this.valueEndObject) {
36247
- this.valueEnd = undefined;
36248
- }
36249
36127
  }
36250
36128
 
36251
36129
  updated(changedProperties) {
@@ -36313,12 +36191,8 @@ class AuroDatePicker extends AuroElement {
36313
36191
 
36314
36192
  if (this.value && this.value.length === this.inputList[0].lengthForType && !(this.wasCellClick && this.range)) {
36315
36193
  // Skip centralDate update when user clicked a cell in range mode
36316
- // to prevent the displayed months from shifting. Route through
36317
- // updateCentralDate so centralDate stays first-of-month — direct
36318
- // assignment of the raw value briefly holds a mid-month string
36319
- // and violates the invariant that observers (e.g. calendar sync)
36320
- // rely on.
36321
- this.calendarRenderUtil.updateCentralDate(this, this.value);
36194
+ // to prevent the displayed months from shifting
36195
+ this.centralDate = this.value;
36322
36196
  }
36323
36197
 
36324
36198
  this.setHasValue();
@@ -36376,10 +36250,8 @@ class AuroDatePicker extends AuroElement {
36376
36250
 
36377
36251
  if (this.valueEnd && this.valueEnd.length === this.inputList[1].lengthForType && !this.wasCellClick) {
36378
36252
  // Skip centralDate update when user clicked a cell in range mode
36379
- // to prevent the displayed months from shifting. Route through
36380
- // updateCentralDate to preserve the first-of-month invariant
36381
- // (see matching comment in the value branch above).
36382
- this.calendarRenderUtil.updateCentralDate(this, this.valueEnd);
36253
+ // to prevent the displayed months from shifting
36254
+ this.centralDate = this.valueEnd;
36383
36255
  }
36384
36256
 
36385
36257
  this.validate();
@@ -36403,6 +36275,10 @@ class AuroDatePicker extends AuroElement {
36403
36275
  this.validation.validate(lastInput, true);
36404
36276
  }
36405
36277
 
36278
+ if (this.valueObject && this.valueEndObject && this.valueObject > this.valueEndObject) {
36279
+ this.valueEnd = undefined;
36280
+ }
36281
+
36406
36282
  // This resets the datepicker when the minDate is set to a new value that is
36407
36283
  // a later date than the current value date
36408
36284
  if (changedProperties.has('minDate') && this.minDate) {