@aurodesignsystem-dev/auro-formkit 0.0.0-pr1503.3 → 0.0.0-pr1503.5

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 (190) hide show
  1. package/components/bibtemplate/dist/index.js +1 -1
  2. package/components/bibtemplate/dist/registered.js +1 -1
  3. package/components/checkbox/demo/accessibility.md +1 -1
  4. package/components/checkbox/demo/customize.html +1 -2
  5. package/components/checkbox/demo/customize.min.js +23 -8
  6. package/components/checkbox/demo/getting-started.min.js +23 -8
  7. package/components/checkbox/demo/index.min.js +23 -8
  8. package/components/checkbox/dist/index.js +23 -8
  9. package/components/checkbox/dist/registered.js +23 -8
  10. package/components/combobox/README.md +1 -1
  11. package/components/combobox/demo/accessibility.md +1 -1
  12. package/components/combobox/demo/api.md +2 -2
  13. package/components/combobox/demo/customize.html +1 -2
  14. package/components/combobox/demo/customize.md +166 -142
  15. package/components/combobox/demo/customize.min.js +2515 -2316
  16. package/components/combobox/demo/getting-started.min.js +2515 -2312
  17. package/components/combobox/demo/index.md +2 -1
  18. package/components/combobox/demo/index.min.js +2515 -2312
  19. package/components/combobox/demo/keyboard-behavior.md +3 -146
  20. package/components/combobox/demo/readme.md +1 -1
  21. package/components/combobox/demo/why-combobox.md +2 -2
  22. package/components/combobox/dist/auro-combobox.d.ts +49 -15
  23. package/components/combobox/dist/index.js +1462 -753
  24. package/components/combobox/dist/registered.js +1462 -753
  25. package/components/counter/demo/customize.min.js +188 -244
  26. package/components/counter/demo/index.min.js +188 -244
  27. package/components/counter/dist/auro-counter.d.ts +0 -8
  28. package/components/counter/dist/index.js +188 -244
  29. package/components/counter/dist/registered.js +188 -244
  30. package/components/datepicker/demo/accessibility.md +20 -10
  31. package/components/datepicker/demo/api.md +65 -62
  32. package/components/datepicker/demo/customize.md +180 -40
  33. package/components/datepicker/demo/customize.min.js +1690 -777
  34. package/components/datepicker/demo/getting-started.md +118 -2
  35. package/components/datepicker/demo/index.min.js +1690 -759
  36. package/components/datepicker/demo/keyboard-behavior.md +3 -3
  37. package/components/datepicker/demo/voiceover.md +4 -4
  38. package/components/datepicker/demo/why-datepicker.md +2 -2
  39. package/components/datepicker/dist/{src/auro-calendar-cell.d.ts → auro-calendar-cell.d.ts} +48 -3
  40. package/components/datepicker/dist/{src/auro-calendar.d.ts → auro-calendar.d.ts} +188 -10
  41. package/components/datepicker/dist/{src/auro-datepicker.d.ts → auro-datepicker.d.ts} +89 -6
  42. package/components/datepicker/dist/blackoutUtils.d.ts +43 -0
  43. package/components/datepicker/dist/index.js +1690 -759
  44. package/components/datepicker/dist/registered.js +1690 -759
  45. package/components/dropdown/demo/customize.html +3 -0
  46. package/components/dropdown/demo/customize.min.js +142 -208
  47. package/components/dropdown/demo/getting-started.min.js +131 -207
  48. package/components/dropdown/demo/index.min.js +131 -207
  49. package/components/dropdown/dist/auro-dropdown.d.ts +17 -1
  50. package/components/dropdown/dist/index.js +131 -207
  51. package/components/dropdown/dist/registered.js +131 -207
  52. package/components/form/demo/api.md +3 -3
  53. package/components/form/demo/customize.html +6 -6
  54. package/components/form/demo/customize.md +535 -135
  55. package/components/form/demo/customize.min.js +6307 -4378
  56. package/components/form/demo/getting-started.md +344 -96
  57. package/components/form/demo/getting-started.min.js +6255 -4378
  58. package/components/form/demo/index.min.js +6206 -4378
  59. package/components/form/demo/registerDemoDeps.min.js +5827 -4333
  60. package/components/form/dist/auro-form.d.ts +128 -10
  61. package/components/form/dist/index.js +377 -43
  62. package/components/form/dist/registered.js +377 -43
  63. package/components/input/demo/accessibility.md +1 -1
  64. package/components/input/demo/api.md +58 -57
  65. package/components/input/demo/customize.html +1 -2
  66. package/components/input/demo/customize.md +62 -61
  67. package/components/input/demo/customize.min.js +396 -275
  68. package/components/input/demo/getting-started.min.js +396 -275
  69. package/components/input/demo/index.min.js +396 -275
  70. package/components/input/dist/auro-input.d.ts +1 -1
  71. package/components/input/dist/base-input.d.ts +60 -81
  72. package/components/input/dist/index.js +409 -276
  73. package/components/input/dist/registered.js +396 -275
  74. package/components/input/dist/utilities.d.ts +10 -1
  75. package/components/menu/demo/accessibility.md +9 -4
  76. package/components/menu/demo/api.md +48 -45
  77. package/components/menu/demo/css-only.md +26 -19
  78. package/components/menu/demo/customize.md +307 -75
  79. package/components/menu/demo/design.md +1 -1
  80. package/components/menu/demo/getting-started.md +144 -7
  81. package/components/menu/demo/index.min.js +961 -1341
  82. package/components/menu/demo/keyboard-behavior.md +83 -4
  83. package/components/menu/demo/voiceover.md +21 -14
  84. package/components/menu/demo/why-menu.md +8 -9
  85. package/components/menu/dist/auro-menu-utils.d.ts +19 -0
  86. package/components/menu/dist/auro-menu.d.ts +97 -116
  87. package/components/menu/dist/auro-menuoption.d.ts +39 -133
  88. package/components/menu/dist/index.js +823 -1309
  89. package/components/menu/dist/registered.js +835 -1309
  90. package/components/radio/demo/accessibility.md +1 -1
  91. package/components/radio/demo/customize.min.js +23 -8
  92. package/components/radio/demo/getting-started.min.js +23 -8
  93. package/components/radio/demo/index.min.js +23 -8
  94. package/components/radio/dist/index.js +23 -8
  95. package/components/radio/dist/registered.js +23 -8
  96. package/components/select/demo/accessibility.md +6 -1
  97. package/components/select/demo/api.md +3 -2
  98. package/components/select/demo/customize.html +1 -2
  99. package/components/select/demo/customize.md +210 -5
  100. package/components/select/demo/customize.min.js +1613 -1854
  101. package/components/select/demo/design.md +10 -10
  102. package/components/select/demo/getting-started.md +1 -1
  103. package/components/select/demo/getting-started.min.js +1617 -1903
  104. package/components/select/demo/index.md +2 -2
  105. package/components/select/demo/index.min.js +1613 -1854
  106. package/components/select/demo/keyboard-behavior.md +81 -54
  107. package/components/select/demo/voiceover.md +28 -15
  108. package/components/select/dist/auro-select.d.ts +70 -12
  109. package/components/select/dist/index.js +580 -315
  110. package/components/select/dist/registered.js +580 -315
  111. package/components/select/dist/selectUtils.d.ts +24 -0
  112. package/custom-elements.json +8071 -7919
  113. package/package.json +7 -3
  114. package/components/checkbox/demo/customize.js +0 -22
  115. package/components/checkbox/demo/demo-support.js +0 -1
  116. package/components/checkbox/demo/getting-started.js +0 -22
  117. package/components/checkbox/demo/index.js +0 -8
  118. package/components/checkbox/demo/styles.scss +0 -1
  119. package/components/combobox/demo/customize.js +0 -24
  120. package/components/combobox/demo/demo-support.js +0 -1
  121. package/components/combobox/demo/getting-started.js +0 -21
  122. package/components/combobox/demo/index.js +0 -23
  123. package/components/combobox/demo/styles.scss +0 -1
  124. package/components/counter/demo/customize.js +0 -21
  125. package/components/counter/demo/demo-support.js +0 -1
  126. package/components/counter/demo/index.js +0 -21
  127. package/components/counter/demo/styles.scss +0 -1
  128. package/components/datepicker/demo/customize.js +0 -19
  129. package/components/datepicker/demo/demo-support.js +0 -1
  130. package/components/datepicker/demo/index.js +0 -23
  131. package/components/datepicker/demo/styles.scss +0 -1
  132. package/components/dropdown/demo/customize.js +0 -9
  133. package/components/dropdown/demo/demo-support.js +0 -1
  134. package/components/dropdown/demo/getting-started.js +0 -9
  135. package/components/dropdown/demo/index.js +0 -16
  136. package/components/dropdown/demo/styles.scss +0 -1
  137. package/components/form/demo/customize.js +0 -9
  138. package/components/form/demo/demo-support.js +0 -1
  139. package/components/form/demo/getting-started.js +0 -9
  140. package/components/form/demo/index.js +0 -5
  141. package/components/form/demo/registerDemoDeps.js +0 -23
  142. package/components/form/demo/styles.scss +0 -1
  143. package/components/input/demo/customize.js +0 -25
  144. package/components/input/demo/demo-support.js +0 -1
  145. package/components/input/demo/getting-started.js +0 -8
  146. package/components/input/demo/index.js +0 -8
  147. package/components/input/demo/styles.css +0 -974
  148. package/components/input/demo/styles.scss +0 -1
  149. package/components/menu/demo/demo-support.js +0 -1
  150. package/components/menu/demo/index.js +0 -25
  151. package/components/menu/demo/styles.scss +0 -1
  152. package/components/menu/dist/auro-menu.context.d.ts +0 -238
  153. package/components/radio/demo/customize.js +0 -22
  154. package/components/radio/demo/demo-support.js +0 -1
  155. package/components/radio/demo/getting-started.js +0 -24
  156. package/components/radio/demo/index.js +0 -8
  157. package/components/radio/demo/styles.scss +0 -1
  158. package/components/select/demo/customize.js +0 -11
  159. package/components/select/demo/demo-support.js +0 -1
  160. package/components/select/demo/getting-started.js +0 -26
  161. package/components/select/demo/index.js +0 -11
  162. package/components/select/demo/styles.scss +0 -1
  163. /package/components/counter/dist/styles/{counter-wrapper-color-css.d.ts → counter-group-color-css.d.ts} +0 -0
  164. /package/components/datepicker/dist/{src/auro-calendar-month.d.ts → auro-calendar-month.d.ts} +0 -0
  165. /package/components/datepicker/dist/{src/buttonVersion.d.ts → buttonVersion.d.ts} +0 -0
  166. /package/components/datepicker/dist/{src/datepickerKeyboardStrategy.d.ts → datepickerKeyboardStrategy.d.ts} +0 -0
  167. /package/components/datepicker/dist/{src/iconVersion.d.ts → iconVersion.d.ts} +0 -0
  168. /package/components/datepicker/dist/{src/index.d.ts → index.d.ts} +0 -0
  169. /package/components/datepicker/dist/{src/popoverVersion.d.ts → popoverVersion.d.ts} +0 -0
  170. /package/components/datepicker/dist/{src/styles → styles}/classic/color-css.d.ts +0 -0
  171. /package/components/datepicker/dist/{src/styles → styles}/classic/style-css.d.ts +0 -0
  172. /package/components/datepicker/dist/{src/styles → styles}/color-calendar-css.d.ts +0 -0
  173. /package/components/datepicker/dist/{src/styles → styles}/color-cell-css.d.ts +0 -0
  174. /package/components/datepicker/dist/{src/styles → styles}/color-css.d.ts +0 -0
  175. /package/components/datepicker/dist/{src/styles → styles}/color-month-css.d.ts +0 -0
  176. /package/components/datepicker/dist/{src/styles → styles}/shapeSize-css.d.ts +0 -0
  177. /package/components/datepicker/dist/{src/styles → styles}/snowflake/color-css.d.ts +0 -0
  178. /package/components/datepicker/dist/{src/styles → styles}/snowflake/style-css.d.ts +0 -0
  179. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-cell-css.d.ts +0 -0
  180. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-css.d.ts +0 -0
  181. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-month-css.d.ts +0 -0
  182. /package/components/datepicker/dist/{src/styles → styles}/style-css.d.ts +0 -0
  183. /package/components/datepicker/dist/{src/styles → styles}/tokens-css.d.ts +0 -0
  184. /package/components/datepicker/dist/{src/utilities.d.ts → utilities.d.ts} +0 -0
  185. /package/components/datepicker/dist/{src/utilitiesCalendar.d.ts → utilitiesCalendar.d.ts} +0 -0
  186. /package/components/datepicker/dist/{src/utilitiesCalendarRender.d.ts → utilitiesCalendarRender.d.ts} +0 -0
  187. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/day.d.ts +0 -0
  188. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-calendar.d.ts +0 -0
  189. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-cell.d.ts +0 -0
  190. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker.d.ts +0 -0
@@ -7,7 +7,7 @@ import { createRef, ref } from 'lit/directives/ref.js';
7
7
 
8
8
  var shapeSizeCss = css`.shape-classic-xl,.shape-classic-lg,.shape-classic-md,.shape-classic-sm,.shape-classic-xs{min-height:56px;max-height:56px;border-style:solid;border-width:1px;border-radius:var(--ds-border-radius, 0.375rem)}.shape-classic-xl.simple,.shape-classic-lg.simple,.shape-classic-md.simple,.shape-classic-sm.simple,.shape-classic-xs.simple{border-width:0px;min-height:58px;max-height:58px;background-color:unset;box-shadow:none}.shape-classic-xl.thin,.shape-classic-lg.thin,.shape-classic-md.thin,.shape-classic-sm.thin,.shape-classic-xs.thin{border-width:1px;min-height:56px;max-height:56px;background-color:unset}.shape-classic-xl.parentBorder,.shape-classic-lg.parentBorder,.shape-classic-md.parentBorder,.shape-classic-sm.parentBorder,.shape-classic-xs.parentBorder{border:0;box-shadow:unset;min-height:54px;max-height:54px}.shape-snowflake-xl,.shape-snowflake-lg,.shape-snowflake-md,.shape-snowflake-sm,.shape-snowflake-xs{min-height:56px;max-height:56px;border-style:solid;border-width:2px;border-color:transparent;border-radius:30px}.shape-snowflake-xl.simple,.shape-snowflake-lg.simple,.shape-snowflake-md.simple,.shape-snowflake-sm.simple,.shape-snowflake-xs.simple{border-width:0px;min-height:60px;max-height:60px;background-color:unset;box-shadow:none}.shape-snowflake-xl.thin,.shape-snowflake-lg.thin,.shape-snowflake-md.thin,.shape-snowflake-sm.thin,.shape-snowflake-xs.thin{border-width:1px;min-height:58px;max-height:58px;background-color:unset}.shape-snowflake-xl.parentBorder,.shape-snowflake-lg.parentBorder,.shape-snowflake-md.parentBorder,.shape-snowflake-sm.parentBorder,.shape-snowflake-xs.parentBorder{border:0;box-shadow:unset;min-height:56px;max-height:56px}.shape-box-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent}.shape-box-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-box-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-box-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-box-lg{min-height:52px;max-height:52px;border-style:solid;border-width:2px;border-color:transparent}.shape-box-lg.simple{border-width:0px;min-height:56px;max-height:56px;background-color:unset;box-shadow:none}.shape-box-lg.thin{border-width:1px;min-height:54px;max-height:54px;background-color:unset}.shape-box-lg.parentBorder{border:0;box-shadow:unset;min-height:52px;max-height:52px}.shape-box-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent}.shape-box-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-box-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-box-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}.shape-box-sm{min-height:32px;max-height:32px;border-style:solid;border-width:2px;border-color:transparent}.shape-box-sm.simple{border-width:0px;min-height:36px;max-height:36px;background-color:unset;box-shadow:none}.shape-box-sm.thin{border-width:1px;min-height:34px;max-height:34px;background-color:unset}.shape-box-sm.parentBorder{border:0;box-shadow:unset;min-height:32px;max-height:32px}.shape-box-xs{min-height:20px;max-height:20px;border-style:solid;border-width:2px;border-color:transparent}.shape-box-xs.simple{border-width:0px;min-height:24px;max-height:24px;background-color:unset;box-shadow:none}.shape-box-xs.thin{border-width:1px;min-height:22px;max-height:22px;background-color:unset}.shape-box-xs.parentBorder{border:0;box-shadow:unset;min-height:20px;max-height:20px}.shape-rounded-lg{min-height:56px;max-height:56px;border-style:solid;border-width:2px;border-color:transparent;border-radius:6px}.shape-rounded-lg.simple{border-width:0px;min-height:56px;max-height:56px;background-color:unset;box-shadow:none}.shape-rounded-lg.thin{border-width:1px;min-height:54px;max-height:54px;background-color:unset}.shape-rounded-lg.parentBorder{border:0;box-shadow:unset;min-height:52px;max-height:52px}.shape-pill-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px}.shape-pill-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-left-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px 0 0 36px}.shape-pill-left-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-left-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-left-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-right-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 36px 36px 0}.shape-pill-right-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-right-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-right-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px}.shape-pill-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}.shape-pill-left-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px 0 0 36px}.shape-pill-left-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-left-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-left-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}.shape-pill-right-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 36px 36px 0}.shape-pill-right-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-right-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-right-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}`;
9
9
 
10
- var styleCss$1 = css`.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}:host{display:block}.wrapper:has(:enabled){cursor:text}.wrapper:has(:enabled) label{cursor:text}.helpTextClasses{cursor:default}input{overflow:clip !important;width:100%;padding:0;border:0;background:unset;outline:none;overflow-clip-margin:0 !important;text-overflow:ellipsis}input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.displayValue{display:none}.displayValue.hasContent:is(.withValue):not(.hasFocus){display:flex;align-items:center}.accents:not(.util_displayHidden){display:flex;flex-direction:row;align-items:center;justify-content:center;gap:8px}.wrapper:not(:focus-within):not(:hover) .notificationBtn.passwordBtn,.wrapper:not(:focus-within):not(:hover) .notification.clear{display:none}.notification{display:flex;align-items:center;justify-content:center}`;
10
+ var styleCss$1 = css`.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}:host{display:block}.wrapper:has(:enabled){cursor:text}.wrapper:has(:enabled) label{cursor:text}.helpTextClasses{cursor:default}input{overflow:clip !important;width:100%;padding:0;border:0;background:unset;outline:none;overflow-clip-margin:0 !important;text-overflow:ellipsis}input[type=number]{appearance:textfield}input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.displayValue{display:none}.displayValue.hasContent:is(.withValue):not(.hasFocus){display:flex;align-items:center}.accents:not(.util_displayHidden){display:flex;flex-direction:row;align-items:center;justify-content:center;gap:8px}.wrapper:not(:focus-within):not(:hover) .notificationBtn.passwordBtn,.wrapper:not(:focus-within):not(:hover) .notification.clear{display:none}.notification{display:flex;align-items:center;justify-content:center}`;
11
11
 
12
12
  var styleDefaultCss = css`.layoutDefault .typeIcon,:host(:not([layout])) .typeIcon{display:flex;flex-direction:row;align-items:center}.layoutDefault .typeIcon [auro-icon],:host(:not([layout])) .typeIcon [auro-icon]{--ds-auro-icon-size: var(--ds-size-300, 1.5rem);height:var(--ds-size-300, 1.5rem);margin-right:var(--ds-size-100, 0.5rem)}.layoutDefault .notificationIcons,:host(:not([layout])) .notificationIcons{display:flex;flex-direction:row;padding-right:var(--ds-size-100, 0.5rem)}:host([class=layoutDefault][bordered]) .typeIcon,:host(:not([layout])[bordered]) .typeIcon{padding-left:var(--ds-size-100, 0.5rem)}:host([class=layoutDefault][bordered]) .notificationIcons,:host(:not([layout])[bordered]) .notificationIcons{align-items:center}:host([class=layoutDefault][bordered]) .notification:not(:first-of-type),:host(:not([layout])[bordered]) .notification:not(:first-of-type){margin-left:var(--ds-size-100, 0.5rem)}:host([class=layoutDefault][bordered]) .alertNotification,:host(:not([layout])[bordered]) .alertNotification{width:calc(var(--ds-size-300, 1.5rem) + var(--ds-size-25, 0.125rem));height:calc(var(--ds-size-300, 1.5rem) + var(--ds-size-25, 0.125rem))}:host([class=layoutDefault][bordered]) .passwordBtn,:host(:not([layout])[bordered]) .passwordBtn{width:calc(var(--ds-size-300, 1.5rem));height:calc(var(--ds-size-300, 1.5rem))}:host([class=layoutDefault][bordered]) .notificationBtn,:host(:not([layout])[bordered]) .notificationBtn{display:block;width:var(--ds-size-300, 1.5rem);height:var(--ds-size-300, 1.5rem);padding:0;border:0;background:unset;cursor:pointer}:host([class=layoutDefault][bordered]) .notificationBtn [auro-icon],:host(:not([layout])[bordered]) .notificationBtn [auro-icon]{display:block;height:var(--ds-size-300, 1.5rem);--ds-auro-icon-size: var(--ds-size-300, 1.5rem)}:host([class=layoutDefault][bordered]) .notificationBtn [auro-icon][hidden],:host(:not([layout])[bordered]) .notificationBtn [auro-icon][hidden]{display:none}:host([class=layoutDefault]:not([bordered])) .typeIcon,:host([class=layoutDefault]:not([bordered])) .notificationIcons,:host(:not([layout]):not([bordered])) .typeIcon,:host(:not([layout]):not([bordered])) .notificationIcons{align-items:flex-end;padding-bottom:var(--ds-size-50, 0.25rem)}:host([class=layoutDefault]:not([bordered])) .clearBtn,:host(:not([layout]):not([bordered])) .clearBtn{transition:all .3s cubic-bezier(0.215, 0.61, 0.355, 1);overflow:hidden;width:0;opacity:0}.layoutDefault .wrapper:hover .clearBtn,.layoutDefault .wrapper:focus-within .clearBtn,:host(:not([layout])) .wrapper:hover .clearBtn,:host(:not([layout])) .wrapper:focus-within .clearBtn{width:calc(var(--ds-size-200, 1rem) + var(--ds-size-25, 0.125rem));height:calc(var(--ds-size-200, 1rem) + var(--ds-size-25, 0.125rem));opacity:1}:host([class=layoutDefault]:focus-within[type=password]) .notificationIcons[hasValue] .alertNotification,:host(:not([layout]):focus-within[type=password]) .notificationIcons[hasValue] .alertNotification{overflow:hidden;width:0;height:0;padding:0;margin:0;visibility:hidden}.layoutDefault input,:host(:not([layout])) input{border:unset}.layoutDefault .wrapper,:host(:not([layout])) .wrapper{position:relative;overflow:hidden;border-style:solid}:host([class=layoutDefault]:not([bordered],[borderless])) .wrapper,:host(:not([layout]):not([bordered],[borderless])) .wrapper{border-width:1px 0}:host([class=layoutDefault][bordered]) .wrapper,:host(:not([layout])[bordered]) .wrapper{border-width:1px;border-radius:var(--ds-border-radius, 0.375rem)}:host([class=layoutDefault]:not([borderless])) .wrapper:focus-within:before,:host(:not([layout]):not([borderless])) .wrapper:focus-within:before{position:absolute;display:block;border-bottom-width:1px;border-bottom-style:solid;content:"";inset:0;pointer-events:none}:host([class=layoutDefault][validity]:not([validity=valid])) .wrapper:before,:host(:not([layout])[validity]:not([validity=valid])) .wrapper:before{border-bottom:0}:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock,:host{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host([hidden]:not(:focus):not(:active)){display:none}.util_displayHiddenVisually,:host([hiddenVisually]:not(:focus):not(:active)){position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{text-align:left}.layoutDefault :host,:host(:not([layout])) :host{position:relative;display:block}.layoutDefault .wrapper,:host(:not([layout])) .wrapper{display:flex;flex-direction:row}.layoutDefault .main,:host(:not([layout])) .main{display:flex;flex-direction:row;position:relative;flex:1}`;
13
13
 
@@ -4285,8 +4285,21 @@ class AuroFormValidation {
4285
4285
  return;
4286
4286
  }
4287
4287
 
4288
- // Validate that the date passed was the correct format and is a valid date
4288
+ // Validate that the date passed was the correct format and is a valid date.
4289
+ // For partial date formats, valueObject is never populated; validate them directly.
4289
4290
  if (elem.value && !elem.valueObject) {
4291
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
4292
+
4293
+ if (isPartialDateFormat) {
4294
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
4295
+ elem.validity = 'patternMismatch';
4296
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
4297
+ }
4298
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
4299
+ return;
4300
+ }
4301
+
4302
+ // Full date format with no valueObject means the value is not a valid calendar date.
4290
4303
  elem.validity = 'patternMismatch';
4291
4304
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
4292
4305
  return;
@@ -4383,15 +4396,17 @@ class AuroFormValidation {
4383
4396
  );
4384
4397
  }
4385
4398
 
4386
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
4387
- if (this.auroInputElements?.length === 2) {
4388
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
4399
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
4400
+
4401
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
4402
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
4403
+ // field (datepicker is the intended consumer — start/end are independently required).
4404
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
4405
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
4389
4406
  hasValue = false;
4390
4407
  }
4391
4408
  }
4392
4409
 
4393
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
4394
-
4395
4410
  if (isCombobox) {
4396
4411
 
4397
4412
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -4490,7 +4505,7 @@ class AuroFormValidation {
4490
4505
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
4491
4506
  const input = elem.renderRoot.querySelector('input');
4492
4507
 
4493
- if (input.validationMessage.length > 0) {
4508
+ if (input && input.validationMessage.length > 0) {
4494
4509
  elem.errorMessage = input.validationMessage;
4495
4510
  }
4496
4511
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -10072,8 +10087,6 @@ function cleanEscapedString(input) {
10072
10087
  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, "'");
10073
10088
  }
10074
10089
 
10075
- /* eslint-disable max-lines */
10076
-
10077
10090
  class AuroInputUtilities {
10078
10091
 
10079
10092
  /**
@@ -10116,7 +10129,7 @@ class AuroInputUtilities {
10116
10129
  /**
10117
10130
  * Converts an IMask-style date mask to a date-fns compatible format string.
10118
10131
  * @param {string} mask - IMask date mask (e.g. "MM/DD/YYYY").
10119
- * @returns {string} date-fns format string (e.g. "MM/dd/yyyy").
10132
+ * @returns {string} A date-fns format string (e.g. "MM/dd/yyyy").
10120
10133
  */
10121
10134
  toDateFnsMask(mask) {
10122
10135
  return mask
@@ -10216,10 +10229,11 @@ class AuroInputUtilities {
10216
10229
  const dateFormat = format$1 || this.overrideFormat || pattern || 'mm/dd/yyyy';
10217
10230
 
10218
10231
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
10219
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
10232
+ const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
10233
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
10220
10234
  return {
10221
10235
  mask: IMask.MaskedRange,
10222
- from: 1,
10236
+ from: fromValue,
10223
10237
  to: maxValue,
10224
10238
  lazy: true,
10225
10239
  placeholderChar: '',
@@ -10227,7 +10241,8 @@ class AuroInputUtilities {
10227
10241
  return value.toString().padStart(dateFormat.length, '0');
10228
10242
  },
10229
10243
  parse(str) {
10230
- return parseInt(str) || null;
10244
+ const num = parseInt(str, 10);
10245
+ return isNaN(num) ? null : num;
10231
10246
  }
10232
10247
  };
10233
10248
  }
@@ -10291,6 +10306,49 @@ class AuroInputUtilities {
10291
10306
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
10292
10307
  }
10293
10308
 
10309
+ /**
10310
+ * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
10311
+ * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
10312
+ * a date-fns parse + round-trip to confirm both validity and exact formatting.
10313
+ * @param {string} value - The user-facing display value.
10314
+ * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
10315
+ * @returns {boolean}
10316
+ */
10317
+ isValidPartialDate(value, format$1) {
10318
+ if (!value || !format$1) {
10319
+ return false;
10320
+ }
10321
+ const normalizedFormat = format$1.toLowerCase();
10322
+
10323
+ if (normalizedFormat === 'dd') {
10324
+ const num = Number(value);
10325
+ return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
10326
+ }
10327
+ if (normalizedFormat === 'yy') {
10328
+ const num = Number(value);
10329
+ return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
10330
+ }
10331
+ if (normalizedFormat === 'yyyy') {
10332
+ const num = Number(value);
10333
+ return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
10334
+ }
10335
+
10336
+ const dateFnsMask = this.toDateFnsMask(normalizedFormat);
10337
+ // Use the 1st of the current month as the reference so that formats
10338
+ // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
10339
+ const referenceDate = new Date();
10340
+ referenceDate.setDate(1);
10341
+ const parsed = parse(value, dateFnsMask, referenceDate);
10342
+ if (!isValid(parsed) || format(parsed, dateFnsMask) !== value) {
10343
+ return false;
10344
+ }
10345
+ if (normalizedFormat.includes('yyyy')) {
10346
+ const year = parsed.getFullYear();
10347
+ return year >= 1900 && year <= 2100;
10348
+ }
10349
+ return true;
10350
+ }
10351
+
10294
10352
  /**
10295
10353
  * Converts a display string to its model value.
10296
10354
  * For full date formats, converts the display string to an ISO date string.
@@ -10327,6 +10385,13 @@ class AuroInputUtilities {
10327
10385
  * @returns {string | undefined}
10328
10386
  */
10329
10387
  toFormattedValue(valueObject, format) {
10388
+ // Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
10389
+ // `format` argument has to fail gracefully rather than throw on
10390
+ // `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
10391
+ // as "no format → no display value".
10392
+ if (!format) {
10393
+ return undefined;
10394
+ }
10330
10395
  const normalizedFormat = format.toLowerCase();
10331
10396
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
10332
10397
 
@@ -10465,9 +10530,10 @@ class DomHandler {
10465
10530
  class BaseInput extends AuroElement {
10466
10531
 
10467
10532
  // Delegate focus to the native <input> inside the shadow root so that
10468
- // showModal()'s dialog focusing steps reach the input element.
10469
- // This keeps the mobile virtual keyboard open when the fullscreen dialog
10470
- // opens, because the browser sees an input-to-input focus transfer.
10533
+ // clicking anywhere on the input wrapper focuses the native input, and
10534
+ // programmatic .focus() calls on elements in the shadow DOM work correctly.
10535
+ // The initial-load focus theft was caused by the static `autofocus`
10536
+ // attribute on the bib input (now conditional), not by delegatesFocus.
10471
10537
  static get shadowRootOptions() {
10472
10538
  return {
10473
10539
  ...AuroElement.shadowRootOptions,
@@ -10478,79 +10544,19 @@ class BaseInput extends AuroElement {
10478
10544
  constructor() {
10479
10545
  super();
10480
10546
 
10481
- this.appearance = "default";
10482
- this.disabled = false;
10483
- this.layout = 'classic';
10484
- this.locale = 'en-US';
10485
- this.max = undefined;
10486
- this._maxObject = undefined;
10487
- this.maxLength = undefined;
10488
- this.min = undefined;
10489
- this._minObject = undefined;
10490
- this.minLength = undefined;
10491
- this.required = false;
10492
- this.onDark = false;
10493
- this.setCustomValidityForType = undefined;
10494
- this.size = 'lg';
10495
- this.shape = 'classic';
10496
- this.value = undefined;
10497
- this._valueObject = undefined;
10498
-
10499
- this._initializePrivateDefaults();
10500
- }
10501
-
10502
- /**
10503
- * Internal Defaults.
10504
- * @private
10505
- * @returns {void}
10506
- */
10507
- _initializePrivateDefaults() {
10547
+ // Single-source initialization. Alphabetized so duplicate or stale
10548
+ // defaults are immediately obvious on a diff. Every field is assigned
10549
+ // exactly once here (previously the constructor + the old
10550
+ // `_initializePrivateDefaults` overlapped — both wrote ~14 of the same
10551
+ // fields and double-allocated `util` and `validation`, discarding the
10552
+ // first instance). `validation` is now allocated exactly once; `util`
10553
+ // is seeded here with an en-US default and then rebuilt in
10554
+ // `connectedCallback` once the consumer-resolved locale is available,
10555
+ // so a parent (datepicker/combobox) calling `validate()` synchronously
10556
+ // during its own update cycle sees a populated util instance.
10508
10557
  this.activeLabel = false;
10509
- this.appearance = "default";
10510
- this.icon = false;
10511
- this.disabled = false;
10512
- this.dvInputOnly = false;
10513
- this.hideLabelVisually = false;
10514
- this.max = undefined;
10515
- this.maxLength = undefined;
10516
- this.min = undefined;
10517
- this.minLength = undefined;
10518
- this.noValidate = false;
10519
- this.onDark = false;
10520
- this.required = false;
10521
- this.setCustomValidityForType = undefined;
10522
-
10523
- // Used for storing raw values returned from input mask.
10524
- this._rawMaskValue = undefined;
10525
-
10526
- /**
10527
- * @private
10528
- */
10529
- this.layout = 'classic';
10530
-
10531
- /**
10532
- * @private
10533
- */
10534
- this.shape = 'classic';
10535
-
10536
- /**
10537
- * @private
10538
- */
10539
- this.size = 'lg';
10540
-
10541
- this.touched = false;
10542
- this.util = new AuroInputUtilities({
10543
- locale: "en-US",
10544
- format: this.format
10545
- });
10546
- this.validation = new AuroFormValidation();
10547
- this.inputIconName = undefined;
10548
- this.showPassword = false;
10549
- this.validationCCLength = undefined;
10550
- this.hasValue = false;
10551
- this.label = 'Input label is undefined';
10552
-
10553
10558
 
10559
+ /** @private */
10554
10560
  this.allowedInputTypes = [
10555
10561
  "text",
10556
10562
  "number",
@@ -10559,7 +10565,9 @@ class BaseInput extends AuroElement {
10559
10565
  "credit-card",
10560
10566
  "tel"
10561
10567
  ];
10562
- this.icon = false;
10568
+ this.appearance = "default";
10569
+
10570
+ /** @private */
10563
10571
  this.dateFormatMap = {
10564
10572
  'mm/dd/yyyy': 'dateMMDDYYYY',
10565
10573
  'dd/mm/yyyy': 'dateDDMMYYYY',
@@ -10576,27 +10584,64 @@ class BaseInput extends AuroElement {
10576
10584
  'dd/mm': 'dateDDMM',
10577
10585
  'mm/dd': 'dateMMDD'
10578
10586
  };
10587
+ this.disabled = false;
10588
+
10589
+ /** @private */
10579
10590
  this.domHandler = new DomHandler();
10580
10591
  this.dvInputOnly = false;
10581
10592
  this.hasValue = false;
10593
+ this.hideLabelVisually = false;
10594
+ this.icon = false;
10595
+
10596
+ /** @private */
10582
10597
  this.inputIconName = undefined;
10598
+
10599
+ /** @private */
10583
10600
  this.label = 'Input label is undefined';
10601
+ this.layout = 'classic';
10602
+ this.locale = 'en-US';
10603
+ this._format = undefined;
10604
+
10605
+ /** @private */
10606
+ this._userSetFormat = false;
10607
+ this.max = undefined;
10608
+ this.maxLength = undefined;
10609
+ this.min = undefined;
10610
+ this.minLength = undefined;
10584
10611
  this.noValidate = false;
10585
- this._rawMaskValue = undefined; // Used for storing raw values returned from input mask.
10612
+ this.onDark = false;
10613
+ this.required = false;
10614
+ this.setCustomValidityForType = undefined;
10615
+ // Credit Card is intentionally excluded — its mask manages the cursor
10616
+ // itself, and listing it here caused cursor placement issues in Safari.
10617
+ /** @private */
10586
10618
  this.setSelectionInputTypes = [
10587
10619
  "text",
10588
10620
  "password",
10589
10621
  "email"
10590
- ]; // Credit Card is not included as this caused cursor placement issues in Safari.
10622
+ ];
10623
+ this.shape = 'classic';
10624
+
10625
+ /** @private */
10591
10626
  this.showPassword = false;
10627
+ this.size = 'lg';
10592
10628
  this.touched = false;
10629
+
10630
+ /** @private */
10593
10631
  this.uniqueId = new UniqueId().create();
10632
+
10633
+ /** @private */
10594
10634
  this.util = new AuroInputUtilities({
10595
10635
  locale: this.locale,
10596
10636
  format: this.format
10597
10637
  });
10638
+
10639
+ /** @private */
10598
10640
  this.validation = new AuroFormValidation();
10641
+
10642
+ /** @private */
10599
10643
  this.validationCCLength = undefined;
10644
+ this.value = undefined;
10600
10645
  }
10601
10646
 
10602
10647
  // function to define props used within the scope of this component
@@ -10722,7 +10767,8 @@ class BaseInput extends AuroElement {
10722
10767
  */
10723
10768
  format: {
10724
10769
  type: String,
10725
- reflect: true
10770
+ reflect: true,
10771
+ noAccessor: true
10726
10772
  },
10727
10773
 
10728
10774
  /**
@@ -10926,6 +10972,13 @@ class BaseInput extends AuroElement {
10926
10972
  type: String
10927
10973
  },
10928
10974
 
10975
+ /**
10976
+ * Custom help text message to display when validity = `patternMismatch`.
10977
+ */
10978
+ setCustomValidityPatternMismatch: {
10979
+ type: String
10980
+ },
10981
+
10929
10982
  /**
10930
10983
  * Custom help text message to display when validity = `rangeOverflow`.
10931
10984
  */
@@ -10996,7 +11049,7 @@ class BaseInput extends AuroElement {
10996
11049
 
10997
11050
  /**
10998
11051
  * Populates the `type` attribute on the input.
10999
- * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
11052
+ * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
11000
11053
  * @default 'text'
11001
11054
  */
11002
11055
  type: {
@@ -11021,7 +11074,7 @@ class BaseInput extends AuroElement {
11021
11074
 
11022
11075
  /**
11023
11076
  * Populates the `value` attribute on the input. Can also be read to retrieve the current value of the input.
11024
- * The format for this property should be ISO for `date` type inputs.
11077
+ * For `date` type inputs using a full date format (year/month/day), the `value` should be ISO (YYYY-MM-DD). Partial date formats use the display format.
11025
11078
  */
11026
11079
  value: {
11027
11080
  type: String
@@ -11034,7 +11087,7 @@ class BaseInput extends AuroElement {
11034
11087
  * @returns {Date|undefined}
11035
11088
  */
11036
11089
  get valueObject() {
11037
- return this._valueObject;
11090
+ return this.value && dateFormatter.isValidDate(this.value) ? dateFormatter.stringToDateInstance(this.value) : undefined;
11038
11091
  }
11039
11092
 
11040
11093
  /**
@@ -11042,7 +11095,7 @@ class BaseInput extends AuroElement {
11042
11095
  * @returns {Date|undefined}
11043
11096
  */
11044
11097
  get minObject() {
11045
- return this._minObject;
11098
+ return this.min && dateFormatter.isValidDate(this.min) ? dateFormatter.stringToDateInstance(this.min) : undefined;
11046
11099
  }
11047
11100
 
11048
11101
  /**
@@ -11050,33 +11103,63 @@ class BaseInput extends AuroElement {
11050
11103
  * @returns {Date|undefined}
11051
11104
  */
11052
11105
  get maxObject() {
11053
- return this._maxObject;
11106
+ return this.max && dateFormatter.isValidDate(this.max) ? dateFormatter.stringToDateInstance(this.max) : undefined;
11107
+ }
11108
+
11109
+ get format() {
11110
+ return this._format;
11054
11111
  }
11055
11112
 
11056
11113
  /**
11057
- * Internal setter for readonly date object properties.
11058
- * @private
11059
- * @param {'valueObject'|'minObject'|'maxObject'} propertyName - Public object property name.
11060
- * @param {Date|undefined} propertyValue - Value to assign.
11061
- * @returns {void}
11114
+ * Overrides LitElement's generated accessor so we can track whether the
11115
+ * consumer explicitly set `format`. Locale-derived updates use
11116
+ * `_setFormatFromLocale` instead, which skips this flag.
11062
11117
  */
11063
- setDateObjectProperty(propertyName, propertyValue) {
11064
- const internalPropertyName = `_${propertyName}`;
11065
- const previousValue = this[internalPropertyName];
11066
-
11067
- if (previousValue === propertyValue) {
11068
- return;
11069
- }
11118
+ set format(value) {
11119
+ const oldValue = this._format;
11120
+ this._format = value ? value.toLowerCase() : value;
11121
+ this._userSetFormat = Boolean(value);
11122
+ this.requestUpdate('format', oldValue);
11123
+ }
11070
11124
 
11071
- this[internalPropertyName] = propertyValue;
11072
- this.requestUpdate(propertyName, previousValue);
11125
+ /**
11126
+ * Sets format without marking it as user-set. Used by locale auto-derive
11127
+ * so that a subsequent locale change can still update the format.
11128
+ * @private
11129
+ * @param {string} value
11130
+ */
11131
+ _setFormatFromLocale(value) {
11132
+ const oldValue = this._format;
11133
+ this._format = value ? value.toLowerCase() : value;
11134
+ this.requestUpdate('format', oldValue);
11073
11135
  }
11074
11136
 
11075
11137
  connectedCallback() {
11076
11138
  super.connectedCallback();
11077
11139
 
11140
+ // Mark for query selectors when registered under a versioned tag (e.g. inside
11141
+ // a datepicker/combobox). Must run before parent components call validate() on
11142
+ // their inner inputs — the validation framework matches via tag-or-attribute,
11143
+ // and parents trigger validation during their own updated() cycle, which can
11144
+ // precede this input's firstUpdated().
11145
+ if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
11146
+ this.setAttribute('auro-input', '');
11147
+ }
11148
+
11078
11149
  this.locale = this.domHandler.getLocale(this);
11079
11150
  notifyOnLangChange(this);
11151
+
11152
+ // Pre-compute lengthForType and date-object fields so a parent (e.g. datepicker)
11153
+ // calling our validate() synchronously during its own updated() cycle sees
11154
+ // populated values. Without this, range validation silently no-ops because
11155
+ // `max.length === lengthForType` fails when lengthForType is still undefined.
11156
+ // Rebuild util here (constructor seeded with en-US default) so configureDataForType's
11157
+ // locale-derived format lookup uses the actual locale just resolved above.
11158
+ this.util = new AuroInputUtilities({
11159
+ locale: this.locale,
11160
+ format: this.format
11161
+ });
11162
+ this.configureDataForType();
11080
11163
  }
11081
11164
 
11082
11165
  disconnectedCallback() {
@@ -11096,10 +11179,6 @@ class BaseInput extends AuroElement {
11096
11179
  this.wrapperElement.addEventListener('click', this.handleClick);
11097
11180
  }
11098
11181
 
11099
- // add attribute for query selectors when auro-input is registered under a custom name
11100
- if (this.tagName.toLowerCase() !== 'auro-input') {
11101
- this.setAttribute('auro-input', true);
11102
- }
11103
11182
  this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
11104
11183
 
11105
11184
  // use validity message override if declared when initializing the component
@@ -11110,7 +11189,6 @@ class BaseInput extends AuroElement {
11110
11189
  this.setCustomHelpTextMessage();
11111
11190
  this.configureAutoFormatting();
11112
11191
  this.configureDataForType();
11113
- this.syncDateValues();
11114
11192
  }
11115
11193
 
11116
11194
  /**
@@ -11146,6 +11224,12 @@ class BaseInput extends AuroElement {
11146
11224
  return;
11147
11225
  }
11148
11226
 
11227
+ // While configureAutoFormatting is running, imask's internal updateControl
11228
+ // writes el.value to align display with the masked value. A synthetic input
11229
+ // event from that write would re-enter handleInput → processCreditCard mid-setup
11230
+ // and clobber a Lit value that was just pushed by the parent combobox.
11231
+ if (component._configuringMask) return;
11232
+
11149
11233
  // If all guard clauses are passed, dispatch the event
11150
11234
  const inputEvent = new InputEvent('input', {
11151
11235
  bubbles: true,
@@ -11162,7 +11246,7 @@ class BaseInput extends AuroElement {
11162
11246
 
11163
11247
  /**
11164
11248
  * @private
11165
- * @deprecated https://dev.azure.com/itsals/E_Retain_Content/_workitems/edit/1557296
11249
+ * @deprecated See https://dev.azure.com/itsals/E_Retain_Content/_workitems/edit/1557296.
11166
11250
  * @returns {void} Sets the default help text for the input.
11167
11251
  */
11168
11252
  setCustomHelpTextMessage() {
@@ -11180,6 +11264,13 @@ class BaseInput extends AuroElement {
11180
11264
 
11181
11265
  if (typeToI18n.includes(this.type)) {
11182
11266
  this.setCustomValidityForType = i18n(this.lang, this.type);
11267
+ // COVERAGE: this `else if` branch is unreachable in WTR. connectedCallback
11268
+ // (L682) calls configureDataForType, which at L1266-1268 assigns
11269
+ // `this.format = this.util.getDateMaskFromLocale().toLowerCase()` for any
11270
+ // type=date input whose `format` attribute is unset. That runs before
11271
+ // firstUpdated invokes setCustomHelpTextMessage, so `!this.format` is
11272
+ // always false here. Retained as a defensive fallback; the whole function
11273
+ // is @deprecated per AB#1557296 and slated for removal.
11183
11274
  } else if (!this.format && this.type === 'date') {
11184
11275
  this.setCustomValidityForType = i18n(this.lang, 'dateMMDDYYYY');
11185
11276
  } else if (this.dateFormatMap[this.format]) {
@@ -11196,12 +11287,10 @@ class BaseInput extends AuroElement {
11196
11287
  updated(changedProperties) {
11197
11288
  super.updated(changedProperties);
11198
11289
 
11199
- // When locale changes without an explicit format override, derive format from the new locale.
11200
- // Only runs if the current format is still the previous locale's default (not user-overridden).
11290
+ // When locale changes, auto-derive format unless the consumer explicitly set one.
11201
11291
  if (changedProperties.has('locale') && !changedProperties.has('format') && this.type === 'date') {
11202
- const previousLocaleFormat = getDateFormatFromLocale(changedProperties.get('locale'));
11203
- if (!this.format || this.format.toLowerCase() === previousLocaleFormat) {
11204
- this.format = getDateFormatFromLocale(this.locale);
11292
+ if (!this._userSetFormat) {
11293
+ this._setFormatFromLocale(getDateFormatFromLocale(this.locale));
11205
11294
  }
11206
11295
  }
11207
11296
 
@@ -11241,8 +11330,6 @@ class BaseInput extends AuroElement {
11241
11330
  this.configureDataForType();
11242
11331
  }
11243
11332
 
11244
- this.syncDateValues(changedProperties);
11245
-
11246
11333
  if (changedProperties.has('value')) {
11247
11334
  if (this.value && this.value.length > 0) {
11248
11335
  this.hasValue = true;
@@ -11264,7 +11351,16 @@ class BaseInput extends AuroElement {
11264
11351
 
11265
11352
  if (formattedValue !== this.inputElement.value) {
11266
11353
  this.skipNextProgrammaticInputEvent = true;
11267
- if (formattedValue) {
11354
+ if (this.maskInstance && this.type !== 'date') {
11355
+ // Route through the mask so its _value and el.value stay in lock-step
11356
+ // (set value calls updateControl which writes el.value = displayValue).
11357
+ // Writing el.value directly leaves the mask thinking displayValue is
11358
+ // stale; _saveSelection on the next focus/click then warns. Date is
11359
+ // excluded because its formattedValue can be raw ISO when the calendar
11360
+ // is invalid, and re-masking through mm/dd/yyyy would truncate it and
11361
+ // flip validity from patternMismatch to tooShort.
11362
+ this.maskInstance.value = formattedValue || '';
11363
+ } else if (formattedValue) {
11268
11364
  this.inputElement.value = formattedValue;
11269
11365
  } else {
11270
11366
  this.inputElement.value = '';
@@ -11304,127 +11400,85 @@ class BaseInput extends AuroElement {
11304
11400
  }));
11305
11401
  }
11306
11402
 
11307
-
11308
- /**
11309
- * Synchronizes the ISO string values and Date object representations for date-related properties.
11310
- * This keeps the model and display values aligned when either side changes.
11311
- *
11312
- * When a full date format is in use, this method updates `value`, `min`, and `max` from their corresponding
11313
- * Date objects or vice versa, based on which properties have changed. It only runs when the current configuration
11314
- * represents a full year/month/day date format.
11315
- *
11316
- * @param {Map<string, unknown>|undefined} [changedProperties=undefined] - Optional map of changed properties used to limit which values are synchronized.
11317
- * @returns {void}
11318
- * @private
11319
- */
11320
- syncDateValues(changedProperties = undefined) {
11321
- if (!this.util.isFullDateFormat(this.type, this.format)) {
11322
- return;
11323
- }
11324
-
11325
- this.syncSingleDateValue(changedProperties, 'valueObject', 'value');
11326
- this.syncSingleDateValue(changedProperties, 'minObject', 'min');
11327
- this.syncSingleDateValue(changedProperties, 'maxObject', 'max');
11328
- }
11329
-
11330
- /**
11331
- * Synchronizes one date object/string property pair.
11332
- * @private
11333
- * @param {Map<string, unknown>|undefined} changedProperties - Map of changed properties from Lit.
11334
- * @param {string} objectProperty - Date object property name.
11335
- * @param {string} valueProperty - ISO string property name.
11336
- * @returns {void}
11337
- */
11338
- syncSingleDateValue(changedProperties, objectProperty, valueProperty) {
11339
- const objectPropertyChanged = !changedProperties || changedProperties.has(objectProperty);
11340
-
11341
- // objectProperty wins over valueProperty when both changed
11342
- if (objectPropertyChanged && this[objectProperty]) {
11343
- this[valueProperty] = dateFormatter.toISOFormatString(this[objectProperty]);
11344
- return;
11345
- }
11346
-
11347
- const valuePropertyChanged = !changedProperties || changedProperties.has(valueProperty);
11348
- if (!valuePropertyChanged) {
11349
- return;
11350
- }
11351
-
11352
- // when value is newly set to the same ISO string that corresponds to the existing Date object, do not clear the Date object (avoid unnecessary updates)
11353
- if (
11354
- changedProperties &&
11355
- valueProperty === 'value' &&
11356
- changedProperties.get('value') === undefined &&
11357
- this[objectProperty] instanceof Date &&
11358
- this[valueProperty] === dateFormatter.toISOFormatString(this[objectProperty])
11359
- ) {
11360
- return;
11361
- }
11362
-
11363
- if (dateFormatter.isValidDate(this[valueProperty])) {
11364
- this.setDateObjectProperty(objectProperty, dateFormatter.stringToDateInstance(this[valueProperty]));
11365
- } else {
11366
- this.setDateObjectProperty(objectProperty, undefined);
11367
- }
11368
- }
11369
-
11370
11403
  /**
11371
11404
  * Sets up IMasks and logic based on auto-formatting requirements.
11372
11405
  * @private
11373
11406
  * @returns {void}
11374
11407
  */
11375
11408
  configureAutoFormatting() {
11376
- if (this.maskInstance) {
11377
- this.maskInstance.destroy();
11378
- }
11379
-
11380
- // Pass new format to util
11381
- this.util.updateFormat(this.format);
11409
+ // _configuringMask gates two things: external re-entry into this method
11410
+ // while setup is mid-flight (from property changes that call back here),
11411
+ // and the accept/complete listeners below — both need to ignore the mask
11412
+ // events fired by our own value-restore step.
11413
+ if (this._configuringMask) return;
11414
+ this._configuringMask = true;
11415
+ try {
11416
+ // Destroy any prior mask so IMask can attach fresh under the new format.
11417
+ // Null the reference too — if the new maskOptions.mask is falsy (e.g.
11418
+ // type switched from credit-card to text) the IMask() reassignment
11419
+ // below is skipped, and downstream writes at line ~823 would otherwise
11420
+ // route through the destroyed instance.
11421
+ if (this.maskInstance) {
11422
+ this.maskInstance.destroy();
11423
+ this.maskInstance = null;
11424
+ }
11382
11425
 
11383
- const maskOptions = this.util.getMaskOptions(this.type, this.format);
11426
+ this.util.updateFormat(this.format);
11384
11427
 
11385
- if (this.inputElement && maskOptions.mask) {
11428
+ const maskOptions = this.util.getMaskOptions(this.type, this.format);
11429
+
11430
+ if (this.inputElement && maskOptions.mask) {
11431
+ // Capture the current display so it can be re-applied after IMask
11432
+ // attaches. The restore at the bottom goes through maskInstance.value
11433
+ // (not inputElement.value directly) so the mask's internal state and
11434
+ // the input's displayed text stay in lock-step.
11435
+ let existingValue = this.inputElement.value;
11436
+
11437
+ // Format-change case (e.g. locale switch): existingValue is the OLD
11438
+ // mask's display string and may not parse under the new mask. When
11439
+ // we have a valid date model, rebuild the display from valueObject
11440
+ // (the canonical source) using the new mask's format function.
11441
+ if (
11442
+ this.util.isFullDateFormat(this.type, this.format) &&
11443
+ this.value &&
11444
+ this.valueObject &&
11445
+ typeof maskOptions.format === 'function'
11446
+ ) {
11447
+ existingValue = maskOptions.format(this.valueObject);
11448
+ }
11386
11449
 
11387
- // Stash and clear any existing value before IMask init.
11388
- // IMask's constructor processes the current input value which requires
11389
- // selection state clearing first avoids that scenario entirely.
11390
- // When the format changes (e.g. locale switch) and we have a valid ISO
11391
- // model value, compute the display string for the NEW format instead of
11392
- // re-using the old display string, which may be invalid in the new mask.
11393
- let existingValue = this.inputElement.value;
11394
- if (
11395
- this.util.isFullDateFormat(this.type, this.format) &&
11396
- this.value &&
11397
- dateFormatter.isValidDate(this.value) &&
11398
- this.valueObject instanceof Date &&
11399
- !Number.isNaN(this.valueObject.getTime()) &&
11400
- typeof maskOptions.format === 'function'
11401
- ) {
11402
- existingValue = maskOptions.format(this.valueObject);
11403
- }
11450
+ // Clear before IMask attaches so the constructor seeds an empty
11451
+ // internal value. Otherwise IMask reads the stale unmasked string
11452
+ // and emits a spurious 'accept' before the restore below runs.
11453
+ this.skipNextProgrammaticInputEvent = true;
11454
+ this.inputElement.value = '';
11404
11455
 
11405
- this.skipNextProgrammaticInputEvent = true;
11406
- this.inputElement.value = '';
11456
+ this.maskInstance = IMask(this.inputElement, maskOptions);
11407
11457
 
11408
- this.maskInstance = IMask(this.inputElement, maskOptions);
11458
+ // Mask fires 'accept' on every value change, including the restore
11459
+ // step below. Skip events fired during configureAutoFormatting so
11460
+ // we don't overwrite a value the parent just pushed.
11461
+ this.maskInstance.on('accept', () => {
11462
+ if (this._configuringMask) return;
11463
+ this.value = this.util.toModelValue(this.maskInstance.value, this.format);
11464
+ });
11409
11465
 
11410
- this.maskInstance.on('accept', () => {
11411
- this.value = this.util.toModelValue(this.maskInstance.value, this.format);
11412
- if (this.type === "date") {
11413
- this._rawMaskValue = this.maskInstance.value;
11414
- }
11415
- });
11466
+ // Mask fires 'complete' on the restore step below for any value that
11467
+ // happens to be a complete match. Same setup-suppression as 'accept'.
11468
+ this.maskInstance.on('complete', () => {
11469
+ if (this._configuringMask) return;
11470
+ this.value = this.util.toModelValue(this.maskInstance.value, this.format);
11471
+ });
11416
11472
 
11417
- this.maskInstance.on('complete', () => {
11418
- this.value = this.util.toModelValue(this.maskInstance.value, this.format);
11419
- if (this.type === "date") {
11420
- this._rawMaskValue = this.maskInstance.value;
11473
+ // Write existingValue through the mask (not the input directly) so
11474
+ // the mask reformats it under the new rules and keeps its internal
11475
+ // _value aligned with the input's displayed text.
11476
+ if (existingValue) {
11477
+ this.maskInstance.value = existingValue;
11421
11478
  }
11422
- });
11423
-
11424
- // Restore the stashed value through IMask so it's properly masked
11425
- if (existingValue) {
11426
- this.maskInstance.value = existingValue;
11427
11479
  }
11480
+ } finally {
11481
+ this._configuringMask = false;
11428
11482
  }
11429
11483
  }
11430
11484
 
@@ -11434,14 +11488,17 @@ class BaseInput extends AuroElement {
11434
11488
  * @returns {void}
11435
11489
  */
11436
11490
  notifyValueChanged() {
11437
- let inputEvent = null;
11438
-
11439
- inputEvent = new Event('input', {
11491
+ // This echoes Lit's reactive value update (and handleClickClear's
11492
+ // programmatic clear) — it is NOT a fresh user-input event. Mark it
11493
+ // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
11494
+ // it from genuine user typing and skip clobbering their own
11495
+ // programmatic state during init-time renders.
11496
+ const inputEvent = new Event('input', {
11440
11497
  bubbles: true,
11441
11498
  composed: true,
11442
11499
  });
11500
+ inputEvent.isProgrammatic = true;
11443
11501
 
11444
- // Dispatched event to alert outside shadow DOM context of event firing.
11445
11502
  this.dispatchEvent(inputEvent);
11446
11503
  }
11447
11504
 
@@ -11498,6 +11555,38 @@ class BaseInput extends AuroElement {
11498
11555
  this.touched = true;
11499
11556
  this.validation.validate(this);
11500
11557
  }
11558
+
11559
+ // Prevents cursor jumping in Safari. Setting `this.value` triggers a Lit
11560
+ // update that can re-render the input and reset the native cursor; we
11561
+ // capture the caret position before that update commits and restore it
11562
+ // via `setSelectionRange` once the update has flushed. Gated on
11563
+ // `setSelectionInputTypes` so credit-card (and other masked types whose
11564
+ // formatter manages the cursor itself) doesn't get a competing write.
11565
+ // Capture the caret position INSIDE the gate — reading `selectionStart`
11566
+ // on input types that don't support text selection (number, email in
11567
+ // some browsers) throws InvalidStateError, which would crash all input
11568
+ // handling. Wrap the read in try/catch belt-and-suspenders even though
11569
+ // the gated types currently support it, since the list is a public
11570
+ // property a consumer could mutate.
11571
+ if (this.setSelectionInputTypes.includes(this.type)) {
11572
+ let selectionStart = null;
11573
+ try {
11574
+ ({ selectionStart } = this.inputElement);
11575
+ } catch {
11576
+ return;
11577
+ }
11578
+ if (typeof selectionStart !== 'number') {
11579
+ return;
11580
+ }
11581
+ this.updateComplete.then(() => {
11582
+ try {
11583
+ this.inputElement.setSelectionRange(selectionStart, selectionStart);
11584
+ } catch {
11585
+ // Some input types (number/email in certain UAs) throw on
11586
+ // setSelectionRange; swallow and let the native cursor stand.
11587
+ }
11588
+ });
11589
+ }
11501
11590
  }
11502
11591
 
11503
11592
  /**
@@ -11586,7 +11675,6 @@ class BaseInput extends AuroElement {
11586
11675
  */
11587
11676
  reset() {
11588
11677
  this.value = undefined;
11589
- this.setDateObjectProperty('valueObject', undefined);
11590
11678
  this.validation.reset(this);
11591
11679
  }
11592
11680
 
@@ -11595,7 +11683,6 @@ class BaseInput extends AuroElement {
11595
11683
  */
11596
11684
  clear() {
11597
11685
  this.value = undefined;
11598
- this.setDateObjectProperty('valueObject', undefined);
11599
11686
  }
11600
11687
 
11601
11688
  /**
@@ -11620,8 +11707,7 @@ class BaseInput extends AuroElement {
11620
11707
 
11621
11708
  // Set default date format if type=date and no format is defined
11622
11709
  if (this.type === "date" && !this.format) {
11623
- // Use locale to determine default date format
11624
- this.format = this.util.getDateMaskFromLocale().toLowerCase();
11710
+ this._setFormatFromLocale(this.util.getDateMaskFromLocale().toLowerCase());
11625
11711
  this.util.updateFormat(this.format);
11626
11712
  }
11627
11713
  }
@@ -11633,7 +11719,7 @@ class BaseInput extends AuroElement {
11633
11719
  */
11634
11720
  get placeholderStr() {
11635
11721
  if (!this.placeholder && this.type === 'date') {
11636
- return this.format ? this.format.toUpperCase() : 'MM/DD/YYYY';
11722
+ return this.format.toUpperCase();
11637
11723
  }
11638
11724
  return this.placeholder || "";
11639
11725
  }
@@ -11650,7 +11736,7 @@ class BaseInput extends AuroElement {
11650
11736
  const creditCard = this.matchInputValueToCreditCard();
11651
11737
  const previousFormat = this.format;
11652
11738
 
11653
- this.format = creditCard.maskFormat;
11739
+ this._setFormatFromLocale(creditCard.maskFormat);
11654
11740
 
11655
11741
  this.maxLength = creditCard.formatLength;
11656
11742
  this.minLength = creditCard.formatMinLength;
@@ -11670,7 +11756,7 @@ class BaseInput extends AuroElement {
11670
11756
  /**
11671
11757
  * Function to support credit-card feature type.
11672
11758
  * @private
11673
- * @deprecated https://dev.azure.com/itsals/E_Retain_Content/_workitems/edit/1557296
11759
+ * @deprecated See https://dev.azure.com/itsals/E_Retain_Content/_workitems/edit/1557296.
11674
11760
  * @returns {object} JSON with data for credit card formatting.
11675
11761
  */
11676
11762
  matchInputValueToCreditCard() {
@@ -11711,10 +11797,10 @@ class BaseInput extends AuroElement {
11711
11797
  },
11712
11798
  {
11713
11799
  name: 'Diners club',
11714
- regex: /^(?<num>36|38)\d{0}/u,
11800
+ regex: /^(?<num>30[0-5]|36|38)\d{0}/u,
11715
11801
  formatLength: 16,
11716
11802
  errorMessage: CreditCardValidationMessage,
11717
- cardIcon: 'credit-card',
11803
+ cardIcon: 'cc-dinersclub',
11718
11804
  maskFormat: "0000 000000 0000"
11719
11805
  },
11720
11806
  {
@@ -12124,7 +12210,7 @@ class AuroHelpText extends LitElement {
12124
12210
  }
12125
12211
  }
12126
12212
 
12127
- var formkitVersion = '202606191810';
12213
+ var formkitVersion = '202607221815';
12128
12214
 
12129
12215
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12130
12216
  // See LICENSE in the project root for license information.
@@ -12410,20 +12496,50 @@ class AuroInput extends BaseInput {
12410
12496
  * @returns {void}
12411
12497
  */
12412
12498
  checkDisplayValueSlotChange() {
12413
- let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
12414
-
12415
- // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
12416
- if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
12417
- nodes = nodes[0].assignedNodes();
12499
+ const slot = this.shadowRoot?.querySelector('slot[name="displayValue"]');
12500
+ if (!slot) {
12501
+ // Shadow slot not yet rendered fall back to checking light-DOM
12502
+ // children so hasDisplayValueContent isn't stuck false when called
12503
+ // before firstUpdated (e.g. from auro-combobox during mount).
12504
+ // Check for any element (including custom elements like <auro-icon>
12505
+ // that render via shadow DOM with no text content).
12506
+ const lightDomNodes = Array.from(this.querySelectorAll('[slot="displayValue"]:not(slot)'));
12507
+ const hasContent = lightDomNodes.some((node) => (
12508
+ node.textContent.trim().length > 0 ||
12509
+ node.children.length > 0 ||
12510
+ node.shadowRoot !== null
12511
+ ));
12512
+ if (this.hasDisplayValueContent !== hasContent) {
12513
+ this.hasDisplayValueContent = hasContent;
12514
+ this.requestUpdate();
12515
+ }
12516
+ return;
12418
12517
  }
12419
-
12420
- let hasContent = false;
12421
-
12422
- if (nodes.length > 0) {
12423
- hasContent = true;
12518
+ const nodes = slot.assignedNodes({ flatten: true });
12519
+
12520
+ // Check for actual visible content, not just node existence.
12521
+ // An empty <span slot="displayValue"></span> forwarded from the
12522
+ // consumer should not be treated as "has content" — it causes the
12523
+ // displayValue wrapper to render (with hasContent class) but show
12524
+ // nothing, blocking the combobox's synthetic displayValue from
12525
+ // being visible on preset/deeplink load.
12526
+ // Custom elements (e.g. <auro-icon>) that render via shadow DOM are
12527
+ // treated as content even when they have no text or light-DOM children.
12528
+ const hasContent = nodes.some((node) => {
12529
+ if (node.nodeType === Node.TEXT_NODE) {
12530
+ return node.textContent.trim().length > 0;
12531
+ }
12532
+ if (node.nodeType === Node.ELEMENT_NODE) {
12533
+ return node.textContent.trim().length > 0 ||
12534
+ node.children.length > 0 ||
12535
+ node.shadowRoot !== null;
12536
+ }
12537
+ return false;
12538
+ });
12539
+ if (this.hasDisplayValueContent !== hasContent) {
12540
+ this.hasDisplayValueContent = hasContent;
12541
+ this.requestUpdate();
12424
12542
  }
12425
-
12426
- this.hasDisplayValueContent = hasContent;
12427
12543
  }
12428
12544
 
12429
12545
  firstUpdated() {
@@ -12447,7 +12563,7 @@ class AuroInput extends BaseInput {
12447
12563
  /**
12448
12564
  * Determines default help text string.
12449
12565
  * @private
12450
- * @deprecated https://dev.azure.com/itsals/E_Retain_Content/_workitems/edit/1557296
12566
+ * @deprecated See https://dev.azure.com/itsals/E_Retain_Content/_workitems/edit/1557296.
12451
12567
  * @returns {string} Evaluates pre-determined help text.
12452
12568
  */
12453
12569
  getHelpText() {
@@ -12627,6 +12743,7 @@ class AuroInput extends BaseInput {
12627
12743
  <${this.buttonTag}
12628
12744
  @click="${this.handleClickShowPassword}"
12629
12745
  appearance="${this.onDark ? 'inverse' : this.appearance}"
12746
+ aria-pressed="${this.showPassword ? 'true' : 'false'}"
12630
12747
  class="notificationBtn passwordBtn"
12631
12748
  shape="circle"
12632
12749
  size="sm"
@@ -12700,25 +12817,29 @@ class AuroInput extends BaseInput {
12700
12817
  * @returns {html} - Returns HTML for the help text and error message.
12701
12818
  */
12702
12819
  renderHtmlHelpText() {
12820
+ // Single `<p>` with stable identity across validity transitions —
12821
+ // previously two distinct templates (valid vs invalid) caused Lit to
12822
+ // replace the node entirely on a flip, and VoiceOver wouldn't
12823
+ // re-announce because the live-region element it was watching had been
12824
+ // removed and a new one inserted. Keeping one node means the `role`,
12825
+ // `aria-live`, and text content all change in-place, which AT does
12826
+ // observe and announce.
12827
+ const isError = this.validity && this.validity !== 'valid';
12703
12828
  return html$1`
12704
- ${!this.validity || this.validity === undefined || this.validity === 'valid'
12705
- ? html$1`
12706
- <${this.helpTextTag}
12707
- appearance="${this.onDark ? 'inverse' : this.appearance}">
12708
- <p id="${this.uniqueId}" part="helpText">
12709
- <slot name="helpText">${this.getHelpText()}</slot>
12710
- </p>
12711
- </${this.helpTextTag}>
12712
- `
12713
- : html$1`
12714
- <${this.helpTextTag} error
12715
- appearance="${this.onDark ? 'inverse' : this.appearance}">
12716
- <p id="${this.uniqueId}" role="alert" aria-live="assertive" part="helpText">
12717
- ${this.errorMessage}
12718
- </p>
12719
- </${this.helpTextTag}>
12720
- `
12829
+ <${this.helpTextTag}
12830
+ appearance="${this.onDark ? 'inverse' : this.appearance}"
12831
+ ?error=${isError}>
12832
+ <p
12833
+ id="${this.uniqueId}"
12834
+ part="helpText"
12835
+ role="${ifDefined(isError ? 'alert' : undefined)}"
12836
+ aria-live="${ifDefined(isError ? 'assertive' : undefined)}">
12837
+ ${isError
12838
+ ? this.errorMessage
12839
+ : html$1`<slot name="helpText">${this.getHelpText()}</slot>`
12721
12840
  }
12841
+ </p>
12842
+ </${this.helpTextTag}>
12722
12843
  `;
12723
12844
  }
12724
12845