@aurodesignsystem-dev/auro-formkit 0.0.0-pr1530.0 → 0.0.0-pr1530.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 (52) 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 +42 -29
  7. package/components/combobox/demo/getting-started.min.js +42 -29
  8. package/components/combobox/demo/index.min.js +42 -29
  9. package/components/combobox/dist/index.js +42 -29
  10. package/components/combobox/dist/registered.js +42 -29
  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 +7 -7
  16. package/components/datepicker/demo/customize.min.js +121 -47
  17. package/components/datepicker/demo/index.min.js +121 -47
  18. package/components/datepicker/demo/keyboard-behavior.md +3 -3
  19. package/components/datepicker/demo/voiceover.md +3 -3
  20. package/components/datepicker/demo/why-datepicker.md +2 -2
  21. package/components/datepicker/dist/auro-calendar-cell.d.ts +9 -0
  22. package/components/datepicker/dist/auro-calendar.d.ts +9 -0
  23. package/components/datepicker/dist/index.js +121 -47
  24. package/components/datepicker/dist/registered.js +121 -47
  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 +269 -123
  31. package/components/form/demo/getting-started.min.js +269 -123
  32. package/components/form/demo/index.min.js +269 -123
  33. package/components/form/demo/registerDemoDeps.min.js +269 -123
  34. package/components/input/demo/customize.min.js +40 -27
  35. package/components/input/demo/getting-started.min.js +40 -27
  36. package/components/input/demo/index.min.js +40 -27
  37. package/components/input/dist/base-input.d.ts +20 -4
  38. package/components/input/dist/index.js +40 -27
  39. package/components/input/dist/registered.js +40 -27
  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 +62 -16
  46. package/components/select/demo/getting-started.min.js +62 -16
  47. package/components/select/demo/index.min.js +62 -16
  48. package/components/select/dist/auro-select.d.ts +6 -0
  49. package/components/select/dist/index.js +62 -16
  50. package/components/select/dist/registered.js +62 -16
  51. package/custom-elements.json +427 -343
  52. package/package.json +1 -1
@@ -904,9 +904,6 @@ function navigateArrow(component, direction, options = {}) {
904
904
  * @param {HTMLElement | null | undefined} menu - The auro-menu element.
905
905
  * @returns {Array<HTMLElement>} Non-disabled options, empty array when none.
906
906
  */
907
- function getEnabledOptions(menu) {
908
- return (menu?.options || []).filter((option) => !option.disabled);
909
- }
910
907
 
911
908
  /**
912
909
  * Returns the active (selectable + visible) options for type-ahead navigation.
@@ -976,8 +973,10 @@ const selectKeyboardStrategy = {
976
973
  End(component, evt, ctx) {
977
974
  evt.preventDefault();
978
975
  evt.stopPropagation();
979
- // `pop()` is safe here: getEnabledOptions returns a fresh filtered array.
980
- const lastOption = getEnabledOptions(component.menu).pop();
976
+ // `pop()` is safe here: getActiveOptions returns a fresh filtered array.
977
+ // Uses "active" (not "enabled") so hidden and static rows — which a screen
978
+ // reader must not announce as focused — are skipped.
979
+ const lastOption = getActiveOptions(component.menu).pop();
981
980
  if (!lastOption) {
982
981
  return;
983
982
  }
@@ -1008,7 +1007,7 @@ const selectKeyboardStrategy = {
1008
1007
  Home(component, evt, ctx) {
1009
1008
  evt.preventDefault();
1010
1009
  evt.stopPropagation();
1011
- const [firstOption] = getEnabledOptions(component.menu);
1010
+ const [firstOption] = getActiveOptions(component.menu);
1012
1011
  if (!firstOption) {
1013
1012
  return;
1014
1013
  }
@@ -1033,6 +1032,15 @@ const selectKeyboardStrategy = {
1033
1032
  },
1034
1033
 
1035
1034
  default(component, evt, ctx) {
1035
+ // Ignore keys chorded with Ctrl/Meta/Alt so browser/OS shortcuts
1036
+ // (Cmd+C, Ctrl+V, Alt+X, Cmd+Space, …) don't leak into typeahead
1037
+ // or toggle the bib. Native <select> ignores modified keys.
1038
+ // ArrowUp/ArrowDown handle modifier+arrow explicitly above; this
1039
+ // guard only affects the default (printable/Space) branch.
1040
+ if (evt.ctrlKey || evt.metaKey || evt.altKey) {
1041
+ return;
1042
+ }
1043
+
1036
1044
  // Space resolves to either typeahead-buffer extension or bib toggle
1037
1045
  // depending on whether a type-ahead buffer is active. Mirrors native
1038
1046
  // <select> and the WAI-ARIA APG Listbox guidance: mid-typeahead space
@@ -4987,7 +4995,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
4987
4995
  }
4988
4996
  };
4989
4997
 
4990
- var formkitVersion$1 = '202607021905';
4998
+ var formkitVersion$1 = '202607022225';
4991
4999
 
4992
5000
  class AuroElement extends i$2 {
4993
5001
  static get properties() {
@@ -7026,7 +7034,7 @@ class AuroHelpText extends i$2 {
7026
7034
  }
7027
7035
  }
7028
7036
 
7029
- var formkitVersion = '202607021905';
7037
+ var formkitVersion = '202607022225';
7030
7038
 
7031
7039
  var styleCss$2 = i$5`.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}`;
7032
7040
 
@@ -7590,8 +7598,11 @@ class AuroSelect extends AuroElement$1 {
7590
7598
  } else if (this.multiSelect && Array.isArray(this.optionSelected) && this.optionSelected.length > 0) {
7591
7599
  this.menu.updateActiveOption(this.optionSelected[0]);
7592
7600
  } else {
7593
- // If no activeOption has yet to be set, then make the first enabled option active by default
7594
- const [firstActive] = getEnabledOptions(this.menu);
7601
+ // If no activeOption has yet to be set, make the first active option
7602
+ // (non-disabled, non-hidden, non-static) active by default. "Active" —
7603
+ // not just "enabled" — so hidden rows and static placeholders never
7604
+ // land in aria-activedescendant on open.
7605
+ const [firstActive] = getActiveOptions(this.menu);
7595
7606
  this.menu.updateActiveOption(firstActive);
7596
7607
  }
7597
7608
  }
@@ -7837,6 +7848,12 @@ class AuroSelect extends AuroElement$1 {
7837
7848
 
7838
7849
  /**
7839
7850
  * Binds all behavior needed to the menu after rendering.
7851
+ *
7852
+ * The `<auro-menu>` reference is captured once and not re-targeted on
7853
+ * `slotchange`. Runtime option mutations are covered via
7854
+ * `auroMenu-optionsChange`, so swap options inside the menu freely; do not
7855
+ * swap the `<auro-menu>` element itself under a live select — remount the
7856
+ * parent `<auro-select>` instead.
7840
7857
  * @private
7841
7858
  * @returns {void}
7842
7859
  */
@@ -7895,6 +7912,15 @@ class AuroSelect extends AuroElement$1 {
7895
7912
  if (this.menu.optionSelected !== undefined) {
7896
7913
  return;
7897
7914
  }
7915
+ // Skip when the select is already cleared (valueless click with no
7916
+ // prior selection): value/optionSelected are already empty and there
7917
+ // is no stale trigger text to refresh, so updateDisplayedValue would
7918
+ // just churn the DOM and request a needless dropdown re-render.
7919
+ const hasStaleState = this.value !== undefined ||
7920
+ (this.multiSelect ? this.optionSelected?.length > 0 : this.optionSelected !== undefined);
7921
+ if (!hasStaleState) {
7922
+ return;
7923
+ }
7898
7924
  this.value = undefined;
7899
7925
  this.optionSelected = this.multiSelect ? [] : undefined;
7900
7926
  // The trigger label is rendered imperatively into #value, so a property
@@ -7924,10 +7950,15 @@ class AuroSelect extends AuroElement$1 {
7924
7950
  if (this.dropdown.isPopoverVisible) {
7925
7951
  announceToScreenReader(this._getAnnouncementRoot(), message);
7926
7952
  } else {
7927
- // Typeahead-on-closed fires this event before `show()` flips
7928
- // isPopoverVisible. Defer so the announcement targets the bib's
7929
- // live region once the fullscreen <dialog> opens otherwise it
7930
- // lands in the host root, which is inert under the active modal.
7953
+ // Typeahead-on-closed calls updateActiveOption() before show(), so
7954
+ // this handler runs with isPopoverVisible still false. queueMicrotask
7955
+ // is safe because show() showBib() flips isPopoverVisible and
7956
+ // dialog.showModal() both run synchronously in the same task; the
7957
+ // microtask queue only drains once _handleTypeahead unwinds, by
7958
+ // which point _getAnnouncementRoot() resolves to the bib's shadow
7959
+ // root inside the now-open modal. Do NOT switch to auroDropdown-toggled
7960
+ // — it fires before showModal(), landing the announcement in the
7961
+ // host root while the dialog is still not-yet-modal.
7931
7962
  queueMicrotask(() => announceToScreenReader(this._getAnnouncementRoot(), message));
7932
7963
  }
7933
7964
  }
@@ -8321,6 +8352,13 @@ class AuroSelect extends AuroElement$1 {
8321
8352
  }
8322
8353
 
8323
8354
  if (changedProperties.has('value')) {
8355
+ // A value change ends the current interaction — whether it came from a
8356
+ // user commit, programmatic assignment, or reset(). Clear the buffer so
8357
+ // a stale prefix does not concatenate onto the next keystroke while the
8358
+ // host still has focus (the blur listener would otherwise be the only
8359
+ // focus-retained clear point, and hideBib() below does not blur).
8360
+ this._clearTypeaheadBuffer();
8361
+
8324
8362
  this.setMenuValue(this.value);
8325
8363
 
8326
8364
  this._updateNativeSelect();
@@ -8376,6 +8414,9 @@ class AuroSelect extends AuroElement$1 {
8376
8414
  * @returns {void}
8377
8415
  */
8378
8416
  reset() {
8417
+ // Defense-in-depth: updated()'s value-change branch also clears, but
8418
+ // reset-to-same-value (e.g. undefined → undefined) skips that path.
8419
+ this._clearTypeaheadBuffer();
8379
8420
  this.menu.reset();
8380
8421
  this.validation.reset(this);
8381
8422
  }
@@ -8398,8 +8439,13 @@ class AuroSelect extends AuroElement$1 {
8398
8439
  // Hidden native <select> has no `multiple` attribute, so any change it fires
8399
8440
  // is a single raw value — applying it in multiSelect mode would collapse the
8400
8441
  // JSON-array `value` shape. Bfcache/autofill can reach this on a name-bearing
8401
- // form control even with aria-hidden/tabindex=-1.
8402
- if (this.multiSelect) return;
8442
+ // form control even with aria-hidden/tabindex=-1, so revert to the expected
8443
+ // mirror (formattedValue[0]) rather than letting the native select drift and
8444
+ // silently submit the autofilled scalar under `name`.
8445
+ if (this.multiSelect) {
8446
+ this._updateNativeSelect();
8447
+ return;
8448
+ }
8403
8449
 
8404
8450
  const selectedOption = event.target.options[event.target.selectedIndex];
8405
8451
  if (!selectedOption) return;
@@ -431,6 +431,12 @@ export class AuroSelect extends AuroElement {
431
431
  private _getAnnouncementRoot;
432
432
  /**
433
433
  * Binds all behavior needed to the menu after rendering.
434
+ *
435
+ * The `<auro-menu>` reference is captured once and not re-targeted on
436
+ * `slotchange`. Runtime option mutations are covered via
437
+ * `auroMenu-optionsChange`, so swap options inside the menu freely; do not
438
+ * swap the `<auro-menu>` element itself under a live select — remount the
439
+ * parent `<auro-select>` instead.
434
440
  * @private
435
441
  * @returns {void}
436
442
  */
@@ -861,9 +861,6 @@ function navigateArrow(component, direction, options = {}) {
861
861
  * @param {HTMLElement | null | undefined} menu - The auro-menu element.
862
862
  * @returns {Array<HTMLElement>} Non-disabled options, empty array when none.
863
863
  */
864
- function getEnabledOptions(menu) {
865
- return (menu?.options || []).filter((option) => !option.disabled);
866
- }
867
864
 
868
865
  /**
869
866
  * Returns the active (selectable + visible) options for type-ahead navigation.
@@ -933,8 +930,10 @@ const selectKeyboardStrategy = {
933
930
  End(component, evt, ctx) {
934
931
  evt.preventDefault();
935
932
  evt.stopPropagation();
936
- // `pop()` is safe here: getEnabledOptions returns a fresh filtered array.
937
- const lastOption = getEnabledOptions(component.menu).pop();
933
+ // `pop()` is safe here: getActiveOptions returns a fresh filtered array.
934
+ // Uses "active" (not "enabled") so hidden and static rows — which a screen
935
+ // reader must not announce as focused — are skipped.
936
+ const lastOption = getActiveOptions(component.menu).pop();
938
937
  if (!lastOption) {
939
938
  return;
940
939
  }
@@ -965,7 +964,7 @@ const selectKeyboardStrategy = {
965
964
  Home(component, evt, ctx) {
966
965
  evt.preventDefault();
967
966
  evt.stopPropagation();
968
- const [firstOption] = getEnabledOptions(component.menu);
967
+ const [firstOption] = getActiveOptions(component.menu);
969
968
  if (!firstOption) {
970
969
  return;
971
970
  }
@@ -990,6 +989,15 @@ const selectKeyboardStrategy = {
990
989
  },
991
990
 
992
991
  default(component, evt, ctx) {
992
+ // Ignore keys chorded with Ctrl/Meta/Alt so browser/OS shortcuts
993
+ // (Cmd+C, Ctrl+V, Alt+X, Cmd+Space, …) don't leak into typeahead
994
+ // or toggle the bib. Native <select> ignores modified keys.
995
+ // ArrowUp/ArrowDown handle modifier+arrow explicitly above; this
996
+ // guard only affects the default (printable/Space) branch.
997
+ if (evt.ctrlKey || evt.metaKey || evt.altKey) {
998
+ return;
999
+ }
1000
+
993
1001
  // Space resolves to either typeahead-buffer extension or bib toggle
994
1002
  // depending on whether a type-ahead buffer is active. Mirrors native
995
1003
  // <select> and the WAI-ARIA APG Listbox guidance: mid-typeahead space
@@ -4920,7 +4928,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
4920
4928
  }
4921
4929
  };
4922
4930
 
4923
- var formkitVersion$1 = '202607021905';
4931
+ var formkitVersion$1 = '202607022225';
4924
4932
 
4925
4933
  class AuroElement extends LitElement {
4926
4934
  static get properties() {
@@ -6959,7 +6967,7 @@ class AuroHelpText extends LitElement {
6959
6967
  }
6960
6968
  }
6961
6969
 
6962
- var formkitVersion = '202607021905';
6970
+ var formkitVersion = '202607022225';
6963
6971
 
6964
6972
  var styleCss = css`.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}`;
6965
6973
 
@@ -7523,8 +7531,11 @@ class AuroSelect extends AuroElement$1 {
7523
7531
  } else if (this.multiSelect && Array.isArray(this.optionSelected) && this.optionSelected.length > 0) {
7524
7532
  this.menu.updateActiveOption(this.optionSelected[0]);
7525
7533
  } else {
7526
- // If no activeOption has yet to be set, then make the first enabled option active by default
7527
- const [firstActive] = getEnabledOptions(this.menu);
7534
+ // If no activeOption has yet to be set, make the first active option
7535
+ // (non-disabled, non-hidden, non-static) active by default. "Active" —
7536
+ // not just "enabled" — so hidden rows and static placeholders never
7537
+ // land in aria-activedescendant on open.
7538
+ const [firstActive] = getActiveOptions(this.menu);
7528
7539
  this.menu.updateActiveOption(firstActive);
7529
7540
  }
7530
7541
  }
@@ -7770,6 +7781,12 @@ class AuroSelect extends AuroElement$1 {
7770
7781
 
7771
7782
  /**
7772
7783
  * Binds all behavior needed to the menu after rendering.
7784
+ *
7785
+ * The `<auro-menu>` reference is captured once and not re-targeted on
7786
+ * `slotchange`. Runtime option mutations are covered via
7787
+ * `auroMenu-optionsChange`, so swap options inside the menu freely; do not
7788
+ * swap the `<auro-menu>` element itself under a live select — remount the
7789
+ * parent `<auro-select>` instead.
7773
7790
  * @private
7774
7791
  * @returns {void}
7775
7792
  */
@@ -7828,6 +7845,15 @@ class AuroSelect extends AuroElement$1 {
7828
7845
  if (this.menu.optionSelected !== undefined) {
7829
7846
  return;
7830
7847
  }
7848
+ // Skip when the select is already cleared (valueless click with no
7849
+ // prior selection): value/optionSelected are already empty and there
7850
+ // is no stale trigger text to refresh, so updateDisplayedValue would
7851
+ // just churn the DOM and request a needless dropdown re-render.
7852
+ const hasStaleState = this.value !== undefined ||
7853
+ (this.multiSelect ? this.optionSelected?.length > 0 : this.optionSelected !== undefined);
7854
+ if (!hasStaleState) {
7855
+ return;
7856
+ }
7831
7857
  this.value = undefined;
7832
7858
  this.optionSelected = this.multiSelect ? [] : undefined;
7833
7859
  // The trigger label is rendered imperatively into #value, so a property
@@ -7857,10 +7883,15 @@ class AuroSelect extends AuroElement$1 {
7857
7883
  if (this.dropdown.isPopoverVisible) {
7858
7884
  announceToScreenReader(this._getAnnouncementRoot(), message);
7859
7885
  } else {
7860
- // Typeahead-on-closed fires this event before `show()` flips
7861
- // isPopoverVisible. Defer so the announcement targets the bib's
7862
- // live region once the fullscreen <dialog> opens otherwise it
7863
- // lands in the host root, which is inert under the active modal.
7886
+ // Typeahead-on-closed calls updateActiveOption() before show(), so
7887
+ // this handler runs with isPopoverVisible still false. queueMicrotask
7888
+ // is safe because show() showBib() flips isPopoverVisible and
7889
+ // dialog.showModal() both run synchronously in the same task; the
7890
+ // microtask queue only drains once _handleTypeahead unwinds, by
7891
+ // which point _getAnnouncementRoot() resolves to the bib's shadow
7892
+ // root inside the now-open modal. Do NOT switch to auroDropdown-toggled
7893
+ // — it fires before showModal(), landing the announcement in the
7894
+ // host root while the dialog is still not-yet-modal.
7864
7895
  queueMicrotask(() => announceToScreenReader(this._getAnnouncementRoot(), message));
7865
7896
  }
7866
7897
  }
@@ -8254,6 +8285,13 @@ class AuroSelect extends AuroElement$1 {
8254
8285
  }
8255
8286
 
8256
8287
  if (changedProperties.has('value')) {
8288
+ // A value change ends the current interaction — whether it came from a
8289
+ // user commit, programmatic assignment, or reset(). Clear the buffer so
8290
+ // a stale prefix does not concatenate onto the next keystroke while the
8291
+ // host still has focus (the blur listener would otherwise be the only
8292
+ // focus-retained clear point, and hideBib() below does not blur).
8293
+ this._clearTypeaheadBuffer();
8294
+
8257
8295
  this.setMenuValue(this.value);
8258
8296
 
8259
8297
  this._updateNativeSelect();
@@ -8309,6 +8347,9 @@ class AuroSelect extends AuroElement$1 {
8309
8347
  * @returns {void}
8310
8348
  */
8311
8349
  reset() {
8350
+ // Defense-in-depth: updated()'s value-change branch also clears, but
8351
+ // reset-to-same-value (e.g. undefined → undefined) skips that path.
8352
+ this._clearTypeaheadBuffer();
8312
8353
  this.menu.reset();
8313
8354
  this.validation.reset(this);
8314
8355
  }
@@ -8331,8 +8372,13 @@ class AuroSelect extends AuroElement$1 {
8331
8372
  // Hidden native <select> has no `multiple` attribute, so any change it fires
8332
8373
  // is a single raw value — applying it in multiSelect mode would collapse the
8333
8374
  // JSON-array `value` shape. Bfcache/autofill can reach this on a name-bearing
8334
- // form control even with aria-hidden/tabindex=-1.
8335
- if (this.multiSelect) return;
8375
+ // form control even with aria-hidden/tabindex=-1, so revert to the expected
8376
+ // mirror (formattedValue[0]) rather than letting the native select drift and
8377
+ // silently submit the autofilled scalar under `name`.
8378
+ if (this.multiSelect) {
8379
+ this._updateNativeSelect();
8380
+ return;
8381
+ }
8336
8382
 
8337
8383
  const selectedOption = event.target.options[event.target.selectedIndex];
8338
8384
  if (!selectedOption) return;
@@ -861,9 +861,6 @@ function navigateArrow(component, direction, options = {}) {
861
861
  * @param {HTMLElement | null | undefined} menu - The auro-menu element.
862
862
  * @returns {Array<HTMLElement>} Non-disabled options, empty array when none.
863
863
  */
864
- function getEnabledOptions(menu) {
865
- return (menu?.options || []).filter((option) => !option.disabled);
866
- }
867
864
 
868
865
  /**
869
866
  * Returns the active (selectable + visible) options for type-ahead navigation.
@@ -933,8 +930,10 @@ const selectKeyboardStrategy = {
933
930
  End(component, evt, ctx) {
934
931
  evt.preventDefault();
935
932
  evt.stopPropagation();
936
- // `pop()` is safe here: getEnabledOptions returns a fresh filtered array.
937
- const lastOption = getEnabledOptions(component.menu).pop();
933
+ // `pop()` is safe here: getActiveOptions returns a fresh filtered array.
934
+ // Uses "active" (not "enabled") so hidden and static rows — which a screen
935
+ // reader must not announce as focused — are skipped.
936
+ const lastOption = getActiveOptions(component.menu).pop();
938
937
  if (!lastOption) {
939
938
  return;
940
939
  }
@@ -965,7 +964,7 @@ const selectKeyboardStrategy = {
965
964
  Home(component, evt, ctx) {
966
965
  evt.preventDefault();
967
966
  evt.stopPropagation();
968
- const [firstOption] = getEnabledOptions(component.menu);
967
+ const [firstOption] = getActiveOptions(component.menu);
969
968
  if (!firstOption) {
970
969
  return;
971
970
  }
@@ -990,6 +989,15 @@ const selectKeyboardStrategy = {
990
989
  },
991
990
 
992
991
  default(component, evt, ctx) {
992
+ // Ignore keys chorded with Ctrl/Meta/Alt so browser/OS shortcuts
993
+ // (Cmd+C, Ctrl+V, Alt+X, Cmd+Space, …) don't leak into typeahead
994
+ // or toggle the bib. Native <select> ignores modified keys.
995
+ // ArrowUp/ArrowDown handle modifier+arrow explicitly above; this
996
+ // guard only affects the default (printable/Space) branch.
997
+ if (evt.ctrlKey || evt.metaKey || evt.altKey) {
998
+ return;
999
+ }
1000
+
993
1001
  // Space resolves to either typeahead-buffer extension or bib toggle
994
1002
  // depending on whether a type-ahead buffer is active. Mirrors native
995
1003
  // <select> and the WAI-ARIA APG Listbox guidance: mid-typeahead space
@@ -4920,7 +4928,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
4920
4928
  }
4921
4929
  };
4922
4930
 
4923
- var formkitVersion$1 = '202607021905';
4931
+ var formkitVersion$1 = '202607022225';
4924
4932
 
4925
4933
  class AuroElement extends LitElement {
4926
4934
  static get properties() {
@@ -6959,7 +6967,7 @@ class AuroHelpText extends LitElement {
6959
6967
  }
6960
6968
  }
6961
6969
 
6962
- var formkitVersion = '202607021905';
6970
+ var formkitVersion = '202607022225';
6963
6971
 
6964
6972
  var styleCss = css`.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}`;
6965
6973
 
@@ -7523,8 +7531,11 @@ class AuroSelect extends AuroElement$1 {
7523
7531
  } else if (this.multiSelect && Array.isArray(this.optionSelected) && this.optionSelected.length > 0) {
7524
7532
  this.menu.updateActiveOption(this.optionSelected[0]);
7525
7533
  } else {
7526
- // If no activeOption has yet to be set, then make the first enabled option active by default
7527
- const [firstActive] = getEnabledOptions(this.menu);
7534
+ // If no activeOption has yet to be set, make the first active option
7535
+ // (non-disabled, non-hidden, non-static) active by default. "Active" —
7536
+ // not just "enabled" — so hidden rows and static placeholders never
7537
+ // land in aria-activedescendant on open.
7538
+ const [firstActive] = getActiveOptions(this.menu);
7528
7539
  this.menu.updateActiveOption(firstActive);
7529
7540
  }
7530
7541
  }
@@ -7770,6 +7781,12 @@ class AuroSelect extends AuroElement$1 {
7770
7781
 
7771
7782
  /**
7772
7783
  * Binds all behavior needed to the menu after rendering.
7784
+ *
7785
+ * The `<auro-menu>` reference is captured once and not re-targeted on
7786
+ * `slotchange`. Runtime option mutations are covered via
7787
+ * `auroMenu-optionsChange`, so swap options inside the menu freely; do not
7788
+ * swap the `<auro-menu>` element itself under a live select — remount the
7789
+ * parent `<auro-select>` instead.
7773
7790
  * @private
7774
7791
  * @returns {void}
7775
7792
  */
@@ -7828,6 +7845,15 @@ class AuroSelect extends AuroElement$1 {
7828
7845
  if (this.menu.optionSelected !== undefined) {
7829
7846
  return;
7830
7847
  }
7848
+ // Skip when the select is already cleared (valueless click with no
7849
+ // prior selection): value/optionSelected are already empty and there
7850
+ // is no stale trigger text to refresh, so updateDisplayedValue would
7851
+ // just churn the DOM and request a needless dropdown re-render.
7852
+ const hasStaleState = this.value !== undefined ||
7853
+ (this.multiSelect ? this.optionSelected?.length > 0 : this.optionSelected !== undefined);
7854
+ if (!hasStaleState) {
7855
+ return;
7856
+ }
7831
7857
  this.value = undefined;
7832
7858
  this.optionSelected = this.multiSelect ? [] : undefined;
7833
7859
  // The trigger label is rendered imperatively into #value, so a property
@@ -7857,10 +7883,15 @@ class AuroSelect extends AuroElement$1 {
7857
7883
  if (this.dropdown.isPopoverVisible) {
7858
7884
  announceToScreenReader(this._getAnnouncementRoot(), message);
7859
7885
  } else {
7860
- // Typeahead-on-closed fires this event before `show()` flips
7861
- // isPopoverVisible. Defer so the announcement targets the bib's
7862
- // live region once the fullscreen <dialog> opens otherwise it
7863
- // lands in the host root, which is inert under the active modal.
7886
+ // Typeahead-on-closed calls updateActiveOption() before show(), so
7887
+ // this handler runs with isPopoverVisible still false. queueMicrotask
7888
+ // is safe because show() showBib() flips isPopoverVisible and
7889
+ // dialog.showModal() both run synchronously in the same task; the
7890
+ // microtask queue only drains once _handleTypeahead unwinds, by
7891
+ // which point _getAnnouncementRoot() resolves to the bib's shadow
7892
+ // root inside the now-open modal. Do NOT switch to auroDropdown-toggled
7893
+ // — it fires before showModal(), landing the announcement in the
7894
+ // host root while the dialog is still not-yet-modal.
7864
7895
  queueMicrotask(() => announceToScreenReader(this._getAnnouncementRoot(), message));
7865
7896
  }
7866
7897
  }
@@ -8254,6 +8285,13 @@ class AuroSelect extends AuroElement$1 {
8254
8285
  }
8255
8286
 
8256
8287
  if (changedProperties.has('value')) {
8288
+ // A value change ends the current interaction — whether it came from a
8289
+ // user commit, programmatic assignment, or reset(). Clear the buffer so
8290
+ // a stale prefix does not concatenate onto the next keystroke while the
8291
+ // host still has focus (the blur listener would otherwise be the only
8292
+ // focus-retained clear point, and hideBib() below does not blur).
8293
+ this._clearTypeaheadBuffer();
8294
+
8257
8295
  this.setMenuValue(this.value);
8258
8296
 
8259
8297
  this._updateNativeSelect();
@@ -8309,6 +8347,9 @@ class AuroSelect extends AuroElement$1 {
8309
8347
  * @returns {void}
8310
8348
  */
8311
8349
  reset() {
8350
+ // Defense-in-depth: updated()'s value-change branch also clears, but
8351
+ // reset-to-same-value (e.g. undefined → undefined) skips that path.
8352
+ this._clearTypeaheadBuffer();
8312
8353
  this.menu.reset();
8313
8354
  this.validation.reset(this);
8314
8355
  }
@@ -8331,8 +8372,13 @@ class AuroSelect extends AuroElement$1 {
8331
8372
  // Hidden native <select> has no `multiple` attribute, so any change it fires
8332
8373
  // is a single raw value — applying it in multiSelect mode would collapse the
8333
8374
  // JSON-array `value` shape. Bfcache/autofill can reach this on a name-bearing
8334
- // form control even with aria-hidden/tabindex=-1.
8335
- if (this.multiSelect) return;
8375
+ // form control even with aria-hidden/tabindex=-1, so revert to the expected
8376
+ // mirror (formattedValue[0]) rather than letting the native select drift and
8377
+ // silently submit the autofilled scalar under `name`.
8378
+ if (this.multiSelect) {
8379
+ this._updateNativeSelect();
8380
+ return;
8381
+ }
8336
8382
 
8337
8383
  const selectedOption = event.target.options[event.target.selectedIndex];
8338
8384
  if (!selectedOption) return;