@aurodesignsystem-dev/auro-formkit 0.0.0-pr624.4 → 0.0.0-pr624.40

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 (114) hide show
  1. package/components/bibtemplate/dist/auro-bibtemplate.d.ts +13 -2
  2. package/components/bibtemplate/dist/buttonVersion.d.ts +2 -0
  3. package/components/bibtemplate/dist/iconVersion.d.ts +1 -1
  4. package/components/bibtemplate/dist/index.js +1292 -79
  5. package/components/bibtemplate/dist/registered.js +1292 -79
  6. package/components/checkbox/README.md +1 -1
  7. package/components/checkbox/demo/api.md +47 -14
  8. package/components/checkbox/demo/api.min.js +44 -31
  9. package/components/checkbox/demo/index.md +2 -2
  10. package/components/checkbox/demo/index.min.js +44 -31
  11. package/components/checkbox/demo/readme.md +1 -1
  12. package/components/checkbox/dist/auro-checkbox-group.d.ts +1 -1
  13. package/components/checkbox/dist/auro-checkbox.d.ts +3 -3
  14. package/components/checkbox/dist/index.js +44 -31
  15. package/components/checkbox/dist/registered.js +44 -31
  16. package/components/combobox/demo/api.md +100 -2
  17. package/components/combobox/demo/api.min.js +3202 -759
  18. package/components/combobox/demo/index.md +6 -30
  19. package/components/combobox/demo/index.min.js +3202 -759
  20. package/components/combobox/dist/auro-combobox.d.ts +37 -16
  21. package/components/combobox/dist/index.js +3091 -789
  22. package/components/combobox/dist/registered.js +3091 -789
  23. package/components/counter/demo/api.html +1 -0
  24. package/components/counter/demo/api.md +21 -19
  25. package/components/counter/demo/api.min.js +3324 -614
  26. package/components/counter/demo/index.html +1 -0
  27. package/components/counter/demo/index.md +103 -34
  28. package/components/counter/demo/index.min.js +3324 -614
  29. package/components/counter/dist/auro-counter-button.d.ts +2 -0
  30. package/components/counter/dist/auro-counter-group.d.ts +89 -6
  31. package/components/counter/dist/auro-counter.d.ts +6 -0
  32. package/components/counter/dist/helptextVersion.d.ts +2 -0
  33. package/components/counter/dist/iconVersion.d.ts +1 -1
  34. package/components/counter/dist/index.js +3324 -614
  35. package/components/counter/dist/registered.js +3324 -614
  36. package/components/datepicker/demo/api.md +36 -19
  37. package/components/datepicker/demo/api.min.js +11976 -8000
  38. package/components/datepicker/demo/index.md +80 -0
  39. package/components/datepicker/demo/index.min.js +11976 -8000
  40. package/components/datepicker/dist/auro-datepicker.d.ts +71 -3
  41. package/components/datepicker/dist/buttonVersion.d.ts +1 -1
  42. package/components/datepicker/dist/iconVersion.d.ts +2 -0
  43. package/components/datepicker/dist/index.js +12238 -8262
  44. package/components/datepicker/dist/popoverVersion.d.ts +1 -1
  45. package/components/datepicker/dist/registered.js +12238 -8262
  46. package/components/dropdown/demo/api.md +8 -9
  47. package/components/dropdown/demo/api.min.js +551 -147
  48. package/components/dropdown/demo/index.md +57 -9
  49. package/components/dropdown/demo/index.min.js +551 -147
  50. package/components/dropdown/dist/auro-dropdown.d.ts +28 -9
  51. package/components/dropdown/dist/auro-dropdownBib.d.ts +22 -0
  52. package/components/dropdown/dist/index.js +551 -147
  53. package/components/dropdown/dist/registered.js +551 -147
  54. package/components/form/demo/api.min.js +1 -1
  55. package/components/form/demo/index.min.js +1 -1
  56. package/components/form/dist/index.js +1 -1
  57. package/components/form/dist/registered.js +1 -1
  58. package/components/helptext/dist/index.js +2 -2
  59. package/components/helptext/dist/registered.js +2 -2
  60. package/components/input/README.md +5 -2
  61. package/components/input/demo/api.md +271 -176
  62. package/components/input/demo/api.min.js +956 -270
  63. package/components/input/demo/index.md +48 -32
  64. package/components/input/demo/index.min.js +955 -269
  65. package/components/input/demo/readme.md +5 -2
  66. package/components/input/dist/auro-input.d.ts +23 -15
  67. package/components/input/dist/base-input.d.ts +32 -8
  68. package/components/input/dist/buttonVersion.d.ts +1 -1
  69. package/components/input/dist/iconVersion.d.ts +1 -1
  70. package/components/input/dist/index.js +955 -269
  71. package/components/input/dist/registered.js +955 -269
  72. package/components/layoutElement/dist/index.js +13 -10
  73. package/components/menu/demo/api.html +38 -0
  74. package/components/menu/demo/api.md +68 -7
  75. package/components/menu/demo/api.min.js +278 -42
  76. package/components/menu/demo/index.min.js +278 -42
  77. package/components/menu/dist/auro-menu.d.ts +28 -5
  78. package/components/menu/dist/auro-menuoption.d.ts +15 -3
  79. package/components/menu/dist/iconVersion.d.ts +1 -1
  80. package/components/menu/dist/index.js +278 -42
  81. package/components/menu/dist/registered.js +278 -42
  82. package/components/menu/dist/styles/default/color-menuoption-css.d.ts +2 -0
  83. package/components/menu/dist/styles/default/style-menu-css.d.ts +2 -0
  84. package/components/menu/dist/styles/default/style-menuoption-css.d.ts +2 -0
  85. package/components/menu/dist/styles/default/tokens-css.d.ts +2 -0
  86. package/components/radio/demo/api.md +7 -8
  87. package/components/radio/demo/api.min.js +68 -80
  88. package/components/radio/demo/index.min.js +68 -80
  89. package/components/radio/dist/auro-radio-group.d.ts +1 -1
  90. package/components/radio/dist/auro-radio.d.ts +9 -12
  91. package/components/radio/dist/index.js +68 -80
  92. package/components/radio/dist/registered.js +68 -80
  93. package/components/select/demo/api.md +123 -13
  94. package/components/select/demo/api.min.js +3045 -456
  95. package/components/select/demo/index.html +1 -0
  96. package/components/select/demo/index.md +323 -763
  97. package/components/select/demo/index.min.js +3045 -456
  98. package/components/select/dist/auro-select.d.ts +112 -11
  99. package/components/select/dist/helptextVersion.d.ts +2 -0
  100. package/components/select/dist/index.js +2925 -477
  101. package/components/select/dist/registered.js +2925 -477
  102. package/components/select/dist/styles/shapeSize-css.d.ts +2 -0
  103. package/components/select/dist/styles/tokens-css.d.ts +2 -0
  104. package/package.json +6 -4
  105. /package/components/{dropdown/dist/styles/default/bibColors-css.d.ts → counter/dist/styles/shapeSize-css.d.ts} +0 -0
  106. /package/components/{dropdown → datepicker}/dist/styles/default/color-css.d.ts +0 -0
  107. /package/components/{dropdown/dist/styles/default/bibStyles-css.d.ts → datepicker/dist/styles/shapeSize-css.d.ts} +0 -0
  108. /package/components/{dropdown/dist/styles/default/style-css.d.ts → datepicker/dist/styles/snowflake/color-css.d.ts} +0 -0
  109. /package/components/{dropdown/dist/styles → datepicker/dist/styles/snowflake}/style-css.d.ts +0 -0
  110. /package/components/{menu/dist/styles/color-menu-css.d.ts → dropdown/dist/styles/classic/bibColors-css.d.ts} +0 -0
  111. /package/components/{menu/dist/styles/color-menuoption-css.d.ts → dropdown/dist/styles/classic/bibStyles-css.d.ts} +0 -0
  112. /package/components/{menu/dist/styles/style-menu-css.d.ts → dropdown/dist/styles/classic/color-css.d.ts} +0 -0
  113. /package/components/{menu/dist/styles/style-menuoption-css.d.ts → dropdown/dist/styles/classic/style-css.d.ts} +0 -0
  114. /package/components/menu/dist/styles/{tokens-css.d.ts → default/color-menu-css.d.ts} +0 -0
@@ -136,6 +136,105 @@ const t={ATTRIBUTE:1},e$1=t=>(...e)=>({_$litDirective$:t,values:e});let i$1 = cl
136
136
  */
137
137
  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);
138
138
 
139
+ let AuroElement$4 = class AuroElement extends i$2 {
140
+ static get properties() {
141
+ return {
142
+
143
+ /**
144
+ * Defines the language of an element.
145
+ * @default {'default'}
146
+ */
147
+ layout: {
148
+ type: String,
149
+ attribute: "layout",
150
+ reflect: true
151
+ },
152
+
153
+ shape: {
154
+ type: String,
155
+ attribute: "shape",
156
+ reflect: true
157
+ },
158
+
159
+ size: {
160
+ type: String,
161
+ attribute: "size",
162
+ reflect: true
163
+ },
164
+
165
+ onDark: {
166
+ type: Boolean,
167
+ attribute: "ondark",
168
+ reflect: true
169
+ }
170
+ };
171
+ }
172
+
173
+ resetShapeClasses() {
174
+ const wrapper = this.shadowRoot.querySelector('.wrapper');
175
+
176
+ if (wrapper) {
177
+ wrapper.classList.forEach((className) => {
178
+ if (className.startsWith('shape-')) {
179
+ wrapper.classList.remove(className);
180
+ }
181
+ });
182
+
183
+ }
184
+
185
+ if (this.shape && this.size) {
186
+ wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
187
+ } else {
188
+ wrapper.classList.add('shape-none');
189
+ }
190
+ }
191
+
192
+ resetLayoutClasses() {
193
+ if (this.layout) {
194
+ const wrapper = this.shadowRoot.querySelector('.wrapper');
195
+
196
+ if (wrapper) {
197
+ wrapper.classList.forEach((className) => {
198
+ if (className.startsWith('layout-')) {
199
+ wrapper.classList.remove(className);
200
+ }
201
+ });
202
+
203
+ wrapper.classList.add(`layout-${this.layout.toLowerCase()}`);
204
+ }
205
+ }
206
+ }
207
+
208
+ updateComponentArchitecture() {
209
+ this.resetLayoutClasses();
210
+ this.resetShapeClasses();
211
+ }
212
+
213
+ updated(changedProperties) {
214
+ if (changedProperties.has('layout') || changedProperties.has('shape') || changedProperties.has('size')) {
215
+ this.updateComponentArchitecture();
216
+ }
217
+ }
218
+
219
+ // Try to render the defined `this.layout` layout. If that fails, fall back to the default layout.
220
+ // This will catch if an invalid layout value is passed in and render the default layout if so.
221
+ render() {
222
+ try {
223
+ return this.renderLayout();
224
+ } catch (error) {
225
+ // failed to get the defined layout
226
+ console.error('Failed to get the defined layout - using the default layout', error); // eslint-disable-line no-console
227
+
228
+ // fallback to the default layout
229
+ return this.getLayout('default');
230
+ }
231
+ }
232
+ };
233
+
234
+ var shapeSizeCss$1 = i$5`.wrapper{overflow:hidden}.shape-classic-xl,.shape-classic-lg,.shape-classic-md,.shape-classic-sm,.shape-classic-xs{min-height:58px;max-height:58px;border-style:solid;border-width:1px;border-radius:var(--ds-border-radius, 0.375rem)}.shape-classic-xl.simple,.shape-classic-lg.simple,.shape-classic-md.simple,.shape-classic-sm.simple,.shape-classic-xs.simple{border-width:0px;min-height:60px;max-height:60px;background-color:unset;box-shadow:none}.shape-classic-xl.thin,.shape-classic-lg.thin,.shape-classic-md.thin,.shape-classic-sm.thin,.shape-classic-xs.thin{border-width:1px;min-height:58px;max-height:58px;background-color:unset}.shape-classic-xl.parentBorder,.shape-classic-lg.parentBorder,.shape-classic-md.parentBorder,.shape-classic-sm.parentBorder,.shape-classic-xs.parentBorder{border:0;box-shadow:unset;min-height:56px;max-height:56px}.shape-snowflake-xl,.shape-snowflake-lg,.shape-snowflake-md,.shape-snowflake-sm,.shape-snowflake-xs{min-height:56px;max-height:56px;border-style:solid;border-width:2px;border-color:transparent;border-radius:30px}.shape-snowflake-xl.simple,.shape-snowflake-lg.simple,.shape-snowflake-md.simple,.shape-snowflake-sm.simple,.shape-snowflake-xs.simple{border-width:0px;min-height:60px;max-height:60px;background-color:unset;box-shadow:none}.shape-snowflake-xl.thin,.shape-snowflake-lg.thin,.shape-snowflake-md.thin,.shape-snowflake-sm.thin,.shape-snowflake-xs.thin{border-width:1px;min-height:58px;max-height:58px;background-color:unset}.shape-snowflake-xl.parentBorder,.shape-snowflake-lg.parentBorder,.shape-snowflake-md.parentBorder,.shape-snowflake-sm.parentBorder,.shape-snowflake-xs.parentBorder{border:0;box-shadow:unset;min-height:56px;max-height:56px}.shape-box-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent}.shape-box-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-box-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-box-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-rounded-lg{min-height:56px;max-height:56px;border-style:solid;border-width:2px;border-color:transparent;border-radius:6px}.shape-rounded-lg.simple{border-width:0px;min-height:56px;max-height:56px;background-color:unset;box-shadow:none}.shape-rounded-lg.thin{border-width:1px;min-height:54px;max-height:54px;background-color:unset}.shape-rounded-lg.parentBorder{border:0;box-shadow:unset;min-height:52px;max-height:52px}.shape-pill-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px}.shape-pill-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-left-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px 0 0 36px}.shape-pill-left-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-left-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-left-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-right-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 36px 36px 0}.shape-pill-right-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-right-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-right-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px}.shape-pill-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}.shape-pill-left-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px 0 0 36px}.shape-pill-left-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-left-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-left-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}.shape-pill-right-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 36px 36px 0}.shape-pill-right-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-right-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-right-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}`;
235
+
236
+ var tokensCss$5 = i$5`:host(:not([ondark])){--ds-auro-select-border-color: var(--ds-basic-color-border-bold, #585e67);--ds-auro-select-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-select-label-text-color: var(--ds-basic-color-texticon-muted, #676767);--ds-auro-select-placeholder-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-select-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-select-error-icon-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: transparent}:host([ondark]){--ds-auro-select-border-color: var(--ds-basic-color-border-inverse, #ffffff);--ds-auro-select-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-select-label-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-select-placeholder-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-select-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-select-error-icon-color: var(--ds-basic-color-status-error-subtle, #fbc6c6);--ds-auro-select-outline-color: transparent}`;
237
+
139
238
  class DateFormatter {
140
239
 
141
240
  constructor() {
@@ -192,9 +291,10 @@ class DateFormatter {
192
291
  /**
193
292
  * Convert a date object to string format.
194
293
  * @param {Object} date - Date to convert to string.
195
- * @returns {Object} Returns the date as a string.
294
+ * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
295
+ * @returns {String} Returns the date as a string.
196
296
  */
197
- this.getDateAsString = (date) => date.toLocaleDateString(undefined, {
297
+ this.getDateAsString = (date, locale = undefined) => date.toLocaleDateString(locale, {
198
298
  year: "numeric",
199
299
  month: "2-digit",
200
300
  day: "2-digit",
@@ -386,7 +486,7 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
386
486
  const dateObj = new Date(this.getFourDigitYear(dateParts.year), dateParts.month - 1, dateParts.day || 1);
387
487
 
388
488
  // Get the date string of the date object we created from the string date
389
- const actualDateStr = dateFormatter.getDateAsString(dateObj);
489
+ const actualDateStr = dateFormatter.getDateAsString(dateObj, "en-US");
390
490
 
391
491
  // Guard Clause: Generated date matches date string input
392
492
  if (expectedDateStr !== actualDateStr) {
@@ -551,7 +651,7 @@ const {
551
651
 
552
652
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
553
653
 
554
- let AuroLibraryRuntimeUtils$3 = class AuroLibraryRuntimeUtils {
654
+ let AuroLibraryRuntimeUtils$6 = class AuroLibraryRuntimeUtils {
555
655
 
556
656
  /* eslint-disable jsdoc/require-param */
557
657
 
@@ -621,7 +721,7 @@ let AuroLibraryRuntimeUtils$3 = class AuroLibraryRuntimeUtils {
621
721
  class AuroFormValidation {
622
722
 
623
723
  constructor() {
624
- this.runtimeUtils = new AuroLibraryRuntimeUtils$3();
724
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$6();
625
725
  }
626
726
 
627
727
  /**
@@ -900,7 +1000,9 @@ class AuroFormValidation {
900
1000
  elem.validity = this.auroInputElements[0].validity;
901
1001
  elem.errorMessage = this.auroInputElements[0].errorMessage;
902
1002
 
903
- if (elem.validity === 'valid' && this.auroInputElements.length > 1) {
1003
+ // combobox has 2 inputs but no need to check validity on the 2nd one which is in fullscreen bib.
1004
+ // combobox's 2nd input will have noValidate set true.
1005
+ if (elem.validity === 'valid' && this.auroInputElements.length > 1 && !this.auroInputElements[1].noValidate) {
904
1006
  elem.validity = this.auroInputElements[1].validity;
905
1007
  elem.errorMessage = this.auroInputElements[1].errorMessage;
906
1008
  }
@@ -1033,7 +1135,7 @@ let AuroDependencyVersioning$2 = class AuroDependencyVersioning {
1033
1135
 
1034
1136
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
1035
1137
 
1036
- let AuroLibraryRuntimeUtils$1 = class AuroLibraryRuntimeUtils {
1138
+ let AuroLibraryRuntimeUtils$2$1 = class AuroLibraryRuntimeUtils {
1037
1139
 
1038
1140
  /* eslint-disable jsdoc/require-param */
1039
1141
 
@@ -1616,10 +1718,11 @@ const flip$1 = function (options) {
1616
1718
  const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
1617
1719
  const nextPlacement = placements[nextIndex];
1618
1720
  if (nextPlacement) {
1619
- var _overflowsData$;
1620
1721
  const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;
1621
- const hasInitialMainAxisOverflow = ((_overflowsData$ = overflowsData[0]) == null ? void 0 : _overflowsData$.overflows[0]) > 0;
1622
- if (!ignoreCrossAxisOverflow || hasInitialMainAxisOverflow) {
1722
+ if (!ignoreCrossAxisOverflow ||
1723
+ // We leave the current main axis only if every placement on that axis
1724
+ // overflows the main axis.
1725
+ overflowsData.every(d => d.overflows[0] > 0 && getSideAxis(d.placement) === initialSideAxis)) {
1623
1726
  // Try next placement and re-run the lifecycle.
1624
1727
  return {
1625
1728
  data: {
@@ -2640,8 +2743,28 @@ class AuroFloatingUI {
2640
2743
  if (!AuroFloatingUI.isMousePressHandlerInitialized && window && window.addEventListener) {
2641
2744
  AuroFloatingUI.isMousePressHandlerInitialized = true;
2642
2745
 
2746
+ // Track timeout for isMousePressed reset to avoid race conditions
2747
+ if (!AuroFloatingUI._mousePressedTimeout) {
2748
+ AuroFloatingUI._mousePressedTimeout = null;
2749
+ }
2643
2750
  const mouseEventGlobalHandler = (event) => {
2644
- AuroFloatingUI.isMousePressed = event.type === 'mousedown';
2751
+ const isPressed = event.type === 'mousedown';
2752
+ if (isPressed) {
2753
+ // Clear any pending timeout to prevent race condition
2754
+ if (AuroFloatingUI._mousePressedTimeout !== null) {
2755
+ clearTimeout(AuroFloatingUI._mousePressedTimeout);
2756
+ AuroFloatingUI._mousePressedTimeout = null;
2757
+ }
2758
+ if (!AuroFloatingUI.isMousePressed) {
2759
+ AuroFloatingUI.isMousePressed = true;
2760
+ }
2761
+ } else if (AuroFloatingUI.isMousePressed && !isPressed) {
2762
+ // Schedule reset and track timeout ID
2763
+ AuroFloatingUI._mousePressedTimeout = setTimeout(() => {
2764
+ AuroFloatingUI.isMousePressed = false;
2765
+ AuroFloatingUI._mousePressedTimeout = null;
2766
+ }, 0);
2767
+ }
2645
2768
  };
2646
2769
 
2647
2770
  window.addEventListener('mousedown', mouseEventGlobalHandler);
@@ -2768,6 +2891,7 @@ class AuroFloatingUI {
2768
2891
 
2769
2892
  // Compute the position of the bib
2770
2893
  computePosition(this.element.trigger, this.element.bib, {
2894
+ strategy: this.element.floaterConfig?.strategy || 'fixed',
2771
2895
  placement: this.element.floaterConfig?.placement,
2772
2896
  middleware: middleware || []
2773
2897
  }).then(({ x, y }) => { // eslint-disable-line id-length
@@ -2902,8 +3026,9 @@ class AuroFloatingUI {
2902
3026
  if (this.element.contains(activeElement) || this.element.bib?.contains(activeElement)) {
2903
3027
  return;
2904
3028
  }
2905
- // if fullscreen bib is still open and the focus is missing, do not close
2906
- if (this.element.bib.hasAttribute('isfullscreen') && activeElement === document.body) {
3029
+
3030
+ // if fullscreen bib is in fullscreen mode, do not close
3031
+ if (this.element.bib.hasAttribute('isfullscreen')) {
2907
3032
  return;
2908
3033
  }
2909
3034
 
@@ -3085,10 +3210,11 @@ class AuroFloatingUI {
3085
3210
  // Space is included as it's expected behavior for interactive elements
3086
3211
 
3087
3212
  const origin = event.composedPath()[0];
3088
- if (event.key === 'Enter' || ((!origin || origin.tagName !== "INPUT") && event.key === ' ')) {
3089
- event.preventDefault(); // Prevent page scroll on space
3213
+ if (event.key === 'Enter' || event.key === ' ' && (!origin || origin.tagName !== "INPUT")) {
3214
+
3215
+ event.preventDefault();
3090
3216
  this.handleClick();
3091
- }
3217
+ }
3092
3218
  break;
3093
3219
  case 'mouseenter':
3094
3220
  if (this.element.hoverToggle) {
@@ -3204,8 +3330,6 @@ class AuroFloatingUI {
3204
3330
  this.element.hoverToggle = this.element.floaterConfig.hoverToggle;
3205
3331
  }
3206
3332
 
3207
- document.body.append(this.element.bib);
3208
-
3209
3333
  this.regenerateBibId();
3210
3334
  this.handleTriggerTabIndex();
3211
3335
 
@@ -3242,6 +3366,267 @@ class AuroFloatingUI {
3242
3366
  }
3243
3367
  }
3244
3368
 
3369
+ // Selectors for focusable elements
3370
+ const FOCUSABLE_SELECTORS = [
3371
+ 'a[href]',
3372
+ 'button:not([disabled])',
3373
+ 'textarea:not([disabled])',
3374
+ 'input:not([disabled])',
3375
+ 'select:not([disabled])',
3376
+ '[role="tab"]:not([disabled])',
3377
+ '[role="link"]:not([disabled])',
3378
+ '[role="button"]:not([disabled])',
3379
+ '[tabindex]:not([tabindex="-1"])',
3380
+ '[contenteditable]:not([contenteditable="false"])'
3381
+ ];
3382
+
3383
+ // List of custom components that are known to be focusable
3384
+ const FOCUSABLE_COMPONENTS = [
3385
+ 'auro-checkbox',
3386
+ 'auro-radio',
3387
+ 'auro-dropdown',
3388
+ 'auro-button',
3389
+ 'auro-combobox',
3390
+ 'auro-input',
3391
+ 'auro-counter',
3392
+ 'auro-menu',
3393
+ 'auro-select',
3394
+ 'auro-datepicker',
3395
+ 'auro-hyperlink',
3396
+ 'auro-accordion',
3397
+ ];
3398
+
3399
+ /**
3400
+ * Determines if a given element is a custom focusable component.
3401
+ * Returns true if the element matches a known focusable component and is not disabled.
3402
+ *
3403
+ * @param {HTMLElement} element The element to check for focusability.
3404
+ * @returns {boolean} True if the element is a focusable custom component, false otherwise.
3405
+ */
3406
+ function isFocusableComponent(element) {
3407
+ const componentName = element.tagName.toLowerCase();
3408
+
3409
+ // Guard Clause: Element is a focusable component
3410
+ if (!FOCUSABLE_COMPONENTS.some((name) => element.hasAttribute(name) || componentName === name)) return false;
3411
+
3412
+ // Guard Clause: Element is not disabled
3413
+ if (element.hasAttribute('disabled')) return false;
3414
+
3415
+ // Guard Clause: The element is a hyperlink and has no href attribute
3416
+ if (componentName.match("hyperlink") && !element.hasAttribute('href')) return false;
3417
+
3418
+ // If all guard clauses pass, the element is a focusable component
3419
+ return true;
3420
+ }
3421
+
3422
+ /**
3423
+ * Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
3424
+ * Returns a unique, ordered array of elements that can receive focus.
3425
+ *
3426
+ * @param {HTMLElement} container The container to search within
3427
+ * @returns {Array<HTMLElement>} An array of focusable elements within the container.
3428
+ */
3429
+ function getFocusableElements(container) {
3430
+ // Get elements in DOM order by walking the tree
3431
+ const orderedFocusableElements = [];
3432
+
3433
+ // Define a recursive function to collect focusable elements in DOM order
3434
+ const collectFocusableElements = (root) => {
3435
+ // Check if current element is focusable
3436
+ if (root.nodeType === Node.ELEMENT_NODE) {
3437
+ // Check if this is a custom component that is focusable
3438
+ const isComponentFocusable = isFocusableComponent(root);
3439
+
3440
+ if (isComponentFocusable) {
3441
+ // Add the component itself as a focusable element and don't traverse its shadow DOM
3442
+ orderedFocusableElements.push(root);
3443
+ return; // Skip traversing inside this component
3444
+ }
3445
+
3446
+ // Check if the element itself matches any selector
3447
+ for (const selector of FOCUSABLE_SELECTORS) {
3448
+ if (root.matches?.(selector)) {
3449
+ orderedFocusableElements.push(root);
3450
+ break; // Once we know it's focusable, no need to check other selectors
3451
+ }
3452
+ }
3453
+
3454
+ // Process shadow DOM only for non-Auro components
3455
+ if (root.shadowRoot) {
3456
+ // Process shadow DOM children in order
3457
+ if (root.shadowRoot.children) {
3458
+ Array.from(root.shadowRoot.children).forEach(child => {
3459
+ collectFocusableElements(child);
3460
+ });
3461
+ }
3462
+ }
3463
+
3464
+ // Process slots and their assigned nodes in order
3465
+ if (root.tagName === 'SLOT') {
3466
+ const assignedNodes = root.assignedNodes({ flatten: true });
3467
+ for (const node of assignedNodes) {
3468
+ collectFocusableElements(node);
3469
+ }
3470
+ } else {
3471
+ // Process light DOM children in order
3472
+ if (root.children) {
3473
+ Array.from(root.children).forEach(child => {
3474
+ collectFocusableElements(child);
3475
+ });
3476
+ }
3477
+ }
3478
+ }
3479
+ };
3480
+
3481
+ // Start the traversal from the container
3482
+ collectFocusableElements(container);
3483
+
3484
+ // Remove duplicates that might have been collected through different paths
3485
+ // while preserving order
3486
+ const uniqueElements = [];
3487
+ const seen = new Set();
3488
+
3489
+ for (const element of orderedFocusableElements) {
3490
+ if (!seen.has(element)) {
3491
+ seen.add(element);
3492
+ uniqueElements.push(element);
3493
+ }
3494
+ }
3495
+
3496
+ return uniqueElements;
3497
+ }
3498
+
3499
+ /**
3500
+ * FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
3501
+ * It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
3502
+ */
3503
+ class FocusTrap {
3504
+ /**
3505
+ * Creates a new FocusTrap instance for the given container element.
3506
+ * Initializes event listeners and prepares the container for focus management.
3507
+ *
3508
+ * @param {HTMLElement} container The DOM element to trap focus within.
3509
+ * @throws {Error} If the provided container is not a valid HTMLElement.
3510
+ */
3511
+ constructor(container) {
3512
+ if (!container || !(container instanceof HTMLElement)) {
3513
+ throw new Error("FocusTrap requires a valid HTMLElement.");
3514
+ }
3515
+
3516
+ this.container = container;
3517
+ this.tabDirection = 'forward'; // or 'backward'
3518
+
3519
+ this._init();
3520
+ }
3521
+
3522
+ /**
3523
+ * Initializes the focus trap by setting up event listeners and attributes on the container.
3524
+ * Prepares the container for focus management, including support for shadow DOM and inert attributes.
3525
+ *
3526
+ * @private
3527
+ */
3528
+ _init() {
3529
+
3530
+ // Add inert attribute to prevent focusing programmatically as well (if supported)
3531
+ if ('inert' in HTMLElement.prototype) {
3532
+ this.container.inert = false; // Ensure the container isn't inert
3533
+ this.container.setAttribute('data-focus-trap-container', true); // Mark for identification
3534
+ }
3535
+
3536
+ // Track tab direction
3537
+ this.container.addEventListener('keydown', this._onKeydown);
3538
+ }
3539
+
3540
+ /**
3541
+ * Handles keydown events to manage tab navigation within the container.
3542
+ * Ensures that focus wraps around when reaching the first or last focusable element.
3543
+ *
3544
+ * @param {KeyboardEvent} e The keyboard event triggered by user interaction.
3545
+ * @private
3546
+ */
3547
+ _onKeydown = (e) => {
3548
+
3549
+ if (e.key === 'Tab') {
3550
+
3551
+ // Set the tab direction based on the key pressed
3552
+ this.tabDirection = e.shiftKey ? 'backward' : 'forward';
3553
+
3554
+ // Get the active element(s) in the document and shadow root
3555
+ // This will include the active element in the shadow DOM if it exists
3556
+ // Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
3557
+ let activeElement = document.activeElement;
3558
+ const actives = [activeElement];
3559
+ while (activeElement?.shadowRoot?.activeElement) {
3560
+ actives.push(activeElement.shadowRoot.activeElement);
3561
+ activeElement = activeElement.shadowRoot.activeElement;
3562
+ }
3563
+
3564
+ // Update the focusable elements
3565
+ const focusables = this._getFocusableElements();
3566
+
3567
+ // If we're at either end of the focusable elements, wrap around to the other end
3568
+ const focusIndex =
3569
+ (actives.includes(focusables[0]) || actives.includes(this.container)) && this.tabDirection === 'backward'
3570
+ ? focusables.length - 1
3571
+ : actives.includes(focusables[focusables.length - 1]) && this.tabDirection === 'forward'
3572
+ ? 0
3573
+ : null;
3574
+
3575
+ if (focusIndex !== null) {
3576
+ focusables[focusIndex].focus();
3577
+ e.preventDefault(); // Prevent default tab behavior
3578
+ e.stopPropagation(); // Stop the event from bubbling up
3579
+ }
3580
+ }
3581
+ };
3582
+
3583
+ /**
3584
+ * Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
3585
+ * Returns a unique, ordered array of elements that can receive focus.
3586
+ *
3587
+ * @returns {Array<HTMLElement>} An array of focusable elements within the container.
3588
+ * @private
3589
+ */
3590
+ _getFocusableElements() {
3591
+ // Use the imported utility function to get focusable elements
3592
+ const elements = getFocusableElements(this.container);
3593
+
3594
+ // Filter out any elements with the 'focus-bookend' class
3595
+ return elements;
3596
+ }
3597
+
3598
+ /**
3599
+ * Moves focus to the first focusable element within the container.
3600
+ * Useful for setting initial focus when activating the focus trap.
3601
+ */
3602
+ focusFirstElement() {
3603
+ const focusables = this._getFocusableElements();
3604
+ if (focusables.length) focusables[0].focus();
3605
+ }
3606
+
3607
+ /**
3608
+ * Moves focus to the last focusable element within the container.
3609
+ * Useful for setting focus when deactivating or cycling focus in reverse.
3610
+ */
3611
+ focusLastElement() {
3612
+ const focusables = this._getFocusableElements();
3613
+ if (focusables.length) focusables[focusables.length - 1].focus();
3614
+ }
3615
+
3616
+ /**
3617
+ * Removes event listeners and attributes added by the focus trap.
3618
+ * Call this method to clean up when the focus trap is no longer needed.
3619
+ */
3620
+ disconnect() {
3621
+
3622
+ if (this.container.hasAttribute('data-focus-trap-container')) {
3623
+ this.container.removeAttribute('data-focus-trap-container');
3624
+ }
3625
+
3626
+ this.container.removeEventListener('keydown', this._onKeydown);
3627
+ }
3628
+ }
3629
+
3245
3630
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
3246
3631
  // See LICENSE in the project root for license information.
3247
3632
 
@@ -3432,50 +3817,120 @@ let BaseIcon$2 = class BaseIcon extends AuroElement$1$1 {
3432
3817
  }
3433
3818
  };
3434
3819
 
3435
- var tokensCss$2$1 = 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)}`;
3820
+ var tokensCss$2$2 = 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)}`;
3436
3821
 
3437
- var colorCss$3$1 = 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)}`;
3822
+ var colorCss$3$2 = 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)}`;
3438
3823
 
3439
- // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
3824
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
3440
3825
  // See LICENSE in the project root for license information.
3441
3826
 
3827
+ // ---------------------------------------------------------------------
3442
3828
 
3443
- let AuroIcon$2 = class AuroIcon extends BaseIcon$2 {
3444
- constructor() {
3445
- super();
3829
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
3446
3830
 
3447
- this.variant = undefined;
3448
- this.privateDefaults();
3831
+ let AuroLibraryRuntimeUtils$1$2 = class AuroLibraryRuntimeUtils {
3832
+
3833
+ /* eslint-disable jsdoc/require-param */
3834
+
3835
+ /**
3836
+ * This will register a new custom element with the browser.
3837
+ * @param {String} name - The name of the custom element.
3838
+ * @param {Object} componentClass - The class to register as a custom element.
3839
+ * @returns {void}
3840
+ */
3841
+ registerComponent(name, componentClass) {
3842
+ if (!customElements.get(name)) {
3843
+ customElements.define(name, class extends componentClass {});
3844
+ }
3449
3845
  }
3450
3846
 
3451
3847
  /**
3452
- * Internal Defaults.
3453
- * @private
3848
+ * Finds and returns the closest HTML Element based on a selector.
3454
3849
  * @returns {void}
3455
3850
  */
3456
- privateDefaults() {
3457
- this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
3458
- this.runtimeUtils = new AuroLibraryRuntimeUtils$1();
3851
+ closestElement(
3852
+ selector, // selector like in .closest()
3853
+ base = this, // extra functionality to skip a parent
3854
+ __Closest = (el, found = el && el.closest(selector)) =>
3855
+ !el || el === document || el === window
3856
+ ? null // standard .closest() returns null for non-found selectors also
3857
+ : found
3858
+ ? found // found a selector INside this element
3859
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
3860
+ ) {
3861
+ return __Closest(base);
3459
3862
  }
3863
+ /* eslint-enable jsdoc/require-param */
3460
3864
 
3461
- // function to define props used within the scope of this component
3462
- static get properties() {
3463
- return {
3464
- ...super.properties,
3865
+ /**
3866
+ * 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.
3867
+ * @param {Object} elem - The element to check.
3868
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
3869
+ * @returns {void}
3870
+ */
3871
+ handleComponentTagRename(elem, tagName) {
3872
+ const tag = tagName.toLowerCase();
3873
+ const elemTag = elem.tagName.toLowerCase();
3465
3874
 
3466
- /**
3467
- * Set aria-hidden value. Default is `true`. Option is `false`.
3468
- */
3469
- ariaHidden: {
3470
- type: String,
3471
- reflect: true
3472
- },
3875
+ if (elemTag !== tag) {
3876
+ elem.setAttribute(tag, true);
3877
+ }
3878
+ }
3473
3879
 
3474
- /**
3475
- * The category of the icon you are looking for. See https://auro.alaskaair.com/icons/usage.
3476
- */
3477
- category: {
3478
- type: String,
3880
+ /**
3881
+ * Validates if an element is a specific Auro component.
3882
+ * @param {Object} elem - The element to validate.
3883
+ * @param {String} tagName - The name of the Auro component to check against.
3884
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
3885
+ */
3886
+ elementMatch(elem, tagName) {
3887
+ const tag = tagName.toLowerCase();
3888
+ const elemTag = elem.tagName.toLowerCase();
3889
+
3890
+ return elemTag === tag || elem.hasAttribute(tag);
3891
+ }
3892
+ };
3893
+
3894
+ // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
3895
+ // See LICENSE in the project root for license information.
3896
+
3897
+
3898
+ let AuroIcon$2 = class AuroIcon extends BaseIcon$2 {
3899
+ constructor() {
3900
+ super();
3901
+
3902
+ this.variant = undefined;
3903
+ this.privateDefaults();
3904
+ }
3905
+
3906
+ /**
3907
+ * Internal Defaults.
3908
+ * @private
3909
+ * @returns {void}
3910
+ */
3911
+ privateDefaults() {
3912
+ this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
3913
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$1$2();
3914
+ }
3915
+
3916
+ // function to define props used within the scope of this component
3917
+ static get properties() {
3918
+ return {
3919
+ ...super.properties,
3920
+
3921
+ /**
3922
+ * Set aria-hidden value. Default is `true`. Option is `false`.
3923
+ */
3924
+ ariaHidden: {
3925
+ type: String,
3926
+ reflect: true
3927
+ },
3928
+
3929
+ /**
3930
+ * The category of the icon you are looking for. See https://auro.alaskaair.com/icons/usage.
3931
+ */
3932
+ category: {
3933
+ type: String,
3479
3934
  reflect: true
3480
3935
  },
3481
3936
 
@@ -3522,9 +3977,9 @@ let AuroIcon$2 = class AuroIcon extends BaseIcon$2 {
3522
3977
  static get styles() {
3523
3978
  return [
3524
3979
  super.styles,
3525
- i$5`${tokensCss$2$1}`,
3980
+ i$5`${tokensCss$2$2}`,
3526
3981
  i$5`${styleCss$2$2}`,
3527
- i$5`${colorCss$3$1}`
3982
+ i$5`${colorCss$3$2}`
3528
3983
  ];
3529
3984
  }
3530
3985
 
@@ -3537,7 +3992,7 @@ let AuroIcon$2 = class AuroIcon extends BaseIcon$2 {
3537
3992
  *
3538
3993
  */
3539
3994
  static register(name = "auro-icon") {
3540
- AuroLibraryRuntimeUtils$1.prototype.registerComponent(name, AuroIcon);
3995
+ AuroLibraryRuntimeUtils$1$2.prototype.registerComponent(name, AuroIcon);
3541
3996
  }
3542
3997
 
3543
3998
  connectedCallback() {
@@ -3558,8 +4013,12 @@ let AuroIcon$2 = class AuroIcon extends BaseIcon$2 {
3558
4013
  async firstUpdated() {
3559
4014
  await super.firstUpdated();
3560
4015
 
3561
- // Removes the SVG description for screenreader if ariaHidden is set to true
3562
- if (!this.hasAttribute('ariaHidden') && this.svg) {
4016
+ /**
4017
+ * icons provide a description for screen readers. Icon only instances Auro-button
4018
+ * depend on this description to provide context for the user using a screen reader.
4019
+ * Removes the SVG description for screen reader if ariaHidden is set to true.
4020
+ */
4021
+ if (this.hasAttribute('ariaHidden') && this.svg) {
3563
4022
  const svgDesc = this.svg.querySelector('desc');
3564
4023
 
3565
4024
  if (svgDesc) {
@@ -3605,17 +4064,16 @@ let AuroIcon$2 = class AuroIcon extends BaseIcon$2 {
3605
4064
 
3606
4065
  var iconVersion$2 = '6.1.2';
3607
4066
 
3608
- var styleCss$1$2 = i$5`:host{position:absolute;z-index:var(--depth-tooltip, 400);display:none}.container{display:inline-block;overflow:auto;box-sizing:border-box;margin:var(--ds-size-50, 0.25rem) 0}:host([isfullscreen]){position:fixed;top:0;left:0}:host([isfullscreen]) .container{width:100dvw;max-width:none;height:100dvh;max-height:none;border-radius:unset;margin-top:0;box-shadow:unset;overscroll-behavior:contain}:host([data-show]){display:flex}:host([common]:not([isfullscreen])) .container,:host([rounded]:not([isfullscreen])) .container{border-radius:var(--ds-border-radius, 0.375rem)}:host([common][isfullscreen]) .container,:host([rounded][isfullscreen]) .container{border-radius:unset;box-shadow:unset}`;
4067
+ var styleCss$1$2 = i$5`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host(:not([matchWidth])) .container{min-width:fit-content}:host([isfullscreen]){position:fixed;top:0;left:0}:host([isfullscreen]) .container{width:100dvw;max-width:none;height:100dvh;max-height:none;border-radius:unset;margin-top:0;box-shadow:unset;overscroll-behavior:contain}:host([data-show]){display:flex}:host([common]:not([isfullscreen])) .container,:host([rounded]:not([isfullscreen])) .container{border-radius:var(--ds-border-radius, 0.375rem)}:host([common][isfullscreen]) .container,:host([rounded][isfullscreen]) .container{border-radius:unset;box-shadow:unset}:host(:not([isfullscreen])) .container.shape-box{border-radius:unset}:host(:not([isfullscreen])) .container[class*=shape-pill],:host(:not([isfullscreen])) .container[class*=shape-snowflake]{border-radius:30px}.container{display:inline-block;overflow:auto;box-sizing:border-box;border-radius:var(--ds-border-radius, 0.375rem);margin:var(--ds-size-50, 0.25rem) 0}`;
3609
4068
 
3610
- var colorCss$2$1 = i$5`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
4069
+ var colorCss$2$2 = i$5`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
3611
4070
 
3612
- var tokensCss$1$1 = i$5`:host(:not([ondark])){--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-muted, #676767);--ds-auro-dropdown-trigger-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdown-trigger-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdown-trigger-border-color: transparent;--ds-auro-dropdown-trigger-outline-color: transparent;--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-dropdownbib-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdownbib-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdownbib-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]){--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db);--ds-auro-dropdown-trigger-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-container-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-border-color: transparent;--ds-auro-dropdown-trigger-outline-color: transparent;--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-dropdownbib-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdownbib-container-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdownbib-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}`;
4071
+ var tokensCss$1$2 = i$5`:host(:not([ondark])){--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-muted, #676767);--ds-auro-dropdown-trigger-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdown-trigger-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-bold, #585e67);--ds-auro-dropdown-trigger-outline-color: transparent;--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-dropdownbib-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdownbib-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdownbib-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]){--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db);--ds-auro-dropdown-trigger-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-container-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-inverse, #ffffff);--ds-auro-dropdown-trigger-outline-color: transparent;--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-dropdownbib-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdownbib-container-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdownbib-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}`;
3613
4072
 
3614
4073
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
3615
4074
  // See LICENSE in the project root for license information.
3616
4075
 
3617
4076
 
3618
-
3619
4077
  const DESIGN_TOKEN_BREAKPOINT_PREFIX = '--ds-grid-breakpoint-';
3620
4078
  const DESIGN_TOKEN_BREAKPOINT_OPTIONS = [
3621
4079
  'xl',
@@ -3631,7 +4089,7 @@ const DESIGN_TOKEN_BREAKPOINT_OPTIONS = [
3631
4089
  */
3632
4090
 
3633
4091
  class AuroDropdownBib extends i$2 {
3634
-
4092
+ // not extending AuroElement because Bib needs only `shape` prop
3635
4093
  constructor() {
3636
4094
  super();
3637
4095
 
@@ -3640,14 +4098,17 @@ class AuroDropdownBib extends i$2 {
3640
4098
  */
3641
4099
  this._mobileBreakpointValue = undefined;
3642
4100
 
3643
- AuroLibraryRuntimeUtils$1.prototype.handleComponentTagRename(this, 'auro-dropdownbib');
4101
+ AuroLibraryRuntimeUtils$2$1.prototype.handleComponentTagRename(this, 'auro-dropdownbib');
4102
+
4103
+ this.shape = "rounded";
4104
+ this.matchWidth = false;
3644
4105
  }
3645
4106
 
3646
4107
  static get styles() {
3647
4108
  return [
3648
4109
  styleCss$1$2,
3649
- colorCss$2$1,
3650
- tokensCss$1$1
4110
+ colorCss$2$2,
4111
+ tokensCss$1$2
3651
4112
  ];
3652
4113
  }
3653
4114
 
@@ -3678,6 +4139,15 @@ class AuroDropdownBib extends i$2 {
3678
4139
  reflect: true
3679
4140
  },
3680
4141
 
4142
+ /**
4143
+ * If declared, the bib width will match the trigger width.
4144
+ * @private
4145
+ */
4146
+ matchWidth: {
4147
+ type: Boolean,
4148
+ reflect: true
4149
+ },
4150
+
3681
4151
  /**
3682
4152
  * If declared, will apply border-radius to the bib.
3683
4153
  */
@@ -3685,6 +4155,18 @@ class AuroDropdownBib extends i$2 {
3685
4155
  type: Boolean,
3686
4156
  reflect: true
3687
4157
  },
4158
+
4159
+ /**
4160
+ * A reference to the associated bib template element.
4161
+ */
4162
+ bibTemplate: {
4163
+ type: Object
4164
+ },
4165
+
4166
+ shape: {
4167
+ type: String,
4168
+ reflect: true
4169
+ }
3688
4170
  };
3689
4171
  }
3690
4172
 
@@ -3717,13 +4199,62 @@ class AuroDropdownBib extends i$2 {
3717
4199
  }
3718
4200
  }
3719
4201
  });
4202
+
4203
+ if (this.bibTemplate) {
4204
+ // If the bib template is found, set the fullscreen attribute
4205
+ if (this.isFullscreen) {
4206
+ this.bibTemplate.setAttribute('isFullscreen', 'true');
4207
+ } else {
4208
+ this.bibTemplate.removeAttribute('isFullscreen');
4209
+ }
4210
+ }
3720
4211
  }
3721
4212
  }
3722
4213
 
4214
+ connectedCallback() {
4215
+ super.connectedCallback();
4216
+
4217
+ // Listen for the auro-bibtemplate-connected event to set the fullscreen attribute
4218
+ this.addEventListener('auro-bibtemplate-connected', (event) => {
4219
+ const bibTemplate = event.detail.element;
4220
+ this.bibTemplate = bibTemplate;
4221
+
4222
+ if (bibTemplate) {
4223
+ // If the bib template is found, set the fullscreen attribute
4224
+ if (this.isFullscreen) {
4225
+ bibTemplate.setAttribute('isFullscreen', 'true');
4226
+ } else {
4227
+ bibTemplate.removeAttribute('isFullscreen');
4228
+ }
4229
+ }
4230
+ });
4231
+ }
4232
+
4233
+ firstUpdated(changedProperties) {
4234
+ super.firstUpdated(changedProperties);
4235
+
4236
+ // Dispatch a custom event when the component is connected
4237
+ this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
4238
+ bubbles: true,
4239
+ composed: true,
4240
+ detail: {
4241
+ element: this
4242
+ }
4243
+ }));
4244
+ }
4245
+
3723
4246
  // function that renders the HTML and CSS into the scope of the component
3724
4247
  render() {
4248
+ const classes = {
4249
+ container: true
4250
+ };
4251
+
4252
+ // Since this class does not inherit from AuroElement, we apply the shape-related class within the `render` function,
4253
+ // mimicking the class naming convention used in AuroElement.resetShapeClasses.
4254
+ classes[`shape-${this.shape}`] = true;
4255
+
3725
4256
  return u`
3726
- <div class="container" part="bibContainer">
4257
+ <div class="${e(classes)}" part="bibContainer">
3727
4258
  <slot></slot>
3728
4259
  </div>
3729
4260
  `;
@@ -3732,23 +4263,23 @@ class AuroDropdownBib extends i$2 {
3732
4263
 
3733
4264
  var dropdownVersion$1 = '3.0.0';
3734
4265
 
3735
- var shapeSizeCss = i$5`.shape-classic-xl,.shape-classic-lg,.shape-classic-md,.shape-classic-sm,.shape-classic-xs{min-height:58px;max-height:58px;border-style:solid;border-width:1px;border-radius:var(--ds-border-radius, 0.375rem)}.shape-classic-xl.simple,.shape-classic-lg.simple,.shape-classic-md.simple,.shape-classic-sm.simple,.shape-classic-xs.simple{border-width:0;min-height:60px;max-height:60px;background-color:unset}.shape-snowflake-xl,.shape-snowflake-lg,.shape-snowflake-md,.shape-snowflake-sm,.shape-snowflake-xs{min-height:56px;max-height:56px;border-style:solid;border-width:2px;border-color:transparent;border-radius:30px}.shape-snowflake-xl.simple,.shape-snowflake-lg.simple,.shape-snowflake-md.simple,.shape-snowflake-sm.simple,.shape-snowflake-xs.simple{border-width:0;min-height:60px;max-height:60px;background-color:unset}.shape-box-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent}.shape-box-xl.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-rounded-lg{min-height:52px;max-height:52px;border-style:solid;border-width:2px;border-color:transparent;border-radius:6px}.shape-rounded-lg.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:34px}.shape-pill-xl.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-left-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:34px 0 0 34px}.shape-pill-left-xl.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-right-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 34px 34px 0}.shape-pill-right-xl.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-md{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:34px}.shape-pill-md.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-left-md{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:34px 0 0 34px}.shape-pill-left-md.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-right-md{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 34px 34px 0}.shape-pill-right-md.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}`;
4266
+ var shapeSizeCss = i$5`.wrapper{overflow:hidden}.shape-classic-xl,.shape-classic-lg,.shape-classic-md,.shape-classic-sm,.shape-classic-xs{min-height:58px;max-height:58px;border-style:solid;border-width:1px;border-radius:var(--ds-border-radius, 0.375rem)}.shape-classic-xl.simple,.shape-classic-lg.simple,.shape-classic-md.simple,.shape-classic-sm.simple,.shape-classic-xs.simple{border-width:0px;min-height:60px;max-height:60px;background-color:unset;box-shadow:none}.shape-classic-xl.thin,.shape-classic-lg.thin,.shape-classic-md.thin,.shape-classic-sm.thin,.shape-classic-xs.thin{border-width:1px;min-height:58px;max-height:58px;background-color:unset}.shape-classic-xl.parentBorder,.shape-classic-lg.parentBorder,.shape-classic-md.parentBorder,.shape-classic-sm.parentBorder,.shape-classic-xs.parentBorder{border:0;box-shadow:unset;min-height:56px;max-height:56px}.shape-snowflake-xl,.shape-snowflake-lg,.shape-snowflake-md,.shape-snowflake-sm,.shape-snowflake-xs{min-height:56px;max-height:56px;border-style:solid;border-width:2px;border-color:transparent;border-radius:30px}.shape-snowflake-xl.simple,.shape-snowflake-lg.simple,.shape-snowflake-md.simple,.shape-snowflake-sm.simple,.shape-snowflake-xs.simple{border-width:0px;min-height:60px;max-height:60px;background-color:unset;box-shadow:none}.shape-snowflake-xl.thin,.shape-snowflake-lg.thin,.shape-snowflake-md.thin,.shape-snowflake-sm.thin,.shape-snowflake-xs.thin{border-width:1px;min-height:58px;max-height:58px;background-color:unset}.shape-snowflake-xl.parentBorder,.shape-snowflake-lg.parentBorder,.shape-snowflake-md.parentBorder,.shape-snowflake-sm.parentBorder,.shape-snowflake-xs.parentBorder{border:0;box-shadow:unset;min-height:56px;max-height:56px}.shape-box-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent}.shape-box-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-box-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-box-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-rounded-lg{min-height:56px;max-height:56px;border-style:solid;border-width:2px;border-color:transparent;border-radius:6px}.shape-rounded-lg.simple{border-width:0px;min-height:56px;max-height:56px;background-color:unset;box-shadow:none}.shape-rounded-lg.thin{border-width:1px;min-height:54px;max-height:54px;background-color:unset}.shape-rounded-lg.parentBorder{border:0;box-shadow:unset;min-height:52px;max-height:52px}.shape-pill-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px}.shape-pill-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-left-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px 0 0 36px}.shape-pill-left-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-left-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-left-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-right-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 36px 36px 0}.shape-pill-right-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-right-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-right-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px}.shape-pill-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}.shape-pill-left-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px 0 0 36px}.shape-pill-left-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-left-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-left-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}.shape-pill-right-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 36px 36px 0}.shape-pill-right-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-right-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-right-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}`;
3736
4267
 
3737
- var colorCss$1$2 = i$5`:host .wrapper{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-background-color);color:var(--ds-auro-dropdown-trigger-text-color)}:host(:not([ondark])) .wrapper:focus,:host(:not([ondark])) .wrapper:focus-within{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-brand, #00274a)}:host([ondark]) .wrapper:focus,:host([ondark]) .wrapper:focus-within{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-inverse, #ffffff)}:host([error]:not([ondark])){--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-status-error, #e31f26)}:host([error][ondark]){--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8)}.helpText{color:var(--ds-auro-dropdown-helptext-text-color)}`;
4268
+ var colorCss$1$2 = i$5`:host(:not([ondark])) .wrapper{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-background-color);color:var(--ds-auro-dropdown-trigger-text-color)}:host(:not([ondark])) .wrapper:focus-within,:host(:not([ondark])) .wrapper:active{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused, #01426a);--ds-auro-dropdown-trigger-outline-color: var(--ds-advanced-color-state-focused, #01426a)}:host(:not([onDark])[disabled]){--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([ondark])[error]){--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-status-error, #e31f26)}:host([onDark]) .label{color:var(--ds-auro-dropdown-label-text-color)}:host([onDark]) .wrapper{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-background-color);color:var(--ds-auro-dropdown-trigger-text-color)}:host([onDark]) .wrapper:focus-within,:host([onDark]) .wrapper:active{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-dropdown-trigger-outline-color: var(--ds-advanced-color-state-focused-inverse, #ffffff)}:host([onDark][disabled]){--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-dropdown-trigger-container-color: var(--ds-advanced-color-shared-background-inverse-disabled, rgba(255, 255, 255, 0.1))}:host([ondark][error]){--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-status-error-subtle, #fbc6c6)}`;
3738
4269
 
3739
- var classicColorCss = i$5`:host([layout*=classic]) .label{color:var(--ds-auro-dropdown-label-text-color)}:host([layout*=classic]) .trigger{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-container-color);color:var(--ds-auro-dropdown-trigger-text-color);outline-color:var(--ds-auro-dropdown-trigger-outline-color)}:host([layout*=classic]) .trigger:focus-within,:host([layout*=classic]) .trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused, #01426a);--ds-auro-dropdown-trigger-outline-color: var(--ds-advanced-color-state-focused, #01426a)}:host([layout*=classic])[disabled]{--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host([layout*=classic])[common],:host([layout*=classic])[bordered]{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-bold, #585e67)}:host([layout*=classic])[common] .trigger:active,:host([layout*=classic])[common] .trigger:focus-within,:host([layout*=classic])[bordered] .trigger:active,:host([layout*=classic])[bordered] .trigger:focus-within{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused, #01426a)}:host([layout*=classic])[error]{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-status-error, #e31f26)}:host([layout*=classic])[error] .trigger{outline:solid 1px var(--ds-auro-dropdown-trigger-border-color)}:host([layout*=classic])[error] .trigger:focus-within,:host([layout*=classic])[error] .trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused, #01426a);--ds-auro-dropdown-trigger-outline-color: var(--ds-advanced-color-state-focused, #01426a)}:host([layout*=classic])[disabled][common],:host([layout*=classic])[disabled][bordered]{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host([layout*=classic])[onDark]{--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db);--ds-auro-dropdown-trigger-container-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([layout*=classic])[onDark]:focus-within,:host([layout*=classic])[onDark]:active{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-dropdown-trigger-outline-color: var(--ds-advanced-color-state-focused-inverse, #ffffff)}:host([layout*=classic])[onDark][disabled]{--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}:host([layout*=classic])[onDark][common],:host([layout*=classic])[onDark][bordered]{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-inverse, #ffffff)}:host([layout*=classic])[onDark][common] .trigger:focus-within,:host([layout*=classic])[onDark][common] .trigger:active,:host([layout*=classic])[onDark][bordered] .trigger:focus-within,:host([layout*=classic])[onDark][bordered] .trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-dropdown-trigger-outline-color: var(--ds-advanced-color-state-focused-inverse, #ffffff)}:host([layout*=classic])[onDark][error]{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8)}:host([layout*=classic])[onDark][error] .trigger{outline:solid 1px var(--ds-auro-dropdown-trigger-border-color)}:host([layout*=classic])[onDark][error] .trigger:focus-within,:host([layout*=classic])[onDark][error] .trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-dropdown-trigger-outline-color: var(--ds-advanced-color-state-focused-inverse, #ffffff)}:host([layout*=classic])[onDark][disabled][common],:host([layout*=classic])[onDark][disabled][bordered]{--ds-auro-dropdown-trigger-container-color: var(--ds-advanced-color-shared-background-inverse-disabled, rgba(255, 255, 255, 0.1))}`;
4270
+ var classicColorCss = i$5``;
3740
4271
 
3741
- var classicLayoutCss = i$5`:host([layout*=classic]){position:relative;max-width:100%}:host([layout*=classic]) #bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}:host([layout*=classic]) .label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}:host([layout*=classic]) .label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}:host([layout*=classic]) .trigger{display:flex;flex-direction:row}@media(hover: hover){:host([layout*=classic]) .trigger:hover{cursor:pointer}}:host([layout*=classic]) .triggerContentWrapper{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) #showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;margin-left:var(--ds-size-100, 0.5rem)}:host([layout*=classic]) #showStateIcon [auro-icon]{height:var(--ds-size-300, 1.5rem);line-height:var(--ds-size-300, 1.5rem)}:host([layout*=classic]) #showStateIcon[data-expanded=true] [auro-icon]{transform:rotate(-180deg)}:host([layout*=classic][fluid]){display:block}:host([layout*=classic][matchwidth]) #bibSizer{width:100%}:host([layout*=classic][disabled]){pointer-events:none}:host([layout*=classic][inset]) .trigger{padding:var(--ds-size-150, 0.75rem) var(--ds-size-200, 1rem)}:host([layout*=classic][common]) .trigger,:host([layout*=classic][inset][bordered]) .trigger{padding:var(--ds-size-200, 1rem) var(--ds-size-150, 0.75rem)}:host([layout*=classic][inset][bordered][labeled]) .trigger{padding:var(--ds-size-100, 0.5rem) var(--ds-size-150, 0.75rem)}:host([layout*=classic][common]) .trigger,:host([layout*=classic][rounded]) .trigger{border-radius:var(--ds-border-radius, 0.375rem)}`;
4272
+ var classicLayoutCss = i$5`:host([layout*=classic]){position:relative;max-width:100%}:host([layout*=classic]) #bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}:host([layout*=classic]) .label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}:host([layout*=classic]) .label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}:host([layout*=classic]) .wrapper{display:flex;flex-direction:row;box-shadow:inset 0 0 0 1px var(--ds-auro-dropdown-trigger-outline-color)}@media(hover: hover){:host([layout*=classic]) .wrapper:hover{cursor:pointer}}:host([layout*=classic]) .triggerContentWrapper{overflow:hidden;flex:1;justify-content:start;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) #showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;padding-right:var(--ds-size-150, 0.75rem)}:host([layout*=classic]) #showStateIcon [auro-icon]{height:var(--ds-size-300, 1.5rem);line-height:var(--ds-size-300, 1.5rem)}:host([layout*=classic]) #showStateIcon[data-expanded=true] [auro-icon]{transform:rotate(-180deg)}:host([layout*=classic]:not([simple])) .triggerContentWrapper{padding-left:var(--ds-size-150, 0.75rem)}:host([layout*=classic][matchwidth]) #bibSizer{width:100%}:host([layout*=classic][disabled]){pointer-events:none}`;
3742
4273
 
3743
- var styleEmphasizedCss = i$5`:host{display:block}.wrapper{display:flex;flex-direction:column}.trigger{flex:1;display:flex;align-items:center;justify-content:center;outline:none}.triggerContentWrapper{flex:1;display:flex;align-items:center;justify-content:center;width:100%}.triggerContent{overflow:hidden;flex:1;display:flex;align-items:center;justify-content:center;text-overflow:ellipsis;white-space:nowrap;width:100%}:host([layout*=emphasized][shape*=pill]:not([layout*=right])) .leftIndent{margin-left:24px;width:calc(100% - 24px)}:host([layout*=emphasized][shape*=pill]:not([layout*=left])) .rightIndent{margin-right:24px;width:calc(100% - 24px)}:host([layout*=emphasized][shape*=pill]:not([layout*=left]):not([layout*=right])) .rightIndent{margin-right:24px;width:calc(100% - 48px)}`;
4274
+ var styleEmphasizedCss = i$5`:host{display:block}.layout-emphasized .chevron,.layout-emphasized-left .chevron,.layout-emphasized-right .chevron{margin-right:var(--ds-size-300, 1.5rem)}.wrapper{display:flex;flex:1;flex-direction:row;align-items:center;justify-content:center;outline:none}.triggerContentWrapper{display:flex;overflow:hidden;width:100%;flex:1;align-items:center;justify-content:center;text-overflow:ellipsis;white-space:nowrap}:host([layout*=emphasized][shape*=pill]:not([layout*=right])) .leftIndent{width:calc(100% - var(--ds-size-300, 1.5rem));margin-left:var(--ds-size-300, 1.5rem)}:host([layout*=emphasized][shape*=pill]:not([layout*=left])) .rightIndent{width:calc(100% - var(--ds-size-300, 1.5rem));margin-right:var(--ds-size-300, 1.5rem)}:host([layout*=emphasized][shape*=pill]:not([layout*=left]):not([layout*=right])) .rightIndent{width:calc(100% - var(--ds-size-600, 3rem));margin-right:var(--ds-size-300, 1.5rem)}`;
3744
4275
 
3745
- var styleSnowflakeCss = i$5`:host{display:block}.wrapper{display:flex;flex-direction:column}.trigger{flex:1;display:flex;align-items:center;justify-content:center;outline:none}.triggerContentWrapper{flex:1;display:flex;align-items:center;justify-content:center;width:100%}.triggerContent{overflow:hidden;flex:1;display:flex;align-items:center;justify-content:center;text-overflow:ellipsis;white-space:nowrap;width:100%}:host([layout*=snowflake]) .leftIndent{margin-left:24px;width:calc(100% - 48px)}:host([layout*=snowflake]) .rightIndent{margin-right:24px;width:calc(100% - 48px)}`;
4276
+ var styleSnowflakeCss = i$5`:host{display:block}.wrapper{display:flex;flex:1;flex-direction:row;align-items:center;justify-content:center;outline:none}.triggerContentWrapper{display:flex;overflow:hidden;width:100%;flex:1;align-items:center;justify-content:center;text-overflow:ellipsis;white-space:nowrap}:host([layout*=snowflake]) .leftIndent{width:calc(100% - var(--ds-size-600, 3rem));margin-left:var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .rightIndent{width:calc(100% - var(--ds-size-600, 3rem));margin-right:var(--ds-size-300, 1.5rem)}.layout-snowflake .chevron,.layout-snowflake-left .chevron,.layout-snowflake-right .chevron{margin-right:var(--ds-size-300, 1.5rem)}`;
3746
4277
 
3747
- var colorCss$4 = i$5`:host([error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error, #e31f26)}:host([onDark]){--ds-auro-helptext-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][error]){--ds-auro-helptext-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8)}.helptext-wrapper{color:var(--ds-auro-helptext-color)}`;
4278
+ var colorCss$5 = i$5`:host([error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error, #e31f26)}:host([onDark]){--ds-auro-helptext-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error-subtle, #fbc6c6)}.helptext-wrapper{color:var(--ds-auro-helptext-color)}`;
3748
4279
 
3749
- var styleCss$5 = i$5`.helptext-wrapper{display:none;font-size:var(--ds-basic-text-body-xs-font-size, 12px);font-weight:var(--ds-basic-text-body-xs-font-weight, 450);letter-spacing:var(--ds-basic-text-body-xs-letter-spacing, 0);line-height:var(--ds-basic-text-body-xs-line-height, 16px)}:host([large]) .helptext-wrapper{font-size:var(--ds-basic-text-body-default-font-size, 16px);font-weight:var(--ds-basic-text-body-default-font-weight, 450);letter-spacing:var(--ds-basic-text-body-default-letter-spacing, 0);line-height:var(--ds-basic-text-body-default-line-height, 24px)}.helptext-wrapper[visible]{display:block}::slotted(*:not(:empty)){margin-top:var(--ds-size-50, 0.25rem);margin-bottom:0}::slotted(p){margin-block:0}`;
4280
+ var styleCss$6 = i$5`.helptext-wrapper{display:none;font-size:12px;font-weight:450;letter-spacing:0;line-height:16px}:host([large]) .helptext-wrapper{font-size:16px;font-weight:450;letter-spacing:0;line-height:24px}.helptext-wrapper[visible]{display:block}::slotted(*:not(:empty)){margin-top:var(--ds-size-50, 0.25rem);margin-bottom:0}::slotted(p){margin-block:0}`;
3750
4281
 
3751
- var tokensCss$3 = i$5`:host{--ds-auro-helptext-color: var(--ds-basic-color-texticon-muted, #676767)}`;
4282
+ var tokensCss$4 = i$5`:host{--ds-auro-helptext-color: var(--ds-basic-color-texticon-muted, #676767)}`;
3752
4283
 
3753
4284
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
3754
4285
  // See LICENSE in the project root for license information.
@@ -3757,7 +4288,7 @@ var tokensCss$3 = i$5`:host{--ds-auro-helptext-color: var(--ds-basic-color-texti
3757
4288
 
3758
4289
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
3759
4290
 
3760
- let AuroLibraryRuntimeUtils$2 = class AuroLibraryRuntimeUtils {
4291
+ let AuroLibraryRuntimeUtils$5 = class AuroLibraryRuntimeUtils {
3761
4292
 
3762
4293
  /* eslint-disable jsdoc/require-param */
3763
4294
 
@@ -3829,7 +4360,7 @@ let AuroLibraryRuntimeUtils$2 = class AuroLibraryRuntimeUtils {
3829
4360
  *
3830
4361
  * @attr { Boolean } large - If declared, make font-size to 1rem(16px).
3831
4362
  */
3832
- class AuroHelpText extends i$2 {
4363
+ let AuroHelpText$1 = class AuroHelpText extends i$2 {
3833
4364
 
3834
4365
  constructor() {
3835
4366
  super();
@@ -3838,14 +4369,14 @@ class AuroHelpText extends i$2 {
3838
4369
  this.onDark = false;
3839
4370
  this.hasTextContent = false;
3840
4371
 
3841
- AuroLibraryRuntimeUtils$2.prototype.handleComponentTagRename(this, 'auro-helptext');
4372
+ AuroLibraryRuntimeUtils$5.prototype.handleComponentTagRename(this, 'auro-helptext');
3842
4373
  }
3843
4374
 
3844
4375
  static get styles() {
3845
4376
  return [
3846
- colorCss$4,
3847
- styleCss$5,
3848
- tokensCss$3
4377
+ colorCss$5,
4378
+ styleCss$6,
4379
+ tokensCss$4
3849
4380
  ];
3850
4381
  }
3851
4382
 
@@ -3894,7 +4425,7 @@ class AuroHelpText extends i$2 {
3894
4425
  *
3895
4426
  */
3896
4427
  static register(name = "auro-helptext") {
3897
- AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroHelpText);
4428
+ AuroLibraryRuntimeUtils$5.prototype.registerComponent(name, AuroHelpText);
3898
4429
  }
3899
4430
 
3900
4431
  updated() {
@@ -3948,11 +4479,11 @@ class AuroHelpText extends i$2 {
3948
4479
  </div>
3949
4480
  `;
3950
4481
  }
3951
- }
4482
+ };
3952
4483
 
3953
- var helpTextVersion = '1.0.0';
4484
+ var helpTextVersion$1 = '1.0.0';
3954
4485
 
3955
- let AuroElement$2 = class AuroElement extends i$2 {
4486
+ let AuroElement$3 = class AuroElement extends i$2 {
3956
4487
  static get properties() {
3957
4488
  return {
3958
4489
 
@@ -3987,18 +4518,21 @@ let AuroElement$2 = class AuroElement extends i$2 {
3987
4518
  }
3988
4519
 
3989
4520
  resetShapeClasses() {
3990
- if (this.shape && this.size) {
3991
- const wrapper = this.shadowRoot.querySelector('.wrapper');
4521
+ const wrapper = this.shadowRoot.querySelector('.wrapper');
3992
4522
 
3993
- if (wrapper) {
3994
- wrapper.classList.forEach((className) => {
3995
- if (className.startsWith('shape-')) {
3996
- wrapper.classList.remove(className);
3997
- }
3998
- });
4523
+ if (wrapper) {
4524
+ wrapper.classList.forEach((className) => {
4525
+ if (className.startsWith('shape-')) {
4526
+ wrapper.classList.remove(className);
4527
+ }
4528
+ });
3999
4529
 
4000
- wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
4001
- }
4530
+ }
4531
+
4532
+ if (this.shape && this.size) {
4533
+ wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
4534
+ } else {
4535
+ wrapper.classList.add('shape-none');
4002
4536
  }
4003
4537
  }
4004
4538
 
@@ -4061,7 +4595,7 @@ let AuroElement$2 = class AuroElement extends i$2 {
4061
4595
  * @event auroDropdown-toggled - Notifies that the visibility of the dropdown bib has changed.
4062
4596
  * @event auroDropdown-idAdded - Notifies consumers that the unique ID for the dropdown bib has been generated.
4063
4597
  */
4064
- class AuroDropdown extends AuroElement$2 {
4598
+ class AuroDropdown extends AuroElement$3 {
4065
4599
  constructor() {
4066
4600
  super();
4067
4601
 
@@ -4070,20 +4604,16 @@ class AuroDropdown extends AuroElement$2 {
4070
4604
  this.matchWidth = false;
4071
4605
  this.noHideOnThisFocusLoss = false;
4072
4606
 
4073
- this.errorMessage = ''; // TODO!
4607
+ this.errorMessage = ''; // TODO - check with Doug if there is still more to do here
4074
4608
 
4075
4609
  // Layout Config
4076
4610
  this.layout = 'classic';
4077
- this.shape = 'rounded';
4611
+ this.shape = 'classic';
4078
4612
  this.size = 'xl';
4079
4613
 
4080
- this.privateDefaults();
4081
- }
4614
+ this.parentBorder = false;
4082
4615
 
4083
- get commonLabelClasses() {
4084
- return {
4085
- // 'withValue': this.value && this.value.length > 0
4086
- };
4616
+ this.privateDefaults();
4087
4617
  }
4088
4618
 
4089
4619
  get commonWrapperClasses() {
@@ -4091,7 +4621,8 @@ class AuroDropdown extends AuroElement$2 {
4091
4621
  'trigger': true,
4092
4622
  'wrapper': true,
4093
4623
  'hasFocus': this.hasFocus,
4094
- 'simple': this.simple
4624
+ 'simple': this.simple,
4625
+ 'parentBorder': this.parentBorder
4095
4626
  };
4096
4627
  }
4097
4628
 
@@ -4102,6 +4633,7 @@ class AuroDropdown extends AuroElement$2 {
4102
4633
  privateDefaults() {
4103
4634
  this.chevron = false;
4104
4635
  this.disabled = false;
4636
+ this.disableFocusTrap = false;
4105
4637
  this.error = false;
4106
4638
  this.inset = false;
4107
4639
  this.rounded = false;
@@ -4143,7 +4675,7 @@ class AuroDropdown extends AuroElement$2 {
4143
4675
  /**
4144
4676
  * @private
4145
4677
  */
4146
- this.runtimeUtils = new AuroLibraryRuntimeUtils$1();
4678
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$2$1();
4147
4679
 
4148
4680
  /**
4149
4681
  * @private
@@ -4168,7 +4700,7 @@ class AuroDropdown extends AuroElement$2 {
4168
4700
  /**
4169
4701
  * @private
4170
4702
  */
4171
- this.helpTextTag = versioning.generateTag('auro-formkit-dropdown-helptext', helpTextVersion, AuroHelpText);
4703
+ this.helpTextTag = versioning.generateTag('auro-formkit-dropdown-helptext', helpTextVersion$1, AuroHelpText$1);
4172
4704
 
4173
4705
  /**
4174
4706
  * @private
@@ -4204,6 +4736,18 @@ class AuroDropdown extends AuroElement$2 {
4204
4736
  this.floater.showBib();
4205
4737
  }
4206
4738
 
4739
+ /**
4740
+ * When bib is open, focus on the first element inside of bib.
4741
+ * If not, trigger element will get focus.
4742
+ */
4743
+ focus() {
4744
+ if (this.isPopoverVisible && this.focusTrap) {
4745
+ this.focusTrap.focusFirstElement();
4746
+ } else {
4747
+ this.trigger.focus();
4748
+ }
4749
+ }
4750
+
4207
4751
  // function to define props used within the scope of this component
4208
4752
  static get properties() {
4209
4753
  return {
@@ -4250,6 +4794,14 @@ class AuroDropdown extends AuroElement$2 {
4250
4794
  reflect: true
4251
4795
  },
4252
4796
 
4797
+ /**
4798
+ * If declare, the focus trap inside of bib will be turned off.
4799
+ */
4800
+ disableFocusTrap: {
4801
+ type: Boolean,
4802
+ reflect: true
4803
+ },
4804
+
4253
4805
  /**
4254
4806
  * @private
4255
4807
  */
@@ -4358,6 +4910,15 @@ class AuroDropdown extends AuroElement$2 {
4358
4910
  reflect: true
4359
4911
  },
4360
4912
 
4913
+ /**
4914
+ * Defines if the trigger should size based on the parent element providing the border UI.
4915
+ * @private
4916
+ */
4917
+ parentBorder: {
4918
+ type: Boolean,
4919
+ reflect: true
4920
+ },
4921
+
4361
4922
  /**
4362
4923
  * If declared, the popover and trigger will be set to the same width.
4363
4924
  */
@@ -4460,7 +5021,7 @@ class AuroDropdown extends AuroElement$2 {
4460
5021
  static get styles() {
4461
5022
  return [
4462
5023
  colorCss$1$2,
4463
- tokensCss$1$1,
5024
+ tokensCss$1$2,
4464
5025
 
4465
5026
  // default layout
4466
5027
  classicColorCss,
@@ -4485,7 +5046,7 @@ class AuroDropdown extends AuroElement$2 {
4485
5046
  *
4486
5047
  */
4487
5048
  static register(name = "auro-dropdown") {
4488
- AuroLibraryRuntimeUtils$1.prototype.registerComponent(name, AuroDropdown);
5049
+ AuroLibraryRuntimeUtils$2$1.prototype.registerComponent(name, AuroDropdown);
4489
5050
  }
4490
5051
 
4491
5052
  /**
@@ -4523,6 +5084,12 @@ class AuroDropdown extends AuroElement$2 {
4523
5084
  this.handleTriggerContentSlotChange();
4524
5085
  }
4525
5086
 
5087
+ if (changedProperties.has('isPopoverVisible')) {
5088
+ this.updateFocusTrap();
5089
+ if (!this.isPopoverVisible && this.hasFocus) {
5090
+ this.trigger.focus();
5091
+ }
5092
+ }
4526
5093
  }
4527
5094
 
4528
5095
  firstUpdated() {
@@ -4588,6 +5155,27 @@ class AuroDropdown extends AuroElement$2 {
4588
5155
  this.hasFocus = true;
4589
5156
  }
4590
5157
 
5158
+ /**
5159
+ * @private
5160
+ */
5161
+ updateFocusTrap() {
5162
+ // If the dropdown is open, create a focus trap and focus the first element
5163
+ if (this.isPopoverVisible && !this.disableFocusTrap) {
5164
+ this.focusTrap = new FocusTrap(this.bibContent);
5165
+ this.focusTrap.focusFirstElement();
5166
+ return;
5167
+ }
5168
+
5169
+ // Guard Clause: Ensure there is a focus trap currently active before continuing
5170
+ if (!this.focusTrap) {
5171
+ return;
5172
+ }
5173
+
5174
+ // If the dropdown is not open, disconnect the focus trap if it exists
5175
+ this.focusTrap.disconnect();
5176
+ this.focusTrap = undefined;
5177
+ }
5178
+
4591
5179
  /**
4592
5180
  * Function to support @focusout event.
4593
5181
  * @private
@@ -4748,14 +5336,13 @@ class AuroDropdown extends AuroElement$2 {
4748
5336
  * @returns {void}
4749
5337
  */
4750
5338
  handleTriggerContentSlotChange(event) {
4751
-
4752
5339
  this.floater.handleTriggerTabIndex();
4753
5340
 
4754
5341
  // Get the trigger
4755
5342
  const trigger = this.shadowRoot.querySelector('#trigger');
4756
5343
 
4757
5344
  // Get the trigger slot
4758
- const triggerSlot = this.shadowRoot.querySelector('.triggerContent slot');
5345
+ const triggerSlot = this.shadowRoot.querySelector('.triggerContentWrapper slot');
4759
5346
 
4760
5347
  // If there's a trigger slot
4761
5348
  if (triggerSlot) {
@@ -4818,40 +5405,15 @@ class AuroDropdown extends AuroElement$2 {
4818
5405
  *
4819
5406
  * @private
4820
5407
  * @method handleDefaultSlot
4821
- * @param {Event} event - The event object representing the slot change.
4822
5408
  * @fires Function#onSlotChange - Optional callback invoked when the slot content changes.
4823
5409
  */
4824
- handleDefaultSlot(event) {
4825
- [...event.target.assignedNodes()].forEach((node) => this.bibContent.append(node));
5410
+ handleDefaultSlot() {
4826
5411
 
4827
5412
  if (this.onSlotChange) {
4828
5413
  this.onSlotChange();
4829
5414
  }
4830
5415
  }
4831
5416
 
4832
- /**
4833
- * @private
4834
- * @method handleLabelSlotChange
4835
- * @param {event} event - The event object representing the slot change.
4836
- * @description Handles the slot change event for the label slot.
4837
- */
4838
- handleLabelSlotChange (event) {
4839
-
4840
- // Get the nodes from the event
4841
- const nodes = event.target.assignedNodes();
4842
-
4843
- // Guard clause for no nodes
4844
- if (!nodes) {
4845
- return;
4846
- }
4847
-
4848
- // Convert the nodes to a measurable array so we can get the length
4849
- const nodesArr = Array.from(nodes);
4850
-
4851
- // If the nodes array has a length, the dropdown is labeled
4852
- this.labeled = nodesArr.length > 0;
4853
- }
4854
-
4855
5417
  /**
4856
5418
  * Returns HTML for the common portion of the layouts.
4857
5419
  * @private
@@ -4866,24 +5428,20 @@ class AuroDropdown extends AuroElement$2 {
4866
5428
  class="${e(this.commonWrapperClasses)}" part="wrapper"
4867
5429
  tabindex="${this.tabIndex}"
4868
5430
  role="${o(this.triggerContentFocusable ? undefined : this.a11yRole)}"
4869
- aria-expanded="${o(this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
4870
- aria-controls="${o(this.triggerContentFocusable ? undefined : this.dropdownId)}"
5431
+ aria-expanded="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
5432
+ aria-controls="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
4871
5433
  aria-labelledby="${o(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
4872
5434
  @focusin="${this.handleFocusin}"
4873
5435
  @blur="${this.handleFocusOut}">
4874
- <div class="triggerContentWrapper">
4875
- <label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
4876
- <slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
4877
- </label>
4878
- <div class="triggerContent">
4879
- <slot
4880
- name="trigger"
4881
- @slotchange="${this.handleTriggerContentSlotChange}"></slot>
4882
- </div>
5436
+ <div class="triggerContentWrapper" id="triggerLabel">
5437
+ <slot
5438
+ name="trigger"
5439
+ @slotchange="${this.handleTriggerContentSlotChange}"></slot>
4883
5440
  </div>
4884
- ${this.chevron || this.common ? u`
5441
+ ${this.chevron ? u`
4885
5442
  <div
4886
5443
  id="showStateIcon"
5444
+ class="chevron"
4887
5445
  part="chevron">
4888
5446
  <${this.iconTag}
4889
5447
  category="interface"
@@ -4898,17 +5456,18 @@ class AuroDropdown extends AuroElement$2 {
4898
5456
  <div class="${e(helpTextClasses)}">
4899
5457
  <slot name="helpText"></slot>
4900
5458
  </div>
4901
- <div class="slotContent">
4902
- <slot @slotchange="${this.handleDefaultSlot}"></slot>
4903
- </div>
4904
5459
  <div id="bibSizer" part="size"></div>
4905
5460
  <${this.dropdownBibTag}
4906
5461
  id="bib"
5462
+ shape="${this.shape}"
4907
5463
  ?data-show="${this.isPopoverVisible}"
4908
5464
  ?isfullscreen="${this.isBibFullscreen}"
4909
5465
  ?common="${this.common}"
4910
5466
  ?rounded="${this.common || this.rounded}"
4911
5467
  ?inset="${this.common || this.inset}">
5468
+ <div class="slotContent">
5469
+ <slot @slotchange="${this.handleDefaultSlot}"></slot>
5470
+ </div>
4912
5471
  </${this.dropdownBibTag}>
4913
5472
  </div>
4914
5473
  `;
@@ -4920,67 +5479,14 @@ class AuroDropdown extends AuroElement$2 {
4920
5479
  * @returns {html} - Returns HTML for the classic layout.
4921
5480
  */
4922
5481
  renderLayoutClassic() {
5482
+ // TODO: check with Doug why this was never used?
4923
5483
  const helpTextClasses = {
4924
- 'helpText': true,
4925
- 'leftIndent': false,
4926
- 'rightIndent': false
5484
+ 'helpText': true
4927
5485
  };
4928
5486
 
4929
5487
  return u`
4930
5488
  ${this.renderBasicHtml(helpTextClasses)}
4931
5489
  `;
4932
- // return html`
4933
- // <div>
4934
- // <div
4935
- // id="trigger"
4936
- // class="trigger"
4937
- // part="trigger"
4938
- // tabindex="${this.tabIndex}"
4939
- // ?showBorder="${this.showTriggerBorders}"
4940
- // role="${ifDefined(this.triggerContentFocusable ? undefined : this.a11yRole)}"
4941
- // aria-expanded="${ifDefined(this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
4942
- // aria-controls="${ifDefined(this.triggerContentFocusable ? undefined : this.dropdownId)}"
4943
- // aria-labelledby="${ifDefined(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
4944
- // >
4945
- // <div class="triggerContentWrapper">
4946
- // <label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
4947
- // <slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
4948
- // </label>
4949
- // <div class="triggerContent">
4950
- // <slot
4951
- // name="trigger"
4952
- // @slotchange="${this.handleTriggerContentSlotChange}"></slot>
4953
- // </div>
4954
- // </div>
4955
- // ${this.chevron || this.common ? html`
4956
- // <div
4957
- // id="showStateIcon"
4958
- // part="chevron">
4959
- // <${this.iconTag}
4960
- // category="interface"
4961
- // name="chevron-down"
4962
- // ?onDark="${this.onDark}"
4963
- // variant="${this.disabled ? 'disabled' : 'muted'}">
4964
- // >
4965
- // </${this.iconTag}>
4966
- // </div>
4967
- // ` : undefined }
4968
- // </div>
4969
- // <div class="slotContent">
4970
- // <slot @slotchange="${this.handleDefaultSlot}"></slot>
4971
- // </div>
4972
- // <div id="bibSizer" part="size"></div>
4973
- // <${this.dropdownBibTag}
4974
- // id="bib"
4975
- // ?data-show="${this.isPopoverVisible}"
4976
- // ?isfullscreen="${this.isBibFullscreen}"
4977
- // ?common="${this.common}"
4978
- // ?rounded="${this.common || this.rounded}"
4979
- // ?inset="${this.common || this.inset}"
4980
- // >
4981
- // </${this.dropdownBibTag}>
4982
- // </div>
4983
- // `;
4984
5490
  }
4985
5491
 
4986
5492
  /**
@@ -5047,9 +5553,9 @@ class AuroDropdown extends AuroElement$2 {
5047
5553
 
5048
5554
  var dropdownVersion = '3.0.0';
5049
5555
 
5050
- var colorCss$1$1 = i$5`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
5556
+ var colorCss$3$1 = i$5`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
5051
5557
 
5052
- var styleCss$2$1 = i$5`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column}#header{display:flex;width:100%;min-height:var(--ds-size-1000, 5rem);box-sizing:border-box;align-items:end;padding-top:var(--ds-size-400, 2rem);padding-right:var(--ds-size-700, 3.5rem);padding-left:var(--ds-size-200, 1rem);pointer-events:none}#subheader{width:100%}#subheader ::slotted([auro-input]){padding:0 var(--ds-size-200, 1rem)}#closeButton{position:absolute;top:var(--ds-size-400, 2rem);right:var(--ds-size-200, 1rem);border:none;background-color:transparent;cursor:pointer}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1 1 100%}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{position:absolute;right:0;bottom:0;left:0;padding:var(--ds-size-200, 1rem)}`;
5558
+ var styleCss$4$1 = i$5`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column}#header{display:flex;width:100%;min-height:var(--ds-size-1000, 5rem);box-sizing:border-box;align-items:end;padding-top:var(--ds-size-400, 2rem);padding-right:var(--ds-size-700, 3.5rem);padding-left:var(--ds-size-200, 1rem);pointer-events:none}#subheader{width:100%}#subheader ::slotted([auro-input]){box-sizing:border-box;padding:0 var(--ds-size-200, 1rem)}#closeButton{position:absolute;top:var(--ds-size-400, 2rem);right:var(--ds-size-200, 1rem);border:none;background-color:transparent;cursor:pointer}#bodyContainer{position:relative;overflow:auto;flex:1 1 100%}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{position:absolute;right:0;bottom:0;left:0;padding:var(--ds-size-200, 1rem)}`;
5053
5559
 
5054
5560
  var tokenCss = i$5`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-footer-container-color: var(--ds-basic-color-surface-default, #ffffff)}`;
5055
5561
 
@@ -5060,7 +5566,7 @@ var tokenCss = i$5`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-
5060
5566
 
5061
5567
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
5062
5568
 
5063
- class AuroLibraryRuntimeUtils {
5569
+ let AuroLibraryRuntimeUtils$3 = class AuroLibraryRuntimeUtils {
5064
5570
 
5065
5571
  /* eslint-disable jsdoc/require-param */
5066
5572
 
@@ -5121,7 +5627,7 @@ class AuroLibraryRuntimeUtils {
5121
5627
 
5122
5628
  return elemTag === tag || elem.hasAttribute(tag);
5123
5629
  }
5124
- }
5630
+ };
5125
5631
 
5126
5632
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
5127
5633
  // See LICENSE in the project root for license information.
@@ -5163,85 +5669,1129 @@ class AuroDependencyVersioning {
5163
5669
  }
5164
5670
  }
5165
5671
 
5166
- // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5167
- // See LICENSE in the project root for license information.
5168
-
5672
+ /**
5673
+ * Private module-level WeakMap to hold MutationObservers for each host element.
5674
+ */
5675
+ const _observers = new WeakMap();
5169
5676
 
5170
5677
  /**
5171
- * @attr {Boolean} hidden - If present, the component will be hidden both visually and from screen readers
5172
- * @attr {Boolean} hiddenVisually - If present, the component will be hidden visually, but still read by screen readers
5173
- * @attr {Boolean} hiddenAudible - If present, the component will be hidden from screen readers, but seen visually
5678
+ * Private module-level WeakMap to hold attribute matchers and targets for each host element.
5679
+ * Structure: {
5680
+ * host: {
5681
+ * matchers: Set<Function>,
5682
+ * targets: Map<HTMLElement, Map<Function, {removeOriginal: boolean, currentAttributes: Map<string, string>}>>
5683
+ * }
5684
+ * }
5174
5685
  */
5686
+ const _transportConfig = new WeakMap();
5175
5687
 
5176
- let AuroElement$1 = class AuroElement extends i$2 {
5688
+ /**
5689
+ * Transfers all matching attributes from a host element to a target element and observes for future changes.
5690
+ *
5691
+ * @param {Object} params - The parameters for the function.
5692
+ * @param {HTMLElement} params.host - The host element from which attributes will be transported.
5693
+ * @param {HTMLElement} params.target - The target element to which attributes will be transported.
5694
+ * @param {boolean} [params.removeOriginal=true] - Whether to remove the attributes from the host element.
5695
+ * @param {boolean} [params.observe=true] - Whether to attach a MutationObserver to the host element.
5696
+ * @returns {Function} A function to detach the observer when no longer needed.
5697
+ * @throws {TypeError} If the host or target parameters are not instances of HTMLElement.
5698
+ */
5699
+ const transportAttributes = ({ host, target, match, removeOriginal = true }) => {
5700
+ // Guard Clause: Ensure host is valid HTMLElement instance
5701
+ if (typeof host !== 'object' || !(host instanceof HTMLElement)) {
5702
+ throw new TypeError('a11yUtilities.js | transportAttributes | The "host" parameter must be an instance of HTMLElement.');
5703
+ }
5177
5704
 
5178
- // function to define props used within the scope of this component
5179
- static get properties() {
5180
- return {
5181
- hidden: { type: Boolean,
5182
- reflect: true },
5183
- hiddenVisually: { type: Boolean,
5184
- reflect: true },
5185
- hiddenAudible: { type: Boolean,
5186
- reflect: true },
5187
- };
5705
+ // Guard Clause: Ensure target is valid HTMLElement instance
5706
+ if (typeof target !== 'object' || !(target instanceof HTMLElement)) {
5707
+ throw new TypeError('a11yUtilities.js | transportAttributes | The "target" parameter must be an instance of HTMLElement.');
5188
5708
  }
5189
5709
 
5190
- /**
5191
- * @private Function that determines state of aria-hidden
5192
- */
5193
- hideAudible(value) {
5194
- if (value) {
5195
- return 'true'
5196
- }
5710
+ // Guard Clause: Ensure match is a function
5711
+ if (typeof match !== 'function') {
5712
+ throw new TypeError('a11yUtilities.js | transportAttributes | The "match" parameter must be a function.');
5713
+ }
5197
5714
 
5198
- return 'false'
5715
+ // Guard Clause: Ensure removeOriginal is a boolean
5716
+ if (typeof removeOriginal !== 'boolean') {
5717
+ throw new TypeError('a11yUtilities.js | transportAttributes | The "removeOriginal" parameter must be a boolean.');
5199
5718
  }
5719
+
5720
+ // Register this transport and get cleanup function
5721
+ return _registerTransport({
5722
+ host,
5723
+ target,
5724
+ matcher: match,
5725
+ removeOriginal
5726
+ });
5200
5727
  };
5201
5728
 
5202
- var error$1 = {"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>"};
5203
-
5204
- /* eslint-disable no-underscore-dangle, jsdoc/no-undefined-types, jsdoc/require-param-description */
5205
-
5206
- const _fetchMap$1 = new Map();
5207
-
5208
5729
  /**
5209
- * A callback to parse Response body.
5210
- *
5211
- * @callback ResponseParser
5212
- * @param {Fetch.Response} response
5213
- * @returns {Promise}
5730
+ * Registers a matcher and target for a host element and attaches an observer if needed.
5731
+ *
5732
+ * @param {Object} params - The parameters object.
5733
+ * @param {HTMLElement} params.host - The host element to observe.
5734
+ * @param {HTMLElement} params.target - The target element to receive attributes.
5735
+ * @param {Function} params.matcher - Function that determines which attributes to transport.
5736
+ * @param {boolean} [params.removeOriginal=true] - Whether to remove original attributes.
5737
+ * @param {boolean} [params.observe=true] - Whether to observe for attribute changes.
5738
+ * @returns {Function} Function to detach the specific matcher and target pairing.
5739
+ * @private
5214
5740
  */
5741
+ const _registerTransport = ({ host, target, matcher, removeOriginal = true }) => {
5742
+ // Initialize config for this host if it doesn't exist
5743
+ if (!_transportConfig.has(host)) {
5744
+ _transportConfig.set(host, {
5745
+ matchers: new Set(),
5746
+ targets: new Map()
5747
+ });
5748
+ }
5749
+
5750
+ const config = _transportConfig.get(host);
5751
+
5752
+ // Add the matcher to the set of matchers for this host
5753
+ config.matchers.add(matcher);
5754
+
5755
+ // Initialize target entry if it doesn't exist
5756
+ if (!config.targets.has(target)) {
5757
+ config.targets.set(target, new Map());
5758
+ }
5759
+
5760
+ // Store the matcher with its removeOriginal setting for this target
5761
+ config.targets.get(target).set(matcher, {
5762
+ removeOriginal,
5763
+ currentAttributes: new Map()
5764
+ });
5765
+
5766
+ // Perform initial attribute transport
5767
+ _transportAttributes({ host, target, matcher, removeOriginal });
5768
+
5769
+ // Attach observer
5770
+ _attachObserver(host);
5771
+
5772
+ // Return cleanup function and utility functions
5773
+ return {
5774
+ cleanup: () => _cleanupTransport(host, target, matcher),
5775
+ getObservedAttributes: () => _getObservedAttributes(host, target, matcher),
5776
+ getObservedAttribute: (attr) => _getObservedAttribute(host, target, matcher, attr),
5777
+ }
5778
+ };
5215
5779
 
5216
5780
  /**
5217
- * A minimal in-memory map to de-duplicate Fetch API media requests.
5218
- *
5219
- * @param {String} uri
5220
- * @param {Object} [options={}]
5221
- * @param {ResponseParser} [options.responseParser=(response) => response.text()]
5222
- * @returns {Promise}
5781
+ * Cleans up resources associated with a specific matcher and target for a host element.
5782
+ *
5783
+ * @param {HTMLElement} host - The host element
5784
+ * @param {HTMLElement} target - The target element
5785
+ * @param {Function} matcher - The matcher function
5786
+ * @private
5223
5787
  */
5224
- const cacheFetch$1 = (uri, options = {}) => {
5225
- const responseParser = options.responseParser || ((response) => response.text());
5226
- if (!_fetchMap$1.has(uri)) {
5227
- _fetchMap$1.set(uri, fetch(uri).then(responseParser));
5788
+ const _cleanupTransport = (host, target, matcher) => {
5789
+ const config = _transportConfig.get(host);
5790
+ if (!config) return;
5791
+
5792
+ // Remove this matcher from this target
5793
+ const targetMatchers = config.targets.get(target);
5794
+ if (targetMatchers) {
5795
+ targetMatchers.delete(matcher);
5796
+
5797
+ // If this target has no more matchers, remove it
5798
+ if (targetMatchers.size === 0) {
5799
+ config.targets.delete(target);
5800
+ }
5801
+ }
5802
+
5803
+ // Check if this matcher is still used by any target
5804
+ let matcherStillUsed = false;
5805
+ for (const matcherMap of config.targets.values()) {
5806
+ if (matcherMap.has(matcher)) {
5807
+ matcherStillUsed = true;
5808
+ break;
5809
+ }
5810
+ }
5811
+
5812
+ // If not used anymore, remove from matchers set
5813
+ if (!matcherStillUsed) {
5814
+ config.matchers.delete(matcher);
5815
+ }
5816
+
5817
+ // If no more targets or matchers, detach observer
5818
+ if (config.targets.size === 0 || config.matchers.size === 0) {
5819
+ _detachObserver(host);
5228
5820
  }
5229
- return _fetchMap$1.get(uri);
5230
5821
  };
5231
5822
 
5232
- var styleCss$1$1 = 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}`;
5233
-
5234
- // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5235
- // See LICENSE in the project root for license information.
5236
-
5237
-
5238
- // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
5823
+ /**
5824
+ * Generic function to transport attributes from a host element to a target element.
5825
+ *
5826
+ * @param {Object} params - The parameters object.
5827
+ * @param {HTMLElement} params.host - The host element from which to transport attributes.
5828
+ * @param {HTMLElement} params.target - The target element to which attributes will be transported.
5829
+ * @param {Function} params.matcher - Function that takes an attribute name and returns true if it should be transported.
5830
+ * @param {boolean} [params.removeOriginal=true] - Whether to remove original attributes from host.
5831
+ * @returns {void}
5832
+ * @private
5833
+ */
5834
+ const _transportAttributes = ({ host, target, matcher, removeOriginal = true }) => {
5835
+ // Get a list of all matching attributes on the host element and their values
5836
+ const matchingAttributes = host.getAttributeNames()
5837
+ .filter(attr => matcher(attr))
5838
+ .reduce((acc, attr) => {
5839
+ acc[attr] = host.getAttribute(attr);
5840
+ return acc;
5841
+ }, {});
5842
+
5843
+ // Move matching attributes to the target element, removing them from the host if removeOriginal is true
5844
+ Object.entries(matchingAttributes).forEach(([key, value]) => {
5845
+ _setObservedAttribute(host, target, matcher, key, value);
5846
+ target.setAttribute(key, value);
5847
+ if (removeOriginal) {
5848
+ host.removeAttribute(key);
5849
+ }
5850
+ });
5851
+ };
5852
+
5853
+ /**
5854
+ * Attaches a MutationObserver to the host element to monitor attribute changes.
5855
+ *
5856
+ * @param {HTMLElement} host - The element to observe for attribute changes.
5857
+ * @returns {MutationObserver} The observer instance.
5858
+ * @private
5859
+ */
5860
+ const _attachObserver = (host) => {
5861
+ // If an observer for this host already exists, return it
5862
+ if (_observers.has(host)) {
5863
+ return _observers.get(host);
5864
+ }
5865
+
5866
+ // Create a new MutationObserver
5867
+ const observer = new MutationObserver((mutations) => {
5868
+ const config = _transportConfig.get(host);
5869
+ if (!config) return;
5870
+
5871
+ // For each mutation affecting attributes
5872
+ mutations
5873
+ .filter(mutation => mutation.type === 'attributes')
5874
+ .forEach(mutation => {
5875
+ const attributeName = mutation.attributeName;
5876
+
5877
+ // Find matchers that care about this attribute
5878
+ for (const matcher of config.matchers) {
5879
+ if (matcher(attributeName)) {
5880
+ // For each target that uses this matcher
5881
+ for (const [target, matcherConfigs] of config.targets.entries()) {
5882
+ if (matcherConfigs.has(matcher)) {
5883
+ const { removeOriginal } = matcherConfigs.get(matcher);
5884
+ _transportAttributes({
5885
+ host,
5886
+ target,
5887
+ matcher,
5888
+ removeOriginal
5889
+ });
5890
+ }
5891
+ }
5892
+ }
5893
+ }
5894
+ });
5895
+ });
5896
+
5897
+ // Start observing attribute changes
5898
+ observer.observe(host, { attributes: true });
5899
+
5900
+ // Store the observer
5901
+ _observers.set(host, observer);
5902
+
5903
+ return observer;
5904
+ };
5905
+
5906
+ /**
5907
+ * Detaches and cleans up the MutationObserver for a given host element.
5908
+ *
5909
+ * @param {HTMLElement} host - The element whose observer should be detached.
5910
+ * @private
5911
+ */
5912
+ const _detachObserver = (host) => {
5913
+ if (_observers.has(host)) {
5914
+ const observer = _observers.get(host);
5915
+ observer.disconnect();
5916
+ _observers.delete(host);
5917
+ }
5918
+
5919
+ // Clean up the transport config as well
5920
+ if (_transportConfig.has(host)) {
5921
+ _transportConfig.delete(host);
5922
+ }
5923
+ };
5924
+
5925
+ /**
5926
+ * Gets the matcher configuration for a specific host, target, and matcher
5927
+ * @param {HTMLElement} host - The host element
5928
+ * @param {HTMLElement} target - The target element
5929
+ * @param {Function} matcher - The matcher function
5930
+ * @returns {Object|undefined} The matcher configuration if found
5931
+ * @private
5932
+ */
5933
+ const _getMatcherConfig = (host, target, matcher) => {
5934
+ const config = _transportConfig.get(host);
5935
+ if (!config) return undefined;
5936
+
5937
+ const targetMatchers = config.targets.get(target);
5938
+ if (!targetMatchers) return undefined;
5939
+
5940
+ return targetMatchers.get(matcher);
5941
+ };
5942
+
5943
+ /**
5944
+ * Sets an observed attribute value
5945
+ * @param {HTMLElement} host - The host element
5946
+ * @param {HTMLElement} target - The target element
5947
+ * @param {Function} matcher - The matcher function
5948
+ * @param {string} key - The attribute name
5949
+ * @param {string} value - The attribute value
5950
+ * @private
5951
+ */
5952
+ const _setObservedAttribute = (host, target, matcher, key, value) => {
5953
+ const matcherConfig = _getMatcherConfig(host, target, matcher);
5954
+ if (matcherConfig) {
5955
+ matcherConfig.currentAttributes.set(key, value);
5956
+ }
5957
+ };
5958
+
5959
+ const _getObservedAttribute = (host, target, matcher, attr) => {
5960
+ const matcherConfig = _getMatcherConfig(host, target, matcher);
5961
+ if (matcherConfig) return matcherConfig.currentAttributes.get(attr);
5962
+ return undefined;
5963
+ };
5964
+
5965
+ const _getObservedAttributes = (host, target, matcher) => {
5966
+ const matcherConfig = _getMatcherConfig(host, target, matcher);
5967
+ if (matcherConfig) return Array.from(matcherConfig.currentAttributes.entries());
5968
+ return [];
5969
+ };
5970
+
5971
+ const _matchers = {
5972
+ 'aria-': attr => attr.startsWith('aria-'),
5973
+ 'role': attr => attr.match(/^role$/)
5974
+ };
5975
+
5976
+ const transportAllA11yAttributes = ({ host, target, removeOriginal = true }) => {
5977
+ return transportAttributes({
5978
+ host,
5979
+ target,
5980
+ match: attr => {
5981
+ for (const key in _matchers) {
5982
+ if (_matchers[key](attr)) return true;
5983
+ }
5984
+ return false;
5985
+ },
5986
+ removeOriginal
5987
+ });
5988
+ };
5989
+
5990
+ let AuroElement$1 = class AuroElement extends i$2 {
5991
+
5992
+ /**
5993
+ * @type {Object} return object from transportAttributes via a11yUtilities
5994
+ * @property {Function} cleanup - Function to clean up the attribute watcher.
5995
+ * @property {Function} getCurrentAttributes - Function to get the current attributes being watched and their values.
5996
+ * @property {Function} getObservedAttribute - Function to get the value of a specific observed attribute by name.
5997
+ * @private
5998
+ */
5999
+ attributeWatcher;
6000
+
6001
+ static get properties() {
6002
+ return {
6003
+
6004
+ /**
6005
+ * Defines the layout of an element.
6006
+ * @default {'default'}
6007
+ */
6008
+ layout: {
6009
+ type: String,
6010
+ attribute: "layout",
6011
+ reflect: true
6012
+ },
6013
+
6014
+ /**
6015
+ * Defines the shape of an element.
6016
+ * @property {'default', 'rounded', 'pill', 'circle'}
6017
+ * @default {'default'}
6018
+ */
6019
+ shape: {
6020
+ type: String,
6021
+ attribute: "shape",
6022
+ reflect: true
6023
+ },
6024
+
6025
+ /**
6026
+ * Defines the size of an element.
6027
+ * @property {'xs', 'sm', 'md', 'lg', 'xl'}
6028
+ * @default {'md'}
6029
+ */
6030
+ size: {
6031
+ type: String,
6032
+ attribute: "size",
6033
+ reflect: true
6034
+ },
6035
+
6036
+ /**
6037
+ * This Boolean attribute lets you specify that the element should be rendered in dark mode.
6038
+ * @default {false}
6039
+ */
6040
+ onDark: {
6041
+ type: Boolean,
6042
+ attribute: "ondark",
6043
+ reflect: true
6044
+ },
6045
+
6046
+ /**
6047
+ * A reference to the wrapper element in the shadow DOM.
6048
+ * This is used to apply layout and shape classes dynamically.
6049
+ * @type {HTMLElement|null}
6050
+ * @default {null}
6051
+ * @private
6052
+ */
6053
+ wrapper: {
6054
+ attribute: false,
6055
+ reflect: false
6056
+ }
6057
+ };
6058
+ }
6059
+
6060
+
6061
+
6062
+ resetShapeClasses() {
6063
+ if (this.shape && this.size) {
6064
+
6065
+ if (this.wrapper) {
6066
+ this.wrapper.classList.forEach((className) => {
6067
+ if (className.startsWith('shape-')) {
6068
+ this.wrapper.classList.remove(className);
6069
+ }
6070
+ });
6071
+
6072
+ this.wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
6073
+ }
6074
+ }
6075
+ }
6076
+
6077
+ resetLayoutClasses() {
6078
+ if (this.layout) {
6079
+ if (this.wrapper) {
6080
+ this.wrapper.classList.forEach((className) => {
6081
+ if (className.startsWith('layout-')) {
6082
+ this.wrapper.classList.remove(className);
6083
+ }
6084
+ });
6085
+
6086
+ this.wrapper.classList.add(`layout-${this.layout.toLowerCase()}`);
6087
+ }
6088
+ }
6089
+ }
6090
+
6091
+ updateComponentArchitecture() {
6092
+ this.resetLayoutClasses();
6093
+ this.resetShapeClasses();
6094
+ }
6095
+
6096
+ updated(changedProperties) {
6097
+ if (changedProperties.has('layout') || changedProperties.has('shape') || changedProperties.has('size')) {
6098
+ this.updateComponentArchitecture();
6099
+ }
6100
+ }
6101
+
6102
+ firstUpdated() {
6103
+ super.firstUpdated();
6104
+
6105
+ // Set a reference to the wrapper element in the shadow DOM
6106
+ this.wrapper = this.shadowRoot.querySelector('.wrapper');
6107
+
6108
+ // Initialize the transportation of ARIA attributes to the target element and get the disconnect function for cleanup
6109
+ this.attributeWatcher = transportAllA11yAttributes({ host: this, target: this.shadowRoot.querySelector('.wrapper') });
6110
+ }
6111
+
6112
+ disconnectedCallback() {
6113
+ super.disconnectedCallback();
6114
+
6115
+ // Cleanup the ARIA observer if it exists
6116
+ if (this.attributeWatcher) {
6117
+ this.attributeWatcher.cleanup();
6118
+ this.attributeWatcher = null;
6119
+ }
6120
+ }
6121
+
6122
+ // Try to render the defined `this.layout` layout. If that fails, fall back to the default layout.
6123
+ // This will catch if an invalid layout value is passed in and render the default layout if so.
6124
+ render() {
6125
+ try {
6126
+ return this.renderLayout();
6127
+ } catch (error) {
6128
+ // failed to get the defined layout
6129
+ console.error('Failed to get the defined layout - using the default layout', error); // eslint-disable-line no-console
6130
+
6131
+ // fallback to the default layout
6132
+ return this.getLayout('default');
6133
+ }
6134
+ }
6135
+ };
6136
+
6137
+ var styleCss$3$1 = i$5`:focus:not(:focus-visible){outline:3px solid transparent}.util_insetNone{padding:0}.util_insetXxxs{padding:.125rem}.util_insetXxxs--stretch{padding:.25rem .125rem}.util_insetXxxs--squish{padding:0 .125rem}.util_insetXxs{padding:.25rem}.util_insetXxs--stretch{padding:.375rem .25rem}.util_insetXxs--squish{padding:.125rem .25rem}.util_insetXs{padding:.5rem}.util_insetXs--stretch{padding:.75rem .5rem}.util_insetXs--squish{padding:.25rem .5rem}.util_insetSm{padding:.75rem}.util_insetSm--stretch{padding:1.125rem .75rem}.util_insetSm--squish{padding:.375rem .75rem}.util_insetMd{padding:1rem}.util_insetMd--stretch{padding:1.5rem 1rem}.util_insetMd--squish{padding:.5rem 1rem}.util_insetLg{padding:1.5rem}.util_insetLg--stretch{padding:2.25rem 1.5rem}.util_insetLg--squish{padding:.75rem 1.5rem}.util_insetXl{padding:2rem}.util_insetXl--stretch{padding:3rem 2rem}.util_insetXl--squish{padding:1rem 2rem}.util_insetXxl{padding:3rem}.util_insetXxl--stretch{padding:4.5rem 3rem}.util_insetXxl--squish{padding:1.5rem 3rem}.util_insetXxxl{padding:4rem}.util_insetXxxl--stretch{padding:6rem 4rem}.util_insetXxxl--squish{padding:2rem 4rem}:host([fluid]) .auro-button,:host([fluid=true]) .auro-button{min-width:auto;width:100%}:host([variant=flat]){display:inline-block}::slotted(svg){vertical-align:middle}slot{pointer-events:none}.auro-button{position:relative;padding:0 var(--ds-size-300, 1.5rem);cursor:pointer;border-width:1px;border-style:solid;border-radius:var(--ds-border-radius, 0.375rem);overflow:hidden;text-overflow:ellipsis;user-select:none;white-space:nowrap;min-height:var(--ds-size-600, 3rem);max-height:var(--ds-size-600, 3rem);display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--ds-size-100, 0.5rem);margin:0;-webkit-touch-callout:none;-webkit-user-select:none;transition:padding 300ms ease-out}.auro-button:active{transform:scale(0.95)}.auro-button:focus-visible,.auro-button:focus{outline:none;outline-style:solid;outline-width:var(--ds-size-50, 0.25rem);outline-offset:calc(var(--ds-size-50, 0.25rem)*-1)}.auro-button:focus-visible:not([variant=secondary]):not([variant=tertiary]),.auro-button:focus:not([variant=secondary]):not([variant=tertiary]){outline-width:calc(var(--ds-size-50, 0.25rem) - 1px)}.auro-button.loading{cursor:not-allowed}.auro-button.loading *:not([auro-loader]){visibility:hidden}@media screen and (min-width: 576px){.auro-button{min-width:8.75rem;width:auto}}.auro-button:disabled{cursor:not-allowed;transform:unset}.auro-button[variant=secondary]:disabled{cursor:not-allowed;transform:unset}.auro-button[variant=tertiary]:disabled{cursor:not-allowed;transform:unset}.auro-button[variant=ghost]:disabled{cursor:not-allowed;transform:unset}.auro-button[onDark]:disabled{cursor:not-allowed;transform:unset}.auro-button[onDark][variant=secondary]:disabled{cursor:not-allowed;transform:unset}@media(hover: hover){.auro-button[onDark][variant=tertiary]:active,.auro-button[onDark][variant=tertiary]:hover{box-shadow:none}}.auro-button[onDark][variant=tertiary]:active{box-shadow:none}.auro-button[onDark][variant=tertiary]:disabled{cursor:not-allowed;transform:unset}.auro-button.icon-only ::slotted(:not(auro-icon):not([auro-icon])){display:none}.auro-button--slim{min-width:unset;min-height:calc(var(--ds-size-500, 2.5rem) - var(--ds-size-50, 0.25rem));max-height:calc(var(--ds-size-500, 2.5rem) - var(--ds-size-50, 0.25rem))}.auro-button--iconOnly{padding:0 var(--ds-size-100, 0.5rem);border-radius:100px;min-width:unset;height:var(--ds-size-600, 3rem);width:var(--ds-size-500, 2.5rem)}.auro-button--iconOnly ::slotted(auro-icon),.auro-button--iconOnly ::slotted([auro-icon]){--ds-auro-icon-size:var(--ds-size-300, 1.5rem)}.auro-button--iconOnly:not(.auro-button--rounded):focus-visible:not([variant=secondary]):not([variant=tertiary]):not([variant=flat]),.auro-button--iconOnly:not(.auro-button--rounded):focus:not([variant=secondary]):not([variant=tertiary]):not([variant=flat]){outline-width:1px;outline-offset:-2px}.auro-button--iconOnlySlim{padding:0 var(--ds-size-50, 0.25rem);height:calc(var(--ds-size-400, 2rem) + var(--ds-size-50, 0.25rem));width:calc(var(--ds-size-300, 1.5rem) + var(--ds-size-50, 0.25rem))}.auro-button--iconOnlySlim ::slotted(auro-icon),.auro-button--iconOnlySlim ::slotted([auro-icon]){--ds-auro-icon-size:calc(var(--ds-size-200, 1rem) + var(--ds-size-50, 0.25rem))}.auro-button--rounded{border-radius:100px;box-shadow:var(--ds-elevation-300, 0px 0px 15px rgba(0, 0, 0, 0.2));height:var(--ds-size-500, 2.5rem);min-width:unset;transition:padding 300ms ease-out,outline 0ms,outline-offset 0ms}.auro-button--rounded ::slotted(auro-icon),.auro-button--rounded ::slotted([auro-icon]){--ds-auro-icon-size:var(--ds-size-300, 1.5rem)}.auro-button--rounded:focus-visible:not([variant=flat]):after,.auro-button--rounded:focus:not([variant=flat]):after{border-radius:100px}:host([size=xs]) .wrapper:focus-visible,:host([size=xs]) .wrapper:focus{outline-width:1px;outline-offset:-2px}:host([rounded]) .textSlot{transition:opacity 300ms ease-in;opacity:1}:host([rounded][iconOnly]) .textSlot{opacity:0}:host([rounded][iconOnly]) .textWrapper{display:none}:host([rounded][iconOnly]) .auro-button{min-width:unset;padding:unset;width:var(--ds-size-600, 3rem)}[auro-loader]{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);pointer-events:none}`;
6138
+
6139
+ var colorCss$2$1 = i$5`[auro-loader]{color:var(--ds-auro-button-loader-color)}.auro-button{-webkit-tap-highlight-color:var(--ds-auro-button-tap-color);color:var(--ds-auro-button-text-color);background-color:var(--ds-auro-button-container-color);background-image:linear-gradient(var(--ds-auro-button-container-image), var(--ds-auro-button-container-image));border-color:var(--ds-auro-button-border-color)}.auro-button:not([variant=secondary]):not([variant=tertiary]):focus-visible{outline-color:var(--ds-auro-button-border-inset-color)}.auro-button:not([ondark]):active:not(:disabled),.auro-button:not([ondark]):hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-hover, #00274a);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-hover, #00274a);--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-hover, #00274a)}.auro-button:not([ondark]):disabled{--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-disabled, #acc9e2);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-disabled, #acc9e2);--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-disabled, #acc9e2)}.auro-button:not([ondark])[variant=secondary]{--ds-auro-button-container-color:var(--ds-advanced-color-button-secondary-background, #ffffff);--ds-auro-button-container-image:var(--ds-advanced-color-button-secondary-background, #ffffff);--ds-auro-button-border-color:var(--ds-advanced-color-button-secondary-border, #01426a);--ds-auro-button-text-color:var(--ds-advanced-color-button-secondary-text, #01426a);--ds-auro-button-loader-color:var(--ds-advanced-color-button-secondary-text, #01426a)}.auro-button:not([ondark])[variant=secondary]:active:not(:disabled),.auro-button:not([ondark])[variant=secondary]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-secondary-background-hover, #f2f2f2);--ds-auro-button-container-image:var(--ds-advanced-color-button-secondary-background-hover, #f2f2f2);--ds-auro-button-border-color:var(--ds-advanced-color-button-secondary-border-hover, #00274a);--ds-auro-button-text-color:var(--ds-advanced-color-button-secondary-text-hover, #00274a)}.auro-button:not([ondark])[variant=secondary]:focus-visible{--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused, #01426a)}.auro-button:not([ondark])[variant=secondary]:disabled{--ds-auro-button-container-color:var(--ds-advanced-color-button-secondary-background-disabled, #f7f7f7);--ds-auro-button-container-image:var(--ds-advanced-color-button-secondary-background-disabled, #f7f7f7);--ds-auro-button-border-color:var(--ds-advanced-color-button-secondary-border-disabled, #cfe0ef);--ds-auro-button-text-color:var(--ds-basic-color-texticon-disabled, #d0d0d0)}.auro-button:not([ondark])[variant=tertiary]{--ds-auro-button-container-color:var(--ds-advanced-color-button-tertiary-background, rgba(0, 0, 0, 0.05));--ds-auro-button-container-image:var(--ds-advanced-color-button-tertiary-background, rgba(0, 0, 0, 0.05));--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-advanced-color-button-tertiary-text, #01426a);--ds-auro-button-loader-color:var(--ds-advanced-color-button-tertiary-text, #01426a)}.auro-button:not([ondark])[variant=tertiary]:active:not(:disabled),.auro-button:not([ondark])[variant=tertiary]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-tertiary-background-hover, rgba(0, 0, 0, 0.1));--ds-auro-button-container-image:var(--ds-advanced-color-button-tertiary-background-hover, rgba(0, 0, 0, 0.1));--ds-auro-button-border-color:transparent}.auro-button:not([ondark])[variant=tertiary]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused, #01426a);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused, #01426a)}.auro-button:not([ondark])[variant=tertiary]:disabled{--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-basic-color-texticon-disabled, #d0d0d0)}.auro-button:not([ondark])[variant=ghost]{--ds-auro-button-container-color:transparent;--ds-auro-button-container-image:transparent;--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-advanced-color-button-ghost-text, #01426a);--ds-auro-button-loader-color:var(--ds-advanced-color-button-ghost-text, #01426a)}.auro-button:not([ondark])[variant=ghost]:active:not(:disabled),.auro-button:not([ondark])[variant=ghost]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-ghost-background-hover, rgba(0, 0, 0, 0.05));--ds-auro-button-container-image:var(--ds-advanced-color-button-ghost-background-hover, rgba(0, 0, 0, 0.05));--ds-auro-button-border-color:transparent}.auro-button:not([ondark])[variant=ghost]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused, #01426a);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused, #01426a)}.auro-button:not([ondark])[variant=ghost]:disabled{--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-basic-color-texticon-disabled, #d0d0d0)}.auro-button:not([ondark])[variant=flat]{color:var(--ds-advanced-color-button-flat-text, #676767);background-color:transparent;background-image:none;border-color:transparent}.auro-button:not([ondark])[variant=flat]:active:not(:disabled),.auro-button:not([ondark])[variant=flat]:hover:not(:disabled){color:var(--ds-advanced-color-button-flat-text-hover, #525252);background-color:transparent;background-image:none;border-color:transparent}.auro-button:not([ondark])[variant=flat]:disabled{color:var(--ds-advanced-color-button-flat-text-disabled, #d0d0d0);background-color:transparent;background-image:none;border-color:transparent}.auro-button:not([ondark])[variant=flat]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused, #01426a);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused, #01426a)}.auro-button[ondark]{--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-inverse, #ffffff);--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-inverse, #ffffff);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-inverse, #ffffff);--ds-auro-button-text-color:var(--ds-advanced-color-button-primary-text-inverse, #01426a);--ds-auro-button-loader-color:var(--ds-advanced-color-button-primary-text-inverse, #01426a)}.auro-button[ondark]:active:not(:disabled),.auro-button[ondark]:hover:not(:disabled){--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-inverse-hover, #ebf3f9);--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-inverse-hover, #ebf3f9);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-inverse-hover, #ebf3f9)}.auro-button[ondark]:focus-visible{--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused, #01426a)}.auro-button[ondark]:disabled{--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-inverse-disabled, rgba(255, 255, 255, 0.75));--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-inverse-disabled, rgba(255, 255, 255, 0.75));--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-inverse-disabled, rgba(255, 255, 255, 0.75));--ds-auro-button-text-color:var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}.auro-button[ondark][variant=secondary]{--ds-auro-button-container-color:transparent;--ds-auro-button-container-image:transparent;--ds-auro-button-border-color:var(--ds-advanced-color-button-secondary-border-inverse, #ffffff);--ds-auro-button-text-color:var(--ds-advanced-color-button-secondary-text-inverse, #ffffff);--ds-auro-button-loader-color:var(--ds-advanced-color-button-secondary-text-inverse, #ffffff)}.auro-button[ondark][variant=secondary]:active:not(:disabled),.auro-button[ondark][variant=secondary]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-secondary-background-inverse-hover, rgba(255, 255, 255, 0.1));--ds-auro-button-container-image:var(--ds-advanced-color-button-secondary-background-inverse-hover, rgba(255, 255, 255, 0.1))}.auro-button[ondark][variant=secondary]:focus-visible{--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff)}.auro-button[ondark][variant=secondary]:disabled{--ds-auro-button-text-color:var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-button-border-color:var(--ds-advanced-color-button-secondary-border-inverse-disabled, #dddddd)}.auro-button[ondark][variant=tertiary]{--ds-auro-button-container-color:var(--ds-advanced-color-button-tertiary-background-inverse, rgba(255, 255, 255, 0.05));--ds-auro-button-container-image:var(--ds-advanced-color-button-tertiary-background-inverse, rgba(255, 255, 255, 0.05));--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-advanced-color-button-tertiary-text-inverse, #ffffff);--ds-auro-button-loader-color:var(--ds-advanced-color-button-tertiary-text-inverse, #ffffff)}.auro-button[ondark][variant=tertiary]:active:not(:disabled),.auro-button[ondark][variant=tertiary]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-tertiary-background-inverse-hover, rgba(255, 255, 255, 0.1));--ds-auro-button-container-image:var(--ds-advanced-color-button-tertiary-background-inverse-hover, rgba(255, 255, 255, 0.1))}.auro-button[ondark][variant=tertiary]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff)}.auro-button[ondark][variant=tertiary]:disabled{--ds-auro-button-text-color:var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}.auro-button[ondark][variant=ghost]{--ds-auro-button-container-color:transparent;--ds-auro-button-container-image:transparent;--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-advanced-color-button-ghost-text-inverse, #ffffff);--ds-auro-button-loader-color:var(--ds-advanced-color-button-ghost-text-inverse, #ffffff)}.auro-button[ondark][variant=ghost]:active:not(:disabled),.auro-button[ondark][variant=ghost]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-ghost-background-inverse-hover, rgba(255, 255, 255, 0.05));--ds-auro-button-container-image:var(--ds-advanced-color-button-ghost-background-inverse-hover, rgba(255, 255, 255, 0.05))}.auro-button[ondark][variant=ghost]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff)}.auro-button[ondark][variant=ghost]:disabled{--ds-auro-button-text-color:var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}.auro-button[ondark][variant=flat]{color:var(--ds-advanced-color-button-flat-text-inverse, #ffffff);background-color:transparent;background-image:none;border-color:transparent}.auro-button[ondark][variant=flat]:active:not(:disabled),.auro-button[ondark][variant=flat]:hover:not(:disabled){color:var(--ds-advanced-color-button-flat-text-inverse-hover, #adadad);background-color:transparent;background-image:none;border-color:transparent}.auro-button[ondark][variant=flat]:disabled{color:var(--ds-advanced-color-button-flat-text-inverse-disabled, #7e8894);background-color:transparent;background-image:none;border-color:transparent}.auro-button[ondark][variant=flat]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff)}`;
6140
+
6141
+ var tokensCss$2$1 = i$5`:host(:not([onDark])){--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border, #01426a);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background, #01426a);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background, #01426a);--ds-auro-button-loader-color:var(--ds-advanced-color-button-primary-text, #ffffff);--ds-auro-button-text-color:var(--ds-advanced-color-button-primary-text, #ffffff);--ds-auro-button-tap-color:transparent}:host([onDark]){--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-inverse, #ffffff);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-inverse, #ffffff);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-inverse, #ffffff);--ds-auro-button-loader-color:var(--ds-advanced-color-button-primary-text-inverse, #01426a);--ds-auro-button-text-color:var(--ds-advanced-color-button-primary-text-inverse, #01426a);--ds-auro-button-tap-color:transparent}`;
6142
+
6143
+ var shapeSize = i$5`.shape-rounded-xl{min-height:68px;max-height:68px;border-style:solid;border-radius:6px;overflow:hidden;font-size:18px}.shape-rounded-lg{min-height:52px;max-height:52px;border-style:solid;border-radius:6px;overflow:hidden;font-size:18px}.shape-rounded-md{min-height:44px;max-height:44px;border-style:solid;border-radius:6px;overflow:hidden;font-size:16px}.shape-rounded-sm{min-height:32px;max-height:32px;border-style:solid;border-radius:6px;overflow:hidden;font-size:14px}.shape-rounded-xs{min-height:20px;max-height:20px;border-style:solid;border-radius:4px;overflow:hidden;font-size:12px;outline-offset:-2px;outline-width:1px}.shape-pill-xl{min-height:68px;max-height:68px;border-style:solid;border-radius:34px;overflow:hidden;font-size:18px}.shape-pill-left-xl{min-height:68px;max-height:68px;border-style:solid;border-radius:34px 0 0 34px;overflow:hidden}.shape-pill-right-xl{min-height:68px;max-height:68px;border-style:solid;border-radius:0 34px 34px 0;overflow:hidden}.shape-pill-lg{min-height:52px;max-height:52px;border-style:solid;border-radius:26px;overflow:hidden;font-size:18px}.shape-pill-left-lg{min-height:52px;max-height:52px;border-style:solid;border-radius:26px 0 0 26px;overflow:hidden}.shape-pill-right-lg{min-height:52px;max-height:52px;border-style:solid;border-radius:0 26px 26px 0;overflow:hidden}.shape-pill-md{min-height:44px;max-height:44px;border-style:solid;border-radius:22px;overflow:hidden}.shape-pill-left-md{min-height:44px;max-height:44px;border-style:solid;border-radius:22px 0 0 22px;overflow:hidden}.shape-pill-right-md{min-height:44px;max-height:44px;border-style:solid;border-radius:0 22px 22px 0;overflow:hidden;font-size:16px}.shape-pill-sm{min-height:32px;max-height:32px;border-style:solid;border-radius:16px;overflow:hidden;font-size:14px}.shape-pill-left-sm{min-height:32px;max-height:32px;border-style:solid;border-radius:16px 0 0 16px;overflow:hidden}.shape-pill-right-sm{min-height:32px;max-height:32px;border-style:solid;border-radius:0 16px 16px 0;overflow:hidden}.shape-pill-xs{min-height:20px;max-height:20px;border-style:solid;border-radius:10px;overflow:hidden;font-size:12px;outline-offset:-2px;outline-width:1px}.shape-pill-left-xs{min-height:20px;max-height:20px;border-style:solid;border-radius:10px 0 0 10px;overflow:hidden;outline-offset:-2px;outline-width:1px}.shape-pill-right-xs{min-height:20px;max-height:20px;border-style:solid;border-radius:0 10px 10px 0;overflow:hidden;outline-offset:-2px;outline-width:1px}.shape-circle-xl{min-height:68px;max-height:68px;min-width:68px;max-width:68px;border-style:solid;border-radius:34px;overflow:hidden;padding:0}.shape-circle-lg{min-height:52px;max-height:52px;min-width:52px;max-width:52px;border-style:solid;border-radius:26px;overflow:hidden;padding:0}.shape-circle-md{min-height:44px;max-height:44px;min-width:44px;max-width:44px;border-style:solid;border-radius:22px;overflow:hidden;padding:0}.shape-circle-sm{min-height:32px;max-height:32px;min-width:32px;max-width:32px;border-style:solid;border-radius:16px;overflow:hidden;padding:0}.shape-circle-xs{min-height:20px;max-height:20px;min-width:20px;max-width:20px;border-style:solid;border-radius:10px;overflow:hidden;padding:0;outline-offset:-2px;outline-width:1px}`;
6144
+
6145
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
6146
+ // See LICENSE in the project root for license information.
6147
+
6148
+ // ---------------------------------------------------------------------
6149
+
6150
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
6151
+
6152
+ let AuroLibraryRuntimeUtils$2 = class AuroLibraryRuntimeUtils {
6153
+
6154
+ /* eslint-disable jsdoc/require-param */
6155
+
6156
+ /**
6157
+ * This will register a new custom element with the browser.
6158
+ * @param {String} name - The name of the custom element.
6159
+ * @param {Object} componentClass - The class to register as a custom element.
6160
+ * @returns {void}
6161
+ */
6162
+ registerComponent(name, componentClass) {
6163
+ if (!customElements.get(name)) {
6164
+ customElements.define(name, class extends componentClass {});
6165
+ }
6166
+ }
6167
+
6168
+ /**
6169
+ * Finds and returns the closest HTML Element based on a selector.
6170
+ * @returns {void}
6171
+ */
6172
+ closestElement(
6173
+ selector, // selector like in .closest()
6174
+ base = this, // extra functionality to skip a parent
6175
+ __Closest = (el, found = el && el.closest(selector)) =>
6176
+ !el || el === document || el === window
6177
+ ? null // standard .closest() returns null for non-found selectors also
6178
+ : found
6179
+ ? found // found a selector INside this element
6180
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
6181
+ ) {
6182
+ return __Closest(base);
6183
+ }
6184
+ /* eslint-enable jsdoc/require-param */
6185
+
6186
+ /**
6187
+ * 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.
6188
+ * @param {Object} elem - The element to check.
6189
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
6190
+ * @returns {void}
6191
+ */
6192
+ handleComponentTagRename(elem, tagName) {
6193
+ const tag = tagName.toLowerCase();
6194
+ const elemTag = elem.tagName.toLowerCase();
6195
+
6196
+ if (elemTag !== tag) {
6197
+ elem.setAttribute(tag, true);
6198
+ }
6199
+ }
6200
+
6201
+ /**
6202
+ * Validates if an element is a specific Auro component.
6203
+ * @param {Object} elem - The element to validate.
6204
+ * @param {String} tagName - The name of the Auro component to check against.
6205
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
6206
+ */
6207
+ elementMatch(elem, tagName) {
6208
+ const tag = tagName.toLowerCase();
6209
+ const elemTag = elem.tagName.toLowerCase();
6210
+
6211
+ return elemTag === tag || elem.hasAttribute(tag);
6212
+ }
6213
+ };
6214
+
6215
+ var styleCss$2$1 = i$5`:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin:0.375rem;--margin-xs:0.2rem;--margin-sm:0.5rem;--margin-md:0.75rem;--margin-lg:1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin)*6);height:1.5rem}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(2.55rem + var(--margin-xs)*6);height:1.55rem}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm)*6);height:2.5rem}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md)*6);height:3.5rem}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg)*6);height:5.5rem}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-400ms}:host([pulse])>span:nth-child(2){animation-delay:-200ms}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,100%{opacity:.1;transform:scale(0.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}100%{left:110%}}:host>.no-animation{display:none}@media(prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center;font-size:1rem}:host>span{opacity:1}:host>.loader{display:none}:host>.no-animation{display:block}}`;
6216
+
6217
+ var colorCss$1$1 = i$5`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]){--ds-auro-loader-color:var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]){--ds-auro-loader-color:var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color:transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color:currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color:currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}`;
6218
+
6219
+ var tokensCss$1$1 = i$5`:host{--ds-auro-loader-background-color:currentcolor;--ds-auro-loader-border-color:currentcolor;--ds-auro-loader-color:currentcolor}`;
6220
+
6221
+ // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
6222
+ // See LICENSE in the project root for license information.
6223
+
6224
+
6225
+ class AuroLoader extends i$2 {
6226
+ constructor() {
6227
+ super();
6228
+
6229
+ /**
6230
+ * @private
6231
+ */
6232
+ this.keys = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
6233
+
6234
+ /**
6235
+ * @private
6236
+ */
6237
+ this.mdCount = 3;
6238
+
6239
+ /**
6240
+ * @private
6241
+ */
6242
+ this.smCount = 2;
6243
+
6244
+ /**
6245
+ * @private
6246
+ */
6247
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$2();
6248
+
6249
+ this.orbit = false;
6250
+ this.ringworm = false;
6251
+ this.laser = false;
6252
+ this.pulse = false;
6253
+ }
6254
+
6255
+ // function to define props used within the scope of this component
6256
+ static get properties() {
6257
+ return {
6258
+
6259
+ /**
6260
+ * Sets loader to laser type.
6261
+ */
6262
+ laser: {
6263
+ type: Boolean,
6264
+ reflect: true
6265
+ },
6266
+
6267
+ /**
6268
+ * Sets loader to orbit type.
6269
+ */
6270
+ orbit: {
6271
+ type: Boolean,
6272
+ reflect: true
6273
+ },
6274
+
6275
+ /**
6276
+ * Sets loader to pulse type.
6277
+ */
6278
+ pulse: {
6279
+ type: Boolean,
6280
+ reflect: true
6281
+ },
6282
+
6283
+ /**
6284
+ * Sets loader to ringworm type.
6285
+ */
6286
+ ringworm: {
6287
+ type: Boolean,
6288
+ reflect: true
6289
+ }
6290
+ };
6291
+ }
6292
+
6293
+ static get styles() {
6294
+ return [
6295
+ i$5`${styleCss$2$1}`,
6296
+ i$5`${colorCss$1$1}`,
6297
+ i$5`${tokensCss$1$1}`
6298
+ ];
6299
+ }
6300
+
6301
+ /**
6302
+ * This will register this element with the browser.
6303
+ * @param {string} [name="auro-loader"] - The name of element that you want to register to.
6304
+ *
6305
+ * @example
6306
+ * AuroLoader.register("custom-loader") // this will register this element to <custom-loader/>
6307
+ *
6308
+ */
6309
+ static register(name = "auro-loader") {
6310
+ AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroLoader);
6311
+ }
6312
+
6313
+ firstUpdated() {
6314
+ // Add the tag name as an attribute if it is different than the component name
6315
+ this.runtimeUtils.handleComponentTagRename(this, 'auro-loader');
6316
+ }
6317
+
6318
+ connectedCallback() {
6319
+ super.connectedCallback();
6320
+ }
6321
+
6322
+ /**
6323
+ * @private
6324
+ * @returns {Array} Numbered array for template map.
6325
+ */
6326
+ defineTemplate() {
6327
+ let nodes = Array.from(Array(this.mdCount).keys());
6328
+
6329
+ if (this.orbit || this.laser) {
6330
+ nodes = Array.from(Array(this.smCount).keys());
6331
+ } else if (this.ringworm) {
6332
+ nodes = Array.from(Array(0).keys());
6333
+ }
6334
+
6335
+ return nodes;
6336
+ }
6337
+
6338
+ // When using auroElement, use the following attribute and function when hiding content from screen readers.
6339
+ // aria-hidden="${this.hideAudible(this.hiddenAudible)}"
6340
+
6341
+ // function that renders the HTML and CSS into the scope of the component
6342
+ render() {
6343
+ return x`
6344
+ ${this.defineTemplate().map((idx) => x`
6345
+ <span part="element" class="loader node-${idx}"></span>
6346
+ `)}
6347
+
6348
+ <div class="no-animation">Loading...</div>
6349
+
6350
+ ${this.ringworm ? x`
6351
+ <svg part="element" class="circular" viewBox="25 25 50 50">
6352
+ <circle class="path" cx="50" cy="50" r="20" fill="none"/>
6353
+ </svg>`
6354
+ : ``
6355
+ }
6356
+ `;
6357
+ }
6358
+ }
6359
+
6360
+ var loaderVersion = '5.0.0';
6361
+
6362
+ /* eslint-disable max-lines, curly, jsdoc/no-undefined-types */
6363
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
6364
+ // See LICENSE in the project root for license information.
6365
+
6366
+
6367
+ /**
6368
+ * @slot - Default slot for the text of the button.
6369
+ * @csspart button - Apply CSS to HTML5 button.
6370
+ * @csspart loader - Apply CSS to auro-loader.
6371
+ * @csspart text - Apply CSS to text slot.
6372
+ * @csspart icon - Apply CSS to icon slot.
6373
+ */
6374
+
6375
+ /* eslint-disable lit/no-invalid-html, lit/binding-positions */
6376
+
6377
+ const ICON_ONLY_SHAPES = ['circle'];
6378
+
6379
+ /**
6380
+ * AuroButton is a custom element that provides a styled, accessible button with support for various states and form association.
6381
+ * It is designed to be flexible, supporting loading states, icon slots, and integration with HTML5 forms.
6382
+ * @property {'default', 'rounded', 'pill', 'circle'} shape - Defines the shape of the button.
6383
+ * @property {'xs', 'sm', 'md', 'lg', 'xl'} size - Defines the size of the button.
6384
+ * @property {'primary', 'secondary', 'tertiary', 'ghost', 'flat'} variant - Sets the button variant.
6385
+ * @property {'submit', 'reset', 'button'} type - The type of button. Matches HTML5 Button Spec.
6386
+ * @property {boolean} onDark - Indicates if the button is rendered in dark mode.
6387
+ */
6388
+ class AuroButton extends AuroElement$1 {
6389
+
6390
+ /**
6391
+ * Enables form association for this element.
6392
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/attachInternals
6393
+ * @returns {boolean} - Returns true to enable form association.
6394
+ */
6395
+ static get formAssociated() {
6396
+ return true;
6397
+ }
6398
+
6399
+ constructor() {
6400
+ super();
6401
+ this.autofocus = false;
6402
+ this.disabled = false;
6403
+ this.loading = false;
6404
+ this.size = "md";
6405
+ this.shape = "rounded";
6406
+ this.onDark = false;
6407
+ this.fluid = false;
6408
+ this.loadingText = this.loadingText || 'Loading...';
6409
+
6410
+ // Support for HTML5 forms
6411
+ if (typeof this.attachInternals === 'function') {
6412
+ this.internals = this.attachInternals();
6413
+ } else {
6414
+ this.internals = null;
6415
+
6416
+ // eslint-disable-next-line no-console
6417
+ console.warn('This browser does not support form association features. Some form-related functionality may not work as expected. Consider using a polyfill or handling click events manually.');
6418
+ }
6419
+
6420
+ /**
6421
+ * Generate unique names for dependency components.
6422
+ */
6423
+ const versioning = new AuroDependencyVersioning();
6424
+
6425
+ /**
6426
+ * @private
6427
+ */
6428
+ this.loaderTag = versioning.generateTag('auro-loader', loaderVersion, AuroLoader);
6429
+
6430
+ /**
6431
+ * @private
6432
+ */
6433
+ this.buttonHref = undefined;
6434
+
6435
+ /**
6436
+ * @private
6437
+ */
6438
+ this.buttonTarget = undefined;
6439
+
6440
+ /**
6441
+ * @private
6442
+ */
6443
+ this.buttonRel = undefined;
6444
+ }
6445
+
6446
+ static get styles() {
6447
+ return [
6448
+ tokensCss$2$1,
6449
+ styleCss$3$1,
6450
+ colorCss$2$1,
6451
+ shapeSize
6452
+ ];
6453
+ }
6454
+
6455
+ static get properties() {
6456
+ return {
6457
+
6458
+ ...super.properties,
6459
+
6460
+ /**
6461
+ * Override layout since it isn't used in this component.
6462
+ * @private
6463
+ */
6464
+ layout: {
6465
+ type: Boolean,
6466
+ attribute: false,
6467
+ reflect: false
6468
+ },
6469
+
6470
+ /**
6471
+ * This Boolean attribute lets you specify that the button should have input focus when the page loads, unless overridden by the user.
6472
+ */
6473
+ autofocus: {
6474
+ type: Boolean,
6475
+ reflect: true
6476
+ },
6477
+
6478
+ /**
6479
+ * If set to true, button will become disabled and not allow for interactions.
6480
+ */
6481
+ disabled: {
6482
+ type: Boolean,
6483
+ reflect: true
6484
+ },
6485
+
6486
+ /**
6487
+ * Alters the shape of the button to be full width of its parent container.
6488
+ */
6489
+ fluid: {
6490
+ type: Boolean,
6491
+ reflect: true
6492
+ },
6493
+
6494
+ /**
6495
+ * If set to true button text will be replaced with `auro-loader` and become disabled.
6496
+ */
6497
+ loading: {
6498
+ type: Boolean,
6499
+ reflect: true
6500
+ },
6501
+
6502
+ /**
6503
+ * Sets custom loading text for the `aria-label` on a button in loading state. If not set, the default value of "Loading..." will be used.
6504
+ */
6505
+ loadingText: {
6506
+ type: String
6507
+ },
6508
+
6509
+ /**
6510
+ * Populates `tabindex` to define the focusable sequence in keyboard navigation.
6511
+ */
6512
+ tIndex: {
6513
+ type: String,
6514
+ reflect: true
6515
+ },
6516
+
6517
+ /**
6518
+ * Populates `tabindex` to define the focusable sequence in keyboard navigation.
6519
+ * Must be used with "." to ensure the host element does not retain a reference to the `tabindex` attribute.
6520
+ * Example: `<auro-button .tabindex="${this.disabled ? '-1' : '0'}"></auro-button>`
6521
+ */
6522
+ tabindex: {
6523
+ type: String,
6524
+ reflect: false
6525
+ },
6526
+
6527
+ /**
6528
+ * Sets title attribute. The information is most often shown as a tooltip text when the mouse moves over the element.
6529
+ */
6530
+ title: {
6531
+ type: String,
6532
+ reflect: true
6533
+ },
6534
+
6535
+ /**
6536
+ * The type of the button. Possible values are: `submit`, `reset`, `button`.
6537
+ */
6538
+ type: {
6539
+ type: String,
6540
+ reflect: true
6541
+ },
6542
+
6543
+ /**
6544
+ * Defines the value associated with the button which is submitted with the form data.
6545
+ */
6546
+ value: {
6547
+ type: String,
6548
+ reflect: true
6549
+ },
6550
+
6551
+ /**
6552
+ * Sets button variant option.
6553
+ * @default primary
6554
+ */
6555
+ variant: {
6556
+ type: String,
6557
+ reflect: true
6558
+ },
6559
+
6560
+ /**
6561
+ * @private
6562
+ */
6563
+ buttonHref: {
6564
+ type: String,
6565
+ },
6566
+
6567
+ /**
6568
+ * @private
6569
+ */
6570
+ buttonTarget: {
6571
+ type: String,
6572
+ },
6573
+
6574
+ /**
6575
+ * @private
6576
+ */
6577
+ buttonRel: {
6578
+ type: String,
6579
+ },
6580
+ };
6581
+ }
6582
+
6583
+ /**
6584
+ * This will register this element with the browser.
6585
+ * @param {string} [name="auro-button"] - The name of element that you want to register to.
6586
+ *
6587
+ * @example
6588
+ * AuroButton.register("custom-button") // this will register this element to <custom-button/>
6589
+ *
6590
+ */
6591
+ static register(name = "auro-button") {
6592
+ AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroButton);
6593
+ }
6594
+
6595
+ /**
6596
+ * Internal method to apply focus to the HTML5 button.
6597
+ * @private
6598
+ * @returns {void}
6599
+ */
6600
+ focus() {
6601
+ this.renderRoot.querySelector('button').focus();
6602
+ }
6603
+
6604
+ /**
6605
+ * Submits the form that this button is associated with.
6606
+ * @private
6607
+ * @returns {void}
6608
+ */
6609
+ surfaceSubmitEvent() {
6610
+ if (this.form) {
6611
+ this.form.requestSubmit();
6612
+ }
6613
+ }
6614
+
6615
+ /**
6616
+ * Returns the form element that this button is associated with.
6617
+ * @private
6618
+ * @returns {HTMLFormElement | null}
6619
+ */
6620
+ get form() {
6621
+ return this.internals ? this.internals.form : null;
6622
+ }
6623
+
6624
+ /**
6625
+ * @private
6626
+ * @returns {Boolean}
6627
+ */
6628
+ get hideText() {
6629
+ return ICON_ONLY_SHAPES.includes(this.shape);
6630
+ }
6631
+
6632
+ /**
6633
+ * Returns the current value of the projected `aria-label` attribute or undefined if not set.
6634
+ * @returns {string | undefined}
6635
+ * @private
6636
+ */
6637
+ get currentAriaLabel() {
6638
+ if (!this.attributeWatcher) return undefined;
6639
+
6640
+ const ariaLabel = this.attributeWatcher.getObservedAttribute("aria-label");
6641
+ return ariaLabel || undefined;
6642
+ }
6643
+
6644
+ /**
6645
+ * Returns the current value of the projected `aria-labelledby` attribute or undefined if not set.
6646
+ * @returns {string | undefined}
6647
+ * @private
6648
+ */
6649
+ get currentAriaLabelledBy() {
6650
+ if (!this.attributeWatcher) return undefined;
6651
+
6652
+ const ariaLabelledBy = this.attributeWatcher.getObservedAttribute("aria-labelledby");
6653
+ return ariaLabelledBy || undefined;
6654
+ }
6655
+
6656
+ /**
6657
+ * Renders the default layout for the button.
6658
+ * @returns {TemplateResult}
6659
+ * @private
6660
+ */
6661
+ renderLayoutDefault() {
6662
+ const classes = {
6663
+ "util_insetLg--squish": true,
6664
+ "auro-button": true,
6665
+ "icon-only": this.hideText,
6666
+ wrapper: true,
6667
+ loading: this.loading,
6668
+ };
6669
+
6670
+ const tag = this.buttonHref ? i`a` : i`button`;
6671
+ const part = this.buttonHref ? 'link' : 'button';
6672
+
6673
+ return u`
6674
+ <${tag}
6675
+ part="${part}"
6676
+ aria-label="${o(this.loading ? this.loadingText : this.currentAriaLabel || undefined)}"
6677
+ aria-labelledby="${o(this.loading ? undefined : this.currentAriaLabelledBy || undefined)}"
6678
+ tabindex="${o(this.tIndex || this.tabindex)}"
6679
+ ?autofocus="${this.autofocus}"
6680
+ class=${e(classes)}
6681
+ ?disabled="${this.disabled || this.loading}"
6682
+ ?onDark="${this.onDark}"
6683
+ title="${o(this.title ? this.title : undefined)}"
6684
+ name="${o(this.name ? this.name : undefined)}"
6685
+ type="${o(this.type ? this.type : undefined)}"
6686
+ variant="${o(this.variant ? this.variant : undefined)}"
6687
+ .value="${o(this.value ? this.value : undefined)}"
6688
+ @click="${this.type === 'submit' ? this.surfaceSubmitEvent : undefined}"
6689
+ href="${o(this.buttonHref || undefined)}"
6690
+ target="${o(this.buttonTarget || undefined)}"
6691
+ rel="${o(this.buttonRel || undefined)}"
6692
+ >
6693
+ ${o(this.loading ? u`<${this.loaderTag} pulse part="loader"></${this.loaderTag}>` : undefined)}
6694
+
6695
+ <span class="contentWrapper">
6696
+ <span class="textSlot" part="text">
6697
+ <slot></slot>
6698
+ </span>
6699
+ </span>
6700
+ </${tag}>
6701
+ `;
6702
+ }
6703
+
6704
+ /**
6705
+ * Renders the layout of the button.
6706
+ * @returns {TemplateResult}
6707
+ * @private
6708
+ */
6709
+ renderLayout() {
6710
+ return this.renderLayoutDefault();
6711
+ }
6712
+ }
6713
+
6714
+ var buttonVersion = '11.2.1';
6715
+
6716
+ // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
6717
+ // See LICENSE in the project root for license information.
6718
+
6719
+
6720
+ /**
6721
+ * @attr {Boolean} hidden - If present, the component will be hidden both visually and from screen readers
6722
+ * @attr {Boolean} hiddenVisually - If present, the component will be hidden visually, but still read by screen readers
6723
+ * @attr {Boolean} hiddenAudible - If present, the component will be hidden from screen readers, but seen visually
6724
+ */
6725
+
6726
+ let AuroElement$2 = class AuroElement extends i$2 {
6727
+
6728
+ // function to define props used within the scope of this component
6729
+ static get properties() {
6730
+ return {
6731
+ hidden: { type: Boolean,
6732
+ reflect: true },
6733
+ hiddenVisually: { type: Boolean,
6734
+ reflect: true },
6735
+ hiddenAudible: { type: Boolean,
6736
+ reflect: true },
6737
+ };
6738
+ }
6739
+
6740
+ /**
6741
+ * @private Function that determines state of aria-hidden
6742
+ */
6743
+ hideAudible(value) {
6744
+ if (value) {
6745
+ return 'true'
6746
+ }
6747
+
6748
+ return 'false'
6749
+ }
6750
+ };
6751
+
6752
+ var error$1 = {"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>"};
6753
+
6754
+ /* eslint-disable no-underscore-dangle, jsdoc/no-undefined-types, jsdoc/require-param-description */
6755
+
6756
+ const _fetchMap$1 = new Map();
6757
+
6758
+ /**
6759
+ * A callback to parse Response body.
6760
+ *
6761
+ * @callback ResponseParser
6762
+ * @param {Fetch.Response} response
6763
+ * @returns {Promise}
6764
+ */
6765
+
6766
+ /**
6767
+ * A minimal in-memory map to de-duplicate Fetch API media requests.
6768
+ *
6769
+ * @param {String} uri
6770
+ * @param {Object} [options={}]
6771
+ * @param {ResponseParser} [options.responseParser=(response) => response.text()]
6772
+ * @returns {Promise}
6773
+ */
6774
+ const cacheFetch$1 = (uri, options = {}) => {
6775
+ const responseParser = options.responseParser || ((response) => response.text());
6776
+ if (!_fetchMap$1.has(uri)) {
6777
+ _fetchMap$1.set(uri, fetch(uri).then(responseParser));
6778
+ }
6779
+ return _fetchMap$1.get(uri);
6780
+ };
6781
+
6782
+ var styleCss$1$1 = 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}`;
6783
+
6784
+ // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
6785
+ // See LICENSE in the project root for license information.
6786
+
6787
+
6788
+ // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
5239
6789
  /**
5240
6790
  * @slot - Hidden from visibility, used for a11y if icon description is needed
5241
6791
  */
5242
6792
 
5243
6793
  // build the component class
5244
- let BaseIcon$1 = class BaseIcon extends AuroElement$1 {
6794
+ let BaseIcon$1 = class BaseIcon extends AuroElement$2 {
5245
6795
  constructor() {
5246
6796
  super();
5247
6797
  this.onDark = false;
@@ -5313,9 +6863,79 @@ let BaseIcon$1 = class BaseIcon extends AuroElement$1 {
5313
6863
  }
5314
6864
  };
5315
6865
 
5316
- var tokensCss$2 = 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)}`;
6866
+ var tokensCss$3 = 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)}`;
6867
+
6868
+ var colorCss$4 = 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)}`;
6869
+
6870
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
6871
+ // See LICENSE in the project root for license information.
6872
+
6873
+ // ---------------------------------------------------------------------
6874
+
6875
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
6876
+
6877
+ let AuroLibraryRuntimeUtils$1$1 = class AuroLibraryRuntimeUtils {
6878
+
6879
+ /* eslint-disable jsdoc/require-param */
6880
+
6881
+ /**
6882
+ * This will register a new custom element with the browser.
6883
+ * @param {String} name - The name of the custom element.
6884
+ * @param {Object} componentClass - The class to register as a custom element.
6885
+ * @returns {void}
6886
+ */
6887
+ registerComponent(name, componentClass) {
6888
+ if (!customElements.get(name)) {
6889
+ customElements.define(name, class extends componentClass {});
6890
+ }
6891
+ }
6892
+
6893
+ /**
6894
+ * Finds and returns the closest HTML Element based on a selector.
6895
+ * @returns {void}
6896
+ */
6897
+ closestElement(
6898
+ selector, // selector like in .closest()
6899
+ base = this, // extra functionality to skip a parent
6900
+ __Closest = (el, found = el && el.closest(selector)) =>
6901
+ !el || el === document || el === window
6902
+ ? null // standard .closest() returns null for non-found selectors also
6903
+ : found
6904
+ ? found // found a selector INside this element
6905
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
6906
+ ) {
6907
+ return __Closest(base);
6908
+ }
6909
+ /* eslint-enable jsdoc/require-param */
6910
+
6911
+ /**
6912
+ * 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.
6913
+ * @param {Object} elem - The element to check.
6914
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
6915
+ * @returns {void}
6916
+ */
6917
+ handleComponentTagRename(elem, tagName) {
6918
+ const tag = tagName.toLowerCase();
6919
+ const elemTag = elem.tagName.toLowerCase();
6920
+
6921
+ if (elemTag !== tag) {
6922
+ elem.setAttribute(tag, true);
6923
+ }
6924
+ }
6925
+
6926
+ /**
6927
+ * Validates if an element is a specific Auro component.
6928
+ * @param {Object} elem - The element to validate.
6929
+ * @param {String} tagName - The name of the Auro component to check against.
6930
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
6931
+ */
6932
+ elementMatch(elem, tagName) {
6933
+ const tag = tagName.toLowerCase();
6934
+ const elemTag = elem.tagName.toLowerCase();
5317
6935
 
5318
- var colorCss$3 = 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)}`;
6936
+ return elemTag === tag || elem.hasAttribute(tag);
6937
+ }
6938
+ };
5319
6939
 
5320
6940
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5321
6941
  // See LICENSE in the project root for license information.
@@ -5336,7 +6956,7 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
5336
6956
  */
5337
6957
  privateDefaults() {
5338
6958
  this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
5339
- this.runtimeUtils = new AuroLibraryRuntimeUtils();
6959
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$1$1();
5340
6960
  }
5341
6961
 
5342
6962
  // function to define props used within the scope of this component
@@ -5403,9 +7023,9 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
5403
7023
  static get styles() {
5404
7024
  return [
5405
7025
  super.styles,
5406
- i$5`${tokensCss$2}`,
7026
+ i$5`${tokensCss$3}`,
5407
7027
  i$5`${styleCss$1$1}`,
5408
- i$5`${colorCss$3}`
7028
+ i$5`${colorCss$4}`
5409
7029
  ];
5410
7030
  }
5411
7031
 
@@ -5418,7 +7038,7 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
5418
7038
  *
5419
7039
  */
5420
7040
  static register(name = "auro-icon") {
5421
- AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroIcon);
7041
+ AuroLibraryRuntimeUtils$1$1.prototype.registerComponent(name, AuroIcon);
5422
7042
  }
5423
7043
 
5424
7044
  connectedCallback() {
@@ -5439,8 +7059,12 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
5439
7059
  async firstUpdated() {
5440
7060
  await super.firstUpdated();
5441
7061
 
5442
- // Removes the SVG description for screenreader if ariaHidden is set to true
5443
- if (!this.hasAttribute('ariaHidden') && this.svg) {
7062
+ /**
7063
+ * icons provide a description for screen readers. Icon only instances Auro-button
7064
+ * depend on this description to provide context for the user using a screen reader.
7065
+ * Removes the SVG description for screen reader if ariaHidden is set to true.
7066
+ */
7067
+ if (this.hasAttribute('ariaHidden') && this.svg) {
5444
7068
  const svgDesc = this.svg.querySelector('desc');
5445
7069
 
5446
7070
  if (svgDesc) {
@@ -5461,32 +7085,102 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
5461
7085
  'svgWrapper': true,
5462
7086
  };
5463
7087
 
5464
- return x`
5465
- <div class="componentWrapper">
5466
- <div
5467
- class="${e(svgClasses)}"
5468
- title="${o(this.title || undefined)}">
5469
- <span aria-hidden="${o(this.ariaHidden || true)}" part="svg">
5470
- ${this.customSvg ? x`
5471
- <slot name="svg"></slot>
5472
- ` : x`
5473
- ${this.svg}
5474
- `
5475
- }
5476
- </span>
5477
- </div>
7088
+ return x`
7089
+ <div class="componentWrapper">
7090
+ <div
7091
+ class="${e(svgClasses)}"
7092
+ title="${o(this.title || undefined)}">
7093
+ <span aria-hidden="${o(this.ariaHidden || true)}" part="svg">
7094
+ ${this.customSvg ? x`
7095
+ <slot name="svg"></slot>
7096
+ ` : x`
7097
+ ${this.svg}
7098
+ `
7099
+ }
7100
+ </span>
7101
+ </div>
7102
+
7103
+ <div class="${e(labelClasses)}">
7104
+ <slot></slot>
7105
+ </div>
7106
+ </div>
7107
+ `;
7108
+ }
7109
+ };
7110
+
7111
+ var iconVersion$1 = '8.0.4';
7112
+
7113
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
7114
+ // See LICENSE in the project root for license information.
7115
+
7116
+ // ---------------------------------------------------------------------
7117
+
7118
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
7119
+
7120
+ let AuroLibraryRuntimeUtils$4 = class AuroLibraryRuntimeUtils {
7121
+
7122
+ /* eslint-disable jsdoc/require-param */
7123
+
7124
+ /**
7125
+ * This will register a new custom element with the browser.
7126
+ * @param {String} name - The name of the custom element.
7127
+ * @param {Object} componentClass - The class to register as a custom element.
7128
+ * @returns {void}
7129
+ */
7130
+ registerComponent(name, componentClass) {
7131
+ if (!customElements.get(name)) {
7132
+ customElements.define(name, class extends componentClass {});
7133
+ }
7134
+ }
7135
+
7136
+ /**
7137
+ * Finds and returns the closest HTML Element based on a selector.
7138
+ * @returns {void}
7139
+ */
7140
+ closestElement(
7141
+ selector, // selector like in .closest()
7142
+ base = this, // extra functionality to skip a parent
7143
+ __Closest = (el, found = el && el.closest(selector)) =>
7144
+ !el || el === document || el === window
7145
+ ? null // standard .closest() returns null for non-found selectors also
7146
+ : found
7147
+ ? found // found a selector INside this element
7148
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
7149
+ ) {
7150
+ return __Closest(base);
7151
+ }
7152
+ /* eslint-enable jsdoc/require-param */
7153
+
7154
+ /**
7155
+ * 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.
7156
+ * @param {Object} elem - The element to check.
7157
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
7158
+ * @returns {void}
7159
+ */
7160
+ handleComponentTagRename(elem, tagName) {
7161
+ const tag = tagName.toLowerCase();
7162
+ const elemTag = elem.tagName.toLowerCase();
7163
+
7164
+ if (elemTag !== tag) {
7165
+ elem.setAttribute(tag, true);
7166
+ }
7167
+ }
7168
+
7169
+ /**
7170
+ * Validates if an element is a specific Auro component.
7171
+ * @param {Object} elem - The element to validate.
7172
+ * @param {String} tagName - The name of the Auro component to check against.
7173
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
7174
+ */
7175
+ elementMatch(elem, tagName) {
7176
+ const tag = tagName.toLowerCase();
7177
+ const elemTag = elem.tagName.toLowerCase();
5478
7178
 
5479
- <div class="${e(labelClasses)}">
5480
- <slot></slot>
5481
- </div>
5482
- </div>
5483
- `;
7179
+ return elemTag === tag || elem.hasAttribute(tag);
5484
7180
  }
5485
7181
  };
5486
7182
 
5487
- var iconVersion$1 = '8.0.3';
5488
-
5489
- var styleCss$4 = i$5`.heading{margin:1.75rem 0;letter-spacing:var(--ds-text-heading-default-spacing, -0.2px);font-weight:var(--ds-text-heading-default-weight, 500)}.heading--display{margin-top:0;font-size:var(--ds-text-heading-display-size-breakpoint-sm, 2.75rem);font-weight:var(--ds-text-heading-display-weight, 100);line-height:var(--ds-text-heading-display-height-breakpoint-sm, 3.375rem)}@media screen and (min-width: 768px){.heading--display{font-size:var(--ds-text-heading-display-size-breakpoint-md, 3rem);line-height:var(--ds-text-heading-display-height-breakpoint-md, 3.75rem)}}@media screen and (min-width: 1024px){.heading--display{font-size:var(--ds-text-heading-display-size-breakpoint-lg, 3.5rem);line-height:var(--ds-text-heading-display-height-breakpoint-lg, 4.25rem)}}.heading--800{font-size:var(--ds-text-heading-800-size-breakpoint-sm, 2rem);font-weight:var(--ds-text-heading-800-weight, 500);line-height:var(--ds-text-heading-800-height-breakpoint-sm, 2.375rem)}@media screen and (min-width: 768px){.heading--800{font-size:var(--ds-text-heading-800-size-breakpoint-md, 2.25rem);line-height:var(--ds-text-heading-800-height-breakpoint-md, 2.625rem)}}@media screen and (min-width: 1024px){.heading--800{font-size:var(--ds-text-heading-800-size-breakpoint-lg, 2.5rem);line-height:var(--ds-text-heading-800-height-breakpoint-lg, 3rem)}}.heading--700{font-size:var(--ds-text-heading-700-size-breakpoint-sm, 1.75rem);font-weight:var(--ds-text-heading-700-weight, 500);line-height:var(--ds-text-heading-700-height-breakpoint-sm, 2.125rem)}@media screen and (min-width: 768px){.heading--700{font-size:var(--ds-text-heading-700-size-breakpoint-md, 2rem);line-height:var(--ds-text-heading-700-height-breakpoint-md, 2.375rem)}}@media screen and (min-width: 1024px){.heading--700{font-size:var(--ds-text-heading-700-size-breakpoint-lg, 2.25rem);line-height:var(--ds-text-heading-700-height-breakpoint-lg, 2.75rem)}}.heading--600{margin:1rem 0;font-size:var(--ds-text-heading-600-size-breakpoint-sm, 1.625rem);font-weight:var(--ds-text-heading-600-weight, 300);line-height:var(--ds-text-heading-600-height-breakpoint-sm, 1.875rem)}@media screen and (min-width: 768px){.heading--600{font-size:var(--ds-text-heading-600-size-breakpoint-md, 1.75rem);line-height:var(--ds-text-heading-600-height-breakpoint-md, 2.125rem)}}@media screen and (min-width: 1024px){.heading--600{font-size:var(--ds-text-heading-600-size-breakpoint-lg, 1.75rem);line-height:var(--ds-text-heading-600-height-breakpoint-lg, 2.25rem)}}.heading--500{margin:1rem 0;font-size:var(--ds-text-heading-500-size-breakpoint-sm, 1.375rem);font-weight:var(--ds-text-heading-500-weight, 300);line-height:var(--ds-text-heading-500-height-breakpoint-sm, 1.625rem)}@media screen and (min-width: 768px){.heading--500{font-size:var(--ds-text-heading-500-size-breakpoint-md, 1.5rem);line-height:var(--ds-text-heading-500-height-breakpoint-md, 1.875rem)}}@media screen and (min-width: 1024px){.heading--500{font-size:var(--ds-text-heading-500-size-breakpoint-lg, 1.5rem);line-height:var(--ds-text-heading-500-height-breakpoint-lg, 2rem)}}.heading--400{margin:.75rem 0;font-size:var(--ds-text-heading-400-size, 1.25rem);font-weight:var(--ds-text-heading-400-weight, 300);line-height:var(--ds-text-heading-400-height, 1.625rem)}.heading--300{margin:.75rem 0;font-size:var(--ds-text-heading-300-size, 1.125rem);font-weight:var(--ds-text-heading-300-weight, 300);line-height:var(--ds-text-heading-300-height, 1.625rem)}:host([no-margin-block]) .heading{margin-block:0}.util_stackMarginnone--bottom{margin-bottom:0}.util_stackMargin25--bottom{margin-bottom:var(--ds-size-25, 0.125rem)}.util_stackMargin50--bottom{margin-bottom:var(--ds-size-50, 0.25rem)}.util_stackMargin100--bottom{margin-bottom:var(--ds-size-100, 0.5rem)}.util_stackMargin150--bottom{margin-bottom:var(--ds-size-150, 0.75rem)}.util_stackMargin200--bottom{margin-bottom:var(--ds-size-200, 1rem)}.util_stackMargin300--bottom{margin-bottom:var(--ds-size-300, 1.5rem)}.util_stackMargin400--bottom{margin-bottom:var(--ds-size-400, 2rem)}.util_stackMargin600--bottom{margin-bottom:var(--ds-size-600, 3rem)}.util_stackMargin800--bottom{margin-bottom:var(--ds-size-800, 4rem)}.util_stackMarginnone--top{margin-top:0}.util_stackMargin25--top{margin-top:var(--ds-size-25, 0.125rem)}.util_stackMargin50--top{margin-top:var(--ds-size-50, 0.25rem)}.util_stackMargin100--top{margin-top:var(--ds-size-100, 0.5rem)}.util_stackMargin150--top{margin-top:var(--ds-size-150, 0.75rem)}.util_stackMargin200--top{margin-top:var(--ds-size-200, 1rem)}.util_stackMargin300--top{margin-top:var(--ds-size-300, 1.5rem)}.util_stackMargin400--top{margin-top:var(--ds-size-400, 2rem)}.util_stackMargin600--top{margin-top:var(--ds-size-600, 3rem)}.util_stackMargin800--top{margin-top:var(--ds-size-800, 4rem)}`;
7183
+ var styleCss$5 = i$5`.heading{margin:1.75rem 0;letter-spacing:var(--ds-text-heading-default-spacing, -0.2px);font-weight:var(--ds-text-heading-default-weight, 500)}.heading--display{margin-top:0;font-size:var(--ds-text-heading-display-size-breakpoint-sm, 2.75rem);font-weight:var(--ds-text-heading-display-weight, 100);line-height:var(--ds-text-heading-display-height-breakpoint-sm, 3.375rem)}@media screen and (min-width: 768px){.heading--display{font-size:var(--ds-text-heading-display-size-breakpoint-md, 3rem);line-height:var(--ds-text-heading-display-height-breakpoint-md, 3.75rem)}}@media screen and (min-width: 1024px){.heading--display{font-size:var(--ds-text-heading-display-size-breakpoint-lg, 3.5rem);line-height:var(--ds-text-heading-display-height-breakpoint-lg, 4.25rem)}}.heading--800{font-size:var(--ds-text-heading-800-size-breakpoint-sm, 2rem);font-weight:var(--ds-text-heading-800-weight, 500);line-height:var(--ds-text-heading-800-height-breakpoint-sm, 2.375rem)}@media screen and (min-width: 768px){.heading--800{font-size:var(--ds-text-heading-800-size-breakpoint-md, 2.25rem);line-height:var(--ds-text-heading-800-height-breakpoint-md, 2.625rem)}}@media screen and (min-width: 1024px){.heading--800{font-size:var(--ds-text-heading-800-size-breakpoint-lg, 2.5rem);line-height:var(--ds-text-heading-800-height-breakpoint-lg, 3rem)}}.heading--700{font-size:var(--ds-text-heading-700-size-breakpoint-sm, 1.75rem);font-weight:var(--ds-text-heading-700-weight, 500);line-height:var(--ds-text-heading-700-height-breakpoint-sm, 2.125rem)}@media screen and (min-width: 768px){.heading--700{font-size:var(--ds-text-heading-700-size-breakpoint-md, 2rem);line-height:var(--ds-text-heading-700-height-breakpoint-md, 2.375rem)}}@media screen and (min-width: 1024px){.heading--700{font-size:var(--ds-text-heading-700-size-breakpoint-lg, 2.25rem);line-height:var(--ds-text-heading-700-height-breakpoint-lg, 2.75rem)}}.heading--600{margin:1rem 0;font-size:var(--ds-text-heading-600-size-breakpoint-sm, 1.625rem);font-weight:var(--ds-text-heading-600-weight, 300);line-height:var(--ds-text-heading-600-height-breakpoint-sm, 1.875rem)}@media screen and (min-width: 768px){.heading--600{font-size:var(--ds-text-heading-600-size-breakpoint-md, 1.75rem);line-height:var(--ds-text-heading-600-height-breakpoint-md, 2.125rem)}}@media screen and (min-width: 1024px){.heading--600{font-size:var(--ds-text-heading-600-size-breakpoint-lg, 1.75rem);line-height:var(--ds-text-heading-600-height-breakpoint-lg, 2.25rem)}}.heading--500{margin:1rem 0;font-size:var(--ds-text-heading-500-size-breakpoint-sm, 1.375rem);font-weight:var(--ds-text-heading-500-weight, 300);line-height:var(--ds-text-heading-500-height-breakpoint-sm, 1.625rem)}@media screen and (min-width: 768px){.heading--500{font-size:var(--ds-text-heading-500-size-breakpoint-md, 1.5rem);line-height:var(--ds-text-heading-500-height-breakpoint-md, 1.875rem)}}@media screen and (min-width: 1024px){.heading--500{font-size:var(--ds-text-heading-500-size-breakpoint-lg, 1.5rem);line-height:var(--ds-text-heading-500-height-breakpoint-lg, 2rem)}}.heading--400{margin:.75rem 0;font-size:var(--ds-text-heading-400-size, 1.25rem);font-weight:var(--ds-text-heading-400-weight, 300);line-height:var(--ds-text-heading-400-height, 1.625rem)}.heading--300{margin:.75rem 0;font-size:var(--ds-text-heading-300-size, 1.125rem);font-weight:var(--ds-text-heading-300-weight, 300);line-height:var(--ds-text-heading-300-height, 1.625rem)}:host([no-margin-block]) .heading{margin-block:0}.util_stackMarginnone--bottom{margin-bottom:0}.util_stackMargin25--bottom{margin-bottom:var(--ds-size-25, 0.125rem)}.util_stackMargin50--bottom{margin-bottom:var(--ds-size-50, 0.25rem)}.util_stackMargin100--bottom{margin-bottom:var(--ds-size-100, 0.5rem)}.util_stackMargin150--bottom{margin-bottom:var(--ds-size-150, 0.75rem)}.util_stackMargin200--bottom{margin-bottom:var(--ds-size-200, 1rem)}.util_stackMargin300--bottom{margin-bottom:var(--ds-size-300, 1.5rem)}.util_stackMargin400--bottom{margin-bottom:var(--ds-size-400, 2rem)}.util_stackMargin600--bottom{margin-bottom:var(--ds-size-600, 3rem)}.util_stackMargin800--bottom{margin-bottom:var(--ds-size-800, 4rem)}.util_stackMarginnone--top{margin-top:0}.util_stackMargin25--top{margin-top:var(--ds-size-25, 0.125rem)}.util_stackMargin50--top{margin-top:var(--ds-size-50, 0.25rem)}.util_stackMargin100--top{margin-top:var(--ds-size-100, 0.5rem)}.util_stackMargin150--top{margin-top:var(--ds-size-150, 0.75rem)}.util_stackMargin200--top{margin-top:var(--ds-size-200, 1rem)}.util_stackMargin300--top{margin-top:var(--ds-size-300, 1.5rem)}.util_stackMargin400--top{margin-top:var(--ds-size-400, 2rem)}.util_stackMargin600--top{margin-top:var(--ds-size-600, 3rem)}.util_stackMargin800--top{margin-top:var(--ds-size-800, 4rem)}`;
5490
7184
 
5491
7185
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5492
7186
  // See LICENSE in the project root for license information.
@@ -5515,7 +7209,7 @@ class AuroHeader extends i$2 {
5515
7209
  /**
5516
7210
  * @private
5517
7211
  */
5518
- this.runtimeUtils = new AuroLibraryRuntimeUtils();
7212
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$4();
5519
7213
  }
5520
7214
 
5521
7215
  // function to define props used within the scope of this component
@@ -5533,7 +7227,7 @@ class AuroHeader extends i$2 {
5533
7227
  }
5534
7228
 
5535
7229
  static get styles() {
5536
- return [styleCss$4];
7230
+ return [styleCss$5];
5537
7231
  }
5538
7232
 
5539
7233
  /**
@@ -5545,7 +7239,7 @@ class AuroHeader extends i$2 {
5545
7239
  *
5546
7240
  */
5547
7241
  static register(name = "auro-header") {
5548
- AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroHeader);
7242
+ AuroLibraryRuntimeUtils$4.prototype.registerComponent(name, AuroHeader);
5549
7243
  }
5550
7244
 
5551
7245
  firstUpdated() {
@@ -5641,17 +7335,30 @@ class AuroBibtemplate extends i$2 {
5641
7335
 
5642
7336
  this.large = false;
5643
7337
 
5644
- AuroLibraryRuntimeUtils.prototype.handleComponentTagRename(this, 'auro-bibtemplate');
7338
+ AuroLibraryRuntimeUtils$3.prototype.handleComponentTagRename(this, 'auro-bibtemplate');
5645
7339
 
5646
7340
  const versioning = new AuroDependencyVersioning();
7341
+
7342
+ /**
7343
+ * @private
7344
+ */
5647
7345
  this.iconTag = versioning.generateTag('auro-formkit-bibtemplate-icon', iconVersion$1, AuroIcon$1);
7346
+
7347
+ /**
7348
+ * @private
7349
+ */
5648
7350
  this.headerTag = versioning.generateTag('auro-formkit-bibtemplate-header', headerVersion, AuroHeader);
7351
+
7352
+ /**
7353
+ * @private
7354
+ */
7355
+ this.buttonTag = versioning.generateTag('auro-formkit-input-button', buttonVersion, AuroButton);
5649
7356
  }
5650
7357
 
5651
7358
  static get styles() {
5652
7359
  return [
5653
- colorCss$1$1,
5654
- styleCss$2$1,
7360
+ colorCss$3$1,
7361
+ styleCss$4$1,
5655
7362
  tokenCss
5656
7363
  ];
5657
7364
  }
@@ -5680,7 +7387,7 @@ class AuroBibtemplate extends i$2 {
5680
7387
  *
5681
7388
  */
5682
7389
  static register(name = "auro-bibtemplate") {
5683
- AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroBibtemplate);
7390
+ AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroBibtemplate);
5684
7391
  }
5685
7392
 
5686
7393
  /**
@@ -5720,15 +7427,27 @@ class AuroBibtemplate extends i$2 {
5720
7427
  this.setAttribute('exportparts', 'bibtemplate:dropdownBibTemplate');
5721
7428
  }
5722
7429
 
7430
+ firstUpdated(changedProperties) {
7431
+ super.firstUpdated(changedProperties);
7432
+
7433
+ this.dispatchEvent(new CustomEvent("auro-bibtemplate-connected", {
7434
+ bubbles: true,
7435
+ composed: true,
7436
+ detail: {
7437
+ element: this
7438
+ }
7439
+ }));
7440
+ }
7441
+
5723
7442
  // function that renders the HTML and CSS into the scope of the component
5724
7443
  render() {
5725
7444
  return u`
5726
7445
  <div id="bibTemplate" part="bibtemplate">
5727
7446
  ${this.isFullscreen ? u`
5728
7447
  <div id="headerContainer">
5729
- <button id="closeButton" @click="${this.onCloseButtonClick}">
7448
+ <${this.buttonTag} id="closeButton" variant="ghost" shape="circle" size="sm" @click="${this.onCloseButtonClick}">
5730
7449
  <${this.iconTag} category="interface" name="x-lg"></${this.iconTag}>
5731
- </button>
7450
+ </${this.buttonTag}>
5732
7451
  <${this.headerTag} display="${this.large ? 'display' : '600'}" level="3" size="none" id="header" no-margin-block>
5733
7452
  <slot name="header"></slot>
5734
7453
  </${this.headerTag}>
@@ -5752,11 +7471,219 @@ class AuroBibtemplate extends i$2 {
5752
7471
 
5753
7472
  var bibTemplateVersion = '1.0.0';
5754
7473
 
5755
- i$5`:focus:not(:focus-visible){outline:3px solid transparent}:host{display:inline-block;width:100%;margin:0;padding:0;vertical-align:middle}:host ::slotted(auro-menuoption),:host ::slotted([auro-menuoption]),:host auro-menuoption[loadingplaceholder]{padding-left:calc(var(--ds-size-150, 0.75rem) + 24px + var(--ds-size-100, 0.5rem))}:host ::slotted([selected]){padding-left:0}:host ::slotted(hr){box-sizing:content-box !important;height:0 !important;overflow:visible !important;margin:var(--ds-size-100, 0.5rem) 0 !important;border-width:0 !important;border-top-width:1px !important;border-top-style:solid !important}:host([nocheckmark]) ::slotted(auro-menuoption),:host([nocheckmark]) auro-menuoption[loadingplaceholder]{padding-left:var(--ds-size-200, 1rem)}:host([root]){overflow-y:auto}[loadingplaceholder].empty{opacity:0;position:absolute}[loadingplaceholder] slot[name=loadingIcon]{vertical-align:middle;line-height:1;display:inline-block}[loadingplaceholder] slot[name=loadingIcon]::slotted(*){margin-right:var(--ds-size-150, 0.75rem)}`;
7474
+ var colorCss$3 = i$5`:host([error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error, #e31f26)}:host([onDark]){--ds-auro-helptext-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error-subtle, #fbc6c6)}.helptext-wrapper{color:var(--ds-auro-helptext-color)}`;
7475
+
7476
+ var styleCss$4 = i$5`.helptext-wrapper{display:none;font-size:12px;font-weight:450;letter-spacing:0;line-height:16px}:host([large]) .helptext-wrapper{font-size:16px;font-weight:450;letter-spacing:0;line-height:24px}.helptext-wrapper[visible]{display:block}::slotted(*:not(:empty)){margin-top:var(--ds-size-50, 0.25rem);margin-bottom:0}::slotted(p){margin-block:0}`;
7477
+
7478
+ var tokensCss$2 = i$5`:host{--ds-auro-helptext-color: var(--ds-basic-color-texticon-muted, #676767)}`;
7479
+
7480
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
7481
+ // See LICENSE in the project root for license information.
7482
+
7483
+ // ---------------------------------------------------------------------
7484
+
7485
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
7486
+
7487
+ let AuroLibraryRuntimeUtils$1 = class AuroLibraryRuntimeUtils {
7488
+
7489
+ /* eslint-disable jsdoc/require-param */
7490
+
7491
+ /**
7492
+ * This will register a new custom element with the browser.
7493
+ * @param {String} name - The name of the custom element.
7494
+ * @param {Object} componentClass - The class to register as a custom element.
7495
+ * @returns {void}
7496
+ */
7497
+ registerComponent(name, componentClass) {
7498
+ if (!customElements.get(name)) {
7499
+ customElements.define(name, class extends componentClass {});
7500
+ }
7501
+ }
7502
+
7503
+ /**
7504
+ * Finds and returns the closest HTML Element based on a selector.
7505
+ * @returns {void}
7506
+ */
7507
+ closestElement(
7508
+ selector, // selector like in .closest()
7509
+ base = this, // extra functionality to skip a parent
7510
+ __Closest = (el, found = el && el.closest(selector)) =>
7511
+ !el || el === document || el === window
7512
+ ? null // standard .closest() returns null for non-found selectors also
7513
+ : found
7514
+ ? found // found a selector INside this element
7515
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
7516
+ ) {
7517
+ return __Closest(base);
7518
+ }
7519
+ /* eslint-enable jsdoc/require-param */
7520
+
7521
+ /**
7522
+ * 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.
7523
+ * @param {Object} elem - The element to check.
7524
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
7525
+ * @returns {void}
7526
+ */
7527
+ handleComponentTagRename(elem, tagName) {
7528
+ const tag = tagName.toLowerCase();
7529
+ const elemTag = elem.tagName.toLowerCase();
7530
+
7531
+ if (elemTag !== tag) {
7532
+ elem.setAttribute(tag, true);
7533
+ }
7534
+ }
7535
+
7536
+ /**
7537
+ * Validates if an element is a specific Auro component.
7538
+ * @param {Object} elem - The element to validate.
7539
+ * @param {String} tagName - The name of the Auro component to check against.
7540
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
7541
+ */
7542
+ elementMatch(elem, tagName) {
7543
+ const tag = tagName.toLowerCase();
7544
+ const elemTag = elem.tagName.toLowerCase();
7545
+
7546
+ return elemTag === tag || elem.hasAttribute(tag);
7547
+ }
7548
+ };
7549
+
7550
+ // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
7551
+ // See LICENSE in the project root for license information.
7552
+
7553
+
7554
+ /**
7555
+ * Displays help text or error messages within form elements - Internal Use Only.
7556
+ *
7557
+ * @attr { Boolean } large - If declared, make font-size to 1rem(16px).
7558
+ */
7559
+ class AuroHelpText extends i$2 {
7560
+
7561
+ constructor() {
7562
+ super();
7563
+
7564
+ this.error = false;
7565
+ this.onDark = false;
7566
+ this.hasTextContent = false;
7567
+
7568
+ AuroLibraryRuntimeUtils$1.prototype.handleComponentTagRename(this, 'auro-helptext');
7569
+ }
7570
+
7571
+ static get styles() {
7572
+ return [
7573
+ colorCss$3,
7574
+ styleCss$4,
7575
+ tokensCss$2
7576
+ ];
7577
+ }
7578
+
7579
+ // function to define props used within the scope of this component
7580
+ static get properties() {
7581
+ return {
7582
+
7583
+ /**
7584
+ * @private
7585
+ */
7586
+ slotNodes: {
7587
+ type: Boolean,
7588
+ },
7589
+
7590
+ /**
7591
+ * @private
7592
+ */
7593
+ hasTextContent: {
7594
+ type: Boolean,
7595
+ },
7596
+
7597
+ /**
7598
+ * If declared, make font color red.
7599
+ */
7600
+ error: {
7601
+ type: Boolean,
7602
+ reflect: true,
7603
+ },
7604
+
7605
+ /**
7606
+ * If declared, will apply onDark styles.
7607
+ */
7608
+ onDark: {
7609
+ type: Boolean,
7610
+ reflect: true
7611
+ }
7612
+ };
7613
+ }
7614
+
7615
+ /**
7616
+ * This will register this element with the browser.
7617
+ * @param {string} [name="auro-helptext"] - The name of element that you want to register to.
7618
+ *
7619
+ * @example
7620
+ * AuroCheckbox.register("custom-helptext") // this will register this element to <custom-helptext/>
7621
+ *
7622
+ */
7623
+ static register(name = "auro-helptext") {
7624
+ AuroLibraryRuntimeUtils$1.prototype.registerComponent(name, AuroHelpText);
7625
+ }
7626
+
7627
+ updated() {
7628
+ this.handleSlotChange();
7629
+ }
7630
+
7631
+ handleSlotChange(event) {
7632
+ if (event) {
7633
+ this.slotNodes = event.target.assignedNodes();
7634
+ }
7635
+
7636
+ this.hasTextContent = this.checkSlotsForContent(this.slotNodes);
7637
+ }
7638
+
7639
+ /**
7640
+ * Checks if any of the provided nodes or their nested slot nodes contain non-empty text content.
7641
+ *
7642
+ * @param {NodeList|Array} nodes - The list of nodes to check for content.
7643
+ * @returns {boolean} - Returns true if any node or nested slot node contains non-empty text content, otherwise false.
7644
+ * @private
7645
+ */
7646
+ checkSlotsForContent(nodes) {
7647
+ if (!nodes) {
7648
+ return false;
7649
+ }
7650
+
7651
+ return nodes.some((node) => {
7652
+ if (node.textContent.trim()) {
7653
+ return true;
7654
+ }
7655
+
7656
+ if (!node.querySelector) {
7657
+ return false;
7658
+ }
7659
+
7660
+ const nestedSlot = node.tagName === 'SLOT' ? node : node.querySelector('slot');
7661
+ if (!nestedSlot) {
7662
+ return false;
7663
+ }
7664
+
7665
+ const nestedSlotNodes = nestedSlot.assignedNodes();
7666
+ return this.checkSlotsForContent(nestedSlotNodes);
7667
+ });
7668
+ }
7669
+
7670
+ // function that renders the HTML and CSS into the scope of the component
7671
+ render() {
7672
+ return x`
7673
+ <div class="helptext-wrapper" ?visible="${this.hasTextContent}">
7674
+ <slot @slotchange=${this.handleSlotChange}></slot>
7675
+ </div>
7676
+ `;
7677
+ }
7678
+ }
7679
+
7680
+ var helpTextVersion = '1.0.0';
7681
+
7682
+ i$5`:focus:not(:focus-visible){outline:3px solid transparent}:host{display:block;vertical-align:middle}:host .wrapper{box-sizing:border-box;display:inline-block;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;line-height:1;display:inline-block}:host [loadingplaceholder] slot[name=loadingIcon]::slotted(*){margin-right:var(--ds-size-150, 0.75rem)}:host([root]){overflow-y:auto}:host([root]) .wrapper[class*=-lg]{padding:var(--ds-size-150, 0.75rem)}:host([root]) .wrapper[class*=-xl]{padding:var(--ds-size-200, 1rem)}`;
5756
7683
 
5757
7684
  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)}`;
5758
7685
 
5759
- 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-icon-color: transparent;--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}`;
7686
+ 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)}`;
5760
7687
 
5761
7688
  // Copyright (c) 2021 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5762
7689
  // See LICENSE in the project root for license information.
@@ -5803,9 +7730,9 @@ function arrayConverter(value) {
5803
7730
  throw new Error('Invalid value: Input must be an array or undefined');
5804
7731
  }
5805
7732
 
5806
- i$5`:host{display:flex;align-items:center;padding:var(--ds-size-50, 0.25rem) var(--ds-size-200, 1rem) var(--ds-size-50, 0.25rem) 0;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}:host slot{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host [auro-icon]{--ds-auro-icon-size: var(--ds-size-300, 1.5rem);margin-right:var(--ds-size-150, 0.75rem);margin-left:var(--ds-size-100, 0.5rem)}:host ::slotted(.nestingSpacer){display:inline-block;width:var(--ds-size-300, 1.5rem)}:host ::slotted(strong){font-weight:700}:host([hidden]){display:none}:host([static]){pointer-events:none}:host([disabled]:hover){cursor:auto}:host([disabled]){user-select:none;pointer-events:none}`;
7733
+ i$5`: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) + 24px + var(--ds-size-100, 0.5rem));padding-top:var(--ds-size-50, 0.25rem);padding-bottom:var(--ds-size-50, 0.25rem);-webkit-tap-highlight-color:transparent}:host .wrapper[class*=shape-box],:host .wrapper[class*=shape-snowflake]{border-radius:unset}:host .wrapper[class*=shape-pill]{border-radius:30px}:host .wrapper[class*=-lg]{font-size:var(--ds-text-body-size-lg, 1.125rem);line-height:var(--ds-text-body-height-lg, 1.625rem);padding-top:var(--ds-size-75, 0.375rem);padding-bottom:var(--ds-size-75, 0.375rem);padding-right:var(--ds-size-150, 0.75rem)}:host .wrapper[class*=-lg]:not(:last-child){margin-bottom:var(--ds-size-50, 0.25rem)}:host .wrapper[class*=-xl]{font-size:var(--ds-text-body-size-lg, 1.125rem);line-height:var(--ds-text-body-height-lg, 1.625rem);padding-top:var(--ds-size-100, 0.5rem);padding-bottom:var(--ds-size-100, 0.5rem);padding-right:var(--ds-size-200, 1rem)}:host .wrapper[class*=-xl]:not(:last-child){margin-bottom:var(--ds-size-100, 0.5rem)}:host slot{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host [auro-icon]{--ds-auro-icon-size: var(--ds-size-300, 1.5rem);margin-right:var(--ds-size-150, 0.75rem);margin-left:var(--ds-size-100, 0.5rem)}:host ::slotted(.nestingSpacer){display:inline-block;width:var(--ds-size-300, 1.5rem)}:host ::slotted(strong){font-weight:700}:host([loadingplaceholder]) .wrapper{padding-left:calc(var(--ds-size-150, 0.75rem) + 24px + 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}`;
5807
7734
 
5808
- i$5`:host{background-color:var(--ds-auro-menuoption-container-color);color:var(--ds-auro-menuoption-text-color)}:host svg{fill:var(--ds-auro-menuoption-icon-color)}:host([disabled]){--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host(:hover),:host(.active){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-neutral-subtle, #f7f7f7)}:host([selected]){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-menuoption-icon-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([selected]):host(:hover),:host([selected]):host(.active){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected-hover, #00274a)}`;
7735
+ i$5`:host .wrapper{border:1px solid var(--ds-auro-menuoption-container-border-color);background-color:var(--ds-auro-menuoption-container-color);color:var(--ds-auro-menuoption-text-color)}:host svg{fill:var(--ds-auro-menuoption-icon-color)}:host([disabled]){--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host(:hover),:host(.active){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-neutral-subtle, #f7f7f7)}:host([selected]){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-menuoption-icon-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([selected]):host(:hover),:host([selected]):host(.active){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected-hover, #00274a)}`;
5809
7736
 
5810
7737
  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}`;
5811
7738
 
@@ -5813,7 +7740,7 @@ i$5`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-default, #2a2a2a);-
5813
7740
 
5814
7741
  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)}`;
5815
7742
 
5816
- var styleCss$3 = i$5`:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}[slot=trigger]{width:100%;padding:0;border:0;cursor:pointer;font-family:inherit;font-size:inherit;text-align:left}[slot=trigger] .nestingSpacer{display:none}[slot=trigger] #placeholder.hidden{position:absolute;z-index:-1;opacity:0;pointer-events:none}:host .nativeSelectWrapper{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0, 0, 0, 0);opacity:.01}:host [auro-dropdown]{position:relative}:host [auro-dropdown]::part(trigger){max-height:var(--ds-size-300, 1.5rem)}:host [auro-dropdown]::part(popover){max-width:-webkit-fill-available;overflow-y:scroll}:host([disabled]) *{user-select:none}.outerWrapper{position:relative}auro-menuoption{padding:0;pointer-events:none}.menuWrapper{padding:var(--ds-size-50, 0.25rem) 0}:host([multiselect]) [slot=trigger]{display:flex}:host([multiselect]) auro-menuoption:not(:first-child){margin-left:var(--ds-size-100)}#slotHolder{display:none}`;
7743
+ var styleCss$3 = i$5`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color)}.mainContent{position:relative;display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:8px}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent,:host([layout*=snowflake]) .triggerContent{padding:0 8px 0 24px}:host([layout*=classic]) .triggerContent{padding:0 8px}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{cursor:text;font-size:16px;font-weight:450;letter-spacing:0;line-height:24px}:host([layout*=classic]) label.withValue{font-size:12px;font-weight:450;letter-spacing:0;line-height:16px}:host([layout*=classic]) .value{height:auto;font-size:16px;font-weight:450;letter-spacing:0;line-height:24px}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error-subtle, #fbc6c6);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([disabled]) *{user-select:none}`;
5817
7744
 
5818
7745
  // Copyright (c) 2021 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5819
7746
  // See LICENSE in the project root for license information.
@@ -5826,16 +7753,19 @@ var styleCss$3 = i$5`:focus:not(:focus-visible){outline:3px solid transparent}.u
5826
7753
  * @slot - Default slot for the menu content.
5827
7754
  * @slot bib.fullscreen.headline - Defines the headline to display above menu-options
5828
7755
  * @slot label - Defines the content of the label.
7756
+ * @slot {HTMLSlotElement} optionalLabel - Allows overriding the optional display text "(optional)", which appears next to the label.
5829
7757
  * @slot helpText - Defines the content of the helpText.
5830
7758
  * @slot placeholder - Defines the content of the placeholder to be shown when there is no value
7759
+ * @slot valueText - Dropdown value text display.
7760
+ * @slot displayValue - Allows custom HTML content to display the selected value when select is not focused.
5831
7761
  * @event auroSelect-valueSet - Notifies that the component has a new value set.
5832
- * @event input - Notifies every time the value prop of the element is changed.
7762
+ * @event input - Notifies every time the value prop of the element is changed. The updated `value` and `optionSelected` will be delivered in `detail` object.
5833
7763
  * @event auroFormElement-validated - Notifies that the `validity` and `errorMessage` values have changed.
5834
7764
  * @csspart helpText - Apply CSS to the help text.
5835
7765
  */
5836
7766
 
5837
7767
  // build the component class
5838
- class AuroSelect extends i$2 {
7768
+ class AuroSelect extends AuroElement$4 {
5839
7769
  constructor() {
5840
7770
  super();
5841
7771
 
@@ -5845,12 +7775,25 @@ class AuroSelect extends i$2 {
5845
7775
  const idSubstrEnd = 8;
5846
7776
  const idSubstrStart = 2;
5847
7777
 
7778
+ this.matchWidth = false;
7779
+
7780
+ // Layout Config
7781
+ this.layout = 'snowflake';
7782
+ this.shape = 'snowflake';
7783
+ this.size = 'xl';
7784
+
5848
7785
  // floaterConfig
5849
7786
  this.placement = 'bottom-start';
5850
7787
  this.offset = 0;
5851
7788
  this.noFlip = false;
5852
7789
  this.autoPlacement = false;
5853
7790
 
7791
+ this.forceDisplayValue = false;
7792
+
7793
+ this.layout = 'classic';
7794
+ this.shape = 'classic';
7795
+ this.size = 'xl';
7796
+
5854
7797
  /**
5855
7798
  * @private
5856
7799
  */
@@ -5866,7 +7809,7 @@ class AuroSelect extends i$2 {
5866
7809
  /**
5867
7810
  * @private
5868
7811
  */
5869
- this.runtimeUtils = new AuroLibraryRuntimeUtils$3();
7812
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$6();
5870
7813
 
5871
7814
  /**
5872
7815
  * Generate unique names for dependency components.
@@ -5883,10 +7826,25 @@ class AuroSelect extends i$2 {
5883
7826
  */
5884
7827
  this.bibtemplateTag = versioning.generateTag('auro-formkit-select-bibtemplate', bibTemplateVersion, AuroBibtemplate);
5885
7828
 
7829
+ /**
7830
+ * @private
7831
+ */
7832
+ this.helpTextTag = versioning.generateTag('auro-formkit-input-helptext', helpTextVersion, AuroHelpText);
7833
+
5886
7834
  /**
5887
7835
  * @private
5888
7836
  */
5889
7837
  this.isHiddenWhileLoading = false;
7838
+
7839
+ /**
7840
+ * @private
7841
+ */
7842
+ this.hasFocus = false;
7843
+
7844
+ /**
7845
+ * @private
7846
+ */
7847
+ this.hasDisplayValueContent = false;
5890
7848
  }
5891
7849
 
5892
7850
  /**
@@ -5900,6 +7858,7 @@ class AuroSelect extends i$2 {
5900
7858
  this.value = undefined;
5901
7859
  this.fullscreenBreakpoint = 'sm';
5902
7860
  this.onDark = false;
7861
+ this.isPopoverVisible = false;
5903
7862
  }
5904
7863
 
5905
7864
  // This function is to define props used within the scope of this component
@@ -5916,6 +7875,14 @@ class AuroSelect extends i$2 {
5916
7875
  reflect: true
5917
7876
  },
5918
7877
 
7878
+ /**
7879
+ * If declared, the label and value will be visually hidden and the displayValue will render 100% of the time.
7880
+ */
7881
+ forceDisplayValue: {
7882
+ type: Boolean,
7883
+ reflect: true
7884
+ },
7885
+
5919
7886
  /**
5920
7887
  * If declared, bib's position will be automatically calculated where to appear.
5921
7888
  * @default false
@@ -5934,21 +7901,29 @@ class AuroSelect extends i$2 {
5934
7901
  },
5935
7902
 
5936
7903
  /**
5937
- * The name for the select element.
7904
+ * @private
5938
7905
  */
5939
- name: {
5940
- type: String,
5941
- reflect: true
7906
+ isPopoverVisible: {
7907
+ type: Boolean,
7908
+ reflect: false
5942
7909
  },
5943
7910
 
5944
7911
  /**
5945
- * If set, makes dropdown width match the size of the content, rather than the width of the trigger.
7912
+ * If declared, the popover and trigger will be set to the same width.
5946
7913
  */
5947
- flexMenuWidth: {
7914
+ matchWidth: {
5948
7915
  type: Boolean,
5949
7916
  reflect: true
5950
7917
  },
5951
7918
 
7919
+ /**
7920
+ * The name for the select element.
7921
+ */
7922
+ name: {
7923
+ type: String,
7924
+ reflect: true
7925
+ },
7926
+
5952
7927
  /**
5953
7928
  * Defines the screen size breakpoint (`xs`, `sm`, `md`, `lg`, `xl`, `disabled`)
5954
7929
  * at which the dropdown switches to fullscreen mode on mobile. `disabled` indicates a dropdown should _never_ enter fullscreen.
@@ -6042,7 +8017,7 @@ class AuroSelect extends i$2 {
6042
8017
  * "top" | "right" | "bottom" | "left" |
6043
8018
  * "bottom-start" | "top-start" | "top-end" |
6044
8019
  * "right-start" | "right-end" | "bottom-end" |
6045
- * "left-start" | "left-end"
8020
+ * "left-start" | "left-end".
6046
8021
  * @default bottom-start
6047
8022
  */
6048
8023
  placement: {
@@ -6122,12 +8097,58 @@ class AuroSelect extends i$2 {
6122
8097
  type: Boolean,
6123
8098
  reflect: true,
6124
8099
  attribute: false
6125
- }
8100
+ },
8101
+
8102
+ /**
8103
+ * @private
8104
+ */
8105
+ hasFocus: {
8106
+ type: Boolean,
8107
+ reflect: false,
8108
+ attribute: false
8109
+ },
8110
+
8111
+ /**
8112
+ * @private
8113
+ */
8114
+ hasDisplayValueContent: {
8115
+ type: Boolean,
8116
+ reflect: false,
8117
+ attribute: false
8118
+ },
6126
8119
  };
6127
8120
  }
6128
8121
 
6129
8122
  static get styles() {
6130
- return [styleCss$3];
8123
+ return [
8124
+ i$5`${shapeSizeCss$1}`,
8125
+ i$5`${tokensCss$5}`,
8126
+ i$5`${styleCss$3}`,
8127
+ ];
8128
+ }
8129
+
8130
+ /**
8131
+ * Returns classmap configuration for html5 input labels in all layouts.
8132
+ * @private
8133
+ * @returns {void}
8134
+ */
8135
+ get commonLabelClasses() {
8136
+ return {
8137
+ 'is-disabled': this.disabled,
8138
+ 'withValue': this.value && this.value.length > 0,
8139
+ 'util_displayHiddenVisually': this.hasDisplayValueContent && !this.hasFocus && this.value && this.value.length > 0
8140
+ };
8141
+ }
8142
+
8143
+ /**
8144
+ * Returns classmap configuration for wrapper elements in each layout.
8145
+ * @private
8146
+ * @returns {object} - Returns classmap.
8147
+ */
8148
+ get commonWrapperClasses() {
8149
+ return {
8150
+ 'wrapper': true
8151
+ };
6131
8152
  }
6132
8153
 
6133
8154
  /**
@@ -6137,11 +8158,28 @@ class AuroSelect extends i$2 {
6137
8158
  */
6138
8159
  configureDropdown() {
6139
8160
  this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
6140
- this.menuWrapper = this.dropdown.querySelector('.menuWrapper');
8161
+
8162
+ this.dropdown.addEventListener('auroDropdown-toggled', () => {
8163
+ this.isPopoverVisible = this.dropdown.isPopoverVisible;
8164
+
8165
+ if (this.dropdown.isPopoverVisible) {
8166
+ // wait til the bib gets fully rendered
8167
+ setTimeout(() => {
8168
+ if (this.dropdown.isBibFullscreen) {
8169
+ // trigger holds the focus since menu is not a focusable element.
8170
+ this.dropdown.trigger.focus();
8171
+
8172
+ // default focus indicator on the first menu option
8173
+ if (this.menu.index < 0) {
8174
+ this.menu.navigateOptions('down');
8175
+ }
8176
+ }
8177
+ });
8178
+ }
8179
+ });
6141
8180
 
6142
8181
  // setting up bibtemplate
6143
- this.bibtemplate = this.dropdown.querySelector(this.bibtemplateTag._$litStatic$); // eslint-disable-line no-underscore-dangle
6144
- this.bibtemplate.append(this.menuWrapper);
8182
+ this.bibtemplate = this.dropdown.querySelector(this.bibtemplateTag._$litStatic$);
6145
8183
 
6146
8184
  if (this.customBibWidth) {
6147
8185
  this.dropdown.dropdownWidth = this.customBibWidth;
@@ -6160,7 +8198,7 @@ class AuroSelect extends i$2 {
6160
8198
  *
6161
8199
  */
6162
8200
  static register(name = "auro-select") {
6163
- AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroSelect);
8201
+ AuroLibraryRuntimeUtils$6.prototype.registerComponent(name, AuroSelect);
6164
8202
  }
6165
8203
 
6166
8204
  /**
@@ -6171,27 +8209,34 @@ class AuroSelect extends i$2 {
6171
8209
  updateDisplayedValue() {
6172
8210
  const triggerContentEl = this.dropdown.querySelector('#triggerFocus');
6173
8211
 
6174
- // Clear everything except placeholder
6175
- const placeholder = triggerContentEl.querySelector('#placeholder');
6176
- triggerContentEl.innerHTML = '';
6177
- if (placeholder) {
6178
- triggerContentEl.appendChild(placeholder);
8212
+ // Clear out old value
8213
+ const valueElem = triggerContentEl.querySelector('#value');
8214
+ if (valueElem) {
8215
+ valueElem.innerHTML = '';
6179
8216
  }
6180
8217
 
8218
+ const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
8219
+ const slottedElements = slot.assignedElements();
8220
+
8221
+ slottedElements.forEach((element) => {
8222
+ element.remove();
8223
+ });
8224
+
6181
8225
  // Handle selected options
6182
8226
  if (this.optionSelected) {
6183
- let displayText = '';
6184
-
6185
8227
  if (this.multiSelect && this.optionSelected.length > 0) {
6186
- // Create display text from selected options
6187
- displayText = this.optionSelected.map((option) => option.textContent).join(', ');
8228
+ const displayText = this.optionSelected.map((option) => option.textContent).join(', ');
8229
+
8230
+ valueElem.textContent = displayText;
6188
8231
  } else {
6189
- displayText = this.optionSelected.textContent;
6190
- }
8232
+ valueElem.innerHTML = this.optionSelected.innerHTML;
8233
+ const displayValueEl = this.optionSelected.querySelector("[slot='displayValue']");
6191
8234
 
6192
- const span = document.createElement('span');
6193
- span.textContent = displayText;
6194
- triggerContentEl.appendChild(span);
8235
+ if (displayValueEl) {
8236
+ this.appendChild(displayValueEl.cloneNode(true));
8237
+ }
8238
+ this.hasDisplayValueContent = displayValueEl !== null;
8239
+ }
6195
8240
  }
6196
8241
 
6197
8242
  this.dropdown.requestUpdate();
@@ -6213,6 +8258,15 @@ class AuroSelect extends i$2 {
6213
8258
  return;
6214
8259
  }
6215
8260
 
8261
+ // set menu's default size if there it's not specified.
8262
+ if (!this.menu.getAttribute('size')) {
8263
+ this.menu.setAttribute('size', this.layout !== 'emphasized' ? 'md' : this.size);
8264
+ }
8265
+
8266
+ if (!this.getAttribute('shape')) {
8267
+ this.menu.setAttribute('shape', this.layout === 'classic' ? 'box' : this.shape);
8268
+ }
8269
+
6216
8270
  if (this.multiSelect) {
6217
8271
  this.menu.multiSelect = this.multiSelect;
6218
8272
  }
@@ -6270,50 +8324,60 @@ class AuroSelect extends i$2 {
6270
8324
  * @returns {void}
6271
8325
  */
6272
8326
  configureSelect() {
6273
- // inject menu into menuWrapper
6274
- this.menuWrapper.append(this.menu);
6275
8327
 
6276
8328
  this.addEventListener('keydown', (evt) => {
6277
- if (evt.key === 'ArrowUp') {
6278
- evt.preventDefault();
8329
+ // when the focus is on trigger not on close button
8330
+ if (this.dropdown.shadowRoot.activeElement === this.dropdown.trigger) {
8331
+ if (evt.key === 'ArrowUp') {
8332
+ evt.preventDefault();
6279
8333
 
6280
- this.dropdown.show();
8334
+ this.dropdown.show();
6281
8335
 
6282
- if (this.dropdown.isPopoverVisible) {
6283
- this.menu.navigateOptions('up');
8336
+ if (this.dropdown.isPopoverVisible) {
8337
+ this.menu.navigateOptions('up');
8338
+ }
8339
+
8340
+ return;
6284
8341
  }
6285
8342
 
6286
- return;
6287
- }
8343
+ if (evt.key === 'ArrowDown') {
8344
+ evt.preventDefault();
6288
8345
 
6289
- if (evt.key === 'ArrowDown') {
6290
- evt.preventDefault();
8346
+ this.dropdown.show();
6291
8347
 
6292
- this.dropdown.show();
8348
+ if (this.dropdown.isPopoverVisible) {
8349
+ this.menu.navigateOptions('down');
8350
+ }
6293
8351
 
6294
- if (this.dropdown.isPopoverVisible) {
6295
- this.menu.navigateOptions('down');
8352
+ return;
6296
8353
  }
6297
8354
 
6298
- return;
6299
- }
8355
+ if (evt.key === 'Enter') {
8356
+ if (!this.dropdown.isPopoverVisible) {
8357
+ evt.preventDefault();
8358
+ this.menu.makeSelection();
8359
+ }
6300
8360
 
6301
- if (evt.key === 'Enter') {
6302
- if (!this.dropdown.isPopoverVisible) {
6303
- evt.preventDefault();
6304
- this.menu.makeSelection();
8361
+ return;
6305
8362
  }
6306
-
6307
- return;
6308
8363
  }
6309
8364
 
6310
- if (evt.key === 'Tab') {
8365
+ if (evt.key === 'Tab' && this.dropdown.isPopoverVisible) {
6311
8366
  if (this.dropdown.isBibFullscreen) {
6312
8367
  evt.preventDefault();
8368
+
8369
+ // when the focus is on trigger not on close button
8370
+ if (this.dropdown.shadowRoot.activeElement === this.dropdown.trigger) {
8371
+ // `dropdown.focus` will move focus to the first focusable element in bib when it's open,
8372
+ // when bib it not open, it will focus onto trigger.
8373
+ this.dropdown.focus();
8374
+ } else {
8375
+ // when close button has the focus, move focus back to the trigger
8376
+ this.dropdown.trigger.focus();
8377
+ }
6313
8378
  } else {
6314
8379
  this.dropdown.hide();
6315
8380
  }
6316
-
6317
8381
  return;
6318
8382
  }
6319
8383
 
@@ -6325,6 +8389,7 @@ class AuroSelect extends i$2 {
6325
8389
 
6326
8390
  this.addEventListener('blur', () => {
6327
8391
  this.validation.validate(this);
8392
+ this.hasFocus = false;
6328
8393
  });
6329
8394
  }
6330
8395
 
@@ -6400,6 +8465,7 @@ class AuroSelect extends i$2 {
6400
8465
  */
6401
8466
  handleFocusin() {
6402
8467
 
8468
+ this.hasFocus = true;
6403
8469
  this.touched = true;
6404
8470
  }
6405
8471
 
@@ -6476,17 +8542,32 @@ class AuroSelect extends i$2 {
6476
8542
  // Add the tag name as an attribute if it is different than the component name
6477
8543
  this.runtimeUtils.handleComponentTagRename(this, 'auro-select');
6478
8544
 
6479
- this.configureMenu();
6480
8545
  this.configureDropdown();
8546
+ this.configureMenu();
6481
8547
  this.configureSelect();
6482
8548
 
6483
8549
  // Set the initial value in auro-menu if defined
6484
8550
  if (this.hasAttribute('value') && this.getAttribute('value').length > 0) {
6485
8551
  this.value = this.multiSelect ? arrayConverter(this.getAttribute('value')) : this.getAttribute('value');
6486
- this.menu.value = this.value;
8552
+ if (this.menu) {
8553
+ this.menu.value = this.value;
8554
+ }
6487
8555
  }
6488
8556
  }
6489
8557
 
8558
+ /**
8559
+ * Update the menu value. With checks for menu existence. Awaits value update.
8560
+ * @param {string} value - The value to set in the menu.
8561
+ * @returns void
8562
+ * @private
8563
+ */
8564
+ async updateMenuValue(value) {
8565
+ if (!this.menu) return;
8566
+
8567
+ this.menu.value = value;
8568
+ await this.menu.updateComplete;
8569
+ }
8570
+
6490
8571
  async updated(changedProperties) {
6491
8572
  if (changedProperties.has('multiSelect')) {
6492
8573
  this.clearSelection();
@@ -6496,14 +8577,13 @@ class AuroSelect extends i$2 {
6496
8577
  if (this.value) {
6497
8578
  this.value = this.multiSelect ? arrayConverter(this.value) : this.value;
6498
8579
 
6499
- this.menu.value = this.value;
6500
-
6501
- // Wait for menu to finish updating its value
6502
- await this.menu.updateComplete;
8580
+ await this.updateMenuValue(this.value);
6503
8581
 
6504
- this.optionSelected = this.menu.optionSelected;
8582
+ if (this.menu) {
8583
+ this.optionSelected = this.menu.optionSelected;
8584
+ }
6505
8585
  } else {
6506
- this.menu.value = undefined;
8586
+ await this.updateMenuValue(undefined);
6507
8587
  }
6508
8588
 
6509
8589
  this._updateNativeSelect();
@@ -6520,6 +8600,10 @@ class AuroSelect extends i$2 {
6520
8600
  bubbles: true,
6521
8601
  cancelable: true,
6522
8602
  composed: true,
8603
+ detail: {
8604
+ optionSelected: this.optionSelected,
8605
+ value: this.value
8606
+ }
6523
8607
  }));
6524
8608
  }
6525
8609
 
@@ -6530,6 +8614,14 @@ class AuroSelect extends i$2 {
6530
8614
  if (changedProperties.has('error')) {
6531
8615
  this.validate(true);
6532
8616
  }
8617
+
8618
+ if (changedProperties.has('shape') && this.menu) {
8619
+ this.menu.setAttribute('shape', this.layout === 'classic' ? 'box' : this.shape);
8620
+ }
8621
+
8622
+ if (changedProperties.has('size') && this.menu) {
8623
+ this.menu.setAttribute('size', this.layout !== 'emphasized' ? 'md' : this.size);
8624
+ }
6533
8625
  }
6534
8626
 
6535
8627
  /**
@@ -6554,53 +8646,400 @@ class AuroSelect extends i$2 {
6554
8646
  * Validates value.
6555
8647
  * @param {boolean} [force=false] - Whether to force validation.
6556
8648
  */
6557
- validate(force = false) {
6558
- this.validation.validate(this, force);
8649
+ validate(force = false) {
8650
+ this.validation.validate(this, force);
8651
+ }
8652
+
8653
+ /**
8654
+ * Syncs the value from the native select element to the component's value.
8655
+ * @param {Event} event // The change event from the native select element.
8656
+ * @returns {void}
8657
+ * @private
8658
+ */
8659
+ _handleNativeSelectChange(event) {
8660
+ const selectedOption = event.target.options[event.target.selectedIndex];
8661
+ const selectedValue = selectedOption.value;
8662
+
8663
+ if (this.multiSelect) {
8664
+ const currentArray = Array.isArray(this.value) ? this.value : [];
8665
+
8666
+ if (!currentArray.includes(selectedValue)) {
8667
+ this.value = [
8668
+ ...currentArray,
8669
+ selectedValue
8670
+ ];
8671
+ }
8672
+ } else {
8673
+ const currentValue = this.value;
8674
+
8675
+ if (currentValue !== selectedValue) {
8676
+ this.value = selectedValue;
8677
+ }
8678
+ }
8679
+ }
8680
+
8681
+ /**
8682
+ * Updates the native select element's value based on the component's value.
8683
+ * @returns {void}
8684
+ * @private
8685
+ */
8686
+ _updateNativeSelect() {
8687
+ const nativeSelect = this.shadowRoot.querySelector('select');
8688
+ if (!nativeSelect) {
8689
+ return;
8690
+ }
8691
+
8692
+ if (this.multiSelect) {
8693
+ nativeSelect.value = this.value ? this.value[0] : '';
8694
+ } else {
8695
+ nativeSelect.value = this.value || '';
8696
+ }
8697
+ }
8698
+
8699
+ renderAriaHtml() {
8700
+ return u`
8701
+ <div aria-live="polite" class="util_displayHiddenVisually">
8702
+ ${this.optionActive && this.options.length > 0
8703
+ ? u`
8704
+ ${`${this.optionActive.innerText}, option ${this.options.indexOf(this.optionActive) + 1} of ${this.options.length}`}
8705
+ `
8706
+ : undefined
8707
+ };
8708
+
8709
+ ${this.optionSelected && this.options.length > 0
8710
+ ? u`
8711
+ ${`${this.optionSelected.innerText} selected`}
8712
+ `
8713
+ : undefined
8714
+ };
8715
+ </div>
8716
+ `;
8717
+ }
8718
+
8719
+ renderNativeSelect() {
8720
+ return u`
8721
+ <div class="nativeSelectWrapper util_displayHidden">
8722
+ <select
8723
+ tabindex="-1"
8724
+ id="${`native-select-${this.id || this.uniqueId}`}"
8725
+ name="${this.name || ''}"
8726
+ ?disabled="${this.disabled}"
8727
+ ?required="${this.required}"
8728
+ aria-hidden="true"
8729
+ autocomplete="${o(this.autocomplete)}"
8730
+ @change="${this._handleNativeSelectChange}">
8731
+ <option value="" ?selected="${!this.value}"></option>
8732
+ ${this.options.map((option) => {
8733
+ const optionValue = option.value || option.textContent;
8734
+ return u`
8735
+ <option
8736
+ value="${optionValue}"
8737
+ ?selected="${this.value === optionValue}">
8738
+ ${option.textContent}
8739
+ </option>
8740
+ `;
8741
+ })}
8742
+ </select>
8743
+ </div>
8744
+ `;
8745
+ }
8746
+
8747
+ /**
8748
+ * Returns HTML for the help text and error message.
8749
+ * @private
8750
+ * @returns {html} - Returns HTML for the help text and error message.
8751
+ */
8752
+ renderHtmlHelpText() {
8753
+ return u`
8754
+ ${!this.validity || this.validity === undefined || this.validity === 'valid'
8755
+ ? u`
8756
+ <${this.helpTextTag} ?onDark="${this.onDark}">
8757
+ <p id="${this.uniqueId}" part="helpText">
8758
+ <slot name="helpText"></slot>
8759
+ </p>
8760
+ </${this.helpTextTag}>
8761
+ `
8762
+ : u`
8763
+ <${this.helpTextTag} error ?onDark="${this.onDark}">
8764
+ <p id="${this.uniqueId}" role="alert" aria-live="assertive" part="helpText">
8765
+ ERROR MESSAGE ${this.errorMessage}
8766
+ </p>
8767
+ </${this.helpTextTag}>
8768
+ `
8769
+ }
8770
+ `;
8771
+ }
8772
+
8773
+ /**
8774
+ * Returns HTML for the emphasized layout.
8775
+ * @private
8776
+ * @returns {import("lit").TemplateResult} - Returns HTML for the emphasized layout.
8777
+ */
8778
+ renderLayoutEmphasized() {
8779
+ const placeholderClass = {
8780
+ hidden: this.value,
8781
+ };
8782
+
8783
+ const displayValueClasses = {
8784
+ 'displayValue': true,
8785
+ 'hasContent': this.hasDisplayValueContent,
8786
+ 'hasFocus': this.isPopoverVisible,
8787
+ 'withValue': this.value && this.value.length > 0,
8788
+ 'force': this.forceDisplayValue,
8789
+ };
8790
+
8791
+ const valueContainerClasses = {
8792
+ 'valueContainer': true,
8793
+ 'util_displayHiddenVisually': (this.forceDisplayValue || !(this.dropdown && this.dropdown.isPopoverVisible)) && this.hasDisplayValueContent
8794
+ };
8795
+
8796
+ return u`
8797
+ <div
8798
+ class="${e(this.commonWrapperClasses)}"
8799
+ part="wrapper">
8800
+ <div id="slotHolder" aria-hidden="true">
8801
+ <slot name="bib.fullscreen.headline" @slotchange="${this.handleSlotChange}"></slot>
8802
+ </div>
8803
+ <${this.dropdownTag}
8804
+ a11yRole="select"
8805
+ ?autoPlacement="${this.autoPlacement}"
8806
+ ?error="${this.validity !== undefined && this.validity !== 'valid'}"
8807
+ ?matchWidth="${this.matchWidth}"
8808
+ ?noFlip="${this.noFlip}"
8809
+ ?onDark="${this.onDark}"
8810
+ .fullscreenBreakpoint="${this.fullscreenBreakpoint}"
8811
+ .offset="${this.offset}"
8812
+ .placement="${this.placement}"
8813
+ chevron
8814
+ fluid
8815
+ for="selectMenu"
8816
+ layout="${this.layout}"
8817
+ part="dropdown"
8818
+ shape="${this.shape}"
8819
+ size="${this.size}">
8820
+ <div slot="trigger" aria-haspopup="true" id="triggerFocus" class="triggerContent">
8821
+ <div class="accents left">
8822
+ <slot name="typeIcon"></slot>
8823
+ </div>
8824
+ <div class="mainContent">
8825
+ <div class="${e(valueContainerClasses)}">
8826
+ <label class="${e(this.commonLabelClasses)}">
8827
+ <slot name="label"></slot>
8828
+ ${this.required ? undefined : u`<slot name="optionalLabel"> (optional)</slot>`}
8829
+ </label>
8830
+ <div class="value" id="value"></div>
8831
+ ${this.value ? undefined : u`
8832
+ <div id="placeholder" class="${e(placeholderClass)}">
8833
+ <slot name="placeholder"></slot>
8834
+ </div>
8835
+ `}
8836
+ </div>
8837
+ <div class="${e(displayValueClasses)}" aria-hidden="true" part="displayValue">
8838
+ <slot name="displayValue"></slot>
8839
+ </div>
8840
+ </div>
8841
+ <div class="accents right"></div>
8842
+ </div>
8843
+ <div class="menuWrapper"></div>
8844
+ <${this.bibtemplateTag} ?large="${this.largeFullscreenHeadline}" @close-click="${this.hideBib}">
8845
+ <slot></slot>
8846
+ </${this.bibtemplateTag}>
8847
+ <div slot="helpText">
8848
+ ${this.renderHtmlHelpText()}
8849
+ </div>
8850
+ </${this.dropdownTag}>
8851
+ </div>
8852
+ `;
8853
+ }
8854
+
8855
+ /**
8856
+ * Returns HTML for the snowflake layout.
8857
+ * @private
8858
+ * @returns {import("lit").TemplateResult} - Returns HTML for the snowflake layout.
8859
+ */
8860
+ renderLayoutSnowflake() {
8861
+ const placeholderClass = {
8862
+ hidden: this.value,
8863
+ };
8864
+
8865
+ const displayValueClasses = {
8866
+ 'displayValue': true,
8867
+ 'hasContent': this.hasDisplayValueContent,
8868
+ 'hasFocus': this.isPopoverVisible,
8869
+ 'withValue': this.value && this.value.length > 0,
8870
+ 'force': this.forceDisplayValue,
8871
+ };
8872
+
8873
+ const valueContainerClasses = {
8874
+ 'valueContainer': true,
8875
+ 'util_displayHiddenVisually': (this.forceDisplayValue || !(this.dropdown && this.dropdown.isPopoverVisible)) && this.hasDisplayValueContent
8876
+ };
8877
+
8878
+ return u`
8879
+ <div
8880
+ class="${e(this.commonWrapperClasses)}"
8881
+ part="wrapper">
8882
+ <div id="slotHolder" aria-hidden="true">
8883
+ <slot name="bib.fullscreen.headline" @slotchange="${this.handleSlotChange}"></slot>
8884
+ </div>
8885
+ <${this.dropdownTag}
8886
+ ?autoPlacement="${this.autoPlacement}"
8887
+ ?error="${this.validity !== undefined && this.validity !== 'valid'}"
8888
+ ?matchWidth="${this.matchWidth}"
8889
+ ?noFlip="${this.noFlip}"
8890
+ ?onDark="${this.onDark}"
8891
+ .fullscreenBreakpoint="${this.fullscreenBreakpoint}"
8892
+ .offset="${this.offset}"
8893
+ .placement="${this.placement}"
8894
+ chevron
8895
+ fluid
8896
+ for="selectMenu"
8897
+ layout="${this.layout}"
8898
+ part="dropdown"
8899
+ shape="${this.shape}"
8900
+ size="${this.size}">
8901
+ <div slot="trigger" aria-haspopup="true" id="triggerFocus" class="triggerContent">
8902
+ <div class="accents left">
8903
+ <slot name="typeIcon"></slot>
8904
+ </div>
8905
+ <div class="mainContent">
8906
+ <div class="${e(valueContainerClasses)}">
8907
+ <label class="${e(this.commonLabelClasses)}">
8908
+ <slot name="label"></slot>
8909
+ ${this.required ? undefined : u`<slot name="optionalLabel"> (optional)</slot>`}
8910
+ </label>
8911
+ <div class="value" id="value"></div>
8912
+ ${this.value ? undefined : u`
8913
+ <div id="placeholder" class="${e(placeholderClass)}">
8914
+ <slot name="placeholder"></slot>
8915
+ </div>
8916
+ `}
8917
+ </div>
8918
+ <div class="${e(displayValueClasses)}" aria-hidden="true" part="displayValue">
8919
+ <slot name="displayValue"></slot>
8920
+ </div>
8921
+ </div>
8922
+ <div class="accents right"></div>
8923
+ </div>
8924
+ <div class="menuWrapper"></div>
8925
+ <${this.bibtemplateTag} ?large="${this.largeFullscreenHeadline}" @close-click="${this.hideBib}">
8926
+ <slot></slot>
8927
+ </${this.bibtemplateTag}>
8928
+ <div slot="helpText">
8929
+ ${this.renderHtmlHelpText()}
8930
+ </div>
8931
+ </${this.dropdownTag}>
8932
+ ${this.renderNativeSelect()}
8933
+ </div>
8934
+ `;
6559
8935
  }
6560
8936
 
6561
8937
  /**
6562
- * Syncs the value from the native select element to the component's value.
6563
- * @param {Event} event // The change event from the native select element.
6564
- * @returns {void}
8938
+ * Returns HTML for the classic layout.
6565
8939
  * @private
8940
+ * @returns {import("lit").TemplateResult} - Returns HTML for the classic layout.
6566
8941
  */
6567
- _handleNativeSelectChange(event) {
6568
- const selectedOption = event.target.options[event.target.selectedIndex];
6569
- const selectedValue = selectedOption.value;
8942
+ renderLayoutClassic() {
8943
+ const placeholderClass = {
8944
+ hidden: this.value,
8945
+ };
6570
8946
 
6571
- if (this.multiSelect) {
6572
- const currentArray = Array.isArray(this.value) ? this.value : [];
8947
+ const displayValueClasses = {
8948
+ 'displayValue': true,
8949
+ 'hasContent': this.hasDisplayValueContent,
8950
+ 'hasFocus': this.isPopoverVisible,
8951
+ 'withValue': this.value && this.value.length > 0,
8952
+ 'force': this.forceDisplayValue,
8953
+ };
6573
8954
 
6574
- if (!currentArray.includes(selectedValue)) {
6575
- this.value = [
6576
- ...currentArray,
6577
- selectedValue
6578
- ];
6579
- }
6580
- } else {
6581
- const currentValue = this.value;
8955
+ const valueContainerClasses = {
8956
+ 'valueContainer': true,
8957
+ 'util_displayHiddenVisually': (this.forceDisplayValue || !(this.dropdown && this.dropdown.isPopoverVisible)) && this.hasDisplayValueContent
8958
+ };
6582
8959
 
6583
- if (currentValue !== selectedValue) {
6584
- this.value = selectedValue;
6585
- }
6586
- }
8960
+ return u`
8961
+ <div
8962
+ class="${e(this.commonWrapperClasses)}"
8963
+ part="wrapper">
8964
+ <div id="slotHolder" aria-hidden="true">
8965
+ <slot name="bib.fullscreen.headline" @slotchange="${this.handleSlotChange}"></slot>
8966
+ </div>
8967
+ <${this.dropdownTag}
8968
+ ?autoPlacement="${this.autoPlacement}"
8969
+ ?error="${this.validity !== undefined && this.validity !== 'valid'}"
8970
+ ?matchWidth="${!this.flexMenuWidth}"
8971
+ ?noFlip="${this.noFlip}"
8972
+ ?onDark="${this.onDark}"
8973
+ .fullscreenBreakpoint="${this.fullscreenBreakpoint}"
8974
+ .offset="${this.offset}"
8975
+ .placement="${this.placement}"
8976
+ chevron
8977
+ fluid
8978
+ for="selectMenu"
8979
+ layout="${this.layout}"
8980
+ part="dropdown"
8981
+ shape="${this.shape}"
8982
+ size="${this.size}">
8983
+ <div slot="trigger" aria-haspopup="true" id="triggerFocus" class="triggerContent">
8984
+ <div class="accents left">
8985
+ <slot name="typeIcon"></slot>
8986
+ </div>
8987
+ <div class="mainContent">
8988
+ <div class="${e(valueContainerClasses)}">
8989
+ <label class="${e(this.commonLabelClasses)}">
8990
+ <slot name="label"></slot>
8991
+ ${this.required ? undefined : u`<slot name="optionalLabel"> (optional)</slot>`}
8992
+ </label>
8993
+ <div class="value" id="value"></div>
8994
+ ${this.value ? undefined : u`
8995
+ <div id="placeholder" class="${e(placeholderClass)}">
8996
+ <slot name="placeholder"></slot>
8997
+ </div>
8998
+ `}
8999
+ </div>
9000
+ <div class="${e(displayValueClasses)}" aria-hidden="true" part="displayValue">
9001
+ <slot name="displayValue"></slot>
9002
+ </div>
9003
+ </div>
9004
+ <div class="accents right"></div>
9005
+ </div>
9006
+ <div class="menuWrapper"></div>
9007
+ <${this.bibtemplateTag} ?large="${this.largeFullscreenHeadline}" @close-click="${this.hideBib}">
9008
+ <slot></slot>
9009
+ </${this.bibtemplateTag}>
9010
+ <div slot="helpText">
9011
+ ${this.renderHtmlHelpText()}
9012
+ </div>
9013
+ </${this.dropdownTag}>
9014
+ ${this.renderNativeSelect()}
9015
+ </div>
9016
+ `;
6587
9017
  }
6588
9018
 
6589
9019
  /**
6590
- * Updates the native select element's value based on the component's value.
6591
- * @returns {void}
9020
+ * Logic to determine the layout of the component.
6592
9021
  * @private
9022
+ * @param {string} [ForcedLayout] - Used to force a specific layout, pass in the layout name to use.
9023
+ * @returns {void}
6593
9024
  */
6594
- _updateNativeSelect() {
6595
- const nativeSelect = this.shadowRoot.querySelector('select');
6596
- if (!nativeSelect) {
6597
- return;
6598
- }
9025
+ renderLayout(ForcedLayout) {
9026
+ const layout = ForcedLayout || this.layout;
6599
9027
 
6600
- if (this.multiSelect) {
6601
- nativeSelect.value = this.value ? this.value[0] : '';
6602
- } else {
6603
- nativeSelect.value = this.value || '';
9028
+ switch (layout) {
9029
+ case 'emphasized':
9030
+ return this.renderLayoutEmphasized();
9031
+ case 'emphasized-left':
9032
+ return this.renderLayoutEmphasized();
9033
+ case 'emphasized-right':
9034
+ return this.renderLayoutEmphasized();
9035
+ case 'snowflake':
9036
+ return this.renderLayoutSnowflake();
9037
+ case 'snowflake-left':
9038
+ return this.renderLayoutSnowflake();
9039
+ case 'snowflake-right':
9040
+ return this.renderLayoutSnowflake();
9041
+ default:
9042
+ return this.renderLayoutClassic();
6604
9043
  }
6605
9044
  }
6606
9045
 
@@ -6608,7 +9047,7 @@ class AuroSelect extends i$2 {
6608
9047
  // aria-hidden="${this.hideAudible(this.hiddenAudible)}"
6609
9048
 
6610
9049
  // function that renders the HTML and CSS into the scope of the component
6611
- render() {
9050
+ renderBACKUP() {
6612
9051
  const placeholderClass = {
6613
9052
  hidden: this.value,
6614
9053
  };
@@ -6634,29 +9073,37 @@ class AuroSelect extends i$2 {
6634
9073
  <slot name="bib.fullscreen.headline" @slotchange="${this.handleSlotChange}"></slot>
6635
9074
  </div>
6636
9075
  <${this.dropdownTag}
6637
- for="selectmenu"
9076
+ ?autoPlacement="${this.autoPlacement}"
9077
+ ?disabled="${this.disabled}"
6638
9078
  ?error="${this.validity !== undefined && this.validity !== 'valid'}"
9079
+ ?matchWidth="${this.matchWidth}"
9080
+ ?noFlip="${this.noFlip}"
6639
9081
  ?onDark="${this.onDark}"
6640
- common
6641
- fluid
6642
9082
  .fullscreenBreakpoint="${this.fullscreenBreakpoint}"
6643
- ?matchWidth="${!this.flexMenuWidth}"
6644
- chevron
6645
- .placement="${this.placement}"
6646
9083
  .offset="${this.offset}"
6647
- ?autoPlacement="${this.autoPlacement}"
6648
- ?noFlip="${this.noFlip}"
6649
- part="dropdown">
9084
+ .placement="${this.placement}"
9085
+ chevron
9086
+ fluid
9087
+ for="selectMenu"
9088
+ layout="${this.layout}"
9089
+ part="dropdown"
9090
+ shape="${this.shape}"
9091
+ size="${this.size}">
6650
9092
  <span slot="trigger" aria-haspopup="true" id="triggerFocus">
6651
- <span id="placeholder" class="${e(placeholderClass)}"><slot name="placeholder"></slot></span>
9093
+ <span id="placeholder"
9094
+ class="${e(placeholderClass)}"
9095
+ ?aria-hidden="${this.optionSelected && this.optionSelected.length ? 'true' : false}"
9096
+ >
9097
+ <slot name="placeholder"></slot>
9098
+ </span>
9099
+ <slot name="valueText" id="valueText"></slot>
6652
9100
  </span>
6653
9101
 
6654
- <div class="menuWrapper">
6655
- </div>
6656
-
6657
9102
  <${this.bibtemplateTag} ?large="${this.largeFullscreenHeadline}" @close-click="${this.hideBib}">
9103
+ <slot></slot>
6658
9104
  </${this.bibtemplateTag}>
6659
9105
  <slot name="label" slot="label"></slot>
9106
+ ${this.required ? undefined : u`<slot name="optionalLabel"> (optional)</slot>`}
6660
9107
  <p slot="helpText">
6661
9108
  ${!this.validity || this.validity === undefined || this.validity === 'valid'
6662
9109
  ? u`
@@ -6694,16 +9141,17 @@ class AuroSelect extends i$2 {
6694
9141
  </select>
6695
9142
  </div>
6696
9143
  <!-- Help text and error message template -->
9144
+ ${this.renderHtmlHelpText()}
6697
9145
  </div>
6698
9146
  `;
6699
9147
  }
6700
9148
  }
6701
9149
 
6702
- var styleCss$2 = i$5`:focus:not(:focus-visible){outline:3px solid transparent}:host{display:inline-block;width:100%;margin:0;padding:0;vertical-align:middle}:host ::slotted(auro-menuoption),:host ::slotted([auro-menuoption]),:host auro-menuoption[loadingplaceholder]{padding-left:calc(var(--ds-size-150, 0.75rem) + 24px + var(--ds-size-100, 0.5rem))}:host ::slotted([selected]){padding-left:0}:host ::slotted(hr){box-sizing:content-box !important;height:0 !important;overflow:visible !important;margin:var(--ds-size-100, 0.5rem) 0 !important;border-width:0 !important;border-top-width:1px !important;border-top-style:solid !important}:host([nocheckmark]) ::slotted(auro-menuoption),:host([nocheckmark]) auro-menuoption[loadingplaceholder]{padding-left:var(--ds-size-200, 1rem)}:host([root]){overflow-y:auto}[loadingplaceholder].empty{opacity:0;position:absolute}[loadingplaceholder] slot[name=loadingIcon]{vertical-align:middle;line-height:1;display:inline-block}[loadingplaceholder] slot[name=loadingIcon]::slotted(*){margin-right:var(--ds-size-150, 0.75rem)}`;
9150
+ var styleCss$2 = i$5`:focus:not(:focus-visible){outline:3px solid transparent}:host{display:block;vertical-align:middle}:host .wrapper{box-sizing:border-box;display:inline-block;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;line-height:1;display:inline-block}:host [loadingplaceholder] slot[name=loadingIcon]::slotted(*){margin-right:var(--ds-size-150, 0.75rem)}:host([root]){overflow-y:auto}:host([root]) .wrapper[class*=-lg]{padding:var(--ds-size-150, 0.75rem)}:host([root]) .wrapper[class*=-xl]{padding:var(--ds-size-200, 1rem)}`;
6703
9151
 
6704
9152
  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)}`;
6705
9153
 
6706
- 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-icon-color: transparent;--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}`;
9154
+ 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)}`;
6707
9155
 
6708
9156
  // Copyright (c) 2021 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
6709
9157
  // See LICENSE in the project root for license information.
@@ -6769,14 +9217,17 @@ function dispatchMenuEvent(element, eventName, detail = null) {
6769
9217
  * @slot - Slot for insertion of menu options.
6770
9218
  */
6771
9219
 
6772
- /* eslint-disable no-magic-numbers, max-lines, no-extra-parens */
9220
+ /* eslint-disable no-magic-numbers, max-lines, no-extra-parens, no-inline-comments, line-comment-position */
6773
9221
 
6774
- class AuroMenu extends i$2 {
9222
+ class AuroMenu extends AuroElement$4 {
6775
9223
  constructor() {
6776
9224
  super();
6777
9225
 
6778
9226
  // State properties (reactive)
6779
9227
 
9228
+ this.shape = ""; // box, rounded, pill
9229
+ this.size = ""; // md, lg, xl
9230
+
6780
9231
  // Value of the selected options
6781
9232
  this.value = undefined;
6782
9233
  // Currently selected option
@@ -6835,6 +9286,7 @@ class AuroMenu extends i$2 {
6835
9286
 
6836
9287
  static get properties() {
6837
9288
  return {
9289
+ ...super.properties,
6838
9290
  noCheckmark: {
6839
9291
  type: Boolean,
6840
9292
  reflect: true,
@@ -6868,6 +9320,16 @@ class AuroMenu extends i$2 {
6868
9320
  value: {
6869
9321
  // Allow string, string[] arrays and undefined
6870
9322
  type: Object
9323
+ },
9324
+
9325
+ /**
9326
+ * Indent level for submenus.
9327
+ * @private
9328
+ */
9329
+ level: {
9330
+ type: Number,
9331
+ reflect: false,
9332
+ attribute: false
6871
9333
  }
6872
9334
  };
6873
9335
  }
@@ -6889,7 +9351,7 @@ class AuroMenu extends i$2 {
6889
9351
  *
6890
9352
  */
6891
9353
  static register(name = "auro-menu") {
6892
- AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroMenu);
9354
+ AuroLibraryRuntimeUtils$6.prototype.registerComponent(name, AuroMenu);
6893
9355
  }
6894
9356
 
6895
9357
  // Lifecycle Methods
@@ -6901,6 +9363,7 @@ class AuroMenu extends i$2 {
6901
9363
  this.addEventListener('mousedown', this.handleMouseSelect);
6902
9364
  this.addEventListener('auroMenuOption-mouseover', this.handleOptionHover);
6903
9365
  this.addEventListener('slotchange', this.handleSlotChange);
9366
+ this.setTagAttribute("auro-menu");
6904
9367
  }
6905
9368
 
6906
9369
  disconnectedCallback() {
@@ -6913,19 +9376,33 @@ class AuroMenu extends i$2 {
6913
9376
  }
6914
9377
 
6915
9378
  firstUpdated() {
6916
- AuroLibraryRuntimeUtils$3.prototype.handleComponentTagRename(this, 'auro-menu');
9379
+ AuroLibraryRuntimeUtils$6.prototype.handleComponentTagRename(this, 'auro-menu');
6917
9380
 
6918
9381
  this.loadingSlots = this.querySelectorAll("[slot='loadingText'], [slot='loadingIcon']");
6919
9382
  this.initializeMenu();
6920
9383
  }
6921
9384
 
9385
+ /**
9386
+ * Sets an attribute that matches the default tag name if the tag name is not the default.
9387
+ * @param {string} tagName - The tag name to set as an attribute.
9388
+ * @private
9389
+ */
9390
+ setTagAttribute(tagName) {
9391
+ if (this.tagName.toLowerCase() !== tagName) {
9392
+ this.setAttribute(tagName, true);
9393
+ }
9394
+ }
9395
+
6922
9396
  updated(changedProperties) {
9397
+ super.updated(changedProperties);
9398
+
6923
9399
  if (changedProperties.has('multiSelect')) {
6924
9400
  // Reset selection if multiSelect mode changes
6925
9401
  this.clearSelection();
6926
9402
  }
6927
9403
 
6928
- if (changedProperties.has('value')) {
9404
+
9405
+ if (changedProperties.has("value")) {
6929
9406
  // Handle null/undefined case
6930
9407
  if (this.value === undefined || this.value === null) {
6931
9408
  this.optionSelected = undefined;
@@ -6993,6 +9470,19 @@ class AuroMenu extends i$2 {
6993
9470
  this.querySelectorAll('auro-menu, [auro-menu], auro-menuoption, [auro-menuoption]').forEach((element) => element.setAttribute('noCheckmark', ''));
6994
9471
  }
6995
9472
 
9473
+ // Handle layout propagation to all menus and options
9474
+ const propagationTargets = this.querySelectorAll('auro-menu, [auro-menu], auro-menuoption, [auro-menuoption]');
9475
+ [
9476
+ 'size',
9477
+ 'shape'
9478
+ ].forEach((prop) => {
9479
+ if (changedProperties.has(prop)) {
9480
+ propagationTargets.forEach((el) => {
9481
+ el.setAttribute(prop, this[prop]);
9482
+ });
9483
+ }
9484
+ });
9485
+
6996
9486
  // Regex for matchWord if needed
6997
9487
  let regexWord = null;
6998
9488
 
@@ -7189,21 +9679,20 @@ class AuroMenu extends i$2 {
7189
9679
  * @param {HTMLElement} menu - Root menu element.
7190
9680
  */
7191
9681
  handleNestedMenus(menu) {
7192
- const nestedMenus = menu.querySelectorAll('auro-menu, [auro-menu]');
9682
+ menu.level = menu.parentElement.level >= 0 ? menu.parentElement.level + 1 : 0;
7193
9683
 
7194
- nestedMenus.forEach((nestedMenu) => {
7195
- // role="listbox" only allows "role=group" for children.
7196
- nestedMenu.setAttribute('role', 'group');
7197
- if (!nestedMenu.hasAttribute('aria-label')) {
7198
- nestedMenu.setAttribute('aria-label', 'submenu');
9684
+ if (menu.level > 0) {
9685
+ menu.setAttribute('role', 'group');
9686
+ menu.removeAttribute("root");
9687
+ if (!menu.hasAttribute('aria-label')) {
9688
+ menu.setAttribute('aria-label', 'submenu');
7199
9689
  }
9690
+ }
7200
9691
 
7201
- const options = nestedMenu.querySelectorAll(':scope > auro-menuoption, :scope > [auro-menuoption]');
7202
- options.forEach((option) => {
7203
- option.innerHTML = this.nestingSpacer + option.innerHTML;
7204
- });
7205
-
7206
- this.handleNestedMenus(nestedMenu);
9692
+ const options = menu.querySelectorAll(':scope > auro-menuoption, :scope > [auro-menuoption]');
9693
+ options.forEach((option) => {
9694
+ const regex = new RegExp(this.nestingSpacer, "gu");
9695
+ option.innerHTML = this.nestingSpacer.repeat(menu.level) + option.innerHTML.replace(regex, '');
7207
9696
  });
7208
9697
  }
7209
9698
 
@@ -7445,28 +9934,39 @@ class AuroMenu extends i$2 {
7445
9934
  }
7446
9935
 
7447
9936
  /**
7448
- * Renders the component.
7449
- * @returns {boolean} - True if loading slots are present and non-empty.
9937
+ * Logic to determine the layout of the component.
9938
+ * @protected
9939
+ * @returns {void}
7450
9940
  */
7451
- render() {
9941
+ renderLayout() {
7452
9942
  if (this.loading) {
7453
9943
  return x`
7454
- <auro-menuoption disabled loadingplaceholder class="${this.hasLoadingPlaceholder ? '' : 'empty'}">
7455
- <div>
7456
- <slot name="loadingIcon"></slot>
7457
- <slot name="loadingText"></slot>
7458
- </div>
7459
- </auro-menuoption>
9944
+ <div class="wrapper">
9945
+ <auro-menuoption
9946
+ disabled
9947
+ loadingplaceholder
9948
+ class="${this.hasLoadingPlaceholder ? "" : "empty"}"
9949
+ >
9950
+ <div>
9951
+ <slot name="loadingIcon"></slot>
9952
+ <slot name="loadingText"></slot>
9953
+ </div>
9954
+ </auro-menuoption>
9955
+ </div>
7460
9956
  `;
7461
9957
  }
7462
9958
 
7463
- return x`<slot @slotchange=${this.handleSlotChange}></slot>`;
9959
+ return x`
9960
+ <div class="wrapper">
9961
+ <slot @slotchange=${this.handleSlotChange}></slot>
9962
+ </div>
9963
+ `;
7464
9964
  }
7465
9965
  }
7466
9966
 
7467
- var styleCss$1 = i$5`:host{display:flex;align-items:center;padding:var(--ds-size-50, 0.25rem) var(--ds-size-200, 1rem) var(--ds-size-50, 0.25rem) 0;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}:host slot{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host [auro-icon]{--ds-auro-icon-size: var(--ds-size-300, 1.5rem);margin-right:var(--ds-size-150, 0.75rem);margin-left:var(--ds-size-100, 0.5rem)}:host ::slotted(.nestingSpacer){display:inline-block;width:var(--ds-size-300, 1.5rem)}:host ::slotted(strong){font-weight:700}:host([hidden]){display:none}:host([static]){pointer-events:none}:host([disabled]:hover){cursor:auto}:host([disabled]){user-select:none;pointer-events:none}`;
9967
+ var styleCss$1 = i$5`: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) + 24px + var(--ds-size-100, 0.5rem));padding-top:var(--ds-size-50, 0.25rem);padding-bottom:var(--ds-size-50, 0.25rem);-webkit-tap-highlight-color:transparent}:host .wrapper[class*=shape-box],:host .wrapper[class*=shape-snowflake]{border-radius:unset}:host .wrapper[class*=shape-pill]{border-radius:30px}:host .wrapper[class*=-lg]{font-size:var(--ds-text-body-size-lg, 1.125rem);line-height:var(--ds-text-body-height-lg, 1.625rem);padding-top:var(--ds-size-75, 0.375rem);padding-bottom:var(--ds-size-75, 0.375rem);padding-right:var(--ds-size-150, 0.75rem)}:host .wrapper[class*=-lg]:not(:last-child){margin-bottom:var(--ds-size-50, 0.25rem)}:host .wrapper[class*=-xl]{font-size:var(--ds-text-body-size-lg, 1.125rem);line-height:var(--ds-text-body-height-lg, 1.625rem);padding-top:var(--ds-size-100, 0.5rem);padding-bottom:var(--ds-size-100, 0.5rem);padding-right:var(--ds-size-200, 1rem)}:host .wrapper[class*=-xl]:not(:last-child){margin-bottom:var(--ds-size-100, 0.5rem)}:host slot{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host [auro-icon]{--ds-auro-icon-size: var(--ds-size-300, 1.5rem);margin-right:var(--ds-size-150, 0.75rem);margin-left:var(--ds-size-100, 0.5rem)}:host ::slotted(.nestingSpacer){display:inline-block;width:var(--ds-size-300, 1.5rem)}:host ::slotted(strong){font-weight:700}:host([loadingplaceholder]) .wrapper{padding-left:calc(var(--ds-size-150, 0.75rem) + 24px + 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}`;
7468
9968
 
7469
- var colorCss$1 = i$5`:host{background-color:var(--ds-auro-menuoption-container-color);color:var(--ds-auro-menuoption-text-color)}:host svg{fill:var(--ds-auro-menuoption-icon-color)}:host([disabled]){--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host(:hover),:host(.active){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-neutral-subtle, #f7f7f7)}:host([selected]){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-menuoption-icon-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([selected]):host(:hover),:host([selected]):host(.active){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected-hover, #00274a)}`;
9969
+ var colorCss$1 = i$5`:host .wrapper{border:1px solid var(--ds-auro-menuoption-container-border-color);background-color:var(--ds-auro-menuoption-container-color);color:var(--ds-auro-menuoption-text-color)}:host svg{fill:var(--ds-auro-menuoption-icon-color)}:host([disabled]){--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host(:hover),:host(.active){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-neutral-subtle, #f7f7f7)}:host([selected]){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-menuoption-icon-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([selected]):host(:hover),:host([selected]):host(.active){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected-hover, #00274a)}`;
7470
9970
 
7471
9971
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
7472
9972
  // See LICENSE in the project root for license information.
@@ -7622,6 +10122,76 @@ var tokensCss = i$5`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-def
7622
10122
 
7623
10123
  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)}`;
7624
10124
 
10125
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
10126
+ // See LICENSE in the project root for license information.
10127
+
10128
+ // ---------------------------------------------------------------------
10129
+
10130
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
10131
+
10132
+ class AuroLibraryRuntimeUtils {
10133
+
10134
+ /* eslint-disable jsdoc/require-param */
10135
+
10136
+ /**
10137
+ * This will register a new custom element with the browser.
10138
+ * @param {String} name - The name of the custom element.
10139
+ * @param {Object} componentClass - The class to register as a custom element.
10140
+ * @returns {void}
10141
+ */
10142
+ registerComponent(name, componentClass) {
10143
+ if (!customElements.get(name)) {
10144
+ customElements.define(name, class extends componentClass {});
10145
+ }
10146
+ }
10147
+
10148
+ /**
10149
+ * Finds and returns the closest HTML Element based on a selector.
10150
+ * @returns {void}
10151
+ */
10152
+ closestElement(
10153
+ selector, // selector like in .closest()
10154
+ base = this, // extra functionality to skip a parent
10155
+ __Closest = (el, found = el && el.closest(selector)) =>
10156
+ !el || el === document || el === window
10157
+ ? null // standard .closest() returns null for non-found selectors also
10158
+ : found
10159
+ ? found // found a selector INside this element
10160
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
10161
+ ) {
10162
+ return __Closest(base);
10163
+ }
10164
+ /* eslint-enable jsdoc/require-param */
10165
+
10166
+ /**
10167
+ * 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.
10168
+ * @param {Object} elem - The element to check.
10169
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
10170
+ * @returns {void}
10171
+ */
10172
+ handleComponentTagRename(elem, tagName) {
10173
+ const tag = tagName.toLowerCase();
10174
+ const elemTag = elem.tagName.toLowerCase();
10175
+
10176
+ if (elemTag !== tag) {
10177
+ elem.setAttribute(tag, true);
10178
+ }
10179
+ }
10180
+
10181
+ /**
10182
+ * Validates if an element is a specific Auro component.
10183
+ * @param {Object} elem - The element to validate.
10184
+ * @param {String} tagName - The name of the Auro component to check against.
10185
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
10186
+ */
10187
+ elementMatch(elem, tagName) {
10188
+ const tag = tagName.toLowerCase();
10189
+ const elemTag = elem.tagName.toLowerCase();
10190
+
10191
+ return elemTag === tag || elem.hasAttribute(tag);
10192
+ }
10193
+ }
10194
+
7625
10195
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
7626
10196
  // See LICENSE in the project root for license information.
7627
10197
 
@@ -7641,7 +10211,7 @@ class AuroIcon extends BaseIcon {
7641
10211
  */
7642
10212
  privateDefaults() {
7643
10213
  this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
7644
- this.runtimeUtils = new AuroLibraryRuntimeUtils$3();
10214
+ this.runtimeUtils = new AuroLibraryRuntimeUtils();
7645
10215
  }
7646
10216
 
7647
10217
  // function to define props used within the scope of this component
@@ -7723,7 +10293,7 @@ class AuroIcon extends BaseIcon {
7723
10293
  *
7724
10294
  */
7725
10295
  static register(name = "auro-icon") {
7726
- AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroIcon);
10296
+ AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroIcon);
7727
10297
  }
7728
10298
 
7729
10299
  connectedCallback() {
@@ -7744,8 +10314,12 @@ class AuroIcon extends BaseIcon {
7744
10314
  async firstUpdated() {
7745
10315
  await super.firstUpdated();
7746
10316
 
7747
- // Removes the SVG description for screenreader if ariaHidden is set to true
7748
- if (!this.hasAttribute('ariaHidden') && this.svg) {
10317
+ /**
10318
+ * icons provide a description for screen readers. Icon only instances Auro-button
10319
+ * depend on this description to provide context for the user using a screen reader.
10320
+ * Removes the SVG description for screen reader if ariaHidden is set to true.
10321
+ */
10322
+ if (this.hasAttribute('ariaHidden') && this.svg) {
7749
10323
  const svgDesc = this.svg.querySelector('desc');
7750
10324
 
7751
10325
  if (svgDesc) {
@@ -7789,7 +10363,7 @@ class AuroIcon extends BaseIcon {
7789
10363
  }
7790
10364
  }
7791
10365
 
7792
- var iconVersion = '8.0.3';
10366
+ var iconVersion = '8.0.4';
7793
10367
 
7794
10368
  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>"};
7795
10369
 
@@ -7807,10 +10381,13 @@ var checkmarkIcon = {"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlin
7807
10381
  * @event auroMenuOption-mouseover - Notifies that this option has been hovered over.
7808
10382
  * @slot - Specifies text for an option, but is not the value.
7809
10383
  */
7810
- class AuroMenuOption extends i$2 {
10384
+ class AuroMenuOption extends AuroElement$4 {
7811
10385
  constructor() {
7812
10386
  super();
7813
10387
 
10388
+ this.size = ""; // md, lg, xl
10389
+ this.shape = ""; // box, rounded, pill
10390
+
7814
10391
  /**
7815
10392
  * Generate unique names for dependency components.
7816
10393
  */
@@ -7829,11 +10406,12 @@ class AuroMenuOption extends i$2 {
7829
10406
  /**
7830
10407
  * @private
7831
10408
  */
7832
- this.runtimeUtils = new AuroLibraryRuntimeUtils$3();
10409
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$6();
7833
10410
  }
7834
10411
 
7835
10412
  static get properties() {
7836
10413
  return {
10414
+ ...super.properties,
7837
10415
  nocheckmark: {
7838
10416
  type: Boolean,
7839
10417
  reflect: true
@@ -7873,7 +10451,7 @@ class AuroMenuOption extends i$2 {
7873
10451
  *
7874
10452
  */
7875
10453
  static register(name = "auro-menuoption") {
7876
- AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroMenuOption);
10454
+ AuroLibraryRuntimeUtils$6.prototype.registerComponent(name, AuroMenuOption);
7877
10455
  }
7878
10456
 
7879
10457
  firstUpdated() {
@@ -7895,6 +10473,8 @@ class AuroMenuOption extends i$2 {
7895
10473
 
7896
10474
  // observer for selected property changes
7897
10475
  updated(changedProperties) {
10476
+ super.updated(changedProperties);
10477
+
7898
10478
  if (changedProperties.has('selected')) {
7899
10479
  this.setAttribute('aria-selected', this.selected.toString());
7900
10480
  }
@@ -7916,10 +10496,19 @@ class AuroMenuOption extends i$2 {
7916
10496
  return u`<${this.iconTag} customColor customSvg slot="icon">${svg}</${this.iconTag}>`;
7917
10497
  }
7918
10498
 
7919
- render() {
10499
+ /**
10500
+ * Logic to determine the layout of the component.
10501
+ * @protected
10502
+ * @returns {void}
10503
+ */
10504
+ renderLayout() {
7920
10505
  return u`
7921
- ${this.selected && !this.nocheckmark ? this.generateIconHtml(checkmarkIcon.svg) : undefined}
7922
- <slot></slot>
10506
+ <div class="wrapper">
10507
+ ${this.selected && !this.nocheckmark
10508
+ ? this.generateIconHtml(checkmarkIcon.svg)
10509
+ : undefined}
10510
+ <slot></slot>
10511
+ </div>
7923
10512
  `;
7924
10513
  }
7925
10514
  }