@aurodesignsystem-dev/auro-formkit 0.0.0-pr1494.5 → 0.0.0-pr1497.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/components/checkbox/demo/customize.min.js +1 -1
  2. package/components/checkbox/demo/getting-started.min.js +1 -1
  3. package/components/checkbox/demo/index.min.js +1 -1
  4. package/components/checkbox/dist/index.js +1 -1
  5. package/components/checkbox/dist/registered.js +1 -1
  6. package/components/combobox/demo/customize.min.js +18 -18
  7. package/components/combobox/demo/getting-started.min.js +18 -18
  8. package/components/combobox/demo/index.min.js +18 -18
  9. package/components/combobox/dist/index.js +18 -18
  10. package/components/combobox/dist/registered.js +18 -18
  11. package/components/counter/demo/customize.min.js +2 -2
  12. package/components/counter/demo/index.min.js +2 -2
  13. package/components/counter/dist/index.js +1 -1
  14. package/components/counter/dist/registered.js +1 -1
  15. package/components/datepicker/demo/api.md +9 -9
  16. package/components/datepicker/demo/customize.md +46 -19
  17. package/components/datepicker/demo/index.min.js +64 -79
  18. package/components/datepicker/dist/index.js +64 -79
  19. package/components/datepicker/dist/registered.js +64 -79
  20. package/components/datepicker/dist/src/auro-datepicker.d.ts +36 -8
  21. package/components/datepicker/dist/src/utilities.d.ts +0 -14
  22. package/components/dropdown/demo/customize.min.js +1 -1
  23. package/components/dropdown/demo/getting-started.min.js +1 -1
  24. package/components/dropdown/demo/index.min.js +1 -1
  25. package/components/dropdown/dist/index.js +1 -1
  26. package/components/dropdown/dist/registered.js +1 -1
  27. package/components/form/demo/customize.min.js +104 -119
  28. package/components/form/demo/getting-started.min.js +104 -119
  29. package/components/form/demo/index.min.js +104 -119
  30. package/components/form/demo/registerDemoDeps.min.js +104 -119
  31. package/components/input/demo/customize.md +29 -107
  32. package/components/input/demo/customize.min.js +16 -16
  33. package/components/input/demo/getting-started.md +16 -6
  34. package/components/input/demo/getting-started.min.js +16 -16
  35. package/components/input/demo/index.min.js +16 -16
  36. package/components/input/dist/auro-input-util.d.ts +1 -1
  37. package/components/input/dist/index.js +16 -16
  38. package/components/input/dist/registered.js +16 -16
  39. package/components/input/dist/utilities.d.ts +1 -2
  40. package/components/radio/demo/index.min.js +1 -1
  41. package/components/radio/dist/index.js +1 -1
  42. package/components/radio/dist/registered.js +1 -1
  43. package/components/select/demo/customize.min.js +2 -2
  44. package/components/select/demo/getting-started.min.js +2 -2
  45. package/components/select/demo/index.min.js +2 -2
  46. package/components/select/dist/index.js +2 -2
  47. package/components/select/dist/registered.js +2 -2
  48. package/custom-elements.json +15 -55
  49. package/package.json +1 -1
@@ -19,7 +19,8 @@
19
19
  <auro-anchorlink fluid href="#customValidation" class="level2 body-xs">Custom Validation</auro-anchorlink>
20
20
  <auro-anchorlink fluid href="#noValidate" class="level2 body-xs">No Validation</auro-anchorlink>
21
21
  <auro-anchorlink fluid href="#minMaxDate" class="level2 body-xs">Min/Max Date</auro-anchorlink>
22
- <auro-anchorlink fluid href="#regionalDate" class="level2 body-xs">Regional Date</auro-anchorlink>
22
+ <auro-anchorlink fluid href="#monthNames" class="level2 body-xs">Month Names</auro-anchorlink>
23
+ <auro-anchorlink fluid href="#localization" class="level2 body-xs">Localization</auro-anchorlink>
23
24
  </auro-nav>
24
25
  </nav>
25
26
  <div class="mainContent">
@@ -698,29 +699,46 @@
698
699
  <p>When the <code>locale</code> attribute is set, the component automatically derives the correct date format for that region — no need to set <code>format</code> manually. For example, <code>locale="en-US"</code> produces <code>mm/dd/yyyy</code>, <code>locale="de-DE"</code> produces <code>dd.mm.yyyy</code>, and <code>locale="ja-JP"</code> produces <code>yyyy/mm/dd</code>.</p>
699
700
  <p>If <code>format</code> is explicitly set alongside <code>locale</code>, <code>format</code> always wins. Use this when a specific format is required regardless of region.</p>
700
701
  <p>If no <code>locale</code> attribute is set on the element, the component walks up the DOM looking for the nearest ancestor with a <code>data-locale</code> attribute and uses that value. If none is found, it defaults to <code>en-US</code>.</p>
702
+ <auro-header level="4" id="monthNames">Month Names</auro-header>
703
+ <p>The <code>monthNames</code> attribute accepts an array of 12 month name strings displayed in the calendar header. When <code>monthNames</code> is <strong>not</strong> set, the component automatically derives localized month names from the active <code>locale</code> (falling back to <code>en-US</code> if no locale is set).</p>
704
+ <p>Use <code>monthNames</code> only when you need to override the locale-derived names — for example, to supply translated names that differ from the browser's built-in <code>Intl</code> output, or to support a locale the browser does not recognize.</p>
705
+ <pre><code>// Override month names (all 12 required, starting with January)
706
+ datepicker.monthNames = [
707
+ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
708
+ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
709
+ ];</code></pre>
701
710
  <div class="exampleWrapper">
702
711
  <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/locale.html) -->
703
712
  <!-- The below content is automatically added from ./../apiExamples/locale.html -->
704
- <div data-locale="de-DE">
713
+ <div data-locale="de-DE">
714
+ <auro-header level="4" >en-US Example</auro-header>
705
715
  <auro-datepicker locale="en-US">
706
716
  <span slot="fromLabel">en-US Date</span>
707
717
  <span slot="helpText">Help Text</span>
708
718
  </auro-datepicker>
719
+ <auro-header level="4" >de-DE Example</auro-header>
709
720
  <auro-datepicker locale="de-DE">
710
- <span slot="fromLabel">de-DE Date</span>
711
- <span slot="helpText">Help Text</span>
721
+ <span slot="fromLabel">Deutsches Datum</span>
722
+ <span slot="helpText">Hilfetext</span>
723
+ <span slot="optionalLabel">(freiwillig)</span>
712
724
  </auro-datepicker>
725
+ <auro-header level="4" >zh-CN Example</auro-header>
713
726
  <auro-datepicker locale="zh-CN">
714
- <span slot="fromLabel">zh-CN Date</span>
715
- <span slot="helpText">Help Text</span>
727
+ <span slot="fromLabel">中文日期</span>
728
+ <span slot="helpText">帮助文本</span>
729
+ <span slot="optionalLabel">(可选)</span>
716
730
  </auro-datepicker>
731
+ <auro-header level="4">Inherited de-DE date-locale Example</auro-header>
717
732
  <auro-datepicker>
718
- <span slot="fromLabel">Nearest `data-locale` attribute format (`de-DE` in this case)</span>
719
- <span slot="helpText">Help Text</span>
733
+ <span slot="fromLabel">Nächstes `data-locale`-Attributformat (`de-DE` in diesem Fall)</span>
734
+ <span slot="helpText">Hilfetext</span>
735
+ <span slot="optionalLabel">(freiwillig)</span>
720
736
  </auro-datepicker>
737
+ <auro-header level="4" >ja-JP with `mm/dd/yyyy` format Example</auro-header>
721
738
  <auro-datepicker locale="ja-JP" format="mm/dd/yyyy">
722
- <span slot="fromLabel">ja-JP locale with explicit mm/dd/yyyy format</span>
723
- <span slot="helpText">Help Text</span>
739
+ <span slot="fromLabel">明示的な mm/dd/yyyy 形式の ja-JP ロケール</span>
740
+ <span slot="helpText">ヘルプテキスト</span>
741
+ <span slot="optionalLabel">(任意)</span>
724
742
  </auro-datepicker>
725
743
  </div>
726
744
  <!-- AURO-GENERATED-CONTENT:END -->
@@ -730,26 +748,35 @@
730
748
  <!-- AURO-GENERATED-CONTENT:START (CODE:src=./../apiExamples/locale.html) -->
731
749
  <!-- The below code snippet is automatically added from ./../apiExamples/locale.html -->
732
750
 
733
- <pre class="language-html"><code class="language-html">&lt;div data-locale="de-DE"&gt;
751
+ <pre class="language-html"><code class="language-html">&lt;div data-locale="de-DE"&gt;
752
+ &lt;auro-header level="4" &gt;en-US Example&lt;/auro-header&gt;
734
753
  &lt;auro-datepicker locale="en-US"&gt;
735
754
  &lt;span slot="fromLabel"&gt;en-US Date&lt;/span&gt;
736
755
  &lt;span slot="helpText"&gt;Help Text&lt;/span&gt;
737
756
  &lt;/auro-datepicker&gt;
757
+ &lt;auro-header level="4" &gt;de-DE Example&lt;/auro-header&gt;
738
758
  &lt;auro-datepicker locale="de-DE"&gt;
739
- &lt;span slot="fromLabel"&gt;de-DE Date&lt;/span&gt;
740
- &lt;span slot="helpText"&gt;Help Text&lt;/span&gt;
759
+ &lt;span slot="fromLabel"&gt;Deutsches Datum&lt;/span&gt;
760
+ &lt;span slot="helpText"&gt;Hilfetext&lt;/span&gt;
761
+ &lt;span slot="optionalLabel"&gt;(freiwillig)&lt;/span&gt;
741
762
  &lt;/auro-datepicker&gt;
763
+ &lt;auro-header level="4" &gt;zh-CN Example&lt;/auro-header&gt;
742
764
  &lt;auro-datepicker locale="zh-CN"&gt;
743
- &lt;span slot="fromLabel"&gt;zh-CN Date&lt;/span&gt;
744
- &lt;span slot="helpText"&gt;Help Text&lt;/span&gt;
765
+ &lt;span slot="fromLabel"&gt;中文日期&lt;/span&gt;
766
+ &lt;span slot="helpText"&gt;帮助文本&lt;/span&gt;
767
+ &lt;span slot="optionalLabel"&gt;(可选)&lt;/span&gt;
745
768
  &lt;/auro-datepicker&gt;
769
+ &lt;auro-header level="4"&gt;Inherited de-DE date-locale Example&lt;/auro-header&gt;
746
770
  &lt;auro-datepicker&gt;
747
- &lt;span slot="fromLabel"&gt;Nearest `data-locale` attribute format (`de-DE` in this case)&lt;/span&gt;
748
- &lt;span slot="helpText"&gt;Help Text&lt;/span&gt;
771
+ &lt;span slot="fromLabel"&gt;Nächstes `data-locale`-Attributformat (`de-DE` in diesem Fall)&lt;/span&gt;
772
+ &lt;span slot="helpText"&gt;Hilfetext&lt;/span&gt;
773
+ &lt;span slot="optionalLabel"&gt;(freiwillig)&lt;/span&gt;
749
774
  &lt;/auro-datepicker&gt;
775
+ &lt;auro-header level="4" &gt;ja-JP with `mm/dd/yyyy` format Example&lt;/auro-header&gt;
750
776
  &lt;auro-datepicker locale="ja-JP" format="mm/dd/yyyy"&gt;
751
- &lt;span slot="fromLabel"&gt;ja-JP locale with explicit mm/dd/yyyy format&lt;/span&gt;
752
- &lt;span slot="helpText"&gt;Help Text&lt;/span&gt;
777
+ &lt;span slot="fromLabel"&gt;明示的な mm/dd/yyyy 形式の ja-JP ロケール&lt;/span&gt;
778
+ &lt;span slot="helpText"&gt;ヘルプテキスト&lt;/span&gt;
779
+ &lt;span slot="optionalLabel"&gt;(任意)&lt;/span&gt;
753
780
  &lt;/auro-datepicker&gt;
754
781
  &lt;/div&gt;</code></pre>
755
782
  <!-- AURO-GENERATED-CONTENT:END -->
@@ -10515,27 +10515,17 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10515
10515
  * Converts a model value to a display value for the input element.
10516
10516
  * For full date formats, converts an ISO model value to the configured display format.
10517
10517
  * @private
10518
- * @param {string} value - The model value (ISO string for date types).
10519
10518
  * @param {Date|undefined} valueObject - Date object representation of value.
10520
10519
  * @param {string} format - The date format string.
10521
- * @returns {string}
10520
+ * @returns {string | undefined}
10522
10521
  */
10523
- toFormattedValue(value, valueObject, format) {
10524
- if (!this.isFullDateFormat('date', format) || !value) {
10525
- return value;
10526
- }
10527
-
10528
- if (!dateFormatter$1.isValidDate(value)) {
10529
- // For ISO-pattern strings that fail range validation (e.g. '2024-99-99'),
10530
- // return '' so inputElement stays empty and format-based validation is not triggered.
10531
- return (/^\d{4}-\d{2}-\d{2}$/u).test(value) ? '' : value;
10532
- }
10533
-
10522
+ toFormattedValue(valueObject, format) {
10534
10523
  const normalizedFormat = format.toLowerCase();
10535
10524
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
10536
10525
 
10537
10526
  if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
10538
- return value;
10527
+ console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
10528
+ return undefined;
10539
10529
  }
10540
10530
 
10541
10531
  return maskOptions.format(valueObject);
@@ -10559,29 +10549,6 @@ function getDateFormatFromLocale$1 (locale) {
10559
10549
 
10560
10550
  class AuroDatepickerUtilities {
10561
10551
 
10562
- /**
10563
- * Converts an ISO date string (yyyy-mm-dd) to any display format.
10564
- * @param {string} isoStr - ISO date string.
10565
- * @param {string} format - Target display format (e.g. "mm/dd/yyyy", "dd/mm/yyyy").
10566
- * @returns {string|undefined}
10567
- */
10568
- toCustomFormat(isoStr, format) {
10569
- if (!isoStr || !format) return undefined;
10570
- try {
10571
- const date = dateFormatter$1.stringToDateInstance(isoStr);
10572
- const year = String(date.getFullYear()).padStart(4, '0');
10573
- const month = String(date.getMonth() + 1).padStart(2, '0');
10574
- const day = String(date.getDate()).padStart(2, '0');
10575
- return format.toLowerCase()
10576
- .replace(/yyyy/iu, year)
10577
- .replace(/yy/iu, year.slice(-2))
10578
- .replace(/mm/iu, month)
10579
- .replace(/dd/iu, day);
10580
- } catch {
10581
- return undefined;
10582
- }
10583
- }
10584
-
10585
10552
  /**
10586
10553
  * Converts any date object to a date object representing the first day of the month.
10587
10554
  * @param {Object} date - Date to convert to the first day of the month.
@@ -10607,17 +10574,6 @@ class AuroDatepickerUtilities {
10607
10574
  return months <= 0 ? 0 : months;
10608
10575
  }
10609
10576
 
10610
- /**
10611
- * Function to format a number to two digits.
10612
- * @private
10613
- * @param {Number} num - Number to format.
10614
- * @returns {String}
10615
- */
10616
- formatTwoDigits(num) {
10617
- const singleDigitThreshold = 10;
10618
- return num < singleDigitThreshold ? `0${num}` : num;
10619
- }
10620
-
10621
10577
  /**
10622
10578
  * Function to generate checkmark svg.
10623
10579
  * @private
@@ -10700,6 +10656,7 @@ class UtilitiesCalendarRender {
10700
10656
  determineDefinedCalendarRange(elem) {
10701
10657
  if (elem.getAttribute('calendarStartDate') && elem.getAttribute('calendarEndDate')) {
10702
10658
  // if we have a defined range of months, use that
10659
+ // prop is not in sync with attribute yet, use attribute value
10703
10660
  elem.calendarRangeMonths = elem.util.monthDiff(dateFormatter$1.stringToDateInstance(elem.getAttribute('calendarStartDate')), dateFormatter$1.stringToDateInstance(elem.getAttribute('calendarEndDate')));
10704
10661
  } else {
10705
10662
  // if we don't have a defined range of months, use undefined
@@ -13042,7 +12999,7 @@ class AuroBibtemplate extends i$1 {
13042
12999
  }
13043
13000
  }
13044
13001
 
13045
- var formkitVersion$2 = '202606032113';
13002
+ var formkitVersion$2 = '202606081518';
13046
13003
 
13047
13004
  let l$1 = 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 = 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$4 = 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$3=i$3`: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}
13048
13005
  `,u$6=i$3`.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}}
@@ -17445,7 +17402,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
17445
17402
  }
17446
17403
  };
17447
17404
 
17448
- var formkitVersion$1 = '202606032113';
17405
+ var formkitVersion$1 = '202606081518';
17449
17406
 
17450
17407
  let AuroElement$2 = class AuroElement extends i$1 {
17451
17408
  static get properties() {
@@ -28901,27 +28858,17 @@ class AuroInputUtilities {
28901
28858
  * Converts a model value to a display value for the input element.
28902
28859
  * For full date formats, converts an ISO model value to the configured display format.
28903
28860
  * @private
28904
- * @param {string} value - The model value (ISO string for date types).
28905
28861
  * @param {Date|undefined} valueObject - Date object representation of value.
28906
28862
  * @param {string} format - The date format string.
28907
- * @returns {string}
28863
+ * @returns {string | undefined}
28908
28864
  */
28909
- toFormattedValue(value, valueObject, format) {
28910
- if (!this.isFullDateFormat('date', format) || !value) {
28911
- return value;
28912
- }
28913
-
28914
- if (!dateFormatter.isValidDate(value)) {
28915
- // For ISO-pattern strings that fail range validation (e.g. '2024-99-99'),
28916
- // return '' so inputElement stays empty and format-based validation is not triggered.
28917
- return (/^\d{4}-\d{2}-\d{2}$/u).test(value) ? '' : value;
28918
- }
28919
-
28865
+ toFormattedValue(valueObject, format) {
28920
28866
  const normalizedFormat = format.toLowerCase();
28921
28867
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
28922
28868
 
28923
28869
  if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
28924
- return value;
28870
+ console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
28871
+ return undefined;
28925
28872
  }
28926
28873
 
28927
28874
  return maskOptions.format(valueObject);
@@ -29839,7 +29786,17 @@ class BaseInput extends AuroElement$1 {
29839
29786
  this.hasValue = false;
29840
29787
  }
29841
29788
 
29842
- const formattedValue = this.type === 'date' ? this.util.toFormattedValue(this.value, this.valueObject, this.format) : this.value;
29789
+ let formattedValue = this.value;
29790
+ if (this.type === 'date') {
29791
+ const formattedDate = this.util.toFormattedValue(this.valueObject, this.format);
29792
+ if (!formattedDate) {
29793
+ // if user entered unrecognized date format that cannot be parsed into a Date object,
29794
+ // keep the raw value in the input so they can edit it instead of overwriting with an empty string
29795
+ formattedValue = this.value;
29796
+ } else {
29797
+ formattedValue = formattedDate;
29798
+ }
29799
+ }
29843
29800
 
29844
29801
  if (formattedValue !== this.inputElement.value) {
29845
29802
  this.skipNextProgrammaticInputEvent = true;
@@ -30703,7 +30660,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
30703
30660
  }
30704
30661
  };
30705
30662
 
30706
- var formkitVersion = '202606032113';
30663
+ var formkitVersion = '202606081518';
30707
30664
 
30708
30665
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
30709
30666
  // See LICENSE in the project root for license information.
@@ -32788,42 +32745,66 @@ class AuroDatePicker extends AuroElement {
32788
32745
  */
32789
32746
  // ─── Read-only *Object properties ─────────────────────────────────────────
32790
32747
 
32791
- /** @returns {Date|undefined} */
32748
+ /**
32749
+ * Read-only `Date` object derived from `value`. Returns `undefined` when `value` is empty or not a valid date.
32750
+ * @returns {Date|undefined}
32751
+ */
32792
32752
  get valueObject() {
32793
32753
  return this.value && dateFormatter$1.isValidDate(this.value) ? dateFormatter$1.stringToDateInstance(this.value) : undefined;
32794
32754
  }
32795
32755
 
32796
- /** @returns {Date|undefined} */
32756
+ /**
32757
+ * Read-only `Date` object derived from `valueEnd`. Returns `undefined` when `valueEnd` is empty or not a valid date.
32758
+ * @returns {Date|undefined}
32759
+ */
32797
32760
  get valueEndObject() {
32798
32761
  return this.valueEnd && dateFormatter$1.isValidDate(this.valueEnd) ? dateFormatter$1.stringToDateInstance(this.valueEnd) : undefined;
32799
32762
  }
32800
32763
 
32801
- /** @returns {Date|undefined} */
32764
+ /**
32765
+ * Read-only `Date` object derived from `minDate`. Returns `undefined` when `minDate` is empty or not a valid date.
32766
+ * @returns {Date|undefined}
32767
+ */
32802
32768
  get minDateObject() {
32803
32769
  return this.minDate && dateFormatter$1.isValidDate(this.minDate) ? dateFormatter$1.stringToDateInstance(this.minDate) : undefined;
32804
32770
  }
32805
32771
 
32806
- /** @returns {Date|undefined} */
32772
+ /**
32773
+ * Read-only `Date` object derived from `maxDate`. Returns `undefined` when `maxDate` is empty or not a valid date.
32774
+ * @returns {Date|undefined}
32775
+ */
32807
32776
  get maxDateObject() {
32808
32777
  return this.maxDate && dateFormatter$1.isValidDate(this.maxDate) ? dateFormatter$1.stringToDateInstance(this.maxDate) : undefined;
32809
32778
  }
32810
32779
 
32811
- /** @returns {Date|undefined} */
32780
+ /**
32781
+ * Read-only `Date` object derived from `calendarStartDate`. Returns `undefined` when `calendarStartDate` is empty or not a valid date.
32782
+ * @returns {Date|undefined}
32783
+ */
32812
32784
  get calendarStartDateObject() {
32813
32785
  return this.calendarStartDate && dateFormatter$1.isValidDate(this.calendarStartDate) ? dateFormatter$1.stringToDateInstance(this.calendarStartDate) : undefined;
32814
32786
  }
32815
32787
 
32816
- /** @returns {Date|undefined} */
32788
+ /**
32789
+ * Read-only `Date` object derived from `calendarEndDate`. Returns `undefined` when `calendarEndDate` is empty or not a valid date.
32790
+ * @returns {Date|undefined}
32791
+ */
32817
32792
  get calendarEndDateObject() {
32818
32793
  return this.calendarEndDate && dateFormatter$1.isValidDate(this.calendarEndDate) ? dateFormatter$1.stringToDateInstance(this.calendarEndDate) : undefined;
32819
32794
  }
32820
32795
 
32821
- /** @returns {Date|undefined} */
32796
+ /**
32797
+ * Read-only `Date` object derived from `centralDate`. Returns `undefined` when `centralDate` is empty or not a valid date.
32798
+ * @returns {Date|undefined}
32799
+ */
32822
32800
  get centralDateObject() {
32823
32801
  return this.centralDate && dateFormatter$1.isValidDate(this.centralDate) ? dateFormatter$1.stringToDateInstance(this.centralDate) : undefined;
32824
32802
  }
32825
32803
 
32826
- /** @returns {Date|undefined} */
32804
+ /**
32805
+ * Read-only `Date` object derived from `calendarFocusDate`. Returns `undefined` when `calendarFocusDate` is empty or not a valid date.
32806
+ * @returns {Date|undefined}
32807
+ */
32827
32808
  get calendarFocusDateObject() {
32828
32809
  return this.calendarFocusDate && dateFormatter$1.isValidDate(this.calendarFocusDate) ? dateFormatter$1.stringToDateInstance(this.calendarFocusDate) : undefined;
32829
32810
  }
@@ -33275,6 +33256,10 @@ class AuroDatePicker extends AuroElement {
33275
33256
  this.hasAllValues = (this.value && this.value.length > 0) && (this.valueEnd && this.valueEnd.length > 0); // eslint-disable-line no-extra-parens
33276
33257
  }
33277
33258
 
33259
+ /**
33260
+ * Returns `true` when the datepicker has an active validation error.
33261
+ * @returns {boolean}
33262
+ */
33278
33263
  get hasError() {
33279
33264
  return this.validity !== undefined && this.validity !== 'valid';
33280
33265
  }
@@ -33288,10 +33273,10 @@ class AuroDatePicker extends AuroElement {
33288
33273
  willUpdate(changedProperties) {
33289
33274
  if (changedProperties.has('locale')) {
33290
33275
  try {
33291
- // eslint-disable-next-line no-new
33292
- new Intl.DateTimeFormat(this.locale);
33293
- this._validLocale = this.locale;
33276
+ const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
33277
+ this._validLocale = supported.length > 0 ? this.locale : 'en-US';
33294
33278
  } catch {
33279
+ console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`);
33295
33280
  this._validLocale = 'en-US';
33296
33281
  }
33297
33282
 
@@ -33948,8 +33933,8 @@ class AuroDatePicker extends AuroElement {
33948
33933
  <slot slot="bib.fullscreen.dateLabel" name="bib.fullscreen.dateLabel" @slotchange="${this.handleSlotToSlot}"></slot>
33949
33934
  <slot slot="bib.fullscreen.toLabel" name="bib.fullscreen.toLabel" @slotchange="${this.handleSlotToSlot}"></slot>
33950
33935
  <slot slot="bib.fullscreen.fromLabel" name="bib.fullscreen.fromLabel" @slotchange="${this.handleSlotToSlot}"></slot>
33951
- <span slot="bib.fullscreen.fromStr">${AuroInputUtil.toFormattedValue(this.value, this.valueObject, this.format) || u$a`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>
33952
- ${this.range ? u$a`<span slot="bib.fullscreen.toStr">${AuroInputUtil.toFormattedValue(this.valueEnd, this.valueEndObject, this.format) || u$a`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>` : undefined}
33936
+ <span slot="bib.fullscreen.fromStr">${AuroInputUtil.toFormattedValue(this.valueObject, this.format) || u$a`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>
33937
+ ${this.range ? u$a`<span slot="bib.fullscreen.toStr">${AuroInputUtil.toFormattedValue(this.valueEndObject, this.format) || u$a`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>` : undefined}
33953
33938
  </auro-formkit-calendar>
33954
33939
  `;
33955
33940
  }