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