@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
@@ -4414,8 +4414,21 @@ let AuroFormValidation$7 = class AuroFormValidation {
4414
4414
  return;
4415
4415
  }
4416
4416
 
4417
- // Validate that the date passed was the correct format and is a valid date
4417
+ // Validate that the date passed was the correct format and is a valid date.
4418
+ // For partial date formats, valueObject is never populated; validate them directly.
4418
4419
  if (elem.value && !elem.valueObject) {
4420
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
4421
+
4422
+ if (isPartialDateFormat) {
4423
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
4424
+ elem.validity = 'patternMismatch';
4425
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
4426
+ }
4427
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
4428
+ return;
4429
+ }
4430
+
4431
+ // Full date format with no valueObject means the value is not a valid calendar date.
4419
4432
  elem.validity = 'patternMismatch';
4420
4433
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
4421
4434
  return;
@@ -10345,10 +10358,11 @@ let AuroInputUtilities$3 = class AuroInputUtilities {
10345
10358
  const dateFormat = format$1 || this.overrideFormat || pattern || 'mm/dd/yyyy';
10346
10359
 
10347
10360
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
10348
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
10361
+ const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
10362
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
10349
10363
  return {
10350
10364
  mask: IMask$3.MaskedRange,
10351
- from: 1,
10365
+ from: fromValue,
10352
10366
  to: maxValue,
10353
10367
  lazy: true,
10354
10368
  placeholderChar: '',
@@ -10356,7 +10370,8 @@ let AuroInputUtilities$3 = class AuroInputUtilities {
10356
10370
  return value.toString().padStart(dateFormat.length, '0');
10357
10371
  },
10358
10372
  parse(str) {
10359
- return parseInt(str) || null;
10373
+ const num = parseInt(str, 10);
10374
+ return isNaN(num) ? null : num;
10360
10375
  }
10361
10376
  };
10362
10377
  }
@@ -10420,6 +10435,49 @@ let AuroInputUtilities$3 = class AuroInputUtilities {
10420
10435
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
10421
10436
  }
10422
10437
 
10438
+ /**
10439
+ * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
10440
+ * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
10441
+ * a date-fns parse + round-trip to confirm both validity and exact formatting.
10442
+ * @param {string} value - The user-facing display value.
10443
+ * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
10444
+ * @returns {boolean}
10445
+ */
10446
+ isValidPartialDate(value, format$1) {
10447
+ if (!value || !format$1) {
10448
+ return false;
10449
+ }
10450
+ const normalizedFormat = format$1.toLowerCase();
10451
+
10452
+ if (normalizedFormat === 'dd') {
10453
+ const num = Number(value);
10454
+ return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
10455
+ }
10456
+ if (normalizedFormat === 'yy') {
10457
+ const num = Number(value);
10458
+ return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
10459
+ }
10460
+ if (normalizedFormat === 'yyyy') {
10461
+ const num = Number(value);
10462
+ return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
10463
+ }
10464
+
10465
+ const dateFnsMask = this.toDateFnsMask(normalizedFormat);
10466
+ // Use the 1st of the current month as the reference so that formats
10467
+ // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
10468
+ const referenceDate = new Date();
10469
+ referenceDate.setDate(1);
10470
+ const parsed = parse$3(value, dateFnsMask, referenceDate);
10471
+ if (!isValid$3(parsed) || format$3(parsed, dateFnsMask) !== value) {
10472
+ return false;
10473
+ }
10474
+ if (normalizedFormat.includes('yyyy')) {
10475
+ const year = parsed.getFullYear();
10476
+ return year >= 1900 && year <= 2100;
10477
+ }
10478
+ return true;
10479
+ }
10480
+
10423
10481
  /**
10424
10482
  * Converts a display string to its model value.
10425
10483
  * For full date formats, converts the display string to an ISO date string.
@@ -11039,6 +11097,13 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
11039
11097
  type: String
11040
11098
  },
11041
11099
 
11100
+ /**
11101
+ * Custom help text message to display when validity = `patternMismatch`.
11102
+ */
11103
+ setCustomValidityPatternMismatch: {
11104
+ type: String
11105
+ },
11106
+
11042
11107
  /**
11043
11108
  * Custom help text message to display when validity = `rangeOverflow`.
11044
11109
  */
@@ -11109,7 +11174,7 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
11109
11174
 
11110
11175
  /**
11111
11176
  * Populates the `type` attribute on the input.
11112
- * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
11177
+ * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
11113
11178
  * @default 'text'
11114
11179
  */
11115
11180
  type: {
@@ -11134,7 +11199,7 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
11134
11199
 
11135
11200
  /**
11136
11201
  * Populates the `value` attribute on the input. Can also be read to retrieve the current value of the input.
11137
- * The format for this property should be ISO for `date` type inputs.
11202
+ * 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.
11138
11203
  */
11139
11204
  value: {
11140
11205
  type: String
@@ -12257,7 +12322,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$2 {
12257
12322
  }
12258
12323
  };
12259
12324
 
12260
- var formkitVersion$8 = '202607011840';
12325
+ var formkitVersion$8 = '202607012057';
12261
12326
 
12262
12327
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12263
12328
  // See LICENSE in the project root for license information.
@@ -13532,8 +13597,21 @@ let AuroFormValidation$1$1 = class AuroFormValidation {
13532
13597
  return;
13533
13598
  }
13534
13599
 
13535
- // Validate that the date passed was the correct format and is a valid date
13600
+ // Validate that the date passed was the correct format and is a valid date.
13601
+ // For partial date formats, valueObject is never populated; validate them directly.
13536
13602
  if (elem.value && !elem.valueObject) {
13603
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
13604
+
13605
+ if (isPartialDateFormat) {
13606
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
13607
+ elem.validity = 'patternMismatch';
13608
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
13609
+ }
13610
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
13611
+ return;
13612
+ }
13613
+
13614
+ // Full date format with no valueObject means the value is not a valid calendar date.
13537
13615
  elem.validity = 'patternMismatch';
13538
13616
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
13539
13617
  return;
@@ -23386,10 +23464,11 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
23386
23464
  const dateFormat = format || this.overrideFormat || pattern || 'mm/dd/yyyy';
23387
23465
 
23388
23466
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
23389
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
23467
+ const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
23468
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
23390
23469
  return {
23391
23470
  mask: IMask$1.MaskedRange,
23392
- from: 1,
23471
+ from: fromValue,
23393
23472
  to: maxValue,
23394
23473
  lazy: true,
23395
23474
  placeholderChar: '',
@@ -23397,7 +23476,8 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
23397
23476
  return value.toString().padStart(dateFormat.length, '0');
23398
23477
  },
23399
23478
  parse(str) {
23400
- return parseInt(str) || null;
23479
+ const num = parseInt(str, 10);
23480
+ return isNaN(num) ? null : num;
23401
23481
  }
23402
23482
  };
23403
23483
  }
@@ -23461,6 +23541,49 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
23461
23541
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
23462
23542
  }
23463
23543
 
23544
+ /**
23545
+ * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
23546
+ * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
23547
+ * a date-fns parse + round-trip to confirm both validity and exact formatting.
23548
+ * @param {string} value - The user-facing display value.
23549
+ * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
23550
+ * @returns {boolean}
23551
+ */
23552
+ isValidPartialDate(value, format) {
23553
+ if (!value || !format) {
23554
+ return false;
23555
+ }
23556
+ const normalizedFormat = format.toLowerCase();
23557
+
23558
+ if (normalizedFormat === 'dd') {
23559
+ const num = Number(value);
23560
+ return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
23561
+ }
23562
+ if (normalizedFormat === 'yy') {
23563
+ const num = Number(value);
23564
+ return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
23565
+ }
23566
+ if (normalizedFormat === 'yyyy') {
23567
+ const num = Number(value);
23568
+ return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
23569
+ }
23570
+
23571
+ const dateFnsMask = this.toDateFnsMask(normalizedFormat);
23572
+ // Use the 1st of the current month as the reference so that formats
23573
+ // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
23574
+ const referenceDate = new Date();
23575
+ referenceDate.setDate(1);
23576
+ const parsed = parse$1(value, dateFnsMask, referenceDate);
23577
+ if (!isValid$1(parsed) || format$1(parsed, dateFnsMask) !== value) {
23578
+ return false;
23579
+ }
23580
+ if (normalizedFormat.includes('yyyy')) {
23581
+ const year = parsed.getFullYear();
23582
+ return year >= 1900 && year <= 2100;
23583
+ }
23584
+ return true;
23585
+ }
23586
+
23464
23587
  /**
23465
23588
  * Converts a display string to its model value.
23466
23589
  * For full date formats, converts the display string to an ISO date string.
@@ -25390,6 +25513,41 @@ class AuroCalendarCell extends i$2 {
25390
25513
  btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
25391
25514
  }
25392
25515
 
25516
+ /**
25517
+ * Re-applies the committed-range classes (inRange / rangeDepartDate /
25518
+ * rangeReturnDate) imperatively from the cell's current `day`,
25519
+ * `dateFrom`, and `dateTo`. Used after month navigation flushes:
25520
+ * classMap in `renderCellButton` tracks its own previous state, so a
25521
+ * preceding imperative `classList.remove` (from
25522
+ * `clearRangePreviewClasses`) leaves classMap thinking the class is
25523
+ * still applied. On re-render with the same class-value, classMap emits
25524
+ * no delta and the class stays missing in the DOM. Re-toggling
25525
+ * imperatively resyncs the DOM with the committed range.
25526
+ *
25527
+ * Delegates to the same `isInRange` / `isDepartDate` / `isReturnDate`
25528
+ * helpers `renderCellButton` uses, so the two code paths cannot drift
25529
+ * (including whatever timestamp normalization those helpers apply).
25530
+ * @returns {void}
25531
+ */
25532
+ applyCommittedRangeClasses() {
25533
+ if (!this.day) return;
25534
+ // Fall back to a shadowRoot query when `_cachedButton` hasn't
25535
+ // populated yet — this method's whole job is recovering from stale
25536
+ // DOM after a month re-render, so no-oping on a cache miss defeats
25537
+ // the fix (mirrors the fallback in `clearActive()`).
25538
+ const btn = this._cachedButton || this.shadowRoot?.querySelector('button.day');
25539
+ if (!btn) return;
25540
+
25541
+ const hasRange = this.datepicker?.hasAttribute('range');
25542
+ const inRange = hasRange && this.dateTo && this.isInRange(this.day, this.dateFrom, this.dateTo);
25543
+ const isDepart = hasRange && this.isDepartDate(this.day, this.dateFrom) && this.dateTo;
25544
+ const isReturn = hasRange && this.isReturnDate(this.day, this.dateFrom, this.dateTo);
25545
+
25546
+ btn.classList.toggle('inRange', Boolean(inRange));
25547
+ btn.classList.toggle('rangeDepartDate', Boolean(isDepart));
25548
+ btn.classList.toggle('rangeReturnDate', Boolean(isReturn));
25549
+ }
25550
+
25393
25551
  renderCellButton() {
25394
25552
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
25395
25553
  const blackout = this.isBlackout();
@@ -26534,7 +26692,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$2 {
26534
26692
  }
26535
26693
  };
26536
26694
 
26537
- var formkitVersion$2$1 = '202607011840';
26695
+ var formkitVersion$2$1 = '202607012057';
26538
26696
 
26539
26697
  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$5`${s$5(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$4`: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}
26540
26698
  `,u$4$2=i$4`.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}}
@@ -26879,6 +27037,11 @@ class AuroCalendar extends RangeDatepicker {
26879
27037
  if (!opts.skipActiveUpdate) {
26880
27038
  this.updateActiveCellForVisibleMonth();
26881
27039
  }
27040
+ // clearRangePreview above strips classMap-managed range classes from
27041
+ // the DOM; classMap's private state still thinks they're applied, so
27042
+ // it won't re-add them on the post-nav re-render. Re-apply imperatively
27043
+ // after both months and their cell button caches have settled.
27044
+ this.scheduleCommittedRangeClassRefresh();
26882
27045
  this.announceMonthChange();
26883
27046
  }
26884
27047
 
@@ -26897,6 +27060,11 @@ class AuroCalendar extends RangeDatepicker {
26897
27060
  if (!opts.skipActiveUpdate) {
26898
27061
  this.updateActiveCellForVisibleMonth();
26899
27062
  }
27063
+ // clearRangePreview above strips classMap-managed range classes from
27064
+ // the DOM; classMap's private state still thinks they're applied, so
27065
+ // it won't re-add them on the post-nav re-render. Re-apply imperatively
27066
+ // after both months and their cell button caches have settled.
27067
+ this.scheduleCommittedRangeClassRefresh();
26900
27068
  this.announceMonthChange();
26901
27069
  }
26902
27070
 
@@ -27975,9 +28143,14 @@ class AuroCalendar extends RangeDatepicker {
27975
28143
  * @private
27976
28144
  * @param {Object} [options] - Optional settings.
27977
28145
  * @param {boolean} [options.force=false] - When true, clears classes even
27978
- * when both dateFrom and dateTo are set. Used by month nav handlers
27979
- * since the subsequent re-render re-applies classMap-managed classes,
27980
- * while `lastHoveredDate` (not in classMap) would otherwise persist.
28146
+ * when both dateFrom and dateTo are set. Used by month nav handlers to
28147
+ * strip the imperative-only `lastHoveredDate` before the re-render.
28148
+ * The other two classes (`inRange`, `rangeDepartDate`) are classMap-
28149
+ * managed and get stripped as a side effect here; because classMap
28150
+ * remembers what it last emitted and does not diff against the actual
28151
+ * DOM, the following month re-render will NOT re-add them on its own.
28152
+ * Nav handlers must schedule `refreshCommittedRangeClasses` (via
28153
+ * `scheduleCommittedRangeClassRefresh`) to resync them.
27981
28154
  * @returns {void}
27982
28155
  */
27983
28156
  clearRangePreview(options) {
@@ -27992,6 +28165,57 @@ class AuroCalendar extends RangeDatepicker {
27992
28165
  });
27993
28166
  }
27994
28167
 
28168
+ /**
28169
+ * Re-applies the committed-range classes across every focusable cell
28170
+ * after a month navigation. classMap in the cell tracks its own
28171
+ * previous state: once `clearRangePreview({ force: true })` strips
28172
+ * `inRange`/`rangeDepartDate` imperatively before the re-render,
28173
+ * classMap's next diff sees the same class-value it emitted before and
28174
+ * produces no delta, leaving the DOM without the classes even though a
28175
+ * full range is committed. Re-applying imperatively resyncs the two
28176
+ * months' cells with `dateFrom`/`dateTo`.
28177
+ *
28178
+ * Iterates `getAllFocusableCells()` — out-of-range cells (blocked by
28179
+ * `min`/`max`) can never carry range classes anyway, so skipping them
28180
+ * is correct and cheaper than a whole-grid walk.
28181
+ *
28182
+ * The cell's `applyCommittedRangeClasses` reuses the same
28183
+ * `isInRange`/`isDepartDate`/`isReturnDate` helpers `renderCellButton`
28184
+ * uses, so we don't parse dateFrom/dateTo here — the helpers already
28185
+ * normalize their inputs (midnight-truncation, string→int) internally.
28186
+ * @private
28187
+ * @returns {void}
28188
+ */
28189
+ refreshCommittedRangeClasses() {
28190
+ if (this.noRange || !this.dateFrom || !this.dateTo) {
28191
+ return;
28192
+ }
28193
+
28194
+ const allCells = this.getAllFocusableCells();
28195
+ allCells.forEach((cell) => {
28196
+ cell.applyCommittedRangeClasses();
28197
+ });
28198
+ }
28199
+
28200
+ /**
28201
+ * Schedules `refreshCommittedRangeClasses` to run after the month
28202
+ * re-render has flushed and the cells' button caches have refreshed.
28203
+ * Both `handlePrevMonth` and `handleNextMonth` need this exact call
28204
+ * shape; keeping it in one place prevents them from drifting apart.
28205
+ *
28206
+ * Bails synchronously when a full committed range isn't set — otherwise
28207
+ * every prev/next click in single-date mode (or before the user picks
28208
+ * both dates in range mode) pays for an unused double-rAF hop.
28209
+ * @private
28210
+ * @returns {void}
28211
+ */
28212
+ scheduleCommittedRangeClassRefresh() {
28213
+ if (this.noRange || !this.dateFrom || !this.dateTo) {
28214
+ return;
28215
+ }
28216
+ this._afterMonthRender(() => this.refreshCommittedRangeClasses());
28217
+ }
28218
+
27995
28219
  /**
27996
28220
  * Overrides the base class handler to prevent setting `this.hoveredDate`
27997
28221
  * as a reactive property. Instead, handles the range preview imperatively.
@@ -32286,7 +32510,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$2 {
32286
32510
  }
32287
32511
  };
32288
32512
 
32289
- var formkitVersion$1$3 = '202607011840';
32513
+ var formkitVersion$1$3 = '202607012057';
32290
32514
 
32291
32515
  let AuroElement$2$2 = class AuroElement extends i$2 {
32292
32516
  static get properties() {
@@ -33038,6 +33262,23 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
33038
33262
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
33039
33263
  this.trigger.focus();
33040
33264
  }
33265
+
33266
+
33267
+ if (!this.isPopoverVisible) {
33268
+ // wait til the bib gets fully closed and rendered
33269
+ setTimeout(() => {
33270
+ // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
33271
+ // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
33272
+ if (this.isPopoverVisible ||
33273
+ // eslint-disable-next-line no-extra-parens
33274
+ (!this.bibContent?.matches(':focus-within') &&
33275
+ document.activeElement !== document.body)) {
33276
+ return;
33277
+ }
33278
+ // Restore focus to the trigger.
33279
+ this.trigger.focus();
33280
+ });
33281
+ }
33041
33282
  }
33042
33283
 
33043
33284
  firstUpdated() {
@@ -37963,8 +38204,21 @@ let AuroFormValidation$6 = class AuroFormValidation {
37963
38204
  return;
37964
38205
  }
37965
38206
 
37966
- // Validate that the date passed was the correct format and is a valid date
38207
+ // Validate that the date passed was the correct format and is a valid date.
38208
+ // For partial date formats, valueObject is never populated; validate them directly.
37967
38209
  if (elem.value && !elem.valueObject) {
38210
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
38211
+
38212
+ if (isPartialDateFormat) {
38213
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
38214
+ elem.validity = 'patternMismatch';
38215
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
38216
+ }
38217
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
38218
+ return;
38219
+ }
38220
+
38221
+ // Full date format with no valueObject means the value is not a valid calendar date.
37968
38222
  elem.validity = 'patternMismatch';
37969
38223
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
37970
38224
  return;
@@ -43894,10 +44148,11 @@ let AuroInputUtilities$2 = class AuroInputUtilities {
43894
44148
  const dateFormat = format$1 || this.overrideFormat || pattern || 'mm/dd/yyyy';
43895
44149
 
43896
44150
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
43897
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
44151
+ const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
44152
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
43898
44153
  return {
43899
44154
  mask: IMask$2.MaskedRange,
43900
- from: 1,
44155
+ from: fromValue,
43901
44156
  to: maxValue,
43902
44157
  lazy: true,
43903
44158
  placeholderChar: '',
@@ -43905,7 +44160,8 @@ let AuroInputUtilities$2 = class AuroInputUtilities {
43905
44160
  return value.toString().padStart(dateFormat.length, '0');
43906
44161
  },
43907
44162
  parse(str) {
43908
- return parseInt(str) || null;
44163
+ const num = parseInt(str, 10);
44164
+ return isNaN(num) ? null : num;
43909
44165
  }
43910
44166
  };
43911
44167
  }
@@ -43969,6 +44225,49 @@ let AuroInputUtilities$2 = class AuroInputUtilities {
43969
44225
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
43970
44226
  }
43971
44227
 
44228
+ /**
44229
+ * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
44230
+ * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
44231
+ * a date-fns parse + round-trip to confirm both validity and exact formatting.
44232
+ * @param {string} value - The user-facing display value.
44233
+ * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
44234
+ * @returns {boolean}
44235
+ */
44236
+ isValidPartialDate(value, format$1) {
44237
+ if (!value || !format$1) {
44238
+ return false;
44239
+ }
44240
+ const normalizedFormat = format$1.toLowerCase();
44241
+
44242
+ if (normalizedFormat === 'dd') {
44243
+ const num = Number(value);
44244
+ return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
44245
+ }
44246
+ if (normalizedFormat === 'yy') {
44247
+ const num = Number(value);
44248
+ return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
44249
+ }
44250
+ if (normalizedFormat === 'yyyy') {
44251
+ const num = Number(value);
44252
+ return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
44253
+ }
44254
+
44255
+ const dateFnsMask = this.toDateFnsMask(normalizedFormat);
44256
+ // Use the 1st of the current month as the reference so that formats
44257
+ // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
44258
+ const referenceDate = new Date();
44259
+ referenceDate.setDate(1);
44260
+ const parsed = parse$2(value, dateFnsMask, referenceDate);
44261
+ if (!isValid$2(parsed) || format$2(parsed, dateFnsMask) !== value) {
44262
+ return false;
44263
+ }
44264
+ if (normalizedFormat.includes('yyyy')) {
44265
+ const year = parsed.getFullYear();
44266
+ return year >= 1900 && year <= 2100;
44267
+ }
44268
+ return true;
44269
+ }
44270
+
43972
44271
  /**
43973
44272
  * Converts a display string to its model value.
43974
44273
  * For full date formats, converts the display string to an ISO date string.
@@ -44588,6 +44887,13 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
44588
44887
  type: String
44589
44888
  },
44590
44889
 
44890
+ /**
44891
+ * Custom help text message to display when validity = `patternMismatch`.
44892
+ */
44893
+ setCustomValidityPatternMismatch: {
44894
+ type: String
44895
+ },
44896
+
44591
44897
  /**
44592
44898
  * Custom help text message to display when validity = `rangeOverflow`.
44593
44899
  */
@@ -44658,7 +44964,7 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
44658
44964
 
44659
44965
  /**
44660
44966
  * Populates the `type` attribute on the input.
44661
- * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
44967
+ * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
44662
44968
  * @default 'text'
44663
44969
  */
44664
44970
  type: {
@@ -44683,7 +44989,7 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
44683
44989
 
44684
44990
  /**
44685
44991
  * Populates the `value` attribute on the input. Can also be read to retrieve the current value of the input.
44686
- * The format for this property should be ISO for `date` type inputs.
44992
+ * 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.
44687
44993
  */
44688
44994
  value: {
44689
44995
  type: String
@@ -45806,7 +46112,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$2 {
45806
46112
  }
45807
46113
  };
45808
46114
 
45809
- var formkitVersion$7 = '202607011840';
46115
+ var formkitVersion$7 = '202607012057';
45810
46116
 
45811
46117
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
45812
46118
  // See LICENSE in the project root for license information.
@@ -50102,8 +50408,21 @@ let AuroFormValidation$5 = class AuroFormValidation {
50102
50408
  return;
50103
50409
  }
50104
50410
 
50105
- // Validate that the date passed was the correct format and is a valid date
50411
+ // Validate that the date passed was the correct format and is a valid date.
50412
+ // For partial date formats, valueObject is never populated; validate them directly.
50106
50413
  if (elem.value && !elem.valueObject) {
50414
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
50415
+
50416
+ if (isPartialDateFormat) {
50417
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
50418
+ elem.validity = 'patternMismatch';
50419
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
50420
+ }
50421
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
50422
+ return;
50423
+ }
50424
+
50425
+ // Full date format with no valueObject means the value is not a valid calendar date.
50107
50426
  elem.validity = 'patternMismatch';
50108
50427
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
50109
50428
  return;
@@ -50675,7 +50994,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$2 {
50675
50994
  }
50676
50995
  };
50677
50996
 
50678
- var formkitVersion$1$2 = '202607011840';
50997
+ var formkitVersion$1$2 = '202607012057';
50679
50998
 
50680
50999
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
50681
51000
  // See LICENSE in the project root for license information.
@@ -55003,7 +55322,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$2 {
55003
55322
  }
55004
55323
  };
55005
55324
 
55006
- var formkitVersion$6 = '202607011840';
55325
+ var formkitVersion$6 = '202607012057';
55007
55326
 
55008
55327
  let AuroElement$1$2 = class AuroElement extends i$2 {
55009
55328
  static get properties() {
@@ -55755,6 +56074,23 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$1$2 {
55755
56074
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
55756
56075
  this.trigger.focus();
55757
56076
  }
56077
+
56078
+
56079
+ if (!this.isPopoverVisible) {
56080
+ // wait til the bib gets fully closed and rendered
56081
+ setTimeout(() => {
56082
+ // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
56083
+ // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
56084
+ if (this.isPopoverVisible ||
56085
+ // eslint-disable-next-line no-extra-parens
56086
+ (!this.bibContent?.matches(':focus-within') &&
56087
+ document.activeElement !== document.body)) {
56088
+ return;
56089
+ }
56090
+ // Restore focus to the trigger.
56091
+ this.trigger.focus();
56092
+ });
56093
+ }
55758
56094
  }
55759
56095
 
55760
56096
  firstUpdated() {
@@ -58454,8 +58790,21 @@ let AuroFormValidation$4 = class AuroFormValidation {
58454
58790
  return;
58455
58791
  }
58456
58792
 
58457
- // Validate that the date passed was the correct format and is a valid date
58793
+ // Validate that the date passed was the correct format and is a valid date.
58794
+ // For partial date formats, valueObject is never populated; validate them directly.
58458
58795
  if (elem.value && !elem.valueObject) {
58796
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
58797
+
58798
+ if (isPartialDateFormat) {
58799
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
58800
+ elem.validity = 'patternMismatch';
58801
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
58802
+ }
58803
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
58804
+ return;
58805
+ }
58806
+
58807
+ // Full date format with no valueObject means the value is not a valid calendar date.
58459
58808
  elem.validity = 'patternMismatch';
58460
58809
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
58461
58810
  return;
@@ -58953,7 +59302,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$2 {
58953
59302
  }
58954
59303
  };
58955
59304
 
58956
- var formkitVersion$5 = '202607011840';
59305
+ var formkitVersion$5 = '202607012057';
58957
59306
 
58958
59307
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
58959
59308
  // See LICENSE in the project root for license information.
@@ -60202,8 +60551,21 @@ let AuroFormValidation$3 = class AuroFormValidation {
60202
60551
  return;
60203
60552
  }
60204
60553
 
60205
- // Validate that the date passed was the correct format and is a valid date
60554
+ // Validate that the date passed was the correct format and is a valid date.
60555
+ // For partial date formats, valueObject is never populated; validate them directly.
60206
60556
  if (elem.value && !elem.valueObject) {
60557
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
60558
+
60559
+ if (isPartialDateFormat) {
60560
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
60561
+ elem.validity = 'patternMismatch';
60562
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
60563
+ }
60564
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
60565
+ return;
60566
+ }
60567
+
60568
+ // Full date format with no valueObject means the value is not a valid calendar date.
60207
60569
  elem.validity = 'patternMismatch';
60208
60570
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
60209
60571
  return;
@@ -60705,7 +61067,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$2 {
60705
61067
  }
60706
61068
  };
60707
61069
 
60708
- var formkitVersion$4 = '202607011840';
61070
+ var formkitVersion$4 = '202607012057';
60709
61071
 
60710
61072
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
60711
61073
  // See LICENSE in the project root for license information.
@@ -61464,8 +61826,21 @@ let AuroFormValidation$1 = class AuroFormValidation {
61464
61826
  return;
61465
61827
  }
61466
61828
 
61467
- // Validate that the date passed was the correct format and is a valid date
61829
+ // Validate that the date passed was the correct format and is a valid date.
61830
+ // For partial date formats, valueObject is never populated; validate them directly.
61468
61831
  if (elem.value && !elem.valueObject) {
61832
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
61833
+
61834
+ if (isPartialDateFormat) {
61835
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
61836
+ elem.validity = 'patternMismatch';
61837
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
61838
+ }
61839
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
61840
+ return;
61841
+ }
61842
+
61843
+ // Full date format with no valueObject means the value is not a valid calendar date.
61469
61844
  elem.validity = 'patternMismatch';
61470
61845
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
61471
61846
  return;
@@ -65913,7 +66288,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$2 {
65913
66288
  }
65914
66289
  };
65915
66290
 
65916
- var formkitVersion$2 = '202607011840';
66291
+ var formkitVersion$2 = '202607012057';
65917
66292
 
65918
66293
  let AuroElement$2$1 = class AuroElement extends i$2 {
65919
66294
  static get properties() {
@@ -66665,6 +67040,23 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
66665
67040
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
66666
67041
  this.trigger.focus();
66667
67042
  }
67043
+
67044
+
67045
+ if (!this.isPopoverVisible) {
67046
+ // wait til the bib gets fully closed and rendered
67047
+ setTimeout(() => {
67048
+ // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
67049
+ // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
67050
+ if (this.isPopoverVisible ||
67051
+ // eslint-disable-next-line no-extra-parens
67052
+ (!this.bibContent?.matches(':focus-within') &&
67053
+ document.activeElement !== document.body)) {
67054
+ return;
67055
+ }
67056
+ // Restore focus to the trigger.
67057
+ this.trigger.focus();
67058
+ });
67059
+ }
66668
67060
  }
66669
67061
 
66670
67062
  firstUpdated() {
@@ -71590,8 +71982,21 @@ let AuroFormValidation$2 = class AuroFormValidation {
71590
71982
  return;
71591
71983
  }
71592
71984
 
71593
- // Validate that the date passed was the correct format and is a valid date
71985
+ // Validate that the date passed was the correct format and is a valid date.
71986
+ // For partial date formats, valueObject is never populated; validate them directly.
71594
71987
  if (elem.value && !elem.valueObject) {
71988
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
71989
+
71990
+ if (isPartialDateFormat) {
71991
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
71992
+ elem.validity = 'patternMismatch';
71993
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
71994
+ }
71995
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
71996
+ return;
71997
+ }
71998
+
71999
+ // Full date format with no valueObject means the value is not a valid calendar date.
71595
72000
  elem.validity = 'patternMismatch';
71596
72001
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
71597
72002
  return;
@@ -77521,10 +77926,11 @@ class AuroInputUtilities {
77521
77926
  const dateFormat = format$1 || this.overrideFormat || pattern || 'mm/dd/yyyy';
77522
77927
 
77523
77928
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
77524
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
77929
+ const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
77930
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
77525
77931
  return {
77526
77932
  mask: IMask.MaskedRange,
77527
- from: 1,
77933
+ from: fromValue,
77528
77934
  to: maxValue,
77529
77935
  lazy: true,
77530
77936
  placeholderChar: '',
@@ -77532,7 +77938,8 @@ class AuroInputUtilities {
77532
77938
  return value.toString().padStart(dateFormat.length, '0');
77533
77939
  },
77534
77940
  parse(str) {
77535
- return parseInt(str) || null;
77941
+ const num = parseInt(str, 10);
77942
+ return isNaN(num) ? null : num;
77536
77943
  }
77537
77944
  };
77538
77945
  }
@@ -77596,6 +78003,49 @@ class AuroInputUtilities {
77596
78003
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
77597
78004
  }
77598
78005
 
78006
+ /**
78007
+ * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
78008
+ * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
78009
+ * a date-fns parse + round-trip to confirm both validity and exact formatting.
78010
+ * @param {string} value - The user-facing display value.
78011
+ * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
78012
+ * @returns {boolean}
78013
+ */
78014
+ isValidPartialDate(value, format$1) {
78015
+ if (!value || !format$1) {
78016
+ return false;
78017
+ }
78018
+ const normalizedFormat = format$1.toLowerCase();
78019
+
78020
+ if (normalizedFormat === 'dd') {
78021
+ const num = Number(value);
78022
+ return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
78023
+ }
78024
+ if (normalizedFormat === 'yy') {
78025
+ const num = Number(value);
78026
+ return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
78027
+ }
78028
+ if (normalizedFormat === 'yyyy') {
78029
+ const num = Number(value);
78030
+ return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
78031
+ }
78032
+
78033
+ const dateFnsMask = this.toDateFnsMask(normalizedFormat);
78034
+ // Use the 1st of the current month as the reference so that formats
78035
+ // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
78036
+ const referenceDate = new Date();
78037
+ referenceDate.setDate(1);
78038
+ const parsed = parse(value, dateFnsMask, referenceDate);
78039
+ if (!isValid(parsed) || format(parsed, dateFnsMask) !== value) {
78040
+ return false;
78041
+ }
78042
+ if (normalizedFormat.includes('yyyy')) {
78043
+ const year = parsed.getFullYear();
78044
+ return year >= 1900 && year <= 2100;
78045
+ }
78046
+ return true;
78047
+ }
78048
+
77599
78049
  /**
77600
78050
  * Converts a display string to its model value.
77601
78051
  * For full date formats, converts the display string to an ISO date string.
@@ -78215,6 +78665,13 @@ class BaseInput extends AuroElement$1$1 {
78215
78665
  type: String
78216
78666
  },
78217
78667
 
78668
+ /**
78669
+ * Custom help text message to display when validity = `patternMismatch`.
78670
+ */
78671
+ setCustomValidityPatternMismatch: {
78672
+ type: String
78673
+ },
78674
+
78218
78675
  /**
78219
78676
  * Custom help text message to display when validity = `rangeOverflow`.
78220
78677
  */
@@ -78285,7 +78742,7 @@ class BaseInput extends AuroElement$1$1 {
78285
78742
 
78286
78743
  /**
78287
78744
  * Populates the `type` attribute on the input.
78288
- * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
78745
+ * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
78289
78746
  * @default 'text'
78290
78747
  */
78291
78748
  type: {
@@ -78310,7 +78767,7 @@ class BaseInput extends AuroElement$1$1 {
78310
78767
 
78311
78768
  /**
78312
78769
  * Populates the `value` attribute on the input. Can also be read to retrieve the current value of the input.
78313
- * The format for this property should be ISO for `date` type inputs.
78770
+ * 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.
78314
78771
  */
78315
78772
  value: {
78316
78773
  type: String
@@ -79433,7 +79890,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$2 {
79433
79890
  }
79434
79891
  };
79435
79892
 
79436
- var formkitVersion$1$1 = '202607011840';
79893
+ var formkitVersion$1$1 = '202607012057';
79437
79894
 
79438
79895
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
79439
79896
  // See LICENSE in the project root for license information.
@@ -80559,7 +81016,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$2 {
80559
81016
  }
80560
81017
  };
80561
81018
 
80562
- var formkitVersion$3 = '202607011840';
81019
+ var formkitVersion$3 = '202607012057';
80563
81020
 
80564
81021
  var styleCss$1$3 = i$4`.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}`;
80565
81022
 
@@ -84893,8 +85350,21 @@ class AuroFormValidation {
84893
85350
  return;
84894
85351
  }
84895
85352
 
84896
- // Validate that the date passed was the correct format and is a valid date
85353
+ // Validate that the date passed was the correct format and is a valid date.
85354
+ // For partial date formats, valueObject is never populated; validate them directly.
84897
85355
  if (elem.value && !elem.valueObject) {
85356
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
85357
+
85358
+ if (isPartialDateFormat) {
85359
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
85360
+ elem.validity = 'patternMismatch';
85361
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
85362
+ }
85363
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
85364
+ return;
85365
+ }
85366
+
85367
+ // Full date format with no valueObject means the value is not a valid calendar date.
84898
85368
  elem.validity = 'patternMismatch';
84899
85369
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
84900
85370
  return;
@@ -89382,7 +89852,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
89382
89852
  }
89383
89853
  };
89384
89854
 
89385
- var formkitVersion$1 = '202607011840';
89855
+ var formkitVersion$1 = '202607012057';
89386
89856
 
89387
89857
  class AuroElement extends i$2 {
89388
89858
  static get properties() {
@@ -90134,6 +90604,23 @@ class AuroDropdown extends AuroElement {
90134
90604
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
90135
90605
  this.trigger.focus();
90136
90606
  }
90607
+
90608
+
90609
+ if (!this.isPopoverVisible) {
90610
+ // wait til the bib gets fully closed and rendered
90611
+ setTimeout(() => {
90612
+ // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
90613
+ // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
90614
+ if (this.isPopoverVisible ||
90615
+ // eslint-disable-next-line no-extra-parens
90616
+ (!this.bibContent?.matches(':focus-within') &&
90617
+ document.activeElement !== document.body)) {
90618
+ return;
90619
+ }
90620
+ // Restore focus to the trigger.
90621
+ this.trigger.focus();
90622
+ });
90623
+ }
90137
90624
  }
90138
90625
 
90139
90626
  firstUpdated() {
@@ -91404,7 +91891,7 @@ class AuroHelpText extends i$2 {
91404
91891
  }
91405
91892
  }
91406
91893
 
91407
- var formkitVersion = '202607011840';
91894
+ var formkitVersion = '202607012057';
91408
91895
 
91409
91896
  var styleCss = i$4`.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}`;
91410
91897