@aurodesignsystem/auro-formkit 1.6.0-beta.6 → 1.6.0-beta.7

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 (161) hide show
  1. package/.turbo/cache/01de6ab3df8b7e1e-meta.json +1 -0
  2. package/.turbo/cache/{754a6b5c5ce1ed00.tar.zst → 01de6ab3df8b7e1e.tar.zst} +0 -0
  3. package/.turbo/cache/10feda0f037804bb-meta.json +1 -1
  4. package/.turbo/cache/11079d2746265545-meta.json +1 -1
  5. package/.turbo/cache/11079d2746265545.tar.zst +0 -0
  6. package/.turbo/cache/115c4b73a12f5275-meta.json +1 -0
  7. package/.turbo/cache/115c4b73a12f5275.tar.zst +0 -0
  8. package/.turbo/cache/144e8e78657bf800-meta.json +1 -1
  9. package/.turbo/cache/18939b2c7c83b163-meta.json +1 -1
  10. package/.turbo/cache/1de685df0eaa39c8-meta.json +1 -1
  11. package/.turbo/cache/1ec139dcf090d547-meta.json +1 -1
  12. package/.turbo/cache/1f53ce3a28c56cdf-meta.json +1 -1
  13. package/.turbo/cache/23bf100310bd9f5a-meta.json +1 -1
  14. package/.turbo/cache/2900e7ec28e1488f-meta.json +1 -1
  15. package/.turbo/cache/296074aadfa2f8c9-meta.json +1 -1
  16. package/.turbo/cache/296074aadfa2f8c9.tar.zst +0 -0
  17. package/.turbo/cache/29e29355bf6fb4fd-meta.json +1 -1
  18. package/.turbo/cache/2cbcbc4a17387253-meta.json +1 -0
  19. package/.turbo/cache/2cbcbc4a17387253.tar.zst +0 -0
  20. package/.turbo/cache/2f6c898fbb51e995-meta.json +1 -1
  21. package/.turbo/cache/2f6c898fbb51e995.tar.zst +0 -0
  22. package/.turbo/cache/3073b96f6e4d867c-meta.json +1 -1
  23. package/.turbo/cache/33466ea2930c3714-meta.json +1 -1
  24. package/.turbo/cache/3426941a74b0731e-meta.json +1 -0
  25. package/.turbo/cache/{3f41d958c755a6f0.tar.zst → 3426941a74b0731e.tar.zst} +0 -0
  26. package/.turbo/cache/38b0799e2f7e62c5-meta.json +1 -0
  27. package/.turbo/cache/38b0799e2f7e62c5.tar.zst +0 -0
  28. package/.turbo/cache/3fbc89f461c495db-meta.json +1 -0
  29. package/.turbo/cache/3fbc89f461c495db.tar.zst +0 -0
  30. package/.turbo/cache/451e562c76f74ec6-meta.json +1 -1
  31. package/.turbo/cache/4520919609c97850-meta.json +1 -1
  32. package/.turbo/cache/452908d0b0b676bc-meta.json +1 -1
  33. package/.turbo/cache/48c197e39ed31fd2-meta.json +1 -1
  34. package/.turbo/cache/48c197e39ed31fd2.tar.zst +0 -0
  35. package/.turbo/cache/5058ecc7f1e34496-meta.json +1 -1
  36. package/.turbo/cache/5a66a99aa1344401-meta.json +1 -1
  37. package/.turbo/cache/5b66ce21630716cc-meta.json +1 -1
  38. package/.turbo/cache/6002b76d50b8d1ff-meta.json +1 -0
  39. package/.turbo/cache/6002b76d50b8d1ff.tar.zst +0 -0
  40. package/.turbo/cache/627e964e19b2bda5-meta.json +1 -0
  41. package/.turbo/cache/627e964e19b2bda5.tar.zst +0 -0
  42. package/.turbo/cache/6907ebaae4f3a96b-meta.json +1 -0
  43. package/.turbo/cache/6907ebaae4f3a96b.tar.zst +0 -0
  44. package/.turbo/cache/6f7175be597945f7-meta.json +1 -0
  45. package/.turbo/cache/6f7175be597945f7.tar.zst +0 -0
  46. package/.turbo/cache/70d7b72f15ee97a4-meta.json +1 -1
  47. package/.turbo/cache/7cfdc01c415c836c-meta.json +1 -0
  48. package/.turbo/cache/7cfdc01c415c836c.tar.zst +0 -0
  49. package/.turbo/cache/897b0d8a0c301207-meta.json +1 -1
  50. package/.turbo/cache/8b7cdb9a0d4c3112-meta.json +1 -1
  51. package/.turbo/cache/8e1f402b247ebed6-meta.json +1 -1
  52. package/.turbo/cache/8e1f402b247ebed6.tar.zst +0 -0
  53. package/.turbo/cache/90b8d9ccef5e09aa-meta.json +1 -1
  54. package/.turbo/cache/936bccb44ade3650-meta.json +1 -1
  55. package/.turbo/cache/94bcc4c6536ada9d-meta.json +1 -1
  56. package/.turbo/cache/990b9def0e83d33c-meta.json +1 -0
  57. package/.turbo/cache/990b9def0e83d33c.tar.zst +0 -0
  58. package/.turbo/cache/a532f4b8302ca13e-meta.json +1 -1
  59. package/.turbo/cache/a7bf477bbdabc7bc-meta.json +1 -1
  60. package/.turbo/cache/a90aa34f427a2f62-meta.json +1 -1
  61. package/.turbo/cache/aedda428051043c4-meta.json +1 -1
  62. package/.turbo/cache/afc38ab505ef6dbb-meta.json +1 -0
  63. package/.turbo/cache/{2ca214d032893e74.tar.zst → afc38ab505ef6dbb.tar.zst} +0 -0
  64. package/.turbo/cache/b1ed317b29e85c9d-meta.json +1 -0
  65. package/.turbo/cache/b1ed317b29e85c9d.tar.zst +0 -0
  66. package/.turbo/cache/b61416daf63fbaad-meta.json +1 -1
  67. package/.turbo/cache/b76edfbd1c076b0a-meta.json +1 -0
  68. package/.turbo/cache/b76edfbd1c076b0a.tar.zst +0 -0
  69. package/.turbo/cache/b9463532618cdc61-meta.json +1 -1
  70. package/.turbo/cache/bb3afea40c91e8ba-meta.json +1 -1
  71. package/.turbo/cache/c4df38a7e2cc767a-meta.json +1 -0
  72. package/.turbo/cache/{77bf3068f493ef24.tar.zst → c4df38a7e2cc767a.tar.zst} +0 -0
  73. package/.turbo/cache/c63dc7b6157da70b-meta.json +1 -1
  74. package/.turbo/cache/c8b63b6e8a190eb9-meta.json +1 -1
  75. package/.turbo/cache/d35b1eee9f2881af-meta.json +1 -1
  76. package/.turbo/cache/d5188c0fbe45d578-meta.json +1 -1
  77. package/.turbo/cache/e4b3ec56d4ae56ba-meta.json +1 -1
  78. package/.turbo/cache/e6f030eddf6fbf4e-meta.json +1 -1
  79. package/.turbo/cache/ff7e6d09efd93145-meta.json +1 -1
  80. package/.turbo/cache/ff7e6d09efd93145.tar.zst +0 -0
  81. package/CHANGELOG.md +19 -0
  82. package/components/checkbox/.turbo/turbo-build.log +3 -3
  83. package/components/checkbox/.turbo/turbo-bundler.log +3 -3
  84. package/components/combobox/.turbo/turbo-build.log +6 -3
  85. package/components/combobox/demo/api.html +1 -0
  86. package/components/combobox/demo/api.js +2 -0
  87. package/components/combobox/demo/api.md +73 -0
  88. package/components/combobox/demo/api.min.js +962 -835
  89. package/components/combobox/demo/index.min.js +920 -832
  90. package/components/combobox/dist/auro-combobox.d.ts +20 -0
  91. package/components/combobox/dist/auro-combobox.d.ts.map +1 -1
  92. package/components/combobox/dist/index.js +58 -22
  93. package/components/combobox/src/auro-combobox.js +58 -22
  94. package/components/counter/.turbo/turbo-build.log +2 -2
  95. package/components/counter/.turbo/turbo-bundler.log +3 -3
  96. package/components/datepicker/.turbo/turbo-build.log +2 -2
  97. package/components/dropdown/.turbo/turbo-build.log +3 -3
  98. package/components/dropdown/.turbo/turbo-bundler.log +3 -3
  99. package/components/form/.turbo/turbo-build.log +3 -3
  100. package/components/form/.turbo/turbo-bundler.log +3 -3
  101. package/components/input/.turbo/turbo-build.log +3 -3
  102. package/components/input/.turbo/turbo-bundler.log +3 -3
  103. package/components/menu/.turbo/turbo-build.log +6 -3
  104. package/components/menu/.turbo/turbo-bundler.log +3 -3
  105. package/components/menu/demo/api.html +2 -0
  106. package/components/menu/demo/api.js +2 -0
  107. package/components/menu/demo/api.md +164 -22
  108. package/components/menu/demo/api.min.js +912 -853
  109. package/components/menu/demo/index.min.js +905 -853
  110. package/components/menu/dist/auro-menu.d.ts +28 -2
  111. package/components/menu/dist/auro-menu.d.ts.map +1 -1
  112. package/components/menu/dist/auro-menuoption.d.ts +1 -1
  113. package/components/menu/dist/index.js +905 -853
  114. package/components/menu/src/auro-menu.js +57 -7
  115. package/components/menu/src/auro-menuoption.js +1 -1
  116. package/components/menu/src/styles/style-menu-css.js +1 -1
  117. package/components/menu/src/styles/style-menu.css +21 -3
  118. package/components/menu/src/styles/style-menu.scss +25 -3
  119. package/components/radio/.turbo/turbo-build.log +3 -3
  120. package/components/radio/.turbo/turbo-bundler.log +3 -3
  121. package/components/select/.turbo/turbo-build.log +6 -3
  122. package/components/select/demo/api.html +1 -0
  123. package/components/select/demo/api.js +2 -0
  124. package/components/select/demo/api.md +66 -0
  125. package/components/select/demo/api.min.js +927 -811
  126. package/components/select/demo/index.min.js +895 -811
  127. package/components/select/dist/auro-select.d.ts +19 -0
  128. package/components/select/dist/auro-select.d.ts.map +1 -1
  129. package/components/select/dist/index.js +32 -0
  130. package/components/select/src/auro-select.js +32 -0
  131. package/package.json +1 -1
  132. package/packages/build-tools/src/docProcessor.mjs +4 -4
  133. package/packages/build-tools/src/kitDocProcessor.mjs +4 -4
  134. package/.turbo/cache/05be1236a4cd5e72-meta.json +0 -1
  135. package/.turbo/cache/05be1236a4cd5e72.tar.zst +0 -0
  136. package/.turbo/cache/2ca214d032893e74-meta.json +0 -1
  137. package/.turbo/cache/3792d285b464b3e6-meta.json +0 -1
  138. package/.turbo/cache/3792d285b464b3e6.tar.zst +0 -0
  139. package/.turbo/cache/3ac4a22a21bdc2be-meta.json +0 -1
  140. package/.turbo/cache/3ac4a22a21bdc2be.tar.zst +0 -0
  141. package/.turbo/cache/3f41d958c755a6f0-meta.json +0 -1
  142. package/.turbo/cache/5d064e768a262314-meta.json +0 -1
  143. package/.turbo/cache/5d064e768a262314.tar.zst +0 -0
  144. package/.turbo/cache/6646f884a18a970a-meta.json +0 -1
  145. package/.turbo/cache/6646f884a18a970a.tar.zst +0 -0
  146. package/.turbo/cache/71212615220331ea-meta.json +0 -1
  147. package/.turbo/cache/71212615220331ea.tar.zst +0 -0
  148. package/.turbo/cache/754a6b5c5ce1ed00-meta.json +0 -1
  149. package/.turbo/cache/77bf3068f493ef24-meta.json +0 -1
  150. package/.turbo/cache/7ddb7ace73fe6ec2-meta.json +0 -1
  151. package/.turbo/cache/7ddb7ace73fe6ec2.tar.zst +0 -0
  152. package/.turbo/cache/9135f474c69d1b3c-meta.json +0 -1
  153. package/.turbo/cache/9135f474c69d1b3c.tar.zst +0 -0
  154. package/.turbo/cache/9a7ab914e08ce75f-meta.json +0 -1
  155. package/.turbo/cache/9a7ab914e08ce75f.tar.zst +0 -0
  156. package/.turbo/cache/aa68cd3545395c90-meta.json +0 -1
  157. package/.turbo/cache/aa68cd3545395c90.tar.zst +0 -0
  158. package/.turbo/cache/dce6f67be2b63c18-meta.json +0 -1
  159. package/.turbo/cache/dce6f67be2b63c18.tar.zst +0 -0
  160. package/.turbo/cache/e28ee527154c4cb2-meta.json +0 -1
  161. package/.turbo/cache/e28ee527154c4cb2.tar.zst +0 -0
@@ -117,6 +117,44 @@ function inDialogExample() {
117
117
  });
118
118
  }
119
119
 
120
+ function auroMenuLoadingExample() {
121
+ const combobox = document.querySelector("#loadingExample");
122
+ const menu = document.querySelector("#loadingExampleComboboxMenu");
123
+
124
+ const emptyMenu = () => {
125
+ const menuoptions = menu.querySelectorAll('auro-menuoption');
126
+ menuoptions.forEach(mo => menu.removeChild(mo));
127
+ };
128
+
129
+ const fillMenu = () => {
130
+ menu.innerHTML += `
131
+ <auro-menuoption value="Apples" id="option-0">Apples</auro-menuoption>
132
+ <auro-menuoption value="Oranges" id="option-1">Oranges</auro-menuoption>
133
+ <auro-menuoption value="Peaches" id="option-2">Peaches</auro-menuoption>
134
+ <auro-menuoption value="Grapes" id="option-3">Grapes</auro-menuoption>
135
+ <auro-menuoption value="Cherries" id="option-4">Cherries</auro-menuoption>
136
+ <auro-menuoption static nomatch>No matching option</auro-menuoption>
137
+ `;
138
+ };
139
+
140
+ const load = () => {
141
+ clearTimeout(load.id);
142
+ emptyMenu();
143
+ menu.setAttribute('loading', 'loading');
144
+ load.id = setTimeout(() => {
145
+ menu.removeAttribute('loading');
146
+ fillMenu();
147
+ }, 1000);
148
+
149
+ };
150
+
151
+ combobox.addEventListener("input", (e) => {
152
+ if (e.target.value && e.target.value !== e.target.optionSelected?.textContent) {
153
+ load();
154
+ }
155
+ });
156
+ }
157
+
120
158
  /**
121
159
  * @license
122
160
  * Copyright 2019 Google LLC
@@ -7353,6 +7391,11 @@ class AuroCombobox extends r$6 {
7353
7391
  */
7354
7392
  this.runtimeUtils = new AuroLibraryRuntimeUtils$2();
7355
7393
 
7394
+ /**
7395
+ * @private
7396
+ */
7397
+ this.isHiddenWhileLoading = false;
7398
+
7356
7399
  /**
7357
7400
  * Generate unique names for dependency components.
7358
7401
  */
@@ -7488,7 +7531,7 @@ class AuroCombobox extends r$6 {
7488
7531
  this.noMatchOption = undefined;
7489
7532
 
7490
7533
  this.options.forEach((option) => {
7491
- let matchString = option.innerText.toLowerCase();
7534
+ let matchString = option.textContent.toLowerCase();
7492
7535
 
7493
7536
  if (option.hasAttribute('nomatch')) {
7494
7537
  this.noMatchOption = option;
@@ -7564,8 +7607,12 @@ class AuroCombobox extends r$6 {
7564
7607
  return;
7565
7608
  }
7566
7609
  if (!this.dropdown.isPopoverVisible && this.input.value && this.input.value.length > 0) {
7567
- if ((this.availableOptions && this.availableOptions.length > 0) || this.noMatchOption !== undefined) { // eslint-disable-line no-extra-parens
7568
- this.dropdown.show();
7610
+ if (this.menu.getAttribute('loading') || (this.availableOptions && this.availableOptions.length > 0) || this.noMatchOption !== undefined) { // eslint-disable-line no-extra-parens
7611
+ if (this.menu.hasAttribute('loading') && !this.menu.hasLoadingPlaceholder) {
7612
+ this.isHiddenWhileLoading = true;
7613
+ } else {
7614
+ this.dropdown.show();
7615
+ }
7569
7616
  }
7570
7617
  }
7571
7618
  }
@@ -7597,7 +7644,7 @@ class AuroCombobox extends r$6 {
7597
7644
  */
7598
7645
  configureMenu() {
7599
7646
  this.menu = this.querySelector('auro-menu, [auro-menu]');
7600
-
7647
+ this.menu.addEventListener("auroMenu-loadingChange", (event) => this.handleMenuLoadingChange(event));
7601
7648
 
7602
7649
  // a racing condition on custom-combobox with custom-menu
7603
7650
  if (!this.menu) {
@@ -7608,7 +7655,7 @@ class AuroCombobox extends r$6 {
7608
7655
  return;
7609
7656
  }
7610
7657
 
7611
- this.menu.shadowRoot.addEventListener('slotchange', () => this.handleSlotChange());
7658
+ this.menu.shadowRoot.addEventListener('slotchange', (event) => this.handleSlotChange(event));
7612
7659
 
7613
7660
  if (this.checkmark) {
7614
7661
  this.menu.removeAttribute('nocheckmark');
@@ -7630,8 +7677,8 @@ class AuroCombobox extends r$6 {
7630
7677
  this.value = this.optionSelected.value;
7631
7678
  }
7632
7679
 
7633
- if (this.input.value !== this.optionSelected.innerText) {
7634
- this.input.value = this.optionSelected.innerText;
7680
+ if (this.input.value !== this.optionSelected.textContent) {
7681
+ this.input.value = this.optionSelected.textContent;
7635
7682
  }
7636
7683
 
7637
7684
  if (this.menu.matchWord !== this.input.value) {
@@ -7707,7 +7754,7 @@ class AuroCombobox extends r$6 {
7707
7754
  this.menu.value = this.value;
7708
7755
  }
7709
7756
 
7710
- if (this.optionSelected && this.input.value !== this.optionSelected.innerText) {
7757
+ if (this.optionSelected && this.input.value !== this.optionSelected.textContent) {
7711
7758
  this.optionSelected = undefined;
7712
7759
  }
7713
7760
 
@@ -7748,6 +7795,29 @@ class AuroCombobox extends r$6 {
7748
7795
  });
7749
7796
  }
7750
7797
 
7798
+ /**
7799
+ * Manages the visibility of the dropdown based on loading state changes.
7800
+ *
7801
+ * This method listens for loading state changes and adjusts the visibility of the dropdown accordingly.
7802
+ * If the dropdown is visible and loading is true without any loading placeholders, it hides the dropdown
7803
+ * and sets a flag to indicate it is hidden while loading. If loading is false and the dropdown was previously
7804
+ * hidden, it checks if the active element is within the dropdown and shows it again if true.
7805
+ *
7806
+ * @private
7807
+ * @param {CustomEvent} event - The event object containing details about the loading state change.
7808
+ * @param {boolean} event.detail.loading - Indicates whether the menu is currently loading.
7809
+ * @param {boolean} event.detail.hasLoadingPlaceholder - Indicates if there are loading placeholders present.
7810
+ * @returns {void}
7811
+ */
7812
+ handleMenuLoadingChange(event) {
7813
+ if (!event.detail.loading && this.isHiddenWhileLoading) {
7814
+ if (this.contains(document.activeElement)) {
7815
+ this.dropdown.show();
7816
+ }
7817
+ this.isHiddenWhileLoading = false;
7818
+ }
7819
+ }
7820
+
7751
7821
  /**
7752
7822
  * Handle changes to the input value and trigger changes that should result.
7753
7823
  * @private
@@ -7794,7 +7864,7 @@ class AuroCombobox extends r$6 {
7794
7864
  */
7795
7865
  if (evt.key === 'ArrowUp' || evt.key === 'ArrowDown') {
7796
7866
  if (this.availableOptions.length > 0) {
7797
- this.dropdown.show();
7867
+ this.showBib();
7798
7868
  }
7799
7869
 
7800
7870
  if (this.dropdown.isPopoverVisible) {
@@ -7866,8 +7936,8 @@ class AuroCombobox extends r$6 {
7866
7936
  if (this.value) {
7867
7937
  if (this.optionSelected && this.optionSelected.value === this.value) {
7868
7938
  // If value updates and the previously selected option already matches the new value
7869
- // just update the input value to use the innerText of the optionSelected
7870
- this.input.value = this.optionSelected.innerText;
7939
+ // just update the input value to use the textContent of the optionSelected
7940
+ this.input.value = this.optionSelected.textContent;
7871
7941
  } else {
7872
7942
  // Otherwise just enter the value into the input
7873
7943
  this.optionSelected = undefined;
@@ -7897,19 +7967,23 @@ class AuroCombobox extends r$6 {
7897
7967
  /**
7898
7968
  * Watch for slot changes and recalculate the menuoptions.
7899
7969
  * @private
7970
+ * @param {Event} event - slotchange event
7900
7971
  * @returns {void}
7901
7972
  */
7902
- handleSlotChange() {
7903
- this.options = this.menu.querySelectorAll('auro-menuoption, [auro-menuoption]');
7904
- this.options.forEach((opt) => {
7905
- if (this.checkmark) {
7906
- opt.removeAttribute('nocheckmark');
7907
- } else {
7908
- opt.setAttribute('nocheckmark', '');
7909
- }
7910
- });
7973
+ handleSlotChange(event) {
7974
+ // treat only generic menuoptions
7975
+ if (!event.target.name) {
7976
+ this.options = this.menu.querySelectorAll('auro-menuoption, [auro-menuoption]');
7977
+ this.options.forEach((opt) => {
7978
+ if (this.checkmark) {
7979
+ opt.removeAttribute('nocheckmark');
7980
+ } else {
7981
+ opt.setAttribute('nocheckmark', '');
7982
+ }
7983
+ });
7911
7984
 
7912
- this.handleMenuOptions();
7985
+ this.handleMenuOptions();
7986
+ }
7913
7987
  }
7914
7988
 
7915
7989
  // function that renders the HTML and CSS into the scope of the component
@@ -7919,7 +7993,7 @@ class AuroCombobox extends r$6 {
7919
7993
  <div aria-live="polite" class="util_displayHiddenVisually">
7920
7994
  ${this.optionActive && this.availableOptions.length > 0
7921
7995
  ? u$6`
7922
- ${`${this.optionActive.innerText}, selected, ${this.availableOptions.indexOf(this.optionActive) + 1} of ${this.availableOptions.length}`}
7996
+ ${`${this.optionActive.textContent}, selected, ${this.availableOptions.indexOf(this.optionActive) + 1} of ${this.availableOptions.length}`}
7923
7997
  `
7924
7998
  : undefined
7925
7999
  }
@@ -7962,1033 +8036,1085 @@ class AuroCombobox extends r$6 {
7962
8036
  }
7963
8037
  }
7964
8038
 
7965
- var styleCss$2 = i$c`:root{--ds-asset-font-circular-family-name: "AS Circular";--ds-asset-font-circular-filename: "ASCircularWeb";--ds-asset-font-circular-weight-light: "-Light";--ds-asset-font-circular-weight-medium: "-Medium";--ds-asset-font-circular-weight-book: "-Book";--ds-border-radius: 0.375rem;--ds-size-25: 0.125rem;--ds-size-50: 0.25rem;--ds-size-75: 0.375rem;--ds-size-100: 0.5rem;--ds-size-150: 0.75rem;--ds-size-200: 1rem;--ds-size-250: 1.25rem;--ds-size-300: 1.5rem;--ds-size-400: 2rem;--ds-size-500: 2.5rem;--ds-size-600: 3rem;--ds-size-700: 3.5rem;--ds-size-800: 4rem;--ds-size-900: 4.5rem;--ds-size-1000: 5rem;--ds-unitless-scale-20: 0.25;--ds-unitless-scale-50: 0.5;--ds-unitless-scale-100: 1;--ds-unitless-scale-140: 1.4;--ds-unitless-scale-150: 1.5;--ds-unitless-scale-200: 2;--ds-unitless-scale-300: 3;--ds-unitless-scale-350: 3.5;--ds-animation-default-property: all;--ds-animation-default-duration: 0.3s;--ds-animation-default-timing: ease-out;--ds-depth-overlay: 200;--ds-depth-modal: 300;--ds-depth-tooltip: 400;--ds-elevation-100: 0px 0px 5px rgba(0, 0, 0, 0.15);--ds-elevation-200: 0px 0px 10px rgba(0, 0, 0, 0.15);--ds-elevation-300: 0px 0px 15px rgba(0, 0, 0, 0.2);--ds-grid-breakpoint-xs: 320px;--ds-grid-breakpoint-sm: 576px;--ds-grid-breakpoint-md: 768px;--ds-grid-breakpoint-lg: 1024px;--ds-grid-breakpoint-xl: 1232px;--ds-grid-column-xs: 6;--ds-grid-column-sm: 12;--ds-grid-column-md: 12;--ds-grid-column-lg: 12;--ds-grid-column-xl: 12;--ds-grid-gutter-xs: 0.5rem;--ds-grid-gutter-sm: 1rem;--ds-grid-gutter-md: 1.5rem;--ds-grid-gutter-lg: 1.5rem;--ds-grid-gutter-xl: 2rem;--ds-grid-margin-xs: 1rem;--ds-grid-margin-sm: 1rem;--ds-grid-margin-md: 1.5rem;--ds-grid-margin-lg: 2rem;--ds-grid-margin-xl: 2rem;--ds-font-family-default: "AS Circular", Helvetica Neue, Arial, sans-serif;--ds-font-family-mono: Menlo, Monaco, Consolas, "Courier New", monospace;--ds-text-heading-300-weight: 300;--ds-text-heading-300-px: 18px;--ds-text-heading-300-size: 1.125rem;--ds-text-heading-300-height: 1.625rem;--ds-text-heading-300-height-px: 26px;--ds-text-heading-400-weight: 300;--ds-text-heading-400-px: 20px;--ds-text-heading-400-size: 1.25rem;--ds-text-heading-400-height: 1.625rem;--ds-text-heading-400-height-px: 26px;--ds-text-heading-500-weight: 300;--ds-text-heading-500-px-breakpoint-sm: 22px;--ds-text-heading-500-px-breakpoint-md: 24px;--ds-text-heading-500-px-breakpoint-lg: 24px;--ds-text-heading-500-size-breakpoint-sm: 1.375rem;--ds-text-heading-500-size-breakpoint-md: 1.5rem;--ds-text-heading-500-size-breakpoint-lg: 1.5rem;--ds-text-heading-500-height-breakpoint-sm: 1.625rem;--ds-text-heading-500-height-breakpoint-px-sm: 26px;--ds-text-heading-500-height-breakpoint-md: 1.875rem;--ds-text-heading-500-height-breakpoint-px-md: 30px;--ds-text-heading-500-height-breakpoint-lg: 2rem;--ds-text-heading-500-height-breakpoint-px-lg: 32px;--ds-text-heading-600-weight: 300;--ds-text-heading-600-px-breakpoint-sm: 26px;--ds-text-heading-600-px-breakpoint-md: 28px;--ds-text-heading-600-px-breakpoint-lg: 28px;--ds-text-heading-600-size-breakpoint-sm: 1.625rem;--ds-text-heading-600-size-breakpoint-md: 1.75rem;--ds-text-heading-600-size-breakpoint-lg: 1.75rem;--ds-text-heading-600-height-breakpoint-sm: 1.875rem;--ds-text-heading-600-height-breakpoint-px-sm: 30px;--ds-text-heading-600-height-breakpoint-md: 2.125rem;--ds-text-heading-600-height-breakpoint-px-md: 34px;--ds-text-heading-600-height-breakpoint-lg: 2.25rem;--ds-text-heading-600-height-breakpoint-px-lg: 36px;--ds-text-heading-700-weight: 500;--ds-text-heading-700-px-breakpoint-sm: 28px;--ds-text-heading-700-px-breakpoint-md: 32px;--ds-text-heading-700-px-breakpoint-lg: 36px;--ds-text-heading-700-size-breakpoint-sm: 1.75rem;--ds-text-heading-700-size-breakpoint-md: 2rem;--ds-text-heading-700-size-breakpoint-lg: 2.25rem;--ds-text-heading-700-height-breakpoint-sm: 2.125rem;--ds-text-heading-700-height-breakpoint-px-sm: 34px;--ds-text-heading-700-height-breakpoint-md: 2.375rem;--ds-text-heading-700-height-breakpoint-px-md: 38px;--ds-text-heading-700-height-breakpoint-lg: 2.75rem;--ds-text-heading-700-height-breakpoint-px-lg: 44px;--ds-text-heading-800-weight: 500;--ds-text-heading-800-px-breakpoint-sm: 32px;--ds-text-heading-800-px-breakpoint-md: 36px;--ds-text-heading-800-px-breakpoint-lg: 40px;--ds-text-heading-800-size-breakpoint-sm: 2rem;--ds-text-heading-800-size-breakpoint-md: 2.25rem;--ds-text-heading-800-size-breakpoint-lg: 2.5rem;--ds-text-heading-800-height-breakpoint-sm: 2.375rem;--ds-text-heading-800-height-breakpoint-px-sm: 38px;--ds-text-heading-800-height-breakpoint-md: 2.625rem;--ds-text-heading-800-height-breakpoint-px-md: 42px;--ds-text-heading-800-height-breakpoint-lg: 3rem;--ds-text-heading-800-height-breakpoint-px-lg: 48px;--ds-text-heading-default-weight: 500;--ds-text-heading-default-margin: 0;--ds-text-heading-default-spacing: -0.2px;--ds-text-heading-medium-weight: 300;--ds-text-heading-display-weight: 100;--ds-text-heading-display-px-breakpoint-sm: 44px;--ds-text-heading-display-px-breakpoint-md: 48px;--ds-text-heading-display-px-breakpoint-lg: 56px;--ds-text-heading-display-size-breakpoint-sm: 2.75rem;--ds-text-heading-display-size-breakpoint-md: 3rem;--ds-text-heading-display-size-breakpoint-lg: 3.5rem;--ds-text-heading-display-height-breakpoint-sm: 3.375rem;--ds-text-heading-display-height-breakpoint-px-sm: 54px;--ds-text-heading-display-height-breakpoint-md: 3.75rem;--ds-text-heading-display-height-breakpoint-px-md: 60px;--ds-text-heading-display-height-breakpoint-lg: 4.25rem;--ds-text-heading-display-height-breakpoint-px-lg: 68px;--ds-text-body-default-weight: 500;--ds-text-body-size-xxs: 0.625rem;--ds-text-body-size-xs: 0.75rem;--ds-text-body-size-sm: 0.875rem;--ds-text-body-size-default: 1rem;--ds-text-body-size-lg: 1.125rem;--ds-text-body-height-xs: 1rem;--ds-text-body-height-sm: 1.25rem;--ds-text-body-height-default: 1.5rem;--ds-text-body-height-lg: 1.625rem;--ds-color-alert-notification-default: #0074c8;--ds-color-alert-warning-default: #de750c;--ds-color-alert-error-default: #df0b37;--ds-color-alert-success-default: #00805d;--ds-color-alert-advisory-default: #fff0cd;--ds-color-alert-bkg-success-default: #ddf6e8;--ds-color-alert-bkg-error-default: #ffedf1;--ds-color-background-primary-100-default: #ffffff;--ds-color-background-primary-100-inverse: #0e2b4f;--ds-color-background-primary-200-default: #f7f7f7;--ds-color-background-primary-200-inverse: #194069;--ds-color-background-primary-300-default: #e4e8ec;--ds-color-background-primary-300-inverse: #265688;--ds-color-background-primary-400-default: #dddddd;--ds-color-background-primary-400-inverse: #326aa5;--ds-color-background-success-default: #eef8f5;--ds-color-background-success-inverse: #173c30;--ds-color-background-error-default: #fff4f4;--ds-color-background-error-inverse: #74110e;--ds-color-background-warning-default: #fef8e9;--ds-color-background-warning-inverse: #5d4514;--ds-color-background-info-default: #f0f7fd;--ds-color-background-info-inverse: #193d73;--ds-color-background-subtle-default: #f7f8fa;--ds-color-background-subtle-inverse: #2a2a2a;--ds-color-background-accent-default: #ebfafd;--ds-color-background-accent-inverse: #275b72;--ds-color-background-emphasis-default: #c9e0f7;--ds-color-background-emphasis-inverse: #225296;--ds-color-background-scrimmed-default: rgba(0, 0, 0, 0.5);--ds-color-background-lightest: #ffffff;--ds-color-background-lighter: #f7f7f7;--ds-color-background-darker: #01426a;--ds-color-background-darkest: #00274a;--ds-color-background-gradient-default: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.5));--ds-color-base-white: #ffffff;--ds-color-base-white-100: rgba(255, 255, 255, 0.03);--ds-color-base-white-200: rgba(255, 255, 255, 0.06);--ds-color-base-white-300: rgba(255, 255, 255, 0.12);--ds-color-base-white-400: rgba(255, 255, 255, 0.25);--ds-color-base-white-500: rgba(255, 255, 255, 0.5);--ds-color-base-white-opacity-50: rgba(255, 255, 255, 0.5);--ds-color-base-white-opacity-40: rgba(255, 255, 255, 0.4);--ds-color-base-white-opacity-0: rgba(255, 255, 255, 0);--ds-color-base-black: #000000;--ds-color-base-black-100: rgba(0, 0, 0, 0.03);--ds-color-base-black-200: rgba(0, 0, 0, 0.06);--ds-color-base-black-300: rgba(0, 0, 0, 0.12);--ds-color-base-black-400: rgba(0, 0, 0, 0.25);--ds-color-base-black-500: rgba(0, 0, 0, 0.5);--ds-color-base-black-opacity-15: rgba(0, 0, 0, 0.15);--ds-color-base-blue-100: #f0f7fd;--ds-color-base-blue-200: #c9e0f7;--ds-color-base-blue-300: #a0c9f1;--ds-color-base-blue-400: #79b2ec;--ds-color-base-blue-500: #5398e6;--ds-color-base-blue-600: #3b7fd2;--ds-color-base-blue-700: #2c67b5;--ds-color-base-blue-800: #225296;--ds-color-base-blue-900: #193d73;--ds-color-base-blue-1000: #102a51;--ds-color-base-cyan-100: #ebfafd;--ds-color-base-cyan-200: #a8e9f7;--ds-color-base-cyan-300: #6ad5ef;--ds-color-base-cyan-400: #56bbde;--ds-color-base-cyan-500: #4aa2c7;--ds-color-base-cyan-600: #3e89aa;--ds-color-base-cyan-700: #32718e;--ds-color-base-cyan-800: #275b72;--ds-color-base-cyan-900: #1d4658;--ds-color-base-cyan-1000: #12303d;--ds-color-base-error-100: #fff4f4;--ds-color-base-error-200: #f9aca6;--ds-color-base-error-300: #f16359;--ds-color-base-error-400: #cc1816;--ds-color-base-error-500: #74110e;--ds-color-base-gray-100: #f7f7f7;--ds-color-base-gray-200: #d4d4d4;--ds-color-base-gray-300: #c5c5c5;--ds-color-base-gray-400: #adadad;--ds-color-base-gray-500: #959595;--ds-color-base-gray-600: #7e7e7e;--ds-color-base-gray-700: #676767;--ds-color-base-gray-800: #525252;--ds-color-base-gray-900: #3d3d3d;--ds-color-base-gray-1000: #2a2a2a;--ds-color-base-green-100: #f3faf7;--ds-color-base-green-200: #000000;--ds-color-base-green-300: #addbca;--ds-color-base-green-400: #7ec6ac;--ds-color-base-green-500: #51ae8c;--ds-color-base-green-600: #459578;--ds-color-base-green-700: #3a7d64;--ds-color-base-green-800: #306854;--ds-color-base-green-900: #285545;--ds-color-base-green-1000: #1f4436;--ds-color-base-lime-100: #f5fbeb;--ds-color-base-lime-200: #d8efb4;--ds-color-base-lime-300: #badd81;--ds-color-base-lime-400: #a2c270;--ds-color-base-lime-500: #8ca761;--ds-color-base-lime-600: #778f53;--ds-color-base-lime-700: #647845;--ds-color-base-lime-800: #53643a;--ds-color-base-lime-900: #44522f;--ds-color-base-lime-1000: #364126;--ds-color-base-navy-100: #f2f7fb;--ds-color-base-navy-200: #cfe0ef;--ds-color-base-navy-300: #acc9e2;--ds-color-base-navy-400: #89b2d4;--ds-color-base-navy-500: #6899c6;--ds-color-base-navy-600: #4a82b7;--ds-color-base-navy-700: #326aa5;--ds-color-base-navy-800: #265688;--ds-color-base-navy-900: #194069;--ds-color-base-navy-1000: #0e2b4f;--ds-color-base-neutral-100: #f7f8fa;--ds-color-base-neutral-200: #e4e8ec;--ds-color-base-neutral-300: #ccd2db;--ds-color-base-neutral-400: #afb9c6;--ds-color-base-neutral-500: #939fad;--ds-color-base-neutral-600: #7e8894;--ds-color-base-neutral-700: #6a717c;--ds-color-base-neutral-800: #585e67;--ds-color-base-neutral-900: #484d55;--ds-color-base-neutral-1000: #393d43;--ds-color-base-pink-100: #fff7f8;--ds-color-base-pink-200: #fde0e6;--ds-color-base-pink-300: #fcc2ce;--ds-color-base-pink-400: #fa9db0;--ds-color-base-pink-500: #f7738e;--ds-color-base-pink-600: #e45472;--ds-color-base-pink-700: #bf475f;--ds-color-base-pink-800: #a03b50;--ds-color-base-pink-900: #833142;--ds-color-base-pink-1000: #692734;--ds-color-base-purple-100: #fbf8fe;--ds-color-base-purple-200: #ede3fd;--ds-color-base-purple-300: #ddc9fb;--ds-color-base-purple-400: #c9a9f8;--ds-color-base-purple-500: #b588f5;--ds-color-base-purple-600: #a268f3;--ds-color-base-purple-700: #8d47f0;--ds-color-base-purple-800: #7633d7;--ds-color-base-purple-900: #622ab2;--ds-color-base-purple-1000: #4e228d;--ds-color-base-red-100: #fef7f5;--ds-color-base-red-200: #fae2da;--ds-color-base-red-300: #f5c7b8;--ds-color-base-red-400: #f0a68d;--ds-color-base-red-500: #e9815e;--ds-color-base-red-600: #e35c2f;--ds-color-base-red-700: #d03a08;--ds-color-base-red-800: #ae3007;--ds-color-base-red-900: #902806;--ds-color-base-red-1000: #732005;--ds-color-base-success-100: #eef8f5;--ds-color-base-success-200: #8eceb9;--ds-color-base-success-300: #40a080;--ds-color-base-success-400: #0b6f4d;--ds-color-base-success-500: #173c30;--ds-color-base-turquoise-100: #f7fafa;--ds-color-base-turquoise-200: #dfe9ea;--ds-color-base-turquoise-300: #c2d5d6;--ds-color-base-turquoise-400: #9fbdbe;--ds-color-base-turquoise-500: #7ba5a6;--ds-color-base-turquoise-600: #5c8f91;--ds-color-base-turquoise-700: #3d7a7d;--ds-color-base-turquoise-800: #21686a;--ds-color-base-turquoise-900: #085659;--ds-color-base-turquoise-1000: #004447;--ds-color-base-yellow-100: #fff9df;--ds-color-base-yellow-200: #ffe87e;--ds-color-base-yellow-300: #f9ce06;--ds-color-base-yellow-400: #d6b622;--ds-color-base-yellow-500: #b49d35;--ds-color-base-yellow-600: #96873e;--ds-color-base-yellow-700: #7c7140;--ds-color-base-yellow-800: #665e3d;--ds-color-base-yellow-900: #524e38;--ds-color-base-yellow-1000: #403d30;--ds-color-base-warning-100: #fef8e9;--ds-color-base-warning-200: #f2c153;--ds-color-base-warning-300: #c49432;--ds-color-base-warning-400: #8e6b22;--ds-color-base-warning-500: #5d4514;--ds-color-state-error-100: #ff999b;--ds-color-state-error-500: #df0b37;--ds-color-state-success-100: #69cf96;--ds-color-state-success-500: #00805d;--ds-color-state-warning-500: #de750c;--ds-color-border-primary-default: #585e67;--ds-color-border-primary-inverse: #afb9c6;--ds-color-border-secondary-default: #939fad;--ds-color-border-secondary-inverse: #7e8894;--ds-color-border-tertiary-default: #dddddd;--ds-color-border-tertiary-inverse: #676767;--ds-color-border-error-default: #cc1816;--ds-color-border-error-inverse: #f9aca6;--ds-color-border-divider-default: rgba(0, 0, 0, 0.12);--ds-color-border-divider-inverse: rgba(255, 255, 255, 0.25);--ds-color-border-subtle-default: #f0f7fd;--ds-color-border-subtle-inverse: #326aa5;--ds-color-border-emphasis-default: #194069;--ds-color-border-emphasis-inverse: #f2f7fb;--ds-color-border-accent-default: #badd81;--ds-color-border-accent-inverse: #a2c270;--ds-color-border-success-default: #0b6f4d;--ds-color-border-success-inverse: #8eceb9;--ds-color-border-warning-default: #c49432;--ds-color-border-warning-inverse: #f2c153;--ds-color-border-info-default: #326aa5;--ds-color-border-info-inverse: #89b2d4;--ds-color-border-ui-default-default: #2c67b5;--ds-color-border-ui-default-inverse: #56bbde;--ds-color-border-ui-hover-default: #193d73;--ds-color-border-ui-hover-inverse: #a8e9f7;--ds-color-border-ui-active-default: #225296;--ds-color-border-ui-active-inverse: #6ad5ef;--ds-color-border-ui-focus-default: #2c67b5;--ds-color-border-ui-focus-inverse: #56bbde;--ds-color-border-ui-disabled-default: #adadad;--ds-color-border-ui-disabled-inverse: #7e7e7e;--ds-color-border-active-default: #0074c8;--ds-color-border-active-inverse: #00cff0;--ds-color-border-disabled-default: #d4d4d4;--ds-color-border-focus-default: #959595;--ds-color-brand-neutral-100: #f7f8fa;--ds-color-brand-neutral-200: #e4e8ec;--ds-color-brand-neutral-300: #ccd2db;--ds-color-brand-neutral-400: #afb9c6;--ds-color-brand-neutral-500: #939fad;--ds-color-brand-neutral-600: #7e8894;--ds-color-brand-neutral-700: #6a717c;--ds-color-brand-neutral-800: #585e67;--ds-color-brand-neutral-900: #484d55;--ds-color-brand-neutral-1000: #393d43;--ds-color-brand-gray-100: #f7f7f7;--ds-color-brand-gray-200: #dddddd;--ds-color-brand-gray-300: #c5c5c5;--ds-color-brand-gray-400: #adadad;--ds-color-brand-gray-500: #959595;--ds-color-brand-gray-600: #7e7e7e;--ds-color-brand-gray-700: #676767;--ds-color-brand-gray-800: #525252;--ds-color-brand-gray-900: #3d3d3d;--ds-color-brand-gray-1000: #2a2a2a;--ds-color-brand-red-100: #fef7f5;--ds-color-brand-red-200: #fae2da;--ds-color-brand-red-300: #f5c7b8;--ds-color-brand-red-400: #f0a68d;--ds-color-brand-red-500: #e9815e;--ds-color-brand-red-600: #e35c2f;--ds-color-brand-red-700: #d03a08;--ds-color-brand-red-800: #ae3007;--ds-color-brand-red-900: #902806;--ds-color-brand-red-1000: #732005;--ds-color-brand-yellow-100: #fff9df;--ds-color-brand-yellow-200: #ffe87e;--ds-color-brand-yellow-300: #f9ce06;--ds-color-brand-yellow-400: #d6b622;--ds-color-brand-yellow-500: #b49d35;--ds-color-brand-yellow-600: #96873e;--ds-color-brand-yellow-700: #7c7140;--ds-color-brand-yellow-800: #665e3d;--ds-color-brand-yellow-900: #524e38;--ds-color-brand-yellow-1000: #403d30;--ds-color-brand-lime-100: #f5fbeb;--ds-color-brand-lime-200: #d8efb4;--ds-color-brand-lime-300: #badd81;--ds-color-brand-lime-400: #a2c270;--ds-color-brand-lime-500: #8ca761;--ds-color-brand-lime-600: #778f53;--ds-color-brand-lime-700: #647845;--ds-color-brand-lime-800: #53643a;--ds-color-brand-lime-900: #44522f;--ds-color-brand-lime-1000: #364126;--ds-color-brand-green-100: #f3faf7;--ds-color-brand-green-200: #d4ece4;--ds-color-brand-green-300: #addbca;--ds-color-brand-green-400: #7ec6ac;--ds-color-brand-green-500: #51ae8c;--ds-color-brand-green-600: #459578;--ds-color-brand-green-700: #3a7d64;--ds-color-brand-green-800: #306854;--ds-color-brand-green-900: #285545;--ds-color-brand-green-1000: #1f4436;--ds-color-brand-turquoise-100: #f7fafa;--ds-color-brand-turquoise-200: #dfe9ea;--ds-color-brand-turquoise-300: #c2d5d6;--ds-color-brand-turquoise-400: #9fbdbe;--ds-color-brand-turquoise-500: #7ba5a6;--ds-color-brand-turquoise-600: #5c8f91;--ds-color-brand-turquoise-700: #3d7a7d;--ds-color-brand-turquoise-800: #21686a;--ds-color-brand-turquoise-900: #085659;--ds-color-brand-turquoise-1000: #004447;--ds-color-brand-cyan-100: #ebfafd;--ds-color-brand-cyan-200: #a8e9f7;--ds-color-brand-cyan-300: #6ad5ef;--ds-color-brand-cyan-400: #56bbde;--ds-color-brand-cyan-500: #4aa2c7;--ds-color-brand-cyan-600: #3e89aa;--ds-color-brand-cyan-700: #32718e;--ds-color-brand-cyan-800: #275b72;--ds-color-brand-cyan-900: #1d4658;--ds-color-brand-cyan-1000: #12303d;--ds-color-brand-blue-100: #f0f7fd;--ds-color-brand-blue-200: #c9e0f7;--ds-color-brand-blue-300: #a0c9f1;--ds-color-brand-blue-400: #79b2ec;--ds-color-brand-blue-500: #5398e6;--ds-color-brand-blue-600: #3b7fd2;--ds-color-brand-blue-700: #2c67b5;--ds-color-brand-blue-800: #225296;--ds-color-brand-blue-900: #193d73;--ds-color-brand-blue-1000: #102a51;--ds-color-brand-navy-100: #f2f7fb;--ds-color-brand-navy-200: #cfe0ef;--ds-color-brand-navy-300: #acc9e2;--ds-color-brand-navy-400: #89b2d4;--ds-color-brand-navy-500: #6899c6;--ds-color-brand-navy-600: #4a82b7;--ds-color-brand-navy-700: #326aa5;--ds-color-brand-navy-800: #265688;--ds-color-brand-navy-900: #194069;--ds-color-brand-navy-1000: #0e2b4f;--ds-color-brand-purple-100: #fbf8fe;--ds-color-brand-purple-200: #ede3fd;--ds-color-brand-purple-300: #ddc9fb;--ds-color-brand-purple-400: #c9a9f8;--ds-color-brand-purple-500: #b588f5;--ds-color-brand-purple-600: #a268f3;--ds-color-brand-purple-700: #8d47f0;--ds-color-brand-purple-800: #7633d7;--ds-color-brand-purple-900: #622ab2;--ds-color-brand-purple-1000: #4e228d;--ds-color-brand-pink-100: #fff7f8;--ds-color-brand-pink-200: #fde0e6;--ds-color-brand-pink-300: #fcc2ce;--ds-color-brand-pink-400: #fa9db0;--ds-color-brand-pink-500: #f7738e;--ds-color-brand-pink-600: #e45472;--ds-color-brand-pink-700: #bf475f;--ds-color-brand-pink-800: #a03b50;--ds-color-brand-pink-900: #833142;--ds-color-brand-pink-1000: #692734;--ds-color-brand-midnight-100: #c1daf0;--ds-color-brand-midnight-200: #569ed7;--ds-color-brand-midnight-300: #156fad;--ds-color-brand-midnight-400: #01426a;--ds-color-brand-midnight-500: #00274a;--ds-color-brand-atlas-100: #cde6ff;--ds-color-brand-atlas-200: #6bb7fb;--ds-color-brand-atlas-300: #2492eb;--ds-color-brand-atlas-400: #0074c8;--ds-color-brand-atlas-500: #054687;--ds-color-brand-atlas-400-opacity-20: rgba(0, 116, 200, 0.2);--ds-color-brand-breeze-100: #c0f7ff;--ds-color-brand-breeze-200: #5de3f7;--ds-color-brand-breeze-300: #00cff0;--ds-color-brand-breeze-400: #099dc5;--ds-color-brand-breeze-500: #0b5575;--ds-color-brand-breeze-300-opacity-30: rgba(0, 207, 240, 0.3);--ds-color-brand-tropical-100: #e2ffcd;--ds-color-brand-tropical-200: #d0fba6;--ds-color-brand-tropical-300: #c0e585;--ds-color-brand-tropical-400: #91be62;--ds-color-brand-tropical-500: #5e8741;--ds-color-brand-alpine-100: #bcaae6;--ds-color-brand-alpine-200: #9e73ea;--ds-color-brand-alpine-300: #8439ef;--ds-color-brand-alpine-400: #631db8;--ds-color-brand-alpine-500: #39115c;--ds-color-brand-flamingo-100: #ffebee;--ds-color-brand-flamingo-200: #ffc0ca;--ds-color-brand-flamingo-300: #ff94a7;--ds-color-brand-flamingo-400: #f65b7b;--ds-color-brand-flamingo-500: #b82b47;--ds-color-brand-canyon-100: #ffcab6;--ds-color-brand-canyon-200: #f99574;--ds-color-brand-canyon-300: #f26135;--ds-color-brand-canyon-400: #de3e09;--ds-color-brand-canyon-500: #b83302;--ds-color-brand-goldcoast-100: #fff0cd;--ds-color-brand-goldcoast-200: #ffdb67;--ds-color-brand-goldcoast-300: #ffd200;--ds-color-brand-goldcoast-400: #e5ad07;--ds-color-brand-goldcoast-500: #b88624;--ds-color-brand-goldgray-100: #c5c1bf;--ds-color-brand-goldgray-200: #726e6c;--ds-color-brand-gold-100: #ccbc94;--ds-color-brand-gold-200: #7f682e;--ds-color-brand-emerald: #139142;--ds-color-brand-sapphire: #015daa;--ds-color-brand-ruby: #a41d4a;--ds-color-brand-lounge: #01426a;--ds-color-brand-loungeplus: #53b390;--ds-color-container-accent-default: #f5fbeb;--ds-color-container-accent-inverse: #badd81;--ds-color-container-emphasis-default: #ebfafd;--ds-color-container-emphasis-inverse: #6ad5ef;--ds-color-container-error-default: #fff4f4;--ds-color-container-error-inverse: #74110e;--ds-color-container-info-default: #f0f7fd;--ds-color-container-info-inverse: #193d73;--ds-color-container-primary-default: #ffffff;--ds-color-container-primary-inverse: #0e2b4f;--ds-color-container-secondary-default: #f7f7f7;--ds-color-container-secondary-inverse: #194069;--ds-color-container-subtle-default: #f7f8fa;--ds-color-container-subtle-inverse: #393d43;--ds-color-container-success-default: #eef8f5;--ds-color-container-success-inverse: #173c30;--ds-color-container-tertiary-default: rgba(0, 0, 0, 0.03);--ds-color-container-tertiary-inverse: rgba(255, 255, 255, 0.06);--ds-color-container-warning-default: #fef8e9;--ds-color-container-warning-inverse: #5d4514;--ds-color-container-ui-primary-active-default: #225296;--ds-color-container-ui-primary-active-inverse: #6ad5ef;--ds-color-container-ui-primary-default-default: #2c67b5;--ds-color-container-ui-primary-default-inverse: #56bbde;--ds-color-container-ui-primary-disabled-default: #a0c9f1;--ds-color-container-ui-primary-disabled-inverse: #275b72;--ds-color-container-ui-primary-focus-default: #2c67b5;--ds-color-container-ui-primary-focus-inverse: #56bbde;--ds-color-container-ui-primary-hover-default: #193d73;--ds-color-container-ui-primary-hover-inverse: #a8e9f7;--ds-color-container-ui-secondary-active-default: #f0f7fd;--ds-color-container-ui-secondary-active-inverse: rgba(255, 255, 255, 0.06);--ds-color-container-ui-secondary-default-default: #ffffff;--ds-color-container-ui-secondary-default-inverse: rgba(255, 255, 255, 0.03);--ds-color-container-ui-secondary-disabled-default: #f7f7f7;--ds-color-container-ui-secondary-disabled-inverse: rgba(255, 255, 255, 0.12);--ds-color-container-ui-secondary-focus-default: #ffffff;--ds-color-container-ui-secondary-focus-inverse: rgba(255, 255, 255, 0.03);--ds-color-container-ui-secondary-hover-default: rgba(0, 0, 0, 0.03);--ds-color-container-ui-secondary-hover-inverse: rgba(255, 255, 255, 0.12);--ds-color-container-ui-tertiary-active-default: rgba(0, 0, 0, 0.06);--ds-color-container-ui-tertiary-active-inverse: rgba(255, 255, 255, 0.06);--ds-color-container-ui-tertiary-default-default: rgba(0, 0, 0, 0.03);--ds-color-container-ui-tertiary-default-inverse: rgba(255, 255, 255, 0.12);--ds-color-container-ui-tertiary-disabled-default: rgba(0, 0, 0, 0.03);--ds-color-container-ui-tertiary-disabled-inverse: rgba(255, 255, 255, 0.25);--ds-color-container-ui-tertiary-focus-default: rgba(0, 0, 0, 0.03);--ds-color-container-ui-tertiary-focus-inverse: rgba(255, 255, 255, 0.12);--ds-color-container-ui-tertiary-hover-default: rgba(0, 0, 0, 0.12);--ds-color-container-ui-tertiary-hover-inverse: rgba(255, 255, 255, 0.25);--ds-color-icon-primary-default: #676767;--ds-color-icon-primary-inverse: #f7f7f7;--ds-color-icon-secondary-default: #7e8894;--ds-color-icon-secondary-inverse: #ccd2db;--ds-color-icon-tertiary-default: #afb9c6;--ds-color-icon-tertiary-inverse: #939fad;--ds-color-icon-emphasis-default: #2a2a2a;--ds-color-icon-emphasis-inverse: #ffffff;--ds-color-icon-accent-default: #a2c270;--ds-color-icon-accent-inverse: #badd81;--ds-color-icon-info-default: #326aa5;--ds-color-icon-info-inverse: #89b2d4;--ds-color-icon-error-default: #cc1816;--ds-color-icon-error-inverse: #f9aca6;--ds-color-icon-warning-default: #c49432;--ds-color-icon-warning-inverse: #f2c153;--ds-color-icon-success-default: #40a080;--ds-color-icon-success-inverse: #8eceb9;--ds-color-icon-subtle-default: #a0c9f1;--ds-color-icon-subtle-inverse: #326aa5;--ds-color-icon-ui-primary-default-default: #2c67b5;--ds-color-icon-ui-primary-default-inverse: #56bbde;--ds-color-icon-ui-primary-hover-default: #193d73;--ds-color-icon-ui-primary-hover-inverse: #a8e9f7;--ds-color-icon-ui-primary-active-default: #225296;--ds-color-icon-ui-primary-active-inverse: #6ad5ef;--ds-color-icon-ui-primary-disabled-default: #adadad;--ds-color-icon-ui-primary-disabled-inverse: #7e7e7e;--ds-color-icon-ui-primary-focus-default: #2c67b5;--ds-color-icon-ui-primary-focus-inverse: #56bbde;--ds-color-icon-ui-secondary-active-default: #676767;--ds-color-icon-ui-secondary-active-inverse: #c5c5c5;--ds-color-icon-ui-secondary-default-default: #7e7e7e;--ds-color-icon-ui-secondary-default-inverse: #adadad;--ds-color-icon-ui-secondary-disabled-default: #adadad;--ds-color-icon-ui-secondary-disabled-inverse: #7e7e7e;--ds-color-icon-ui-secondary-focus-default: #7e7e7e;--ds-color-icon-ui-secondary-focus-inverse: #adadad;--ds-color-icon-ui-secondary-hover-default: #525252;--ds-color-icon-ui-secondary-hover-inverse: #dddddd;--ds-color-icon-brand-red-default: #d03a08;--ds-color-icon-brand-red-inverse: #e9815e;--ds-color-icon-brand-yellow-default: #7c7140;--ds-color-icon-brand-yellow-inverse: #f9ce06;--ds-color-icon-brand-pink-default: #bf475f;--ds-color-icon-brand-pink-inverse: #f7738e;--ds-color-icon-brand-purple-default: #8d47f0;--ds-color-icon-brand-purple-inverse: #b588f5;--ds-color-icon-brand-lime-default: #647845;--ds-color-icon-brand-lime-inverse: #badd81;--ds-color-icon-brand-green-default: #3a7d64;--ds-color-icon-brand-green-inverse: #51ae8c;--ds-color-icon-brand-turquoise-default: #3d7a7d;--ds-color-icon-brand-turquoise-inverse: #7ba5a6;--ds-color-icon-brand-navy-default: #265688;--ds-color-icon-brand-navy-inverse: #6899c6;--ds-color-icon-brand-blue-default: #2c67b5;--ds-color-icon-brand-blue-inverse: #5398e6;--ds-color-icon-brand-cyan-default: #32718e;--ds-color-icon-brand-cyan-inverse: #6ad5ef;--ds-color-icon-brand-gray-default: #676767;--ds-color-icon-brand-gray-inverse: #c5c5c5;--ds-color-icon-brand-neutral-default: #6a717c;--ds-color-icon-brand-neutral-inverse: #afb9c6;--ds-color-icon-disabled-default: rgba(0, 0, 0, 0.15);--ds-color-text-primary-default: #2a2a2a;--ds-color-text-primary-inverse: #ffffff;--ds-color-text-secondary-default: #525252;--ds-color-text-secondary-inverse: #dddddd;--ds-color-text-tertiary-default: #6a717c;--ds-color-text-tertiary-inverse: #adadad;--ds-color-text-error-default: #cc1816;--ds-color-text-error-inverse: #f9aca6;--ds-color-text-emphasis-default: #265688;--ds-color-text-emphasis-inverse: #cfe0ef;--ds-color-text-accent-default: #647845;--ds-color-text-accent-inverse: #badd81;--ds-color-text-info-default: #326aa5;--ds-color-text-info-inverse: #acc9e2;--ds-color-text-subtle-default: #32718e;--ds-color-text-subtle-inverse: #56bbde;--ds-color-text-success-default: #0b6f4d;--ds-color-text-success-inverse: #8eceb9;--ds-color-text-ui-active-default: #225296;--ds-color-text-ui-active-inverse: #6ad5ef;--ds-color-text-ui-default-default: #2c67b5;--ds-color-text-ui-default-inverse: #56bbde;--ds-color-text-ui-disabled-default: #adadad;--ds-color-text-ui-disabled-inverse: #7e7e7e;--ds-color-text-ui-focus-default: #2c67b5;--ds-color-text-ui-focus-inverse: #56bbde;--ds-color-text-ui-hover-default: #193d73;--ds-color-text-ui-hover-inverse: #a8e9f7;--ds-color-text-link-default: #0074c8;--ds-color-text-link-inverse: #00cff0;--ds-color-tier-alaska-mvp-default: #726e6c;--ds-color-tier-alaska-mvp-inverse: #c5c1bf;--ds-color-tier-alaska-mvpgold-default: #7f682e;--ds-color-tier-alaska-mvpgold-inverse: #c5c1bf;--ds-color-tier-alaska-mvpgold75k-default: #7f682e;--ds-color-tier-alaska-mvpgold75k-inverse: #c5c1bf;--ds-color-tier-alaska-mvpgold100k-default: #7f682e;--ds-color-tier-alaska-mvpgold100k-inverse: #c5c1bf;--ds-color-tier-alaska-lounge: #01426a;--ds-color-tier-alaska-loungeplus: #53b390;--ds-color-tier-fare-business-default: #005154;--ds-color-tier-fare-business-inverse: #9fbdbe;--ds-color-tier-fare-economy-default: #2c67b5;--ds-color-tier-fare-economy-inverse: #a0c9f1;--ds-color-tier-fare-first-class-default: #002c4e;--ds-color-tier-fare-first-class-inverse: #89b2d4;--ds-color-tier-fare-saver-default: #4aa2c7;--ds-color-tier-fare-saver-inverse: #a8e9f7;--ds-color-tier-oneworld-emerald: #139142;--ds-color-tier-oneworld-sapphire: #015daa;--ds-color-tier-oneworld-ruby: #a41d4a;--ds-color-ui-default-default: #0074c8;--ds-color-ui-default-inverse: #00cff0;--ds-color-ui-hover-default: #054687;--ds-color-ui-hover-inverse: #5de3f7;--ds-color-ui-active-default: #054687;--ds-color-ui-active-inverse: #5de3f7;--ds-color-ui-disabled-default: rgba(0, 116, 200, 0.2);--ds-color-ui-bkg-default-default: rgba(0, 0, 0, 0.03);--ds-color-ui-bkg-default-inverse: rgba(255, 255, 255, 0.03);--ds-color-ui-bkg-hover-default: rgba(0, 0, 0, 0.06);--ds-color-ui-bkg-hover-inverse: rgba(255, 255, 255, 0.06);--ds-color-utility-blue-default: #79b2ec;--ds-color-utility-blue-inverse: #c9e0f7;--ds-color-utility-cyan-default: #6ad5ef;--ds-color-utility-cyan-inverse: #a8e9f7;--ds-color-utility-green-default: #7ec6ac;--ds-color-utility-green-inverse: #addbca;--ds-color-utility-gray-default: #adadad;--ds-color-utility-gray-inverse: #dddddd;--ds-color-utility-lime-default: #badd81;--ds-color-utility-lime-inverse: #d8efb4;--ds-color-utility-navy-default: #265688;--ds-color-utility-navy-inverse: #acc9e2;--ds-color-utility-neutral-default: #7e8894;--ds-color-utility-neutral-inverse: #ccd2db;--ds-color-utility-pink-default: #f7738e;--ds-color-utility-pink-inverse: #fcc2ce;--ds-color-utility-purple-default: #8d47f0;--ds-color-utility-purple-inverse: #ddc9fb;--ds-color-utility-red-default: #e35c2f;--ds-color-utility-red-inverse: #f0a68d;--ds-color-utility-turquoise-default: #5c8f91;--ds-color-utility-turquoise-inverse: #9fbdbe;--ds-color-utility-yellow-default: #f9ce06;--ds-color-utility-yellow-inverse: #ffe87e;--ds-color-utility-error-default: #cc1816;--ds-color-utility-error-inverse: #f9aca6;--ds-color-utility-warning-default: #f2c153;--ds-color-utility-warning-inverse: #f2c153;--ds-color-utility-success-default: #0b6f4d;--ds-color-utility-success-inverse: #8eceb9}*,*:before,*:after{box-sizing:border-box}@media(prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}}*:focus-visible{outline:0}*:focus-visible{outline:0}:focus:not(:focus-visible){outline:3px solid transparent}:host{display:inline-block;width:100%;margin:0;padding:0;vertical-align:middle}:host ::slotted(auro-menuoption),:host ::slotted([auro-menuoption]){padding-left:calc(var(--ds-size-150, 0.75rem) + 24px + var(--ds-size-100, 0.5rem))}:host ::slotted([selected]){padding-left: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([nocheckmark]) ::slotted(auro-menuoption){padding-left:var(--ds-size-200, 1rem)}:host([root]){overflow-y:auto}`;
8039
+ var styleCss$2 = i$c`:root{--ds-asset-font-circular-family-name: "AS Circular";--ds-asset-font-circular-filename: "ASCircularWeb";--ds-asset-font-circular-weight-light: "-Light";--ds-asset-font-circular-weight-medium: "-Medium";--ds-asset-font-circular-weight-book: "-Book";--ds-border-radius: 0.375rem;--ds-size-25: 0.125rem;--ds-size-50: 0.25rem;--ds-size-75: 0.375rem;--ds-size-100: 0.5rem;--ds-size-150: 0.75rem;--ds-size-200: 1rem;--ds-size-250: 1.25rem;--ds-size-300: 1.5rem;--ds-size-400: 2rem;--ds-size-500: 2.5rem;--ds-size-600: 3rem;--ds-size-700: 3.5rem;--ds-size-800: 4rem;--ds-size-900: 4.5rem;--ds-size-1000: 5rem;--ds-unitless-scale-20: 0.25;--ds-unitless-scale-50: 0.5;--ds-unitless-scale-100: 1;--ds-unitless-scale-140: 1.4;--ds-unitless-scale-150: 1.5;--ds-unitless-scale-200: 2;--ds-unitless-scale-300: 3;--ds-unitless-scale-350: 3.5;--ds-animation-default-property: all;--ds-animation-default-duration: 0.3s;--ds-animation-default-timing: ease-out;--ds-depth-overlay: 200;--ds-depth-modal: 300;--ds-depth-tooltip: 400;--ds-elevation-100: 0px 0px 5px rgba(0, 0, 0, 0.15);--ds-elevation-200: 0px 0px 10px rgba(0, 0, 0, 0.15);--ds-elevation-300: 0px 0px 15px rgba(0, 0, 0, 0.2);--ds-grid-breakpoint-xs: 320px;--ds-grid-breakpoint-sm: 576px;--ds-grid-breakpoint-md: 768px;--ds-grid-breakpoint-lg: 1024px;--ds-grid-breakpoint-xl: 1232px;--ds-grid-column-xs: 6;--ds-grid-column-sm: 12;--ds-grid-column-md: 12;--ds-grid-column-lg: 12;--ds-grid-column-xl: 12;--ds-grid-gutter-xs: 0.5rem;--ds-grid-gutter-sm: 1rem;--ds-grid-gutter-md: 1.5rem;--ds-grid-gutter-lg: 1.5rem;--ds-grid-gutter-xl: 2rem;--ds-grid-margin-xs: 1rem;--ds-grid-margin-sm: 1rem;--ds-grid-margin-md: 1.5rem;--ds-grid-margin-lg: 2rem;--ds-grid-margin-xl: 2rem;--ds-font-family-default: "AS Circular", Helvetica Neue, Arial, sans-serif;--ds-font-family-mono: Menlo, Monaco, Consolas, "Courier New", monospace;--ds-text-heading-300-weight: 300;--ds-text-heading-300-px: 18px;--ds-text-heading-300-size: 1.125rem;--ds-text-heading-300-height: 1.625rem;--ds-text-heading-300-height-px: 26px;--ds-text-heading-400-weight: 300;--ds-text-heading-400-px: 20px;--ds-text-heading-400-size: 1.25rem;--ds-text-heading-400-height: 1.625rem;--ds-text-heading-400-height-px: 26px;--ds-text-heading-500-weight: 300;--ds-text-heading-500-px-breakpoint-sm: 22px;--ds-text-heading-500-px-breakpoint-md: 24px;--ds-text-heading-500-px-breakpoint-lg: 24px;--ds-text-heading-500-size-breakpoint-sm: 1.375rem;--ds-text-heading-500-size-breakpoint-md: 1.5rem;--ds-text-heading-500-size-breakpoint-lg: 1.5rem;--ds-text-heading-500-height-breakpoint-sm: 1.625rem;--ds-text-heading-500-height-breakpoint-px-sm: 26px;--ds-text-heading-500-height-breakpoint-md: 1.875rem;--ds-text-heading-500-height-breakpoint-px-md: 30px;--ds-text-heading-500-height-breakpoint-lg: 2rem;--ds-text-heading-500-height-breakpoint-px-lg: 32px;--ds-text-heading-600-weight: 300;--ds-text-heading-600-px-breakpoint-sm: 26px;--ds-text-heading-600-px-breakpoint-md: 28px;--ds-text-heading-600-px-breakpoint-lg: 28px;--ds-text-heading-600-size-breakpoint-sm: 1.625rem;--ds-text-heading-600-size-breakpoint-md: 1.75rem;--ds-text-heading-600-size-breakpoint-lg: 1.75rem;--ds-text-heading-600-height-breakpoint-sm: 1.875rem;--ds-text-heading-600-height-breakpoint-px-sm: 30px;--ds-text-heading-600-height-breakpoint-md: 2.125rem;--ds-text-heading-600-height-breakpoint-px-md: 34px;--ds-text-heading-600-height-breakpoint-lg: 2.25rem;--ds-text-heading-600-height-breakpoint-px-lg: 36px;--ds-text-heading-700-weight: 500;--ds-text-heading-700-px-breakpoint-sm: 28px;--ds-text-heading-700-px-breakpoint-md: 32px;--ds-text-heading-700-px-breakpoint-lg: 36px;--ds-text-heading-700-size-breakpoint-sm: 1.75rem;--ds-text-heading-700-size-breakpoint-md: 2rem;--ds-text-heading-700-size-breakpoint-lg: 2.25rem;--ds-text-heading-700-height-breakpoint-sm: 2.125rem;--ds-text-heading-700-height-breakpoint-px-sm: 34px;--ds-text-heading-700-height-breakpoint-md: 2.375rem;--ds-text-heading-700-height-breakpoint-px-md: 38px;--ds-text-heading-700-height-breakpoint-lg: 2.75rem;--ds-text-heading-700-height-breakpoint-px-lg: 44px;--ds-text-heading-800-weight: 500;--ds-text-heading-800-px-breakpoint-sm: 32px;--ds-text-heading-800-px-breakpoint-md: 36px;--ds-text-heading-800-px-breakpoint-lg: 40px;--ds-text-heading-800-size-breakpoint-sm: 2rem;--ds-text-heading-800-size-breakpoint-md: 2.25rem;--ds-text-heading-800-size-breakpoint-lg: 2.5rem;--ds-text-heading-800-height-breakpoint-sm: 2.375rem;--ds-text-heading-800-height-breakpoint-px-sm: 38px;--ds-text-heading-800-height-breakpoint-md: 2.625rem;--ds-text-heading-800-height-breakpoint-px-md: 42px;--ds-text-heading-800-height-breakpoint-lg: 3rem;--ds-text-heading-800-height-breakpoint-px-lg: 48px;--ds-text-heading-default-weight: 500;--ds-text-heading-default-margin: 0;--ds-text-heading-default-spacing: -0.2px;--ds-text-heading-medium-weight: 300;--ds-text-heading-display-weight: 100;--ds-text-heading-display-px-breakpoint-sm: 44px;--ds-text-heading-display-px-breakpoint-md: 48px;--ds-text-heading-display-px-breakpoint-lg: 56px;--ds-text-heading-display-size-breakpoint-sm: 2.75rem;--ds-text-heading-display-size-breakpoint-md: 3rem;--ds-text-heading-display-size-breakpoint-lg: 3.5rem;--ds-text-heading-display-height-breakpoint-sm: 3.375rem;--ds-text-heading-display-height-breakpoint-px-sm: 54px;--ds-text-heading-display-height-breakpoint-md: 3.75rem;--ds-text-heading-display-height-breakpoint-px-md: 60px;--ds-text-heading-display-height-breakpoint-lg: 4.25rem;--ds-text-heading-display-height-breakpoint-px-lg: 68px;--ds-text-body-default-weight: 500;--ds-text-body-size-xxs: 0.625rem;--ds-text-body-size-xs: 0.75rem;--ds-text-body-size-sm: 0.875rem;--ds-text-body-size-default: 1rem;--ds-text-body-size-lg: 1.125rem;--ds-text-body-height-xs: 1rem;--ds-text-body-height-sm: 1.25rem;--ds-text-body-height-default: 1.5rem;--ds-text-body-height-lg: 1.625rem;--ds-color-alert-notification-default: #0074c8;--ds-color-alert-warning-default: #de750c;--ds-color-alert-error-default: #df0b37;--ds-color-alert-success-default: #00805d;--ds-color-alert-advisory-default: #fff0cd;--ds-color-alert-bkg-success-default: #ddf6e8;--ds-color-alert-bkg-error-default: #ffedf1;--ds-color-background-primary-100-default: #ffffff;--ds-color-background-primary-100-inverse: #0e2b4f;--ds-color-background-primary-200-default: #f7f7f7;--ds-color-background-primary-200-inverse: #194069;--ds-color-background-primary-300-default: #e4e8ec;--ds-color-background-primary-300-inverse: #265688;--ds-color-background-primary-400-default: #dddddd;--ds-color-background-primary-400-inverse: #326aa5;--ds-color-background-success-default: #eef8f5;--ds-color-background-success-inverse: #173c30;--ds-color-background-error-default: #fff4f4;--ds-color-background-error-inverse: #74110e;--ds-color-background-warning-default: #fef8e9;--ds-color-background-warning-inverse: #5d4514;--ds-color-background-info-default: #f0f7fd;--ds-color-background-info-inverse: #193d73;--ds-color-background-subtle-default: #f7f8fa;--ds-color-background-subtle-inverse: #2a2a2a;--ds-color-background-accent-default: #ebfafd;--ds-color-background-accent-inverse: #275b72;--ds-color-background-emphasis-default: #c9e0f7;--ds-color-background-emphasis-inverse: #225296;--ds-color-background-scrimmed-default: rgba(0, 0, 0, 0.5);--ds-color-background-lightest: #ffffff;--ds-color-background-lighter: #f7f7f7;--ds-color-background-darker: #01426a;--ds-color-background-darkest: #00274a;--ds-color-background-gradient-default: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.5));--ds-color-base-white: #ffffff;--ds-color-base-white-100: rgba(255, 255, 255, 0.03);--ds-color-base-white-200: rgba(255, 255, 255, 0.06);--ds-color-base-white-300: rgba(255, 255, 255, 0.12);--ds-color-base-white-400: rgba(255, 255, 255, 0.25);--ds-color-base-white-500: rgba(255, 255, 255, 0.5);--ds-color-base-white-opacity-50: rgba(255, 255, 255, 0.5);--ds-color-base-white-opacity-40: rgba(255, 255, 255, 0.4);--ds-color-base-white-opacity-0: rgba(255, 255, 255, 0);--ds-color-base-black: #000000;--ds-color-base-black-100: rgba(0, 0, 0, 0.03);--ds-color-base-black-200: rgba(0, 0, 0, 0.06);--ds-color-base-black-300: rgba(0, 0, 0, 0.12);--ds-color-base-black-400: rgba(0, 0, 0, 0.25);--ds-color-base-black-500: rgba(0, 0, 0, 0.5);--ds-color-base-black-opacity-15: rgba(0, 0, 0, 0.15);--ds-color-base-blue-100: #f0f7fd;--ds-color-base-blue-200: #c9e0f7;--ds-color-base-blue-300: #a0c9f1;--ds-color-base-blue-400: #79b2ec;--ds-color-base-blue-500: #5398e6;--ds-color-base-blue-600: #3b7fd2;--ds-color-base-blue-700: #2c67b5;--ds-color-base-blue-800: #225296;--ds-color-base-blue-900: #193d73;--ds-color-base-blue-1000: #102a51;--ds-color-base-cyan-100: #ebfafd;--ds-color-base-cyan-200: #a8e9f7;--ds-color-base-cyan-300: #6ad5ef;--ds-color-base-cyan-400: #56bbde;--ds-color-base-cyan-500: #4aa2c7;--ds-color-base-cyan-600: #3e89aa;--ds-color-base-cyan-700: #32718e;--ds-color-base-cyan-800: #275b72;--ds-color-base-cyan-900: #1d4658;--ds-color-base-cyan-1000: #12303d;--ds-color-base-error-100: #fff4f4;--ds-color-base-error-200: #f9aca6;--ds-color-base-error-300: #f16359;--ds-color-base-error-400: #cc1816;--ds-color-base-error-500: #74110e;--ds-color-base-gray-100: #f7f7f7;--ds-color-base-gray-200: #d4d4d4;--ds-color-base-gray-300: #c5c5c5;--ds-color-base-gray-400: #adadad;--ds-color-base-gray-500: #959595;--ds-color-base-gray-600: #7e7e7e;--ds-color-base-gray-700: #676767;--ds-color-base-gray-800: #525252;--ds-color-base-gray-900: #3d3d3d;--ds-color-base-gray-1000: #2a2a2a;--ds-color-base-green-100: #f3faf7;--ds-color-base-green-200: #000000;--ds-color-base-green-300: #addbca;--ds-color-base-green-400: #7ec6ac;--ds-color-base-green-500: #51ae8c;--ds-color-base-green-600: #459578;--ds-color-base-green-700: #3a7d64;--ds-color-base-green-800: #306854;--ds-color-base-green-900: #285545;--ds-color-base-green-1000: #1f4436;--ds-color-base-lime-100: #f5fbeb;--ds-color-base-lime-200: #d8efb4;--ds-color-base-lime-300: #badd81;--ds-color-base-lime-400: #a2c270;--ds-color-base-lime-500: #8ca761;--ds-color-base-lime-600: #778f53;--ds-color-base-lime-700: #647845;--ds-color-base-lime-800: #53643a;--ds-color-base-lime-900: #44522f;--ds-color-base-lime-1000: #364126;--ds-color-base-navy-100: #f2f7fb;--ds-color-base-navy-200: #cfe0ef;--ds-color-base-navy-300: #acc9e2;--ds-color-base-navy-400: #89b2d4;--ds-color-base-navy-500: #6899c6;--ds-color-base-navy-600: #4a82b7;--ds-color-base-navy-700: #326aa5;--ds-color-base-navy-800: #265688;--ds-color-base-navy-900: #194069;--ds-color-base-navy-1000: #0e2b4f;--ds-color-base-neutral-100: #f7f8fa;--ds-color-base-neutral-200: #e4e8ec;--ds-color-base-neutral-300: #ccd2db;--ds-color-base-neutral-400: #afb9c6;--ds-color-base-neutral-500: #939fad;--ds-color-base-neutral-600: #7e8894;--ds-color-base-neutral-700: #6a717c;--ds-color-base-neutral-800: #585e67;--ds-color-base-neutral-900: #484d55;--ds-color-base-neutral-1000: #393d43;--ds-color-base-pink-100: #fff7f8;--ds-color-base-pink-200: #fde0e6;--ds-color-base-pink-300: #fcc2ce;--ds-color-base-pink-400: #fa9db0;--ds-color-base-pink-500: #f7738e;--ds-color-base-pink-600: #e45472;--ds-color-base-pink-700: #bf475f;--ds-color-base-pink-800: #a03b50;--ds-color-base-pink-900: #833142;--ds-color-base-pink-1000: #692734;--ds-color-base-purple-100: #fbf8fe;--ds-color-base-purple-200: #ede3fd;--ds-color-base-purple-300: #ddc9fb;--ds-color-base-purple-400: #c9a9f8;--ds-color-base-purple-500: #b588f5;--ds-color-base-purple-600: #a268f3;--ds-color-base-purple-700: #8d47f0;--ds-color-base-purple-800: #7633d7;--ds-color-base-purple-900: #622ab2;--ds-color-base-purple-1000: #4e228d;--ds-color-base-red-100: #fef7f5;--ds-color-base-red-200: #fae2da;--ds-color-base-red-300: #f5c7b8;--ds-color-base-red-400: #f0a68d;--ds-color-base-red-500: #e9815e;--ds-color-base-red-600: #e35c2f;--ds-color-base-red-700: #d03a08;--ds-color-base-red-800: #ae3007;--ds-color-base-red-900: #902806;--ds-color-base-red-1000: #732005;--ds-color-base-success-100: #eef8f5;--ds-color-base-success-200: #8eceb9;--ds-color-base-success-300: #40a080;--ds-color-base-success-400: #0b6f4d;--ds-color-base-success-500: #173c30;--ds-color-base-turquoise-100: #f7fafa;--ds-color-base-turquoise-200: #dfe9ea;--ds-color-base-turquoise-300: #c2d5d6;--ds-color-base-turquoise-400: #9fbdbe;--ds-color-base-turquoise-500: #7ba5a6;--ds-color-base-turquoise-600: #5c8f91;--ds-color-base-turquoise-700: #3d7a7d;--ds-color-base-turquoise-800: #21686a;--ds-color-base-turquoise-900: #085659;--ds-color-base-turquoise-1000: #004447;--ds-color-base-yellow-100: #fff9df;--ds-color-base-yellow-200: #ffe87e;--ds-color-base-yellow-300: #f9ce06;--ds-color-base-yellow-400: #d6b622;--ds-color-base-yellow-500: #b49d35;--ds-color-base-yellow-600: #96873e;--ds-color-base-yellow-700: #7c7140;--ds-color-base-yellow-800: #665e3d;--ds-color-base-yellow-900: #524e38;--ds-color-base-yellow-1000: #403d30;--ds-color-base-warning-100: #fef8e9;--ds-color-base-warning-200: #f2c153;--ds-color-base-warning-300: #c49432;--ds-color-base-warning-400: #8e6b22;--ds-color-base-warning-500: #5d4514;--ds-color-state-error-100: #ff999b;--ds-color-state-error-500: #df0b37;--ds-color-state-success-100: #69cf96;--ds-color-state-success-500: #00805d;--ds-color-state-warning-500: #de750c;--ds-color-border-primary-default: #585e67;--ds-color-border-primary-inverse: #afb9c6;--ds-color-border-secondary-default: #939fad;--ds-color-border-secondary-inverse: #7e8894;--ds-color-border-tertiary-default: #dddddd;--ds-color-border-tertiary-inverse: #676767;--ds-color-border-error-default: #cc1816;--ds-color-border-error-inverse: #f9aca6;--ds-color-border-divider-default: rgba(0, 0, 0, 0.12);--ds-color-border-divider-inverse: rgba(255, 255, 255, 0.25);--ds-color-border-subtle-default: #f0f7fd;--ds-color-border-subtle-inverse: #326aa5;--ds-color-border-emphasis-default: #194069;--ds-color-border-emphasis-inverse: #f2f7fb;--ds-color-border-accent-default: #badd81;--ds-color-border-accent-inverse: #a2c270;--ds-color-border-success-default: #0b6f4d;--ds-color-border-success-inverse: #8eceb9;--ds-color-border-warning-default: #c49432;--ds-color-border-warning-inverse: #f2c153;--ds-color-border-info-default: #326aa5;--ds-color-border-info-inverse: #89b2d4;--ds-color-border-ui-default-default: #2c67b5;--ds-color-border-ui-default-inverse: #56bbde;--ds-color-border-ui-hover-default: #193d73;--ds-color-border-ui-hover-inverse: #a8e9f7;--ds-color-border-ui-active-default: #225296;--ds-color-border-ui-active-inverse: #6ad5ef;--ds-color-border-ui-focus-default: #2c67b5;--ds-color-border-ui-focus-inverse: #56bbde;--ds-color-border-ui-disabled-default: #adadad;--ds-color-border-ui-disabled-inverse: #7e7e7e;--ds-color-border-active-default: #0074c8;--ds-color-border-active-inverse: #00cff0;--ds-color-border-disabled-default: #d4d4d4;--ds-color-border-focus-default: #959595;--ds-color-brand-neutral-100: #f7f8fa;--ds-color-brand-neutral-200: #e4e8ec;--ds-color-brand-neutral-300: #ccd2db;--ds-color-brand-neutral-400: #afb9c6;--ds-color-brand-neutral-500: #939fad;--ds-color-brand-neutral-600: #7e8894;--ds-color-brand-neutral-700: #6a717c;--ds-color-brand-neutral-800: #585e67;--ds-color-brand-neutral-900: #484d55;--ds-color-brand-neutral-1000: #393d43;--ds-color-brand-gray-100: #f7f7f7;--ds-color-brand-gray-200: #dddddd;--ds-color-brand-gray-300: #c5c5c5;--ds-color-brand-gray-400: #adadad;--ds-color-brand-gray-500: #959595;--ds-color-brand-gray-600: #7e7e7e;--ds-color-brand-gray-700: #676767;--ds-color-brand-gray-800: #525252;--ds-color-brand-gray-900: #3d3d3d;--ds-color-brand-gray-1000: #2a2a2a;--ds-color-brand-red-100: #fef7f5;--ds-color-brand-red-200: #fae2da;--ds-color-brand-red-300: #f5c7b8;--ds-color-brand-red-400: #f0a68d;--ds-color-brand-red-500: #e9815e;--ds-color-brand-red-600: #e35c2f;--ds-color-brand-red-700: #d03a08;--ds-color-brand-red-800: #ae3007;--ds-color-brand-red-900: #902806;--ds-color-brand-red-1000: #732005;--ds-color-brand-yellow-100: #fff9df;--ds-color-brand-yellow-200: #ffe87e;--ds-color-brand-yellow-300: #f9ce06;--ds-color-brand-yellow-400: #d6b622;--ds-color-brand-yellow-500: #b49d35;--ds-color-brand-yellow-600: #96873e;--ds-color-brand-yellow-700: #7c7140;--ds-color-brand-yellow-800: #665e3d;--ds-color-brand-yellow-900: #524e38;--ds-color-brand-yellow-1000: #403d30;--ds-color-brand-lime-100: #f5fbeb;--ds-color-brand-lime-200: #d8efb4;--ds-color-brand-lime-300: #badd81;--ds-color-brand-lime-400: #a2c270;--ds-color-brand-lime-500: #8ca761;--ds-color-brand-lime-600: #778f53;--ds-color-brand-lime-700: #647845;--ds-color-brand-lime-800: #53643a;--ds-color-brand-lime-900: #44522f;--ds-color-brand-lime-1000: #364126;--ds-color-brand-green-100: #f3faf7;--ds-color-brand-green-200: #d4ece4;--ds-color-brand-green-300: #addbca;--ds-color-brand-green-400: #7ec6ac;--ds-color-brand-green-500: #51ae8c;--ds-color-brand-green-600: #459578;--ds-color-brand-green-700: #3a7d64;--ds-color-brand-green-800: #306854;--ds-color-brand-green-900: #285545;--ds-color-brand-green-1000: #1f4436;--ds-color-brand-turquoise-100: #f7fafa;--ds-color-brand-turquoise-200: #dfe9ea;--ds-color-brand-turquoise-300: #c2d5d6;--ds-color-brand-turquoise-400: #9fbdbe;--ds-color-brand-turquoise-500: #7ba5a6;--ds-color-brand-turquoise-600: #5c8f91;--ds-color-brand-turquoise-700: #3d7a7d;--ds-color-brand-turquoise-800: #21686a;--ds-color-brand-turquoise-900: #085659;--ds-color-brand-turquoise-1000: #004447;--ds-color-brand-cyan-100: #ebfafd;--ds-color-brand-cyan-200: #a8e9f7;--ds-color-brand-cyan-300: #6ad5ef;--ds-color-brand-cyan-400: #56bbde;--ds-color-brand-cyan-500: #4aa2c7;--ds-color-brand-cyan-600: #3e89aa;--ds-color-brand-cyan-700: #32718e;--ds-color-brand-cyan-800: #275b72;--ds-color-brand-cyan-900: #1d4658;--ds-color-brand-cyan-1000: #12303d;--ds-color-brand-blue-100: #f0f7fd;--ds-color-brand-blue-200: #c9e0f7;--ds-color-brand-blue-300: #a0c9f1;--ds-color-brand-blue-400: #79b2ec;--ds-color-brand-blue-500: #5398e6;--ds-color-brand-blue-600: #3b7fd2;--ds-color-brand-blue-700: #2c67b5;--ds-color-brand-blue-800: #225296;--ds-color-brand-blue-900: #193d73;--ds-color-brand-blue-1000: #102a51;--ds-color-brand-navy-100: #f2f7fb;--ds-color-brand-navy-200: #cfe0ef;--ds-color-brand-navy-300: #acc9e2;--ds-color-brand-navy-400: #89b2d4;--ds-color-brand-navy-500: #6899c6;--ds-color-brand-navy-600: #4a82b7;--ds-color-brand-navy-700: #326aa5;--ds-color-brand-navy-800: #265688;--ds-color-brand-navy-900: #194069;--ds-color-brand-navy-1000: #0e2b4f;--ds-color-brand-purple-100: #fbf8fe;--ds-color-brand-purple-200: #ede3fd;--ds-color-brand-purple-300: #ddc9fb;--ds-color-brand-purple-400: #c9a9f8;--ds-color-brand-purple-500: #b588f5;--ds-color-brand-purple-600: #a268f3;--ds-color-brand-purple-700: #8d47f0;--ds-color-brand-purple-800: #7633d7;--ds-color-brand-purple-900: #622ab2;--ds-color-brand-purple-1000: #4e228d;--ds-color-brand-pink-100: #fff7f8;--ds-color-brand-pink-200: #fde0e6;--ds-color-brand-pink-300: #fcc2ce;--ds-color-brand-pink-400: #fa9db0;--ds-color-brand-pink-500: #f7738e;--ds-color-brand-pink-600: #e45472;--ds-color-brand-pink-700: #bf475f;--ds-color-brand-pink-800: #a03b50;--ds-color-brand-pink-900: #833142;--ds-color-brand-pink-1000: #692734;--ds-color-brand-midnight-100: #c1daf0;--ds-color-brand-midnight-200: #569ed7;--ds-color-brand-midnight-300: #156fad;--ds-color-brand-midnight-400: #01426a;--ds-color-brand-midnight-500: #00274a;--ds-color-brand-atlas-100: #cde6ff;--ds-color-brand-atlas-200: #6bb7fb;--ds-color-brand-atlas-300: #2492eb;--ds-color-brand-atlas-400: #0074c8;--ds-color-brand-atlas-500: #054687;--ds-color-brand-atlas-400-opacity-20: rgba(0, 116, 200, 0.2);--ds-color-brand-breeze-100: #c0f7ff;--ds-color-brand-breeze-200: #5de3f7;--ds-color-brand-breeze-300: #00cff0;--ds-color-brand-breeze-400: #099dc5;--ds-color-brand-breeze-500: #0b5575;--ds-color-brand-breeze-300-opacity-30: rgba(0, 207, 240, 0.3);--ds-color-brand-tropical-100: #e2ffcd;--ds-color-brand-tropical-200: #d0fba6;--ds-color-brand-tropical-300: #c0e585;--ds-color-brand-tropical-400: #91be62;--ds-color-brand-tropical-500: #5e8741;--ds-color-brand-alpine-100: #bcaae6;--ds-color-brand-alpine-200: #9e73ea;--ds-color-brand-alpine-300: #8439ef;--ds-color-brand-alpine-400: #631db8;--ds-color-brand-alpine-500: #39115c;--ds-color-brand-flamingo-100: #ffebee;--ds-color-brand-flamingo-200: #ffc0ca;--ds-color-brand-flamingo-300: #ff94a7;--ds-color-brand-flamingo-400: #f65b7b;--ds-color-brand-flamingo-500: #b82b47;--ds-color-brand-canyon-100: #ffcab6;--ds-color-brand-canyon-200: #f99574;--ds-color-brand-canyon-300: #f26135;--ds-color-brand-canyon-400: #de3e09;--ds-color-brand-canyon-500: #b83302;--ds-color-brand-goldcoast-100: #fff0cd;--ds-color-brand-goldcoast-200: #ffdb67;--ds-color-brand-goldcoast-300: #ffd200;--ds-color-brand-goldcoast-400: #e5ad07;--ds-color-brand-goldcoast-500: #b88624;--ds-color-brand-goldgray-100: #c5c1bf;--ds-color-brand-goldgray-200: #726e6c;--ds-color-brand-gold-100: #ccbc94;--ds-color-brand-gold-200: #7f682e;--ds-color-brand-emerald: #139142;--ds-color-brand-sapphire: #015daa;--ds-color-brand-ruby: #a41d4a;--ds-color-brand-lounge: #01426a;--ds-color-brand-loungeplus: #53b390;--ds-color-container-accent-default: #f5fbeb;--ds-color-container-accent-inverse: #badd81;--ds-color-container-emphasis-default: #ebfafd;--ds-color-container-emphasis-inverse: #6ad5ef;--ds-color-container-error-default: #fff4f4;--ds-color-container-error-inverse: #74110e;--ds-color-container-info-default: #f0f7fd;--ds-color-container-info-inverse: #193d73;--ds-color-container-primary-default: #ffffff;--ds-color-container-primary-inverse: #0e2b4f;--ds-color-container-secondary-default: #f7f7f7;--ds-color-container-secondary-inverse: #194069;--ds-color-container-subtle-default: #f7f8fa;--ds-color-container-subtle-inverse: #393d43;--ds-color-container-success-default: #eef8f5;--ds-color-container-success-inverse: #173c30;--ds-color-container-tertiary-default: rgba(0, 0, 0, 0.03);--ds-color-container-tertiary-inverse: rgba(255, 255, 255, 0.06);--ds-color-container-warning-default: #fef8e9;--ds-color-container-warning-inverse: #5d4514;--ds-color-container-ui-primary-active-default: #225296;--ds-color-container-ui-primary-active-inverse: #6ad5ef;--ds-color-container-ui-primary-default-default: #2c67b5;--ds-color-container-ui-primary-default-inverse: #56bbde;--ds-color-container-ui-primary-disabled-default: #a0c9f1;--ds-color-container-ui-primary-disabled-inverse: #275b72;--ds-color-container-ui-primary-focus-default: #2c67b5;--ds-color-container-ui-primary-focus-inverse: #56bbde;--ds-color-container-ui-primary-hover-default: #193d73;--ds-color-container-ui-primary-hover-inverse: #a8e9f7;--ds-color-container-ui-secondary-active-default: #f0f7fd;--ds-color-container-ui-secondary-active-inverse: rgba(255, 255, 255, 0.06);--ds-color-container-ui-secondary-default-default: #ffffff;--ds-color-container-ui-secondary-default-inverse: rgba(255, 255, 255, 0.03);--ds-color-container-ui-secondary-disabled-default: #f7f7f7;--ds-color-container-ui-secondary-disabled-inverse: rgba(255, 255, 255, 0.12);--ds-color-container-ui-secondary-focus-default: #ffffff;--ds-color-container-ui-secondary-focus-inverse: rgba(255, 255, 255, 0.03);--ds-color-container-ui-secondary-hover-default: rgba(0, 0, 0, 0.03);--ds-color-container-ui-secondary-hover-inverse: rgba(255, 255, 255, 0.12);--ds-color-container-ui-tertiary-active-default: rgba(0, 0, 0, 0.06);--ds-color-container-ui-tertiary-active-inverse: rgba(255, 255, 255, 0.06);--ds-color-container-ui-tertiary-default-default: rgba(0, 0, 0, 0.03);--ds-color-container-ui-tertiary-default-inverse: rgba(255, 255, 255, 0.12);--ds-color-container-ui-tertiary-disabled-default: rgba(0, 0, 0, 0.03);--ds-color-container-ui-tertiary-disabled-inverse: rgba(255, 255, 255, 0.25);--ds-color-container-ui-tertiary-focus-default: rgba(0, 0, 0, 0.03);--ds-color-container-ui-tertiary-focus-inverse: rgba(255, 255, 255, 0.12);--ds-color-container-ui-tertiary-hover-default: rgba(0, 0, 0, 0.12);--ds-color-container-ui-tertiary-hover-inverse: rgba(255, 255, 255, 0.25);--ds-color-icon-primary-default: #676767;--ds-color-icon-primary-inverse: #f7f7f7;--ds-color-icon-secondary-default: #7e8894;--ds-color-icon-secondary-inverse: #ccd2db;--ds-color-icon-tertiary-default: #afb9c6;--ds-color-icon-tertiary-inverse: #939fad;--ds-color-icon-emphasis-default: #2a2a2a;--ds-color-icon-emphasis-inverse: #ffffff;--ds-color-icon-accent-default: #a2c270;--ds-color-icon-accent-inverse: #badd81;--ds-color-icon-info-default: #326aa5;--ds-color-icon-info-inverse: #89b2d4;--ds-color-icon-error-default: #cc1816;--ds-color-icon-error-inverse: #f9aca6;--ds-color-icon-warning-default: #c49432;--ds-color-icon-warning-inverse: #f2c153;--ds-color-icon-success-default: #40a080;--ds-color-icon-success-inverse: #8eceb9;--ds-color-icon-subtle-default: #a0c9f1;--ds-color-icon-subtle-inverse: #326aa5;--ds-color-icon-ui-primary-default-default: #2c67b5;--ds-color-icon-ui-primary-default-inverse: #56bbde;--ds-color-icon-ui-primary-hover-default: #193d73;--ds-color-icon-ui-primary-hover-inverse: #a8e9f7;--ds-color-icon-ui-primary-active-default: #225296;--ds-color-icon-ui-primary-active-inverse: #6ad5ef;--ds-color-icon-ui-primary-disabled-default: #adadad;--ds-color-icon-ui-primary-disabled-inverse: #7e7e7e;--ds-color-icon-ui-primary-focus-default: #2c67b5;--ds-color-icon-ui-primary-focus-inverse: #56bbde;--ds-color-icon-ui-secondary-active-default: #676767;--ds-color-icon-ui-secondary-active-inverse: #c5c5c5;--ds-color-icon-ui-secondary-default-default: #7e7e7e;--ds-color-icon-ui-secondary-default-inverse: #adadad;--ds-color-icon-ui-secondary-disabled-default: #adadad;--ds-color-icon-ui-secondary-disabled-inverse: #7e7e7e;--ds-color-icon-ui-secondary-focus-default: #7e7e7e;--ds-color-icon-ui-secondary-focus-inverse: #adadad;--ds-color-icon-ui-secondary-hover-default: #525252;--ds-color-icon-ui-secondary-hover-inverse: #dddddd;--ds-color-icon-brand-red-default: #d03a08;--ds-color-icon-brand-red-inverse: #e9815e;--ds-color-icon-brand-yellow-default: #7c7140;--ds-color-icon-brand-yellow-inverse: #f9ce06;--ds-color-icon-brand-pink-default: #bf475f;--ds-color-icon-brand-pink-inverse: #f7738e;--ds-color-icon-brand-purple-default: #8d47f0;--ds-color-icon-brand-purple-inverse: #b588f5;--ds-color-icon-brand-lime-default: #647845;--ds-color-icon-brand-lime-inverse: #badd81;--ds-color-icon-brand-green-default: #3a7d64;--ds-color-icon-brand-green-inverse: #51ae8c;--ds-color-icon-brand-turquoise-default: #3d7a7d;--ds-color-icon-brand-turquoise-inverse: #7ba5a6;--ds-color-icon-brand-navy-default: #265688;--ds-color-icon-brand-navy-inverse: #6899c6;--ds-color-icon-brand-blue-default: #2c67b5;--ds-color-icon-brand-blue-inverse: #5398e6;--ds-color-icon-brand-cyan-default: #32718e;--ds-color-icon-brand-cyan-inverse: #6ad5ef;--ds-color-icon-brand-gray-default: #676767;--ds-color-icon-brand-gray-inverse: #c5c5c5;--ds-color-icon-brand-neutral-default: #6a717c;--ds-color-icon-brand-neutral-inverse: #afb9c6;--ds-color-icon-disabled-default: rgba(0, 0, 0, 0.15);--ds-color-text-primary-default: #2a2a2a;--ds-color-text-primary-inverse: #ffffff;--ds-color-text-secondary-default: #525252;--ds-color-text-secondary-inverse: #dddddd;--ds-color-text-tertiary-default: #6a717c;--ds-color-text-tertiary-inverse: #adadad;--ds-color-text-error-default: #cc1816;--ds-color-text-error-inverse: #f9aca6;--ds-color-text-emphasis-default: #265688;--ds-color-text-emphasis-inverse: #cfe0ef;--ds-color-text-accent-default: #647845;--ds-color-text-accent-inverse: #badd81;--ds-color-text-info-default: #326aa5;--ds-color-text-info-inverse: #acc9e2;--ds-color-text-subtle-default: #32718e;--ds-color-text-subtle-inverse: #56bbde;--ds-color-text-success-default: #0b6f4d;--ds-color-text-success-inverse: #8eceb9;--ds-color-text-ui-active-default: #225296;--ds-color-text-ui-active-inverse: #6ad5ef;--ds-color-text-ui-default-default: #2c67b5;--ds-color-text-ui-default-inverse: #56bbde;--ds-color-text-ui-disabled-default: #adadad;--ds-color-text-ui-disabled-inverse: #7e7e7e;--ds-color-text-ui-focus-default: #2c67b5;--ds-color-text-ui-focus-inverse: #56bbde;--ds-color-text-ui-hover-default: #193d73;--ds-color-text-ui-hover-inverse: #a8e9f7;--ds-color-text-link-default: #0074c8;--ds-color-text-link-inverse: #00cff0;--ds-color-tier-alaska-mvp-default: #726e6c;--ds-color-tier-alaska-mvp-inverse: #c5c1bf;--ds-color-tier-alaska-mvpgold-default: #7f682e;--ds-color-tier-alaska-mvpgold-inverse: #c5c1bf;--ds-color-tier-alaska-mvpgold75k-default: #7f682e;--ds-color-tier-alaska-mvpgold75k-inverse: #c5c1bf;--ds-color-tier-alaska-mvpgold100k-default: #7f682e;--ds-color-tier-alaska-mvpgold100k-inverse: #c5c1bf;--ds-color-tier-alaska-lounge: #01426a;--ds-color-tier-alaska-loungeplus: #53b390;--ds-color-tier-fare-business-default: #005154;--ds-color-tier-fare-business-inverse: #9fbdbe;--ds-color-tier-fare-economy-default: #2c67b5;--ds-color-tier-fare-economy-inverse: #a0c9f1;--ds-color-tier-fare-first-class-default: #002c4e;--ds-color-tier-fare-first-class-inverse: #89b2d4;--ds-color-tier-fare-saver-default: #4aa2c7;--ds-color-tier-fare-saver-inverse: #a8e9f7;--ds-color-tier-oneworld-emerald: #139142;--ds-color-tier-oneworld-sapphire: #015daa;--ds-color-tier-oneworld-ruby: #a41d4a;--ds-color-ui-default-default: #0074c8;--ds-color-ui-default-inverse: #00cff0;--ds-color-ui-hover-default: #054687;--ds-color-ui-hover-inverse: #5de3f7;--ds-color-ui-active-default: #054687;--ds-color-ui-active-inverse: #5de3f7;--ds-color-ui-disabled-default: rgba(0, 116, 200, 0.2);--ds-color-ui-bkg-default-default: rgba(0, 0, 0, 0.03);--ds-color-ui-bkg-default-inverse: rgba(255, 255, 255, 0.03);--ds-color-ui-bkg-hover-default: rgba(0, 0, 0, 0.06);--ds-color-ui-bkg-hover-inverse: rgba(255, 255, 255, 0.06);--ds-color-utility-blue-default: #79b2ec;--ds-color-utility-blue-inverse: #c9e0f7;--ds-color-utility-cyan-default: #6ad5ef;--ds-color-utility-cyan-inverse: #a8e9f7;--ds-color-utility-green-default: #7ec6ac;--ds-color-utility-green-inverse: #addbca;--ds-color-utility-gray-default: #adadad;--ds-color-utility-gray-inverse: #dddddd;--ds-color-utility-lime-default: #badd81;--ds-color-utility-lime-inverse: #d8efb4;--ds-color-utility-navy-default: #265688;--ds-color-utility-navy-inverse: #acc9e2;--ds-color-utility-neutral-default: #7e8894;--ds-color-utility-neutral-inverse: #ccd2db;--ds-color-utility-pink-default: #f7738e;--ds-color-utility-pink-inverse: #fcc2ce;--ds-color-utility-purple-default: #8d47f0;--ds-color-utility-purple-inverse: #ddc9fb;--ds-color-utility-red-default: #e35c2f;--ds-color-utility-red-inverse: #f0a68d;--ds-color-utility-turquoise-default: #5c8f91;--ds-color-utility-turquoise-inverse: #9fbdbe;--ds-color-utility-yellow-default: #f9ce06;--ds-color-utility-yellow-inverse: #ffe87e;--ds-color-utility-error-default: #cc1816;--ds-color-utility-error-inverse: #f9aca6;--ds-color-utility-warning-default: #f2c153;--ds-color-utility-warning-inverse: #f2c153;--ds-color-utility-success-default: #0b6f4d;--ds-color-utility-success-inverse: #8eceb9}*,*:before,*:after{box-sizing:border-box}@media(prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}}*:focus-visible{outline:0}*:focus-visible{outline:0}:focus:not(:focus-visible){outline:3px solid transparent}:host{display:inline-block;width:100%;margin:0;padding:0;vertical-align:middle}:host ::slotted(auro-menuoption),:host ::slotted([auro-menuoption]),:host auro-menuoption[loadingplaceholder]{padding-left:calc(var(--ds-size-150, 0.75rem) + 24px + var(--ds-size-100, 0.5rem))}:host ::slotted([selected]){padding-left: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([nocheckmark]) ::slotted(auro-menuoption),:host([nocheckmark]) auro-menuoption[loadingplaceholder]{padding-left:var(--ds-size-200, 1rem)}:host([root]){overflow-y:auto}[loadingplaceholder]{color:var(--ds-color-text-secondary-default, #525252)}[loadingplaceholder].empty{opacity:0;position:absolute}[loadingplaceholder] slot[name=loadingIcon]{vertical-align:middle;line-height:1;display:inline-block}[loadingplaceholder] slot[name=loadingIcon]::slotted(*){margin-right:var(--ds-size-150, 0.75rem)}`;
7966
8040
 
7967
8041
  var colorCss$2 = i$c`:host ::slotted(hr){border-top-color:var(--ds-auro-menu-divider-color) !important}`;
7968
8042
 
7969
8043
  var tokensCss$1 = i$c`:host{--ds-auro-menu-divider-color: var(--ds-color-border-divider-default, $ds-color-border-divider-default);--ds-auro-menuoption-container-color: transparent;--ds-auro-menuoption-icon-color: transparent;--ds-auro-menuoption-text-color: var(--ds-color-text-primary-default, $ds-color-text-primary-default)}`;
7970
8044
 
7971
- var styleCss$1 = i$c`:host{display:flex;align-items:center;padding:var(--ds-size-50, 0.25rem) var(--ds-size-200, 1rem) var(--ds-size-50, 0.25rem) 0;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}:host slot{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host [auro-icon]{--ds-auro-icon-size: var(--ds-size-300, 1.5rem);margin-right:var(--ds-size-150, 0.75rem);margin-left:var(--ds-size-100, 0.5rem)}:host ::slotted(.nestingSpacer){display:inline-block;width:var(--ds-size-300, 1.5rem)}:host ::slotted(strong){font-weight:700}:host([hidden]){display:none}:host([static]){pointer-events:none}:host([disabled]:hover){cursor:auto}:host([disabled]){user-select:none;pointer-events:none}`;
8045
+ // Copyright (c) 2021 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
8046
+ // See LICENSE in the project root for license information.
7972
8047
 
7973
- var colorCss$1 = i$c`:host{background-color:var(--ds-auro-menuoption-container-color);color:var(--ds-auro-menuoption-text-color)}:host svg{fill:var(--ds-auro-menuoption-icon-color) !important}:host([disabled]){--ds-auro-menuoption-text-color: var(--ds-color-text-ui-disabled-default, #adadad)}:host(:hover),:host(.active){--ds-auro-menuoption-container-color: var(--ds-color-container-ui-secondary-hover-default, rgba(0, 0, 0, 0.03))}:host([selected]){--ds-auro-menuoption-container-color: var(--ds-color-container-ui-primary-default-default, #2c67b5);--ds-auro-menuoption-text-color: var(--ds-color-text-primary-inverse, #ffffff);--ds-auro-menuoption-icon-color: var(--ds-color-icon-emphasis-inverse, #ffffff)}`;
7974
8048
 
8049
+ // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
7975
8050
  /**
7976
- * @license
7977
- * Copyright 2017 Google LLC
7978
- * SPDX-License-Identifier: BSD-3-Clause
8051
+ * The auro-menu element provides users a way to select from a list of options.
8052
+ * @attr {Object} optionSelected - Specifies the current selected menuOption.
8053
+ * @attr {String} matchWord - Specifies a string used to highlight matched string parts in options.
8054
+ * @attr {Boolean} disabled - When true, the entire menu and all options are disabled;
8055
+ * @attr {Boolean} noCheckmark - When true, selected option will not show the checkmark.
8056
+ * @attr {Boolean} loading - When true, displays a loading state using the loadingIcon and loadingText slots if provided.
8057
+ * @attr {String} value - Value selected for the menu.
8058
+ * @prop {Boolean} hasLoadingPlaceholder - Indicates whether the menu has a loadingIcon or loadingText to render when in a loading state.
8059
+ * @event auroMenu-selectedOption - Notifies that a new menuoption selection has been made.
8060
+ * @event selectedOption - (DEPRECATED) Notifies that a new menuoption selection has been made.
8061
+ * @event auroMenu-activatedOption - Notifies that a menuoption has been made `active`.
8062
+ * @event auroMenuActivatedOption - (DEPRECATED) Notifies that a menuoption has been made `active`.
8063
+ * @event auroMenu-selectValueFailure - Notifies that a an attempt to select a menuoption by matching a value has failed.
8064
+ * @event auroMenuSelectValueFailure - (DEPRECATED) Notifies that a an attempt to select a menuoption by matching a value has failed.
8065
+ * @event auroMenu-customEventFired - Notifies that a custom event has been fired.
8066
+ * @event auroMenuCustomEventFired - (DEPRECATED) Notifies that a custom event has been fired.
8067
+ * @event auroMenu-selectValueReset - Notifies that the component value has been reset.
8068
+ * @event auroMenu-loadingChange - Notifies when the loading attribute is changed.
8069
+ * @slot loadingText - Text to show while loading attribute is set
8070
+ * @slot loadingIcon - Icon to show while loading attribute is set
8071
+ * @slot - Slot for insertion of menu options.
7979
8072
  */
7980
- const t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e$1=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i;}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}
7981
8073
 
7982
- /**
7983
- * @license
7984
- * Copyright 2018 Google LLC
7985
- * SPDX-License-Identifier: BSD-3-Clause
7986
- */const e=e$1(class extends i{constructor(t$1){if(super(t$1),t$1.type!==t.ATTRIBUTE||"class"!==t$1.name||t$1.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return " "+Object.keys(t).filter((s=>t[s])).join(" ")+" "}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(" ").split(/\s/).filter((t=>""!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)));}return T$2}});
8074
+ /* eslint-disable no-magic-numbers, max-lines */
7987
8075
 
7988
- /**
7989
- * @license
7990
- * Copyright 2018 Google LLC
7991
- * SPDX-License-Identifier: BSD-3-Clause
7992
- */const o=o=>o??E$2;
8076
+ class AuroMenu extends r$6 {
8077
+ constructor() {
8078
+ super();
8079
+ this.value = undefined;
8080
+ this.optionSelected = undefined;
8081
+ this.matchWord = undefined;
8082
+ this.noCheckmark = false;
8083
+ this.optionActive = undefined;
8084
+ this.loading = false;
7993
8085
 
7994
- // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
7995
- // See LICENSE in the project root for license information.
8086
+ /**
8087
+ * @private
8088
+ */
8089
+ this.rootMenu = true;
7996
8090
 
8091
+ /**
8092
+ * @private
8093
+ */
8094
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$2();
7997
8095
 
7998
- /**
7999
- * @attr {Boolean} hidden - If present, the component will be hidden both visually and from screen readers
8000
- * @attr {Boolean} hiddenVisually - If present, the component will be hidden visually, but still read by screen readers
8001
- * @attr {Boolean} hiddenAudible - If present, the component will be hidden from screen readers, but seen visually
8002
- */
8096
+ /**
8097
+ * @private
8098
+ */
8099
+ this.nestingSpacer = '<span class="nestingSpacer"></span>';
8003
8100
 
8004
- class AuroElement extends r$6 {
8101
+ /**
8102
+ * @private
8103
+ */
8104
+ this.loadingSlots = null;
8105
+ }
8005
8106
 
8006
- // function to define props used within the scope of this component
8007
8107
  static get properties() {
8008
8108
  return {
8009
- hidden: { type: Boolean,
8010
- reflect: true },
8011
- hiddenVisually: { type: Boolean,
8012
- reflect: true },
8013
- hiddenAudible: { type: Boolean,
8014
- reflect: true },
8109
+ noCheckmark: {
8110
+ type: Boolean,
8111
+ reflect: true
8112
+ },
8113
+ disabled: {
8114
+ type: Boolean,
8115
+ reflect: true
8116
+ },
8117
+ loading: {
8118
+ type: Boolean,
8119
+ reflect: true
8120
+ },
8121
+ optionSelected: { type: Object },
8122
+ optionActive: { type: Object },
8123
+ matchWord: { type: String },
8124
+ value: { type: String }
8015
8125
  };
8016
8126
  }
8017
8127
 
8128
+ static get styles() {
8129
+ return [
8130
+ styleCss$2,
8131
+ colorCss$2,
8132
+ tokensCss$1
8133
+ ];
8134
+ }
8135
+
8018
8136
  /**
8019
- * @private Function that determines state of aria-hidden
8137
+ * This will register this element with the browser.
8138
+ * @param {string} [name="auro-menu"] - The name of element that you want to register to.
8139
+ *
8140
+ * @example
8141
+ * AuroMenu.register("custom-menu") // this will register this element to <custom-menu/>
8142
+ *
8020
8143
  */
8021
- hideAudible(value) {
8022
- if (value) {
8023
- return 'true'
8024
- }
8025
-
8026
- return 'false'
8144
+ static register(name = "auro-menu") {
8145
+ AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroMenu);
8027
8146
  }
8028
- }
8029
-
8030
- var error = {"role":"img","color":"currentColor","title":"","desc":"Error alert indicator.","width":"var(--auro-size-lg, var(--ds-size-300, 1.5rem))","height":"var(--auro-size-lg, var(--ds-size-300, 1.5rem))","xmlns":"http://www.w3.org/2000/svg","xmlns_xlink":"http://www.w3.org/1999/xlink","viewBox":"0 0 24 24","path":"/icons","style":"ico_squareLarge","type":"icon","name":"error","category":"alert","deprecated":true,"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-labelledby=\"error__desc\" class=\"ico_squareLarge\" data-deprecated=\"true\" role=\"img\" style=\"min-width:var(--auro-size-lg, var(--ds-size-300, 1.5rem));height:var(--auro-size-lg, var(--ds-size-300, 1.5rem));fill:currentColor\" viewBox=\"0 0 24 24\" part=\"svg\"><title/><desc id=\"error__desc\">Error alert indicator.</desc><path d=\"m13.047 5.599 6.786 11.586A1.207 1.207 0 0 1 18.786 19H5.214a1.207 1.207 0 0 1-1.047-1.815l6.786-11.586a1.214 1.214 0 0 1 2.094 0m-1.165.87a.23.23 0 0 0-.085.085L5.419 17.442a.232.232 0 0 0 .203.35h12.756a.234.234 0 0 0 .203-.35L12.203 6.554a.236.236 0 0 0-.321-.084M12 15.5a.75.75 0 1 1 0 1.5.75.75 0 0 1 0-1.5m-.024-6.22c.325 0 .589.261.589.583v4.434a.586.586 0 0 1-.589.583.586.586 0 0 1-.588-.583V9.863c0-.322.264-.583.588-.583\"/></svg>"};
8031
8147
 
8032
- /* eslint-disable no-underscore-dangle, jsdoc/no-undefined-types, jsdoc/require-param-description */
8148
+ /**
8149
+ * Passes the noCheckmark attribute to all nested auro-menuoptions.
8150
+ * @private
8151
+ * @returns {void}
8152
+ */
8153
+ handleNoCheckmarkAttr() {
8154
+ if (this.noCheckmark) {
8155
+ const menus = this.querySelectorAll('auro-menu, [auro-menu]');
8033
8156
 
8034
- const _fetchMap = new Map();
8157
+ menus.forEach((menu) => {
8158
+ menu.setAttribute('noCheckmark', '');
8159
+ });
8035
8160
 
8036
- /**
8037
- * A callback to parse Response body.
8038
- *
8039
- * @callback ResponseParser
8040
- * @param {Fetch.Response} response
8041
- * @returns {Promise}
8042
- */
8161
+ const options = this.querySelectorAll('auro-menuoption, [auro-menuoption]');
8043
8162
 
8044
- /**
8045
- * A minimal in-memory map to de-duplicate Fetch API media requests.
8046
- *
8047
- * @param {String} uri
8048
- * @param {Object} [options={}]
8049
- * @param {ResponseParser} [options.responseParser=(response) => response.text()]
8050
- * @returns {Promise}
8051
- */
8052
- const cacheFetch = (uri, options = {}) => {
8053
- const responseParser = options.responseParser || ((response) => response.text());
8054
- if (!_fetchMap.has(uri)) {
8055
- _fetchMap.set(uri, fetch(uri).then(responseParser));
8163
+ options.forEach((option) => {
8164
+ option.setAttribute('noCheckmark', '');
8165
+ });
8166
+ }
8056
8167
  }
8057
- return _fetchMap.get(uri);
8058
- };
8059
8168
 
8060
- var styleCss = i$c`*,*:before,*:after{box-sizing:border-box}@media(prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}}*:focus-visible{outline:0}*:focus-visible{outline:0}:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock,:host{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host([hidden]:not(:focus):not(:active)){display:none}.util_displayHiddenVisually,:host([hiddenVisually]:not(:focus):not(:active)){position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.ico_squareLarge{fill:currentColor;height:var(--auro-size-lg, var(--ds-size-300, 1.5rem))}.ico_squareSmall{fill:currentColor;height:.6rem}.ico_squareMed{fill:currentColor;height:var(--auro-size-md, var(--ds-size-200, 1rem))}.ico_squareSml{fill:currentColor;height:var(--auro-size-sm, var(--ds-size-150, 0.75rem))}:host{color:currentColor;vertical-align:middle;line-height:1;display:inline-block}:host .logo{color:var(--ds-color-brand-midnight-400, #01426a)}svg{min-width:var(--ds-auro-icon-size, 1.5rem) !important;width:var(--ds-auro-icon-size, 1.5rem) !important;height:var(--ds-auro-icon-size, 1.5rem) !important}.label{display:flex;align-items:flex-start}.label svg{margin:0 var(--ds-size-50, 0.25rem)}.labelContainer{line-height:1.8}`;
8169
+ firstUpdated() {
8170
+ // Add the tag name as an attribute if it is different than the component name
8171
+ this.runtimeUtils.handleComponentTagRename(this, 'auro-menu');
8061
8172
 
8062
- // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
8063
- // See LICENSE in the project root for license information.
8173
+ this.addEventListener('keydown', this.handleKeyDown);
8064
8174
 
8175
+ this.loadingSlots = this.querySelectorAll("[slot='loadingText'], [slot='loadingIcon']");
8176
+ }
8065
8177
 
8066
- // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
8067
- /**
8068
- * @attr {Boolean} onDark - Set value for on-dark version of auro-icon
8069
- * @slot - Hidden from visibility, used for a11y if icon description is needed
8070
- */
8178
+ updated(changedProperties) {
8179
+ if (changedProperties.has('matchWord')) {
8180
+ this.markOptions();
8181
+ }
8071
8182
 
8072
- // build the component class
8073
- class BaseIcon extends AuroElement {
8074
- constructor() {
8075
- super();
8076
- this.onDark = false;
8077
- }
8183
+ if (changedProperties.has('value')) {
8184
+ this.selectByValue(this.value);
8185
+ }
8078
8186
 
8079
- // function to define props used within the scope of this component
8080
- static get properties() {
8081
- return {
8082
- ...super.properties,
8083
- onDark: {
8084
- type: Boolean,
8085
- reflect: true
8086
- },
8187
+ if (changedProperties.has('disabled')) {
8188
+ const options = Array.from(this.querySelectorAll('auro-menuoption, [auro-menuoption]'));
8087
8189
 
8088
- /**
8089
- * @private
8090
- */
8091
- svg: {
8092
- attribute: false,
8093
- reflect: true
8190
+ for (const element of options) {
8191
+ element.disabled = this.disabled;
8094
8192
  }
8095
- };
8096
- }
8193
+ }
8097
8194
 
8098
- static get styles() {
8099
- return i$c`
8100
- ${styleCss}
8101
- `;
8195
+ if (changedProperties.has('loading')) {
8196
+ const event = new CustomEvent("auroMenu-loadingChange", {
8197
+ detail: {
8198
+ loading: this.loading,
8199
+ hasLoadingPlaceholder:
8200
+ this.hasLoadingPlaceholder
8201
+ }
8202
+ });
8203
+ this.setAttribute("aria-busy", this.hasAttribute("loading"));
8204
+ this.dispatchEvent(event);
8205
+ }
8102
8206
  }
8103
8207
 
8104
8208
  /**
8105
- * Async function to fetch requested icon from npm CDN.
8106
8209
  * @private
8107
- * @param {string} category - Icon category.
8108
- * @param {string} name - Icon name.
8109
- * @returns {SVGElement} DOM - Ready HTML to be appended.
8210
+ * @param {Object} option - The menuoption to check for interactive state.
8211
+ * @returns {Boolean} Returns true if the option is interactive.
8110
8212
  */
8111
- async fetchIcon(category, name) {
8112
- let iconHTML = '';
8113
-
8114
- if (category === 'logos') {
8115
- iconHTML = await cacheFetch(`${this.uri}/${category}/${name}.svg`);
8116
- } else {
8117
- iconHTML = await cacheFetch(`${this.uri}/icons/${category}/${name}.svg`);
8118
- }
8213
+ optionInteractive(option) {
8214
+ return !option.hasAttribute('hidden') && !option.hasAttribute('disabled') && !option.hasAttribute('static');
8215
+ }
8119
8216
 
8120
- const dom = new DOMParser().parseFromString(iconHTML, 'text/html');
8217
+ /**
8218
+ * @private
8219
+ * @returns {void} When called will update the DOM with visible suggest text matches.
8220
+ */
8221
+ markOptions() {
8222
+ if (this.items && this.items.length > 0 && (this.matchWord && this.matchWord.length > 0)) {
8121
8223
 
8122
- return dom.body.querySelector('svg');
8123
- }
8224
+ // Escape special regex characters
8225
+ const escapedWord = this.matchWord.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
8124
8226
 
8125
- // lifecycle function
8126
- async firstUpdated() {
8127
- if (!this.customSvg) {
8128
- const svg = await this.fetchIcon(this.category, this.name);
8227
+ // Global, case-insensitive, unicode matching regex pattern
8228
+ const regexWord = new RegExp(escapedWord, 'giu');
8129
8229
 
8130
- if (svg) {
8131
- this.svg = svg;
8132
- } else if (!svg) {
8133
- const penDOM = new DOMParser().parseFromString(error.svg, 'text/html');
8230
+ this.items.forEach((item) => {
8231
+ if (this.optionInteractive(item) && !item.hasAttribute('persistent')) {
8232
+ const nested = item.querySelectorAll('.nestingSpacer');
8233
+ const nestingSpacerBundle = [...nested].map(() => this.nestingSpacer).join('');
8134
8234
 
8135
- this.svg = penDOM.body.firstChild;
8136
- }
8235
+ item.innerHTML = nestingSpacerBundle + item.textContent.replace(regexWord, (match) => `<strong>${match}</strong>`);
8236
+ }
8237
+ });
8137
8238
  }
8138
8239
  }
8139
- }
8140
-
8141
- var tokensCss = i$c`:host{--ds-auro-icon-color: var(--ds-color-icon-primary-default, $ds-color-icon-primary-default);--ds-auro-icon-size: var(--ds-size-300, $ds-size-300)}`;
8142
-
8143
- var colorCss = i$c`:host{color:var(--ds-auro-icon-color)}:host([customColor]){color:inherit}:host(:not([onDark])[accent]){--ds-auro-icon-color: var(--ds-color-icon-accent-default, #a2c270)}:host(:not([onDark])[disabled]){--ds-auro-icon-color: var(--ds-color-icon-ui-primary-disabled-default, #adadad)}:host(:not([onDark])[emphasis]){--ds-auro-icon-color: var(--ds-color-icon-emphasis-default, #2a2a2a)}:host(:not([onDark])[error]){--ds-auro-icon-color: var(--ds-color-icon-error-default, #cc1816)}:host(:not([onDark])[info]){--ds-auro-icon-color: var(--ds-color-icon-info-default, #326aa5)}:host(:not([onDark])[secondary]){--ds-auro-icon-color: var(--ds-color-icon-secondary-default, #7e8894)}:host(:not([onDark])[subtle]){--ds-auro-icon-color: var(--ds-color-icon-subtle-default, #a0c9f1)}:host(:not([onDark])[success]){--ds-auro-icon-color: var(--ds-color-icon-success-default, #40a080)}:host(:not([onDark])[tertiary]){--ds-auro-icon-color: var(--ds-color-icon-tertiary-default, #afb9c6)}:host(:not([onDark])[warning]){--ds-auro-icon-color: var(--ds-color-icon-warning-default, #c49432)}:host([onDark]){--ds-auro-icon-color: var(--ds-color-icon-primary-inverse, #f7f7f7)}:host([onDark][accent]){--ds-auro-icon-color: var(--ds-color-icon-accent-inverse, #badd81)}:host([onDark][disabled]){--ds-auro-icon-color: var(--ds-color-icon-ui-primary-disabled-inverse, #7e7e7e)}:host([onDark][emphasis]){--ds-auro-icon-color: var(--ds-color-icon-emphasis-inverse, #ffffff)}:host([onDark][error]){--ds-auro-icon-color: var(--ds-color-icon-error-inverse, #f9aca6)}:host([onDark][info]){--ds-auro-icon-color: var(--ds-color-icon-info-inverse, #89b2d4)}:host([onDark][secondary]){--ds-auro-icon-color: var(--ds-color-icon-secondary-inverse, #ccd2db)}:host([onDark][subtle]){--ds-auro-icon-color: var(--ds-color-icon-subtle-inverse, #326aa5)}:host([onDark][success]){--ds-auro-icon-color: var(--ds-color-icon-success-inverse, #8eceb9)}:host([onDark][tertiary]){--ds-auro-icon-color: var(--ds-color-icon-tertiary-inverse, #939fad)}:host([onDark][warning]){--ds-auro-icon-color: var(--ds-color-icon-warning-inverse, #f2c153)}`;
8144
-
8145
- // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
8146
- // See LICENSE in the project root for license information.
8147
-
8148
-
8149
- // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
8150
- /**
8151
- * auro-icon provides users a way to use the Auro Icons by simply passing in the category and name.
8152
- *
8153
- * @attr {String} category - The category of the icon you are looking for. See https://auro.alaskaair.com/icons/usage.
8154
- * @attr {String} name - The name of the icon you are looking for without the file extension. See https://auro.alaskaair.com/icons/usage
8155
- * @attr {Boolean} customColor - Removes primary selector.
8156
- * @attr {Boolean} customSvg - When true, auro-icon will render a custom SVG inside the default slot.
8157
- * @attr {Boolean} label - Exposes content in slot as icon label.
8158
- * @attr {Boolean} primary - DEPRECATED: Sets the icon to use the baseline primary icon style.
8159
- * @attr {Boolean} accent - Sets the icon to use the accent style.
8160
- * @attr {Boolean} emphasis - Sets the icon to use the emphasis style.
8161
- * @attr {Boolean} disabled - Sets the icon to use the disabled style.
8162
- * @attr {Boolean} error - Sets the icon to use the error style.
8163
- * @attr {Boolean} info - Sets the icon to use the info style.
8164
- * @attr {Boolean} secondary - Sets the icon to use the secondary style.
8165
- * @attr {Boolean} tertiary - Sets the icon to use the tertiary style.
8166
- * @attr {Boolean} subtle - Sets the icon to use the subtle style.
8167
- * @attr {Boolean} success - Sets the icon to use the success style.
8168
- * @attr {Boolean} warning - Sets the icon to use the warning style.
8169
- * @attr {String} ariaHidden - Set aria-hidden value. Default is `true`. Option is `false`.
8170
- * @attr {String} uri - Set the uri for CDN used when fetching icons
8171
- * @slot - Hidden from visibility, used for a11y if icon description is needed.
8172
- * @slot svg - Used for custom SVG content.
8173
- */
8174
8240
 
8175
- // build the component class
8176
- class AuroIcon extends BaseIcon {
8177
- constructor() {
8178
- super();
8179
-
8180
- this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
8181
-
8182
- this.privateDefaults();
8241
+ /**
8242
+ * Reset the menu and all options.
8243
+ */
8244
+ resetOptionsStates() {
8245
+ this.optionSelected = undefined;
8246
+ if (this.items) {
8247
+ this.items.forEach((item) => {
8248
+ item.classList.remove('active');
8249
+ item.removeAttribute('selected');
8250
+ });
8251
+ }
8183
8252
  }
8184
8253
 
8185
8254
  /**
8186
- * Internal Defaults.
8255
+ * Set the attributes on the selected menuoption, the menu value and stored option.
8256
+ * @param {Object} option - The menuoption to be selected.
8187
8257
  * @private
8188
- * @returns {void}
8189
8258
  */
8190
- privateDefaults() {
8191
- this.accent = false;
8192
- this.customColor = false;
8193
- this.customSvg = false;
8194
- this.disabled = false;
8195
- this.emphasis = false;
8196
- this.error = false;
8197
- this.info = false;
8198
- this.label = false;
8199
- this.primary = false;
8200
- this.secondary = false;
8201
- this.subtle = false;
8202
- this.success = false;
8203
- this.tertiary = false;
8204
- this.warning = false;
8205
- this.runtimeUtils = new AuroLibraryRuntimeUtils$2();
8206
- }
8207
-
8208
- // function to define props used within the scope of this component
8209
- static get properties() {
8210
- return {
8211
- ...super.properties,
8212
- accent: {
8213
- type: Boolean,
8214
- reflect: true
8215
- },
8216
- ariaHidden: {
8217
- type: String,
8218
- reflect: true
8219
- },
8220
- category: {
8221
- type: String,
8222
- reflect: true
8223
- },
8224
- customColor: {
8225
- type: Boolean
8226
- },
8227
- customSvg: {
8228
- type: Boolean
8229
- },
8230
- disabled: {
8231
- type: Boolean,
8232
- reflect: true
8233
- },
8234
- emphasis: {
8235
- type: Boolean,
8236
- reflect: true
8237
- },
8238
- error: {
8239
- type: Boolean,
8240
- reflect: true
8241
- },
8242
- info: {
8243
- type: Boolean,
8244
- reflect: true
8245
- },
8246
- label: {
8247
- type: Boolean,
8248
- reflect: true
8249
- },
8250
- name: {
8251
- type: String,
8252
- reflect: true
8253
- },
8254
- primary: {
8255
- type: Boolean,
8256
- reflect: true
8257
- },
8258
- secondary: {
8259
- type: Boolean,
8260
- reflect: true
8261
- },
8262
- subtle: {
8263
- type: Boolean,
8264
- reflect: true
8265
- },
8266
- success: {
8267
- type: Boolean,
8268
- reflect: true
8269
- },
8270
- tertiary: {
8271
- type: Boolean,
8272
- reflect: true
8273
- },
8274
- uri: {
8275
- type: String
8276
- },
8277
- warning: {
8278
- type: Boolean,
8279
- reflect: true
8280
- }
8281
- };
8282
- }
8259
+ handleLocalSelectState(option) {
8260
+ option.setAttribute('selected', '');
8261
+ option.classList.add('active');
8262
+ option.ariaSelected = true;
8283
8263
 
8284
- static get styles() {
8285
- return [
8286
- super.styles,
8287
- i$c`${tokensCss}`,
8288
- i$c`${styleCss}`,
8289
- i$c`${colorCss}`
8290
- ];
8264
+ this.value = option.value;
8265
+ this.optionSelected = option;
8266
+ this.index = this.items.indexOf(option);
8291
8267
  }
8292
8268
 
8293
8269
  /**
8294
- * This will register this element with the browser.
8295
- * @param {string} [name="auro-icon"] - The name of element that you want to register to.
8296
- *
8297
- * @example
8298
- * AuroIcon.register("custom-icon") // this will register this element to <custom-icon/>
8299
- *
8270
+ * Notify selection change.
8271
+ * @private
8272
+ * @return {void}
8300
8273
  */
8301
- static register(name = "auro-icon") {
8302
- AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroIcon);
8303
- }
8304
-
8305
- connectedCallback() {
8306
- super.connectedCallback();
8274
+ notifySelectionChange() {
8275
+ // this event needs to be removed after select and combobox are updated to use the new standard name
8276
+ this.dispatchEvent(new CustomEvent('selectedOption', {
8277
+ bubbles: true,
8278
+ cancelable: false,
8279
+ composed: true,
8280
+ }));
8307
8281
 
8308
- // Add the tag name as an attribute if it is different than the component name
8309
- this.runtimeUtils.handleComponentTagRename(this, 'auro-icon');
8282
+ this.dispatchEvent(new CustomEvent('auroMenu-selectedOption', {
8283
+ bubbles: true,
8284
+ cancelable: false,
8285
+ composed: true,
8286
+ }));
8310
8287
  }
8311
8288
 
8312
8289
  /**
8313
- * @returns {void} Exposes CSS parts for styling from parent components.
8290
+ * Process actions for making making a menuoption selection.
8314
8291
  */
8315
- exposeCssParts() {
8316
- this.setAttribute('exportparts', 'svg:iconSvg');
8317
- }
8292
+ makeSelection() {
8293
+ if (!this.items) {
8294
+ this.initItems();
8295
+ }
8318
8296
 
8319
- // function that renders the HTML and CSS into the scope of the component
8320
- render() {
8321
- const a11y = {
8322
- 'labelContainer': true,
8323
- 'util_displayHiddenVisually': !this.label
8324
- };
8297
+ if (this.items[this.index] && !this.items[this.index].hasAttribute('disabled')) {
8298
+ this.resetOptionsStates();
8325
8299
 
8326
- const classes = {
8327
- 'label': this.label
8328
- };
8329
-
8330
- return x$2`
8331
- <div
8332
- class="${e(classes)}"
8333
- title="${o(this.title || undefined)}">
8334
- <span aria-hidden="${o(this.ariaHidden ? this.ariaHidden : true)}" part="svg">
8335
- ${this.customSvg ? x$2`
8336
- <slot name="svg"></slot>
8337
- ` : x$2`
8338
- ${this.svg}
8339
- `
8340
- }
8341
- </span>
8342
-
8343
- <div class="${e(a11y)}">
8344
- <slot></slot>
8345
- </div>
8346
- </div>
8347
- `;
8348
- }
8349
- }
8350
-
8351
- var iconVersion = '6.1.1';
8300
+ if (this.index >= 0) {
8301
+ const option = this.items[this.index];
8352
8302
 
8353
- var checkmarkIcon = {"role":"img","color":"currentColor","title":"","desc":"a small check mark.","width":"var(--auro-size-lg, var(--ds-size-300, 1.5rem))","height":"var(--auro-size-lg, var(--ds-size-300, 1.5rem))","xmlns":"http://www.w3.org/2000/svg","xmlns_xlink":"http://www.w3.org/1999/xlink","viewBox":"0 0 24 24","path":"/icons","style":"ico_squareLarge","type":"icon","name":"checkmark-sm","category":"interface","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-labelledby=\"checkmark-sm__desc\" class=\"ico_squareLarge\" role=\"img\" style=\"min-width:var(--auro-size-lg, var(--ds-size-300, 1.5rem));height:var(--auro-size-lg, var(--ds-size-300, 1.5rem));fill:currentColor\" viewBox=\"0 0 24 24\" part=\"svg\"><title/><desc id=\"checkmark-sm__desc\">a small check mark.</desc><path d=\"M8.461 11.84a.625.625 0 1 0-.922.844l2.504 2.738c.247.27.674.27.922 0l5.496-6a.625.625 0 1 0-.922-.844l-5.035 5.496z\"/></svg>"};
8303
+ // only handle options that are not disabled, hidden or static
8304
+ if (option && this.optionInteractive(option)) {
8305
+ // fire custom event if defined otherwise make selection
8306
+ if (option.hasAttribute('event')) {
8307
+ this.dispatchEvent(new CustomEvent(option.getAttribute('event'), {
8308
+ bubbles: true,
8309
+ cancelable: false,
8310
+ composed: true,
8311
+ }));
8354
8312
 
8355
- // Copyright (c) 2021 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
8356
- // See LICENSE in the project root for license information.
8313
+ // this event needs to be removed after select and combobox are updated to use the new standard name
8314
+ this.dispatchEvent(new CustomEvent('auroMenuCustomEventFired', {
8315
+ bubbles: true,
8316
+ cancelable: false,
8317
+ composed: true,
8318
+ }));
8357
8319
 
8320
+ this.dispatchEvent(new CustomEvent('auroMenu-customEventFired', {
8321
+ bubbles: true,
8322
+ cancelable: false,
8323
+ composed: true,
8324
+ }));
8325
+ } else {
8326
+ this.handleLocalSelectState(option);
8327
+ }
8328
+ }
8329
+ }
8330
+ }
8358
8331
 
8359
- /**
8360
- * The auro-menu element provides users a way to define a menu option.
8361
- *
8362
- * @attr {String} value - Specifies the value to be sent to a server.
8363
- * @attr {String} noCheckmark - When true, selected option will not show the checkmark.
8364
- * @attr {Boolean} disabled - When true specifies that the menuoption is disabled.
8365
- * @attr {Boolean} selected - Specifies that an option is selected.
8366
- * @event auroMenuOption-mouseover - Notifies that this option has been hovered over.
8367
- * @slot Specifies text for an option, but is not the value.
8368
- */
8369
- class AuroMenuOption extends r$6 {
8370
- constructor() {
8371
- super();
8332
+ this.notifySelectionChange();
8333
+ }
8372
8334
 
8373
- /**
8374
- * Generate unique names for dependency components.
8375
- */
8376
- const versioning = new AuroDependencyVersioning$2();
8377
- this.iconTag = versioning.generateTag('auro-icon', iconVersion, AuroIcon);
8335
+ /**
8336
+ * Manage ArrowDown, ArrowUp and Enter keyboard events.
8337
+ * @private
8338
+ * @param {Object} event - Event object from the browser.
8339
+ */
8340
+ handleKeyDown(event) {
8341
+ event.preventDefault();
8378
8342
 
8379
- this.selected = false;
8380
- this.nocheckmark = false;
8381
- this.disabled = false;
8343
+ // With ArrowDown/ArrowUp events, pass new value to selectNextItem()
8344
+ // With Enter event, set value and apply attrs
8345
+ switch (event.key) {
8346
+ case "ArrowDown":
8347
+ this.selectNextItem('down');
8348
+ break;
8382
8349
 
8383
- /**
8384
- * @private
8385
- */
8386
- this.tabIndex = -1;
8350
+ case "ArrowUp":
8351
+ this.selectNextItem('up');
8352
+ break;
8387
8353
 
8388
- /**
8389
- * @private
8390
- */
8391
- this.runtimeUtils = new AuroLibraryRuntimeUtils$2();
8354
+ case "Enter":
8355
+ this.makeSelection();
8356
+ break;
8357
+ }
8392
8358
  }
8393
8359
 
8394
- static get properties() {
8395
- return {
8396
- nocheckmark: {
8397
- type: Boolean,
8398
- reflect: true
8399
- },
8400
- selected: {
8401
- type: Boolean,
8402
- reflect: true
8403
- },
8404
- disabled: {
8405
- type: Boolean,
8406
- reflect: true
8407
- },
8408
- value: {
8409
- type: String,
8410
- reflect: true
8411
- },
8412
- tabIndex: {
8413
- type: Number,
8414
- reflect: true
8415
- }
8416
- };
8360
+ /**
8361
+ * Initializes all menu options in the DOM. This must be re-run every time the options are changed.
8362
+ * @private
8363
+ */
8364
+ initItems() {
8365
+ this.items = Array.from(this.querySelectorAll('auro-menuoption, [auro-menuoption]'));
8366
+ this.handleNoCheckmarkAttr();
8417
8367
  }
8418
8368
 
8419
- static get styles() {
8420
- return [
8421
- styleCss$1,
8422
- colorCss$1,
8423
- tokensCss$1
8424
- ];
8369
+ /**
8370
+ * Sets the index value of the selected item or first non-disabled menuoption.
8371
+ * @private
8372
+ */
8373
+ getSelectedIndex() {
8374
+ // find the first `selected` and not `disabled`, `hidden` or `static` option
8375
+ const index = this.items.findIndex((option) => option.hasAttribute('selected') && this.optionInteractive(option));
8376
+
8377
+ if (index >= 0) {
8378
+ this.index = index;
8379
+ this.makeSelection();
8380
+ }
8425
8381
  }
8426
8382
 
8427
8383
  /**
8428
- * This will register this element with the browser.
8429
- * @param {string} [name="auro-menuoption"] - The name of element that you want to register to.
8430
- *
8431
- * @example
8432
- * AuroMenuOption.register("custom-menuoption") // this will register this element to <custom-menuoption/>
8384
+ * Using value of current this.index evaluates index
8385
+ * of next :focus to set based on array of this.items ignoring items
8386
+ * with disabled attr.
8433
8387
  *
8388
+ * The event.target is not used as the function needs to know where to go,
8389
+ * versus knowing where it is.
8390
+ * @param {String} moveDirection - Up or Down based on keyboard event.
8434
8391
  */
8435
- static register(name = "auro-menuoption") {
8436
- AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroMenuOption);
8437
- }
8392
+ selectNextItem(moveDirection) {
8393
+ if (this.index >= 0) {
8394
+ this.items[this.index].classList.remove('active');
8438
8395
 
8439
- firstUpdated() {
8440
- // Add the tag name as an attribute if it is different than the component name
8441
- this.runtimeUtils.handleComponentTagRename(this, 'auro-menuoption');
8396
+ // calculate which is the selection we should focus next
8397
+ let increment = 0;
8442
8398
 
8443
- this.setAttribute('role', 'option');
8444
- this.setAttribute('aria-selected', 'false');
8399
+ if (moveDirection === 'down') {
8400
+ increment = 1;
8401
+ } else if (moveDirection === 'up') {
8402
+ increment = -1;
8403
+ }
8445
8404
 
8446
- this.addEventListener('mouseover', () => {
8447
- this.dispatchEvent(new CustomEvent('auroMenuOption-mouseover', {
8448
- bubbles: true,
8449
- cancelable: false,
8450
- composed: true,
8451
- detail: this
8452
- }));
8453
- });
8454
- }
8405
+ this.index += increment;
8455
8406
 
8456
- // observer for selected property changes
8457
- updated(changedProperties) {
8458
- if (changedProperties.has('selected')) {
8459
- this.setAttribute('aria-selected', this.selected.toString());
8407
+ // keep looping inside the array of options
8408
+ if (this.index > this.items.length - 1) {
8409
+ this.index = 0;
8410
+ } else if (this.index < 0) {
8411
+ this.index = this.items.length - 1;
8412
+ }
8413
+
8414
+ // check if new index is disabled, static or hidden, if so, execute again
8415
+ if (!this.optionInteractive(this.items[this.index])) {
8416
+ this.selectNextItem(moveDirection);
8417
+ } else {
8418
+ // apply focus to new index
8419
+ this.updateActiveOption(this.index);
8420
+ }
8421
+ } else {
8422
+ this.index = 0;
8423
+
8424
+ if (this.items[this.index].hasAttribute('hidden') || this.items[this.index].hasAttribute('disabled')) {
8425
+ this.selectNextItem(moveDirection);
8426
+ } else {
8427
+ this.updateActiveOption(this.index);
8428
+ }
8460
8429
  }
8461
8430
  }
8462
8431
 
8463
8432
  /**
8464
- * Generates an HTML element containing an SVG icon based on the provided `svgContent`.
8465
- *
8433
+ * Used for applying indentation to each level of nested menu.
8466
8434
  * @private
8467
- * @param {string} svgContent - The SVG content to be embedded.
8468
- * @returns {Element} The HTML element containing the SVG icon.
8435
+ * @param {String} menu - Root level menu object.
8469
8436
  */
8470
- generateIconHtml(svgContent) {
8471
- const dom = new DOMParser().parseFromString(svgContent, 'text/html');
8472
- const svg = dom.body.firstChild;
8473
-
8474
- svg.setAttribute('slot', 'svg');
8437
+ handleNestedMenus(menu) {
8438
+ const nestedMenus = menu.querySelectorAll('auro-menu, [auro-menu');
8475
8439
 
8476
- return u$6`<${this.iconTag} customColor customSvg slot="icon">${svg}</${this.iconTag}>`;
8477
- }
8440
+ if (nestedMenus.length === 0) {
8441
+ return;
8442
+ }
8478
8443
 
8479
- render() {
8480
- return u$6`
8481
- ${this.selected && !this.nocheckmark ? this.generateIconHtml(checkmarkIcon.svg) : undefined}
8482
- <slot></slot>
8483
- `;
8484
- }
8485
- }
8444
+ nestedMenus.forEach((nestedMenu) => {
8445
+ const options = nestedMenu.querySelectorAll(':scope > auro-menuoption, :scope > [auro-menuoption');
8486
8446
 
8487
- // Copyright (c) 2021 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
8488
- // See LICENSE in the project root for license information.
8447
+ options.forEach((option) => {
8448
+ option.innerHTML = this.nestingSpacer + option.innerHTML;
8449
+ });
8489
8450
 
8451
+ this.handleNestedMenus(nestedMenu);
8452
+ });
8453
+ }
8490
8454
 
8491
- // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
8492
- /**
8493
- * The auro-menu element provides users a way to select from a list of options.
8494
- * @attr {Object} optionSelected - Specifies the current selected menuOption.
8495
- * @attr {String} matchWord - Specifies the a string used to highlight matched string parts in options.
8496
- * @attr {Boolean} disabled - When true, the entire menu and all options are disabled;
8497
- * @attr {Boolean} noCheckmark - When true, selected option will not show the checkmark.
8498
- * @attr {String} value - Value selected for the menu.
8499
- * @event auroMenu-selectedOption - Notifies that a new menuoption selection has been made.
8500
- * @event selectedOption - (DEPRECATED) Notifies that a new menuoption selection has been made.
8501
- * @event auroMenu-activatedOption - Notifies that a menuoption has been made `active`.
8502
- * @event auroMenuActivatedOption - (DEPRECATED) Notifies that a menuoption has been made `active`.
8503
- * @event auroMenu-selectValueFailure - Notifies that a an attempt to select a menuoption by matching a value has failed.
8504
- * @event auroMenuSelectValueFailure - (DEPRECATED) Notifies that a an attempt to select a menuoption by matching a value has failed.
8505
- * @event auroMenu-customEventFired - Notifies that a custom event has been fired.
8506
- * @event auroMenuCustomEventFired - (DEPRECATED) Notifies that a custom event has been fired.
8507
- * @event auroMenu-selectValueReset - Notifies that the component value has been reset.
8508
- * @slot Slot for insertion of menu options.
8509
- */
8455
+ /**
8456
+ * Method to apply `selected` attribute to `menuoption` via `value`.
8457
+ * @private
8458
+ * @param {String} value - Must match a unique `menuoption` value.
8459
+ */
8460
+ selectByValue(value) {
8461
+ let valueMatch = false;
8462
+ if (!this.items) {
8463
+ this.initItems();
8464
+ }
8510
8465
 
8511
- /* eslint-disable no-magic-numbers, max-lines */
8466
+ this.index = undefined;
8512
8467
 
8513
- class AuroMenu extends r$6 {
8514
- constructor() {
8515
- super();
8516
- this.value = undefined;
8517
- this.optionSelected = undefined;
8518
- this.matchWord = undefined;
8519
- this.noCheckmark = false;
8520
- this.optionActive = undefined;
8468
+ if (this.value && this.value.length > 0) {
8469
+ for (let index = 0; index < this.items.length; index += 1) {
8470
+ if (this.items[index].value === value) {
8471
+ valueMatch = true;
8472
+ this.index = index;
8473
+ }
8474
+ }
8521
8475
 
8522
- /**
8523
- * @private
8524
- */
8525
- this.rootMenu = true;
8476
+ if (!valueMatch) {
8477
+ // reset the menu to no selection
8478
+ this.index = undefined;
8526
8479
 
8527
- /**
8528
- * @private
8529
- */
8530
- this.runtimeUtils = new AuroLibraryRuntimeUtils$2();
8480
+ // this event needs to be removed after select and combobox are updated to use the new standard name
8481
+ this.dispatchEvent(new CustomEvent('auroMenuSelectValueFailure', {
8482
+ bubbles: true,
8483
+ cancelable: false,
8484
+ composed: true,
8485
+ }));
8531
8486
 
8532
- /**
8533
- * @private
8534
- */
8535
- this.nestingSpacer = '<span class="nestingSpacer"></span>';
8487
+ this.dispatchEvent(new CustomEvent('auroMenu-selectValueFailure', {
8488
+ bubbles: true,
8489
+ cancelable: false,
8490
+ composed: true,
8491
+ }));
8492
+ } else {
8493
+ this.makeSelection();
8494
+ }
8495
+ } else {
8496
+ this.resetOptionsStates();
8497
+
8498
+ this.dispatchEvent(new CustomEvent('auroMenu-selectValueReset', {
8499
+ bubbles: true,
8500
+ cancelable: false,
8501
+ composed: true,
8502
+ }));
8503
+ }
8536
8504
  }
8537
8505
 
8538
- static get properties() {
8539
- return {
8540
- noCheckmark: {
8541
- type: Boolean,
8542
- reflect: true
8543
- },
8544
- disabled: {
8545
- type: Boolean,
8546
- reflect: true
8547
- },
8548
- optionSelected: { type: Object },
8549
- optionActive: { type: Object },
8550
- matchWord: { type: String },
8551
- value: { type: String }
8552
- };
8506
+ /**
8507
+ * Used to make the active state for options follow mouseover.
8508
+ * @param {Number} index - Index of the menuoption that will be made active.
8509
+ * @private
8510
+ */
8511
+ updateActiveOption(index) {
8512
+ this.items.forEach((item) => {
8513
+ item.classList.remove('active');
8514
+ });
8515
+ this.items[index].classList.add('active');
8516
+ this.optionActive = this.items[index];
8517
+
8518
+ this.dispatchEvent(new CustomEvent('auroMenuActivatedOption', {
8519
+ bubbles: true,
8520
+ cancelable: false,
8521
+ composed: true,
8522
+ detail: this.items[index]
8523
+ }));
8524
+
8525
+ this.dispatchEvent(new CustomEvent('auroMenu-activatedOption', {
8526
+ bubbles: true,
8527
+ cancelable: false,
8528
+ composed: true,
8529
+ detail: this.items[index]
8530
+ }));
8553
8531
  }
8554
8532
 
8555
- static get styles() {
8556
- return [
8557
- styleCss$2,
8558
- colorCss$2,
8559
- tokensCss$1
8560
- ];
8533
+ /**
8534
+ * Used to only make a selection when a menuoption is receiving a mousedown event.
8535
+ * @param {Event} evt - Mousedown event.
8536
+ * @private
8537
+ */
8538
+ handleMenuMouseDown(evt) {
8539
+ if (evt.target !== this) {
8540
+ this.makeSelection();
8541
+ }
8561
8542
  }
8562
8543
 
8563
8544
  /**
8564
- * This will register this element with the browser.
8565
- * @param {string} [name="auro-menu"] - The name of element that you want to register to.
8545
+ * Checks if there are any loading placeholders in the component.
8566
8546
  *
8567
- * @example
8568
- * AuroMenu.register("custom-menu") // this will register this element to <custom-menu/>
8547
+ * This getter evaluates the `loadingSlots` collection to determine if it contains any items.
8548
+ * If the size of the collection is greater than zero, it indicates the presence of loading
8549
+ * placeholders, returning true; otherwise, it returns false.
8569
8550
  *
8551
+ * @getter hasLoadingPlaceholder
8552
+ * @type {boolean}
8553
+ * @returns {boolean} Returns true if loading placeholders exist; false otherwise.
8570
8554
  */
8571
- static register(name = "auro-menu") {
8572
- AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroMenu);
8555
+ get hasLoadingPlaceholder() {
8556
+ return this.loadingSlots.length > 0;
8573
8557
  }
8574
8558
 
8575
8559
  /**
8576
- * Passes the noCheckmark attribute to all nested auro-menuoptions.
8560
+ * Used for @slotchange event on slotted element.
8577
8561
  * @private
8578
- * @returns {void}
8579
8562
  */
8580
- handleNoCheckmarkAttr() {
8581
- if (this.noCheckmark) {
8582
- const menus = this.querySelectorAll('auro-menu, [auro-menu]');
8583
-
8584
- menus.forEach((menu) => {
8585
- menu.setAttribute('noCheckmark', '');
8586
- });
8563
+ handleSlotItems() {
8564
+ // Determine if this is the root of the menu/submenu layout.
8565
+ if (this.parentElement && this.parentElement.closest('auro-menu, [auro-menu]')) {
8566
+ this.rootMenu = false;
8567
+ }
8587
8568
 
8588
- const options = this.querySelectorAll('auro-menuoption, [auro-menuoption]');
8569
+ // If this is the root menu (not a nested menu) handle events, states and styling.
8570
+ if (this.rootMenu) {
8571
+ this.initItems();
8572
+ this.setAttribute('role', 'listbox');
8573
+ this.setAttribute('root', '');
8574
+ this.handleNestedMenus(this);
8575
+ this.markOptions();
8576
+ this.index = -1;
8577
+ this.getSelectedIndex();
8589
8578
 
8590
- options.forEach((option) => {
8591
- option.setAttribute('noCheckmark', '');
8579
+ this.addEventListener('keydown', this.handleKeyDown);
8580
+ this.addEventListener('mousedown', this.handleMenuMouseDown);
8581
+ this.addEventListener('auroMenuOption-mouseover', (evt) => {
8582
+ this.index = this.items.indexOf(evt.target);
8583
+ this.updateActiveOption(this.index);
8592
8584
  });
8585
+ } else {
8586
+ // make sure to update all menuoption noCheckmark attributes when the menu is dynamically changed
8587
+ this.handleNoCheckmarkAttr();
8593
8588
  }
8594
8589
  }
8595
8590
 
8596
- firstUpdated() {
8597
- // Add the tag name as an attribute if it is different than the component name
8598
- this.runtimeUtils.handleComponentTagRename(this, 'auro-menu');
8599
-
8600
- this.addEventListener('keydown', this.handleKeyDown);
8601
- }
8602
-
8603
- updated(changedProperties) {
8604
- if (changedProperties.has('matchWord')) {
8605
- this.markOptions();
8591
+ render() {
8592
+ if (this.loading) {
8593
+ return x$2`
8594
+ <auro-menuoption disabled loadingplaceholder class="${this.hasLoadingPlaceholder ? '' : 'empty'}">
8595
+ <div>
8596
+ <slot name="loadingIcon"></slot>
8597
+ <slot name="loadingText"></slot>
8598
+ </div>
8599
+ </auro-menuoption>
8600
+ `;
8606
8601
  }
8602
+ return x$2`<slot @slotchange=${this.handleSlotItems}></slot>`;
8603
+ }
8604
+ }
8607
8605
 
8608
- if (changedProperties.has('value')) {
8609
- this.selectByValue(this.value);
8610
- }
8606
+ var styleCss$1 = i$c`:host{display:flex;align-items:center;padding:var(--ds-size-50, 0.25rem) var(--ds-size-200, 1rem) var(--ds-size-50, 0.25rem) 0;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}:host slot{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host [auro-icon]{--ds-auro-icon-size: var(--ds-size-300, 1.5rem);margin-right:var(--ds-size-150, 0.75rem);margin-left:var(--ds-size-100, 0.5rem)}:host ::slotted(.nestingSpacer){display:inline-block;width:var(--ds-size-300, 1.5rem)}:host ::slotted(strong){font-weight:700}:host([hidden]){display:none}:host([static]){pointer-events:none}:host([disabled]:hover){cursor:auto}:host([disabled]){user-select:none;pointer-events:none}`;
8611
8607
 
8612
- if (changedProperties.has('disabled')) {
8613
- const options = Array.from(this.querySelectorAll('auro-menuoption, [auro-menuoption]'));
8608
+ var colorCss$1 = i$c`:host{background-color:var(--ds-auro-menuoption-container-color);color:var(--ds-auro-menuoption-text-color)}:host svg{fill:var(--ds-auro-menuoption-icon-color) !important}:host([disabled]){--ds-auro-menuoption-text-color: var(--ds-color-text-ui-disabled-default, #adadad)}:host(:hover),:host(.active){--ds-auro-menuoption-container-color: var(--ds-color-container-ui-secondary-hover-default, rgba(0, 0, 0, 0.03))}:host([selected]){--ds-auro-menuoption-container-color: var(--ds-color-container-ui-primary-default-default, #2c67b5);--ds-auro-menuoption-text-color: var(--ds-color-text-primary-inverse, #ffffff);--ds-auro-menuoption-icon-color: var(--ds-color-icon-emphasis-inverse, #ffffff)}`;
8614
8609
 
8615
- for (const element of options) {
8616
- element.disabled = this.disabled;
8617
- }
8618
- }
8619
- }
8610
+ /**
8611
+ * @license
8612
+ * Copyright 2017 Google LLC
8613
+ * SPDX-License-Identifier: BSD-3-Clause
8614
+ */
8615
+ const t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e$1=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i;}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}
8620
8616
 
8621
- /**
8622
- * @private
8623
- * @param {Object} option - The menuoption to check for interactive state.
8624
- * @returns {Boolean} Returns true if the option is interactive.
8625
- */
8626
- optionInteractive(option) {
8627
- return !option.hasAttribute('hidden') && !option.hasAttribute('disabled') && !option.hasAttribute('static');
8628
- }
8617
+ /**
8618
+ * @license
8619
+ * Copyright 2018 Google LLC
8620
+ * SPDX-License-Identifier: BSD-3-Clause
8621
+ */const e=e$1(class extends i{constructor(t$1){if(super(t$1),t$1.type!==t.ATTRIBUTE||"class"!==t$1.name||t$1.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return " "+Object.keys(t).filter((s=>t[s])).join(" ")+" "}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(" ").split(/\s/).filter((t=>""!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)));}return T$2}});
8629
8622
 
8630
- /**
8631
- * @private
8632
- * @returns {void} When called will update the DOM with visible suggest text matches.
8633
- */
8634
- markOptions() {
8635
- if (this.items && this.items.length > 0 && (this.matchWord && this.matchWord.length > 0)) {
8623
+ /**
8624
+ * @license
8625
+ * Copyright 2018 Google LLC
8626
+ * SPDX-License-Identifier: BSD-3-Clause
8627
+ */const o=o=>o??E$2;
8636
8628
 
8637
- // Escape special regex characters
8638
- const escapedWord = this.matchWord.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
8629
+ // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
8630
+ // See LICENSE in the project root for license information.
8639
8631
 
8640
- // Global, case-insensitive, unicode matching regex pattern
8641
- const regexWord = new RegExp(escapedWord, 'giu');
8642
8632
 
8643
- this.items.forEach((item) => {
8644
- if (this.optionInteractive(item) && !item.hasAttribute('persistent')) {
8645
- const nested = item.querySelectorAll('.nestingSpacer');
8646
- const nestingSpacerBundle = [...nested].map(() => this.nestingSpacer).join('');
8633
+ /**
8634
+ * @attr {Boolean} hidden - If present, the component will be hidden both visually and from screen readers
8635
+ * @attr {Boolean} hiddenVisually - If present, the component will be hidden visually, but still read by screen readers
8636
+ * @attr {Boolean} hiddenAudible - If present, the component will be hidden from screen readers, but seen visually
8637
+ */
8647
8638
 
8648
- item.innerHTML = nestingSpacerBundle + item.textContent.replace(regexWord, (match) => `<strong>${match}</strong>`);
8649
- }
8650
- });
8651
- }
8652
- }
8639
+ class AuroElement extends r$6 {
8653
8640
 
8654
- /**
8655
- * Reset the menu and all options.
8656
- */
8657
- resetOptionsStates() {
8658
- this.optionSelected = undefined;
8659
- if (this.items) {
8660
- this.items.forEach((item) => {
8661
- item.classList.remove('active');
8662
- item.removeAttribute('selected');
8663
- });
8664
- }
8641
+ // function to define props used within the scope of this component
8642
+ static get properties() {
8643
+ return {
8644
+ hidden: { type: Boolean,
8645
+ reflect: true },
8646
+ hiddenVisually: { type: Boolean,
8647
+ reflect: true },
8648
+ hiddenAudible: { type: Boolean,
8649
+ reflect: true },
8650
+ };
8665
8651
  }
8666
8652
 
8667
8653
  /**
8668
- * Set the attributes on the selected menuoption, the menu value and stored option.
8669
- * @param {Object} option - The menuoption to be selected.
8670
- * @private
8654
+ * @private Function that determines state of aria-hidden
8671
8655
  */
8672
- handleLocalSelectState(option) {
8673
- option.setAttribute('selected', '');
8674
- option.classList.add('active');
8675
- option.ariaSelected = true;
8656
+ hideAudible(value) {
8657
+ if (value) {
8658
+ return 'true'
8659
+ }
8676
8660
 
8677
- this.value = option.value;
8678
- this.optionSelected = option;
8679
- this.index = this.items.indexOf(option);
8661
+ return 'false'
8680
8662
  }
8663
+ }
8681
8664
 
8682
- /**
8683
- * Notify selection change.
8684
- * @private
8685
- * @return {void}
8686
- */
8687
- notifySelectionChange() {
8688
- // this event needs to be removed after select and combobox are updated to use the new standard name
8689
- this.dispatchEvent(new CustomEvent('selectedOption', {
8690
- bubbles: true,
8691
- cancelable: false,
8692
- composed: true,
8693
- }));
8665
+ var error = {"role":"img","color":"currentColor","title":"","desc":"Error alert indicator.","width":"var(--auro-size-lg, var(--ds-size-300, 1.5rem))","height":"var(--auro-size-lg, var(--ds-size-300, 1.5rem))","xmlns":"http://www.w3.org/2000/svg","xmlns_xlink":"http://www.w3.org/1999/xlink","viewBox":"0 0 24 24","path":"/icons","style":"ico_squareLarge","type":"icon","name":"error","category":"alert","deprecated":true,"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-labelledby=\"error__desc\" class=\"ico_squareLarge\" data-deprecated=\"true\" role=\"img\" style=\"min-width:var(--auro-size-lg, var(--ds-size-300, 1.5rem));height:var(--auro-size-lg, var(--ds-size-300, 1.5rem));fill:currentColor\" viewBox=\"0 0 24 24\" part=\"svg\"><title/><desc id=\"error__desc\">Error alert indicator.</desc><path d=\"m13.047 5.599 6.786 11.586A1.207 1.207 0 0 1 18.786 19H5.214a1.207 1.207 0 0 1-1.047-1.815l6.786-11.586a1.214 1.214 0 0 1 2.094 0m-1.165.87a.23.23 0 0 0-.085.085L5.419 17.442a.232.232 0 0 0 .203.35h12.756a.234.234 0 0 0 .203-.35L12.203 6.554a.236.236 0 0 0-.321-.084M12 15.5a.75.75 0 1 1 0 1.5.75.75 0 0 1 0-1.5m-.024-6.22c.325 0 .589.261.589.583v4.434a.586.586 0 0 1-.589.583.586.586 0 0 1-.588-.583V9.863c0-.322.264-.583.588-.583\"/></svg>"};
8694
8666
 
8695
- this.dispatchEvent(new CustomEvent('auroMenu-selectedOption', {
8696
- bubbles: true,
8697
- cancelable: false,
8698
- composed: true,
8699
- }));
8667
+ /* eslint-disable no-underscore-dangle, jsdoc/no-undefined-types, jsdoc/require-param-description */
8668
+
8669
+ const _fetchMap = new Map();
8670
+
8671
+ /**
8672
+ * A callback to parse Response body.
8673
+ *
8674
+ * @callback ResponseParser
8675
+ * @param {Fetch.Response} response
8676
+ * @returns {Promise}
8677
+ */
8678
+
8679
+ /**
8680
+ * A minimal in-memory map to de-duplicate Fetch API media requests.
8681
+ *
8682
+ * @param {String} uri
8683
+ * @param {Object} [options={}]
8684
+ * @param {ResponseParser} [options.responseParser=(response) => response.text()]
8685
+ * @returns {Promise}
8686
+ */
8687
+ const cacheFetch = (uri, options = {}) => {
8688
+ const responseParser = options.responseParser || ((response) => response.text());
8689
+ if (!_fetchMap.has(uri)) {
8690
+ _fetchMap.set(uri, fetch(uri).then(responseParser));
8700
8691
  }
8692
+ return _fetchMap.get(uri);
8693
+ };
8701
8694
 
8702
- /**
8703
- * Process actions for making making a menuoption selection.
8704
- */
8705
- makeSelection() {
8706
- if (!this.items) {
8707
- this.initItems();
8708
- }
8695
+ var styleCss = i$c`*,*:before,*:after{box-sizing:border-box}@media(prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}}*:focus-visible{outline:0}*:focus-visible{outline:0}:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock,:host{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host([hidden]:not(:focus):not(:active)){display:none}.util_displayHiddenVisually,:host([hiddenVisually]:not(:focus):not(:active)){position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.ico_squareLarge{fill:currentColor;height:var(--auro-size-lg, var(--ds-size-300, 1.5rem))}.ico_squareSmall{fill:currentColor;height:.6rem}.ico_squareMed{fill:currentColor;height:var(--auro-size-md, var(--ds-size-200, 1rem))}.ico_squareSml{fill:currentColor;height:var(--auro-size-sm, var(--ds-size-150, 0.75rem))}:host{color:currentColor;vertical-align:middle;line-height:1;display:inline-block}:host .logo{color:var(--ds-color-brand-midnight-400, #01426a)}svg{min-width:var(--ds-auro-icon-size, 1.5rem) !important;width:var(--ds-auro-icon-size, 1.5rem) !important;height:var(--ds-auro-icon-size, 1.5rem) !important}.label{display:flex;align-items:flex-start}.label svg{margin:0 var(--ds-size-50, 0.25rem)}.labelContainer{line-height:1.8}`;
8709
8696
 
8710
- if (this.items[this.index] && !this.items[this.index].hasAttribute('disabled')) {
8711
- this.resetOptionsStates();
8697
+ // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
8698
+ // See LICENSE in the project root for license information.
8712
8699
 
8713
- if (this.index >= 0) {
8714
- const option = this.items[this.index];
8715
8700
 
8716
- // only handle options that are not disabled, hidden or static
8717
- if (option && this.optionInteractive(option)) {
8718
- // fire custom event if defined otherwise make selection
8719
- if (option.hasAttribute('event')) {
8720
- this.dispatchEvent(new CustomEvent(option.getAttribute('event'), {
8721
- bubbles: true,
8722
- cancelable: false,
8723
- composed: true,
8724
- }));
8701
+ // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
8702
+ /**
8703
+ * @attr {Boolean} onDark - Set value for on-dark version of auro-icon
8704
+ * @slot - Hidden from visibility, used for a11y if icon description is needed
8705
+ */
8725
8706
 
8726
- // this event needs to be removed after select and combobox are updated to use the new standard name
8727
- this.dispatchEvent(new CustomEvent('auroMenuCustomEventFired', {
8728
- bubbles: true,
8729
- cancelable: false,
8730
- composed: true,
8731
- }));
8707
+ // build the component class
8708
+ class BaseIcon extends AuroElement {
8709
+ constructor() {
8710
+ super();
8711
+ this.onDark = false;
8712
+ }
8732
8713
 
8733
- this.dispatchEvent(new CustomEvent('auroMenu-customEventFired', {
8734
- bubbles: true,
8735
- cancelable: false,
8736
- composed: true,
8737
- }));
8738
- } else {
8739
- this.handleLocalSelectState(option);
8740
- }
8741
- }
8714
+ // function to define props used within the scope of this component
8715
+ static get properties() {
8716
+ return {
8717
+ ...super.properties,
8718
+ onDark: {
8719
+ type: Boolean,
8720
+ reflect: true
8721
+ },
8722
+
8723
+ /**
8724
+ * @private
8725
+ */
8726
+ svg: {
8727
+ attribute: false,
8728
+ reflect: true
8742
8729
  }
8743
- }
8730
+ };
8731
+ }
8744
8732
 
8745
- this.notifySelectionChange();
8733
+ static get styles() {
8734
+ return i$c`
8735
+ ${styleCss}
8736
+ `;
8746
8737
  }
8747
8738
 
8748
8739
  /**
8749
- * Manage ArrowDown, ArrowUp and Enter keyboard events.
8740
+ * Async function to fetch requested icon from npm CDN.
8750
8741
  * @private
8751
- * @param {Object} event - Event object from the browser.
8742
+ * @param {string} category - Icon category.
8743
+ * @param {string} name - Icon name.
8744
+ * @returns {SVGElement} DOM - Ready HTML to be appended.
8752
8745
  */
8753
- handleKeyDown(event) {
8754
- event.preventDefault();
8746
+ async fetchIcon(category, name) {
8747
+ let iconHTML = '';
8755
8748
 
8756
- // With ArrowDown/ArrowUp events, pass new value to selectNextItem()
8757
- // With Enter event, set value and apply attrs
8758
- switch (event.key) {
8759
- case "ArrowDown":
8760
- this.selectNextItem('down');
8761
- break;
8749
+ if (category === 'logos') {
8750
+ iconHTML = await cacheFetch(`${this.uri}/${category}/${name}.svg`);
8751
+ } else {
8752
+ iconHTML = await cacheFetch(`${this.uri}/icons/${category}/${name}.svg`);
8753
+ }
8762
8754
 
8763
- case "ArrowUp":
8764
- this.selectNextItem('up');
8765
- break;
8755
+ const dom = new DOMParser().parseFromString(iconHTML, 'text/html');
8766
8756
 
8767
- case "Enter":
8768
- this.makeSelection();
8769
- break;
8757
+ return dom.body.querySelector('svg');
8758
+ }
8759
+
8760
+ // lifecycle function
8761
+ async firstUpdated() {
8762
+ if (!this.customSvg) {
8763
+ const svg = await this.fetchIcon(this.category, this.name);
8764
+
8765
+ if (svg) {
8766
+ this.svg = svg;
8767
+ } else if (!svg) {
8768
+ const penDOM = new DOMParser().parseFromString(error.svg, 'text/html');
8769
+
8770
+ this.svg = penDOM.body.firstChild;
8771
+ }
8770
8772
  }
8771
8773
  }
8774
+ }
8772
8775
 
8773
- /**
8774
- * Initializes all menu options in the DOM. This must be re-run every time the options are changed.
8775
- * @private
8776
- */
8777
- initItems() {
8778
- this.items = Array.from(this.querySelectorAll('auro-menuoption, [auro-menuoption]'));
8779
- this.handleNoCheckmarkAttr();
8776
+ var tokensCss = i$c`:host{--ds-auro-icon-color: var(--ds-color-icon-primary-default, $ds-color-icon-primary-default);--ds-auro-icon-size: var(--ds-size-300, $ds-size-300)}`;
8777
+
8778
+ var colorCss = i$c`:host{color:var(--ds-auro-icon-color)}:host([customColor]){color:inherit}:host(:not([onDark])[accent]){--ds-auro-icon-color: var(--ds-color-icon-accent-default, #a2c270)}:host(:not([onDark])[disabled]){--ds-auro-icon-color: var(--ds-color-icon-ui-primary-disabled-default, #adadad)}:host(:not([onDark])[emphasis]){--ds-auro-icon-color: var(--ds-color-icon-emphasis-default, #2a2a2a)}:host(:not([onDark])[error]){--ds-auro-icon-color: var(--ds-color-icon-error-default, #cc1816)}:host(:not([onDark])[info]){--ds-auro-icon-color: var(--ds-color-icon-info-default, #326aa5)}:host(:not([onDark])[secondary]){--ds-auro-icon-color: var(--ds-color-icon-secondary-default, #7e8894)}:host(:not([onDark])[subtle]){--ds-auro-icon-color: var(--ds-color-icon-subtle-default, #a0c9f1)}:host(:not([onDark])[success]){--ds-auro-icon-color: var(--ds-color-icon-success-default, #40a080)}:host(:not([onDark])[tertiary]){--ds-auro-icon-color: var(--ds-color-icon-tertiary-default, #afb9c6)}:host(:not([onDark])[warning]){--ds-auro-icon-color: var(--ds-color-icon-warning-default, #c49432)}:host([onDark]){--ds-auro-icon-color: var(--ds-color-icon-primary-inverse, #f7f7f7)}:host([onDark][accent]){--ds-auro-icon-color: var(--ds-color-icon-accent-inverse, #badd81)}:host([onDark][disabled]){--ds-auro-icon-color: var(--ds-color-icon-ui-primary-disabled-inverse, #7e7e7e)}:host([onDark][emphasis]){--ds-auro-icon-color: var(--ds-color-icon-emphasis-inverse, #ffffff)}:host([onDark][error]){--ds-auro-icon-color: var(--ds-color-icon-error-inverse, #f9aca6)}:host([onDark][info]){--ds-auro-icon-color: var(--ds-color-icon-info-inverse, #89b2d4)}:host([onDark][secondary]){--ds-auro-icon-color: var(--ds-color-icon-secondary-inverse, #ccd2db)}:host([onDark][subtle]){--ds-auro-icon-color: var(--ds-color-icon-subtle-inverse, #326aa5)}:host([onDark][success]){--ds-auro-icon-color: var(--ds-color-icon-success-inverse, #8eceb9)}:host([onDark][tertiary]){--ds-auro-icon-color: var(--ds-color-icon-tertiary-inverse, #939fad)}:host([onDark][warning]){--ds-auro-icon-color: var(--ds-color-icon-warning-inverse, #f2c153)}`;
8779
+
8780
+ // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
8781
+ // See LICENSE in the project root for license information.
8782
+
8783
+
8784
+ // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
8785
+ /**
8786
+ * auro-icon provides users a way to use the Auro Icons by simply passing in the category and name.
8787
+ *
8788
+ * @attr {String} category - The category of the icon you are looking for. See https://auro.alaskaair.com/icons/usage.
8789
+ * @attr {String} name - The name of the icon you are looking for without the file extension. See https://auro.alaskaair.com/icons/usage
8790
+ * @attr {Boolean} customColor - Removes primary selector.
8791
+ * @attr {Boolean} customSvg - When true, auro-icon will render a custom SVG inside the default slot.
8792
+ * @attr {Boolean} label - Exposes content in slot as icon label.
8793
+ * @attr {Boolean} primary - DEPRECATED: Sets the icon to use the baseline primary icon style.
8794
+ * @attr {Boolean} accent - Sets the icon to use the accent style.
8795
+ * @attr {Boolean} emphasis - Sets the icon to use the emphasis style.
8796
+ * @attr {Boolean} disabled - Sets the icon to use the disabled style.
8797
+ * @attr {Boolean} error - Sets the icon to use the error style.
8798
+ * @attr {Boolean} info - Sets the icon to use the info style.
8799
+ * @attr {Boolean} secondary - Sets the icon to use the secondary style.
8800
+ * @attr {Boolean} tertiary - Sets the icon to use the tertiary style.
8801
+ * @attr {Boolean} subtle - Sets the icon to use the subtle style.
8802
+ * @attr {Boolean} success - Sets the icon to use the success style.
8803
+ * @attr {Boolean} warning - Sets the icon to use the warning style.
8804
+ * @attr {String} ariaHidden - Set aria-hidden value. Default is `true`. Option is `false`.
8805
+ * @attr {String} uri - Set the uri for CDN used when fetching icons
8806
+ * @slot - Hidden from visibility, used for a11y if icon description is needed.
8807
+ * @slot svg - Used for custom SVG content.
8808
+ */
8809
+
8810
+ // build the component class
8811
+ class AuroIcon extends BaseIcon {
8812
+ constructor() {
8813
+ super();
8814
+
8815
+ this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
8816
+
8817
+ this.privateDefaults();
8780
8818
  }
8781
8819
 
8782
8820
  /**
8783
- * Sets the index value of the selected item or first non-disabled menuoption.
8821
+ * Internal Defaults.
8784
8822
  * @private
8823
+ * @returns {void}
8785
8824
  */
8786
- getSelectedIndex() {
8787
- // find the first `selected` and not `disabled`, `hidden` or `static` option
8788
- const index = this.items.findIndex((option) => option.hasAttribute('selected') && this.optionInteractive(option));
8825
+ privateDefaults() {
8826
+ this.accent = false;
8827
+ this.customColor = false;
8828
+ this.customSvg = false;
8829
+ this.disabled = false;
8830
+ this.emphasis = false;
8831
+ this.error = false;
8832
+ this.info = false;
8833
+ this.label = false;
8834
+ this.primary = false;
8835
+ this.secondary = false;
8836
+ this.subtle = false;
8837
+ this.success = false;
8838
+ this.tertiary = false;
8839
+ this.warning = false;
8840
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$2();
8841
+ }
8789
8842
 
8790
- if (index >= 0) {
8791
- this.index = index;
8792
- this.makeSelection();
8793
- }
8843
+ // function to define props used within the scope of this component
8844
+ static get properties() {
8845
+ return {
8846
+ ...super.properties,
8847
+ accent: {
8848
+ type: Boolean,
8849
+ reflect: true
8850
+ },
8851
+ ariaHidden: {
8852
+ type: String,
8853
+ reflect: true
8854
+ },
8855
+ category: {
8856
+ type: String,
8857
+ reflect: true
8858
+ },
8859
+ customColor: {
8860
+ type: Boolean
8861
+ },
8862
+ customSvg: {
8863
+ type: Boolean
8864
+ },
8865
+ disabled: {
8866
+ type: Boolean,
8867
+ reflect: true
8868
+ },
8869
+ emphasis: {
8870
+ type: Boolean,
8871
+ reflect: true
8872
+ },
8873
+ error: {
8874
+ type: Boolean,
8875
+ reflect: true
8876
+ },
8877
+ info: {
8878
+ type: Boolean,
8879
+ reflect: true
8880
+ },
8881
+ label: {
8882
+ type: Boolean,
8883
+ reflect: true
8884
+ },
8885
+ name: {
8886
+ type: String,
8887
+ reflect: true
8888
+ },
8889
+ primary: {
8890
+ type: Boolean,
8891
+ reflect: true
8892
+ },
8893
+ secondary: {
8894
+ type: Boolean,
8895
+ reflect: true
8896
+ },
8897
+ subtle: {
8898
+ type: Boolean,
8899
+ reflect: true
8900
+ },
8901
+ success: {
8902
+ type: Boolean,
8903
+ reflect: true
8904
+ },
8905
+ tertiary: {
8906
+ type: Boolean,
8907
+ reflect: true
8908
+ },
8909
+ uri: {
8910
+ type: String
8911
+ },
8912
+ warning: {
8913
+ type: Boolean,
8914
+ reflect: true
8915
+ }
8916
+ };
8917
+ }
8918
+
8919
+ static get styles() {
8920
+ return [
8921
+ super.styles,
8922
+ i$c`${tokensCss}`,
8923
+ i$c`${styleCss}`,
8924
+ i$c`${colorCss}`
8925
+ ];
8794
8926
  }
8795
8927
 
8796
8928
  /**
8797
- * Using value of current this.index evaluates index
8798
- * of next :focus to set based on array of this.items ignoring items
8799
- * with disabled attr.
8929
+ * This will register this element with the browser.
8930
+ * @param {string} [name="auro-icon"] - The name of element that you want to register to.
8931
+ *
8932
+ * @example
8933
+ * AuroIcon.register("custom-icon") // this will register this element to <custom-icon/>
8800
8934
  *
8801
- * The event.target is not used as the function needs to know where to go,
8802
- * versus knowing where it is.
8803
- * @param {String} moveDirection - Up or Down based on keyboard event.
8804
8935
  */
8805
- selectNextItem(moveDirection) {
8806
- if (this.index >= 0) {
8807
- this.items[this.index].classList.remove('active');
8808
-
8809
- // calculate which is the selection we should focus next
8810
- let increment = 0;
8811
-
8812
- if (moveDirection === 'down') {
8813
- increment = 1;
8814
- } else if (moveDirection === 'up') {
8815
- increment = -1;
8816
- }
8817
-
8818
- this.index += increment;
8819
-
8820
- // keep looping inside the array of options
8821
- if (this.index > this.items.length - 1) {
8822
- this.index = 0;
8823
- } else if (this.index < 0) {
8824
- this.index = this.items.length - 1;
8825
- }
8936
+ static register(name = "auro-icon") {
8937
+ AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroIcon);
8938
+ }
8826
8939
 
8827
- // check if new index is disabled, static or hidden, if so, execute again
8828
- if (!this.optionInteractive(this.items[this.index])) {
8829
- this.selectNextItem(moveDirection);
8830
- } else {
8831
- // apply focus to new index
8832
- this.updateActiveOption(this.index);
8833
- }
8834
- } else {
8835
- this.index = 0;
8940
+ connectedCallback() {
8941
+ super.connectedCallback();
8836
8942
 
8837
- if (this.items[this.index].hasAttribute('hidden') || this.items[this.index].hasAttribute('disabled')) {
8838
- this.selectNextItem(moveDirection);
8839
- } else {
8840
- this.updateActiveOption(this.index);
8841
- }
8842
- }
8943
+ // Add the tag name as an attribute if it is different than the component name
8944
+ this.runtimeUtils.handleComponentTagRename(this, 'auro-icon');
8843
8945
  }
8844
8946
 
8845
8947
  /**
8846
- * Used for applying indentation to each level of nested menu.
8847
- * @private
8848
- * @param {String} menu - Root level menu object.
8948
+ * @returns {void} Exposes CSS parts for styling from parent components.
8849
8949
  */
8850
- handleNestedMenus(menu) {
8851
- const nestedMenus = menu.querySelectorAll('auro-menu, [auro-menu');
8950
+ exposeCssParts() {
8951
+ this.setAttribute('exportparts', 'svg:iconSvg');
8952
+ }
8852
8953
 
8853
- if (nestedMenus.length === 0) {
8854
- return;
8855
- }
8954
+ // function that renders the HTML and CSS into the scope of the component
8955
+ render() {
8956
+ const a11y = {
8957
+ 'labelContainer': true,
8958
+ 'util_displayHiddenVisually': !this.label
8959
+ };
8856
8960
 
8857
- nestedMenus.forEach((nestedMenu) => {
8858
- const options = nestedMenu.querySelectorAll(':scope > auro-menuoption, :scope > [auro-menuoption');
8961
+ const classes = {
8962
+ 'label': this.label
8963
+ };
8859
8964
 
8860
- options.forEach((option) => {
8861
- option.innerHTML = this.nestingSpacer + option.innerHTML;
8862
- });
8965
+ return x$2`
8966
+ <div
8967
+ class="${e(classes)}"
8968
+ title="${o(this.title || undefined)}">
8969
+ <span aria-hidden="${o(this.ariaHidden ? this.ariaHidden : true)}" part="svg">
8970
+ ${this.customSvg ? x$2`
8971
+ <slot name="svg"></slot>
8972
+ ` : x$2`
8973
+ ${this.svg}
8974
+ `
8975
+ }
8976
+ </span>
8863
8977
 
8864
- this.handleNestedMenus(nestedMenu);
8865
- });
8978
+ <div class="${e(a11y)}">
8979
+ <slot></slot>
8980
+ </div>
8981
+ </div>
8982
+ `;
8866
8983
  }
8984
+ }
8867
8985
 
8868
- /**
8869
- * Method to apply `selected` attribute to `menuoption` via `value`.
8870
- * @private
8871
- * @param {String} value - Must match a unique `menuoption` value.
8872
- */
8873
- selectByValue(value) {
8874
- let valueMatch = false;
8875
- if (!this.items) {
8876
- this.initItems();
8877
- }
8986
+ var iconVersion = '6.1.1';
8878
8987
 
8879
- this.index = undefined;
8988
+ var checkmarkIcon = {"role":"img","color":"currentColor","title":"","desc":"a small check mark.","width":"var(--auro-size-lg, var(--ds-size-300, 1.5rem))","height":"var(--auro-size-lg, var(--ds-size-300, 1.5rem))","xmlns":"http://www.w3.org/2000/svg","xmlns_xlink":"http://www.w3.org/1999/xlink","viewBox":"0 0 24 24","path":"/icons","style":"ico_squareLarge","type":"icon","name":"checkmark-sm","category":"interface","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-labelledby=\"checkmark-sm__desc\" class=\"ico_squareLarge\" role=\"img\" style=\"min-width:var(--auro-size-lg, var(--ds-size-300, 1.5rem));height:var(--auro-size-lg, var(--ds-size-300, 1.5rem));fill:currentColor\" viewBox=\"0 0 24 24\" part=\"svg\"><title/><desc id=\"checkmark-sm__desc\">a small check mark.</desc><path d=\"M8.461 11.84a.625.625 0 1 0-.922.844l2.504 2.738c.247.27.674.27.922 0l5.496-6a.625.625 0 1 0-.922-.844l-5.035 5.496z\"/></svg>"};
8880
8989
 
8881
- if (this.value && this.value.length > 0) {
8882
- for (let index = 0; index < this.items.length; index += 1) {
8883
- if (this.items[index].value === value) {
8884
- valueMatch = true;
8885
- this.index = index;
8886
- }
8887
- }
8990
+ // Copyright (c) 2021 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
8991
+ // See LICENSE in the project root for license information.
8888
8992
 
8889
- if (!valueMatch) {
8890
- // reset the menu to no selection
8891
- this.index = undefined;
8892
8993
 
8893
- // this event needs to be removed after select and combobox are updated to use the new standard name
8894
- this.dispatchEvent(new CustomEvent('auroMenuSelectValueFailure', {
8895
- bubbles: true,
8896
- cancelable: false,
8897
- composed: true,
8898
- }));
8994
+ /**
8995
+ * The auro-menu element provides users a way to define a menu option.
8996
+ *
8997
+ * @attr {String} value - Specifies the value to be sent to a server.
8998
+ * @attr {String} noCheckmark - When true, selected option will not show the checkmark.
8999
+ * @attr {Boolean} disabled - When true specifies that the menuoption is disabled.
9000
+ * @attr {Boolean} selected - Specifies that an option is selected.
9001
+ * @event auroMenuOption-mouseover - Notifies that this option has been hovered over.
9002
+ * @slot - Specifies text for an option, but is not the value.
9003
+ */
9004
+ class AuroMenuOption extends r$6 {
9005
+ constructor() {
9006
+ super();
8899
9007
 
8900
- this.dispatchEvent(new CustomEvent('auroMenu-selectValueFailure', {
8901
- bubbles: true,
8902
- cancelable: false,
8903
- composed: true,
8904
- }));
8905
- } else {
8906
- this.makeSelection();
9008
+ /**
9009
+ * Generate unique names for dependency components.
9010
+ */
9011
+ const versioning = new AuroDependencyVersioning$2();
9012
+ this.iconTag = versioning.generateTag('auro-icon', iconVersion, AuroIcon);
9013
+
9014
+ this.selected = false;
9015
+ this.nocheckmark = false;
9016
+ this.disabled = false;
9017
+
9018
+ /**
9019
+ * @private
9020
+ */
9021
+ this.tabIndex = -1;
9022
+
9023
+ /**
9024
+ * @private
9025
+ */
9026
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$2();
9027
+ }
9028
+
9029
+ static get properties() {
9030
+ return {
9031
+ nocheckmark: {
9032
+ type: Boolean,
9033
+ reflect: true
9034
+ },
9035
+ selected: {
9036
+ type: Boolean,
9037
+ reflect: true
9038
+ },
9039
+ disabled: {
9040
+ type: Boolean,
9041
+ reflect: true
9042
+ },
9043
+ value: {
9044
+ type: String,
9045
+ reflect: true
9046
+ },
9047
+ tabIndex: {
9048
+ type: Number,
9049
+ reflect: true
8907
9050
  }
8908
- } else {
8909
- this.resetOptionsStates();
9051
+ };
9052
+ }
8910
9053
 
8911
- this.dispatchEvent(new CustomEvent('auroMenu-selectValueReset', {
8912
- bubbles: true,
8913
- cancelable: false,
8914
- composed: true,
8915
- }));
8916
- }
9054
+ static get styles() {
9055
+ return [
9056
+ styleCss$1,
9057
+ colorCss$1,
9058
+ tokensCss$1
9059
+ ];
8917
9060
  }
8918
9061
 
8919
9062
  /**
8920
- * Used to make the active state for options follow mouseover.
8921
- * @param {Number} index - Index of the menuoption that will be made active.
8922
- * @private
9063
+ * This will register this element with the browser.
9064
+ * @param {string} [name="auro-menuoption"] - The name of element that you want to register to.
9065
+ *
9066
+ * @example
9067
+ * AuroMenuOption.register("custom-menuoption") // this will register this element to <custom-menuoption/>
9068
+ *
8923
9069
  */
8924
- updateActiveOption(index) {
8925
- this.items.forEach((item) => {
8926
- item.classList.remove('active');
8927
- });
8928
- this.items[index].classList.add('active');
8929
- this.optionActive = this.items[index];
9070
+ static register(name = "auro-menuoption") {
9071
+ AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroMenuOption);
9072
+ }
8930
9073
 
8931
- this.dispatchEvent(new CustomEvent('auroMenuActivatedOption', {
8932
- bubbles: true,
8933
- cancelable: false,
8934
- composed: true,
8935
- detail: this.items[index]
8936
- }));
9074
+ firstUpdated() {
9075
+ // Add the tag name as an attribute if it is different than the component name
9076
+ this.runtimeUtils.handleComponentTagRename(this, 'auro-menuoption');
8937
9077
 
8938
- this.dispatchEvent(new CustomEvent('auroMenu-activatedOption', {
8939
- bubbles: true,
8940
- cancelable: false,
8941
- composed: true,
8942
- detail: this.items[index]
8943
- }));
9078
+ this.setAttribute('role', 'option');
9079
+ this.setAttribute('aria-selected', 'false');
9080
+
9081
+ this.addEventListener('mouseover', () => {
9082
+ this.dispatchEvent(new CustomEvent('auroMenuOption-mouseover', {
9083
+ bubbles: true,
9084
+ cancelable: false,
9085
+ composed: true,
9086
+ detail: this
9087
+ }));
9088
+ });
8944
9089
  }
8945
9090
 
8946
- /**
8947
- * Used to only make a selection when a menuoption is receiving a mousedown event.
8948
- * @param {Event} evt - Mousedown event.
8949
- * @private
8950
- */
8951
- handleMenuMouseDown(evt) {
8952
- if (evt.target !== this) {
8953
- this.makeSelection();
9091
+ // observer for selected property changes
9092
+ updated(changedProperties) {
9093
+ if (changedProperties.has('selected')) {
9094
+ this.setAttribute('aria-selected', this.selected.toString());
8954
9095
  }
8955
9096
  }
8956
9097
 
8957
9098
  /**
8958
- * Used for @slotchange event on slotted element.
9099
+ * Generates an HTML element containing an SVG icon based on the provided `svgContent`.
9100
+ *
8959
9101
  * @private
9102
+ * @param {string} svgContent - The SVG content to be embedded.
9103
+ * @returns {Element} The HTML element containing the SVG icon.
8960
9104
  */
8961
- handleSlotItems() {
8962
- // Determine if this is the root of the menu/submenu layout.
8963
- if (this.parentElement && this.parentElement.closest('auro-menu, [auro-menu]')) {
8964
- this.rootMenu = false;
8965
- }
9105
+ generateIconHtml(svgContent) {
9106
+ const dom = new DOMParser().parseFromString(svgContent, 'text/html');
9107
+ const svg = dom.body.firstChild;
8966
9108
 
8967
- // If this is the root menu (not a nested menu) handle events, states and styling.
8968
- if (this.rootMenu) {
8969
- this.initItems();
8970
- this.setAttribute('role', 'listbox');
8971
- this.setAttribute('root', '');
8972
- this.handleNestedMenus(this);
8973
- this.markOptions();
8974
- this.index = -1;
8975
- this.getSelectedIndex();
9109
+ svg.setAttribute('slot', 'svg');
8976
9110
 
8977
- this.addEventListener('keydown', this.handleKeyDown);
8978
- this.addEventListener('mousedown', this.handleMenuMouseDown);
8979
- this.addEventListener('auroMenuOption-mouseover', (evt) => {
8980
- this.index = this.items.indexOf(evt.target);
8981
- this.updateActiveOption(this.index);
8982
- });
8983
- } else {
8984
- // make sure to update all menuoption noCheckmark attributes when the menu is dynamically changed
8985
- this.handleNoCheckmarkAttr();
8986
- }
9111
+ return u$6`<${this.iconTag} customColor customSvg slot="icon">${svg}</${this.iconTag}>`;
8987
9112
  }
8988
9113
 
8989
9114
  render() {
8990
- return x$2`
8991
- <slot @slotchange=${this.handleSlotItems}></slot>
9115
+ return u$6`
9116
+ ${this.selected && !this.nocheckmark ? this.generateIconHtml(checkmarkIcon.svg) : undefined}
9117
+ <slot></slot>
8992
9118
  `;
8993
9119
  }
8994
9120
  }
@@ -9010,6 +9136,7 @@ function initExamples(initCount) {
9010
9136
  valueExample();
9011
9137
  focusExample();
9012
9138
  inDialogExample();
9139
+ auroMenuLoadingExample();
9013
9140
  } catch (err) {
9014
9141
  if (initCount <= 20) {
9015
9142
  // setTimeout handles issue where content is sometimes loaded after the functions get called