@aurodesignsystem-dev/auro-formkit 0.0.0-pr1522.0 → 0.0.0-pr1522.2

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 (50) hide show
  1. package/components/checkbox/demo/customize.min.js +15 -2
  2. package/components/checkbox/demo/getting-started.min.js +15 -2
  3. package/components/checkbox/demo/index.min.js +15 -2
  4. package/components/checkbox/dist/index.js +15 -2
  5. package/components/checkbox/dist/registered.js +15 -2
  6. package/components/combobox/demo/customize.min.js +105 -10
  7. package/components/combobox/demo/getting-started.min.js +105 -10
  8. package/components/combobox/demo/index.min.js +105 -10
  9. package/components/combobox/dist/index.js +105 -10
  10. package/components/combobox/dist/registered.js +105 -10
  11. package/components/counter/demo/customize.min.js +33 -3
  12. package/components/counter/demo/index.min.js +33 -3
  13. package/components/counter/dist/index.js +33 -3
  14. package/components/counter/dist/registered.js +33 -3
  15. package/components/datepicker/demo/customize.min.js +257 -16
  16. package/components/datepicker/demo/index.min.js +257 -16
  17. package/components/datepicker/dist/auro-calendar-cell.d.ts +17 -0
  18. package/components/datepicker/dist/auro-calendar.d.ts +43 -3
  19. package/components/datepicker/dist/index.js +257 -16
  20. package/components/datepicker/dist/registered.js +257 -16
  21. package/components/dropdown/demo/customize.min.js +18 -1
  22. package/components/dropdown/demo/getting-started.min.js +18 -1
  23. package/components/dropdown/demo/index.min.js +18 -1
  24. package/components/dropdown/dist/index.js +18 -1
  25. package/components/dropdown/dist/registered.js +18 -1
  26. package/components/form/demo/customize.min.js +530 -43
  27. package/components/form/demo/getting-started.min.js +530 -43
  28. package/components/form/demo/index.min.js +530 -43
  29. package/components/form/demo/registerDemoDeps.min.js +530 -43
  30. package/components/input/demo/api.md +58 -57
  31. package/components/input/demo/customize.min.js +72 -7
  32. package/components/input/demo/getting-started.min.js +72 -7
  33. package/components/input/demo/index.min.js +72 -7
  34. package/components/input/dist/base-input.d.ts +9 -3
  35. package/components/input/dist/index.js +72 -7
  36. package/components/input/dist/registered.js +72 -7
  37. package/components/input/dist/utilities.d.ts +9 -0
  38. package/components/radio/demo/customize.min.js +15 -2
  39. package/components/radio/demo/getting-started.min.js +15 -2
  40. package/components/radio/demo/index.min.js +15 -2
  41. package/components/radio/dist/index.js +15 -2
  42. package/components/radio/dist/registered.js +15 -2
  43. package/components/select/demo/customize.md +6 -5
  44. package/components/select/demo/customize.min.js +33 -3
  45. package/components/select/demo/getting-started.min.js +33 -3
  46. package/components/select/demo/index.min.js +33 -3
  47. package/components/select/dist/index.js +33 -3
  48. package/components/select/dist/registered.js +33 -3
  49. package/custom-elements.json +111 -9
  50. package/package.json +1 -1
@@ -5455,8 +5455,21 @@ let AuroFormValidation$7 = class AuroFormValidation {
5455
5455
  return;
5456
5456
  }
5457
5457
 
5458
- // Validate that the date passed was the correct format and is a valid date
5458
+ // Validate that the date passed was the correct format and is a valid date.
5459
+ // For partial date formats, valueObject is never populated; validate them directly.
5459
5460
  if (elem.value && !elem.valueObject) {
5461
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
5462
+
5463
+ if (isPartialDateFormat) {
5464
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
5465
+ elem.validity = 'patternMismatch';
5466
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
5467
+ }
5468
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
5469
+ return;
5470
+ }
5471
+
5472
+ // Full date format with no valueObject means the value is not a valid calendar date.
5460
5473
  elem.validity = 'patternMismatch';
5461
5474
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
5462
5475
  return;
@@ -11386,10 +11399,11 @@ let AuroInputUtilities$3 = class AuroInputUtilities {
11386
11399
  const dateFormat = format$1 || this.overrideFormat || pattern || 'mm/dd/yyyy';
11387
11400
 
11388
11401
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
11389
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
11402
+ const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
11403
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
11390
11404
  return {
11391
11405
  mask: IMask$3.MaskedRange,
11392
- from: 1,
11406
+ from: fromValue,
11393
11407
  to: maxValue,
11394
11408
  lazy: true,
11395
11409
  placeholderChar: '',
@@ -11397,7 +11411,8 @@ let AuroInputUtilities$3 = class AuroInputUtilities {
11397
11411
  return value.toString().padStart(dateFormat.length, '0');
11398
11412
  },
11399
11413
  parse(str) {
11400
- return parseInt(str) || null;
11414
+ const num = parseInt(str, 10);
11415
+ return isNaN(num) ? null : num;
11401
11416
  }
11402
11417
  };
11403
11418
  }
@@ -11461,6 +11476,49 @@ let AuroInputUtilities$3 = class AuroInputUtilities {
11461
11476
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
11462
11477
  }
11463
11478
 
11479
+ /**
11480
+ * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
11481
+ * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
11482
+ * a date-fns parse + round-trip to confirm both validity and exact formatting.
11483
+ * @param {string} value - The user-facing display value.
11484
+ * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
11485
+ * @returns {boolean}
11486
+ */
11487
+ isValidPartialDate(value, format$1) {
11488
+ if (!value || !format$1) {
11489
+ return false;
11490
+ }
11491
+ const normalizedFormat = format$1.toLowerCase();
11492
+
11493
+ if (normalizedFormat === 'dd') {
11494
+ const num = Number(value);
11495
+ return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
11496
+ }
11497
+ if (normalizedFormat === 'yy') {
11498
+ const num = Number(value);
11499
+ return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
11500
+ }
11501
+ if (normalizedFormat === 'yyyy') {
11502
+ const num = Number(value);
11503
+ return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
11504
+ }
11505
+
11506
+ const dateFnsMask = this.toDateFnsMask(normalizedFormat);
11507
+ // Use the 1st of the current month as the reference so that formats
11508
+ // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
11509
+ const referenceDate = new Date();
11510
+ referenceDate.setDate(1);
11511
+ const parsed = parse$3(value, dateFnsMask, referenceDate);
11512
+ if (!isValid$3(parsed) || format$3(parsed, dateFnsMask) !== value) {
11513
+ return false;
11514
+ }
11515
+ if (normalizedFormat.includes('yyyy')) {
11516
+ const year = parsed.getFullYear();
11517
+ return year >= 1900 && year <= 2100;
11518
+ }
11519
+ return true;
11520
+ }
11521
+
11464
11522
  /**
11465
11523
  * Converts a display string to its model value.
11466
11524
  * For full date formats, converts the display string to an ISO date string.
@@ -12080,6 +12138,13 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
12080
12138
  type: String
12081
12139
  },
12082
12140
 
12141
+ /**
12142
+ * Custom help text message to display when validity = `patternMismatch`.
12143
+ */
12144
+ setCustomValidityPatternMismatch: {
12145
+ type: String
12146
+ },
12147
+
12083
12148
  /**
12084
12149
  * Custom help text message to display when validity = `rangeOverflow`.
12085
12150
  */
@@ -12150,7 +12215,7 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
12150
12215
 
12151
12216
  /**
12152
12217
  * Populates the `type` attribute on the input.
12153
- * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
12218
+ * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
12154
12219
  * @default 'text'
12155
12220
  */
12156
12221
  type: {
@@ -12175,7 +12240,7 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
12175
12240
 
12176
12241
  /**
12177
12242
  * Populates the `value` attribute on the input. Can also be read to retrieve the current value of the input.
12178
- * The format for this property should be ISO for `date` type inputs.
12243
+ * For `date` type inputs using a full date format (year/month/day), the `value` should be ISO (YYYY-MM-DD). Partial date formats use the display format.
12179
12244
  */
12180
12245
  value: {
12181
12246
  type: String
@@ -13298,7 +13363,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$3 {
13298
13363
  }
13299
13364
  };
13300
13365
 
13301
- var formkitVersion$8 = '202607011840';
13366
+ var formkitVersion$8 = '202607012057';
13302
13367
 
13303
13368
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
13304
13369
  // See LICENSE in the project root for license information.
@@ -14573,8 +14638,21 @@ let AuroFormValidation$1$1 = class AuroFormValidation {
14573
14638
  return;
14574
14639
  }
14575
14640
 
14576
- // Validate that the date passed was the correct format and is a valid date
14641
+ // Validate that the date passed was the correct format and is a valid date.
14642
+ // For partial date formats, valueObject is never populated; validate them directly.
14577
14643
  if (elem.value && !elem.valueObject) {
14644
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
14645
+
14646
+ if (isPartialDateFormat) {
14647
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
14648
+ elem.validity = 'patternMismatch';
14649
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
14650
+ }
14651
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
14652
+ return;
14653
+ }
14654
+
14655
+ // Full date format with no valueObject means the value is not a valid calendar date.
14578
14656
  elem.validity = 'patternMismatch';
14579
14657
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
14580
14658
  return;
@@ -24427,10 +24505,11 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
24427
24505
  const dateFormat = format || this.overrideFormat || pattern || 'mm/dd/yyyy';
24428
24506
 
24429
24507
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
24430
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
24508
+ const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
24509
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
24431
24510
  return {
24432
24511
  mask: IMask$1.MaskedRange,
24433
- from: 1,
24512
+ from: fromValue,
24434
24513
  to: maxValue,
24435
24514
  lazy: true,
24436
24515
  placeholderChar: '',
@@ -24438,7 +24517,8 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
24438
24517
  return value.toString().padStart(dateFormat.length, '0');
24439
24518
  },
24440
24519
  parse(str) {
24441
- return parseInt(str) || null;
24520
+ const num = parseInt(str, 10);
24521
+ return isNaN(num) ? null : num;
24442
24522
  }
24443
24523
  };
24444
24524
  }
@@ -24502,6 +24582,49 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
24502
24582
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
24503
24583
  }
24504
24584
 
24585
+ /**
24586
+ * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
24587
+ * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
24588
+ * a date-fns parse + round-trip to confirm both validity and exact formatting.
24589
+ * @param {string} value - The user-facing display value.
24590
+ * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
24591
+ * @returns {boolean}
24592
+ */
24593
+ isValidPartialDate(value, format) {
24594
+ if (!value || !format) {
24595
+ return false;
24596
+ }
24597
+ const normalizedFormat = format.toLowerCase();
24598
+
24599
+ if (normalizedFormat === 'dd') {
24600
+ const num = Number(value);
24601
+ return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
24602
+ }
24603
+ if (normalizedFormat === 'yy') {
24604
+ const num = Number(value);
24605
+ return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
24606
+ }
24607
+ if (normalizedFormat === 'yyyy') {
24608
+ const num = Number(value);
24609
+ return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
24610
+ }
24611
+
24612
+ const dateFnsMask = this.toDateFnsMask(normalizedFormat);
24613
+ // Use the 1st of the current month as the reference so that formats
24614
+ // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
24615
+ const referenceDate = new Date();
24616
+ referenceDate.setDate(1);
24617
+ const parsed = parse$1(value, dateFnsMask, referenceDate);
24618
+ if (!isValid$1(parsed) || format$1(parsed, dateFnsMask) !== value) {
24619
+ return false;
24620
+ }
24621
+ if (normalizedFormat.includes('yyyy')) {
24622
+ const year = parsed.getFullYear();
24623
+ return year >= 1900 && year <= 2100;
24624
+ }
24625
+ return true;
24626
+ }
24627
+
24505
24628
  /**
24506
24629
  * Converts a display string to its model value.
24507
24630
  * For full date formats, converts the display string to an ISO date string.
@@ -26431,6 +26554,41 @@ class AuroCalendarCell extends i$3 {
26431
26554
  btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
26432
26555
  }
26433
26556
 
26557
+ /**
26558
+ * Re-applies the committed-range classes (inRange / rangeDepartDate /
26559
+ * rangeReturnDate) imperatively from the cell's current `day`,
26560
+ * `dateFrom`, and `dateTo`. Used after month navigation flushes:
26561
+ * classMap in `renderCellButton` tracks its own previous state, so a
26562
+ * preceding imperative `classList.remove` (from
26563
+ * `clearRangePreviewClasses`) leaves classMap thinking the class is
26564
+ * still applied. On re-render with the same class-value, classMap emits
26565
+ * no delta and the class stays missing in the DOM. Re-toggling
26566
+ * imperatively resyncs the DOM with the committed range.
26567
+ *
26568
+ * Delegates to the same `isInRange` / `isDepartDate` / `isReturnDate`
26569
+ * helpers `renderCellButton` uses, so the two code paths cannot drift
26570
+ * (including whatever timestamp normalization those helpers apply).
26571
+ * @returns {void}
26572
+ */
26573
+ applyCommittedRangeClasses() {
26574
+ if (!this.day) return;
26575
+ // Fall back to a shadowRoot query when `_cachedButton` hasn't
26576
+ // populated yet — this method's whole job is recovering from stale
26577
+ // DOM after a month re-render, so no-oping on a cache miss defeats
26578
+ // the fix (mirrors the fallback in `clearActive()`).
26579
+ const btn = this._cachedButton || this.shadowRoot?.querySelector('button.day');
26580
+ if (!btn) return;
26581
+
26582
+ const hasRange = this.datepicker?.hasAttribute('range');
26583
+ const inRange = hasRange && this.dateTo && this.isInRange(this.day, this.dateFrom, this.dateTo);
26584
+ const isDepart = hasRange && this.isDepartDate(this.day, this.dateFrom) && this.dateTo;
26585
+ const isReturn = hasRange && this.isReturnDate(this.day, this.dateFrom, this.dateTo);
26586
+
26587
+ btn.classList.toggle('inRange', Boolean(inRange));
26588
+ btn.classList.toggle('rangeDepartDate', Boolean(isDepart));
26589
+ btn.classList.toggle('rangeReturnDate', Boolean(isReturn));
26590
+ }
26591
+
26434
26592
  renderCellButton() {
26435
26593
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
26436
26594
  const blackout = this.isBlackout();
@@ -27575,7 +27733,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$3 {
27575
27733
  }
27576
27734
  };
27577
27735
 
27578
- var formkitVersion$2$1 = '202607011840';
27736
+ var formkitVersion$2$1 = '202607012057';
27579
27737
 
27580
27738
  let l$1$2 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$2`${s$3(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1$2 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1$2 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1$3=i$6`: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]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--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}
27581
27739
  `,u$4$2=i$6`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}: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;box-sizing:border-box}: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: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.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(0)}to{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{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{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%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
@@ -27920,6 +28078,11 @@ class AuroCalendar extends RangeDatepicker {
27920
28078
  if (!opts.skipActiveUpdate) {
27921
28079
  this.updateActiveCellForVisibleMonth();
27922
28080
  }
28081
+ // clearRangePreview above strips classMap-managed range classes from
28082
+ // the DOM; classMap's private state still thinks they're applied, so
28083
+ // it won't re-add them on the post-nav re-render. Re-apply imperatively
28084
+ // after both months and their cell button caches have settled.
28085
+ this.scheduleCommittedRangeClassRefresh();
27923
28086
  this.announceMonthChange();
27924
28087
  }
27925
28088
 
@@ -27938,6 +28101,11 @@ class AuroCalendar extends RangeDatepicker {
27938
28101
  if (!opts.skipActiveUpdate) {
27939
28102
  this.updateActiveCellForVisibleMonth();
27940
28103
  }
28104
+ // clearRangePreview above strips classMap-managed range classes from
28105
+ // the DOM; classMap's private state still thinks they're applied, so
28106
+ // it won't re-add them on the post-nav re-render. Re-apply imperatively
28107
+ // after both months and their cell button caches have settled.
28108
+ this.scheduleCommittedRangeClassRefresh();
27941
28109
  this.announceMonthChange();
27942
28110
  }
27943
28111
 
@@ -29016,9 +29184,14 @@ class AuroCalendar extends RangeDatepicker {
29016
29184
  * @private
29017
29185
  * @param {Object} [options] - Optional settings.
29018
29186
  * @param {boolean} [options.force=false] - When true, clears classes even
29019
- * when both dateFrom and dateTo are set. Used by month nav handlers
29020
- * since the subsequent re-render re-applies classMap-managed classes,
29021
- * while `lastHoveredDate` (not in classMap) would otherwise persist.
29187
+ * when both dateFrom and dateTo are set. Used by month nav handlers to
29188
+ * strip the imperative-only `lastHoveredDate` before the re-render.
29189
+ * The other two classes (`inRange`, `rangeDepartDate`) are classMap-
29190
+ * managed and get stripped as a side effect here; because classMap
29191
+ * remembers what it last emitted and does not diff against the actual
29192
+ * DOM, the following month re-render will NOT re-add them on its own.
29193
+ * Nav handlers must schedule `refreshCommittedRangeClasses` (via
29194
+ * `scheduleCommittedRangeClassRefresh`) to resync them.
29022
29195
  * @returns {void}
29023
29196
  */
29024
29197
  clearRangePreview(options) {
@@ -29033,6 +29206,57 @@ class AuroCalendar extends RangeDatepicker {
29033
29206
  });
29034
29207
  }
29035
29208
 
29209
+ /**
29210
+ * Re-applies the committed-range classes across every focusable cell
29211
+ * after a month navigation. classMap in the cell tracks its own
29212
+ * previous state: once `clearRangePreview({ force: true })` strips
29213
+ * `inRange`/`rangeDepartDate` imperatively before the re-render,
29214
+ * classMap's next diff sees the same class-value it emitted before and
29215
+ * produces no delta, leaving the DOM without the classes even though a
29216
+ * full range is committed. Re-applying imperatively resyncs the two
29217
+ * months' cells with `dateFrom`/`dateTo`.
29218
+ *
29219
+ * Iterates `getAllFocusableCells()` — out-of-range cells (blocked by
29220
+ * `min`/`max`) can never carry range classes anyway, so skipping them
29221
+ * is correct and cheaper than a whole-grid walk.
29222
+ *
29223
+ * The cell's `applyCommittedRangeClasses` reuses the same
29224
+ * `isInRange`/`isDepartDate`/`isReturnDate` helpers `renderCellButton`
29225
+ * uses, so we don't parse dateFrom/dateTo here — the helpers already
29226
+ * normalize their inputs (midnight-truncation, string→int) internally.
29227
+ * @private
29228
+ * @returns {void}
29229
+ */
29230
+ refreshCommittedRangeClasses() {
29231
+ if (this.noRange || !this.dateFrom || !this.dateTo) {
29232
+ return;
29233
+ }
29234
+
29235
+ const allCells = this.getAllFocusableCells();
29236
+ allCells.forEach((cell) => {
29237
+ cell.applyCommittedRangeClasses();
29238
+ });
29239
+ }
29240
+
29241
+ /**
29242
+ * Schedules `refreshCommittedRangeClasses` to run after the month
29243
+ * re-render has flushed and the cells' button caches have refreshed.
29244
+ * Both `handlePrevMonth` and `handleNextMonth` need this exact call
29245
+ * shape; keeping it in one place prevents them from drifting apart.
29246
+ *
29247
+ * Bails synchronously when a full committed range isn't set — otherwise
29248
+ * every prev/next click in single-date mode (or before the user picks
29249
+ * both dates in range mode) pays for an unused double-rAF hop.
29250
+ * @private
29251
+ * @returns {void}
29252
+ */
29253
+ scheduleCommittedRangeClassRefresh() {
29254
+ if (this.noRange || !this.dateFrom || !this.dateTo) {
29255
+ return;
29256
+ }
29257
+ this._afterMonthRender(() => this.refreshCommittedRangeClasses());
29258
+ }
29259
+
29036
29260
  /**
29037
29261
  * Overrides the base class handler to prevent setting `this.hoveredDate`
29038
29262
  * as a reactive property. Instead, handles the range preview imperatively.
@@ -33327,7 +33551,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$3 {
33327
33551
  }
33328
33552
  };
33329
33553
 
33330
- var formkitVersion$1$3 = '202607011840';
33554
+ var formkitVersion$1$3 = '202607012057';
33331
33555
 
33332
33556
  let AuroElement$2$2 = class AuroElement extends i$3 {
33333
33557
  static get properties() {
@@ -34079,6 +34303,23 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
34079
34303
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
34080
34304
  this.trigger.focus();
34081
34305
  }
34306
+
34307
+
34308
+ if (!this.isPopoverVisible) {
34309
+ // wait til the bib gets fully closed and rendered
34310
+ setTimeout(() => {
34311
+ // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
34312
+ // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
34313
+ if (this.isPopoverVisible ||
34314
+ // eslint-disable-next-line no-extra-parens
34315
+ (!this.bibContent?.matches(':focus-within') &&
34316
+ document.activeElement !== document.body)) {
34317
+ return;
34318
+ }
34319
+ // Restore focus to the trigger.
34320
+ this.trigger.focus();
34321
+ });
34322
+ }
34082
34323
  }
34083
34324
 
34084
34325
  firstUpdated() {
@@ -39004,8 +39245,21 @@ let AuroFormValidation$6 = class AuroFormValidation {
39004
39245
  return;
39005
39246
  }
39006
39247
 
39007
- // Validate that the date passed was the correct format and is a valid date
39248
+ // Validate that the date passed was the correct format and is a valid date.
39249
+ // For partial date formats, valueObject is never populated; validate them directly.
39008
39250
  if (elem.value && !elem.valueObject) {
39251
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
39252
+
39253
+ if (isPartialDateFormat) {
39254
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
39255
+ elem.validity = 'patternMismatch';
39256
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
39257
+ }
39258
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
39259
+ return;
39260
+ }
39261
+
39262
+ // Full date format with no valueObject means the value is not a valid calendar date.
39009
39263
  elem.validity = 'patternMismatch';
39010
39264
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
39011
39265
  return;
@@ -44935,10 +45189,11 @@ let AuroInputUtilities$2 = class AuroInputUtilities {
44935
45189
  const dateFormat = format$1 || this.overrideFormat || pattern || 'mm/dd/yyyy';
44936
45190
 
44937
45191
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
44938
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
45192
+ const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
45193
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
44939
45194
  return {
44940
45195
  mask: IMask$2.MaskedRange,
44941
- from: 1,
45196
+ from: fromValue,
44942
45197
  to: maxValue,
44943
45198
  lazy: true,
44944
45199
  placeholderChar: '',
@@ -44946,7 +45201,8 @@ let AuroInputUtilities$2 = class AuroInputUtilities {
44946
45201
  return value.toString().padStart(dateFormat.length, '0');
44947
45202
  },
44948
45203
  parse(str) {
44949
- return parseInt(str) || null;
45204
+ const num = parseInt(str, 10);
45205
+ return isNaN(num) ? null : num;
44950
45206
  }
44951
45207
  };
44952
45208
  }
@@ -45010,6 +45266,49 @@ let AuroInputUtilities$2 = class AuroInputUtilities {
45010
45266
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
45011
45267
  }
45012
45268
 
45269
+ /**
45270
+ * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
45271
+ * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
45272
+ * a date-fns parse + round-trip to confirm both validity and exact formatting.
45273
+ * @param {string} value - The user-facing display value.
45274
+ * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
45275
+ * @returns {boolean}
45276
+ */
45277
+ isValidPartialDate(value, format$1) {
45278
+ if (!value || !format$1) {
45279
+ return false;
45280
+ }
45281
+ const normalizedFormat = format$1.toLowerCase();
45282
+
45283
+ if (normalizedFormat === 'dd') {
45284
+ const num = Number(value);
45285
+ return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
45286
+ }
45287
+ if (normalizedFormat === 'yy') {
45288
+ const num = Number(value);
45289
+ return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
45290
+ }
45291
+ if (normalizedFormat === 'yyyy') {
45292
+ const num = Number(value);
45293
+ return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
45294
+ }
45295
+
45296
+ const dateFnsMask = this.toDateFnsMask(normalizedFormat);
45297
+ // Use the 1st of the current month as the reference so that formats
45298
+ // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
45299
+ const referenceDate = new Date();
45300
+ referenceDate.setDate(1);
45301
+ const parsed = parse$2(value, dateFnsMask, referenceDate);
45302
+ if (!isValid$2(parsed) || format$2(parsed, dateFnsMask) !== value) {
45303
+ return false;
45304
+ }
45305
+ if (normalizedFormat.includes('yyyy')) {
45306
+ const year = parsed.getFullYear();
45307
+ return year >= 1900 && year <= 2100;
45308
+ }
45309
+ return true;
45310
+ }
45311
+
45013
45312
  /**
45014
45313
  * Converts a display string to its model value.
45015
45314
  * For full date formats, converts the display string to an ISO date string.
@@ -45629,6 +45928,13 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
45629
45928
  type: String
45630
45929
  },
45631
45930
 
45931
+ /**
45932
+ * Custom help text message to display when validity = `patternMismatch`.
45933
+ */
45934
+ setCustomValidityPatternMismatch: {
45935
+ type: String
45936
+ },
45937
+
45632
45938
  /**
45633
45939
  * Custom help text message to display when validity = `rangeOverflow`.
45634
45940
  */
@@ -45699,7 +46005,7 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
45699
46005
 
45700
46006
  /**
45701
46007
  * Populates the `type` attribute on the input.
45702
- * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
46008
+ * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
45703
46009
  * @default 'text'
45704
46010
  */
45705
46011
  type: {
@@ -45724,7 +46030,7 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
45724
46030
 
45725
46031
  /**
45726
46032
  * Populates the `value` attribute on the input. Can also be read to retrieve the current value of the input.
45727
- * The format for this property should be ISO for `date` type inputs.
46033
+ * For `date` type inputs using a full date format (year/month/day), the `value` should be ISO (YYYY-MM-DD). Partial date formats use the display format.
45728
46034
  */
45729
46035
  value: {
45730
46036
  type: String
@@ -46847,7 +47153,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$3 {
46847
47153
  }
46848
47154
  };
46849
47155
 
46850
- var formkitVersion$7 = '202607011840';
47156
+ var formkitVersion$7 = '202607012057';
46851
47157
 
46852
47158
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
46853
47159
  // See LICENSE in the project root for license information.
@@ -51143,8 +51449,21 @@ let AuroFormValidation$5 = class AuroFormValidation {
51143
51449
  return;
51144
51450
  }
51145
51451
 
51146
- // Validate that the date passed was the correct format and is a valid date
51452
+ // Validate that the date passed was the correct format and is a valid date.
51453
+ // For partial date formats, valueObject is never populated; validate them directly.
51147
51454
  if (elem.value && !elem.valueObject) {
51455
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
51456
+
51457
+ if (isPartialDateFormat) {
51458
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
51459
+ elem.validity = 'patternMismatch';
51460
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
51461
+ }
51462
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
51463
+ return;
51464
+ }
51465
+
51466
+ // Full date format with no valueObject means the value is not a valid calendar date.
51148
51467
  elem.validity = 'patternMismatch';
51149
51468
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
51150
51469
  return;
@@ -51716,7 +52035,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$3 {
51716
52035
  }
51717
52036
  };
51718
52037
 
51719
- var formkitVersion$1$2 = '202607011840';
52038
+ var formkitVersion$1$2 = '202607012057';
51720
52039
 
51721
52040
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
51722
52041
  // See LICENSE in the project root for license information.
@@ -56044,7 +56363,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$3 {
56044
56363
  }
56045
56364
  };
56046
56365
 
56047
- var formkitVersion$6 = '202607011840';
56366
+ var formkitVersion$6 = '202607012057';
56048
56367
 
56049
56368
  let AuroElement$1$2 = class AuroElement extends i$3 {
56050
56369
  static get properties() {
@@ -56796,6 +57115,23 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$1$2 {
56796
57115
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
56797
57116
  this.trigger.focus();
56798
57117
  }
57118
+
57119
+
57120
+ if (!this.isPopoverVisible) {
57121
+ // wait til the bib gets fully closed and rendered
57122
+ setTimeout(() => {
57123
+ // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
57124
+ // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
57125
+ if (this.isPopoverVisible ||
57126
+ // eslint-disable-next-line no-extra-parens
57127
+ (!this.bibContent?.matches(':focus-within') &&
57128
+ document.activeElement !== document.body)) {
57129
+ return;
57130
+ }
57131
+ // Restore focus to the trigger.
57132
+ this.trigger.focus();
57133
+ });
57134
+ }
56799
57135
  }
56800
57136
 
56801
57137
  firstUpdated() {
@@ -59495,8 +59831,21 @@ let AuroFormValidation$4 = class AuroFormValidation {
59495
59831
  return;
59496
59832
  }
59497
59833
 
59498
- // Validate that the date passed was the correct format and is a valid date
59834
+ // Validate that the date passed was the correct format and is a valid date.
59835
+ // For partial date formats, valueObject is never populated; validate them directly.
59499
59836
  if (elem.value && !elem.valueObject) {
59837
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
59838
+
59839
+ if (isPartialDateFormat) {
59840
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
59841
+ elem.validity = 'patternMismatch';
59842
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
59843
+ }
59844
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
59845
+ return;
59846
+ }
59847
+
59848
+ // Full date format with no valueObject means the value is not a valid calendar date.
59500
59849
  elem.validity = 'patternMismatch';
59501
59850
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
59502
59851
  return;
@@ -59994,7 +60343,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$3 {
59994
60343
  }
59995
60344
  };
59996
60345
 
59997
- var formkitVersion$5 = '202607011840';
60346
+ var formkitVersion$5 = '202607012057';
59998
60347
 
59999
60348
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
60000
60349
  // See LICENSE in the project root for license information.
@@ -61243,8 +61592,21 @@ let AuroFormValidation$3 = class AuroFormValidation {
61243
61592
  return;
61244
61593
  }
61245
61594
 
61246
- // Validate that the date passed was the correct format and is a valid date
61595
+ // Validate that the date passed was the correct format and is a valid date.
61596
+ // For partial date formats, valueObject is never populated; validate them directly.
61247
61597
  if (elem.value && !elem.valueObject) {
61598
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
61599
+
61600
+ if (isPartialDateFormat) {
61601
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
61602
+ elem.validity = 'patternMismatch';
61603
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
61604
+ }
61605
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
61606
+ return;
61607
+ }
61608
+
61609
+ // Full date format with no valueObject means the value is not a valid calendar date.
61248
61610
  elem.validity = 'patternMismatch';
61249
61611
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
61250
61612
  return;
@@ -61746,7 +62108,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$3 {
61746
62108
  }
61747
62109
  };
61748
62110
 
61749
- var formkitVersion$4 = '202607011840';
62111
+ var formkitVersion$4 = '202607012057';
61750
62112
 
61751
62113
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
61752
62114
  // See LICENSE in the project root for license information.
@@ -62505,8 +62867,21 @@ let AuroFormValidation$1 = class AuroFormValidation {
62505
62867
  return;
62506
62868
  }
62507
62869
 
62508
- // Validate that the date passed was the correct format and is a valid date
62870
+ // Validate that the date passed was the correct format and is a valid date.
62871
+ // For partial date formats, valueObject is never populated; validate them directly.
62509
62872
  if (elem.value && !elem.valueObject) {
62873
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
62874
+
62875
+ if (isPartialDateFormat) {
62876
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
62877
+ elem.validity = 'patternMismatch';
62878
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
62879
+ }
62880
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
62881
+ return;
62882
+ }
62883
+
62884
+ // Full date format with no valueObject means the value is not a valid calendar date.
62510
62885
  elem.validity = 'patternMismatch';
62511
62886
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
62512
62887
  return;
@@ -66954,7 +67329,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
66954
67329
  }
66955
67330
  };
66956
67331
 
66957
- var formkitVersion$2 = '202607011840';
67332
+ var formkitVersion$2 = '202607012057';
66958
67333
 
66959
67334
  let AuroElement$2$1 = class AuroElement extends i$3 {
66960
67335
  static get properties() {
@@ -67706,6 +68081,23 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
67706
68081
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
67707
68082
  this.trigger.focus();
67708
68083
  }
68084
+
68085
+
68086
+ if (!this.isPopoverVisible) {
68087
+ // wait til the bib gets fully closed and rendered
68088
+ setTimeout(() => {
68089
+ // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
68090
+ // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
68091
+ if (this.isPopoverVisible ||
68092
+ // eslint-disable-next-line no-extra-parens
68093
+ (!this.bibContent?.matches(':focus-within') &&
68094
+ document.activeElement !== document.body)) {
68095
+ return;
68096
+ }
68097
+ // Restore focus to the trigger.
68098
+ this.trigger.focus();
68099
+ });
68100
+ }
67709
68101
  }
67710
68102
 
67711
68103
  firstUpdated() {
@@ -72631,8 +73023,21 @@ let AuroFormValidation$2 = class AuroFormValidation {
72631
73023
  return;
72632
73024
  }
72633
73025
 
72634
- // Validate that the date passed was the correct format and is a valid date
73026
+ // Validate that the date passed was the correct format and is a valid date.
73027
+ // For partial date formats, valueObject is never populated; validate them directly.
72635
73028
  if (elem.value && !elem.valueObject) {
73029
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
73030
+
73031
+ if (isPartialDateFormat) {
73032
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
73033
+ elem.validity = 'patternMismatch';
73034
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
73035
+ }
73036
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
73037
+ return;
73038
+ }
73039
+
73040
+ // Full date format with no valueObject means the value is not a valid calendar date.
72636
73041
  elem.validity = 'patternMismatch';
72637
73042
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
72638
73043
  return;
@@ -78562,10 +78967,11 @@ class AuroInputUtilities {
78562
78967
  const dateFormat = format$1 || this.overrideFormat || pattern || 'mm/dd/yyyy';
78563
78968
 
78564
78969
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
78565
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
78970
+ const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
78971
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
78566
78972
  return {
78567
78973
  mask: IMask.MaskedRange,
78568
- from: 1,
78974
+ from: fromValue,
78569
78975
  to: maxValue,
78570
78976
  lazy: true,
78571
78977
  placeholderChar: '',
@@ -78573,7 +78979,8 @@ class AuroInputUtilities {
78573
78979
  return value.toString().padStart(dateFormat.length, '0');
78574
78980
  },
78575
78981
  parse(str) {
78576
- return parseInt(str) || null;
78982
+ const num = parseInt(str, 10);
78983
+ return isNaN(num) ? null : num;
78577
78984
  }
78578
78985
  };
78579
78986
  }
@@ -78637,6 +79044,49 @@ class AuroInputUtilities {
78637
79044
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
78638
79045
  }
78639
79046
 
79047
+ /**
79048
+ * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
79049
+ * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
79050
+ * a date-fns parse + round-trip to confirm both validity and exact formatting.
79051
+ * @param {string} value - The user-facing display value.
79052
+ * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
79053
+ * @returns {boolean}
79054
+ */
79055
+ isValidPartialDate(value, format$1) {
79056
+ if (!value || !format$1) {
79057
+ return false;
79058
+ }
79059
+ const normalizedFormat = format$1.toLowerCase();
79060
+
79061
+ if (normalizedFormat === 'dd') {
79062
+ const num = Number(value);
79063
+ return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
79064
+ }
79065
+ if (normalizedFormat === 'yy') {
79066
+ const num = Number(value);
79067
+ return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
79068
+ }
79069
+ if (normalizedFormat === 'yyyy') {
79070
+ const num = Number(value);
79071
+ return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
79072
+ }
79073
+
79074
+ const dateFnsMask = this.toDateFnsMask(normalizedFormat);
79075
+ // Use the 1st of the current month as the reference so that formats
79076
+ // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
79077
+ const referenceDate = new Date();
79078
+ referenceDate.setDate(1);
79079
+ const parsed = parse(value, dateFnsMask, referenceDate);
79080
+ if (!isValid(parsed) || format(parsed, dateFnsMask) !== value) {
79081
+ return false;
79082
+ }
79083
+ if (normalizedFormat.includes('yyyy')) {
79084
+ const year = parsed.getFullYear();
79085
+ return year >= 1900 && year <= 2100;
79086
+ }
79087
+ return true;
79088
+ }
79089
+
78640
79090
  /**
78641
79091
  * Converts a display string to its model value.
78642
79092
  * For full date formats, converts the display string to an ISO date string.
@@ -79256,6 +79706,13 @@ class BaseInput extends AuroElement$1$1 {
79256
79706
  type: String
79257
79707
  },
79258
79708
 
79709
+ /**
79710
+ * Custom help text message to display when validity = `patternMismatch`.
79711
+ */
79712
+ setCustomValidityPatternMismatch: {
79713
+ type: String
79714
+ },
79715
+
79259
79716
  /**
79260
79717
  * Custom help text message to display when validity = `rangeOverflow`.
79261
79718
  */
@@ -79326,7 +79783,7 @@ class BaseInput extends AuroElement$1$1 {
79326
79783
 
79327
79784
  /**
79328
79785
  * Populates the `type` attribute on the input.
79329
- * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
79786
+ * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
79330
79787
  * @default 'text'
79331
79788
  */
79332
79789
  type: {
@@ -79351,7 +79808,7 @@ class BaseInput extends AuroElement$1$1 {
79351
79808
 
79352
79809
  /**
79353
79810
  * Populates the `value` attribute on the input. Can also be read to retrieve the current value of the input.
79354
- * The format for this property should be ISO for `date` type inputs.
79811
+ * For `date` type inputs using a full date format (year/month/day), the `value` should be ISO (YYYY-MM-DD). Partial date formats use the display format.
79355
79812
  */
79356
79813
  value: {
79357
79814
  type: String
@@ -80474,7 +80931,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$3 {
80474
80931
  }
80475
80932
  };
80476
80933
 
80477
- var formkitVersion$1$1 = '202607011840';
80934
+ var formkitVersion$1$1 = '202607012057';
80478
80935
 
80479
80936
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
80480
80937
  // See LICENSE in the project root for license information.
@@ -81600,7 +82057,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$3 {
81600
82057
  }
81601
82058
  };
81602
82059
 
81603
- var formkitVersion$3 = '202607011840';
82060
+ var formkitVersion$3 = '202607012057';
81604
82061
 
81605
82062
  var styleCss$1$3 = i$6`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
81606
82063
 
@@ -85934,8 +86391,21 @@ class AuroFormValidation {
85934
86391
  return;
85935
86392
  }
85936
86393
 
85937
- // Validate that the date passed was the correct format and is a valid date
86394
+ // Validate that the date passed was the correct format and is a valid date.
86395
+ // For partial date formats, valueObject is never populated; validate them directly.
85938
86396
  if (elem.value && !elem.valueObject) {
86397
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
86398
+
86399
+ if (isPartialDateFormat) {
86400
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
86401
+ elem.validity = 'patternMismatch';
86402
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
86403
+ }
86404
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
86405
+ return;
86406
+ }
86407
+
86408
+ // Full date format with no valueObject means the value is not a valid calendar date.
85939
86409
  elem.validity = 'patternMismatch';
85940
86410
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
85941
86411
  return;
@@ -90423,7 +90893,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
90423
90893
  }
90424
90894
  };
90425
90895
 
90426
- var formkitVersion$1 = '202607011840';
90896
+ var formkitVersion$1 = '202607012057';
90427
90897
 
90428
90898
  class AuroElement extends i$3 {
90429
90899
  static get properties() {
@@ -91175,6 +91645,23 @@ class AuroDropdown extends AuroElement {
91175
91645
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
91176
91646
  this.trigger.focus();
91177
91647
  }
91648
+
91649
+
91650
+ if (!this.isPopoverVisible) {
91651
+ // wait til the bib gets fully closed and rendered
91652
+ setTimeout(() => {
91653
+ // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
91654
+ // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
91655
+ if (this.isPopoverVisible ||
91656
+ // eslint-disable-next-line no-extra-parens
91657
+ (!this.bibContent?.matches(':focus-within') &&
91658
+ document.activeElement !== document.body)) {
91659
+ return;
91660
+ }
91661
+ // Restore focus to the trigger.
91662
+ this.trigger.focus();
91663
+ });
91664
+ }
91178
91665
  }
91179
91666
 
91180
91667
  firstUpdated() {
@@ -92445,7 +92932,7 @@ class AuroHelpText extends i$3 {
92445
92932
  }
92446
92933
  }
92447
92934
 
92448
- var formkitVersion = '202607011840';
92935
+ var formkitVersion = '202607012057';
92449
92936
 
92450
92937
  var styleCss = i$6`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[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);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;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:var(--ds-size-100, 0.5rem)}.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{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-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],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
92451
92938