@eunomia/elements 1.0.0-beta.5 → 1.0.0-beta.7

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 (516) hide show
  1. package/README.md +2 -2
  2. package/dist/breakpoints.d.ts +37 -10
  3. package/dist/breakpoints.js +38 -10
  4. package/dist/cdn/components/chunks/{chunk-MMLIPCOY.js → chunk-22D3SRFR.js} +1 -1
  5. package/dist/cdn/components/chunks/chunk-36KLGY6U.js +209 -0
  6. package/dist/cdn/components/chunks/chunk-3BMACIDO.js +1 -0
  7. package/dist/cdn/components/chunks/{chunk-IDKZKLJR.js → chunk-3PNGQEG4.js} +24 -11
  8. package/dist/cdn/components/chunks/{chunk-NBIENHLV.js → chunk-5XPOGBPL.js} +18 -18
  9. package/dist/cdn/components/chunks/chunk-624VJYNA.js +1 -0
  10. package/dist/cdn/components/chunks/chunk-62RLISRD.js +1 -0
  11. package/dist/cdn/components/chunks/{chunk-6ETDXUH2.js → chunk-6FYW5TQU.js} +7 -7
  12. package/dist/cdn/components/chunks/chunk-AK2DIJX7.js +1 -0
  13. package/dist/cdn/components/chunks/chunk-B5XMGWM7.js +10 -0
  14. package/dist/cdn/components/chunks/chunk-BKZGTCMF.js +1 -0
  15. package/dist/cdn/components/chunks/{chunk-GW3VP2L7.js → chunk-BO3JOEWM.js} +1 -1
  16. package/dist/cdn/components/chunks/chunk-BVASCT2V.js +109 -0
  17. package/dist/cdn/components/chunks/{chunk-DKOPI7QA.js → chunk-DGI7TKCU.js} +83 -68
  18. package/dist/cdn/components/chunks/chunk-EUWUDCBZ.js +1 -0
  19. package/dist/cdn/components/chunks/{chunk-P32B7BFD.js → chunk-FF3I7C3C.js} +15 -15
  20. package/dist/cdn/components/chunks/{chunk-74AOAB4X.js → chunk-FOILAXLL.js} +6 -5
  21. package/dist/cdn/components/chunks/{chunk-LGLQ36QB.js → chunk-GDBPWZN6.js} +1 -1
  22. package/dist/cdn/components/chunks/chunk-GVS6IUKC.js +1 -0
  23. package/dist/cdn/components/chunks/chunk-GWLD2I3P.js +8 -0
  24. package/dist/cdn/components/chunks/{chunk-JRGM3W7I.js → chunk-I4ERDXSM.js} +9 -4
  25. package/dist/cdn/components/chunks/{chunk-AIS3UICU.js → chunk-J3SZBXM6.js} +11 -7
  26. package/dist/cdn/components/chunks/{chunk-5XJGYXW7.js → chunk-LVKMAHMU.js} +11 -1
  27. package/dist/cdn/components/chunks/{chunk-SD2WHGPF.js → chunk-MQQJ6DID.js} +1 -1
  28. package/dist/cdn/components/chunks/{chunk-A4EQSU36.js → chunk-O7PHBLH2.js} +1 -1
  29. package/dist/cdn/components/chunks/chunk-PD62MBOJ.js +1 -0
  30. package/dist/cdn/components/chunks/{chunk-5EVP7YNE.js → chunk-PPCHQG7P.js} +1 -1
  31. package/dist/cdn/components/chunks/{chunk-MPQP4R54.js → chunk-PXF554MD.js} +10 -9
  32. package/dist/cdn/components/chunks/chunk-QL5GSW2A.js +1 -0
  33. package/dist/cdn/components/chunks/{chunk-5XJLIHAU.js → chunk-QXQ25SQS.js} +24 -20
  34. package/dist/cdn/components/chunks/chunk-SMTIDNGW.js +1 -0
  35. package/dist/cdn/components/chunks/{chunk-PED5ATYN.js → chunk-SVGWCKWT.js} +2 -2
  36. package/dist/cdn/components/chunks/{chunk-2XASWWKR.js → chunk-TFTRCIIK.js} +9 -8
  37. package/dist/cdn/components/chunks/chunk-TLBXTBMM.js +46 -0
  38. package/dist/cdn/components/chunks/chunk-UVHVQRPT.js +1 -0
  39. package/dist/cdn/components/chunks/{chunk-L65WUTXM.js → chunk-UYZR4JXZ.js} +12 -7
  40. package/dist/cdn/components/chunks/chunk-VG6NAAIV.js +1 -0
  41. package/dist/cdn/components/chunks/chunk-VJCNHMQZ.js +10 -0
  42. package/dist/cdn/components/chunks/chunk-WW4BTWMH.js +1 -0
  43. package/dist/cdn/components/chunks/{chunk-XH6NREVZ.js → chunk-YITWLCD3.js} +1 -1
  44. package/dist/cdn/components/chunks/{chunk-OW7XKDCH.js → chunk-Z3OFIE7S.js} +16 -16
  45. package/dist/cdn/components/chunks/{chunk-BQHYZB2W.js → chunk-ZBN4HTWP.js} +1 -1
  46. package/dist/cdn/components/eun-alert.js +33 -18
  47. package/dist/cdn/components/eun-animate.js +14 -10
  48. package/dist/cdn/components/eun-badge.js +2 -2
  49. package/dist/cdn/components/eun-breadcrumb.js +25 -41
  50. package/dist/cdn/components/eun-button.js +1 -1
  51. package/dist/cdn/components/eun-calendar.js +67 -65
  52. package/dist/cdn/components/eun-card.js +34 -19
  53. package/dist/cdn/components/eun-carousel.js +76 -42
  54. package/dist/cdn/components/eun-check-card.js +13 -6
  55. package/dist/cdn/components/eun-checkbox-list.js +11 -8
  56. package/dist/cdn/components/eun-checkbox.js +1 -1
  57. package/dist/cdn/components/eun-chip.js +3 -3
  58. package/dist/cdn/components/eun-collapse.js +56 -27
  59. package/dist/cdn/components/eun-color-picker.js +79 -86
  60. package/dist/cdn/components/eun-counter.js +16 -15
  61. package/dist/cdn/components/eun-date-picker.js +71 -67
  62. package/dist/cdn/components/eun-description-list.js +152 -0
  63. package/dist/cdn/components/eun-divider.js +3 -3
  64. package/dist/cdn/components/eun-drawer.js +34 -20
  65. package/dist/cdn/components/eun-dropdown-button.js +1 -1
  66. package/dist/cdn/components/eun-dropdown-item.js +6 -5
  67. package/dist/cdn/components/eun-fab.js +17 -16
  68. package/dist/cdn/components/eun-icon.js +1 -1
  69. package/dist/cdn/components/eun-image-card.js +79 -22
  70. package/dist/cdn/components/eun-image-carousel.js +92 -47
  71. package/dist/cdn/components/eun-infinite-list.js +23 -11
  72. package/dist/cdn/components/eun-input-file.js +20 -19
  73. package/dist/cdn/components/eun-input-phone.js +17 -16
  74. package/dist/cdn/components/eun-input.js +1 -1
  75. package/dist/cdn/components/eun-label.js +4 -4
  76. package/dist/cdn/components/eun-link.js +78 -29
  77. package/dist/cdn/components/eun-loader.js +1 -1
  78. package/dist/cdn/components/eun-modal.js +27 -20
  79. package/dist/cdn/components/eun-pagination.js +24 -19
  80. package/dist/cdn/components/eun-password-strength.js +19 -11
  81. package/dist/cdn/components/eun-progress-bar.js +13 -5
  82. package/dist/cdn/components/eun-radio-card.js +16 -9
  83. package/dist/cdn/components/eun-radio-list.js +12 -9
  84. package/dist/cdn/components/eun-radio.js +1 -1
  85. package/dist/cdn/components/eun-rating.js +276 -0
  86. package/dist/cdn/components/eun-scheduler-event-editor.js +10 -10
  87. package/dist/cdn/components/eun-scheduler-event.js +1 -1
  88. package/dist/cdn/components/eun-scheduler.js +27 -27
  89. package/dist/cdn/components/eun-search.js +24 -25
  90. package/dist/cdn/components/eun-select.js +32 -31
  91. package/dist/cdn/components/eun-sidebar.js +40 -24
  92. package/dist/cdn/components/eun-skeleton.js +1 -1
  93. package/dist/cdn/components/eun-slider.js +15 -14
  94. package/dist/cdn/components/eun-sliding-card.js +8 -4
  95. package/dist/cdn/components/eun-step.js +22 -10
  96. package/dist/cdn/components/eun-stepper.js +41 -30
  97. package/dist/cdn/components/eun-switch.js +10 -8
  98. package/dist/cdn/components/eun-tab-group.js +24 -19
  99. package/dist/cdn/components/eun-tab-panel.js +11 -3
  100. package/dist/cdn/components/eun-tab.js +1 -1
  101. package/dist/cdn/components/eun-table-action-bar.js +1 -1
  102. package/dist/cdn/components/eun-table.js +572 -31
  103. package/dist/cdn/components/eun-tag.js +13 -7
  104. package/dist/cdn/components/eun-textarea.js +34 -29
  105. package/dist/cdn/components/eun-time-picker.js +24 -21
  106. package/dist/cdn/components/eun-toast.js +51 -22
  107. package/dist/cdn/components/eun-toggle-group.js +57 -36
  108. package/dist/cdn/components/eun-toggle-item.js +16 -15
  109. package/dist/cdn/components/eun-toggle.js +12 -10
  110. package/dist/cdn/components/eun-toolbar.js +64 -54
  111. package/dist/cdn/components/eun-tooltip.js +30 -14
  112. package/dist/cdn/styles/breakpoints.scss +8 -0
  113. package/dist/cdn/styles/eunomia-grid.scss +6 -0
  114. package/dist/cdn/styles/eunomia-themes.css +1 -1
  115. package/dist/cdn/styles/themes/eunomia-theme.css +1 -1
  116. package/dist/cdn/styles/themes/eunomia-theme.scss +4 -3
  117. package/dist/cdn/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  118. package/dist/cdn/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  119. package/dist/cdn/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  120. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  121. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  122. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.css +1 -1
  123. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  124. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  125. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  126. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.css +1 -1
  127. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  128. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  129. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  130. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.css +1 -1
  131. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  132. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  133. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  134. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.css +1 -1
  135. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  136. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  137. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  138. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.css +1 -1
  139. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  140. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  141. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  142. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.css +1 -1
  143. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  144. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  145. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  146. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.css +1 -1
  147. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  148. package/dist/cdn/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  149. package/dist/cdn/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  150. package/dist/cdn/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  151. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  152. package/dist/cdn/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  153. package/dist/cdn/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  154. package/dist/cdn/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  155. package/dist/components/action/button/button.d.ts +9 -3
  156. package/dist/components/action/button/button.js +10 -4
  157. package/dist/components/action/button/button.styles.js +61 -41
  158. package/dist/components/action/dropdown-button/dropdown-button.d.ts +2 -2
  159. package/dist/components/action/dropdown-button/dropdown-button.js +21 -15
  160. package/dist/components/action/dropdown-button/dropdown-button.styles.js +3 -2
  161. package/dist/components/action/dropdown-button/dropdown-item.js +5 -6
  162. package/dist/components/action/dropdown-button/dropdown-item.styles.js +3 -2
  163. package/dist/components/action/fab/fab.styles.js +14 -13
  164. package/dist/components/action/link/link.d.ts +7 -3
  165. package/dist/components/action/link/link.js +11 -7
  166. package/dist/components/action/link/link.styles.js +66 -15
  167. package/dist/components/action/shared-styles/button-palette.styles.js +15 -15
  168. package/dist/components/action/toggle/toggle-group.d.ts +2 -0
  169. package/dist/components/action/toggle/toggle-group.js +6 -4
  170. package/dist/components/action/toggle/toggle-group.styles.d.ts +2 -0
  171. package/dist/components/action/toggle/toggle-group.styles.js +46 -23
  172. package/dist/components/action/toggle/toggle-item.styles.js +13 -12
  173. package/dist/components/action/toggle/toggle.d.ts +2 -0
  174. package/dist/components/action/toggle/toggle.js +3 -1
  175. package/dist/components/action/toggle/toggle.styles.d.ts +2 -0
  176. package/dist/components/action/toggle/toggle.styles.js +12 -8
  177. package/dist/components/alert/alert/alert.d.ts +11 -7
  178. package/dist/components/alert/alert/alert.js +13 -14
  179. package/dist/components/alert/alert/alert.styles.js +32 -15
  180. package/dist/components/alert/drawer/drawer.d.ts +8 -6
  181. package/dist/components/alert/drawer/drawer.js +12 -14
  182. package/dist/components/alert/drawer/drawer.styles.js +26 -10
  183. package/dist/components/alert/modal/modal.d.ts +13 -11
  184. package/dist/components/alert/modal/modal.js +17 -27
  185. package/dist/components/alert/modal/modal.styles.js +16 -7
  186. package/dist/components/alert/toast/toast.d.ts +9 -5
  187. package/dist/components/alert/toast/toast.js +11 -13
  188. package/dist/components/alert/toast/toast.styles.js +49 -18
  189. package/dist/components/content/badge/badge.js +2 -2
  190. package/dist/components/content/card/card.d.ts +7 -3
  191. package/dist/components/content/card/card.js +8 -4
  192. package/dist/components/content/card/card.styles.js +28 -13
  193. package/dist/components/content/card/image-card.d.ts +60 -6
  194. package/dist/components/content/card/image-card.js +120 -11
  195. package/dist/components/content/card/image-card.styles.js +66 -15
  196. package/dist/components/content/card/sliding-card.d.ts +2 -0
  197. package/dist/components/content/card/sliding-card.js +2 -0
  198. package/dist/components/content/card/sliding-card.styles.js +5 -1
  199. package/dist/components/content/chip/chip.d.ts +4 -4
  200. package/dist/components/content/chip/chip.js +8 -8
  201. package/dist/components/content/collapse/collapse.d.ts +10 -1
  202. package/dist/components/content/collapse/collapse.js +12 -2
  203. package/dist/components/content/collapse/collapse.styles.d.ts +10 -1
  204. package/dist/components/content/collapse/collapse.styles.js +56 -18
  205. package/dist/components/content/description-list/description-list.d.ts +87 -0
  206. package/dist/components/content/description-list/description-list.js +107 -0
  207. package/dist/components/content/description-list/description-list.styles.d.ts +1 -0
  208. package/dist/components/content/description-list/description-list.styles.js +185 -0
  209. package/dist/components/content/icon/icon.d.ts +5 -0
  210. package/dist/components/content/icon/icon.js +5 -0
  211. package/dist/components/content/icon/icon.style.d.ts +2 -0
  212. package/dist/components/content/icon/icon.style.js +8 -1
  213. package/dist/components/content/image-carousel/image-carousel.d.ts +30 -19
  214. package/dist/components/content/image-carousel/image-carousel.js +58 -55
  215. package/dist/components/content/image-carousel/image-carousel.styles.js +69 -30
  216. package/dist/components/content/password-strength/password-strength.d.ts +21 -6
  217. package/dist/components/content/password-strength/password-strength.js +37 -16
  218. package/dist/components/content/password-strength/password-strength.styles.js +9 -1
  219. package/dist/components/content/progress-bar/progress-bar.styles.js +12 -4
  220. package/dist/components/content/shared-styles/card-link.styles.js +4 -3
  221. package/dist/components/content/shared-styles/tone-surface.styles.d.ts +5 -0
  222. package/dist/components/content/shared-styles/tone-surface.styles.js +19 -14
  223. package/dist/components/content/tag/tag.d.ts +4 -0
  224. package/dist/components/content/tag/tag.js +6 -2
  225. package/dist/components/content/tag/tag.styles.js +14 -4
  226. package/dist/components/content/tooltip/tooltip.d.ts +3 -2
  227. package/dist/components/content/tooltip/tooltip.js +12 -19
  228. package/dist/components/content/tooltip/tooltip.styles.js +25 -7
  229. package/dist/components/form/checkbox/check-card.d.ts +5 -1
  230. package/dist/components/form/checkbox/check-card.js +5 -1
  231. package/dist/components/form/checkbox/check-card.styles.js +13 -4
  232. package/dist/components/form/checkbox/checkbox-list.d.ts +21 -1
  233. package/dist/components/form/checkbox/checkbox-list.js +50 -17
  234. package/dist/components/form/checkbox/checkbox.d.ts +5 -1
  235. package/dist/components/form/checkbox/checkbox.js +7 -2
  236. package/dist/components/form/checkbox/checkbox.styles.js +5 -4
  237. package/dist/components/form/color-picker/color-picker.d.ts +48 -29
  238. package/dist/components/form/color-picker/color-picker.js +85 -71
  239. package/dist/components/form/color-picker/color-picker.styles.js +7 -6
  240. package/dist/components/form/counter/counter.d.ts +26 -19
  241. package/dist/components/form/counter/counter.js +64 -63
  242. package/dist/components/form/counter/counter.styles.js +5 -4
  243. package/dist/components/form/date-picker/date-picker.d.ts +64 -39
  244. package/dist/components/form/date-picker/date-picker.js +107 -96
  245. package/dist/components/form/date-picker/date-picker.styles.js +8 -5
  246. package/dist/components/form/input/input.d.ts +45 -40
  247. package/dist/components/form/input/input.js +93 -111
  248. package/dist/components/form/input-file/input-file.d.ts +30 -14
  249. package/dist/components/form/input-file/input-file.js +43 -40
  250. package/dist/components/form/input-file/input-file.styles.js +7 -6
  251. package/dist/components/form/input-phone/input-phone.d.ts +30 -7
  252. package/dist/components/form/input-phone/input-phone.js +54 -30
  253. package/dist/components/form/input-phone/input-phone.styles.js +4 -4
  254. package/dist/components/form/label/label.styles.js +3 -3
  255. package/dist/components/form/radio/radio-card.d.ts +6 -2
  256. package/dist/components/form/radio/radio-card.js +6 -2
  257. package/dist/components/form/radio/radio-card.styles.js +14 -5
  258. package/dist/components/form/radio/radio-list.d.ts +28 -9
  259. package/dist/components/form/radio/radio-list.js +61 -32
  260. package/dist/components/form/radio/radio.d.ts +6 -2
  261. package/dist/components/form/radio/radio.js +6 -2
  262. package/dist/components/form/radio/radio.styles.js +4 -4
  263. package/dist/components/form/rating/rating.d.ts +349 -0
  264. package/dist/components/form/rating/rating.js +665 -0
  265. package/dist/components/form/rating/rating.styles.d.ts +1 -0
  266. package/dist/components/form/rating/rating.styles.js +213 -0
  267. package/dist/components/form/search/search.d.ts +10 -9
  268. package/dist/components/form/search/search.js +29 -56
  269. package/dist/components/form/search/search.styles.js +5 -4
  270. package/dist/components/form/select/select.d.ts +32 -12
  271. package/dist/components/form/select/select.js +74 -59
  272. package/dist/components/form/select/select.styles.js +3 -2
  273. package/dist/components/form/shared-styles/card.styles.js +5 -4
  274. package/dist/components/form/shared-styles/field.styles.js +16 -6
  275. package/dist/components/form/shared-styles/form-labels.styles.js +1 -1
  276. package/dist/components/form/shared-styles/listbox.styles.js +10 -0
  277. package/dist/components/form/slider/slider.d.ts +11 -9
  278. package/dist/components/form/slider/slider.js +14 -14
  279. package/dist/components/form/slider/slider.styles.js +8 -7
  280. package/dist/components/form/switch/switch.d.ts +5 -1
  281. package/dist/components/form/switch/switch.js +5 -1
  282. package/dist/components/form/switch/switch.styles.js +7 -5
  283. package/dist/components/form/textarea/textarea.d.ts +96 -24
  284. package/dist/components/form/textarea/textarea.js +206 -51
  285. package/dist/components/form/time-picker/time-picker-columns.d.ts +2 -2
  286. package/dist/components/form/time-picker/time-picker-columns.js +8 -8
  287. package/dist/components/form/time-picker/time-picker-columns.styles.js +4 -2
  288. package/dist/components/form/time-picker/time-picker-list.styles.js +2 -1
  289. package/dist/components/form/time-picker/time-picker.d.ts +30 -10
  290. package/dist/components/form/time-picker/time-picker.js +81 -64
  291. package/dist/components/form/time-picker/time-picker.styles.js +4 -3
  292. package/dist/components/layout/animate/animate.d.ts +37 -15
  293. package/dist/components/layout/animate/animate.js +36 -16
  294. package/dist/components/layout/animate/animate.styles.js +11 -18
  295. package/dist/components/layout/divider/divider.js +1 -1
  296. package/dist/components/layout/divider/divider.styles.js +1 -1
  297. package/dist/components/layout/infinite-list/infinite-list.d.ts +33 -10
  298. package/dist/components/layout/infinite-list/infinite-list.js +115 -18
  299. package/dist/components/layout/infinite-list/infinite-list.styles.d.ts +3 -0
  300. package/dist/components/layout/infinite-list/infinite-list.styles.js +17 -5
  301. package/dist/components/loader/loader/loader.js +2 -2
  302. package/dist/components/loader/loader/loader.styles.js +17 -13
  303. package/dist/components/loader/skeleton/skeleton.js +1 -1
  304. package/dist/components/navigation/breadcrumb/breadcrumb.d.ts +31 -45
  305. package/dist/components/navigation/breadcrumb/breadcrumb.js +111 -77
  306. package/dist/components/navigation/breadcrumb/breadcrumb.styles.d.ts +3 -0
  307. package/dist/components/navigation/breadcrumb/breadcrumb.styles.js +22 -26
  308. package/dist/components/navigation/carousel/carousel.d.ts +55 -11
  309. package/dist/components/navigation/carousel/carousel.js +101 -43
  310. package/dist/components/navigation/carousel/carousel.styles.js +65 -22
  311. package/dist/components/navigation/pagination/pagination.d.ts +23 -21
  312. package/dist/components/navigation/pagination/pagination.js +30 -53
  313. package/dist/components/navigation/pagination/pagination.styles.js +8 -3
  314. package/dist/components/navigation/sidebar/sidebar.d.ts +17 -13
  315. package/dist/components/navigation/sidebar/sidebar.js +23 -33
  316. package/dist/components/navigation/sidebar/sidebar.styles.js +32 -14
  317. package/dist/components/navigation/stepper/step.js +9 -8
  318. package/dist/components/navigation/stepper/step.styles.js +16 -5
  319. package/dist/components/navigation/stepper/stepper.js +12 -5
  320. package/dist/components/navigation/stepper/stepper.styles.js +16 -5
  321. package/dist/components/navigation/tabs/tab/tab.d.ts +11 -0
  322. package/dist/components/navigation/tabs/tab/tab.js +11 -0
  323. package/dist/components/navigation/tabs/tab/tab.styles.js +22 -16
  324. package/dist/components/navigation/tabs/tab-group/tab-group.js +9 -10
  325. package/dist/components/navigation/tabs/tab-group/tab-group.styles.js +21 -16
  326. package/dist/components/navigation/tabs/tab-panel/tab-panel.d.ts +4 -0
  327. package/dist/components/navigation/tabs/tab-panel/tab-panel.js +4 -0
  328. package/dist/components/navigation/tabs/tab-panel/tab-panel.styles.js +18 -1
  329. package/dist/components/navigation/toolbar/toolbar.d.ts +30 -62
  330. package/dist/components/navigation/toolbar/toolbar.js +43 -105
  331. package/dist/components/navigation/toolbar/toolbar.styles.js +59 -36
  332. package/dist/events/table-row-click.event.d.ts +5 -4
  333. package/dist/events/table-row-click.event.js +10 -5
  334. package/dist/features/scheduler/calendar/calendar.d.ts +6 -6
  335. package/dist/features/scheduler/calendar/calendar.js +7 -6
  336. package/dist/features/scheduler/calendar/calendar.styles.js +8 -6
  337. package/dist/features/scheduler/scheduler/scheduler.d.ts +8 -8
  338. package/dist/features/scheduler/scheduler/scheduler.js +24 -47
  339. package/dist/features/scheduler/scheduler/scheduler.styles.js +6 -4
  340. package/dist/features/scheduler/scheduler-event/scheduler-event.d.ts +2 -0
  341. package/dist/features/scheduler/scheduler-event/scheduler-event.js +5 -3
  342. package/dist/features/scheduler/scheduler-event/scheduler-event.styles.js +11 -5
  343. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.d.ts +6 -4
  344. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.js +6 -7
  345. package/dist/features/scheduler/shared/scheduler-hour-grid.styles.js +3 -3
  346. package/dist/features/scheduler/shared/scheduler-month-view.styles.js +2 -2
  347. package/dist/features/scheduler/shared/scheduler-year-view.styles.js +2 -2
  348. package/dist/features/table/table/table-native.styles.d.ts +28 -0
  349. package/dist/features/table/table/table-native.styles.js +502 -0
  350. package/dist/features/table/table/table.d.ts +342 -294
  351. package/dist/features/table/table/table.js +820 -546
  352. package/dist/features/table/table/table.styles.js +31 -17
  353. package/dist/features/table/table/table.types.d.ts +11 -20
  354. package/dist/features/table/table/table.utils.d.ts +6 -36
  355. package/dist/features/table/table/table.utils.js +16 -65
  356. package/dist/features/table/table-action-bar/table-action-bar.d.ts +33 -16
  357. package/dist/features/table/table-action-bar/table-action-bar.js +15 -22
  358. package/dist/features/table/table-action-bar/table-action-bar.styles.js +15 -3
  359. package/dist/i18n/en.d.ts +99 -0
  360. package/dist/i18n/en.js +99 -0
  361. package/dist/i18n/fr.js +103 -2
  362. package/dist/index.d.ts +6 -10
  363. package/dist/index.js +7 -10
  364. package/dist/mixins/button.mixin.js +3 -2
  365. package/dist/mixins/check.mixin.js +15 -15
  366. package/dist/mixins/disabled.mixin.d.ts +5 -0
  367. package/dist/mixins/disabled.mixin.js +21 -1
  368. package/dist/mixins/editable.mixin.js +28 -5
  369. package/dist/mixins/field-appearance.mixin.js +3 -2
  370. package/dist/mixins/form.mixin.d.ts +21 -1
  371. package/dist/mixins/form.mixin.js +156 -27
  372. package/dist/mixins/localizable.mixin.d.ts +1 -1
  373. package/dist/mixins/localizable.mixin.js +1 -1
  374. package/dist/mixins/radio.mixin.js +15 -15
  375. package/dist/mixins/readonly.mixin.d.ts +2 -1
  376. package/dist/mixins/readonly.mixin.js +10 -3
  377. package/dist/mixins/validators.mixin.d.ts +7 -1
  378. package/dist/mixins/validators.mixin.js +36 -17
  379. package/dist/ssr/alert-ssr.css +187 -0
  380. package/dist/ssr/animate-ssr.css +3 -2
  381. package/dist/ssr/badge-ssr.css +67 -0
  382. package/dist/ssr/breadcrumb-ssr.css +41 -0
  383. package/dist/ssr/button-ssr.css +319 -0
  384. package/dist/ssr/card-ssr.css +196 -0
  385. package/dist/ssr/carousel-ssr.css +238 -0
  386. package/dist/ssr/checkbox-ssr.css +67 -0
  387. package/dist/ssr/chip-ssr.css +242 -0
  388. package/dist/ssr/collapse-ssr.css +151 -0
  389. package/dist/ssr/description-list-ssr.css +150 -0
  390. package/dist/ssr/field-ssr.css +163 -0
  391. package/dist/ssr/icon-ssr.css +266 -0
  392. package/dist/ssr/image-carousel-ssr.css +24 -0
  393. package/dist/ssr/links-ssr.css +8 -2
  394. package/dist/ssr/pagination-ssr.css +4 -0
  395. package/dist/ssr/rating-ssr.css +254 -0
  396. package/dist/ssr/sidebar-ssr.css +9 -1
  397. package/dist/ssr/skeleton-ssr.css +63 -0
  398. package/dist/ssr/table-ssr.css +472 -0
  399. package/dist/ssr/tabs-ssr.css +129 -0
  400. package/dist/ssr/tag-ssr.css +197 -0
  401. package/dist/ssr/toggle-group-ssr.css +182 -0
  402. package/dist/ssr/toolbar-ssr.css +34 -1
  403. package/dist/utils/drag-drop.utils.js +18 -2
  404. package/dist/utils/dropdown-menu.utils.d.ts +2 -2
  405. package/dist/utils/dropdown-menu.utils.js +4 -14
  406. package/dist/utils/implicit-submission.utils.d.ts +18 -0
  407. package/dist/utils/implicit-submission.utils.js +79 -0
  408. package/dist/utils/light-dom-styles.utils.d.ts +14 -0
  409. package/dist/utils/light-dom-styles.utils.js +37 -0
  410. package/dist/utils/listbox-options.utils.d.ts +11 -0
  411. package/dist/utils/listbox-options.utils.js +41 -3
  412. package/dist/utils/media.styles.d.ts +19 -0
  413. package/dist/utils/media.styles.js +23 -0
  414. package/dist/utils/motion.utils.d.ts +40 -0
  415. package/dist/utils/motion.utils.js +51 -0
  416. package/dist/utils/theme-generator.utils.d.ts +6 -1
  417. package/dist/utils/theme-generator.utils.js +59 -20
  418. package/package.json +39 -31
  419. package/styles/breakpoints.scss +8 -0
  420. package/styles/eunomia-grid.scss +6 -0
  421. package/styles/themes/eunomia-theme.scss +4 -3
  422. package/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  423. package/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  424. package/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  425. package/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  426. package/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  427. package/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  428. package/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  429. package/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  430. package/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  431. package/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  432. package/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  433. package/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  434. package/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  435. package/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  436. package/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  437. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  438. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  439. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  440. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  441. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  442. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  443. package/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  444. package/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  445. package/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  446. package/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  447. package/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  448. package/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  449. package/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  450. package/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  451. package/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  452. package/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  453. package/dist/cdn/components/chunks/chunk-32DTNR52.js +0 -1
  454. package/dist/cdn/components/chunks/chunk-A6KGFALA.js +0 -132
  455. package/dist/cdn/components/chunks/chunk-CEDHJUUH.js +0 -1
  456. package/dist/cdn/components/chunks/chunk-D2M4BV5Y.js +0 -328
  457. package/dist/cdn/components/chunks/chunk-E4IS25H7.js +0 -1
  458. package/dist/cdn/components/chunks/chunk-E74CM7UG.js +0 -66
  459. package/dist/cdn/components/chunks/chunk-EAKYD33D.js +0 -110
  460. package/dist/cdn/components/chunks/chunk-EST3M4AO.js +0 -1
  461. package/dist/cdn/components/chunks/chunk-GU6BVMFJ.js +0 -1
  462. package/dist/cdn/components/chunks/chunk-KBH5PCUO.js +0 -3
  463. package/dist/cdn/components/chunks/chunk-KVYUNKUO.js +0 -27
  464. package/dist/cdn/components/chunks/chunk-LFCXUVDO.js +0 -1
  465. package/dist/cdn/components/chunks/chunk-OAULRKHQ.js +0 -38
  466. package/dist/cdn/components/chunks/chunk-PCM7D3YF.js +0 -84
  467. package/dist/cdn/components/chunks/chunk-S2UCEWNG.js +0 -207
  468. package/dist/cdn/components/chunks/chunk-SJWRE6PW.js +0 -1
  469. package/dist/cdn/components/chunks/chunk-T4PTHUYF.js +0 -10
  470. package/dist/cdn/components/chunks/chunk-VRGRCYIO.js +0 -1
  471. package/dist/cdn/components/chunks/chunk-X2AUBZD2.js +0 -30
  472. package/dist/cdn/components/eun-breadcrumb-item.js +0 -93
  473. package/dist/cdn/components/eun-table-cell.js +0 -1
  474. package/dist/cdn/components/eun-table-column.js +0 -1
  475. package/dist/cdn/components/eun-table-header.js +0 -1
  476. package/dist/cdn/components/eun-table-item.js +0 -1
  477. package/dist/cdn/components/eun-table-skeleton-row.js +0 -1
  478. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  479. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  480. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
  481. package/dist/components/navigation/breadcrumb/breadcrumb-item.d.ts +0 -77
  482. package/dist/components/navigation/breadcrumb/breadcrumb-item.js +0 -130
  483. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.d.ts +0 -6
  484. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.js +0 -78
  485. package/dist/features/table/native-table.css +0 -276
  486. package/dist/features/table/shared-styles/table-row.styles.d.ts +0 -7
  487. package/dist/features/table/shared-styles/table-row.styles.js +0 -47
  488. package/dist/features/table/shared-styles/table-shared.styles.d.ts +0 -23
  489. package/dist/features/table/shared-styles/table-shared.styles.js +0 -33
  490. package/dist/features/table/table-cell/table-cell.d.ts +0 -59
  491. package/dist/features/table/table-cell/table-cell.js +0 -73
  492. package/dist/features/table/table-cell/table-cell.styles.d.ts +0 -1
  493. package/dist/features/table/table-cell/table-cell.styles.js +0 -46
  494. package/dist/features/table/table-column/table-column.d.ts +0 -73
  495. package/dist/features/table/table-column/table-column.js +0 -89
  496. package/dist/features/table/table-column/table-column.styles.d.ts +0 -1
  497. package/dist/features/table/table-column/table-column.styles.js +0 -51
  498. package/dist/features/table/table-header/table-header.d.ts +0 -102
  499. package/dist/features/table/table-header/table-header.js +0 -165
  500. package/dist/features/table/table-header/table-header.styles.d.ts +0 -1
  501. package/dist/features/table/table-header/table-header.styles.js +0 -147
  502. package/dist/features/table/table-item/table-item.d.ts +0 -179
  503. package/dist/features/table/table-item/table-item.js +0 -291
  504. package/dist/features/table/table-item/table-item.styles.d.ts +0 -1
  505. package/dist/features/table/table-item/table-item.styles.js +0 -404
  506. package/dist/features/table/table-managed/table-managed.d.ts +0 -19
  507. package/dist/features/table/table-managed/table-managed.js +0 -128
  508. package/dist/features/table/table-skeleton-row/table-skeleton-row.d.ts +0 -46
  509. package/dist/features/table/table-skeleton-row/table-skeleton-row.js +0 -110
  510. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.d.ts +0 -12
  511. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.js +0 -65
  512. package/dist/mixins/table-row.mixin.d.ts +0 -37
  513. package/dist/mixins/table-row.mixin.js +0 -103
  514. package/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  515. package/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  516. package/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
@@ -17,6 +17,7 @@ import { ChangeEvent } from "../../../events/change.event.js";
17
17
  import { FileRejectEvent, } from "../../../events/file-reject.event.js";
18
18
  import { formLabelsStyles } from "../shared-styles/form-labels.styles.js";
19
19
  import { inputFileStyles } from "./input-file.styles.js";
20
+ import { LocalizableMixin, } from "../../../mixins/localizable.mixin.js";
20
21
  /**
21
22
  * Tag name of the input-file component.
22
23
  */
@@ -26,7 +27,7 @@ export const EunomiaInputFileTagName = "eun-input-file";
26
27
  * @internal
27
28
  */
28
29
  const Base = DisabledMixin(ValidatorsMixin(LitElement));
29
- const EunomiaInputFileMixinBase = FormLabelMixin(ReadonlyMixin(FormMixin(Base)));
30
+ const EunomiaInputFileMixinBase = LocalizableMixin(FormLabelMixin(ReadonlyMixin(FormMixin(Base))));
30
31
  /**
31
32
  * A file upload field with a dropzone, showing image thumbnails or generic
32
33
  * file rows for the selected files.
@@ -44,24 +45,26 @@ const EunomiaInputFileMixinBase = FormLabelMixin(ReadonlyMixin(FormMixin(Base)))
44
45
  * @prop {boolean} [disabled=false] - Whether the field is disabled
45
46
  * @prop {boolean} [readonly=false] - Whether the field is read only
46
47
  * @prop {boolean} [required=false] - Whether at least one file is required
47
- * @prop {boolean} [hideError=false] - Whether the errors are hidden
48
+ * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
49
+ * @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
50
+ * @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
48
51
  * @prop {Array<import('../../../types/form-validators.type.js').Validators<File[]>>} validators - The list of validation rules applied to the field value
49
52
  * @prop {string} [dropLabel='Drag and drop files here, or'] - Static text displayed in the dropzone
50
53
  * @attr {string} [drop-label='Drag and drop files here, or'] - Static text displayed in the dropzone
51
54
  * @prop {string} [browseLabel='browse files'] - The visible text of the dropzone's browse link
52
55
  * @attr {string} [browse-label='browse files'] - The visible text of the dropzone's browse link
53
- * @prop {string} [ariaLabelRemove='Remove file'] - The accessible label of each item's remove button
54
- * @attr {string} [aria-label-remove='Remove file'] - The accessible label of each item's remove button
55
- * @prop {string} [ariaLabelSelect='Select file'] - The accessible label prefix of each item's checkbox
56
- * @attr {string} [aria-label-select='Select file'] - The accessible label prefix of each item's checkbox
56
+ * @prop {string} [removeLabel] - The accessible label of each item's remove button. Defaults to the localized string for the current locale (English: "Remove file")
57
+ * @attr {string} [remove-label] - The accessible label of each item's remove button. Defaults to the localized string for the current locale (English: "Remove file")
58
+ * @prop {string} [selectLabel] - The accessible label prefix of each item's checkbox. Defaults to the localized string for the current locale (English: "Select file")
59
+ * @attr {string} [select-label] - The accessible label prefix of each item's checkbox. Defaults to the localized string for the current locale (English: "Select file")
57
60
  * @prop {string} [removeAllLabel='Remove all'] - The label of the always-available bulk clear action
58
61
  * @attr {string} [remove-all-label='Remove all'] - The label of the always-available bulk clear action
59
62
  * @prop {string} [selectAllLabel='Select all'] - The label of the selection toolbar's select-all checkbox
60
63
  * @attr {string} [select-all-label='Select all'] - The label of the selection toolbar's select-all checkbox
61
64
  * @prop {string} [deleteSelectedLabel='Delete selected'] - The label of the selection toolbar's bulk delete button
62
65
  * @attr {string} [delete-selected-label='Delete selected'] - The label of the selection toolbar's bulk delete button
63
- * @prop {string} [ariaLabelOpen='Open in a new tab'] - Appended to each item's accessible name
64
- * @attr {string} [aria-label-open='Open in a new tab'] - Appended to each item's accessible name
66
+ * @prop {string} [openLabel] - Appended to each item's accessible name. Defaults to the localized string for the current locale (English: "Open in a new tab")
67
+ * @attr {string} [open-label] - Appended to each item's accessible name. Defaults to the localized string for the current locale (English: "Open in a new tab")
65
68
  * @fires {ChangeEvent} eunchange - Fired whenever the selected files change
66
69
  * @fires {FileRejectEvent} eunfilereject - Fired whenever one or more offered files are rejected, for the wrong type or exceeding the size or count limit
67
70
  * @cssprop [--input-file-border-color] - Sets the border color of the dropzone
@@ -79,11 +82,18 @@ const EunomiaInputFileMixinBase = FormLabelMixin(ReadonlyMixin(FormMixin(Base)))
79
82
  * @cssprop [--input-file-item-border-color] - Sets the border color of each item
80
83
  * @cssprop [--input-file-gap] - Sets the gap between the dropzone, header, and items
81
84
  * @cssprop [--input-file-thumbnail-size] - Sets the minimum size of image thumbnails
85
+ * @cssprop [--field-label-font-size] - Sets the font size of the label
86
+ * @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
82
87
  * @element eun-input-file
83
88
  */
84
89
  let EunomiaInputFile = class EunomiaInputFile extends EunomiaInputFileMixinBase {
85
90
  constructor() {
86
91
  super(...arguments);
92
+ /**
93
+ * Every change is a complete choice, so its error shows right away.
94
+ * @internal
95
+ */
96
+ this.errorOnChange = true;
87
97
  /**
88
98
  * Accepted content kind: image thumbnails vs. generic file rows.
89
99
  * @default image
@@ -110,18 +120,6 @@ let EunomiaInputFile = class EunomiaInputFile extends EunomiaInputFileMixinBase
110
120
  * @default browse files
111
121
  */
112
122
  this.browseLabel = "browse files";
113
- /**
114
- * Accessible label prefix of each item's remove button (suffixed with the
115
- * file name).
116
- * @default Remove file
117
- */
118
- this.ariaLabelRemove = "Remove file";
119
- /**
120
- * Accessible label prefix of each item's checkbox (suffixed with the file
121
- * name), when `selectable`.
122
- * @default Select file
123
- */
124
- this.ariaLabelSelect = "Select file";
125
123
  /**
126
124
  * Label of the always-available bulk clear action, shown once at least one
127
125
  * file is present.
@@ -139,12 +137,6 @@ let EunomiaInputFile = class EunomiaInputFile extends EunomiaInputFileMixinBase
139
137
  * @default Delete selected
140
138
  */
141
139
  this.deleteSelectedLabel = "Delete selected";
142
- /**
143
- * Appended to each item's accessible name (its primary action is opening
144
- * the file in a new tab).
145
- * @default Open in a new tab
146
- */
147
- this.ariaLabelOpen = "Open in a new tab";
148
140
  /**
149
141
  * Whether a drag carrying files is currently over the host — reflected so
150
142
  * `:host([dragging])` can drive the dropzone's highlight.
@@ -290,6 +282,14 @@ let EunomiaInputFile = class EunomiaInputFile extends EunomiaInputFileMixinBase
290
282
  }
291
283
  }
292
284
  }
285
+ /**
286
+ * The host is never a tab stop of its own : sequential navigation goes
287
+ * straight to the controls inside, in both directions, and
288
+ * {@link focus} covers a direct call on the host.
289
+ */
290
+ get hostTabStop() {
291
+ return false;
292
+ }
293
293
  /**
294
294
  * Returns the element to focus/anchor on validation errors.
295
295
  *
@@ -446,7 +446,7 @@ let EunomiaInputFile = class EunomiaInputFile extends EunomiaInputFileMixinBase
446
446
  const next = current.filter((candidate) => candidate !== file);
447
447
  this.value = next;
448
448
  this.dispatchEvent(new ChangeEvent(this.value));
449
- this.updateComplete.then(() => {
449
+ void this.updateComplete.then(() => {
450
450
  if (!next.length) {
451
451
  this.firstFocusable()?.focus();
452
452
  return;
@@ -463,7 +463,7 @@ let EunomiaInputFile = class EunomiaInputFile extends EunomiaInputFileMixinBase
463
463
  this.selected = new Set();
464
464
  this.value = [];
465
465
  this.dispatchEvent(new ChangeEvent(this.value));
466
- this.updateComplete.then(() => this.firstFocusable()?.focus());
466
+ void this.updateComplete.then(() => this.firstFocusable()?.focus());
467
467
  }
468
468
  /**
469
469
  * Removes every currently-selected file.
@@ -475,7 +475,7 @@ let EunomiaInputFile = class EunomiaInputFile extends EunomiaInputFileMixinBase
475
475
  this.selected = new Set();
476
476
  this.value = next;
477
477
  this.dispatchEvent(new ChangeEvent(this.value));
478
- this.updateComplete.then(() => this.firstFocusable()?.focus());
478
+ void this.updateComplete.then(() => this.firstFocusable()?.focus());
479
479
  }
480
480
  toggleSelected(file, checked) {
481
481
  const next = new Set(this.selected);
@@ -594,7 +594,7 @@ let EunomiaInputFile = class EunomiaInputFile extends EunomiaInputFileMixinBase
594
594
  ?multiple=${this.multiple}
595
595
  ?disabled=${disabled}
596
596
  aria-label=${ifDefined(this.label)}
597
- aria-invalid=${!this.hideError && !this.disabled && !this.valid}
597
+ aria-invalid=${this.showError}
598
598
  aria-describedby=${hasDescription ? "description" : nothing}
599
599
  @change=${this.handleNativeChange}
600
600
  />
@@ -619,7 +619,8 @@ let EunomiaInputFile = class EunomiaInputFile extends EunomiaInputFileMixinBase
619
619
  class="item"
620
620
  role="button"
621
621
  tabindex=${this.disabled ? "-1" : "0"}
622
- aria-label="${file.name} — ${this.ariaLabelOpen}"
622
+ aria-label="${file.name} — ${this.openLabel ??
623
+ this.dictionary.inputFile.open}"
623
624
  @click=${() => !this.disabled && this.openFile(file)}
624
625
  @keydown=${(event) => this.handleItemKeydown(event, file)}
625
626
  >
@@ -627,7 +628,8 @@ let EunomiaInputFile = class EunomiaInputFile extends EunomiaInputFileMixinBase
627
628
  <input
628
629
  type="checkbox"
629
630
  class="item-checkbox"
630
- aria-label="${this.ariaLabelSelect} ${file.name}"
631
+ aria-label="${this.selectLabel ??
632
+ this.dictionary.inputFile.select} ${file.name}"
631
633
  .checked=${isSelected}
632
634
  ?disabled=${this.disabled || this.readonly}
633
635
  @click=${(event) => event.stopPropagation()}
@@ -650,7 +652,8 @@ let EunomiaInputFile = class EunomiaInputFile extends EunomiaInputFileMixinBase
650
652
  <button
651
653
  type="button"
652
654
  class="item-remove"
653
- aria-label="${this.ariaLabelRemove} ${file.name}"
655
+ aria-label="${this.removeLabel ??
656
+ this.dictionary.inputFile.remove} ${file.name}"
654
657
  ?disabled=${this.disabled || this.readonly}
655
658
  @click=${(event) => {
656
659
  event.stopPropagation();
@@ -739,7 +742,7 @@ EunomiaInputFile.styles = [
739
742
  formLabelsStyles.hintMessages,
740
743
  ];
741
744
  __decorate([
742
- property({ reflect: true })
745
+ property({ reflect: true, useDefault: true })
743
746
  ], EunomiaInputFile.prototype, "kind", void 0);
744
747
  __decorate([
745
748
  property()
@@ -763,11 +766,11 @@ __decorate([
763
766
  property({ attribute: "browse-label" })
764
767
  ], EunomiaInputFile.prototype, "browseLabel", void 0);
765
768
  __decorate([
766
- property({ attribute: "aria-label-remove" })
767
- ], EunomiaInputFile.prototype, "ariaLabelRemove", void 0);
769
+ property({ attribute: "remove-label" })
770
+ ], EunomiaInputFile.prototype, "removeLabel", void 0);
768
771
  __decorate([
769
- property({ attribute: "aria-label-select" })
770
- ], EunomiaInputFile.prototype, "ariaLabelSelect", void 0);
772
+ property({ attribute: "select-label" })
773
+ ], EunomiaInputFile.prototype, "selectLabel", void 0);
771
774
  __decorate([
772
775
  property({ attribute: "remove-all-label" })
773
776
  ], EunomiaInputFile.prototype, "removeAllLabel", void 0);
@@ -778,8 +781,8 @@ __decorate([
778
781
  property({ attribute: "delete-selected-label" })
779
782
  ], EunomiaInputFile.prototype, "deleteSelectedLabel", void 0);
780
783
  __decorate([
781
- property({ attribute: "aria-label-open" })
782
- ], EunomiaInputFile.prototype, "ariaLabelOpen", void 0);
784
+ property({ attribute: "open-label" })
785
+ ], EunomiaInputFile.prototype, "openLabel", void 0);
783
786
  __decorate([
784
787
  property({ type: Boolean, reflect: true })
785
788
  ], EunomiaInputFile.prototype, "dragging", void 0);
@@ -99,8 +99,9 @@ const base = css `
99
99
  cursor: pointer;
100
100
  box-sizing: border-box;
101
101
  transition:
102
- border-color 0.15s ease,
103
- background-color 0.15s ease;
102
+ border-color var(--eun-duration-s, 150ms) var(--eun-easing-default, ease),
103
+ background-color var(--eun-duration-s, 150ms)
104
+ var(--eun-easing-default, ease);
104
105
  }
105
106
  #dropzone #drop-icon {
106
107
  --icon-color: var(--_iconColor);
@@ -195,7 +196,7 @@ const base = css `
195
196
  display: grid;
196
197
  gap: var(--_gap);
197
198
  }
198
- :host([kind="image"]) #items {
199
+ :host(:is([kind="image"], :not([kind]))) #items {
199
200
  grid-template-columns: repeat(
200
201
  auto-fill,
201
202
  minmax(var(--_thumbnailSize), 1fr)
@@ -218,7 +219,7 @@ const base = css `
218
219
  .item:focus-visible {
219
220
  outline: 1px solid var(--_focusIndicator);
220
221
  }
221
- :host([kind="image"]) .item {
222
+ :host(:is([kind="image"], :not([kind]))) .item {
222
223
  aspect-ratio: 1 / 1;
223
224
  overflow: hidden;
224
225
  align-items: stretch;
@@ -257,7 +258,7 @@ const base = css `
257
258
  .item-checkbox {
258
259
  flex: none;
259
260
  }
260
- :host([kind="image"]) .item-checkbox {
261
+ :host(:is([kind="image"], :not([kind]))) .item-checkbox {
261
262
  position: absolute;
262
263
  top: var(--eun-space-xs, 4px);
263
264
  left: var(--eun-space-xs, 4px);
@@ -283,7 +284,7 @@ const base = css `
283
284
  :host([kind="file"]) .item-remove:hover {
284
285
  color: var(--_textColor);
285
286
  }
286
- :host([kind="image"]) .item-remove {
287
+ :host(:is([kind="image"], :not([kind]))) .item-remove {
287
288
  position: absolute;
288
289
  top: var(--eun-space-xs, 4px);
289
290
  right: var(--eun-space-xs, 4px);
@@ -7,6 +7,7 @@ import { FormLabelMixinInterface } from "../../../mixins/form-label.mixin.js";
7
7
  import { FieldAppearanceMixinInterface } from "../../../mixins/field-appearance.mixin.js";
8
8
  import { AnchorPositionMixinInterface } from "../../../mixins/anchor-position.mixin.js";
9
9
  import { Constructor } from "../../../utils/constructor.type.js";
10
+ import { LocalizableMixinInterface } from "../../../mixins/localizable.mixin.js";
10
11
  /**
11
12
  * Tag name of the phone input component.
12
13
  */
@@ -16,7 +17,7 @@ export declare const EunomiaInputPhoneTagName = "eun-input-phone";
16
17
  * interface element.
17
18
  * @internal
18
19
  */
19
- type EunomiaInputPhoneBase = LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface<string> & FormMixinInterface<string> & FormLabelMixinInterface & FieldAppearanceMixinInterface & AnchorPositionMixinInterface;
20
+ type EunomiaInputPhoneBase = LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface<string> & FormMixinInterface<string> & FormLabelMixinInterface & FieldAppearanceMixinInterface & AnchorPositionMixinInterface & LocalizableMixinInterface;
20
21
  declare const EunomiaInputPhoneMixinBase: Constructor<EunomiaInputPhoneBase>;
21
22
  /**
22
23
  * A phone number field rendered in two adjacent parts: a compact country
@@ -54,15 +55,17 @@ declare const EunomiaInputPhoneMixinBase: Constructor<EunomiaInputPhoneBase>;
54
55
  * @prop {boolean} [disabled=false] - Whether the field is disabled
55
56
  * @prop {boolean} [readonly=false] - Whether the field is read only
56
57
  * @prop {boolean} [required=false] - Whether the field is required
57
- * @prop {boolean} [hideError=false] - Whether the errors are hidden
58
+ * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
59
+ * @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
60
+ * @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
58
61
  * @prop {Array<Validators<string>>} validators - The list of validation rules applied to the field value
59
62
  * @prop {string} [placeholder] - The placeholder shown when the field is empty. Defaults to a generic formatted digit pattern, not a real per-country example, when unset
60
63
  * @prop {string} [countrySearchPlaceholder='Search a country…'] - The placeholder of the search field inside the country dropdown
61
64
  * @attr {string} [country-search-placeholder='Search a country…'] - The placeholder of the search field inside the country dropdown
62
65
  * @prop {string} [noResultsLabel='No results'] - Text displayed in the dropdown when no country matches the search
63
66
  * @attr {string} [no-results-label='No results'] - Text displayed in the dropdown when no country matches the search
64
- * @prop {string} [ariaLabelCountrySelector='Select a country'] - The accessible label of the leading country selector button
65
- * @attr {string} [aria-label-country-selector='Select a country'] - The accessible label of the leading country selector button
67
+ * @prop {string} [countrySelectorLabel] - The accessible label of the leading country selector button. Defaults to the localized string for the current locale (English: "Select a country")
68
+ * @attr {string} [country-selector-label] - The accessible label of the leading country selector button. Defaults to the localized string for the current locale (English: "Select a country")
66
69
  * @fires {ChangeEvent} eunchange - Fired on every value change
67
70
  * @cssprop [--field-background] - Sets the background color of the field
68
71
  * @cssprop [--field-border-color] - Sets the border color of the field
@@ -70,6 +73,8 @@ declare const EunomiaInputPhoneMixinBase: Constructor<EunomiaInputPhoneBase>;
70
73
  * @cssprop [--field-border-color-focus] - Sets the border color on focus
71
74
  * @cssprop [--field-border-radius] - Sets the corner radius of the field
72
75
  * @cssprop [--field-padding] - Sets the padding of the field
76
+ * @cssprop [--field-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --field-padding is set
77
+ * @cssprop [--field-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --field-padding is set
73
78
  * @cssprop [--field-text-color] - Sets the text color of the field
74
79
  * @cssprop [--field-placeholder-color] - Sets the color of the placeholder
75
80
  * @cssprop [--field-icon-color] - Sets the color of the country selector button
@@ -80,6 +85,9 @@ declare const EunomiaInputPhoneMixinBase: Constructor<EunomiaInputPhoneBase>;
80
85
  * @cssprop [--field-listbox-transition-duration=200ms] - Sets the duration of the dropdown panel's open and close height transition, disabled entirely under reduced motion settings
81
86
  * @cssprop [--eun-viewport-inset-top] - Reserves space, such as a page's sticky header height, that the dropdown panel keeps clear of at the top of the viewport. Set on the root or an ancestor rather than on the field itself
82
87
  * @cssprop [--eun-viewport-inset-bottom] - The same as eun-viewport-inset-top, reserved at the bottom of the viewport, such as for a sticky footer
88
+ * @cssprop [--field-font-size] - Sets the font size of the field's value and placeholder
89
+ * @cssprop [--field-label-font-size] - Sets the font size of the label
90
+ * @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
83
91
  * @element eun-input-phone
84
92
  */
85
93
  export declare class EunomiaInputPhone extends EunomiaInputPhoneMixinBase {
@@ -133,9 +141,9 @@ export declare class EunomiaInputPhone extends EunomiaInputPhoneMixinBase {
133
141
  noResultsLabel: string;
134
142
  /**
135
143
  * Accessible label of the leading country-selector button.
136
- * @default Select a country
144
+ * Falls back to the localized string for the current locale when unset.
137
145
  */
138
- ariaLabelCountrySelector: string;
146
+ countrySelectorLabel?: string;
139
147
  /**
140
148
  * The raw national digits currently typed (no dial code, no separators) —
141
149
  * *including* a leading trunk "0" if the user typed one, kept exactly as
@@ -205,6 +213,15 @@ export declare class EunomiaInputPhone extends EunomiaInputPhoneMixinBase {
205
213
  * @internal
206
214
  */
207
215
  private triggerPointerDownAt?;
216
+ constructor();
217
+ /**
218
+ * Submits the owning form on Enter in the number field, as a native text
219
+ * input does, since the browser never does it from a shadow root.
220
+ * Listened to on the host so the country list's own Enter handling is
221
+ * never mistaken for it.
222
+ * @private
223
+ */
224
+ private readonly handleImplicitSubmission;
208
225
  connectedCallback(): void;
209
226
  /**
210
227
  * Lifecycle hook called when the element is disconnected from the DOM.
@@ -262,6 +279,12 @@ export declare class EunomiaInputPhone extends EunomiaInputPhoneMixinBase {
262
279
  * @param _changedProperties - Map of changed properties
263
280
  */
264
281
  protected updated(_changedProperties: PropertyValues): void;
282
+ /**
283
+ * The host is never a tab stop of its own : sequential navigation goes
284
+ * straight to the controls inside, in both directions, and
285
+ * {@link focus} covers a direct call on the host.
286
+ */
287
+ protected get hostTabStop(): boolean;
265
288
  /**
266
289
  * Returns the field element to focus/anchor on validation errors.
267
290
  *
@@ -290,7 +313,7 @@ export declare class EunomiaInputPhone extends EunomiaInputPhoneMixinBase {
290
313
  /**
291
314
  * The listbox's open/close animation duration, in ms : `0` under
292
315
  * `prefers-reduced-motion: reduce`, otherwise `--field-listbox-
293
- * transition-duration` (default `200ms`) — same custom property
316
+ * transition-duration` (default `--eun-duration-m`) — same custom property
294
317
  * `eun-select`/`eun-search` share.
295
318
  *
296
319
  * @param el the listbox to read `--field-listbox-transition-duration` off.
@@ -8,6 +8,7 @@ var EunomiaInputPhone_1;
8
8
  import { customElement, property, query, state } from "lit/decorators.js";
9
9
  import { html, LitElement, nothing } from "lit";
10
10
  import { classMap } from "lit/directives/class-map.js";
11
+ import { ifDefined } from "lit/directives/if-defined.js";
11
12
  import { DisabledMixin, } from "../../../mixins/disabled.mixin.js";
12
13
  import { ReadonlyMixin, } from "../../../mixins/readonly.mixin.js";
13
14
  import { ValidatorsMixin, } from "../../../mixins/validators.mixin.js";
@@ -20,6 +21,9 @@ import { formLabelsStyles } from "../shared-styles/form-labels.styles.js";
20
21
  import { inputPhoneStyles } from "./input-phone.styles.js";
21
22
  import { isWebKit } from "../../../utils/browser.utils.js";
22
23
  import { COUNTRY_DIAL_CODES, formatNationalNumber, fromE164, getCountryName, getDialCode, getNationalLength, stripTrunkPrefix, getFlagEmoji, toE164, } from "./input-phone.type.js";
24
+ import { resolveDurationMs, resolveEasing, } from "../../../utils/motion.utils.js";
25
+ import { LocalizableMixin, } from "../../../mixins/localizable.mixin.js";
26
+ import { isImplicitSubmissionKey, submitImplicitly, } from "../../../utils/implicit-submission.utils.js";
23
27
  /**
24
28
  * Tag name of the phone input component.
25
29
  */
@@ -62,7 +66,7 @@ const TRIGGER_POINTER_DOWN_WINDOW_MS = 100;
62
66
  * @internal
63
67
  */
64
68
  const Base = DisabledMixin(ValidatorsMixin(LitElement));
65
- const EunomiaInputPhoneMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(FormMixin(Base)))));
69
+ const EunomiaInputPhoneMixinBase = LocalizableMixin(AnchorPositionMixin(FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(FormMixin(Base))))));
66
70
  /**
67
71
  * A phone number field rendered in two adjacent parts: a compact country
68
72
  * selector, showing only the flag, on the leading side, and the phone
@@ -99,15 +103,17 @@ const EunomiaInputPhoneMixinBase = AnchorPositionMixin(FieldAppearanceMixin(Form
99
103
  * @prop {boolean} [disabled=false] - Whether the field is disabled
100
104
  * @prop {boolean} [readonly=false] - Whether the field is read only
101
105
  * @prop {boolean} [required=false] - Whether the field is required
102
- * @prop {boolean} [hideError=false] - Whether the errors are hidden
106
+ * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
107
+ * @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
108
+ * @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
103
109
  * @prop {Array<Validators<string>>} validators - The list of validation rules applied to the field value
104
110
  * @prop {string} [placeholder] - The placeholder shown when the field is empty. Defaults to a generic formatted digit pattern, not a real per-country example, when unset
105
111
  * @prop {string} [countrySearchPlaceholder='Search a country…'] - The placeholder of the search field inside the country dropdown
106
112
  * @attr {string} [country-search-placeholder='Search a country…'] - The placeholder of the search field inside the country dropdown
107
113
  * @prop {string} [noResultsLabel='No results'] - Text displayed in the dropdown when no country matches the search
108
114
  * @attr {string} [no-results-label='No results'] - Text displayed in the dropdown when no country matches the search
109
- * @prop {string} [ariaLabelCountrySelector='Select a country'] - The accessible label of the leading country selector button
110
- * @attr {string} [aria-label-country-selector='Select a country'] - The accessible label of the leading country selector button
115
+ * @prop {string} [countrySelectorLabel] - The accessible label of the leading country selector button. Defaults to the localized string for the current locale (English: "Select a country")
116
+ * @attr {string} [country-selector-label] - The accessible label of the leading country selector button. Defaults to the localized string for the current locale (English: "Select a country")
111
117
  * @fires {ChangeEvent} eunchange - Fired on every value change
112
118
  * @cssprop [--field-background] - Sets the background color of the field
113
119
  * @cssprop [--field-border-color] - Sets the border color of the field
@@ -115,6 +121,8 @@ const EunomiaInputPhoneMixinBase = AnchorPositionMixin(FieldAppearanceMixin(Form
115
121
  * @cssprop [--field-border-color-focus] - Sets the border color on focus
116
122
  * @cssprop [--field-border-radius] - Sets the corner radius of the field
117
123
  * @cssprop [--field-padding] - Sets the padding of the field
124
+ * @cssprop [--field-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --field-padding is set
125
+ * @cssprop [--field-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --field-padding is set
118
126
  * @cssprop [--field-text-color] - Sets the text color of the field
119
127
  * @cssprop [--field-placeholder-color] - Sets the color of the placeholder
120
128
  * @cssprop [--field-icon-color] - Sets the color of the country selector button
@@ -125,11 +133,14 @@ const EunomiaInputPhoneMixinBase = AnchorPositionMixin(FieldAppearanceMixin(Form
125
133
  * @cssprop [--field-listbox-transition-duration=200ms] - Sets the duration of the dropdown panel's open and close height transition, disabled entirely under reduced motion settings
126
134
  * @cssprop [--eun-viewport-inset-top] - Reserves space, such as a page's sticky header height, that the dropdown panel keeps clear of at the top of the viewport. Set on the root or an ancestor rather than on the field itself
127
135
  * @cssprop [--eun-viewport-inset-bottom] - The same as eun-viewport-inset-top, reserved at the bottom of the viewport, such as for a sticky footer
136
+ * @cssprop [--field-font-size] - Sets the font size of the field's value and placeholder
137
+ * @cssprop [--field-label-font-size] - Sets the font size of the label
138
+ * @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
128
139
  * @element eun-input-phone
129
140
  */
130
141
  let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends EunomiaInputPhoneMixinBase {
131
142
  constructor() {
132
- super(...arguments);
143
+ super();
133
144
  /**
134
145
  * Hides the leading country-selector part entirely. `country` can still
135
146
  * be set programmatically, with no picker UI to change it.
@@ -151,11 +162,6 @@ let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends Eu
151
162
  * @default No results
152
163
  */
153
164
  this.noResultsLabel = "No results";
154
- /**
155
- * Accessible label of the leading country-selector button.
156
- * @default Select a country
157
- */
158
- this.ariaLabelCountrySelector = "Select a country";
159
165
  /**
160
166
  * The raw national digits currently typed (no dial code, no separators) —
161
167
  * *including* a leading trunk "0" if the user typed one, kept exactly as
@@ -182,6 +188,23 @@ let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends Eu
182
188
  * @internal
183
189
  */
184
190
  this.highlightedIndex = -1;
191
+ /**
192
+ * Submits the owning form on Enter in the number field, as a native text
193
+ * input does, since the browser never does it from a shadow root.
194
+ * Listened to on the host so the country list's own Enter handling is
195
+ * never mistaken for it.
196
+ * @private
197
+ */
198
+ this.handleImplicitSubmission = (event) => {
199
+ const form = this.internals.form;
200
+ if (!form ||
201
+ event.composedPath()[0] !== this.fieldEl ||
202
+ !isImplicitSubmissionKey(event)) {
203
+ return;
204
+ }
205
+ event.preventDefault();
206
+ submitImplicitly(form);
207
+ };
185
208
  /**
186
209
  * Closes the dropdown when the browser window itself loses focus (e.g.
187
210
  * Alt-Tab to another application). The Popover API's own light-dismiss
@@ -260,6 +283,7 @@ let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends Eu
260
283
  this.unanchorFloatingElement();
261
284
  this.unobserveAnchorVisibility();
262
285
  };
286
+ this.addEventListener("keydown", this.handleImplicitSubmission);
263
287
  }
264
288
  connectedCallback() {
265
289
  super.connectedCallback?.();
@@ -334,6 +358,14 @@ let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends Eu
334
358
  ?.scrollIntoView({ block: "nearest" });
335
359
  }
336
360
  }
361
+ /**
362
+ * The host is never a tab stop of its own : sequential navigation goes
363
+ * straight to the controls inside, in both directions, and
364
+ * {@link focus} covers a direct call on the host.
365
+ */
366
+ get hostTabStop() {
367
+ return false;
368
+ }
337
369
  /**
338
370
  * Returns the field element to focus/anchor on validation errors.
339
371
  *
@@ -382,7 +414,7 @@ let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends Eu
382
414
  /**
383
415
  * The listbox's open/close animation duration, in ms : `0` under
384
416
  * `prefers-reduced-motion: reduce`, otherwise `--field-listbox-
385
- * transition-duration` (default `200ms`) — same custom property
417
+ * transition-duration` (default `--eun-duration-m`) — same custom property
386
418
  * `eun-select`/`eun-search` share.
387
419
  *
388
420
  * @param el the listbox to read `--field-listbox-transition-duration` off.
@@ -392,18 +424,7 @@ let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends Eu
392
424
  if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
393
425
  return 0;
394
426
  }
395
- const raw = getComputedStyle(el)
396
- .getPropertyValue("--field-listbox-transition-duration")
397
- .trim();
398
- if (raw) {
399
- const parsed = raw.endsWith("ms")
400
- ? Number.parseFloat(raw)
401
- : Number.parseFloat(raw) * 1000;
402
- if (Number.isFinite(parsed) && parsed >= 0) {
403
- return parsed;
404
- }
405
- }
406
- return 200;
427
+ return resolveDurationMs(el, "--field-listbox-transition-duration", "m", 200);
407
428
  }
408
429
  /**
409
430
  * Plays the fade/scaleY-in, replacing any {@link listboxAnimation}
@@ -421,7 +442,7 @@ let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends Eu
421
442
  this.listboxAnimation = listbox.animate([
422
443
  { opacity: 0, transform: "scaleY(0.01)" },
423
444
  { opacity: 1, transform: "scaleY(1)" },
424
- ], { duration, easing: "ease", fill: "forwards" });
445
+ ], { duration, easing: resolveEasing(listbox), fill: "forwards" });
425
446
  }
426
447
  /**
427
448
  * Closes the dropdown panel, if open. All state cleanup happens in
@@ -458,7 +479,7 @@ let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends Eu
458
479
  const animation = listbox.animate([
459
480
  { opacity: 1, transform: "scaleY(1)" },
460
481
  { opacity: 0, transform: "scaleY(0.01)" },
461
- ], { duration, easing: "ease", fill: "forwards" });
482
+ ], { duration, easing: resolveEasing(listbox), fill: "forwards" });
462
483
  this.listboxAnimation = animation;
463
484
  animation.finished
464
485
  .then(() => {
@@ -639,7 +660,8 @@ let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends Eu
639
660
  aria-haspopup="listbox"
640
661
  aria-expanded=${this.isOpen}
641
662
  aria-controls="listbox"
642
- aria-label=${this.ariaLabelCountrySelector}
663
+ aria-label=${this.countrySelectorLabel ??
664
+ this.dictionary.inputPhone.selectCountry}
643
665
  ?disabled=${this.disabled || this.readonly}
644
666
  @pointerdown=${this.handleTriggerPointerDown}
645
667
  @click=${this.handleTriggerClick}
@@ -666,7 +688,8 @@ let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends Eu
666
688
  <ul
667
689
  id="listbox"
668
690
  role="listbox"
669
- aria-label=${this.ariaLabelCountrySelector}
691
+ aria-label=${this.countrySelectorLabel ??
692
+ this.dictionary.inputPhone.selectCountry}
670
693
  popover="auto"
671
694
  @toggle=${this.handlePopoverToggle}
672
695
  >
@@ -743,8 +766,9 @@ let EunomiaInputPhone = EunomiaInputPhone_1 = class EunomiaInputPhone extends Eu
743
766
  placeholder=${this.effectivePlaceholder}
744
767
  ?disabled=${this.disabled}
745
768
  ?readonly=${this.readonly}
769
+ aria-label=${ifDefined(this.label)}
746
770
  aria-describedby=${hasDescription ? "description" : nothing}
747
- aria-invalid=${!this.hideError && !this.disabled && !this.valid}
771
+ aria-invalid=${this.showError}
748
772
  @input=${this.handlePhoneInput}
749
773
  />
750
774
  </div>
@@ -797,8 +821,8 @@ __decorate([
797
821
  property({ attribute: "no-results-label" })
798
822
  ], EunomiaInputPhone.prototype, "noResultsLabel", void 0);
799
823
  __decorate([
800
- property({ attribute: "aria-label-country-selector" })
801
- ], EunomiaInputPhone.prototype, "ariaLabelCountrySelector", void 0);
824
+ property({ attribute: "country-selector-label" })
825
+ ], EunomiaInputPhone.prototype, "countrySelectorLabel", void 0);
802
826
  __decorate([
803
827
  state()
804
828
  ], EunomiaInputPhone.prototype, "nationalDigits", void 0);
@@ -51,8 +51,8 @@ const inputPhone = css `
51
51
  color: var(--_iconColor);
52
52
  cursor: pointer;
53
53
  transition:
54
- border-color 0.15s ease,
55
- outline-color 0.15s ease;
54
+ border-color var(--eun-duration-s, 150ms) var(--eun-easing-default, ease),
55
+ outline-color var(--eun-duration-s, 150ms) var(--eun-easing-default, ease);
56
56
  }
57
57
  :host(:not([aria-readonly="true"])) #country-trigger:focus-visible {
58
58
  z-index: 1;
@@ -82,8 +82,8 @@ const inputPhone = css `
82
82
  outline: 1px solid transparent;
83
83
  box-sizing: border-box;
84
84
  transition:
85
- border-color 0.15s ease,
86
- outline-color 0.15s ease;
85
+ border-color var(--eun-duration-s, 150ms) var(--eun-easing-default, ease),
86
+ outline-color var(--eun-duration-s, 150ms) var(--eun-easing-default, ease);
87
87
  }
88
88
  :host([hide-country-selector]) #field-wrapper {
89
89
  margin-inline-start: 0;
@@ -13,17 +13,17 @@ const base = css `
13
13
  }
14
14
  #name {
15
15
  color: var(--eun-text-color, #071621);
16
- font-size: var(--eun-font-size-s, 14px);
16
+ font-size: var(--field-label-font-size, var(--eun-font-size-s, 14px));
17
17
  font-weight: var(--eun-font-weight-l, 700);
18
18
  }
19
19
  slot[name="instructions"] {
20
20
  display: block;
21
- font-size: var(--eun-font-size-xs, 12px);
21
+ font-size: var(--field-message-font-size, var(--eun-font-size-xs, 12px));
22
22
  color: var(--eun-text-secondary, #484e61);
23
23
  }
24
24
  .required {
25
25
  color: var(--eun-color-critical-100, #aa0014);
26
- font-size: var(--eun-font-size-s, 10px);
26
+ font-size: var(--field-label-font-size, var(--eun-font-size-s, 10px));
27
27
  }
28
28
  `;
29
29
  export const labelStyles = base;
@@ -22,8 +22,10 @@ export declare const EunomiaRadioCardTagName = "eun-radio-card";
22
22
  * @attr {boolean} [default-checked] - The checked state applied when the card connects, and restored on form reset
23
23
  * @prop {boolean} [disabled=false] - Whether the card is disabled
24
24
  * @prop {boolean} [readonly=false] - Whether the card is read only
25
- * @prop {boolean} [hideError=false] - Whether the error message is hidden
26
- * @attr {boolean} [hide-error=false] - Whether the error message is hidden
25
+ * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
26
+ * @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
27
+ * @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
28
+ * @attr {boolean} [hide-error=false] - Whether the error message is hidden. The hint stays visible
27
29
  * @prop {boolean} [required=false] - Whether a selection is required
28
30
  * @prop {string} name - The name of the field
29
31
  * @prop {string} value - The value submitted with the card
@@ -44,6 +46,8 @@ export declare const EunomiaRadioCardTagName = "eun-radio-card";
44
46
  * @cssprop [--radio-card-border-width] - Sets the width of the border
45
47
  * @cssprop [--radio-card-border-radius] - Sets the corner radius of the card
46
48
  * @cssprop [--radio-card-padding] - Sets the padding inside the card
49
+ * @cssprop [--radio-card-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --radio-card-padding is set
50
+ * @cssprop [--radio-card-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --radio-card-padding is set
47
51
  * @cssprop [--radio-card-min-width] - Sets the minimum width of the card
48
52
  * @cssprop [--radio-card-icon-color] - Sets the color of the leading icon while not checked
49
53
  * @cssprop [--radio-card-icon-color-checked] - Sets the color of the leading icon while checked