@aurodesignsystem-dev/auro-formkit 0.0.0-pr1505.0 → 0.0.0-pr1505.2

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 (71) hide show
  1. package/components/checkbox/demo/customize.html +1 -2
  2. package/components/checkbox/demo/customize.min.js +1 -1
  3. package/components/checkbox/demo/getting-started.min.js +1 -1
  4. package/components/checkbox/demo/index.min.js +1 -1
  5. package/components/checkbox/dist/index.js +1 -1
  6. package/components/checkbox/dist/registered.js +1 -1
  7. package/components/combobox/demo/customize.html +1 -2
  8. package/components/combobox/demo/customize.md +108 -132
  9. package/components/combobox/demo/customize.min.js +6 -6
  10. package/components/combobox/demo/getting-started.min.js +6 -6
  11. package/components/combobox/demo/index.min.js +6 -6
  12. package/components/combobox/dist/index.js +4 -4
  13. package/components/combobox/dist/registered.js +4 -4
  14. package/components/counter/demo/customize.min.js +2 -2
  15. package/components/counter/demo/index.min.js +2 -2
  16. package/components/counter/dist/index.js +2 -2
  17. package/components/counter/dist/registered.js +2 -2
  18. package/components/datepicker/demo/api.md +2 -2
  19. package/components/datepicker/demo/customize.js +2 -2
  20. package/components/datepicker/demo/customize.md +29 -74
  21. package/components/datepicker/demo/customize.min.js +10 -10
  22. package/components/datepicker/demo/index.min.js +8 -8
  23. package/components/datepicker/dist/index.js +8 -8
  24. package/components/datepicker/dist/registered.js +8 -8
  25. package/components/datepicker/dist/src/auro-datepicker.d.ts +2 -2
  26. package/components/dropdown/demo/customize.min.js +1 -1
  27. package/components/dropdown/demo/getting-started.min.js +1 -1
  28. package/components/dropdown/demo/index.min.js +1 -1
  29. package/components/dropdown/dist/index.js +1 -1
  30. package/components/dropdown/dist/registered.js +1 -1
  31. package/components/form/demo/customize.html +6 -6
  32. package/components/form/demo/customize.js +19 -0
  33. package/components/form/demo/customize.md +203 -51
  34. package/components/form/demo/customize.min.js +588 -83
  35. package/components/form/demo/getting-started.min.js +516 -83
  36. package/components/form/demo/index.min.js +516 -83
  37. package/components/form/demo/registerDemoDeps.min.js +153 -46
  38. package/components/form/dist/auro-form.d.ts +122 -4
  39. package/components/form/dist/index.js +363 -37
  40. package/components/form/dist/registered.js +363 -37
  41. package/components/input/demo/api.md +1 -1
  42. package/components/input/demo/customize.html +1 -2
  43. package/components/input/demo/customize.md +2 -2
  44. package/components/input/demo/customize.min.js +2 -2
  45. package/components/input/demo/getting-started.min.js +2 -2
  46. package/components/input/demo/index.md +2 -2
  47. package/components/input/demo/index.min.js +2 -2
  48. package/components/input/dist/auro-input.d.ts +1 -1
  49. package/components/input/dist/index.js +2 -2
  50. package/components/input/dist/registered.js +2 -2
  51. package/components/menu/demo/index.min.js +2 -2
  52. package/components/menu/dist/index.js +2 -2
  53. package/components/menu/dist/registered.js +2 -2
  54. package/components/radio/demo/customize.min.js +1 -1
  55. package/components/radio/demo/getting-started.min.js +1 -1
  56. package/components/radio/demo/index.min.js +1 -1
  57. package/components/radio/dist/index.js +1 -1
  58. package/components/radio/dist/registered.js +1 -1
  59. package/components/select/demo/api.md +1 -0
  60. package/components/select/demo/customize.html +1 -2
  61. package/components/select/demo/customize.md +71 -0
  62. package/components/select/demo/customize.min.js +135 -28
  63. package/components/select/demo/getting-started.min.js +135 -28
  64. package/components/select/demo/index.min.js +135 -28
  65. package/components/select/demo/keyboard-behavior.md +18 -0
  66. package/components/select/dist/auro-select.d.ts +38 -2
  67. package/components/select/dist/index.js +133 -26
  68. package/components/select/dist/registered.js +133 -26
  69. package/components/select/dist/selectUtils.d.ts +12 -0
  70. package/custom-elements.json +1654 -1441
  71. package/package.json +1 -1
@@ -12328,7 +12328,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$2 {
12328
12328
  }
12329
12329
  };
12330
12330
 
12331
- var formkitVersion$8 = '202606171946';
12331
+ var formkitVersion$8 = '202606222118';
12332
12332
 
12333
12333
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12334
12334
  // See LICENSE in the project root for license information.
@@ -12343,7 +12343,7 @@ var formkitVersion$8 = '202606171946';
12343
12343
  * @slot ariaLabel.password.hide - Sets aria-label on password button to toggle off showing password
12344
12344
  * @slot helpText - Sets the help text displayed below the input.
12345
12345
  * @slot label - Sets the label text for the input.
12346
- * @slot optionalLabel - Allows overriding the optional display text "(optional)", which appears next to the label.
12346
+ * @slot optionalLabel - Allows overriding the optional display text " (optional)", which appears next to the label.
12347
12347
  * @slot displayValue - Allows custom HTML content to display in place of the value when the input is not focused.
12348
12348
  * @csspart wrapper - Use for customizing the style of the root element
12349
12349
  * @csspart label - Use for customizing the style of the label element
@@ -26447,7 +26447,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$2 {
26447
26447
  }
26448
26448
  };
26449
26449
 
26450
- var formkitVersion$2$1 = '202606171946';
26450
+ var formkitVersion$2$1 = '202606222118';
26451
26451
 
26452
26452
  let l$1$2 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$5`${s$5(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1$2 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1$2 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1$3=i$4`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
26453
26453
  `,u$4$2=i$4`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
@@ -31958,7 +31958,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$2 {
31958
31958
  }
31959
31959
  };
31960
31960
 
31961
- var formkitVersion$1$3 = '202606171946';
31961
+ var formkitVersion$1$3 = '202606222118';
31962
31962
 
31963
31963
  let AuroElement$2$2 = class AuroElement extends i$2 {
31964
31964
  static get properties() {
@@ -45540,7 +45540,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$2 {
45540
45540
  }
45541
45541
  };
45542
45542
 
45543
- var formkitVersion$7 = '202606171946';
45543
+ var formkitVersion$7 = '202606222118';
45544
45544
 
45545
45545
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
45546
45546
  // See LICENSE in the project root for license information.
@@ -45555,7 +45555,7 @@ var formkitVersion$7 = '202606171946';
45555
45555
  * @slot ariaLabel.password.hide - Sets aria-label on password button to toggle off showing password
45556
45556
  * @slot helpText - Sets the help text displayed below the input.
45557
45557
  * @slot label - Sets the label text for the input.
45558
- * @slot optionalLabel - Allows overriding the optional display text "(optional)", which appears next to the label.
45558
+ * @slot optionalLabel - Allows overriding the optional display text " (optional)", which appears next to the label.
45559
45559
  * @slot displayValue - Allows custom HTML content to display in place of the value when the input is not focused.
45560
45560
  * @csspart wrapper - Use for customizing the style of the root element
45561
45561
  * @csspart label - Use for customizing the style of the label element
@@ -46960,8 +46960,8 @@ const datepickerKeyboardStrategy = {
46960
46960
  * @slot label - Defines the label content for the entire datepicker when `layout="snowflake"`.
46961
46961
  * @slot toLabel - Defines the label content for the second input when the `range` attribute is used.
46962
46962
  * @slot fromLabel - Defines the label content for the first input.
46963
- * @slot optionalFromLabel - Overrides the "(optional)" text rendered next to the first input's label when the datepicker is not `required`.
46964
- * @slot optionalToLabel - Overrides the "(optional)" text rendered next to the second input's label when `range` is set and the datepicker is not `required`.
46963
+ * @slot optionalFromLabel - Overrides the " (optional)" text rendered next to the first input's label when the datepicker is not `required`.
46964
+ * @slot optionalToLabel - Overrides the " (optional)" text rendered next to the second input's label when `range` is set and the datepicker is not `required`.
46965
46965
  * @slot date_YYYY_MM_DD - Defines the content to display in the auro-calendar-cell for the specified date. The content text is colored using the success state token when the `highlight` attribute is applied to the slot.
46966
46966
  * @slot popover_YYYY_MM_DD - Defines the content to display in the auro-calendar-cell popover for the specified date.
46967
46967
  * @csspart dropdown - Use for customizing the style of the dropdown.
@@ -48954,7 +48954,7 @@ class AuroDatePicker extends AuroElement$5 {
48954
48954
  }
48955
48955
  <span slot="ariaLabel.clear">${this.runtimeUtils.getSlotText(this, 'ariaLabel.input.clear') || i18n$2(this.lang, 'clearInput')}</span>
48956
48956
  <span slot="label"><slot name="fromLabel"></slot></span>
48957
- <span slot="optionalLabel"><slot name="optionalFromLabel"> (optional)</slot></span>
48957
+ <slot name="optionalFromLabel" slot="optionalLabel"> (optional)</slot>
48958
48958
  </${this.inputTag}>
48959
48959
  </div>
48960
48960
 
@@ -48999,7 +48999,7 @@ class AuroDatePicker extends AuroElement$5 {
48999
48999
  }
49000
49000
  <span slot="ariaLabel.clear">${this.runtimeUtils.getSlotText(this, 'ariaLabel.input.clear') || this.runtimeUtils.getSlotText(this, 'ariaLabel.input.clear') || i18n$2(this.lang, 'clearInput')}</span>
49001
49001
  <span slot="label"><slot name="toLabel"></slot></span>
49002
- <span slot="optionalLabel"><slot name="optionalToLabel"> (optional)</slot></span>
49002
+ <slot name="optionalToLabel" slot="optionalLabel"> (optional)</slot>
49003
49003
  </${this.inputTag}>
49004
49004
  </div>
49005
49005
  ` : undefined}
@@ -50243,7 +50243,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$2 {
50243
50243
  }
50244
50244
  };
50245
50245
 
50246
- var formkitVersion$1$2 = '202606171946';
50246
+ var formkitVersion$1$2 = '202606222118';
50247
50247
 
50248
50248
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
50249
50249
  // See LICENSE in the project root for license information.
@@ -54571,7 +54571,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$2 {
54571
54571
  }
54572
54572
  };
54573
54573
 
54574
- var formkitVersion$6 = '202606171946';
54574
+ var formkitVersion$6 = '202606222118';
54575
54575
 
54576
54576
  let AuroElement$1$2 = class AuroElement extends i$2 {
54577
54577
  static get properties() {
@@ -58503,7 +58503,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$2 {
58503
58503
  }
58504
58504
  };
58505
58505
 
58506
- var formkitVersion$5 = '202606171946';
58506
+ var formkitVersion$5 = '202606222118';
58507
58507
 
58508
58508
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
58509
58509
  // See LICENSE in the project root for license information.
@@ -60253,7 +60253,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$2 {
60253
60253
  }
60254
60254
  };
60255
60255
 
60256
- var formkitVersion$4 = '202606171946';
60256
+ var formkitVersion$4 = '202606222118';
60257
60257
 
60258
60258
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
60259
60259
  // See LICENSE in the project root for license information.
@@ -65468,7 +65468,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$2 {
65468
65468
  }
65469
65469
  };
65470
65470
 
65471
- var formkitVersion$2 = '202606171946';
65471
+ var formkitVersion$2 = '202606222118';
65472
65472
 
65473
65473
  let AuroElement$2$1 = class AuroElement extends i$2 {
65474
65474
  static get properties() {
@@ -79050,7 +79050,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$2 {
79050
79050
  }
79051
79051
  };
79052
79052
 
79053
- var formkitVersion$1$1 = '202606171946';
79053
+ var formkitVersion$1$1 = '202606222118';
79054
79054
 
79055
79055
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
79056
79056
  // See LICENSE in the project root for license information.
@@ -79065,7 +79065,7 @@ var formkitVersion$1$1 = '202606171946';
79065
79065
  * @slot ariaLabel.password.hide - Sets aria-label on password button to toggle off showing password
79066
79066
  * @slot helpText - Sets the help text displayed below the input.
79067
79067
  * @slot label - Sets the label text for the input.
79068
- * @slot optionalLabel - Allows overriding the optional display text "(optional)", which appears next to the label.
79068
+ * @slot optionalLabel - Allows overriding the optional display text " (optional)", which appears next to the label.
79069
79069
  * @slot displayValue - Allows custom HTML content to display in place of the value when the input is not focused.
79070
79070
  * @csspart wrapper - Use for customizing the style of the root element
79071
79071
  * @csspart label - Use for customizing the style of the label element
@@ -80171,7 +80171,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$2 {
80171
80171
  }
80172
80172
  };
80173
80173
 
80174
- var formkitVersion$3 = '202606171946';
80174
+ var formkitVersion$3 = '202606222118';
80175
80175
 
80176
80176
  var styleCss$1$3 = i$4`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
80177
80177
 
@@ -82935,8 +82935,8 @@ class AuroMenu extends AuroElement$2 {
82935
82935
  // Malformed JSON (e.g. a literal string that happens to start with "[") falls back
82936
82936
  // to a single-item array rather than throwing during render.
82937
82937
  try {
82938
- const parsed = JSON.parse(this.value);
82939
- return Array.isArray(parsed) ? parsed : [this.value];
82938
+ // any valid JSON starting with `[` ALWAYS parses to an array
82939
+ return JSON.parse(this.value);
82940
82940
  } catch {
82941
82941
  return [this.value];
82942
82942
  }
@@ -84935,6 +84935,21 @@ function getEnabledOptions(menu) {
84935
84935
  return (menu?.options || []).filter((option) => !option.disabled);
84936
84936
  }
84937
84937
 
84938
+ /**
84939
+ * Returns the active (selectable + visible) options for type-ahead navigation.
84940
+ *
84941
+ * Uses auro-menuoption's `isActive` getter, which excludes disabled, hidden,
84942
+ * and static options (e.g. `static nomatch` placeholders) so the type-ahead
84943
+ * cursor never lands on a non-actionable item. Same empty-safe handling as
84944
+ * `getEnabledOptions`.
84945
+ *
84946
+ * @param {HTMLElement | null | undefined} menu - The auro-menu element.
84947
+ * @returns {Array<HTMLElement>} Active options, empty array when none.
84948
+ */
84949
+ function getActiveOptions(menu) {
84950
+ return (menu?.options || []).filter((option) => option.isActive);
84951
+ }
84952
+
84938
84953
  /* eslint-disable new-cap */
84939
84954
 
84940
84955
  const selectKeyboardStrategy = {
@@ -84967,6 +84982,14 @@ const selectKeyboardStrategy = {
84967
84982
  },
84968
84983
 
84969
84984
  Escape(component, evt, ctx) {
84985
+ // Always clear the type-ahead buffer — Escape is a universal cancel.
84986
+ // Safe to call when the buffer is empty.
84987
+ // eslint-disable-next-line no-underscore-dangle
84988
+ if (typeof component._clearTypeaheadBuffer === 'function') {
84989
+ // eslint-disable-next-line no-underscore-dangle
84990
+ component._clearTypeaheadBuffer();
84991
+ }
84992
+
84970
84993
  if (!ctx.isExpanded) {
84971
84994
  return;
84972
84995
  }
@@ -85026,16 +85049,25 @@ const selectKeyboardStrategy = {
85026
85049
  },
85027
85050
 
85028
85051
  default(component, evt, ctx) {
85029
- component.updateActiveOptionBasedOnKey(evt.key);
85052
+ // Space resolves to either typeahead-buffer extension or bib toggle
85053
+ // depending on whether a type-ahead buffer is active. Mirrors native
85054
+ // <select> and the WAI-ARIA APG Listbox guidance: mid-typeahead space
85055
+ // is a search character (e.g. "San Francisco"); otherwise it toggles.
85030
85056
  if (evt.key === ' ') {
85031
85057
  evt.preventDefault();
85032
85058
  evt.stopPropagation();
85059
+ if (component.typeaheadBuffer && component.typeaheadBuffer.length > 0) {
85060
+ component.updateActiveOptionBasedOnKey(evt.key);
85061
+ return;
85062
+ }
85033
85063
  if (ctx.isExpanded) {
85034
85064
  component.dropdown.hide();
85035
- return;
85065
+ } else {
85066
+ component.dropdown.show();
85036
85067
  }
85037
- component.dropdown.show();
85068
+ return;
85038
85069
  }
85070
+ component.updateActiveOptionBasedOnKey(evt.key);
85039
85071
  },
85040
85072
  };
85041
85073
 
@@ -88947,7 +88979,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
88947
88979
  }
88948
88980
  };
88949
88981
 
88950
- var formkitVersion$1 = '202606171946';
88982
+ var formkitVersion$1 = '202606222118';
88951
88983
 
88952
88984
  class AuroElement extends i$2 {
88953
88985
  static get properties() {
@@ -90960,7 +90992,7 @@ class AuroHelpText extends i$2 {
90960
90992
  }
90961
90993
  }
90962
90994
 
90963
- var formkitVersion = '202606171946';
90995
+ var formkitVersion = '202606222118';
90964
90996
 
90965
90997
  var styleCss = i$4`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
90966
90998
 
@@ -91065,6 +91097,16 @@ class AuroSelect extends AuroElement$1 {
91065
91097
  * @private
91066
91098
  */
91067
91099
  this.hasDisplayValueContent = false;
91100
+
91101
+ /**
91102
+ * @private
91103
+ */
91104
+ this.typeaheadBuffer = '';
91105
+
91106
+ /**
91107
+ * @private
91108
+ */
91109
+ this._typeaheadTimeout = null;
91068
91110
  }
91069
91111
 
91070
91112
  /**
@@ -91077,6 +91119,7 @@ class AuroSelect extends AuroElement$1 {
91077
91119
  this.fullscreenBreakpoint = 'sm';
91078
91120
  this.onDark = false;
91079
91121
  this.isPopoverVisible = false;
91122
+ this.typeaheadTimeoutMs = 500;
91080
91123
 
91081
91124
  // Layout Config
91082
91125
  this.layout = 'classic';
@@ -91380,6 +91423,16 @@ class AuroSelect extends AuroElement$1 {
91380
91423
  attribute: false
91381
91424
  },
91382
91425
 
91426
+ /**
91427
+ * Milliseconds of keyboard inactivity before the type-ahead buffer resets.
91428
+ * Increase for users who type slowly.
91429
+ * @default 500
91430
+ */
91431
+ typeaheadTimeoutMs: {
91432
+ type: Number,
91433
+ reflect: true
91434
+ },
91435
+
91383
91436
  /**
91384
91437
  * Specifies the `validityState` this element is in.
91385
91438
  */
@@ -91819,6 +91872,7 @@ class AuroSelect extends AuroElement$1 {
91819
91872
  this.addEventListener('blur', () => {
91820
91873
  this.validate();
91821
91874
  this.hasFocus = false;
91875
+ this._clearTypeaheadBuffer();
91822
91876
  });
91823
91877
  }
91824
91878
 
@@ -91832,41 +91886,89 @@ class AuroSelect extends AuroElement$1 {
91832
91886
  }
91833
91887
  }
91834
91888
 
91889
+ /**
91890
+ * Returns the lowercase, trimmed text content of a menu option.
91891
+ * @private
91892
+ * @param {HTMLElement} option - The menu option element.
91893
+ * @returns {string}
91894
+ */
91895
+ _getOptionDisplayText(option) {
91896
+ return (option.textContent || '').trim().toLowerCase();
91897
+ }
91898
+
91899
+ /**
91900
+ * Empties the type-ahead buffer and cancels any pending reset timeout.
91901
+ * Called when focus leaves the component, when Escape closes the bib, and on disconnect
91902
+ * so a stale buffer never bridges into a fresh interaction.
91903
+ * @private
91904
+ */
91905
+ _clearTypeaheadBuffer() {
91906
+ if (this._typeaheadTimeout) {
91907
+ clearTimeout(this._typeaheadTimeout);
91908
+ this._typeaheadTimeout = null;
91909
+ }
91910
+ this.typeaheadBuffer = '';
91911
+ }
91912
+
91835
91913
  /**
91836
91914
  * Updates the active option in the menu based on keyboard input.
91915
+ *
91916
+ * Implements the WAI-ARIA APG Listbox type-ahead pattern: accumulates printable
91917
+ * keystrokes into a buffer that resets after `typeaheadTimeoutMs` of inactivity.
91918
+ * A multi-character buffer matches the first option whose displayed text starts
91919
+ * with the buffer; repeating a single character cycles through options that start
91920
+ * with that character.
91837
91921
  * @private
91838
91922
  * @param {string} _key - The key pressed by the user.
91839
91923
  * @returns {void}
91840
91924
  */
91841
91925
  updateActiveOptionBasedOnKey(_key) {
91926
+ // Ignore non-printable keys (Shift, ArrowDown, Tab, etc.)
91927
+ if (typeof _key !== 'string' || _key.length !== 1) {
91928
+ return;
91929
+ }
91842
91930
 
91843
- // Get a lowercase version of the key pressed
91844
- const key = _key.toLowerCase();
91845
-
91846
- // Calculate how many times the same letter has been pressed
91847
- this.sameLetterTimes = key === this.lastLetter ? this.sameLetterTimes + 1 : 0;
91931
+ // No selectable options to match against clear any stale buffer/timer so
91932
+ // Space stays a bib toggle and the next keystroke after fresh options load
91933
+ // starts cleanly. `getActiveOptions` excludes disabled, hidden, and static
91934
+ // options (e.g. `static nomatch` placeholders). Checked BEFORE mutating
91935
+ // the buffer.
91936
+ const options = getActiveOptions(this.menu);
91937
+ if (!options.length) {
91938
+ this._clearTypeaheadBuffer();
91939
+ return;
91940
+ }
91848
91941
 
91849
- // Set last letter for tracking
91850
- this.lastLetter = key;
91942
+ const key = _key.toLowerCase();
91851
91943
 
91852
- // Get all the options that start with the last letter pressed
91853
- const letterOptions = this.menu.options.filter((option) => {
91854
- const optionText = option.value || '';
91855
- return optionText.toLowerCase().startsWith(this.lastLetter);
91856
- });
91944
+ // Reset the buffer after a period of inactivity
91945
+ if (this._typeaheadTimeout) {
91946
+ clearTimeout(this._typeaheadTimeout);
91947
+ }
91948
+ this._typeaheadTimeout = setTimeout(() => {
91949
+ this._clearTypeaheadBuffer();
91950
+ }, this.typeaheadTimeoutMs);
91857
91951
 
91858
- // If we have options that match the letter pressed
91859
- if (letterOptions.length) {
91952
+ this.typeaheadBuffer += key;
91860
91953
 
91861
- // Show the dropdown if it is not already visible
91862
- this.dropdown.show();
91954
+ const isRepeatedChar = this.typeaheadBuffer.length > 1 && new Set(this.typeaheadBuffer).size === 1;
91863
91955
 
91864
- // Get the index we're after based on how many times the letter has been pressed and the length of the letterOptions array
91865
- const index = this.sameLetterTimes < letterOptions.length ? this.sameLetterTimes : this.sameLetterTimes % letterOptions.length;
91956
+ let match = null;
91957
+ if (isRepeatedChar) {
91958
+ const matches = options.filter((option) => this._getOptionDisplayText(option).startsWith(key));
91959
+ if (matches.length) {
91960
+ const cycleIndex = (this.typeaheadBuffer.length - 1) % matches.length;
91961
+ match = matches[cycleIndex];
91962
+ }
91963
+ } else {
91964
+ match = options.find((option) => this._getOptionDisplayText(option).startsWith(this.typeaheadBuffer));
91965
+ }
91866
91966
 
91867
- // Select the new option in the menu
91868
- const newOption = letterOptions[index];
91869
- this.menu.updateActiveOption(newOption);
91967
+ if (match) {
91968
+ if (!this.dropdown.isPopoverVisible) {
91969
+ this.dropdown.show();
91970
+ }
91971
+ this.menu.updateActiveOption(match);
91870
91972
  }
91871
91973
  }
91872
91974
 
@@ -91980,6 +92082,11 @@ class AuroSelect extends AuroElement$1 {
91980
92082
  }
91981
92083
  }
91982
92084
 
92085
+ disconnectedCallback() {
92086
+ super.disconnectedCallback();
92087
+ this._clearTypeaheadBuffer();
92088
+ }
92089
+
91983
92090
  // lifecycle runs only after the element's DOM has been updated the first time
91984
92091
  firstUpdated() {
91985
92092
  // Add the tag name as an attribute if it is different than the component name
@@ -3,7 +3,7 @@
3
3
  * @property {string | number | boolean | string[] | null} value - The value of the form element.
4
4
  * @property {ValidityState} validity - The validity state of the form element, stored when fired from the form element.
5
5
  * @property {boolean} required - Whether the form element is required or not.
6
- * @property {HTMLElement} element - Whether the form element is required or not.
6
+ * @property {boolean} disabled - Whether the form element is currently disabled. Cached from the live attribute via the MutationObserver in `connectedCallback` and refreshed from `_handleAttributeMutations`.
7
7
  */
8
8
  /**
9
9
  * @typedef {Object.<string, FormStateMember>} FormState - The form state.
@@ -95,6 +95,32 @@ export class AuroForm extends LitElement {
95
95
  * @type {MutationObserver[]}
96
96
  */
97
97
  private mutationObservers;
98
+ /**
99
+ * Captured initial (default) value per field `name`. Populated on first
100
+ * sight of each name in `_addElementToState` and preserved across
101
+ * subsequent `initializeState` cycles (slot change, rename, reset) so
102
+ * `_setInitialState` can detect user edits as `current !== initial`,
103
+ * matching HTML's `dirtyValueFlag` semantics.
104
+ * @private
105
+ * @type {Record<string, string | number | boolean | string[] | null | undefined>}
106
+ */
107
+ private _initialValues;
108
+ /**
109
+ * @private
110
+ * @type {MutationObserver | null}
111
+ */
112
+ private _attributeObserver;
113
+ /**
114
+ * Handle batched MutationObserver records for `disabled` and `name`
115
+ * attribute changes on tracked form elements. A `name` change invalidates
116
+ * the formState keying — we resolve it by re-initializing state. A `disabled`
117
+ * change simply needs a re-render (so `value` / `validity` getters re-evaluate)
118
+ * and a refresh of the submit/reset button enablement.
119
+ * @param {MutationRecord[]} mutations - The batched mutation records.
120
+ * @returns {void}
121
+ * @private
122
+ */
123
+ private _handleAttributeMutations;
98
124
  /**
99
125
  * Resets all form elements to their initial state and fires a `reset` event. The event's `detail.previousValue` contains the form values captured immediately before the reset.
100
126
  * @returns {void}
@@ -155,6 +181,39 @@ export class AuroForm extends LitElement {
155
181
  * @private
156
182
  */
157
183
  private isFormElement;
184
+ /**
185
+ * Whether a given element is currently disabled. Disabled controls are excluded
186
+ * from submission, validity, and initial-state checks per the HTML spec
187
+ * (section 4.10.19.2 "Enabling and disabling form controls":
188
+ * https://www.w3.org/TR/2011/WD-html5-20110113/association-of-controls-and-forms.html).
189
+ *
190
+ * Implementation note: we deliberately read only the attribute. Every Auro
191
+ * form element in `formElementTags` declares `disabled` with `reflect: true`,
192
+ * so the attribute and property stay in sync. Reading the attribute also
193
+ * lets the MutationObserver in `connectedCallback` (which is filtered to
194
+ * `['disabled', 'name']`) be the single source of truth for re-renders.
195
+ * If a future form-element type ships without attribute reflection, expand
196
+ * this helper to also read `element.disabled`.
197
+ * @param {HTMLElement | undefined | null} element - The element to check.
198
+ * @returns {boolean}
199
+ * @private
200
+ */
201
+ private _isDisabled;
202
+ /**
203
+ * Whether the tracked form element registered under `name` is currently disabled.
204
+ * See `_isDisabled` for the HTML-spec rationale behind excluding disabled
205
+ * controls from form state.
206
+ *
207
+ * Reads a cached flag on `formState[name]` populated by `_addElementToState`
208
+ * at registration and refreshed by `_handleAttributeMutations` whenever the
209
+ * element's `disabled` attribute toggles. The cache is fed by the same
210
+ * `hasAttribute('disabled')` read as `_isDisabled`, so the "future form-element
211
+ * type without attribute reflection" caveat documented there applies here too.
212
+ * @param {string} name - The `name` attribute used to register the element.
213
+ * @returns {boolean}
214
+ * @private
215
+ */
216
+ private _isNameDisabled;
158
217
  /**
159
218
  * Validates if an event is from a valid form element with a name.
160
219
  * @param {Event} event - The event to validate.
@@ -186,8 +245,57 @@ export class AuroForm extends LitElement {
186
245
  * @private
187
246
  */
188
247
  private get resetElements();
248
+ /**
249
+ * Raw constraint-validation check. Returns `true` when no enabled field
250
+ * has a validity error. Unlike the public `validity` getter, this does
251
+ * NOT gate on `isInitialState` — callers that need to make a decision
252
+ * based on the actual constraint state (submit-button enablement, the
253
+ * internal `submit()` gate) read this so a pre-filled valid form is
254
+ * correctly recognized as submittable at first render.
255
+ * @returns {boolean}
256
+ * @private
257
+ */
258
+ private _isFormValid;
259
+ /**
260
+ * Whether the reset button should be enabled. True when the form has
261
+ * diverged from its initial state (so the user can always return to
262
+ * defaults — even if the dirty value lives behind a now-disabled field),
263
+ * OR when any non-disabled field has a current value or captured initial
264
+ * value (covers pre-filled forms and user-cleared-back-to-empty cases).
265
+ * @returns {boolean}
266
+ * @private
267
+ */
268
+ private _hasResetableState;
269
+ /**
270
+ * Collapse empty representations to a single canonical `null`.
271
+ *
272
+ * `_addElementToState` captures `null` for a field that mounts without a
273
+ * `value` attribute (`element.value || element.getAttribute('value')` is
274
+ * falsy → resolves to `null`), but `sharedInputListener` later stores the
275
+ * raw `event.target.value` — which is `''` for a user-cleared text input.
276
+ * Without this normalization, backspacing back to empty would taint the
277
+ * form forever (`'' !== null`) and Reset would stay enabled with nothing
278
+ * to actually reset.
279
+ *
280
+ * `''`, `undefined`, and `[]` all collapse to `null`. The empty-array case
281
+ * covers checkbox-group, radio-group, and multiselect, where `[]` means
282
+ * "no selection" — semantically the same as `null`/`''`. Genuine values
283
+ * — including `0`, `false`, non-empty strings, and non-empty arrays —
284
+ * pass through unchanged so number, boolean, and populated multi-value
285
+ * fields still compare correctly.
286
+ * @param {*} value - Value to normalize.
287
+ * @returns {*}
288
+ * @private
289
+ */
290
+ private _normalizeEmpty;
189
291
  /**
190
292
  * Infer validity status based on current formState.
293
+ *
294
+ * Validity stays `null` while the form is in its initial state — this is
295
+ * the "stay quiet until the user interacts" UX contract that consumers
296
+ * depend on to delay error indicators. Code that needs the raw
297
+ * constraint-validation result regardless of interaction (e.g.,
298
+ * submit-button enablement) should call `_isFormValid()` directly.
191
299
  * @private
192
300
  */
193
301
  private _calculateValidity;
@@ -197,7 +305,17 @@ export class AuroForm extends LitElement {
197
305
  */
198
306
  get validity(): "valid" | "invalid" | null;
199
307
  /**
200
- * Determines whether the form is in its initial (untouched) state and updates `_isInitialState` accordingly.
308
+ * Determines whether the form is in its initial (untouched) state.
309
+ *
310
+ * A field is tainted if either:
311
+ * - its value differs from the value captured on first render, OR
312
+ * - its validity is failing (anything other than `null` or `'valid'`).
313
+ *
314
+ * Validity acts as a backup signal: it catches users who interact with a
315
+ * field without changing its value (e.g., focusing and blurring a required
316
+ * field). We skip `null` (not yet validated) and `'valid'` (the default
317
+ * after Auro's auto-validation on mount) because neither proves the user
318
+ * touched anything.
201
319
  * @returns {void}
202
320
  * @private
203
321
  */
@@ -267,9 +385,9 @@ export type FormStateMember = {
267
385
  */
268
386
  required: boolean;
269
387
  /**
270
- * - Whether the form element is required or not.
388
+ * - Whether the form element is currently disabled. Cached from the live attribute via the MutationObserver in `connectedCallback` and refreshed from `_handleAttributeMutations`.
271
389
  */
272
- element: HTMLElement;
390
+ disabled: boolean;
273
391
  };
274
392
  /**
275
393
  * - The form state.