@aurodesignsystem-dev/auro-formkit 0.0.0-pr1001.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE +201 -0
  3. package/NOTICE +2 -0
  4. package/README.md +314 -0
  5. package/components/bibtemplate/dist/auro-bibtemplate.d.ts +50 -0
  6. package/components/bibtemplate/dist/buttonVersion.d.ts +2 -0
  7. package/components/bibtemplate/dist/headerVersion.d.ts +2 -0
  8. package/components/bibtemplate/dist/iconVersion.d.ts +2 -0
  9. package/components/bibtemplate/dist/index.d.ts +2 -0
  10. package/components/bibtemplate/dist/index.js +1940 -0
  11. package/components/bibtemplate/dist/registered.js +1940 -0
  12. package/components/bibtemplate/dist/styles/color-css.d.ts +2 -0
  13. package/components/bibtemplate/dist/styles/style-css.d.ts +2 -0
  14. package/components/bibtemplate/dist/styles/tokens-css.d.ts +2 -0
  15. package/components/checkbox/README.md +142 -0
  16. package/components/checkbox/demo/api.html +61 -0
  17. package/components/checkbox/demo/api.js +17 -0
  18. package/components/checkbox/demo/api.md +436 -0
  19. package/components/checkbox/demo/api.min.js +1870 -0
  20. package/components/checkbox/demo/index.html +57 -0
  21. package/components/checkbox/demo/index.js +8 -0
  22. package/components/checkbox/demo/index.md +327 -0
  23. package/components/checkbox/demo/index.min.js +1845 -0
  24. package/components/checkbox/demo/readme.html +57 -0
  25. package/components/checkbox/demo/readme.md +142 -0
  26. package/components/checkbox/dist/auro-checkbox-group.d.ts +166 -0
  27. package/components/checkbox/dist/auro-checkbox.d.ts +136 -0
  28. package/components/checkbox/dist/helptextVersion.d.ts +2 -0
  29. package/components/checkbox/dist/index.d.ts +3 -0
  30. package/components/checkbox/dist/index.js +1794 -0
  31. package/components/checkbox/dist/registered.js +1795 -0
  32. package/components/checkbox/dist/styles/auro-checkbox-css.d.ts +2 -0
  33. package/components/checkbox/dist/styles/auro-checkbox-group-css.d.ts +2 -0
  34. package/components/checkbox/dist/styles/color-css.d.ts +2 -0
  35. package/components/checkbox/dist/styles/colorGroup-css.d.ts +2 -0
  36. package/components/checkbox/dist/styles/tokens-css.d.ts +2 -0
  37. package/components/combobox/README.md +154 -0
  38. package/components/combobox/demo/api.html +63 -0
  39. package/components/combobox/demo/api.js +36 -0
  40. package/components/combobox/demo/api.md +1326 -0
  41. package/components/combobox/demo/api.min.js +18691 -0
  42. package/components/combobox/demo/index.html +63 -0
  43. package/components/combobox/demo/index.js +26 -0
  44. package/components/combobox/demo/index.md +725 -0
  45. package/components/combobox/demo/index.min.js +18545 -0
  46. package/components/combobox/demo/readme.html +57 -0
  47. package/components/combobox/demo/readme.md +154 -0
  48. package/components/combobox/dist/auro-combobox.d.ts +434 -0
  49. package/components/combobox/dist/bibtemplateVersion.d.ts +2 -0
  50. package/components/combobox/dist/dropdownVersion.d.ts +2 -0
  51. package/components/combobox/dist/index.d.ts +2 -0
  52. package/components/combobox/dist/index.js +16999 -0
  53. package/components/combobox/dist/inputVersion.d.ts +2 -0
  54. package/components/combobox/dist/registered.js +17001 -0
  55. package/components/combobox/dist/styles/emphasized/style-css.d.ts +2 -0
  56. package/components/combobox/dist/styles/snowflake/style-css.d.ts +2 -0
  57. package/components/combobox/dist/styles/style-css.d.ts +2 -0
  58. package/components/counter/README.md +146 -0
  59. package/components/counter/demo/api.html +61 -0
  60. package/components/counter/demo/api.js +20 -0
  61. package/components/counter/demo/api.md +730 -0
  62. package/components/counter/demo/api.min.js +10406 -0
  63. package/components/counter/demo/index.html +61 -0
  64. package/components/counter/demo/index.js +21 -0
  65. package/components/counter/demo/index.md +401 -0
  66. package/components/counter/demo/index.min.js +10370 -0
  67. package/components/counter/demo/readme.html +57 -0
  68. package/components/counter/demo/readme.md +146 -0
  69. package/components/counter/dist/auro-counter-button.d.ts +14 -0
  70. package/components/counter/dist/auro-counter-group.d.ts +386 -0
  71. package/components/counter/dist/auro-counter-wrapper.d.ts +22 -0
  72. package/components/counter/dist/auro-counter.d.ts +113 -0
  73. package/components/counter/dist/bibtemplateVersion.d.ts +2 -0
  74. package/components/counter/dist/dropdownVersion.d.ts +2 -0
  75. package/components/counter/dist/helptextVersion.d.ts +2 -0
  76. package/components/counter/dist/iconVersion.d.ts +2 -0
  77. package/components/counter/dist/index.d.ts +3 -0
  78. package/components/counter/dist/index.js +10313 -0
  79. package/components/counter/dist/registered.js +10314 -0
  80. package/components/counter/dist/styles/color-css.d.ts +2 -0
  81. package/components/counter/dist/styles/counter-button-color-css.d.ts +2 -0
  82. package/components/counter/dist/styles/counter-button-css.d.ts +2 -0
  83. package/components/counter/dist/styles/counter-group-css.d.ts +2 -0
  84. package/components/counter/dist/styles/counter-wrapper-color-css.d.ts +2 -0
  85. package/components/counter/dist/styles/counter-wrapper-css.d.ts +2 -0
  86. package/components/counter/dist/styles/shapeSize-css.d.ts +2 -0
  87. package/components/counter/dist/styles/style-css.d.ts +2 -0
  88. package/components/counter/dist/styles/tokens-css.d.ts +2 -0
  89. package/components/datepicker/README.md +141 -0
  90. package/components/datepicker/demo/api.html +63 -0
  91. package/components/datepicker/demo/api.js +35 -0
  92. package/components/datepicker/demo/api.md +1529 -0
  93. package/components/datepicker/demo/api.min.js +29755 -0
  94. package/components/datepicker/demo/index.html +62 -0
  95. package/components/datepicker/demo/index.js +19 -0
  96. package/components/datepicker/demo/index.md +204 -0
  97. package/components/datepicker/demo/index.min.js +29476 -0
  98. package/components/datepicker/demo/readme.html +57 -0
  99. package/components/datepicker/demo/readme.md +141 -0
  100. package/components/datepicker/dist/auro-calendar-cell.d.ts +163 -0
  101. package/components/datepicker/dist/auro-calendar-month.d.ts +20 -0
  102. package/components/datepicker/dist/auro-calendar.d.ts +133 -0
  103. package/components/datepicker/dist/auro-datepicker.d.ts +625 -0
  104. package/components/datepicker/dist/bibtemplateVersion.d.ts +2 -0
  105. package/components/datepicker/dist/buttonVersion.d.ts +2 -0
  106. package/components/datepicker/dist/dropdownVersion.d.ts +2 -0
  107. package/components/datepicker/dist/iconVersion.d.ts +2 -0
  108. package/components/datepicker/dist/index.d.ts +2 -0
  109. package/components/datepicker/dist/index.js +29406 -0
  110. package/components/datepicker/dist/inputVersion.d.ts +2 -0
  111. package/components/datepicker/dist/popoverVersion.d.ts +2 -0
  112. package/components/datepicker/dist/registered.js +29406 -0
  113. package/components/datepicker/dist/styles/classic/color-css.d.ts +2 -0
  114. package/components/datepicker/dist/styles/classic/style-css.d.ts +2 -0
  115. package/components/datepicker/dist/styles/color-calendar-css.d.ts +2 -0
  116. package/components/datepicker/dist/styles/color-cell-css.d.ts +2 -0
  117. package/components/datepicker/dist/styles/color-css.d.ts +2 -0
  118. package/components/datepicker/dist/styles/color-month-css.d.ts +2 -0
  119. package/components/datepicker/dist/styles/shapeSize-css.d.ts +2 -0
  120. package/components/datepicker/dist/styles/snowflake/color-css.d.ts +2 -0
  121. package/components/datepicker/dist/styles/snowflake/style-css.d.ts +2 -0
  122. package/components/datepicker/dist/styles/style-auro-calendar-cell-css.d.ts +2 -0
  123. package/components/datepicker/dist/styles/style-auro-calendar-css.d.ts +2 -0
  124. package/components/datepicker/dist/styles/style-auro-calendar-month-css.d.ts +2 -0
  125. package/components/datepicker/dist/styles/style-css.d.ts +2 -0
  126. package/components/datepicker/dist/styles/tokens-css.d.ts +2 -0
  127. package/components/datepicker/dist/utilities.d.ts +78 -0
  128. package/components/datepicker/dist/utilitiesCalendar.d.ts +38 -0
  129. package/components/datepicker/dist/utilitiesCalendarRender.d.ts +50 -0
  130. package/components/datepicker/dist/vendor/wc-range-datepicker/day.d.ts +5 -0
  131. package/components/datepicker/dist/vendor/wc-range-datepicker/range-datepicker-calendar.d.ts +60 -0
  132. package/components/datepicker/dist/vendor/wc-range-datepicker/range-datepicker-cell.d.ts +1 -0
  133. package/components/datepicker/dist/vendor/wc-range-datepicker/range-datepicker.d.ts +57 -0
  134. package/components/dropdown/README.md +144 -0
  135. package/components/dropdown/demo/api.html +63 -0
  136. package/components/dropdown/demo/api.js +21 -0
  137. package/components/dropdown/demo/api.md +1266 -0
  138. package/components/dropdown/demo/api.min.js +4442 -0
  139. package/components/dropdown/demo/index.html +61 -0
  140. package/components/dropdown/demo/index.js +19 -0
  141. package/components/dropdown/demo/index.md +337 -0
  142. package/components/dropdown/demo/index.min.js +4405 -0
  143. package/components/dropdown/demo/readme.html +57 -0
  144. package/components/dropdown/demo/readme.md +144 -0
  145. package/components/dropdown/dist/auro-dropdown.d.ts +425 -0
  146. package/components/dropdown/dist/auro-dropdownBib.d.ts +68 -0
  147. package/components/dropdown/dist/dropdownVersion.d.ts +2 -0
  148. package/components/dropdown/dist/helptextVersion.d.ts +2 -0
  149. package/components/dropdown/dist/iconVersion.d.ts +2 -0
  150. package/components/dropdown/dist/index.d.ts +2 -0
  151. package/components/dropdown/dist/index.js +4350 -0
  152. package/components/dropdown/dist/registered.js +4350 -0
  153. package/components/dropdown/dist/styles/classic/bibColors-css.d.ts +2 -0
  154. package/components/dropdown/dist/styles/classic/bibStyles-css.d.ts +2 -0
  155. package/components/dropdown/dist/styles/classic/color-css.d.ts +2 -0
  156. package/components/dropdown/dist/styles/classic/style-css.d.ts +2 -0
  157. package/components/dropdown/dist/styles/color-css.d.ts +2 -0
  158. package/components/dropdown/dist/styles/emphasized/style-css.d.ts +2 -0
  159. package/components/dropdown/dist/styles/shapeSize-css.d.ts +2 -0
  160. package/components/dropdown/dist/styles/snowflake/style-css.d.ts +2 -0
  161. package/components/dropdown/dist/styles/style-css.d.ts +2 -0
  162. package/components/dropdown/dist/styles/tokens-css.d.ts +2 -0
  163. package/components/form/README.md +142 -0
  164. package/components/form/demo/api.html +56 -0
  165. package/components/form/demo/api.js +3 -0
  166. package/components/form/demo/api.md +51 -0
  167. package/components/form/demo/api.min.js +638 -0
  168. package/components/form/demo/autocomplete.html +31 -0
  169. package/components/form/demo/index.html +57 -0
  170. package/components/form/demo/index.js +4 -0
  171. package/components/form/demo/index.md +403 -0
  172. package/components/form/demo/index.min.js +639 -0
  173. package/components/form/demo/readme.html +57 -0
  174. package/components/form/demo/readme.md +142 -0
  175. package/components/form/demo/registerDemoDeps.js +23 -0
  176. package/components/form/demo/working.html +124 -0
  177. package/components/form/dist/auro-form.d.ts +223 -0
  178. package/components/form/dist/index.d.ts +2 -0
  179. package/components/form/dist/index.js +614 -0
  180. package/components/form/dist/registered.d.ts +1 -0
  181. package/components/form/dist/registered.js +614 -0
  182. package/components/form/dist/styles/style-css.d.ts +2 -0
  183. package/components/helptext/dist/auro-helptext.d.ts +59 -0
  184. package/components/helptext/dist/index.d.ts +2 -0
  185. package/components/helptext/dist/index.js +207 -0
  186. package/components/helptext/dist/registered.js +207 -0
  187. package/components/helptext/dist/styles/color-css.d.ts +2 -0
  188. package/components/helptext/dist/styles/style-css.d.ts +2 -0
  189. package/components/helptext/dist/styles/tokens-css.d.ts +2 -0
  190. package/components/input/README.md +139 -0
  191. package/components/input/demo/api.html +48 -0
  192. package/components/input/demo/api.js +29 -0
  193. package/components/input/demo/api.md +1366 -0
  194. package/components/input/demo/api.min.js +8542 -0
  195. package/components/input/demo/index.html +49 -0
  196. package/components/input/demo/index.js +20 -0
  197. package/components/input/demo/index.md +270 -0
  198. package/components/input/demo/index.min.js +8461 -0
  199. package/components/input/demo/readme.html +57 -0
  200. package/components/input/demo/readme.md +139 -0
  201. package/components/input/dist/auro-input.d.ts +167 -0
  202. package/components/input/dist/base-input.d.ts +566 -0
  203. package/components/input/dist/buttonVersion.d.ts +2 -0
  204. package/components/input/dist/helptextVersion.d.ts +2 -0
  205. package/components/input/dist/i18n.d.ts +18 -0
  206. package/components/input/dist/iconVersion.d.ts +2 -0
  207. package/components/input/dist/index.d.ts +2 -0
  208. package/components/input/dist/index.js +8367 -0
  209. package/components/input/dist/registered.js +8367 -0
  210. package/components/input/dist/styles/classic/color-css.d.ts +2 -0
  211. package/components/input/dist/styles/classic/style-css.d.ts +2 -0
  212. package/components/input/dist/styles/color-css.d.ts +2 -0
  213. package/components/input/dist/styles/default/borders-css.d.ts +2 -0
  214. package/components/input/dist/styles/default/color-css.d.ts +2 -0
  215. package/components/input/dist/styles/default/mixins-css.d.ts +2 -0
  216. package/components/input/dist/styles/default/notificationIcons-css.d.ts +2 -0
  217. package/components/input/dist/styles/default/style-css.d.ts +2 -0
  218. package/components/input/dist/styles/emphasized/color-css.d.ts +2 -0
  219. package/components/input/dist/styles/emphasized/style-css.d.ts +2 -0
  220. package/components/input/dist/styles/mixins-css.d.ts +2 -0
  221. package/components/input/dist/styles/shapeSize-css.d.ts +2 -0
  222. package/components/input/dist/styles/snowflake/style-css.d.ts +2 -0
  223. package/components/input/dist/styles/style-css.d.ts +2 -0
  224. package/components/input/dist/styles/tokens-css.d.ts +2 -0
  225. package/components/input/dist/utilities.d.ts +25 -0
  226. package/components/layoutElement/dist/auroElement.d.ts +34 -0
  227. package/components/layoutElement/dist/index.d.ts +2 -0
  228. package/components/layoutElement/dist/index.js +98 -0
  229. package/components/layoutElement/dist/registered.js +98 -0
  230. package/components/menu/README.md +145 -0
  231. package/components/menu/demo/api.html +62 -0
  232. package/components/menu/demo/api.js +27 -0
  233. package/components/menu/demo/api.md +1011 -0
  234. package/components/menu/demo/api.min.js +1762 -0
  235. package/components/menu/demo/index.html +58 -0
  236. package/components/menu/demo/index.js +28 -0
  237. package/components/menu/demo/index.md +61 -0
  238. package/components/menu/demo/index.min.js +1708 -0
  239. package/components/menu/demo/readme.html +57 -0
  240. package/components/menu/demo/readme.md +145 -0
  241. package/components/menu/dist/auro-menu-utils.d.ts +34 -0
  242. package/components/menu/dist/auro-menu.d.ts +246 -0
  243. package/components/menu/dist/auro-menuoption.d.ts +81 -0
  244. package/components/menu/dist/dropdownVersion.d.ts +2 -0
  245. package/components/menu/dist/iconVersion.d.ts +2 -0
  246. package/components/menu/dist/index.d.ts +4 -0
  247. package/components/menu/dist/index.js +1691 -0
  248. package/components/menu/dist/registered.js +1651 -0
  249. package/components/menu/dist/styles/default/color-menu-css.d.ts +2 -0
  250. package/components/menu/dist/styles/default/color-menuoption-css.d.ts +2 -0
  251. package/components/menu/dist/styles/default/style-menu-css.d.ts +2 -0
  252. package/components/menu/dist/styles/default/style-menuoption-css.d.ts +2 -0
  253. package/components/menu/dist/styles/default/tokens-css.d.ts +2 -0
  254. package/components/radio/README.md +137 -0
  255. package/components/radio/demo/api.html +59 -0
  256. package/components/radio/demo/api.js +19 -0
  257. package/components/radio/demo/api.md +602 -0
  258. package/components/radio/demo/api.min.js +1951 -0
  259. package/components/radio/demo/index.html +56 -0
  260. package/components/radio/demo/index.js +8 -0
  261. package/components/radio/demo/index.md +150 -0
  262. package/components/radio/demo/index.min.js +1908 -0
  263. package/components/radio/demo/readme.html +57 -0
  264. package/components/radio/demo/readme.md +137 -0
  265. package/components/radio/dist/auro-radio-group.d.ts +194 -0
  266. package/components/radio/dist/auro-radio.d.ts +147 -0
  267. package/components/radio/dist/helptextVersion.d.ts +2 -0
  268. package/components/radio/dist/index.d.ts +3 -0
  269. package/components/radio/dist/index.js +1857 -0
  270. package/components/radio/dist/registered.js +1858 -0
  271. package/components/radio/dist/styles/auro-radio-group-css.d.ts +2 -0
  272. package/components/radio/dist/styles/color-css.d.ts +2 -0
  273. package/components/radio/dist/styles/groupColor-css.d.ts +2 -0
  274. package/components/radio/dist/styles/style-css.d.ts +2 -0
  275. package/components/radio/dist/styles/tokens-css.d.ts +2 -0
  276. package/components/select/README.md +145 -0
  277. package/components/select/demo/api.html +77 -0
  278. package/components/select/demo/api.js +35 -0
  279. package/components/select/demo/api.md +1413 -0
  280. package/components/select/demo/api.min.js +10502 -0
  281. package/components/select/demo/index.html +73 -0
  282. package/components/select/demo/index.js +9 -0
  283. package/components/select/demo/index.md +1151 -0
  284. package/components/select/demo/index.min.js +10390 -0
  285. package/components/select/demo/readme.html +57 -0
  286. package/components/select/demo/readme.md +145 -0
  287. package/components/select/dist/auro-select.d.ts +512 -0
  288. package/components/select/dist/bibtemplateVersion.d.ts +2 -0
  289. package/components/select/dist/dropdownVersion.d.ts +2 -0
  290. package/components/select/dist/helptextVersion.d.ts +2 -0
  291. package/components/select/dist/index.d.ts +2 -0
  292. package/components/select/dist/index.js +8898 -0
  293. package/components/select/dist/registered.js +8898 -0
  294. package/components/select/dist/styles/shapeSize-css.d.ts +2 -0
  295. package/components/select/dist/styles/style-css.d.ts +2 -0
  296. package/components/select/dist/styles/tokens-css.d.ts +2 -0
  297. package/package.json +218 -0
@@ -0,0 +1,1762 @@
1
+ function auroMenuResetExample() {
2
+ const resetExampleBtnElem = document.querySelector('#resetExampleBtn');
3
+ const resetExampleElem = document.querySelector('#resetExample');
4
+
5
+ if (resetExampleElem && resetExampleBtnElem) {
6
+ resetExampleBtnElem.addEventListener('click', () => {
7
+ resetExampleElem.reset();
8
+ });
9
+ }
10
+ }
11
+
12
+ function updateMatch() {
13
+ let matchWordMenu = document.querySelector('#matchWordMenu');
14
+
15
+ matchWordMenu.matchWord = matchWordInput.value;
16
+ }
17
+
18
+ function auroMenuMatchWordExample() {
19
+ let matchWordInput = document.querySelector('#matchWordInput');
20
+
21
+ matchWordInput.addEventListener('keyup', updateMatch);
22
+ }
23
+
24
+ function auroMenuCustomEventExample() {
25
+ let menuCustomEventEl = document.querySelector('auro-menu#customEvent');
26
+
27
+ if (menuCustomEventEl) {
28
+ menuCustomEventEl.addEventListener('mycustomevent', () => {
29
+ console.warn('My Custom Event Fired');
30
+ alert(`My Custom Event Fired`);
31
+ });
32
+ }
33
+ }
34
+
35
+ function auroMenuLoadingExample() {
36
+ document.querySelector("#loadingExampleToggleButton").addEventListener("click", () => {
37
+ document.querySelectorAll("#loadingExampleTable auro-menu").forEach(menu => menu.toggleAttribute("loading"));
38
+ });
39
+ }
40
+
41
+ /**
42
+ * @license
43
+ * Copyright 2019 Google LLC
44
+ * SPDX-License-Identifier: BSD-3-Clause
45
+ */
46
+ const t$2=globalThis,e$4=t$2.ShadowRoot&&(void 0===t$2.ShadyCSS||t$2.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,s$3=Symbol(),o$5=new WeakMap;let n$3 = class n{constructor(t,e,o){if(this._$cssResult$=true,o!==s$3)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e;}get styleSheet(){let t=this.o;const s=this.t;if(e$4&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o$5.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o$5.set(s,t));}return t}toString(){return this.cssText}};const r$2=t=>new n$3("string"==typeof t?t:t+"",void 0,s$3),i$5=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(true===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[o+1]),t[0]);return new n$3(o,t,s$3)},S$1=(s,o)=>{if(e$4)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement("style"),n=t$2.litNonce;void 0!==n&&o.setAttribute("nonce",n),o.textContent=e.cssText,s.appendChild(o);}},c$2=e$4?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return r$2(e)})(t):t;
47
+
48
+ /**
49
+ * @license
50
+ * Copyright 2017 Google LLC
51
+ * SPDX-License-Identifier: BSD-3-Clause
52
+ */const{is:i$4,defineProperty:e$3,getOwnPropertyDescriptor:h$1,getOwnPropertyNames:r$1,getOwnPropertySymbols:o$4,getPrototypeOf:n$2}=Object,a$2=globalThis,c$1=a$2.trustedTypes,l$2=c$1?c$1.emptyScript:"",p$1=a$2.reactiveElementPolyfillSupport,d$1=(t,s)=>t,u$2={toAttribute(t,s){switch(s){case Boolean:t=t?l$2:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t);}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t);}catch(t){i=null;}}return i}},f$1=(t,s)=>!i$4(t,s),b={attribute:true,type:String,converter:u$2,reflect:false,useDefault:false,hasChanged:f$1};Symbol.metadata??=Symbol("metadata"),a$2.litPropertyMetadata??=new WeakMap;let y$1 = class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t);}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=false),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=true),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e$3(this.prototype,t,h);}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h$1(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t;}};return {get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i);},configurable:true,enumerable:true}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d$1("elementProperties")))return;const t=n$2(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties);}static finalize(){if(this.hasOwnProperty(d$1("finalized")))return;if(this.finalized=true,this._$Ei(),this.hasOwnProperty(d$1("properties"))){const t=this.properties,s=[...r$1(t),...o$4(t)];for(const i of s)this.createProperty(i,t[i]);}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i);}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t);}this.elementStyles=this.finalizeStyles(this.styles);}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(c$2(s));}else void 0!==s&&i.push(c$2(s));return i}static _$Eu(t,s){const i=s.attribute;return false===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=false,this.hasUpdated=false,this._$Em=null,this._$Ev();}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)));}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.();}removeController(t){this._$EO?.delete(t);}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t);}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return S$1(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(true),this._$EO?.forEach((t=>t.hostConnected?.()));}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()));}attributeChangedCallback(t,s,i){this._$AK(t,i);}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&true===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u$2).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null;}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u$2;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null;}}requestUpdate(t,s,i){if(void 0!==t){const e=this.constructor,h=this[t];if(i??=e.getPropertyOptions(t),!((i.hasChanged??f$1)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(e._$Eu(t,i))))return;this.C(t,s,i);} false===this.isUpdatePending&&(this._$ES=this._$EP());}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),true!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),true===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t));}async _$EP(){this.isUpdatePending=true;try{await this._$ES;}catch(t){Promise.reject(t);}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0;}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];true!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e);}}let t=false;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EM();}catch(s){throw t=false,this._$EM(),s}t&&this._$AE(s);}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=true,this.firstUpdated(t)),this.updated(t);}_$EM(){this._$AL=new Map,this.isUpdatePending=false;}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return true}update(t){this._$Eq&&=this._$Eq.forEach((t=>this._$ET(t,this[t]))),this._$EM();}updated(t){}firstUpdated(t){}};y$1.elementStyles=[],y$1.shadowRootOptions={mode:"open"},y$1[d$1("elementProperties")]=new Map,y$1[d$1("finalized")]=new Map,p$1?.({ReactiveElement:y$1}),(a$2.reactiveElementVersions??=[]).push("2.1.1");
53
+
54
+ /**
55
+ * @license
56
+ * Copyright 2017 Google LLC
57
+ * SPDX-License-Identifier: BSD-3-Clause
58
+ */
59
+ const t$1=globalThis,i$3=t$1.trustedTypes,s$2=i$3?i$3.createPolicy("lit-html",{createHTML:t=>t}):void 0,e$2="$lit$",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o$3="?"+h,n$1=`<${o$3}>`,r=document,l$1=()=>r.createComment(""),c=t=>null===t||"object"!=typeof t&&"function"!=typeof t,a$1=Array.isArray,u$1=t=>a$1(t)||"function"==typeof t?.[Symbol.iterator],d="[ \t\n\f\r]",f=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\s"'>=/]+)(${d}*=${d}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),p=/'/g,g=/"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),T=Symbol.for("lit-noChange"),E=Symbol.for("lit-nothing"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a$1(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==s$2?s$2.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?"<svg>":3===i?"<math>":"",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?"!--"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp("</"+u[2],"g")),c=m):void 0!==u[3]&&(c=m):c===m?">"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith("/>")?" ":"";l+=c===f?s+n$1:d>=0?(o.push(a),s.slice(0,d)+e$2+s.slice(d)+h+x):s+h+(-2===d?i:x);}return [P(t,l+(t[s]||"<?>")+(2===i?"</svg>":3===i?"</math>":"")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes);}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e$2)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:"."===e[1]?H:"?"===e[1]?I:"@"===e[1]?L:k}),r.removeAttribute(t);}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i$3?i$3.emptyScript:"";for(let i=0;i<s;i++)r.append(t[i],l$1()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l$1());}}}else if(8===r.nodeType)if(r.data===o$3)d.push({type:2,index:c});else {let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1;}c++;}}static createElement(t,i){const s=r.createElement("template");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(false),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i;}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,true);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n];}o!==l?.index&&(h=C.nextNode(),o++);}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV) void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++;}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??true;}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||""===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u$1(t)?this.k(t):this._(t);}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t));}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t;}$(t){const{values:i,_$litType$:s}=t,e="number"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else {const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t;}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a$1(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l$1()),this.O(l$1()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e);}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(false,true,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i;}}setConnected(t){ void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t));}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E;}_$AI(t,i=this,s,e){const h=this.strings;let o=false;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else {const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??"")+h[n+1]),this._$AH[n]=r;}o&&!e&&this.j(t);}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"");}}class H extends k{constructor(){super(...arguments),this.type=3;}j(t){this.element[this.name]=t===E?void 0:t;}}class I extends k{constructor(){super(...arguments),this.type=4;}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E);}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5;}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t;}handleEvent(t){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t);}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s;}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t);}}const j=t$1.litHtmlPolyfillSupport;j?.(N,R),(t$1.litHtmlVersions??=[]).push("3.3.0");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l$1(),t),t,void 0,s??{});}return h._$AI(t),h};
60
+
61
+ /**
62
+ * @license
63
+ * Copyright 2017 Google LLC
64
+ * SPDX-License-Identifier: BSD-3-Clause
65
+ */const s$1=globalThis;let i$2 = class i extends y$1{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0;}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=B(r,this.renderRoot,this.renderOptions);}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(true);}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(false);}render(){return T}};i$2._$litElement$=true,i$2["finalized"]=true,s$1.litElementHydrateSupport?.({LitElement:i$2});const o$2=s$1.litElementPolyfillSupport;o$2?.({LitElement:i$2});(s$1.litElementVersions??=[]).push("4.2.0");
66
+
67
+ var styleCss$2 = i$5`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-family:var(--wcss-body-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem))}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem))}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem))}.display-md{font-family:var(--wcss-display-md-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-md-letter-spacing, 0);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem))}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem))}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem))}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem))}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem))}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem))}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem))}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);font-weight:var(--wcss-heading-xs-weight, 450);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem))}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);font-weight:var(--wcss-heading-2xs-weight, 450);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem))}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));text-transform:uppercase}:host{display:block;vertical-align:middle;line-height:0}:host .menuWrapper{box-sizing:border-box;display:flex;flex-direction:column;width:100%;margin:0;padding:0}:host ::slotted(hr){box-sizing:content-box !important;height:0 !important;overflow:visible !important;margin:var(--ds-size-100, 0.5rem) 0 !important;border-width:0 !important;border-top-width:1px !important;border-top-style:solid !important}:host [loadingplaceholder].empty{opacity:0;position:absolute}:host [loadingplaceholder] slot[name=loadingIcon]{vertical-align:middle;display:inline-block}:host [loadingplaceholder] slot[name=loadingIcon]::slotted(*){margin-right:var(--ds-size-150, 0.75rem)}:host([root]){overflow-y:auto}:host([root]) .menuWrapper.lg{padding:var(--ds-size-150, 0.75rem);gap:var(--ds-size-50, 0.25rem)}:host([root]) .menuWrapper.xl{padding:var(--ds-size-200, 1rem);gap:var(--ds-size-100, 0.5rem)}`;
68
+
69
+ var colorCss$2 = i$5`:host ::slotted(hr){border-top-color:var(--ds-auro-menu-divider-color)}[loadingplaceholder] slot[name=loadingIcon]{color:var(--ds-auro-menu-loader-color)}[loadingplaceholder] slot[name=loadingText]{color:var(--ds-auro-menu-loader-text-color)}`;
70
+
71
+ var tokensCss$1 = i$5`:host{--ds-auro-menu-divider-color: var(--ds-basic-color-border-divider, rgba(0, 0, 0, 0.15));--ds-auro-menu-loader-color: var(--ds-basic-color-brand-primary, #01426a);--ds-auro-menu-loader-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-menuoption-container-color: transparent;--ds-auro-menuoption-container-border-color: var(--ds-auro-menuoption-container-color);--ds-auro-menuoption-icon-color: transparent;--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}`;
72
+
73
+ let AuroElement$1 = class AuroElement extends i$2 {
74
+ static get properties() {
75
+ return {
76
+
77
+ /**
78
+ * Defines the language of an element.
79
+ * @default {'default'}
80
+ */
81
+ layout: {
82
+ type: String,
83
+ attribute: "layout",
84
+ reflect: true
85
+ },
86
+
87
+ shape: {
88
+ type: String,
89
+ attribute: "shape",
90
+ reflect: true
91
+ },
92
+
93
+ size: {
94
+ type: String,
95
+ attribute: "size",
96
+ reflect: true
97
+ },
98
+
99
+ onDark: {
100
+ type: Boolean,
101
+ attribute: "ondark",
102
+ reflect: true
103
+ }
104
+ };
105
+ }
106
+
107
+ resetShapeClasses() {
108
+ const wrapper = this.shadowRoot.querySelector('.wrapper');
109
+
110
+ if (wrapper) {
111
+ wrapper.classList.forEach((className) => {
112
+ if (className.startsWith('shape-')) {
113
+ wrapper.classList.remove(className);
114
+ }
115
+ });
116
+
117
+ if (this.shape && this.size) {
118
+ wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
119
+ } else {
120
+ wrapper.classList.add('shape-none');
121
+ }
122
+ }
123
+
124
+ }
125
+
126
+ resetLayoutClasses() {
127
+ if (this.layout) {
128
+ const wrapper = this.shadowRoot.querySelector('.wrapper');
129
+
130
+ if (wrapper) {
131
+ wrapper.classList.forEach((className) => {
132
+ if (className.startsWith('layout-')) {
133
+ wrapper.classList.remove(className);
134
+ }
135
+ });
136
+
137
+ wrapper.classList.add(`layout-${this.layout.toLowerCase()}`);
138
+ }
139
+ }
140
+ }
141
+
142
+ updateComponentArchitecture() {
143
+ this.resetLayoutClasses();
144
+ this.resetShapeClasses();
145
+ }
146
+
147
+ updated(changedProperties) {
148
+ if (changedProperties.has('layout') || changedProperties.has('shape') || changedProperties.has('size')) {
149
+ this.updateComponentArchitecture();
150
+ }
151
+ }
152
+
153
+ // Try to render the defined `this.layout` layout. If that fails, fall back to the default layout.
154
+ // This will catch if an invalid layout value is passed in and render the default layout if so.
155
+ render() {
156
+ try {
157
+ return this.renderLayout();
158
+ } catch (error) {
159
+ // failed to get the defined layout
160
+ console.error('Failed to get the defined layout - using the default layout', error); // eslint-disable-line no-console
161
+
162
+ // fallback to the default layout
163
+ return this.getLayout('default');
164
+ }
165
+ }
166
+ };
167
+
168
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
169
+ // See LICENSE in the project root for license information.
170
+
171
+ // ---------------------------------------------------------------------
172
+
173
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
174
+
175
+ let AuroLibraryRuntimeUtils$1 = class AuroLibraryRuntimeUtils {
176
+
177
+ /* eslint-disable jsdoc/require-param */
178
+
179
+ /**
180
+ * This will register a new custom element with the browser.
181
+ * @param {String} name - The name of the custom element.
182
+ * @param {Object} componentClass - The class to register as a custom element.
183
+ * @returns {void}
184
+ */
185
+ registerComponent(name, componentClass) {
186
+ if (!customElements.get(name)) {
187
+ customElements.define(name, class extends componentClass {});
188
+ }
189
+ }
190
+
191
+ /**
192
+ * Finds and returns the closest HTML Element based on a selector.
193
+ * @returns {void}
194
+ */
195
+ closestElement(
196
+ selector, // selector like in .closest()
197
+ base = this, // extra functionality to skip a parent
198
+ __Closest = (el, found = el && el.closest(selector)) =>
199
+ !el || el === document || el === window
200
+ ? null // standard .closest() returns null for non-found selectors also
201
+ : found
202
+ ? found // found a selector INside this element
203
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
204
+ ) {
205
+ return __Closest(base);
206
+ }
207
+ /* eslint-enable jsdoc/require-param */
208
+
209
+ /**
210
+ * If the element passed is registered with a different tag name than what is passed in, the tag name is added as an attribute to the element.
211
+ * @param {Object} elem - The element to check.
212
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
213
+ * @returns {void}
214
+ */
215
+ handleComponentTagRename(elem, tagName) {
216
+ const tag = tagName.toLowerCase();
217
+ const elemTag = elem.tagName.toLowerCase();
218
+
219
+ if (elemTag !== tag) {
220
+ elem.setAttribute(tag, true);
221
+ }
222
+ }
223
+
224
+ /**
225
+ * Validates if an element is a specific Auro component.
226
+ * @param {Object} elem - The element to validate.
227
+ * @param {String} tagName - The name of the Auro component to check against.
228
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
229
+ */
230
+ elementMatch(elem, tagName) {
231
+ const tag = tagName.toLowerCase();
232
+ const elemTag = elem.tagName.toLowerCase();
233
+
234
+ return elemTag === tag || elem.hasAttribute(tag);
235
+ }
236
+ };
237
+
238
+ // Copyright (c) 2021 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
239
+ // See LICENSE in the project root for license information.
240
+
241
+
242
+ /**
243
+ * Validates if an option can be interacted with.
244
+ * @private
245
+ * @param {HTMLElement} option - The option to check.
246
+ * @returns {boolean} True if option is interactive.
247
+ */
248
+ function isOptionInteractive(option) {
249
+ return !option.hasAttribute('hidden') &&
250
+ !option.hasAttribute('disabled') &&
251
+ !option.hasAttribute('static');
252
+ }
253
+
254
+ /**
255
+ * Helper method to dispatch custom events.
256
+ * @param {HTMLElement} element - Element to dispatch event from.
257
+ * @param {string} eventName - Name of the event to dispatch.
258
+ * @param {Object} [detail] - Optional detail object to include with the event.
259
+ */
260
+ function dispatchMenuEvent(element, eventName, detail = null) {
261
+ const eventConfig = {
262
+ bubbles: true,
263
+ cancelable: false,
264
+ composed: true
265
+ };
266
+
267
+ if (detail !== null) {
268
+ eventConfig.detail = detail;
269
+ }
270
+
271
+ element.dispatchEvent(new CustomEvent(eventName, eventConfig));
272
+ }
273
+
274
+ /**
275
+ * @license
276
+ * Copyright 2017 Google LLC
277
+ * SPDX-License-Identifier: BSD-3-Clause
278
+ */
279
+ const t={ATTRIBUTE:1},e$1=t=>(...e)=>({_$litDirective$:t,values:e});let i$1 = 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)}};
280
+
281
+ /**
282
+ * @license
283
+ * Copyright 2018 Google LLC
284
+ * SPDX-License-Identifier: BSD-3-Clause
285
+ */const e=e$1(class extends i$1{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}});
286
+
287
+ // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
288
+ // See LICENSE in the project root for license information.
289
+
290
+
291
+
292
+ // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
293
+ /**
294
+ * The auro-menu element provides users a way to select from a list of options.
295
+ * @attr {HTMLElement|Array<HTMLElement>} optionSelected - An array of currently selected menu options, type `HTMLElement` by default. In multi-select mode, `optionSelected` is an array of HTML elements.
296
+ * @attr {object} optionactive - Specifies the current active menuOption.
297
+ * @attr {string} matchword - Specifies a string used to highlight matched string parts in options.
298
+ * @attr {boolean} disabled - When true, the entire menu and all options are disabled;
299
+ * @attr {boolean} nocheckmark - When true, selected option will not show the checkmark.
300
+ * @attr {boolean} loading - When true, displays a loading state using the loadingIcon and loadingText slots if provided.
301
+ * @attr {boolean} multiselect - When true, the selected option can be multiple options.
302
+ * @prop {boolean} hasLoadingPlaceholder - Indicates whether the menu has a loadingIcon or loadingText to render when in a loading state.
303
+ * @event {CustomEvent<Element>} auroMenu-activatedOption - Notifies that a menuoption has been made `active`.
304
+ * @event {CustomEvent<any>} auroMenu-customEventFired - Notifies that a custom event has been fired.
305
+ * @event {CustomEvent<{ loading: boolean; hasLoadingPlaceholder: boolean; }>} auroMenu-loadingChange - Notifies when the loading attribute is changed.
306
+ * @event {CustomEvent<any>} auroMenu-selectValueFailure - Notifies that an attempt to select a menuoption by matching a value has failed.
307
+ * @event {CustomEvent<any>} auroMenu-selectValueReset - Notifies that the component value has been reset.
308
+ * @event {CustomEvent<any>} auroMenu-selectedOption - Notifies that a new menuoption selection has been made.
309
+ * @slot loadingText - Text to show while loading attribute is set
310
+ * @slot loadingIcon - Icon to show while loading attribute is set
311
+ * @slot - Slot for insertion of menu options.
312
+ */
313
+
314
+ /* eslint-disable no-magic-numbers, max-lines, no-extra-parens */
315
+
316
+ class AuroMenu extends AuroElement$1 {
317
+ constructor() {
318
+ super();
319
+
320
+ // State properties (reactive)
321
+
322
+ /**
323
+ * @private
324
+ */
325
+ this.shape = "box";
326
+
327
+ /**
328
+ * @private
329
+ */
330
+ this.size = "sm";
331
+
332
+ // Value of the selected options
333
+ this.value = undefined;
334
+ // Currently selected option
335
+ this.optionSelected = undefined;
336
+ // String used for highlighting/filtering
337
+ this.matchWord = undefined;
338
+ // Hide the checkmark icon on selected options
339
+ this.noCheckmark = false;
340
+ // Currently active option
341
+ this.optionActive = undefined;
342
+ // Loading state
343
+ this.loading = false;
344
+ // Multi-select mode
345
+ this.multiSelect = false;
346
+
347
+ // Event Bindings
348
+
349
+ /**
350
+ * @private
351
+ */
352
+ this.handleKeyDown = this.handleKeyDown.bind(this);
353
+
354
+ /**
355
+ * @private
356
+ */
357
+ this.handleMouseSelect = this.handleMouseSelect.bind(this);
358
+
359
+ /**
360
+ * @private
361
+ */
362
+ this.handleOptionHover = this.handleOptionHover.bind(this);
363
+
364
+ /**
365
+ * @private
366
+ */
367
+ this.handleSlotChange = this.handleSlotChange.bind(this);
368
+
369
+ // Instance properties (non-reactive)
370
+
371
+ /**
372
+ * @private
373
+ */
374
+ Object.assign(this, {
375
+ // Root-level menu (true) or a nested submenu (false)
376
+ rootMenu: true,
377
+ // Currently focused/active menu item index
378
+ index: -1,
379
+ // Nested menu spacer
380
+ nestingSpacer: '<span class="nestingSpacer"></span>',
381
+ // Loading indicator for slot elements
382
+ loadingSlots: null,
383
+ // Store for menu items
384
+ items: [],
385
+ });
386
+ }
387
+
388
+ static get properties() {
389
+ return {
390
+ ...super.properties,
391
+ noCheckmark: {
392
+ type: Boolean,
393
+ reflect: true,
394
+ attribute: 'nocheckmark'
395
+ },
396
+ disabled: {
397
+ type: Boolean,
398
+ reflect: true
399
+ },
400
+ loading: {
401
+ type: Boolean,
402
+ reflect: true
403
+ },
404
+ optionSelected: {
405
+ // Allow HTMLElement, HTMLElement[] arrays and undefined
406
+ type: Object
407
+ },
408
+ optionActive: {
409
+ type: Object,
410
+ attribute: 'optionactive'
411
+ },
412
+ matchWord: {
413
+ type: String,
414
+ attribute: 'matchword'
415
+ },
416
+ multiSelect: {
417
+ type: Boolean,
418
+ reflect: true,
419
+ attribute: 'multiselect'
420
+ },
421
+
422
+ /**
423
+ * Value selected for the component.
424
+ */
425
+ value: {
426
+ type: String,
427
+ reflect: true,
428
+ attribute: 'value'
429
+ },
430
+
431
+ /**
432
+ * Indent level for submenus.
433
+ * @private
434
+ */
435
+ level: {
436
+ type: Number,
437
+ reflect: false,
438
+ attribute: false
439
+ }
440
+ };
441
+ }
442
+
443
+ static get styles() {
444
+ return [
445
+ styleCss$2,
446
+ colorCss$2,
447
+ tokensCss$1
448
+ ];
449
+ }
450
+
451
+ /**
452
+ * This will register this element with the browser.
453
+ * @param {string} [name="auro-menu"] - The name of element that you want to register to.
454
+ *
455
+ * @example
456
+ * AuroMenu.register("custom-menu") // this will register this element to <custom-menu/>
457
+ *
458
+ */
459
+ static register(name = "auro-menu") {
460
+ AuroLibraryRuntimeUtils$1.prototype.registerComponent(name, AuroMenu);
461
+ }
462
+
463
+ /**
464
+ * Formatted value based on `multiSelect` state.
465
+ * Default type is `String`, changing to `Array<String>` when `multiSelect` is true.
466
+ * @private
467
+ * @returns {String|Array<String>}
468
+ */
469
+ get formattedValue() {
470
+ if (this.multiSelect) {
471
+ if (!this.value) {
472
+ return undefined;
473
+ }
474
+ if (this.value.startsWith("[")) {
475
+ return JSON.parse(this.value);
476
+ }
477
+ return [this.value];
478
+ }
479
+ return this.value;
480
+ }
481
+
482
+ // Lifecycle Methods
483
+
484
+ connectedCallback() {
485
+ super.connectedCallback();
486
+
487
+ this.addEventListener('keydown', this.handleKeyDown);
488
+ this.addEventListener('mousedown', this.handleMouseSelect);
489
+ this.addEventListener('auroMenuOption-mouseover', this.handleOptionHover);
490
+ this.addEventListener('slotchange', this.handleSlotChange);
491
+ this.setTagAttribute("auro-menu");
492
+ }
493
+
494
+ disconnectedCallback() {
495
+ this.removeEventListener('keydown', this.handleKeyDown);
496
+ this.removeEventListener('mousedown', this.handleMouseSelect);
497
+ this.removeEventListener('auroMenuOption-mouseover', this.handleOptionHover);
498
+ this.removeEventListener('slotchange', this.handleSlotChange);
499
+
500
+ super.disconnectedCallback();
501
+ }
502
+
503
+ firstUpdated() {
504
+ AuroLibraryRuntimeUtils$1.prototype.handleComponentTagRename(this, 'auro-menu');
505
+
506
+ this.loadingSlots = this.querySelectorAll("[slot='loadingText'], [slot='loadingIcon']");
507
+ this.initializeMenu();
508
+ }
509
+
510
+ /**
511
+ * Sets an attribute that matches the default tag name if the tag name is not the default.
512
+ * @param {string} tagName - The tag name to set as an attribute.
513
+ * @private
514
+ */
515
+ setTagAttribute(tagName) {
516
+ if (this.tagName.toLowerCase() !== tagName) {
517
+ this.setAttribute(tagName, true);
518
+ }
519
+ }
520
+
521
+ updated(changedProperties) {
522
+ super.updated(changedProperties);
523
+
524
+ if (changedProperties.has('multiSelect') && !changedProperties.has("value")) {
525
+ // Reset selection if multiSelect mode changes
526
+ this.clearSelection();
527
+ }
528
+
529
+
530
+ if (changedProperties.has("value")) {
531
+ // Handle null/undefined case
532
+ if (this.value === undefined || this.value === null) {
533
+ this.optionSelected = undefined;
534
+ this.index = -1;
535
+ } else {
536
+ if (this.multiSelect) {
537
+ // In multiselect mode, this.value should be an array of strings
538
+ const valueArray = this.formattedValue;
539
+ const matchingOptions = this.items.filter((item) => valueArray.includes(item.value));
540
+
541
+ this.optionSelected = matchingOptions.length > 0 ? matchingOptions : undefined;
542
+ } else {
543
+ // In single-select mode, this.value should be a string
544
+ const matchingOptions = this.items.find((item) => item.value === this.value);
545
+
546
+ if (matchingOptions) {
547
+ this.optionSelected = matchingOptions;
548
+ this.index = this.items.indexOf(matchingOptions);
549
+ } else {
550
+ // If no matching option found, reset selection
551
+ this.optionSelected = undefined;
552
+ this.index = -1;
553
+ }
554
+ }
555
+
556
+ // If no matching options were found in either mode
557
+ if (!this.optionSelected || (Array.isArray(this.optionSelected) && this.optionSelected.length === 0)) {
558
+ dispatchMenuEvent(this, 'auroMenu-selectValueFailure');
559
+ this.optionSelected = undefined;
560
+ this.index = -1;
561
+ }
562
+ }
563
+
564
+ // Update UI state
565
+ this.updateItemsState(new Map([
566
+ [
567
+ 'optionSelected',
568
+ true
569
+ ]
570
+ ]));
571
+
572
+ // Notify of changes
573
+ if (this.optionSelected !== undefined) {
574
+ this.notifySelectionChange();
575
+ }
576
+ }
577
+
578
+ // Process all other UI updates
579
+ this.updateItemsState(changedProperties);
580
+ }
581
+
582
+ /**
583
+ * Updates the UI state and appearance of menu items based on changed properties.
584
+ * @private
585
+ * @param {Map<string, boolean>} changedProperties - LitElement's changed properties map.
586
+ */
587
+ updateItemsState(changedProperties) {
588
+ if (!this.items) {
589
+ return;
590
+ }
591
+
592
+ // Handle noCheckmark propagation to all menus and options
593
+ if (changedProperties.has('noCheckmark') && this.noCheckmark) {
594
+ // Update both menus and options
595
+ this.querySelectorAll('auro-menu, [auro-menu], auro-menuoption, [auro-menuoption]').forEach((element) => element.setAttribute('noCheckmark', ''));
596
+ }
597
+
598
+ // Handle layout propagation to all menus and options
599
+ const propagationTargets = this.querySelectorAll('auro-menu, [auro-menu], auro-menuoption, [auro-menuoption]');
600
+ [
601
+ 'size',
602
+ 'shape'
603
+ ].forEach((prop) => {
604
+ if (changedProperties.has(prop)) {
605
+ propagationTargets.forEach((el) => {
606
+ el.setAttribute(prop, this[prop]);
607
+ });
608
+ }
609
+ });
610
+
611
+ // Regex for matchWord if needed
612
+ let regexWord = null;
613
+
614
+ if (changedProperties.has('matchWord') && this.matchWord && this.matchWord.length) {
615
+ const escapedWord = this.matchWord.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
616
+ regexWord = new RegExp(escapedWord, 'giu');
617
+ }
618
+
619
+ // Handle direct item updates
620
+ this.items.forEach((option) => {
621
+ // Update selection if option or value changed
622
+ if (changedProperties.has('optionSelected') || changedProperties.has('value')) {
623
+ const isSelected = this.isOptionSelected(option);
624
+ option.setAttribute('aria-selected', isSelected ? 'true' : 'false');
625
+
626
+ // Add/remove selected attribute based on state
627
+ if (isSelected) {
628
+ option.setAttribute('selected', '');
629
+ } else {
630
+ option.removeAttribute('selected');
631
+ }
632
+ }
633
+
634
+ // Update text highlighting if matchWord changed
635
+ if (changedProperties.has('matchWord') && regexWord &&
636
+ isOptionInteractive(option) && !option.hasAttribute('persistent')) {
637
+ const nested = option.querySelectorAll('.nestingSpacer');
638
+ // Create nested spacers
639
+ const nestingSpacerBundle = [...nested].map(() => this.nestingSpacer).join('');
640
+
641
+ // Update with spacers and matchWord
642
+ option.innerHTML = nestingSpacerBundle +
643
+ option.textContent.replace(
644
+ regexWord,
645
+ (match) => `<strong>${match}</strong>`
646
+ );
647
+ }
648
+
649
+ // Update disabled state
650
+ if (changedProperties.has('disabled')) {
651
+ option.disabled = this.disabled;
652
+ }
653
+ });
654
+
655
+ // Handle loading state changes
656
+ if (changedProperties.has('loading')) {
657
+ this.setAttribute("aria-busy", this.loading);
658
+ dispatchMenuEvent(this, "auroMenu-loadingChange", {
659
+ loading: this.loading,
660
+ hasLoadingPlaceholder: this.hasLoadingPlaceholder
661
+ });
662
+ }
663
+ }
664
+
665
+ // Init Methods
666
+
667
+ /**
668
+ * Initializes the menu's state and structure.
669
+ * @private
670
+ */
671
+ initializeMenu() {
672
+ this.initItems();
673
+ if (this.rootMenu) {
674
+ this.setAttribute('role', 'listbox');
675
+ this.setAttribute('root', '');
676
+ this.handleNestedMenus(this);
677
+ }
678
+ }
679
+
680
+ /**
681
+ * Initializes menu items and their attributes.
682
+ * @private
683
+ */
684
+ initItems() {
685
+ this.items = Array.from(this.querySelectorAll('auro-menuoption, [auro-menuoption]'));
686
+ if (this.noCheckmark) {
687
+ this.updateItemsState(new Map([
688
+ [
689
+ 'noCheckmark',
690
+ true
691
+ ]
692
+ ]));
693
+ }
694
+ }
695
+
696
+ // Logic Methods
697
+
698
+ /**
699
+ * Updates menu state when an option is selected.
700
+ * @private
701
+ * @param {HTMLElement} option - The option element to select.
702
+ */
703
+ handleSelectState(option) {
704
+ if (this.multiSelect) {
705
+ const currentValue = this.formattedValue || [];
706
+ const currentSelected = this.optionSelected || [];
707
+
708
+ if (!currentValue.includes(option.value)) {
709
+ this.value = JSON.stringify([
710
+ ...currentValue,
711
+ option.value
712
+ ]);
713
+ }
714
+ if (!currentSelected.includes(option)) {
715
+ this.optionSelected = [
716
+ ...currentSelected,
717
+ option
718
+ ];
719
+ }
720
+ } else {
721
+ // Single select - use arrays with single values
722
+ this.value = option.value;
723
+ this.optionSelected = option;
724
+ }
725
+
726
+ this.index = this.items.indexOf(option);
727
+ }
728
+
729
+ /**
730
+ * Deselects a menu option and updates related state.
731
+ * @private
732
+ * @param {HTMLElement} option - The menuoption to be deselected.
733
+ */
734
+ handleDeselectState(option) {
735
+ if (this.multiSelect) {
736
+ // Remove this option from array
737
+ const newFormattedValue = (this.formattedValue || []).filter((val) => val !== option.value);
738
+
739
+ // If array is empty after removal, set back to undefined
740
+ if (newFormattedValue && newFormattedValue.length === 0) {
741
+ this.value = undefined;
742
+ } else {
743
+ this.value = JSON.stringify(newFormattedValue);
744
+ }
745
+
746
+ this.optionSelected = this.optionSelected.filter((val) => val !== option);
747
+ if (this.optionSelected.length === 0) {
748
+ this.optionSelected = undefined;
749
+ }
750
+ } else {
751
+ // For single-select: Back to undefined when deselected
752
+ this.value = undefined;
753
+ this.optionSelected = undefined;
754
+ }
755
+
756
+ // Update the index tracking
757
+ this.index = this.items.indexOf(option);
758
+
759
+ // Update UI to reflect changes
760
+ this.updateItemsState(new Map([
761
+ [
762
+ 'optionSelected',
763
+ true
764
+ ]
765
+ ]));
766
+
767
+ // Notify of selection change
768
+ this.notifySelectionChange();
769
+ }
770
+
771
+ /**
772
+ * Resets all options to their default state.
773
+ * @private
774
+ */
775
+ clearSelection() {
776
+ this.optionSelected = undefined;
777
+ this.value = undefined;
778
+ }
779
+
780
+ /**
781
+ * Resets the menu to its initial state.
782
+ * This is the only way to return value to undefined.
783
+ * @public
784
+ */
785
+ reset() {
786
+ // Reset to undefined - initial state
787
+ this.value = undefined;
788
+ this.optionSelected = undefined;
789
+ this.index = -1;
790
+
791
+ // Reset UI state
792
+ this.updateItemsState(new Map([
793
+ [
794
+ 'optionSelected',
795
+ true
796
+ ]
797
+ ]));
798
+
799
+ // Dispatch reset event
800
+ dispatchMenuEvent(this, 'auroMenu-selectValueReset');
801
+ }
802
+
803
+ /**
804
+ * Handles nested menu structure.
805
+ * @private
806
+ * @param {HTMLElement} menu - Root menu element.
807
+ */
808
+ handleNestedMenus(menu) {
809
+ menu.level = menu.parentElement.level >= 0 ? menu.parentElement.level + 1 : 0;
810
+
811
+ if (menu.level > 0) {
812
+ menu.setAttribute('role', 'group');
813
+ menu.removeAttribute("root");
814
+ if (!menu.hasAttribute('aria-label')) {
815
+ menu.setAttribute('aria-label', 'submenu');
816
+ }
817
+ }
818
+
819
+ const options = menu.querySelectorAll(':scope > auro-menuoption, :scope > [auro-menuoption]');
820
+ options.forEach((option) => {
821
+ const regex = new RegExp(this.nestingSpacer, "gu");
822
+ option.innerHTML = this.nestingSpacer.repeat(menu.level) + option.innerHTML.replace(regex, '');
823
+ });
824
+ }
825
+
826
+ // Event Handlers
827
+
828
+ /**
829
+ * Handles keyboard navigation.
830
+ * @private
831
+ * @param {KeyboardEvent} event - Event object from the browser.
832
+ */
833
+ handleKeyDown(event) {
834
+ event.preventDefault();
835
+ switch (event.key) {
836
+ case "ArrowDown":
837
+ this.navigateOptions('down');
838
+ break;
839
+ case "ArrowUp":
840
+ this.navigateOptions('up');
841
+ break;
842
+ case "Enter":
843
+ this.makeSelection();
844
+ break;
845
+ }
846
+ }
847
+
848
+ /**
849
+ * Makes a selection based on the current index or clicked option.
850
+ * @private
851
+ */
852
+ makeSelection() {
853
+ if (!this.items) {
854
+ this.initItems();
855
+ }
856
+
857
+ // Get currently selected menu option based on index
858
+ const option = this.items[this.index];
859
+
860
+ // Return early if option is not interactive
861
+ if (!option || !isOptionInteractive(option)) {
862
+ return;
863
+ }
864
+
865
+ // Handle custom events first
866
+ if (option.hasAttribute('event')) {
867
+ this.handleCustomEvent(option);
868
+ return;
869
+ }
870
+
871
+ if (this.multiSelect) {
872
+ // In multiselect, toggle individual selections
873
+ this.toggleOption(option);
874
+ // In single select, only handle selection of new options
875
+ } else if (!this.isOptionSelected(option)) {
876
+ this.clearSelection();
877
+ this.handleSelectState(option);
878
+ }
879
+
880
+ this.notifySelectionChange();
881
+ }
882
+
883
+ /**
884
+ * Toggle the selection state of the menuoption.
885
+ * @private
886
+ * @param {HTMLElement} option - The menuoption to toggle.
887
+ */
888
+ toggleOption(option) {
889
+ const isCurrentlySelected = this.isOptionSelected(option);
890
+
891
+ if (isCurrentlySelected) {
892
+ this.handleDeselectState(option);
893
+ } else if (option.value === undefined || option.value === '') {
894
+ dispatchMenuEvent(this, 'auroMenu-selectValueFailure');
895
+ } else {
896
+ this.handleSelectState(option);
897
+ }
898
+ }
899
+
900
+ /**
901
+ * Handles option selection via mouse.
902
+ * @private
903
+ * @param {MouseEvent} event - Event object from the browser.
904
+ */
905
+ handleMouseSelect(event) {
906
+ if (event.target === this) {
907
+ return;
908
+ }
909
+
910
+ const option = event.target.closest('auro-menuoption, [auro-menuoption]');
911
+ if (option) {
912
+ this.index = this.items.indexOf(option);
913
+ this.makeSelection();
914
+ }
915
+ }
916
+
917
+ /**
918
+ * Handles option hover events.
919
+ * @private
920
+ * @param {CustomEvent} event - Event object from the browser.
921
+ */
922
+ handleOptionHover(event) {
923
+ const option = event.target;
924
+ this.index = this.items.indexOf(option);
925
+ this.updateActiveOption(this.index);
926
+ }
927
+
928
+ /**
929
+ * Handles slot change events.
930
+ * @private
931
+ */
932
+ handleSlotChange() {
933
+ if (this.parentElement && this.parentElement.closest('auro-menu, [auro-menu]')) {
934
+ this.rootMenu = false;
935
+ }
936
+
937
+ if (this.rootMenu) {
938
+ this.initializeMenu();
939
+ } else if (this.noCheckmark) {
940
+ this.updateItemsState(new Map([
941
+ [
942
+ 'noCheckmark',
943
+ true
944
+ ]
945
+ ]));
946
+ }
947
+ }
948
+
949
+ /**
950
+ * Navigates through options using keyboard.
951
+ * @private
952
+ * @param {string} direction - 'up' or 'down'.
953
+ */
954
+ navigateOptions(direction) {
955
+ // Return early if no items exist
956
+ if (!this.items || !this.items.length) {
957
+ return;
958
+ }
959
+
960
+ let newIndex = this.index;
961
+ const increment = direction === 'down' ? 1 : -1;
962
+ const maxIterations = this.items.length;
963
+ let iterations = 0;
964
+ let foundInteractiveOption = false;
965
+
966
+ do {
967
+ newIndex = (newIndex + increment + this.items.length) % this.items.length;
968
+ iterations += 1;
969
+
970
+ // Check if current option is interactive
971
+ const currentOption = this.items[newIndex];
972
+ if (isOptionInteractive(currentOption)) {
973
+ foundInteractiveOption = true;
974
+ break;
975
+ }
976
+
977
+ // Break if all options were checked
978
+ if (iterations >= maxIterations) {
979
+ break;
980
+ }
981
+ } while (iterations < maxIterations);
982
+
983
+ // Handle the results of the search
984
+ if (foundInteractiveOption) {
985
+ // Update only if an interactive option was found
986
+ this.index = newIndex;
987
+ this.updateActiveOption(this.index);
988
+ } else {
989
+ // All options are disabled or non-interactive
990
+ // Keep the current index unchanged
991
+ dispatchMenuEvent(this, 'auroMenu-navigateFailure', {
992
+ reason: 'No interactive options available',
993
+ direction,
994
+ currentIndex: this.index
995
+ });
996
+ }
997
+ }
998
+
999
+ /**
1000
+ * Updates the active option state and dispatches events.
1001
+ * @private
1002
+ * @param {number} index - Index of the option to make active.
1003
+ */
1004
+ updateActiveOption(index) {
1005
+ if (!this.items || !this.items[index]) {
1006
+ return;
1007
+ }
1008
+
1009
+ this.items.forEach((item) => item.classList.remove('active'));
1010
+ this.items[index].classList.add('active');
1011
+ this.optionActive = this.items[index];
1012
+ this.index = index;
1013
+
1014
+ dispatchMenuEvent(this, 'auroMenu-activatedOption', this.items[index]);
1015
+ }
1016
+
1017
+ /**
1018
+ * Handles custom events defined on options.
1019
+ * @private
1020
+ * @param {HTMLElement} option - Option with custom event.
1021
+ */
1022
+ handleCustomEvent(option) {
1023
+ const eventName = option.getAttribute('event');
1024
+ dispatchMenuEvent(this, eventName);
1025
+ dispatchMenuEvent(this, 'auroMenu-customEventFired');
1026
+ }
1027
+
1028
+ /**
1029
+ * Notifies selection change to parent components.
1030
+ * @private
1031
+ */
1032
+ notifySelectionChange() {
1033
+ dispatchMenuEvent(this, 'auroMenu-selectedOption');
1034
+ }
1035
+
1036
+ /**
1037
+ * Checks if an option is currently selected.
1038
+ * @private
1039
+ * @param {HTMLElement} option - The option to check.
1040
+ * @returns {boolean}
1041
+ */
1042
+ isOptionSelected(option) {
1043
+ if (!this.optionSelected) {
1044
+ return false;
1045
+ }
1046
+
1047
+ if (this.multiSelect) {
1048
+ // In multi-select mode, check if the option is in the selected array
1049
+ return Array.isArray(this.optionSelected) && this.optionSelected.some((selectedOption) => selectedOption === option);
1050
+ }
1051
+
1052
+ return this.optionSelected === option;
1053
+ }
1054
+
1055
+ /**
1056
+ * Getter for loading placeholder state.
1057
+ * @returns {boolean} - True if loading slots are present and non-empty.
1058
+ */
1059
+ get hasLoadingPlaceholder() {
1060
+ return this.loadingSlots && this.loadingSlots.length > 0;
1061
+ }
1062
+
1063
+ /**
1064
+ * Getter for wrapper classes based on size.
1065
+ * @returns {Object} - Class map for the wrapper element.
1066
+ * @private
1067
+ */
1068
+ get wrapperClasses() {
1069
+ return e({
1070
+ 'menuWrapper': true,
1071
+ [this.size]: true,
1072
+ });
1073
+ }
1074
+
1075
+ /**
1076
+ * Logic to determine the layout of the component.
1077
+ * @protected
1078
+ * @returns {void}
1079
+ */
1080
+ renderLayout() {
1081
+ if (this.loading) {
1082
+ return x`
1083
+ <div class="${this.wrapperClasses}">
1084
+ <auro-menuoption
1085
+ disabled
1086
+ loadingplaceholder
1087
+ class="${this.hasLoadingPlaceholder ? "" : "empty"}"
1088
+ >
1089
+ <div>
1090
+ <slot name="loadingIcon" class="body-lg"></slot>
1091
+ <slot name="loadingText"></slot>
1092
+ </div>
1093
+ </auro-menuoption>
1094
+ </div>
1095
+ `;
1096
+ }
1097
+
1098
+ return x`
1099
+ <div class="${this.wrapperClasses}">
1100
+ <slot @slotchange=${this.handleSlotChange}></slot>
1101
+ </div>
1102
+ `;
1103
+ }
1104
+ }
1105
+
1106
+ /**
1107
+ * @license
1108
+ * Copyright 2020 Google LLC
1109
+ * SPDX-License-Identifier: BSD-3-Clause
1110
+ */
1111
+ const a=Symbol.for(""),o$1=t=>{if(t?.r===a)return t?._$litStatic$},s=t=>({_$litStatic$:t,r:a}),i=(t,...r)=>({_$litStatic$:r.reduce(((r,e,a)=>r+(t=>{if(void 0!==t._$litStatic$)return t._$litStatic$;throw Error(`Value passed to 'literal' function must be a 'literal' result: ${t}. Use 'unsafeStatic' to pass non-literal values, but\n take care to ensure page security.`)})(e)+t[a+1]),t[0]),r:a}),l=new Map,n=t=>(r,...e)=>{const a=e.length;let s,i;const n=[],u=[];let c,$=0,f=false;for(;$<a;){for(c=r[$];$<a&&void 0!==(i=e[$],s=o$1(i));)c+=s+r[++$],f=true;$!==a&&u.push(i),n.push(c),$++;}if($===a&&n.push(r[a]),f){const t=n.join("$$lit$$");void 0===(r=l.get(t))&&(n.raw=n,l.set(t,r=n)),e=u;}return t(r,...e)},u=n(x);
1112
+
1113
+ var styleCss$1 = i$5`.body-default{font-family:var(--wcss-body-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem))}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem))}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem))}.display-md{font-family:var(--wcss-display-md-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-md-letter-spacing, 0);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem))}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem))}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem))}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem))}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem))}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem))}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem))}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);font-weight:var(--wcss-heading-xs-weight, 450);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem))}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);font-weight:var(--wcss-heading-2xs-weight, 450);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem))}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));text-transform:uppercase}:host{cursor:pointer;user-select:none}:host .wrapper{display:flex;align-items:center;padding-right:var(--ds-size-200, 1rem);padding-left:calc(var(--ds-size-150, 0.75rem) + var(--ds-size-300, 1.5rem) + var(--ds-size-100, 0.5rem));padding-top:var(--ds-size-50, 0.25rem);padding-bottom:var(--ds-size-50, 0.25rem);border-radius:var(--ds-size-100, 0.5rem);-webkit-tap-highlight-color:transparent}:host .wrapper[class*=shape-box]{border-radius:unset}:host .wrapper[class*=shape-snowflake]{border-radius:unset;line-height:24px}:host .wrapper[class*=shape-pill]{border-radius:30px}:host .wrapper[class*=-lg]{padding-top:var(--ds-size-75, 0.375rem);padding-bottom:var(--ds-size-75, 0.375rem);padding-right:var(--ds-size-150, 0.75rem);line-height:26px}:host .wrapper[class*=-xl]{padding-top:var(--ds-size-100, 0.5rem);padding-bottom:var(--ds-size-100, 0.5rem);padding-right:var(--ds-size-200, 1rem);line-height:26px}: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([loadingplaceholder]) .wrapper{padding-left:calc(var(--ds-size-150, 0.75rem) + var(--ds-size-300, 1.5rem) + var(--ds-size-100, 0.5rem))}:host([selected]) .wrapper{padding-left:0}:host([nocheckmark]) .wrapper{padding-left:var(--ds-size-150, 0.75rem)}:host([nocheckmark]) .wrapper[class*=-lg]{padding-left:var(--ds-size-150, 0.75rem)}:host([nocheckmark]) .wrapper[class*=-xl]{padding-left:var(--ds-size-200, 1rem)}:host([hidden]){display:none}:host([static]){pointer-events:none}:host([disabled]:hover){cursor:auto}:host([disabled]){user-select:none;pointer-events:none}`;
1114
+
1115
+ var colorCss$1 = i$5`:host .wrapper{background-color:var(--ds-auro-menuoption-container-color, transparent);box-shadow:inset 0 0 0 1px var(--ds-auro-menuoption-container-border-color, transparent);color:var(--ds-auro-menuoption-text-color)}:host svg{fill:var(--ds-auro-menuoption-icon-color)}:host([disabled]){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-menuoption-icon-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host(:hover),:host(.active){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-accent1-muted, #ebfafd)}:host(:focus){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-menuoption-container-border-color: var(--ds-basic-color-border-brand, #00274a)}:host([selected]){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-accent1-subtle, #b4eff9);--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-menuoption-icon-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([selected]:hover),:host([selected].active){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-accent1-muted, #ebfafd)}:host([selected]:focus){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-accent1-subtle, #b4eff9);--ds-auro-menuoption-container-border-color: var(--ds-basic-color-border-brand, #00274a)}:host(:focus:hover),:host(:focus.active){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-accent1-muted, #ebfafd);--ds-auro-menuoption-container-border-color: var(--ds-basic-color-border-brand, #00274a)}:host([selected]:focus:hover),:host([selected]:focus.active){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-accent1-muted, #ebfafd);--ds-auro-menuoption-container-border-color: var(--ds-basic-color-border-brand, #00274a)}`;
1116
+
1117
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1118
+ // See LICENSE in the project root for license information.
1119
+
1120
+
1121
+ class AuroDependencyVersioning {
1122
+
1123
+ /**
1124
+ * Generates a unique string to be used for child auro element naming.
1125
+ * @private
1126
+ * @param {string} baseName - Defines the first part of the unique element name.
1127
+ * @param {string} version - Version of the component that will be appended to the baseName.
1128
+ * @returns {string} - Unique string to be used for naming.
1129
+ */
1130
+ generateElementName(baseName, version) {
1131
+ let result = baseName;
1132
+
1133
+ result += '-';
1134
+ result += version.replace(/[.]/g, '_');
1135
+
1136
+ return result;
1137
+ }
1138
+
1139
+ /**
1140
+ * Generates a unique string to be used for child auro element naming.
1141
+ * @param {string} baseName - Defines the first part of the unique element name.
1142
+ * @param {string} version - Version of the component that will be appended to the baseName.
1143
+ * @returns {string} - Unique string to be used for naming.
1144
+ */
1145
+ generateTag(baseName, version, tagClass) {
1146
+ const elementName = this.generateElementName(baseName, version);
1147
+ const tag = i`${s(elementName)}`;
1148
+
1149
+ if (!customElements.get(elementName)) {
1150
+ customElements.define(elementName, class extends tagClass {});
1151
+ }
1152
+
1153
+ return tag;
1154
+ }
1155
+ }
1156
+
1157
+ /**
1158
+ * @license
1159
+ * Copyright 2018 Google LLC
1160
+ * SPDX-License-Identifier: BSD-3-Clause
1161
+ */const o=o=>o??E;
1162
+
1163
+ // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1164
+ // See LICENSE in the project root for license information.
1165
+
1166
+
1167
+ /**
1168
+ * @attr {Boolean} hidden - If present, the component will be hidden both visually and from screen readers
1169
+ * @attr {Boolean} hiddenVisually - If present, the component will be hidden visually, but still read by screen readers
1170
+ * @attr {Boolean} hiddenAudible - If present, the component will be hidden from screen readers, but seen visually
1171
+ */
1172
+
1173
+ class AuroElement extends i$2 {
1174
+
1175
+ // function to define props used within the scope of this component
1176
+ static get properties() {
1177
+ return {
1178
+ hidden: { type: Boolean,
1179
+ reflect: true },
1180
+ hiddenVisually: { type: Boolean,
1181
+ reflect: true },
1182
+ hiddenAudible: { type: Boolean,
1183
+ reflect: true },
1184
+ };
1185
+ }
1186
+
1187
+ /**
1188
+ * @private Function that determines state of aria-hidden
1189
+ */
1190
+ hideAudible(value) {
1191
+ if (value) {
1192
+ return 'true'
1193
+ }
1194
+
1195
+ return 'false'
1196
+ }
1197
+ }
1198
+
1199
+ var error = {"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>"};
1200
+
1201
+ /* eslint-disable no-underscore-dangle, jsdoc/no-undefined-types, jsdoc/require-param-description */
1202
+
1203
+ const _fetchMap = new Map();
1204
+
1205
+ /**
1206
+ * A callback to parse Response body.
1207
+ *
1208
+ * @callback ResponseParser
1209
+ * @param {Fetch.Response} response
1210
+ * @returns {Promise}
1211
+ */
1212
+
1213
+ /**
1214
+ * A minimal in-memory map to de-duplicate Fetch API media requests.
1215
+ *
1216
+ * @param {String} uri
1217
+ * @param {Object} [options={}]
1218
+ * @param {ResponseParser} [options.responseParser=(response) => response.text()]
1219
+ * @returns {Promise}
1220
+ */
1221
+ const cacheFetch = (uri, options = {}) => {
1222
+ const responseParser = options.responseParser || ((response) => response.text());
1223
+ if (!_fetchMap.has(uri)) {
1224
+ _fetchMap.set(uri, fetch(uri).then(responseParser));
1225
+ }
1226
+ return _fetchMap.get(uri);
1227
+ };
1228
+
1229
+ var styleCss = i$5`: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}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}.componentWrapper{display:flex}.svgWrapper{height:var(--ds-auro-icon-size);width:var(--ds-auro-icon-size)}.labelWrapper{margin-left:var(--ds-size-50, 0.25rem);line-height:1.8}`;
1230
+
1231
+ // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1232
+ // See LICENSE in the project root for license information.
1233
+
1234
+
1235
+ // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
1236
+ /**
1237
+ * @slot - Hidden from visibility, used for a11y if icon description is needed
1238
+ */
1239
+
1240
+ // build the component class
1241
+ class BaseIcon extends AuroElement {
1242
+ constructor() {
1243
+ super();
1244
+ this.onDark = false;
1245
+ }
1246
+
1247
+ // function to define props used within the scope of this component
1248
+ static get properties() {
1249
+ return {
1250
+ ...super.properties,
1251
+
1252
+ /**
1253
+ * Set value for on-dark version of auro-icon.
1254
+ */
1255
+ onDark: {
1256
+ type: Boolean,
1257
+ reflect: true
1258
+ },
1259
+
1260
+ /**
1261
+ * @private
1262
+ */
1263
+ svg: {
1264
+ attribute: false,
1265
+ reflect: true
1266
+ }
1267
+ };
1268
+ }
1269
+
1270
+ static get styles() {
1271
+ return i$5`
1272
+ ${styleCss}
1273
+ `;
1274
+ }
1275
+
1276
+ /**
1277
+ * Async function to fetch requested icon from npm CDN.
1278
+ * @private
1279
+ * @param {string} category - Icon category.
1280
+ * @param {string} name - Icon name.
1281
+ * @returns {SVGElement} DOM - Ready HTML to be appended.
1282
+ */
1283
+ async fetchIcon(category, name) {
1284
+ let iconHTML = '';
1285
+
1286
+ if (category === 'logos') {
1287
+ iconHTML = await cacheFetch(`${this.uri}/${category}/${name}.svg`);
1288
+ } else {
1289
+ iconHTML = await cacheFetch(`${this.uri}/icons/${category}/${name}.svg`);
1290
+ }
1291
+
1292
+ const dom = new DOMParser().parseFromString(iconHTML, 'text/html');
1293
+
1294
+ return dom.body.querySelector('svg');
1295
+ }
1296
+
1297
+ // lifecycle function
1298
+ async firstUpdated() {
1299
+ if (!this.customSvg) {
1300
+ const svg = await this.fetchIcon(this.category, this.name);
1301
+
1302
+ if (svg) {
1303
+ this.svg = svg;
1304
+ } else if (!svg) {
1305
+ const penDOM = new DOMParser().parseFromString(error.svg, 'text/html');
1306
+
1307
+ this.svg = penDOM.body.firstChild;
1308
+ }
1309
+ }
1310
+ }
1311
+ }
1312
+
1313
+ var tokensCss = i$5`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-alaska-color:#02426D;--ds-auro-icon-size:var(--ds-size-300, 1.5rem)}`;
1314
+
1315
+ var colorCss = i$5`:host{color:var(--ds-auro-icon-color)}:host([customColor]){color:inherit}:host(:not([onDark])[variant=accent1]){--ds-auro-icon-color:var(--ds-basic-color-texticon-accent1, #265688)}:host(:not([onDark])[variant=disabled]){--ds-auro-icon-color:var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host(:not([onDark])[variant=muted]){--ds-auro-icon-color:var(--ds-basic-color-texticon-muted, #676767)}:host(:not([onDark])[variant=statusDefault]){--ds-auro-icon-color:var(--ds-basic-color-status-default, #afb9c6)}:host(:not([onDark])[variant=statusInfo]){--ds-auro-icon-color:var(--ds-basic-color-status-info, #01426a)}:host(:not([onDark])[variant=statusSuccess]){--ds-auro-icon-color:var(--ds-basic-color-status-success, #447a1f)}:host(:not([onDark])[variant=statusWarning]){--ds-auro-icon-color:var(--ds-basic-color-status-warning, #fac200)}:host(:not([onDark])[variant=statusError]){--ds-auro-icon-color:var(--ds-basic-color-status-error, #e31f26)}:host(:not([onDark])[variant=statusInfoSubtle]){--ds-auro-icon-color:var(--ds-basic-color-status-info-subtle, #ebf3f9)}:host(:not([onDark])[variant=statusSuccessSubtle]){--ds-auro-icon-color:var(--ds-basic-color-status-success-subtle, #d6eac7)}:host(:not([onDark])[variant=statusWarningSubtle]){--ds-auro-icon-color:var(--ds-basic-color-status-warning-subtle, #fff0b2)}:host(:not([onDark])[variant=statusErrorSubtle]){--ds-auro-icon-color:var(--ds-basic-color-status-error-subtle, #fbc6c6)}:host(:not([onDark])[variant=fareBasicEconomy]){--ds-auro-icon-color:var(--ds-basic-color-fare-basiceconomy, #97eaf8)}:host(:not([onDark])[variant=fareBusiness]){--ds-auro-icon-color:var(--ds-basic-color-fare-business, #01426a)}:host(:not([onDark])[variant=fareEconomy]){--ds-auro-icon-color:var(--ds-basic-color-fare-economy, #0074ca)}:host(:not([onDark])[variant=fareFirst]){--ds-auro-icon-color:var(--ds-basic-color-fare-first, #00274a)}:host(:not([onDark])[variant=farePremiumEconomy]){--ds-auro-icon-color:var(--ds-basic-color-fare-premiumeconomy, #005154)}:host(:not([onDark])[variant=tierOneWorldEmerald]){--ds-auro-icon-color:var(--ds-basic-color-tier-program-oneworld-emerald, #139142)}:host(:not([onDark])[variant=tierOneWorldSapphire]){--ds-auro-icon-color:var(--ds-basic-color-tier-program-oneworld-sapphire, #015daa)}:host(:not([onDark])[variant=tierOneWorldRuby]){--ds-auro-icon-color:var(--ds-basic-color-tier-program-oneworld-ruby, #a41d4a)}:host([onDark]){--ds-auro-icon-color:var(--ds-basic-color-texticon-inverse, #ffffff)}:host([onDark][variant=disabled]){--ds-auro-icon-color:var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}:host([onDark][variant=muted]){--ds-auro-icon-color:var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][variant=statusError]){--ds-auro-icon-color:var(--ds-advanced-color-state-error-inverse, #f9a4a8)}`;
1316
+
1317
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1318
+ // See LICENSE in the project root for license information.
1319
+
1320
+ // ---------------------------------------------------------------------
1321
+
1322
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
1323
+
1324
+ class AuroLibraryRuntimeUtils {
1325
+
1326
+ /* eslint-disable jsdoc/require-param */
1327
+
1328
+ /**
1329
+ * This will register a new custom element with the browser.
1330
+ * @param {String} name - The name of the custom element.
1331
+ * @param {Object} componentClass - The class to register as a custom element.
1332
+ * @returns {void}
1333
+ */
1334
+ registerComponent(name, componentClass) {
1335
+ if (!customElements.get(name)) {
1336
+ customElements.define(name, class extends componentClass {});
1337
+ }
1338
+ }
1339
+
1340
+ /**
1341
+ * Finds and returns the closest HTML Element based on a selector.
1342
+ * @returns {void}
1343
+ */
1344
+ closestElement(
1345
+ selector, // selector like in .closest()
1346
+ base = this, // extra functionality to skip a parent
1347
+ __Closest = (el, found = el && el.closest(selector)) =>
1348
+ !el || el === document || el === window
1349
+ ? null // standard .closest() returns null for non-found selectors also
1350
+ : found
1351
+ ? found // found a selector INside this element
1352
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
1353
+ ) {
1354
+ return __Closest(base);
1355
+ }
1356
+ /* eslint-enable jsdoc/require-param */
1357
+
1358
+ /**
1359
+ * If the element passed is registered with a different tag name than what is passed in, the tag name is added as an attribute to the element.
1360
+ * @param {Object} elem - The element to check.
1361
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
1362
+ * @returns {void}
1363
+ */
1364
+ handleComponentTagRename(elem, tagName) {
1365
+ const tag = tagName.toLowerCase();
1366
+ const elemTag = elem.tagName.toLowerCase();
1367
+
1368
+ if (elemTag !== tag) {
1369
+ elem.setAttribute(tag, true);
1370
+ }
1371
+ }
1372
+
1373
+ /**
1374
+ * Validates if an element is a specific Auro component.
1375
+ * @param {Object} elem - The element to validate.
1376
+ * @param {String} tagName - The name of the Auro component to check against.
1377
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
1378
+ */
1379
+ elementMatch(elem, tagName) {
1380
+ const tag = tagName.toLowerCase();
1381
+ const elemTag = elem.tagName.toLowerCase();
1382
+
1383
+ return elemTag === tag || elem.hasAttribute(tag);
1384
+ }
1385
+ }
1386
+
1387
+ // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1388
+ // See LICENSE in the project root for license information.
1389
+
1390
+
1391
+ class AuroIcon extends BaseIcon {
1392
+ constructor() {
1393
+ super();
1394
+
1395
+ this.variant = undefined;
1396
+ this.privateDefaults();
1397
+ }
1398
+
1399
+ /**
1400
+ * Internal Defaults.
1401
+ * @private
1402
+ * @returns {void}
1403
+ */
1404
+ privateDefaults() {
1405
+ this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
1406
+ this.runtimeUtils = new AuroLibraryRuntimeUtils();
1407
+ }
1408
+
1409
+ // function to define props used within the scope of this component
1410
+ static get properties() {
1411
+ return {
1412
+ ...super.properties,
1413
+
1414
+ /**
1415
+ * Set aria-hidden value. Default is `true`. Option is `false`.
1416
+ */
1417
+ ariaHidden: {
1418
+ type: String,
1419
+ reflect: true
1420
+ },
1421
+
1422
+ /**
1423
+ * The category of the icon you are looking for. See https://auro.alaskaair.com/icons/usage.
1424
+ */
1425
+ category: {
1426
+ type: String,
1427
+ reflect: true
1428
+ },
1429
+
1430
+ /**
1431
+ * Allows custom color to be set.
1432
+ */
1433
+ customColor: {
1434
+ type: Boolean,
1435
+ reflect: true
1436
+ },
1437
+
1438
+ /**
1439
+ * When true, auro-icon will render a custom SVG inside the default slot.
1440
+ */
1441
+ customSvg: {
1442
+ type: Boolean
1443
+ },
1444
+
1445
+ /**
1446
+ * Exposes content in slot as icon label.
1447
+ */
1448
+ label: {
1449
+ type: Boolean,
1450
+ reflect: true
1451
+ },
1452
+
1453
+ /**
1454
+ * The name of the icon you are looking for without the file extension. See https://auro.alaskaair.com/icons/usage.
1455
+ */
1456
+ name: {
1457
+ type: String,
1458
+ reflect: true
1459
+ },
1460
+
1461
+ /**
1462
+ * The style of the icon. The accepted variants are `accent1`, `disabled`, `muted`, `statusDefault`, `statusInfo`, `statusSuccess`, `statusWarning`, `statusError`, `statusInfoSubtle`, `statusSuccessSubtle`, `statusWarningSubtle`, `statusErrorSubtle`, `fareBasicEconomy`, `fareBusiness`, `fareEconomy`, `fareFirst`, `farePremiumEconomy`, `tierOneWorldEmerald`, `tierOneWorldSapphire`, `tierOneWorldRuby`.
1463
+ */
1464
+ variant: {
1465
+ type: String,
1466
+ reflect: true
1467
+ }
1468
+ };
1469
+ }
1470
+
1471
+ static get styles() {
1472
+ return [
1473
+ super.styles,
1474
+ i$5`${tokensCss}`,
1475
+ i$5`${styleCss}`,
1476
+ i$5`${colorCss}`
1477
+ ];
1478
+ }
1479
+
1480
+ /**
1481
+ * This will register this element with the browser.
1482
+ * @param {string} [name="auro-icon"] - The name of element that you want to register to.
1483
+ *
1484
+ * @example
1485
+ * AuroIcon.register("custom-icon") // this will register this element to <custom-icon/>
1486
+ *
1487
+ */
1488
+ static register(name = "auro-icon") {
1489
+ AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroIcon);
1490
+ }
1491
+
1492
+ connectedCallback() {
1493
+ super.connectedCallback();
1494
+
1495
+ // Add the tag name as an attribute if it is different than the component name
1496
+ this.runtimeUtils.handleComponentTagRename(this, 'auro-icon');
1497
+ }
1498
+
1499
+ /**
1500
+ * @private
1501
+ * @returns {void} Exposes CSS parts for styling from parent components.
1502
+ */
1503
+ exposeCssParts() {
1504
+ this.setAttribute('exportparts', 'svg:iconSvg');
1505
+ }
1506
+
1507
+ async firstUpdated() {
1508
+ await super.firstUpdated();
1509
+
1510
+ /**
1511
+ * icons provide a description for screen readers. Icon only instances Auro-button
1512
+ * depend on this description to provide context for the user using a screen reader.
1513
+ * Removes the SVG description for screen reader if ariaHidden is set to true.
1514
+ */
1515
+ if (this.hasAttribute('ariaHidden') && this.svg) {
1516
+ const svgDesc = this.svg.querySelector('desc');
1517
+
1518
+ if (svgDesc) {
1519
+ svgDesc.remove();
1520
+ this.svg.removeAttribute('aria-labelledby');
1521
+ }
1522
+ }
1523
+ }
1524
+
1525
+ // function that renders the HTML and CSS into the scope of the component
1526
+ render() {
1527
+ const labelClasses = {
1528
+ 'labelWrapper': true,
1529
+ 'util_displayHiddenVisually': !this.label
1530
+ };
1531
+
1532
+ const svgClasses = {
1533
+ 'svgWrapper': true,
1534
+ };
1535
+
1536
+ return x`
1537
+ <div class="componentWrapper">
1538
+ <div
1539
+ class="${e(svgClasses)}"
1540
+ title="${o(this.title || undefined)}">
1541
+ <span aria-hidden="${o(this.ariaHidden || true)}" part="svg">
1542
+ ${this.customSvg ? x`
1543
+ <slot name="svg"></slot>
1544
+ ` : x`
1545
+ ${this.svg}
1546
+ `
1547
+ }
1548
+ </span>
1549
+ </div>
1550
+
1551
+ <div class="${e(labelClasses)}">
1552
+ <slot></slot>
1553
+ </div>
1554
+ </div>
1555
+ `;
1556
+ }
1557
+ }
1558
+
1559
+ var iconVersion = '8.1.1';
1560
+
1561
+ var checkmarkIcon = {"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>"};
1562
+
1563
+ // Copyright (c) 2021 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1564
+ // See LICENSE in the project root for license information.
1565
+
1566
+
1567
+ /**
1568
+ * The auro-menu element provides users a way to define a menu option.
1569
+ *
1570
+ * @attr {String} value - Specifies the value to be sent to a server.
1571
+ * @attr {String} noCheckmark - When true, selected option will not show the checkmark.
1572
+ * @attr {Boolean} disabled - When true specifies that the menuoption is disabled.
1573
+ * @attr {Boolean} selected - Specifies that an option is selected.
1574
+ * @event auroMenuOption-mouseover - Notifies that this option has been hovered over.
1575
+ * @slot - Specifies text for an option, but is not the value.
1576
+ */
1577
+ class AuroMenuOption extends AuroElement$1 {
1578
+ constructor() {
1579
+ super();
1580
+
1581
+ /**
1582
+ * @private
1583
+ */
1584
+ this.shape = undefined;
1585
+
1586
+ /**
1587
+ * @private
1588
+ */
1589
+ this.size = undefined;
1590
+
1591
+ /**
1592
+ * Generate unique names for dependency components.
1593
+ */
1594
+ const versioning = new AuroDependencyVersioning();
1595
+ this.iconTag = versioning.generateTag('auro-formkit-menuoption-icon', iconVersion, AuroIcon);
1596
+
1597
+ this.selected = false;
1598
+ this.nocheckmark = false;
1599
+ this.disabled = false;
1600
+
1601
+ /**
1602
+ * @private
1603
+ */
1604
+ this.tabIndex = -1;
1605
+
1606
+ /**
1607
+ * @private
1608
+ */
1609
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$1();
1610
+ }
1611
+
1612
+ static get properties() {
1613
+ return {
1614
+ ...super.properties,
1615
+ nocheckmark: {
1616
+ type: Boolean,
1617
+ reflect: true
1618
+ },
1619
+ selected: {
1620
+ type: Boolean,
1621
+ reflect: true
1622
+ },
1623
+ disabled: {
1624
+ type: Boolean,
1625
+ reflect: true
1626
+ },
1627
+ value: {
1628
+ type: String
1629
+ },
1630
+ tabIndex: {
1631
+ type: Number,
1632
+ reflect: true
1633
+ }
1634
+ };
1635
+ }
1636
+
1637
+ static get styles() {
1638
+ return [
1639
+ styleCss$1,
1640
+ colorCss$1,
1641
+ tokensCss$1
1642
+ ];
1643
+ }
1644
+
1645
+ /**
1646
+ * This will register this element with the browser.
1647
+ * @param {string} [name="auro-menuoption"] - The name of element that you want to register to.
1648
+ *
1649
+ * @example
1650
+ * AuroMenuOption.register("custom-menuoption") // this will register this element to <custom-menuoption/>
1651
+ *
1652
+ */
1653
+ static register(name = "auro-menuoption") {
1654
+ AuroLibraryRuntimeUtils$1.prototype.registerComponent(name, AuroMenuOption);
1655
+ }
1656
+
1657
+ firstUpdated() {
1658
+ // Add the tag name as an attribute if it is different than the component name
1659
+ this.runtimeUtils.handleComponentTagRename(this, 'auro-menuoption');
1660
+
1661
+ if (!this.hasAttribute('size')) {
1662
+ this.size = this.parentElement.getAttribute('size') || 'sm';
1663
+ }
1664
+ if (!this.hasAttribute('shape')) {
1665
+ this.shape = this.parentElement.getAttribute('shape') || 'box';
1666
+ }
1667
+
1668
+ this.setAttribute('role', 'option');
1669
+ this.setAttribute('aria-selected', 'false');
1670
+
1671
+ this.addEventListener('mouseover', () => {
1672
+ this.dispatchEvent(new CustomEvent('auroMenuOption-mouseover', {
1673
+ bubbles: true,
1674
+ cancelable: false,
1675
+ composed: true,
1676
+ detail: this
1677
+ }));
1678
+ });
1679
+ }
1680
+
1681
+ // observer for selected property changes
1682
+ updated(changedProperties) {
1683
+ super.updated(changedProperties);
1684
+
1685
+ if (changedProperties.has('selected')) {
1686
+ this.setAttribute('aria-selected', this.selected.toString());
1687
+ }
1688
+ }
1689
+
1690
+ /**
1691
+ * Generates an HTML element containing an SVG icon based on the provided `svgContent`.
1692
+ *
1693
+ * @private
1694
+ * @param {string} svgContent - The SVG content to be embedded.
1695
+ * @returns {Element} The HTML element containing the SVG icon.
1696
+ */
1697
+ generateIconHtml(svgContent) {
1698
+ const dom = new DOMParser().parseFromString(svgContent, 'text/html');
1699
+ const svg = dom.body.firstChild;
1700
+
1701
+ svg.setAttribute('slot', 'svg');
1702
+
1703
+ return u`<${this.iconTag} customColor customSvg>${svg}</${this.iconTag}>`;
1704
+ }
1705
+
1706
+ /**
1707
+ * Logic to determine the layout of the component.
1708
+ * @protected
1709
+ * @returns {void}
1710
+ */
1711
+ renderLayout() {
1712
+
1713
+ const fontClassMap = {
1714
+ xs: 'body-sm',
1715
+ sm: 'body-default',
1716
+ md: 'body-default',
1717
+ lg: 'body-lg',
1718
+ xl: 'body-lg'
1719
+ };
1720
+
1721
+ const classes = e({
1722
+ 'wrapper': true,
1723
+ [this.size ? fontClassMap[this.size] : 'body-sm']: true,
1724
+ });
1725
+
1726
+ return u`
1727
+ <div class="${classes}">
1728
+ ${this.selected && !this.nocheckmark
1729
+ ? this.generateIconHtml(checkmarkIcon.svg)
1730
+ : undefined}
1731
+ <slot></slot>
1732
+ </div>
1733
+ `;
1734
+ }
1735
+ }
1736
+
1737
+ AuroMenu.register();
1738
+ AuroMenuOption.register();
1739
+
1740
+ /* eslint-disable jsdoc/require-jsdoc, no-magic-numbers, no-param-reassign */
1741
+
1742
+
1743
+ function initExamples(initCount) {
1744
+ initCount = initCount || 0;
1745
+
1746
+ try {
1747
+ // javascript example function calls to be added here upon creation to test examples
1748
+ auroMenuResetExample();
1749
+ auroMenuMatchWordExample();
1750
+ auroMenuCustomEventExample();
1751
+ auroMenuLoadingExample();
1752
+ } catch (err) {
1753
+ if (initCount <= 20) {
1754
+ // setTimeout handles issue where content is sometimes loaded after the functions get called
1755
+ setTimeout(() => {
1756
+ initExamples(initCount + 1);
1757
+ }, 100);
1758
+ }
1759
+ }
1760
+ }
1761
+
1762
+ export { initExamples };