@aurodesignsystem-dev/auro-formkit 0.0.0-pr1588.2 → 0.0.0-pr1592.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 (45) 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 +39 -5
  7. package/components/combobox/demo/getting-started.min.js +39 -5
  8. package/components/combobox/demo/index.min.js +39 -5
  9. package/components/combobox/dist/index.js +39 -5
  10. package/components/combobox/dist/registered.js +39 -5
  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 +121 -19
  25. package/components/form/demo/getting-started.min.js +121 -19
  26. package/components/form/demo/index.min.js +121 -19
  27. package/components/form/demo/registerDemoDeps.min.js +121 -19
  28. package/components/input/demo/css-only.md +2 -2
  29. package/components/input/demo/customize.min.js +37 -3
  30. package/components/input/demo/getting-started.min.js +37 -3
  31. package/components/input/demo/index.min.js +37 -3
  32. package/components/input/demo/why-input.md +2 -3
  33. package/components/input/dist/index.js +37 -3
  34. package/components/input/dist/registered.js +37 -3
  35. package/components/radio/demo/customize.min.js +1 -1
  36. package/components/radio/demo/getting-started.min.js +1 -1
  37. package/components/radio/demo/index.min.js +1 -1
  38. package/components/radio/dist/index.js +1 -1
  39. package/components/radio/dist/registered.js +1 -1
  40. package/components/select/demo/customize.min.js +2 -2
  41. package/components/select/demo/getting-started.min.js +2 -2
  42. package/components/select/demo/index.min.js +2 -2
  43. package/components/select/dist/index.js +2 -2
  44. package/components/select/dist/registered.js +2 -2
  45. 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 = '202608211843';
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 = '202608211843';
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 = '202608211843';
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 = '202608211843';
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 = '202608211843';
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 = '202608211843';
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 = '202608211843';
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.
@@ -61210,7 +61278,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$2 {
61210
61278
  }
61211
61279
  };
61212
61280
 
61213
- var formkitVersion$4 = '202608201531';
61281
+ var formkitVersion$4 = '202608211843';
61214
61282
 
61215
61283
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
61216
61284
  // See LICENSE in the project root for license information.
@@ -66538,7 +66606,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$2 {
66538
66606
  }
66539
66607
  };
66540
66608
 
66541
- var formkitVersion$2 = '202608201531';
66609
+ var formkitVersion$2 = '202608211843';
66542
66610
 
66543
66611
  let AuroElement$2$1 = class AuroElement extends i$2 {
66544
66612
  static get properties() {
@@ -79824,6 +79892,18 @@ class BaseInput extends AuroElement$1$1 {
79824
79892
  cardIcon: 'cc-dinersclub',
79825
79893
  maskFormat: "0000 000000 0000"
79826
79894
  },
79895
+ {
79896
+ // JCB is variable length (16-19 digits), like UnionPay, so it reuses the
79897
+ // formatMinLength/formatLength range machinery. The 35 prefix overlaps no
79898
+ // other brand (Amex is 34|37, Diners is 30[0-5]|36|38).
79899
+ name: 'JCB',
79900
+ regex: /^(?<num>35)\d{0}/u,
79901
+ formatMinLength: 19,
79902
+ formatLength: 23,
79903
+ errorMessage: CreditCardValidationMessage,
79904
+ cardIcon: 'cc-jcb',
79905
+ maskFormat: "0000 0000 0000 0000 000"
79906
+ },
79827
79907
  {
79828
79908
  name: 'Visa',
79829
79909
  regex: /^(?<num>4)\d{0}/u,
@@ -79855,6 +79935,20 @@ class BaseInput extends AuroElement$1$1 {
79855
79935
  errorMessage: CreditCardValidationMessage,
79856
79936
  cardIcon: 'cc-discover',
79857
79937
  maskFormat: "0000 0000 0000 0000"
79938
+ },
79939
+ {
79940
+ // China UnionPay is variable length (16-19 digits). It must come after
79941
+ // Discover so the last-match-wins loop below gives its 62 prefix
79942
+ // precedence over the generic `6` that resolves to Discover. 81 is used
79943
+ // by UnionPay cards issued outside mainland China and overlaps no other
79944
+ // brand. 60 is intentionally excluded (it overlaps real Discover 6011).
79945
+ name: 'China UnionPay',
79946
+ regex: /^(?<num>62|81)\d{0}/u,
79947
+ formatMinLength: 19,
79948
+ formatLength: 23,
79949
+ errorMessage: CreditCardValidationMessage,
79950
+ cardIcon: 'cc-unionpay',
79951
+ maskFormat: "0000 0000 0000 0000 000"
79858
79952
  }
79859
79953
  ];
79860
79954
 
@@ -79872,7 +79966,12 @@ class BaseInput extends AuroElement$1$1 {
79872
79966
  }
79873
79967
  });
79874
79968
 
79875
- this.validationCCLength = type.formatLength;
79969
+ // Variable-length brands (both min and max defined, e.g. UnionPay) validate
79970
+ // against the minimum masked length so shorter-but-valid entries are not
79971
+ // flagged tooShort. Fixed-length brands keep their single formatLength.
79972
+ this.validationCCLength = type.formatMinLength && type.formatLength
79973
+ ? type.formatMinLength
79974
+ : type.formatLength;
79876
79975
 
79877
79976
  return type;
79878
79977
  }
@@ -80231,7 +80330,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$2 {
80231
80330
  }
80232
80331
  };
80233
80332
 
80234
- var formkitVersion$1$1 = '202608201531';
80333
+ var formkitVersion$1$1 = '202608211843';
80235
80334
 
80236
80335
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
80237
80336
  // See LICENSE in the project root for license information.
@@ -80653,7 +80752,10 @@ class AuroInput extends BaseInput {
80653
80752
  */
80654
80753
  definePattern() {
80655
80754
  if (this.type === 'credit-card' && !this.noValidate && this.maxLength) {
80656
- return `.{${this.maxLength},${this.maxLength}}`;
80755
+ // Variable-length brands (e.g. UnionPay) set minLength, so accept a range;
80756
+ // fixed-length brands leave minLength undefined and keep an exact length.
80757
+ const minPatternLength = this.minLength || this.maxLength;
80758
+ return `.{${minPatternLength},${this.maxLength}}`;
80657
80759
  }
80658
80760
 
80659
80761
  return this.pattern;
@@ -81407,7 +81509,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$2 {
81407
81509
  }
81408
81510
  };
81409
81511
 
81410
- var formkitVersion$3 = '202608201531';
81512
+ var formkitVersion$3 = '202608211843';
81411
81513
 
81412
81514
  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
81515
 
@@ -90611,7 +90713,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
90611
90713
  }
90612
90714
  };
90613
90715
 
90614
- var formkitVersion$1 = '202608201531';
90716
+ var formkitVersion$1 = '202608211843';
90615
90717
 
90616
90718
  class AuroElement extends i$2 {
90617
90719
  static get properties() {
@@ -92722,7 +92824,7 @@ class AuroHelpText extends i$2 {
92722
92824
  }
92723
92825
  }
92724
92826
 
92725
- var formkitVersion = '202608201531';
92827
+ var formkitVersion = '202608211843';
92726
92828
 
92727
92829
  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
92830
 
@@ -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>
@@ -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 = '202608211843';
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;
@@ -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 = '202608211843';
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;
@@ -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 = '202608211843';
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;
@@ -22,17 +22,16 @@
22
22
  <p>There is no native way to detect a credit card type from input, apply the correct formatting mask, or display the appropriate card icon.</p>
23
23
  <p><code>auro-input</code> with <code>type="credit-card"</code> provides:</p>
24
24
  <ul>
25
- <li><strong>Auto-detection</strong> — Identifies Visa, Mastercard, American Express, Discover, Diners Club, and Alaska Airlines cards from the first digits typed.</li>
25
+ <li><strong>Auto-detection</strong> — Identifies Visa, Mastercard, American Express, Discover, Diners Club, JCB, China UnionPay, and Alaska Airlines cards from the first digits typed.</li>
26
26
  <li><strong>Dynamic formatting</strong> — Applies the correct digit grouping (e.g., 4-4-4-4 for Visa, 4-6-5 for Amex).</li>
27
27
  <li><strong>Card icon</strong> — Displays the detected card brand icon automatically.</li>
28
- <li><strong>Luhn validation</strong> — Validates the card number using the Luhn algorithm.</li>
29
28
  </ul>
30
29
  <auro-header level="2" id="validation">Validation</auro-header>
31
30
  <p>Native input validation provides <code>required</code>, <code>min</code>, <code>max</code>, <code>minlength</code>, <code>maxlength</code>, and <code>pattern</code>, but error messages are browser-controlled and cannot be customized.</p>
32
31
  <p><code>auro-input</code> provides:</p>
33
32
  <ul>
34
33
  <li>Custom error messages for every validity state: <code>setCustomValidityValueMissing</code>, <code>setCustomValidityRangeOverflow</code>, <code>setCustomValidityRangeUnderflow</code>, <code>setCustomValidityTooLong</code>, <code>setCustomValidityTooShort</code>, <code>setCustomValidityBadInput</code>, <code>setCustomValidityCustomError</code>, <code>setCustomValidityForType</code></li>
35
- <li>Type-specific validation (email format, credit card Luhn, phone format, date format)</li>
34
+ <li>Type-specific validation (email format, credit card format, phone format, date format)</li>
36
35
  <li>Validation timing control: on blur (default), on every input (<code>validateOnInput</code>), or disabled (<code>noValidate</code>)</li>
37
36
  <li>Programmatic vs. user input distinction — the component tracks whether a value change was user-initiated or programmatic</li>
38
37
  </ul>