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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/components/checkbox/demo/customize.min.js +7 -3
  2. package/components/checkbox/demo/getting-started.min.js +7 -3
  3. package/components/checkbox/demo/index.min.js +7 -3
  4. package/components/checkbox/dist/index.js +7 -3
  5. package/components/checkbox/dist/registered.js +7 -3
  6. package/components/combobox/demo/customize.min.js +139 -21
  7. package/components/combobox/demo/getting-started.min.js +139 -21
  8. package/components/combobox/demo/index.min.js +139 -21
  9. package/components/combobox/dist/auro-combobox.d.ts +14 -0
  10. package/components/combobox/dist/index.js +47 -9
  11. package/components/combobox/dist/registered.js +47 -9
  12. package/components/counter/demo/customize.min.js +8 -4
  13. package/components/counter/demo/getting-started.min.js +8 -4
  14. package/components/counter/demo/index.min.js +8 -4
  15. package/components/counter/dist/index.js +8 -4
  16. package/components/counter/dist/registered.js +8 -4
  17. package/components/datepicker/demo/customize.min.js +15 -7
  18. package/components/datepicker/demo/getting-started.min.js +15 -7
  19. package/components/datepicker/demo/index.min.js +15 -7
  20. package/components/datepicker/dist/index.js +15 -7
  21. package/components/datepicker/dist/registered.js +15 -7
  22. package/components/dropdown/demo/customize.min.js +1 -1
  23. package/components/dropdown/demo/getting-started.min.js +8 -4
  24. package/components/dropdown/demo/index.min.js +1 -1
  25. package/components/dropdown/dist/index.js +1 -1
  26. package/components/dropdown/dist/registered.js +1 -1
  27. package/components/form/demo/customize.min.js +201 -54
  28. package/components/form/demo/getting-started.min.js +201 -54
  29. package/components/form/demo/index.min.js +201 -54
  30. package/components/form/demo/registerDemoDeps.min.js +201 -54
  31. package/components/input/demo/customize.min.js +7 -3
  32. package/components/input/demo/getting-started.min.js +7 -3
  33. package/components/input/demo/index.min.js +7 -3
  34. package/components/input/dist/index.js +7 -3
  35. package/components/input/dist/registered.js +7 -3
  36. package/components/menu/demo/api.md +1 -1
  37. package/components/menu/demo/index.min.js +92 -12
  38. package/components/menu/dist/auro-menu-utils.d.ts +15 -2
  39. package/components/menu/dist/auro-menu.d.ts +1 -1
  40. package/components/menu/dist/index.js +92 -12
  41. package/components/menu/dist/registered.js +92 -12
  42. package/components/radio/demo/customize.min.js +7 -3
  43. package/components/radio/demo/getting-started.min.js +7 -3
  44. package/components/radio/demo/index.min.js +7 -3
  45. package/components/radio/dist/index.js +7 -3
  46. package/components/radio/dist/registered.js +7 -3
  47. package/components/select/demo/customize.min.js +110 -25
  48. package/components/select/demo/getting-started.min.js +110 -25
  49. package/components/select/demo/index.min.js +110 -25
  50. package/components/select/dist/index.js +18 -13
  51. package/components/select/dist/registered.js +18 -13
  52. package/custom-elements.json +1547 -1500
  53. package/package.json +1 -1
@@ -475,7 +475,11 @@ let AuroFormValidation$1 = class AuroFormValidation {
475
475
  ( elem.touched || (!elem.touched && typeof elem.value !== "undefined") )
476
476
  );
477
477
 
478
- if (elem.hasAttribute('error')) {
478
+ // auro-counter-group derives its error state solely from its child counters,
479
+ // so an `error` attribute on the group itself is ignored.
480
+ const hasCustomError = elem.hasAttribute('error') && !this.runtimeUtils.elementMatch(elem, 'auro-counter-group');
481
+
482
+ if (hasCustomError) {
479
483
  elem.validity = 'customError';
480
484
  elem.errorMessage = elem.setCustomValidityCustomError || elem.error || elem.setCustomValidity || '';
481
485
  validationShouldRun = false;
@@ -570,7 +574,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
570
574
  }
571
575
  }
572
576
 
573
- if (validationShouldRun || elem.hasAttribute('error')) {
577
+ if (validationShouldRun || hasCustomError) {
574
578
  // Use the validity message override if it is declared
575
579
  if (elem.validity && elem.validity !== 'valid' && elem.ValidityMessageOverride) {
576
580
  elem.errorMessage = elem.ValidityMessageOverride;
@@ -5123,7 +5127,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
5123
5127
  }
5124
5128
  };
5125
5129
 
5126
- var formkitVersion$2 = '202610051839';
5130
+ var formkitVersion$2 = '202610071520';
5127
5131
 
5128
5132
  /**
5129
5133
  * AuroElement is the shared base class for layout-aware Auro form components.
@@ -11012,7 +11016,11 @@ class AuroFormValidation {
11012
11016
  ( elem.touched || (!elem.touched && typeof elem.value !== "undefined") )
11013
11017
  );
11014
11018
 
11015
- if (elem.hasAttribute('error')) {
11019
+ // auro-counter-group derives its error state solely from its child counters,
11020
+ // so an `error` attribute on the group itself is ignored.
11021
+ const hasCustomError = elem.hasAttribute('error') && !this.runtimeUtils.elementMatch(elem, 'auro-counter-group');
11022
+
11023
+ if (hasCustomError) {
11016
11024
  elem.validity = 'customError';
11017
11025
  elem.errorMessage = elem.setCustomValidityCustomError || elem.error || elem.setCustomValidity || '';
11018
11026
  validationShouldRun = false;
@@ -11107,7 +11115,7 @@ class AuroFormValidation {
11107
11115
  }
11108
11116
  }
11109
11117
 
11110
- if (validationShouldRun || elem.hasAttribute('error')) {
11118
+ if (validationShouldRun || hasCustomError) {
11111
11119
  // Use the validity message override if it is declared
11112
11120
  if (elem.validity && elem.validity !== 'valid' && elem.ValidityMessageOverride) {
11113
11121
  elem.errorMessage = elem.ValidityMessageOverride;
@@ -18992,7 +19000,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18992
19000
  }
18993
19001
  };
18994
19002
 
18995
- var formkitVersion$1 = '202610051839';
19003
+ var formkitVersion$1 = '202610071520';
18996
19004
 
18997
19005
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18998
19006
  // See LICENSE in the project root for license information.
@@ -20208,7 +20216,7 @@ class AuroBibtemplate extends i$3 {
20208
20216
  }
20209
20217
  }
20210
20218
 
20211
- var formkitVersion = '202610051839';
20219
+ var formkitVersion = '202610071520';
20212
20220
 
20213
20221
  var styleCss$3 = i$6`.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}`;
20214
20222
 
@@ -21181,13 +21189,43 @@ class AuroCombobox extends AuroElement {
21181
21189
  AuroLibraryRuntimeUtils$4.prototype.registerComponent(name, AuroCombobox);
21182
21190
  }
21183
21191
 
21192
+ /**
21193
+ * Checks whether an option's own `disabled` or any ancestor `auro-menu`'s
21194
+ * `disabled` (root or a nested submenu the option is slotted inside)
21195
+ * applies. A menu never writes `disabled` onto its options (AB#1566578),
21196
+ * so an ancestor's disabled state has to be resolved at check-time by
21197
+ * walking up, mirroring `auro-menu`'s own `isOptionInteractive()`/
21198
+ * `isSelectableByValue()` — duplicated here rather than imported since
21199
+ * `auro-combobox` only ever talks to `auro-menu` through its public DOM
21200
+ * contract, not its internal module.
21201
+ * @private
21202
+ * @param {HTMLElement} option - The option to check.
21203
+ * @returns {boolean} True if the option or any ancestor menu is disabled.
21204
+ */
21205
+ isOptionOrAncestorMenuDisabled(option) {
21206
+ if (option.disabled) {
21207
+ return true;
21208
+ }
21209
+
21210
+ let ancestor = option.closest('auro-menu, [auro-menu]');
21211
+
21212
+ while (ancestor) {
21213
+ if (ancestor.disabled) {
21214
+ return true;
21215
+ }
21216
+ ancestor = ancestor.parentElement ? ancestor.parentElement.closest('auro-menu, [auro-menu]') : null;
21217
+ }
21218
+
21219
+ return false;
21220
+ }
21221
+
21184
21222
  /**
21185
21223
  * Mark the first available (non-hidden), enabled option as `active`.
21186
21224
  * @private
21187
21225
  * @returns {void}
21188
21226
  */
21189
21227
  activateFirstEnabledAvailableOption() {
21190
- const firstEnabledOptionIndex = this.availableOptions.findIndex((opt) => !opt.disabled && !opt.hasAttribute('nomatch'));
21228
+ const firstEnabledOptionIndex = this.availableOptions.findIndex((opt) => !this.isOptionOrAncestorMenuDisabled(opt) && !opt.hasAttribute('nomatch'));
21191
21229
  this.updateActiveOption(firstEnabledOptionIndex);
21192
21230
  }
21193
21231
 
@@ -21201,7 +21239,7 @@ class AuroCombobox extends AuroElement {
21201
21239
 
21202
21240
  // Work backwards through the available options array to find the last enabled option
21203
21241
  for (let index = this.availableOptions.length - 1; index >= 0; index -= 1) {
21204
- if (!this.availableOptions[index].disabled && !this.availableOptions[index].hasAttribute('nomatch')) {
21242
+ if (!this.isOptionOrAncestorMenuDisabled(this.availableOptions[index]) && !this.availableOptions[index].hasAttribute('nomatch')) {
21205
21243
  lastEnabledOptionIndex = index;
21206
21244
  break;
21207
21245
  }
@@ -22782,9 +22820,9 @@ class AuroCombobox extends AuroElement {
22782
22820
  }
22783
22821
  }
22784
22822
 
22785
- var styleCss$1 = i$6`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-variant-ligatures:none;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-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-variant-ligatures:none;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-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-variant-ligatures:none;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-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-variant-ligatures:none;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-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-variant-ligatures:none;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-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-variant-ligatures:none;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-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-variant-ligatures:none;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-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-variant-ligatures:none;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-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-variant-ligatures:none;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-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-variant-ligatures:none;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-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-variant-ligatures:none;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-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-variant-ligatures:none;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-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-variant-ligatures:none;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-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-variant-ligatures:none;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-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-variant-ligatures:none;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-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-variant-ligatures:none;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-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-variant-ligatures:none;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-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-variant-ligatures:none;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-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-variant-ligatures:none;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-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-variant-ligatures:none;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-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-variant-ligatures:none;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-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-variant-ligatures:none;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-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-variant-ligatures:none;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-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-variant-ligatures:none;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-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-variant-ligatures:none;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-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-variant-ligatures:none;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-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-variant-ligatures:none;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-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-variant-ligatures:none;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-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-variant-ligatures:none;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-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{display:block;line-height:0;overflow-y:auto}:host .menuWrapper{box-sizing:border-box;display:flex;flex-direction:column;width:100%;margin:0;padding:0}:host ::slotted(hr){box-sizing:content-box !important;height:0 !important;overflow:visible !important;margin:var(--ds-size-100, 0.5rem) 0 !important;border-width:0 !important;border-top-width:1px !important;border-top-style:solid !important}:host [loadingplaceholder]{padding:var(--ds-size-150, 0.75rem) 0}:host [loadingplaceholder].empty{opacity:0;position:absolute}:host [loadingplaceholder] .loadingWrapper{display:flex;align-items:center;justify-content:center;gap:var(--ds-size-150, 0.75rem)}:host([root]) .menuWrapper.lg{padding:var(--ds-size-150, 0.75rem);gap:var(--ds-size-50, 0.25rem)}:host([root]) .menuWrapper.xl{padding:var(--ds-size-200, 1rem);gap:var(--ds-size-100, 0.5rem)}`;
22823
+ var styleCss$1 = i$6`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-variant-ligatures:none;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-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-variant-ligatures:none;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-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-variant-ligatures:none;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-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-variant-ligatures:none;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-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-variant-ligatures:none;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-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-variant-ligatures:none;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-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-variant-ligatures:none;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-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-variant-ligatures:none;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-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-variant-ligatures:none;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-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-variant-ligatures:none;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-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-variant-ligatures:none;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-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-variant-ligatures:none;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-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-variant-ligatures:none;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-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-variant-ligatures:none;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-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-variant-ligatures:none;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-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-variant-ligatures:none;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-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-variant-ligatures:none;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-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-variant-ligatures:none;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-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-variant-ligatures:none;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-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-variant-ligatures:none;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-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-variant-ligatures:none;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-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-variant-ligatures:none;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-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-variant-ligatures:none;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-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-variant-ligatures:none;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-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-variant-ligatures:none;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-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-variant-ligatures:none;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-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-variant-ligatures:none;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-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-variant-ligatures:none;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-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-variant-ligatures:none;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-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{display:block;line-height:0;overflow-y:auto}:host .menuWrapper{box-sizing:border-box;display:flex;flex-direction:column;width:100%;margin:0;padding:0}:host ::slotted(hr){box-sizing:content-box !important;height:0 !important;overflow:visible !important;margin:var(--ds-size-100, 0.5rem) 0 !important;border-width:0 !important;border-top-width:1px !important;border-top-style:solid !important}:host [loadingplaceholder]{padding:var(--ds-size-150, 0.75rem) 0}:host [loadingplaceholder].empty{opacity:0;position:absolute}:host [loadingplaceholder] .loadingWrapper{display:flex;align-items:center;justify-content:center;gap:var(--ds-size-150, 0.75rem)}:host([root]) .menuWrapper.lg{padding:var(--ds-size-150, 0.75rem);gap:var(--ds-size-50, 0.25rem)}:host([root]) .menuWrapper.xl{padding:var(--ds-size-200, 1rem);gap:var(--ds-size-100, 0.5rem)}:host([disabled]) .menuWrapper{pointer-events:none}`;
22786
22824
 
22787
- var colorCss$1 = i$6`:host ::slotted(hr){border-top-color:var(--ds-auro-menu-divider-color)}[loadingplaceholder] slot[name=loadingIcon]{color:var(--ds-auro-menu-loader-color)}[loadingplaceholder] slot[name=loadingText]{color:var(--ds-auro-menu-loader-text-color)}`;
22825
+ var colorCss$1 = i$6`:host ::slotted(hr){border-top-color:var(--ds-auro-menu-divider-color)}[loadingplaceholder] slot[name=loadingIcon]{color:var(--ds-auro-menu-loader-color)}[loadingplaceholder] slot[name=loadingText]{color:var(--ds-auro-menu-loader-text-color)}:host([disabled]){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-menuoption-icon-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host([disabled]) ::slotted(auro-menuoption),:host([disabled]) ::slotted([auro-menuoption]){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-default, #ffffff) !important;--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0) !important;--ds-auro-menuoption-icon-color: var(--ds-basic-color-texticon-disabled, #d0d0d0) !important}`;
22788
22826
 
22789
22827
  var tokensCss = i$6`:host{--ds-auro-menu-divider-color: var(--ds-basic-color-border-divider, rgba(0, 0, 0, 0.15));--ds-auro-menu-loader-color: var(--ds-basic-color-brand-primary, #01426a);--ds-auro-menu-loader-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-menuoption-container-color: transparent;--ds-auro-menuoption-container-border-color: var(--ds-auro-menuoption-container-color);--ds-auro-menuoption-icon-color: transparent;--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}`;
22790
22828
 
@@ -22804,6 +22842,31 @@ function serializeMultiSelectValue(values) {
22804
22842
  return values && values.length > 0 ? JSON.stringify(values) : undefined;
22805
22843
  }
22806
22844
 
22845
+ /**
22846
+ * Walks up through every ancestor `auro-menu` (root and any nested submenus
22847
+ * the option is slotted inside) and checks whether any of them is disabled.
22848
+ * A menu's `disabled` is never written onto its options (AB#1566578), so an
22849
+ * option's interactivity must be resolved at check-time against its owning
22850
+ * menu chain instead of a mutated attribute. Exported so every "is this
22851
+ * option interactive" check agrees — `auro-menuoption`'s `isActive` getter
22852
+ * uses it too (consumed by `auro-select`/`auro-combobox`), not just this
22853
+ * module's own `isOptionInteractive`/`isSelectableByValue`.
22854
+ * @param {HTMLElement} option - The option to check.
22855
+ * @returns {boolean} True if any ancestor menu (root or nested) is disabled.
22856
+ */
22857
+ function hasDisabledAncestorMenu(option) {
22858
+ let ancestor = option.closest('auro-menu, [auro-menu]');
22859
+
22860
+ while (ancestor) {
22861
+ if (ancestor.disabled) {
22862
+ return true;
22863
+ }
22864
+ ancestor = ancestor.parentElement ? ancestor.parentElement.closest('auro-menu, [auro-menu]') : null;
22865
+ }
22866
+
22867
+ return false;
22868
+ }
22869
+
22807
22870
  /**
22808
22871
  * Validates if an option can be interacted with.
22809
22872
  * @private
@@ -22813,21 +22876,23 @@ function serializeMultiSelectValue(values) {
22813
22876
  function isOptionInteractive(option) {
22814
22877
  return !option.hasAttribute('hidden') &&
22815
22878
  !option.hasAttribute('disabled') &&
22816
- !option.hasAttribute('static');
22879
+ !option.hasAttribute('static') &&
22880
+ !hasDisabledAncestorMenu(option);
22817
22881
  }
22818
22882
 
22819
22883
  /**
22820
22884
  * Validates if an option may be selected by matching a programmatic value.
22821
22885
  * Unlike `isOptionInteractive`, `hidden` is allowed: the combobox toggles
22822
22886
  * `hidden` as its type-ahead filter, so a filtered-out option is still a
22823
- * valid programmatic selection. Only disabled and static options — which are
22824
- * never selectable — are rejected.
22887
+ * valid programmatic selection. Disabled (its own or an ancestor menu's) and
22888
+ * static options — which are never selectable — are rejected.
22825
22889
  * @param {HTMLElement} option - The option to check.
22826
22890
  * @returns {boolean} True if option can be selected by value.
22827
22891
  */
22828
22892
  function isSelectableByValue(option) {
22829
22893
  return !option.hasAttribute('disabled') &&
22830
- !option.hasAttribute('static');
22894
+ !option.hasAttribute('static') &&
22895
+ !hasDisabledAncestorMenu(option);
22831
22896
  }
22832
22897
 
22833
22898
  /* eslint-disable no-underscore-dangle */
@@ -23109,7 +23174,7 @@ class AuroMenu extends AuroElement {
23109
23174
  },
23110
23175
 
23111
23176
  /**
23112
- * When true, the entire menu and all options are disabled.
23177
+ * When true, the entire menu is disabled: options render inert (not focusable, keyboard-navigable, or selectable, and visually disabled) without changing any option's own `disabled` state.
23113
23178
  */
23114
23179
  disabled: {
23115
23180
  type: Boolean,
@@ -23681,9 +23746,21 @@ class AuroMenu extends AuroElement {
23681
23746
  }
23682
23747
  }
23683
23748
 
23684
- // Update disabled state
23749
+ // Announce menu-level disabled to assistive tech. `disabled` is never
23750
+ // written onto the option (AB#1566578), but aria-disabled has to be
23751
+ // pushed proactively — unlike interactivity checks, AT reads it
23752
+ // directly off the DOM rather than through a JS getter. Only clear it
23753
+ // on re-enable when the option isn't itself authored `disabled` AND no
23754
+ // other ancestor menu in its chain is still disabled — `this.items` is
23755
+ // a deep query, so toggling an unrelated root back on must not strip
23756
+ // aria-disabled from a nested submenu's options that are still
23757
+ // independently disabled.
23685
23758
  if (changedProperties.has('disabled')) {
23686
- option.disabled = this.disabled;
23759
+ if (this.disabled) {
23760
+ option.setAttribute('aria-disabled', 'true');
23761
+ } else if (!option.disabled && !hasDisabledAncestorMenu(option)) {
23762
+ option.removeAttribute('aria-disabled');
23763
+ }
23687
23764
  }
23688
23765
  });
23689
23766
 
@@ -23747,6 +23824,22 @@ class AuroMenu extends AuroElement {
23747
23824
  ]));
23748
23825
  }
23749
23826
 
23827
+ // Options slotted in (or re-initialized) while the menu is already
23828
+ // disabled never went through the `disabled`-change branch that pushes
23829
+ // `aria-disabled` (AB#1566578) — re-apply it here the same way
23830
+ // `noCheckmark` already re-applies above. Only the `true` case needs
23831
+ // replaying: re-enabling the menu already clears existing items via the
23832
+ // normal `disabled`-change path, and a newly-added item that isn't
23833
+ // disabled has no `aria-disabled` to clear yet.
23834
+ if (this.disabled) {
23835
+ this.updateItemsState(new Map([
23836
+ [
23837
+ 'disabled',
23838
+ true
23839
+ ]
23840
+ ]));
23841
+ }
23842
+
23750
23843
  this.dispatchEvent(new CustomEvent('auroMenu-optionsChange', {
23751
23844
  detail: {
23752
23845
  options: this.items
@@ -23984,6 +24077,13 @@ class AuroMenu extends AuroElement {
23984
24077
  * @private
23985
24078
  */
23986
24079
  makeSelection() {
24080
+ // A disabled menu is inert — called directly by auro-select/auro-combobox
24081
+ // keyboard strategies as well as this menu's own handleKeyDown, so the
24082
+ // guard lives here rather than only at the keydown entry point.
24083
+ if (this.disabled) {
24084
+ return;
24085
+ }
24086
+
23987
24087
  if (!this.items) {
23988
24088
  this.initItems();
23989
24089
  }
@@ -24102,6 +24202,15 @@ class AuroMenu extends AuroElement {
24102
24202
  */
24103
24203
  handleOptionHover(event) {
24104
24204
  const option = event.detail;
24205
+
24206
+ // `pointer-events: none` normally keeps a real hover from ever reaching
24207
+ // a disabled-ancestor option, but this guard protects the few paths
24208
+ // that don't rely on pointer hit-testing (a synthetic `mouseover`
24209
+ // dispatch, test automation) from still activating it.
24210
+ if (!option || !isOptionInteractive(option)) {
24211
+ return;
24212
+ }
24213
+
24105
24214
  if (this.items) {
24106
24215
  const idx = this.items.indexOf(option);
24107
24216
  if (idx >= 0) {
@@ -24139,6 +24248,11 @@ class AuroMenu extends AuroElement {
24139
24248
  * @param {string} direction - 'up' or 'down'.
24140
24249
  */
24141
24250
  navigateOptions(direction) {
24251
+ // A disabled menu is inert — no option becomes active via keyboard.
24252
+ if (this.disabled) {
24253
+ return;
24254
+ }
24255
+
24142
24256
  // Return early if no items exist
24143
24257
  if (!this.items || !this.items.length) {
24144
24258
  return;
@@ -24527,7 +24641,8 @@ class AuroMenuOption extends AuroElement {
24527
24641
  get isActive() {
24528
24642
  return !this.hasAttribute('hidden') &&
24529
24643
  !this.disabled &&
24530
- !this.hasAttribute('static');
24644
+ !this.hasAttribute('static') &&
24645
+ !hasDisabledAncestorMenu(this);
24531
24646
  }
24532
24647
 
24533
24648
  connectedCallback() {
@@ -24578,7 +24693,10 @@ class AuroMenuOption extends AuroElement {
24578
24693
  if (changedProperties.has('disabled')) {
24579
24694
  if (this.disabled) {
24580
24695
  this.setAttribute('aria-disabled', 'true');
24581
- } else {
24696
+ } else if (!hasDisabledAncestorMenu(this)) {
24697
+ // Authored `disabled` just turned off, but if an ancestor menu is
24698
+ // still disabled (AB#1566578) this option is still inert — don't
24699
+ // clear the announcement a still-disabled ancestor is responsible for.
24582
24700
  this.removeAttribute('aria-disabled');
24583
24701
  }
24584
24702
  }
@@ -24610,7 +24728,7 @@ class AuroMenuOption extends AuroElement {
24610
24728
  * @private
24611
24729
  */
24612
24730
  handleClick() {
24613
- if (!this.disabled) {
24731
+ if (!this.disabled && !hasDisabledAncestorMenu(this)) {
24614
24732
  // Pure event emitter: the parent menu owns selection state and will
24615
24733
  // update `selected` via setSelected(). Toggling here desyncs the option
24616
24734
  // UI from auro-menu.optionSelected (e.g. single-select re-click on the
@@ -407,6 +407,20 @@ export class AuroCombobox extends AuroElement {
407
407
  * @returns {boolean} - Returns true if the element is valid, false otherwise.
408
408
  */
409
409
  isValid(): boolean;
410
+ /**
411
+ * Checks whether an option's own `disabled` or any ancestor `auro-menu`'s
412
+ * `disabled` (root or a nested submenu the option is slotted inside)
413
+ * applies. A menu never writes `disabled` onto its options (AB#1566578),
414
+ * so an ancestor's disabled state has to be resolved at check-time by
415
+ * walking up, mirroring `auro-menu`'s own `isOptionInteractive()`/
416
+ * `isSelectableByValue()` — duplicated here rather than imported since
417
+ * `auro-combobox` only ever talks to `auro-menu` through its public DOM
418
+ * contract, not its internal module.
419
+ * @private
420
+ * @param {HTMLElement} option - The option to check.
421
+ * @returns {boolean} True if the option or any ancestor menu is disabled.
422
+ */
423
+ private isOptionOrAncestorMenuDisabled;
410
424
  /**
411
425
  * Mark the first available (non-hidden), enabled option as `active`.
412
426
  * @private
@@ -423,7 +423,11 @@ let AuroFormValidation$1 = class AuroFormValidation {
423
423
  ( elem.touched || (!elem.touched && typeof elem.value !== "undefined") )
424
424
  );
425
425
 
426
- if (elem.hasAttribute('error')) {
426
+ // auro-counter-group derives its error state solely from its child counters,
427
+ // so an `error` attribute on the group itself is ignored.
428
+ const hasCustomError = elem.hasAttribute('error') && !this.runtimeUtils.elementMatch(elem, 'auro-counter-group');
429
+
430
+ if (hasCustomError) {
427
431
  elem.validity = 'customError';
428
432
  elem.errorMessage = elem.setCustomValidityCustomError || elem.error || elem.setCustomValidity || '';
429
433
  validationShouldRun = false;
@@ -518,7 +522,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
518
522
  }
519
523
  }
520
524
 
521
- if (validationShouldRun || elem.hasAttribute('error')) {
525
+ if (validationShouldRun || hasCustomError) {
522
526
  // Use the validity message override if it is declared
523
527
  if (elem.validity && elem.validity !== 'valid' && elem.ValidityMessageOverride) {
524
528
  elem.errorMessage = elem.ValidityMessageOverride;
@@ -5041,7 +5045,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
5041
5045
  }
5042
5046
  };
5043
5047
 
5044
- var formkitVersion$2 = '202610051839';
5048
+ var formkitVersion$2 = '202610071520';
5045
5049
 
5046
5050
  /**
5047
5051
  * AuroElement is the shared base class for layout-aware Auro form components.
@@ -10923,7 +10927,11 @@ class AuroFormValidation {
10923
10927
  ( elem.touched || (!elem.touched && typeof elem.value !== "undefined") )
10924
10928
  );
10925
10929
 
10926
- if (elem.hasAttribute('error')) {
10930
+ // auro-counter-group derives its error state solely from its child counters,
10931
+ // so an `error` attribute on the group itself is ignored.
10932
+ const hasCustomError = elem.hasAttribute('error') && !this.runtimeUtils.elementMatch(elem, 'auro-counter-group');
10933
+
10934
+ if (hasCustomError) {
10927
10935
  elem.validity = 'customError';
10928
10936
  elem.errorMessage = elem.setCustomValidityCustomError || elem.error || elem.setCustomValidity || '';
10929
10937
  validationShouldRun = false;
@@ -11018,7 +11026,7 @@ class AuroFormValidation {
11018
11026
  }
11019
11027
  }
11020
11028
 
11021
- if (validationShouldRun || elem.hasAttribute('error')) {
11029
+ if (validationShouldRun || hasCustomError) {
11022
11030
  // Use the validity message override if it is declared
11023
11031
  if (elem.validity && elem.validity !== 'valid' && elem.ValidityMessageOverride) {
11024
11032
  elem.errorMessage = elem.ValidityMessageOverride;
@@ -18903,7 +18911,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
18903
18911
  }
18904
18912
  };
18905
18913
 
18906
- var formkitVersion$1 = '202610051839';
18914
+ var formkitVersion$1 = '202610071520';
18907
18915
 
18908
18916
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18909
18917
  // See LICENSE in the project root for license information.
@@ -20119,7 +20127,7 @@ class AuroBibtemplate extends LitElement {
20119
20127
  }
20120
20128
  }
20121
20129
 
20122
- var formkitVersion = '202610051839';
20130
+ var formkitVersion = '202610071520';
20123
20131
 
20124
20132
  var styleCss$1 = 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}: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}`;
20125
20133
 
@@ -21092,13 +21100,43 @@ class AuroCombobox extends AuroElement {
21092
21100
  AuroLibraryRuntimeUtils$4.prototype.registerComponent(name, AuroCombobox);
21093
21101
  }
21094
21102
 
21103
+ /**
21104
+ * Checks whether an option's own `disabled` or any ancestor `auro-menu`'s
21105
+ * `disabled` (root or a nested submenu the option is slotted inside)
21106
+ * applies. A menu never writes `disabled` onto its options (AB#1566578),
21107
+ * so an ancestor's disabled state has to be resolved at check-time by
21108
+ * walking up, mirroring `auro-menu`'s own `isOptionInteractive()`/
21109
+ * `isSelectableByValue()` — duplicated here rather than imported since
21110
+ * `auro-combobox` only ever talks to `auro-menu` through its public DOM
21111
+ * contract, not its internal module.
21112
+ * @private
21113
+ * @param {HTMLElement} option - The option to check.
21114
+ * @returns {boolean} True if the option or any ancestor menu is disabled.
21115
+ */
21116
+ isOptionOrAncestorMenuDisabled(option) {
21117
+ if (option.disabled) {
21118
+ return true;
21119
+ }
21120
+
21121
+ let ancestor = option.closest('auro-menu, [auro-menu]');
21122
+
21123
+ while (ancestor) {
21124
+ if (ancestor.disabled) {
21125
+ return true;
21126
+ }
21127
+ ancestor = ancestor.parentElement ? ancestor.parentElement.closest('auro-menu, [auro-menu]') : null;
21128
+ }
21129
+
21130
+ return false;
21131
+ }
21132
+
21095
21133
  /**
21096
21134
  * Mark the first available (non-hidden), enabled option as `active`.
21097
21135
  * @private
21098
21136
  * @returns {void}
21099
21137
  */
21100
21138
  activateFirstEnabledAvailableOption() {
21101
- const firstEnabledOptionIndex = this.availableOptions.findIndex((opt) => !opt.disabled && !opt.hasAttribute('nomatch'));
21139
+ const firstEnabledOptionIndex = this.availableOptions.findIndex((opt) => !this.isOptionOrAncestorMenuDisabled(opt) && !opt.hasAttribute('nomatch'));
21102
21140
  this.updateActiveOption(firstEnabledOptionIndex);
21103
21141
  }
21104
21142
 
@@ -21112,7 +21150,7 @@ class AuroCombobox extends AuroElement {
21112
21150
 
21113
21151
  // Work backwards through the available options array to find the last enabled option
21114
21152
  for (let index = this.availableOptions.length - 1; index >= 0; index -= 1) {
21115
- if (!this.availableOptions[index].disabled && !this.availableOptions[index].hasAttribute('nomatch')) {
21153
+ if (!this.isOptionOrAncestorMenuDisabled(this.availableOptions[index]) && !this.availableOptions[index].hasAttribute('nomatch')) {
21116
21154
  lastEnabledOptionIndex = index;
21117
21155
  break;
21118
21156
  }
@@ -423,7 +423,11 @@ let AuroFormValidation$1 = class AuroFormValidation {
423
423
  ( elem.touched || (!elem.touched && typeof elem.value !== "undefined") )
424
424
  );
425
425
 
426
- if (elem.hasAttribute('error')) {
426
+ // auro-counter-group derives its error state solely from its child counters,
427
+ // so an `error` attribute on the group itself is ignored.
428
+ const hasCustomError = elem.hasAttribute('error') && !this.runtimeUtils.elementMatch(elem, 'auro-counter-group');
429
+
430
+ if (hasCustomError) {
427
431
  elem.validity = 'customError';
428
432
  elem.errorMessage = elem.setCustomValidityCustomError || elem.error || elem.setCustomValidity || '';
429
433
  validationShouldRun = false;
@@ -518,7 +522,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
518
522
  }
519
523
  }
520
524
 
521
- if (validationShouldRun || elem.hasAttribute('error')) {
525
+ if (validationShouldRun || hasCustomError) {
522
526
  // Use the validity message override if it is declared
523
527
  if (elem.validity && elem.validity !== 'valid' && elem.ValidityMessageOverride) {
524
528
  elem.errorMessage = elem.ValidityMessageOverride;
@@ -5041,7 +5045,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
5041
5045
  }
5042
5046
  };
5043
5047
 
5044
- var formkitVersion$2 = '202610051839';
5048
+ var formkitVersion$2 = '202610071520';
5045
5049
 
5046
5050
  /**
5047
5051
  * AuroElement is the shared base class for layout-aware Auro form components.
@@ -10923,7 +10927,11 @@ class AuroFormValidation {
10923
10927
  ( elem.touched || (!elem.touched && typeof elem.value !== "undefined") )
10924
10928
  );
10925
10929
 
10926
- if (elem.hasAttribute('error')) {
10930
+ // auro-counter-group derives its error state solely from its child counters,
10931
+ // so an `error` attribute on the group itself is ignored.
10932
+ const hasCustomError = elem.hasAttribute('error') && !this.runtimeUtils.elementMatch(elem, 'auro-counter-group');
10933
+
10934
+ if (hasCustomError) {
10927
10935
  elem.validity = 'customError';
10928
10936
  elem.errorMessage = elem.setCustomValidityCustomError || elem.error || elem.setCustomValidity || '';
10929
10937
  validationShouldRun = false;
@@ -11018,7 +11026,7 @@ class AuroFormValidation {
11018
11026
  }
11019
11027
  }
11020
11028
 
11021
- if (validationShouldRun || elem.hasAttribute('error')) {
11029
+ if (validationShouldRun || hasCustomError) {
11022
11030
  // Use the validity message override if it is declared
11023
11031
  if (elem.validity && elem.validity !== 'valid' && elem.ValidityMessageOverride) {
11024
11032
  elem.errorMessage = elem.ValidityMessageOverride;
@@ -18903,7 +18911,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
18903
18911
  }
18904
18912
  };
18905
18913
 
18906
- var formkitVersion$1 = '202610051839';
18914
+ var formkitVersion$1 = '202610071520';
18907
18915
 
18908
18916
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18909
18917
  // See LICENSE in the project root for license information.
@@ -20119,7 +20127,7 @@ class AuroBibtemplate extends LitElement {
20119
20127
  }
20120
20128
  }
20121
20129
 
20122
- var formkitVersion = '202610051839';
20130
+ var formkitVersion = '202610071520';
20123
20131
 
20124
20132
  var styleCss$1 = 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}: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}`;
20125
20133
 
@@ -21092,13 +21100,43 @@ class AuroCombobox extends AuroElement {
21092
21100
  AuroLibraryRuntimeUtils$4.prototype.registerComponent(name, AuroCombobox);
21093
21101
  }
21094
21102
 
21103
+ /**
21104
+ * Checks whether an option's own `disabled` or any ancestor `auro-menu`'s
21105
+ * `disabled` (root or a nested submenu the option is slotted inside)
21106
+ * applies. A menu never writes `disabled` onto its options (AB#1566578),
21107
+ * so an ancestor's disabled state has to be resolved at check-time by
21108
+ * walking up, mirroring `auro-menu`'s own `isOptionInteractive()`/
21109
+ * `isSelectableByValue()` — duplicated here rather than imported since
21110
+ * `auro-combobox` only ever talks to `auro-menu` through its public DOM
21111
+ * contract, not its internal module.
21112
+ * @private
21113
+ * @param {HTMLElement} option - The option to check.
21114
+ * @returns {boolean} True if the option or any ancestor menu is disabled.
21115
+ */
21116
+ isOptionOrAncestorMenuDisabled(option) {
21117
+ if (option.disabled) {
21118
+ return true;
21119
+ }
21120
+
21121
+ let ancestor = option.closest('auro-menu, [auro-menu]');
21122
+
21123
+ while (ancestor) {
21124
+ if (ancestor.disabled) {
21125
+ return true;
21126
+ }
21127
+ ancestor = ancestor.parentElement ? ancestor.parentElement.closest('auro-menu, [auro-menu]') : null;
21128
+ }
21129
+
21130
+ return false;
21131
+ }
21132
+
21095
21133
  /**
21096
21134
  * Mark the first available (non-hidden), enabled option as `active`.
21097
21135
  * @private
21098
21136
  * @returns {void}
21099
21137
  */
21100
21138
  activateFirstEnabledAvailableOption() {
21101
- const firstEnabledOptionIndex = this.availableOptions.findIndex((opt) => !opt.disabled && !opt.hasAttribute('nomatch'));
21139
+ const firstEnabledOptionIndex = this.availableOptions.findIndex((opt) => !this.isOptionOrAncestorMenuDisabled(opt) && !opt.hasAttribute('nomatch'));
21102
21140
  this.updateActiveOption(firstEnabledOptionIndex);
21103
21141
  }
21104
21142
 
@@ -21112,7 +21150,7 @@ class AuroCombobox extends AuroElement {
21112
21150
 
21113
21151
  // Work backwards through the available options array to find the last enabled option
21114
21152
  for (let index = this.availableOptions.length - 1; index >= 0; index -= 1) {
21115
- if (!this.availableOptions[index].disabled && !this.availableOptions[index].hasAttribute('nomatch')) {
21153
+ if (!this.isOptionOrAncestorMenuDisabled(this.availableOptions[index]) && !this.availableOptions[index].hasAttribute('nomatch')) {
21116
21154
  lastEnabledOptionIndex = index;
21117
21155
  break;
21118
21156
  }