@aurodesignsystem-dev/auro-formkit 0.0.0-pr1588.2 → 0.0.0-pr1590.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 (48) hide show
  1. package/components/checkbox/demo/customize.min.js +4 -13
  2. package/components/checkbox/demo/getting-started.min.js +4 -13
  3. package/components/checkbox/demo/index.min.js +4 -13
  4. package/components/checkbox/dist/index.js +4 -13
  5. package/components/checkbox/dist/registered.js +4 -13
  6. package/components/combobox/demo/customize.min.js +41 -11
  7. package/components/combobox/demo/getting-started.min.js +41 -11
  8. package/components/combobox/demo/index.min.js +41 -11
  9. package/components/combobox/dist/index.js +41 -11
  10. package/components/combobox/dist/registered.js +41 -11
  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 +2 -2
  14. package/components/counter/dist/registered.js +2 -2
  15. package/components/datepicker/demo/customize.min.js +39 -5
  16. package/components/datepicker/demo/index.min.js +39 -5
  17. package/components/datepicker/dist/index.js +39 -5
  18. package/components/datepicker/dist/registered.js +39 -5
  19. package/components/dropdown/demo/customize.min.js +1 -1
  20. package/components/dropdown/demo/getting-started.min.js +38 -4
  21. package/components/dropdown/demo/index.min.js +1 -1
  22. package/components/dropdown/dist/index.js +1 -1
  23. package/components/dropdown/dist/registered.js +1 -1
  24. package/components/form/demo/customize.min.js +131 -60
  25. package/components/form/demo/getting-started.min.js +131 -60
  26. package/components/form/demo/index.min.js +131 -60
  27. package/components/form/demo/registerDemoDeps.min.js +131 -60
  28. package/components/input/demo/css-only.md +2 -2
  29. package/components/input/demo/customize.md +2 -2
  30. package/components/input/demo/customize.min.js +37 -3
  31. package/components/input/demo/getting-started.min.js +37 -3
  32. package/components/input/demo/index.min.js +37 -3
  33. package/components/input/demo/why-input.md +2 -3
  34. package/components/input/dist/index.js +37 -3
  35. package/components/input/dist/registered.js +37 -3
  36. package/components/radio/demo/customize.min.js +4 -14
  37. package/components/radio/demo/getting-started.min.js +4 -14
  38. package/components/radio/demo/index.min.js +4 -14
  39. package/components/radio/dist/auro-radio-group.d.ts +0 -1
  40. package/components/radio/dist/index.js +4 -14
  41. package/components/radio/dist/registered.js +4 -14
  42. package/components/select/demo/customize.min.js +4 -12
  43. package/components/select/demo/getting-started.min.js +4 -12
  44. package/components/select/demo/index.min.js +4 -12
  45. package/components/select/dist/auro-select.d.ts +0 -2
  46. package/components/select/dist/index.js +4 -12
  47. package/components/select/dist/registered.js +4 -12
  48. package/package.json +1 -1
@@ -11934,6 +11934,18 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
11934
11934
  cardIcon: 'cc-dinersclub',
11935
11935
  maskFormat: "0000 000000 0000"
11936
11936
  },
11937
+ {
11938
+ // JCB is variable length (16-19 digits), like UnionPay, so it reuses the
11939
+ // formatMinLength/formatLength range machinery. The 35 prefix overlaps no
11940
+ // other brand (Amex is 34|37, Diners is 30[0-5]|36|38).
11941
+ name: 'JCB',
11942
+ regex: /^(?<num>35)\d{0}/u,
11943
+ formatMinLength: 19,
11944
+ formatLength: 23,
11945
+ errorMessage: CreditCardValidationMessage,
11946
+ cardIcon: 'cc-jcb',
11947
+ maskFormat: "0000 0000 0000 0000 000"
11948
+ },
11937
11949
  {
11938
11950
  name: 'Visa',
11939
11951
  regex: /^(?<num>4)\d{0}/u,
@@ -11965,6 +11977,20 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
11965
11977
  errorMessage: CreditCardValidationMessage,
11966
11978
  cardIcon: 'cc-discover',
11967
11979
  maskFormat: "0000 0000 0000 0000"
11980
+ },
11981
+ {
11982
+ // China UnionPay is variable length (16-19 digits). It must come after
11983
+ // Discover so the last-match-wins loop below gives its 62 prefix
11984
+ // precedence over the generic `6` that resolves to Discover. 81 is used
11985
+ // by UnionPay cards issued outside mainland China and overlaps no other
11986
+ // brand. 60 is intentionally excluded (it overlaps real Discover 6011).
11987
+ name: 'China UnionPay',
11988
+ regex: /^(?<num>62|81)\d{0}/u,
11989
+ formatMinLength: 19,
11990
+ formatLength: 23,
11991
+ errorMessage: CreditCardValidationMessage,
11992
+ cardIcon: 'cc-unionpay',
11993
+ maskFormat: "0000 0000 0000 0000 000"
11968
11994
  }
11969
11995
  ];
11970
11996
 
@@ -11982,7 +12008,12 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
11982
12008
  }
11983
12009
  });
11984
12010
 
11985
- this.validationCCLength = type.formatLength;
12011
+ // Variable-length brands (both min and max defined, e.g. UnionPay) validate
12012
+ // against the minimum masked length so shorter-but-valid entries are not
12013
+ // flagged tooShort. Fixed-length brands keep their single formatLength.
12014
+ this.validationCCLength = type.formatMinLength && type.formatLength
12015
+ ? type.formatMinLength
12016
+ : type.formatLength;
11986
12017
 
11987
12018
  return type;
11988
12019
  }
@@ -12341,7 +12372,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$2 {
12341
12372
  }
12342
12373
  };
12343
12374
 
12344
- var formkitVersion$8 = '202608201531';
12375
+ var formkitVersion$8 = '202608201808';
12345
12376
 
12346
12377
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12347
12378
  // See LICENSE in the project root for license information.
@@ -12763,7 +12794,10 @@ let AuroInput$2 = class AuroInput extends BaseInput$2 {
12763
12794
  */
12764
12795
  definePattern() {
12765
12796
  if (this.type === 'credit-card' && !this.noValidate && this.maxLength) {
12766
- return `.{${this.maxLength},${this.maxLength}}`;
12797
+ // Variable-length brands (e.g. UnionPay) set minLength, so accept a range;
12798
+ // fixed-length brands leave minLength undefined and keep an exact length.
12799
+ const minPatternLength = this.minLength || this.maxLength;
12800
+ return `.{${minPatternLength},${this.maxLength}}`;
12767
12801
  }
12768
12802
 
12769
12803
  return this.pattern;
@@ -26793,7 +26827,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$2 {
26793
26827
  }
26794
26828
  };
26795
26829
 
26796
- var formkitVersion$2$1 = '202608201531';
26830
+ var formkitVersion$2$1 = '202608201808';
26797
26831
 
26798
26832
  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}
26799
26833
  `,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}}
@@ -32524,7 +32558,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$2 {
32524
32558
  }
32525
32559
  };
32526
32560
 
32527
- var formkitVersion$1$3 = '202608201531';
32561
+ var formkitVersion$1$3 = '202608201808';
32528
32562
 
32529
32563
  let AuroElement$2$2 = class AuroElement extends i$2 {
32530
32564
  static get properties() {
@@ -45810,6 +45844,18 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
45810
45844
  cardIcon: 'cc-dinersclub',
45811
45845
  maskFormat: "0000 000000 0000"
45812
45846
  },
45847
+ {
45848
+ // JCB is variable length (16-19 digits), like UnionPay, so it reuses the
45849
+ // formatMinLength/formatLength range machinery. The 35 prefix overlaps no
45850
+ // other brand (Amex is 34|37, Diners is 30[0-5]|36|38).
45851
+ name: 'JCB',
45852
+ regex: /^(?<num>35)\d{0}/u,
45853
+ formatMinLength: 19,
45854
+ formatLength: 23,
45855
+ errorMessage: CreditCardValidationMessage,
45856
+ cardIcon: 'cc-jcb',
45857
+ maskFormat: "0000 0000 0000 0000 000"
45858
+ },
45813
45859
  {
45814
45860
  name: 'Visa',
45815
45861
  regex: /^(?<num>4)\d{0}/u,
@@ -45841,6 +45887,20 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
45841
45887
  errorMessage: CreditCardValidationMessage,
45842
45888
  cardIcon: 'cc-discover',
45843
45889
  maskFormat: "0000 0000 0000 0000"
45890
+ },
45891
+ {
45892
+ // China UnionPay is variable length (16-19 digits). It must come after
45893
+ // Discover so the last-match-wins loop below gives its 62 prefix
45894
+ // precedence over the generic `6` that resolves to Discover. 81 is used
45895
+ // by UnionPay cards issued outside mainland China and overlaps no other
45896
+ // brand. 60 is intentionally excluded (it overlaps real Discover 6011).
45897
+ name: 'China UnionPay',
45898
+ regex: /^(?<num>62|81)\d{0}/u,
45899
+ formatMinLength: 19,
45900
+ formatLength: 23,
45901
+ errorMessage: CreditCardValidationMessage,
45902
+ cardIcon: 'cc-unionpay',
45903
+ maskFormat: "0000 0000 0000 0000 000"
45844
45904
  }
45845
45905
  ];
45846
45906
 
@@ -45858,7 +45918,12 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
45858
45918
  }
45859
45919
  });
45860
45920
 
45861
- this.validationCCLength = type.formatLength;
45921
+ // Variable-length brands (both min and max defined, e.g. UnionPay) validate
45922
+ // against the minimum masked length so shorter-but-valid entries are not
45923
+ // flagged tooShort. Fixed-length brands keep their single formatLength.
45924
+ this.validationCCLength = type.formatMinLength && type.formatLength
45925
+ ? type.formatMinLength
45926
+ : type.formatLength;
45862
45927
 
45863
45928
  return type;
45864
45929
  }
@@ -46217,7 +46282,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$2 {
46217
46282
  }
46218
46283
  };
46219
46284
 
46220
- var formkitVersion$7 = '202608201531';
46285
+ var formkitVersion$7 = '202608201808';
46221
46286
 
46222
46287
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
46223
46288
  // See LICENSE in the project root for license information.
@@ -46639,7 +46704,10 @@ let AuroInput$1 = class AuroInput extends BaseInput$1 {
46639
46704
  */
46640
46705
  definePattern() {
46641
46706
  if (this.type === 'credit-card' && !this.noValidate && this.maxLength) {
46642
- return `.{${this.maxLength},${this.maxLength}}`;
46707
+ // Variable-length brands (e.g. UnionPay) set minLength, so accept a range;
46708
+ // fixed-length brands leave minLength undefined and keep an exact length.
46709
+ const minPatternLength = this.minLength || this.maxLength;
46710
+ return `.{${minPatternLength},${this.maxLength}}`;
46643
46711
  }
46644
46712
 
46645
46713
  return this.pattern;
@@ -51219,7 +51287,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$2 {
51219
51287
  }
51220
51288
  };
51221
51289
 
51222
- var formkitVersion$1$2 = '202608201531';
51290
+ var formkitVersion$1$2 = '202608201808';
51223
51291
 
51224
51292
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
51225
51293
  // See LICENSE in the project root for license information.
@@ -55372,7 +55440,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$2 {
55372
55440
  }
55373
55441
  };
55374
55442
 
55375
- var formkitVersion$6 = '202608201531';
55443
+ var formkitVersion$6 = '202608201808';
55376
55444
 
55377
55445
  let AuroElement$1$2 = class AuroElement extends i$2 {
55378
55446
  static get properties() {
@@ -59435,7 +59503,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$2 {
59435
59503
  }
59436
59504
  };
59437
59505
 
59438
- var formkitVersion$5 = '202608201531';
59506
+ var formkitVersion$5 = '202608201808';
59439
59507
 
59440
59508
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
59441
59509
  // See LICENSE in the project root for license information.
@@ -59681,9 +59749,7 @@ class AuroRadioGroup extends i$2 {
59681
59749
 
59682
59750
  this.optionSelected = event.target;
59683
59751
 
59684
- if (!this.noValidate) {
59685
- this.validation.validate(this, this.optionSelected !== undefined);
59686
- }
59752
+ this.validation.validate(this, this.optionSelected !== undefined);
59687
59753
  }
59688
59754
 
59689
59755
  /**
@@ -59693,13 +59759,7 @@ class AuroRadioGroup extends i$2 {
59693
59759
  */
59694
59760
  handleRadioBlur() {
59695
59761
  this.touched = true;
59696
- if (!this.noValidate) {
59697
- this.validation.validate(this);
59698
- } else if (this.validity !== undefined) {
59699
- // Clear stale error state left by a previous validate(true) call
59700
- this.validity = undefined;
59701
- this.errorMessage = '';
59702
- }
59762
+ this.validation.validate(this);
59703
59763
  }
59704
59764
 
59705
59765
  /**
@@ -59875,9 +59935,7 @@ class AuroRadioGroup extends i$2 {
59875
59935
  this.value = event.target.value;
59876
59936
  this.optionSelected = event.target;
59877
59937
 
59878
- if (!this.noValidate) {
59879
- this.validation.validate(this);
59880
- }
59938
+ this.validation.validate(this);
59881
59939
  }
59882
59940
 
59883
59941
  /**
@@ -61210,7 +61268,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$2 {
61210
61268
  }
61211
61269
  };
61212
61270
 
61213
- var formkitVersion$4 = '202608201531';
61271
+ var formkitVersion$4 = '202608201808';
61214
61272
 
61215
61273
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
61216
61274
  // See LICENSE in the project root for license information.
@@ -61430,9 +61488,7 @@ class AuroCheckboxGroup extends i$2 {
61430
61488
  composed: true,
61431
61489
  }));
61432
61490
 
61433
- if (!this.noValidate) {
61434
- this.validate(true);
61435
- }
61491
+ this.validate(true);
61436
61492
  }
61437
61493
 
61438
61494
  firstUpdated() {
@@ -61443,18 +61499,11 @@ class AuroCheckboxGroup extends i$2 {
61443
61499
  const checkFocusWithin = function(evt) {
61444
61500
  if (document.auroCheckboxGroupActive && !document.auroCheckboxGroupActive.contains(evt.target)) {
61445
61501
  // if focus has left the group, cleanup and validate
61446
- const group = document.auroCheckboxGroupActive;
61447
- group.focusWithin = false;
61502
+ document.auroCheckboxGroupActive.focusWithin = false;
61448
61503
  window.removeEventListener('focusin', checkFocusWithin);
61449
61504
  document.removeEventListener('click', checkFocusWithin);
61450
61505
  // execute the validation
61451
- if (!group.noValidate) {
61452
- group.validation.validate(group);
61453
- } else if (group.validity !== undefined) {
61454
- // Clear stale error state left by a previous validate(true) call
61455
- group.validity = undefined;
61456
- group.errorMessage = '';
61457
- }
61506
+ document.auroCheckboxGroupActive.validation.validate(document.auroCheckboxGroupActive);
61458
61507
  }
61459
61508
  };
61460
61509
 
@@ -66538,7 +66587,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$2 {
66538
66587
  }
66539
66588
  };
66540
66589
 
66541
- var formkitVersion$2 = '202608201531';
66590
+ var formkitVersion$2 = '202608201808';
66542
66591
 
66543
66592
  let AuroElement$2$1 = class AuroElement extends i$2 {
66544
66593
  static get properties() {
@@ -79824,6 +79873,18 @@ class BaseInput extends AuroElement$1$1 {
79824
79873
  cardIcon: 'cc-dinersclub',
79825
79874
  maskFormat: "0000 000000 0000"
79826
79875
  },
79876
+ {
79877
+ // JCB is variable length (16-19 digits), like UnionPay, so it reuses the
79878
+ // formatMinLength/formatLength range machinery. The 35 prefix overlaps no
79879
+ // other brand (Amex is 34|37, Diners is 30[0-5]|36|38).
79880
+ name: 'JCB',
79881
+ regex: /^(?<num>35)\d{0}/u,
79882
+ formatMinLength: 19,
79883
+ formatLength: 23,
79884
+ errorMessage: CreditCardValidationMessage,
79885
+ cardIcon: 'cc-jcb',
79886
+ maskFormat: "0000 0000 0000 0000 000"
79887
+ },
79827
79888
  {
79828
79889
  name: 'Visa',
79829
79890
  regex: /^(?<num>4)\d{0}/u,
@@ -79855,6 +79916,20 @@ class BaseInput extends AuroElement$1$1 {
79855
79916
  errorMessage: CreditCardValidationMessage,
79856
79917
  cardIcon: 'cc-discover',
79857
79918
  maskFormat: "0000 0000 0000 0000"
79919
+ },
79920
+ {
79921
+ // China UnionPay is variable length (16-19 digits). It must come after
79922
+ // Discover so the last-match-wins loop below gives its 62 prefix
79923
+ // precedence over the generic `6` that resolves to Discover. 81 is used
79924
+ // by UnionPay cards issued outside mainland China and overlaps no other
79925
+ // brand. 60 is intentionally excluded (it overlaps real Discover 6011).
79926
+ name: 'China UnionPay',
79927
+ regex: /^(?<num>62|81)\d{0}/u,
79928
+ formatMinLength: 19,
79929
+ formatLength: 23,
79930
+ errorMessage: CreditCardValidationMessage,
79931
+ cardIcon: 'cc-unionpay',
79932
+ maskFormat: "0000 0000 0000 0000 000"
79858
79933
  }
79859
79934
  ];
79860
79935
 
@@ -79872,7 +79947,12 @@ class BaseInput extends AuroElement$1$1 {
79872
79947
  }
79873
79948
  });
79874
79949
 
79875
- this.validationCCLength = type.formatLength;
79950
+ // Variable-length brands (both min and max defined, e.g. UnionPay) validate
79951
+ // against the minimum masked length so shorter-but-valid entries are not
79952
+ // flagged tooShort. Fixed-length brands keep their single formatLength.
79953
+ this.validationCCLength = type.formatMinLength && type.formatLength
79954
+ ? type.formatMinLength
79955
+ : type.formatLength;
79876
79956
 
79877
79957
  return type;
79878
79958
  }
@@ -80231,7 +80311,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$2 {
80231
80311
  }
80232
80312
  };
80233
80313
 
80234
- var formkitVersion$1$1 = '202608201531';
80314
+ var formkitVersion$1$1 = '202608201808';
80235
80315
 
80236
80316
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
80237
80317
  // See LICENSE in the project root for license information.
@@ -80653,7 +80733,10 @@ class AuroInput extends BaseInput {
80653
80733
  */
80654
80734
  definePattern() {
80655
80735
  if (this.type === 'credit-card' && !this.noValidate && this.maxLength) {
80656
- return `.{${this.maxLength},${this.maxLength}}`;
80736
+ // Variable-length brands (e.g. UnionPay) set minLength, so accept a range;
80737
+ // fixed-length brands leave minLength undefined and keep an exact length.
80738
+ const minPatternLength = this.minLength || this.maxLength;
80739
+ return `.{${minPatternLength},${this.maxLength}}`;
80657
80740
  }
80658
80741
 
80659
80742
  return this.pattern;
@@ -81407,7 +81490,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$2 {
81407
81490
  }
81408
81491
  };
81409
81492
 
81410
- var formkitVersion$3 = '202608201531';
81493
+ var formkitVersion$3 = '202608201808';
81411
81494
 
81412
81495
  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}`;
81413
81496
 
@@ -83102,12 +83185,8 @@ class AuroCombobox extends AuroElement$3 {
83102
83185
  // and validating against the pre-selection value flashes a stale error
83103
83186
  // between mousedown and mouseup. The next focusout fires after the
83104
83187
  // dropdown closes and validates against the post-selection value.
83105
- if (!this.noValidate && !this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen) {
83188
+ if (!this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen) {
83106
83189
  this.validate();
83107
- } else if (this.noValidate && !this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen && this.validity !== undefined) {
83108
- // Clear stale error state left by a previous validate(true) call
83109
- this.validity = undefined;
83110
- this.errorMessage = null;
83111
83190
  }
83112
83191
  });
83113
83192
 
@@ -83246,7 +83325,7 @@ class AuroCombobox extends AuroElement$3 {
83246
83325
  // interaction). In fullscreen dialog mode, componentHasFocus returns false
83247
83326
  // because focus is inside the top-layer dialog, so also check
83248
83327
  // dropdownOpen and the fullscreen transition flag.
83249
- if (!this.noValidate && !this.componentHasFocus && !this.dropdownOpen && !this._inFullscreenTransition) {
83328
+ if (!this.componentHasFocus && !this.dropdownOpen && !this._inFullscreenTransition) {
83250
83329
  this.validate();
83251
83330
  }
83252
83331
 
@@ -90611,7 +90690,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
90611
90690
  }
90612
90691
  };
90613
90692
 
90614
- var formkitVersion$1 = '202608201531';
90693
+ var formkitVersion$1 = '202608201808';
90615
90694
 
90616
90695
  class AuroElement extends i$2 {
90617
90696
  static get properties() {
@@ -92722,7 +92801,7 @@ class AuroHelpText extends i$2 {
92722
92801
  }
92723
92802
  }
92724
92803
 
92725
- var formkitVersion = '202608201531';
92804
+ var formkitVersion = '202608201808';
92726
92805
 
92727
92806
  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{max-width:100%}.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%;box-sizing:border-box;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{overflow:hidden;height:auto;text-overflow:ellipsis;white-space:nowrap}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}`;
92728
92807
 
@@ -93719,13 +93798,7 @@ class AuroSelect extends AuroElement$1 {
93719
93798
  this.addEventListener('focusin', this.handleFocusin);
93720
93799
 
93721
93800
  this.addEventListener('blur', () => {
93722
- if (!this.noValidate) {
93723
- this.validate();
93724
- } else if (this.validity !== undefined) {
93725
- // Clear stale error state left by a previous validate(true) call
93726
- this.validity = undefined;
93727
- this.errorMessage = '';
93728
- }
93801
+ this.validate();
93729
93802
  this.hasFocus = false;
93730
93803
  this._clearTypeaheadBuffer();
93731
93804
  });
@@ -94060,9 +94133,7 @@ class AuroSelect extends AuroElement$1 {
94060
94133
  this.setMenuValue(this.value);
94061
94134
 
94062
94135
  this._updateNativeSelect();
94063
- if (!this.noValidate) {
94064
- this.validate();
94065
- }
94136
+ this.validate();
94066
94137
  if (!this.multiSelect) {
94067
94138
  this.hideBib();
94068
94139
  }
@@ -83,7 +83,7 @@
83
83
  <auro-header level="3">Input masking</auro-header>
84
84
  <p><code>auro-input</code> integrates IMask to apply format patterns as the user types — for example <code>format="(###) ###-####"</code> for phone numbers or <code>format="mm/dd/yyyy"</code> for dates. Native inputs have no concept of input masks, so you must integrate a third-party masking library and manage cursor position, paste handling, and value reconciliation yourself.</p>
85
85
  <auro-header level="3">Credit-card formatting and detection</auro-header>
86
- <p><code>auro-input</code> with <code>type="credit-card"</code> auto-detects Visa, Mastercard, American Express, Discover, Diners Club, and Alaska Airlines cards from the first digits, applies the correct digit grouping (e.g., 4-4-4-4 for Visa, 4-6-5 for Amex), displays the matching card brand icon, and validates with the Luhn algorithm. None of this is available natively.</p>
86
+ <p><code>auro-input</code> with <code>type="credit-card"</code> auto-detects Visa, Mastercard, American Express, Discover, Diners Club, JCB, China UnionPay, and Alaska Airlines cards from the first digits, applies the correct digit grouping (e.g., 4-4-4-4 for Visa, 4-6-5 for Amex), and displays the matching card brand icon. None of this is available natively.</p>
87
87
  <auro-header level="3">Password show/hide toggle</auro-header>
88
88
  <p><code>auro-input</code> with <code>type="password"</code> includes an accessible show/hide toggle with customizable ARIA labels via the <code>ariaLabel.password.show</code> and <code>ariaLabel.password.hide</code> slots. A native password input only masks the value — you must build the toggle button, swap the <code>type</code> attribute, and manage its accessible name yourself.</p>
89
89
  <auro-header level="3">Clear button</auro-header>
@@ -131,7 +131,7 @@
131
131
  <tr>
132
132
  <td>Credit-card detection and formatting</td>
133
133
  <td>Not supported</td>
134
- <td>Auto-detect with icon and Luhn check</td>
134
+ <td>Auto-detect with icon</td>
135
135
  </tr>
136
136
  <tr>
137
137
  <td>Password show/hide toggle</td>
@@ -30,7 +30,7 @@
30
30
  <auro-anchorlink fluid href="#min" class="level2 body-xs">Min</auro-anchorlink>
31
31
  <auro-anchorlink fluid href="#minLength" class="level2 body-xs">Min Length</auro-anchorlink>
32
32
  <auro-anchorlink fluid href="#name" class="level2 body-xs">Name</auro-anchorlink>
33
- <auro-anchorlink fluid href="#noValidate" class="level2 body-xs">No Validation</auro-anchorlink>
33
+ <auro-anchorlink fluid href="#noValidate" class="level2 body-xs">No Validate</auro-anchorlink>
34
34
  <auro-anchorlink fluid href="#pattern" class="level2 body-xs">Pattern</auro-anchorlink>
35
35
  <auro-anchorlink fluid href="#readonly" class="level2 body-xs">Readonly</auro-anchorlink>
36
36
  <auro-anchorlink fluid href="#required" class="level2 body-xs">Required</auro-anchorlink>
@@ -1042,7 +1042,7 @@
1042
1042
  &lt;/auro-input&gt;</code></pre>
1043
1043
  <!-- AURO-GENERATED-CONTENT:END -->
1044
1044
  </auro-accordion>
1045
- <auro-header level="3" id="noValidate">noValidate</auro-header>
1045
+ <auro-header level="3" id="noValidate">No Validate</auro-header>
1046
1046
  <p>For use cases where the field is <code>required</code>, but live validation is not wanted, use the <code>noValidate</code> attribute.</p>
1047
1047
  <div class="exampleWrapper">
1048
1048
  <!-- AURO-GENERATED-CONTENT:START (FILE:src=../apiExamples/no-validate.html) -->
@@ -11863,6 +11863,18 @@ class BaseInput extends AuroElement {
11863
11863
  cardIcon: 'cc-dinersclub',
11864
11864
  maskFormat: "0000 000000 0000"
11865
11865
  },
11866
+ {
11867
+ // JCB is variable length (16-19 digits), like UnionPay, so it reuses the
11868
+ // formatMinLength/formatLength range machinery. The 35 prefix overlaps no
11869
+ // other brand (Amex is 34|37, Diners is 30[0-5]|36|38).
11870
+ name: 'JCB',
11871
+ regex: /^(?<num>35)\d{0}/u,
11872
+ formatMinLength: 19,
11873
+ formatLength: 23,
11874
+ errorMessage: CreditCardValidationMessage,
11875
+ cardIcon: 'cc-jcb',
11876
+ maskFormat: "0000 0000 0000 0000 000"
11877
+ },
11866
11878
  {
11867
11879
  name: 'Visa',
11868
11880
  regex: /^(?<num>4)\d{0}/u,
@@ -11894,6 +11906,20 @@ class BaseInput extends AuroElement {
11894
11906
  errorMessage: CreditCardValidationMessage,
11895
11907
  cardIcon: 'cc-discover',
11896
11908
  maskFormat: "0000 0000 0000 0000"
11909
+ },
11910
+ {
11911
+ // China UnionPay is variable length (16-19 digits). It must come after
11912
+ // Discover so the last-match-wins loop below gives its 62 prefix
11913
+ // precedence over the generic `6` that resolves to Discover. 81 is used
11914
+ // by UnionPay cards issued outside mainland China and overlaps no other
11915
+ // brand. 60 is intentionally excluded (it overlaps real Discover 6011).
11916
+ name: 'China UnionPay',
11917
+ regex: /^(?<num>62|81)\d{0}/u,
11918
+ formatMinLength: 19,
11919
+ formatLength: 23,
11920
+ errorMessage: CreditCardValidationMessage,
11921
+ cardIcon: 'cc-unionpay',
11922
+ maskFormat: "0000 0000 0000 0000 000"
11897
11923
  }
11898
11924
  ];
11899
11925
 
@@ -11911,7 +11937,12 @@ class BaseInput extends AuroElement {
11911
11937
  }
11912
11938
  });
11913
11939
 
11914
- this.validationCCLength = type.formatLength;
11940
+ // Variable-length brands (both min and max defined, e.g. UnionPay) validate
11941
+ // against the minimum masked length so shorter-but-valid entries are not
11942
+ // flagged tooShort. Fixed-length brands keep their single formatLength.
11943
+ this.validationCCLength = type.formatMinLength && type.formatLength
11944
+ ? type.formatMinLength
11945
+ : type.formatLength;
11915
11946
 
11916
11947
  return type;
11917
11948
  }
@@ -12270,7 +12301,7 @@ class AuroHelpText extends i$3 {
12270
12301
  }
12271
12302
  }
12272
12303
 
12273
- var formkitVersion = '202608201531';
12304
+ var formkitVersion = '202608201808';
12274
12305
 
12275
12306
  /**
12276
12307
  * @license
@@ -12704,7 +12735,10 @@ class AuroInput extends BaseInput {
12704
12735
  */
12705
12736
  definePattern() {
12706
12737
  if (this.type === 'credit-card' && !this.noValidate && this.maxLength) {
12707
- return `.{${this.maxLength},${this.maxLength}}`;
12738
+ // Variable-length brands (e.g. UnionPay) set minLength, so accept a range;
12739
+ // fixed-length brands leave minLength undefined and keep an exact length.
12740
+ const minPatternLength = this.minLength || this.maxLength;
12741
+ return `.{${minPatternLength},${this.maxLength}}`;
12708
12742
  }
12709
12743
 
12710
12744
  return this.pattern;