@eunomia/elements 1.0.0-beta.4 → 1.0.0-beta.6

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 (496) hide show
  1. package/README.md +1 -1
  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-4MXL6PZC.js → chunk-2Y2EU2CI.js} +28 -28
  6. package/dist/cdn/components/chunks/chunk-3MTUVMM5.js +1 -0
  7. package/dist/cdn/components/chunks/chunk-4PI6RDUS.js +1 -0
  8. package/dist/cdn/components/chunks/chunk-5GKM5DIB.js +1 -0
  9. package/dist/cdn/components/chunks/chunk-624VJYNA.js +1 -0
  10. package/dist/cdn/components/chunks/{chunk-5XJLIHAU.js → chunk-7KKWYPHY.js} +4 -2
  11. package/dist/cdn/components/chunks/chunk-A3X4KD2X.js +1 -0
  12. package/dist/cdn/components/chunks/chunk-BKZGTCMF.js +1 -0
  13. package/dist/cdn/components/chunks/{chunk-GW3VP2L7.js → chunk-BO3JOEWM.js} +1 -1
  14. package/dist/cdn/components/chunks/{chunk-NHFWATVN.js → chunk-BQFJR2UP.js} +5 -5
  15. package/dist/cdn/components/chunks/chunk-EUWUDCBZ.js +1 -0
  16. package/dist/cdn/components/chunks/{chunk-P32B7BFD.js → chunk-FF3I7C3C.js} +15 -15
  17. package/dist/cdn/components/chunks/{chunk-74AOAB4X.js → chunk-FOILAXLL.js} +6 -5
  18. package/dist/cdn/components/chunks/{chunk-E4IS25H7.js → chunk-G5SBDQQ3.js} +1 -1
  19. package/dist/cdn/components/chunks/{chunk-LGLQ36QB.js → chunk-GDBPWZN6.js} +1 -1
  20. package/dist/cdn/components/chunks/{chunk-S2UCEWNG.js → chunk-JYIIWN2P.js} +13 -11
  21. package/dist/cdn/components/chunks/{chunk-EOWBYZV7.js → chunk-KDN4O5W2.js} +26 -13
  22. package/dist/cdn/components/chunks/chunk-KSZRQRN4.js +1 -0
  23. package/dist/cdn/components/chunks/{chunk-PED5ATYN.js → chunk-L2ADCEN7.js} +1 -1
  24. package/dist/cdn/components/chunks/chunk-LMVW522V.js +1 -0
  25. package/dist/cdn/components/chunks/{chunk-5XJGYXW7.js → chunk-MOMYII3P.js} +1 -1
  26. package/dist/cdn/components/chunks/{chunk-SIHZFOTK.js → chunk-MQQ4BGVJ.js} +5 -5
  27. package/dist/cdn/components/chunks/{chunk-A4EQSU36.js → chunk-O7PHBLH2.js} +1 -1
  28. package/dist/cdn/components/chunks/chunk-PD62MBOJ.js +1 -0
  29. package/dist/cdn/components/chunks/{chunk-KBH5PCUO.js → chunk-PE4DAXHQ.js} +1 -1
  30. package/dist/cdn/components/chunks/{chunk-GSJEJLFA.js → chunk-PMPSJG5V.js} +7 -7
  31. package/dist/cdn/components/chunks/{chunk-5EVP7YNE.js → chunk-PPCHQG7P.js} +1 -1
  32. package/dist/cdn/components/chunks/{chunk-EJIX2D4Z.js → chunk-QZ5SHR3I.js} +15 -11
  33. package/dist/cdn/components/chunks/chunk-RS7TWEMQ.js +1 -0
  34. package/dist/cdn/components/chunks/chunk-SMTIDNGW.js +1 -0
  35. package/dist/cdn/components/chunks/{chunk-YGUJJ25C.js → chunk-SZYEBMG6.js} +11 -10
  36. package/dist/cdn/components/chunks/chunk-UDVB4LAE.js +56 -0
  37. package/dist/cdn/components/chunks/{chunk-UAGCQF23.js → chunk-UYZR4JXZ.js} +17 -12
  38. package/dist/cdn/components/chunks/chunk-VG6NAAIV.js +1 -0
  39. package/dist/cdn/components/chunks/chunk-VJCNHMQZ.js +10 -0
  40. package/dist/cdn/components/chunks/chunk-VOTRXBDS.js +38 -0
  41. package/dist/cdn/components/chunks/{chunk-BMQOI7HX.js → chunk-VYFR364B.js} +128 -74
  42. package/dist/cdn/components/chunks/{chunk-IJ5WFMK4.js → chunk-XDPRWUKN.js} +7 -6
  43. package/dist/cdn/components/chunks/{chunk-XH6NREVZ.js → chunk-YITWLCD3.js} +1 -1
  44. package/dist/cdn/components/chunks/{chunk-BQHYZB2W.js → chunk-ZBN4HTWP.js} +1 -1
  45. package/dist/cdn/components/chunks/{chunk-RJCJXB7Y.js → chunk-ZKZV2YG5.js} +18 -18
  46. package/dist/cdn/components/eun-alert.js +24 -16
  47. package/dist/cdn/components/eun-animate.js +12 -6
  48. package/dist/cdn/components/eun-badge.js +7 -7
  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 +68 -66
  52. package/dist/cdn/components/eun-card.js +67 -13
  53. package/dist/cdn/components/eun-carousel.js +66 -35
  54. package/dist/cdn/components/eun-check-card.js +13 -6
  55. package/dist/cdn/components/eun-checkbox-list.js +4 -4
  56. package/dist/cdn/components/eun-checkbox.js +1 -1
  57. package/dist/cdn/components/eun-chip.js +1 -1
  58. package/dist/cdn/components/eun-collapse.js +87 -39
  59. package/dist/cdn/components/eun-color-picker.js +54 -53
  60. package/dist/cdn/components/eun-counter.js +14 -13
  61. package/dist/cdn/components/eun-date-picker.js +66 -63
  62. package/dist/cdn/components/eun-description-list.js +152 -0
  63. package/dist/cdn/components/eun-divider.js +1 -1
  64. package/dist/cdn/components/eun-drawer.js +26 -12
  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 +20 -19
  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 +14 -13
  73. package/dist/cdn/components/eun-input-phone.js +26 -26
  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 +174 -27
  77. package/dist/cdn/components/eun-loader.js +1 -1
  78. package/dist/cdn/components/eun-modal.js +29 -22
  79. package/dist/cdn/components/eun-pagination.js +17 -12
  80. package/dist/cdn/components/eun-password-strength.js +6 -2
  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 +4 -4
  84. package/dist/cdn/components/eun-radio.js +1 -1
  85. package/dist/cdn/components/eun-scheduler-event-editor.js +8 -8
  86. package/dist/cdn/components/eun-scheduler-event.js +1 -1
  87. package/dist/cdn/components/eun-scheduler.js +42 -42
  88. package/dist/cdn/components/eun-search.js +21 -20
  89. package/dist/cdn/components/eun-select.js +12 -11
  90. package/dist/cdn/components/eun-sidebar.js +34 -20
  91. package/dist/cdn/components/eun-skeleton.js +1 -1
  92. package/dist/cdn/components/eun-slider.js +15 -14
  93. package/dist/cdn/components/eun-sliding-card.js +8 -4
  94. package/dist/cdn/components/eun-step.js +17 -6
  95. package/dist/cdn/components/eun-stepper.js +17 -6
  96. package/dist/cdn/components/eun-switch.js +10 -8
  97. package/dist/cdn/components/eun-tab-group.js +22 -17
  98. package/dist/cdn/components/eun-tab-panel.js +11 -3
  99. package/dist/cdn/components/eun-tab.js +1 -1
  100. package/dist/cdn/components/eun-table-action-bar.js +1 -1
  101. package/dist/cdn/components/eun-table.js +572 -31
  102. package/dist/cdn/components/eun-tag.js +13 -7
  103. package/dist/cdn/components/eun-textarea.js +24 -24
  104. package/dist/cdn/components/eun-time-picker.js +21 -19
  105. package/dist/cdn/components/eun-toast.js +36 -16
  106. package/dist/cdn/components/eun-toggle-group.js +64 -37
  107. package/dist/cdn/components/eun-toggle-item.js +24 -21
  108. package/dist/cdn/components/eun-toggle.js +12 -10
  109. package/dist/cdn/components/eun-toolbar.js +62 -52
  110. package/dist/cdn/components/eun-tooltip.js +30 -14
  111. package/dist/cdn/styles/breakpoints.scss +8 -0
  112. package/dist/cdn/styles/eunomia-grid.scss +6 -0
  113. package/dist/cdn/styles/eunomia-themes.css +1 -1
  114. package/dist/cdn/styles/themes/eunomia-theme.css +1 -1
  115. package/dist/cdn/styles/themes/eunomia-theme.scss +4 -3
  116. package/dist/cdn/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  117. package/dist/cdn/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  118. package/dist/cdn/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  119. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  120. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  121. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.css +1 -1
  122. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  123. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  124. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  125. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.css +1 -1
  126. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  127. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  128. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  129. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.css +1 -1
  130. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  131. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  132. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  133. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.css +1 -1
  134. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  135. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  136. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  137. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.css +1 -1
  138. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  139. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  140. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  141. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.css +1 -1
  142. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  143. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  144. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  145. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.css +1 -1
  146. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  147. package/dist/cdn/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  148. package/dist/cdn/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  149. package/dist/cdn/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  150. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  151. package/dist/cdn/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  152. package/dist/cdn/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  153. package/dist/cdn/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  154. package/dist/components/action/button/button.d.ts +51 -19
  155. package/dist/components/action/button/button.js +107 -24
  156. package/dist/components/action/button/button.styles.js +115 -62
  157. package/dist/components/action/dropdown-button/dropdown-button.d.ts +10 -10
  158. package/dist/components/action/dropdown-button/dropdown-button.js +18 -17
  159. package/dist/components/action/dropdown-button/dropdown-button.styles.js +3 -2
  160. package/dist/components/action/dropdown-button/dropdown-item.js +5 -6
  161. package/dist/components/action/dropdown-button/dropdown-item.styles.js +3 -2
  162. package/dist/components/action/fab/fab.d.ts +7 -6
  163. package/dist/components/action/fab/fab.js +11 -8
  164. package/dist/components/action/fab/fab.styles.js +18 -17
  165. package/dist/components/action/link/link.d.ts +72 -9
  166. package/dist/components/action/link/link.js +183 -23
  167. package/dist/components/action/link/link.styles.js +146 -10
  168. package/dist/components/action/shared-styles/button-palette.styles.d.ts +3 -3
  169. package/dist/components/action/shared-styles/button-palette.styles.js +29 -29
  170. package/dist/components/action/toggle/toggle-group.d.ts +17 -5
  171. package/dist/components/action/toggle/toggle-group.js +46 -19
  172. package/dist/components/action/toggle/toggle-group.styles.d.ts +4 -1
  173. package/dist/components/action/toggle/toggle-group.styles.js +56 -27
  174. package/dist/components/action/toggle/toggle-item.d.ts +4 -4
  175. package/dist/components/action/toggle/toggle-item.js +2 -2
  176. package/dist/components/action/toggle/toggle-item.styles.js +20 -17
  177. package/dist/components/action/toggle/toggle.d.ts +2 -0
  178. package/dist/components/action/toggle/toggle.js +2 -0
  179. package/dist/components/action/toggle/toggle.styles.d.ts +2 -0
  180. package/dist/components/action/toggle/toggle.styles.js +12 -8
  181. package/dist/components/alert/alert/alert.d.ts +2 -0
  182. package/dist/components/alert/alert/alert.js +2 -0
  183. package/dist/components/alert/alert/alert.styles.js +23 -13
  184. package/dist/components/alert/drawer/drawer.d.ts +3 -1
  185. package/dist/components/alert/drawer/drawer.js +5 -3
  186. package/dist/components/alert/drawer/drawer.styles.js +25 -9
  187. package/dist/components/alert/modal/modal.d.ts +11 -9
  188. package/dist/components/alert/modal/modal.js +15 -13
  189. package/dist/components/alert/modal/modal.styles.js +16 -7
  190. package/dist/components/alert/toast/toast.d.ts +2 -0
  191. package/dist/components/alert/toast/toast.js +2 -0
  192. package/dist/components/alert/toast/toast.styles.js +37 -15
  193. package/dist/components/content/badge/badge.d.ts +6 -6
  194. package/dist/components/content/badge/badge.js +4 -4
  195. package/dist/components/content/badge/badge.styles.js +4 -4
  196. package/dist/components/content/card/card.d.ts +39 -7
  197. package/dist/components/content/card/card.js +71 -7
  198. package/dist/components/content/card/card.styles.js +58 -11
  199. package/dist/components/content/card/image-card.d.ts +62 -7
  200. package/dist/components/content/card/image-card.js +121 -11
  201. package/dist/components/content/card/image-card.styles.js +66 -15
  202. package/dist/components/content/card/sliding-card.d.ts +4 -1
  203. package/dist/components/content/card/sliding-card.js +3 -0
  204. package/dist/components/content/card/sliding-card.styles.js +5 -1
  205. package/dist/components/content/collapse/collapse.d.ts +39 -12
  206. package/dist/components/content/collapse/collapse.js +65 -25
  207. package/dist/components/content/collapse/collapse.styles.d.ts +10 -1
  208. package/dist/components/content/collapse/collapse.styles.js +69 -18
  209. package/dist/components/content/description-list/description-list.d.ts +87 -0
  210. package/dist/components/content/description-list/description-list.js +107 -0
  211. package/dist/components/content/description-list/description-list.styles.d.ts +1 -0
  212. package/dist/components/content/description-list/description-list.styles.js +185 -0
  213. package/dist/components/content/icon/icon.d.ts +14 -2
  214. package/dist/components/content/icon/icon.js +54 -22
  215. package/dist/components/content/icon/icon.style.d.ts +2 -0
  216. package/dist/components/content/icon/icon.style.js +8 -2
  217. package/dist/components/content/image-carousel/image-carousel.d.ts +30 -19
  218. package/dist/components/content/image-carousel/image-carousel.js +48 -45
  219. package/dist/components/content/image-carousel/image-carousel.styles.js +69 -30
  220. package/dist/components/content/password-strength/password-strength.styles.js +5 -1
  221. package/dist/components/content/progress-bar/progress-bar.styles.js +12 -4
  222. package/dist/components/content/shared-styles/card-link.styles.js +5 -3
  223. package/dist/components/content/shared-styles/tone-surface.styles.d.ts +5 -0
  224. package/dist/components/content/shared-styles/tone-surface.styles.js +19 -14
  225. package/dist/components/content/tag/tag.d.ts +4 -0
  226. package/dist/components/content/tag/tag.js +4 -0
  227. package/dist/components/content/tag/tag.styles.js +14 -4
  228. package/dist/components/content/tooltip/tooltip.d.ts +3 -2
  229. package/dist/components/content/tooltip/tooltip.js +9 -16
  230. package/dist/components/content/tooltip/tooltip.styles.js +25 -7
  231. package/dist/components/form/checkbox/check-card.d.ts +4 -1
  232. package/dist/components/form/checkbox/check-card.js +4 -1
  233. package/dist/components/form/checkbox/check-card.styles.js +13 -4
  234. package/dist/components/form/checkbox/checkbox-list.d.ts +4 -1
  235. package/dist/components/form/checkbox/checkbox-list.js +11 -7
  236. package/dist/components/form/checkbox/checkbox.d.ts +4 -1
  237. package/dist/components/form/checkbox/checkbox.js +4 -1
  238. package/dist/components/form/checkbox/checkbox.styles.js +2 -2
  239. package/dist/components/form/color-picker/color-picker.d.ts +10 -4
  240. package/dist/components/form/color-picker/color-picker.js +23 -25
  241. package/dist/components/form/color-picker/color-picker.styles.js +6 -5
  242. package/dist/components/form/counter/counter.d.ts +7 -4
  243. package/dist/components/form/counter/counter.js +8 -5
  244. package/dist/components/form/counter/counter.styles.js +10 -9
  245. package/dist/components/form/date-picker/date-picker.d.ts +40 -36
  246. package/dist/components/form/date-picker/date-picker.js +35 -45
  247. package/dist/components/form/date-picker/date-picker.styles.js +13 -10
  248. package/dist/components/form/input/input.d.ts +10 -4
  249. package/dist/components/form/input/input.js +12 -6
  250. package/dist/components/form/input-file/input-file.d.ts +4 -1
  251. package/dist/components/form/input-file/input-file.js +8 -5
  252. package/dist/components/form/input-file/input-file.styles.js +3 -2
  253. package/dist/components/form/input-phone/input-phone.d.ts +11 -5
  254. package/dist/components/form/input-phone/input-phone.js +16 -20
  255. package/dist/components/form/input-phone/input-phone.styles.js +16 -16
  256. package/dist/components/form/label/label.styles.js +3 -3
  257. package/dist/components/form/radio/radio-card.d.ts +5 -2
  258. package/dist/components/form/radio/radio-card.js +5 -2
  259. package/dist/components/form/radio/radio-card.styles.js +14 -5
  260. package/dist/components/form/radio/radio-list.d.ts +5 -2
  261. package/dist/components/form/radio/radio-list.js +14 -10
  262. package/dist/components/form/radio/radio.d.ts +5 -2
  263. package/dist/components/form/radio/radio.js +5 -2
  264. package/dist/components/form/radio/radio.styles.js +4 -4
  265. package/dist/components/form/search/search.d.ts +2 -1
  266. package/dist/components/form/search/search.js +6 -15
  267. package/dist/components/form/search/search.styles.js +8 -7
  268. package/dist/components/form/select/select.d.ts +12 -5
  269. package/dist/components/form/select/select.js +18 -21
  270. package/dist/components/form/select/select.styles.js +3 -2
  271. package/dist/components/form/shared-styles/card.styles.js +5 -4
  272. package/dist/components/form/shared-styles/field.styles.js +21 -11
  273. package/dist/components/form/shared-styles/form-labels.styles.js +1 -1
  274. package/dist/components/form/slider/slider.d.ts +4 -1
  275. package/dist/components/form/slider/slider.js +5 -2
  276. package/dist/components/form/slider/slider.styles.js +8 -7
  277. package/dist/components/form/switch/switch.d.ts +4 -1
  278. package/dist/components/form/switch/switch.js +4 -1
  279. package/dist/components/form/switch/switch.styles.js +7 -5
  280. package/dist/components/form/textarea/textarea.d.ts +10 -4
  281. package/dist/components/form/textarea/textarea.js +18 -12
  282. package/dist/components/form/time-picker/time-picker-columns.styles.js +4 -2
  283. package/dist/components/form/time-picker/time-picker-list.styles.js +2 -1
  284. package/dist/components/form/time-picker/time-picker.d.ts +9 -5
  285. package/dist/components/form/time-picker/time-picker.js +25 -29
  286. package/dist/components/form/time-picker/time-picker.styles.js +9 -8
  287. package/dist/components/layout/animate/animate.d.ts +41 -11
  288. package/dist/components/layout/animate/animate.js +48 -16
  289. package/dist/components/layout/animate/animate.styles.js +9 -16
  290. package/dist/components/layout/infinite-list/infinite-list.d.ts +33 -10
  291. package/dist/components/layout/infinite-list/infinite-list.js +115 -18
  292. package/dist/components/layout/infinite-list/infinite-list.styles.d.ts +3 -0
  293. package/dist/components/layout/infinite-list/infinite-list.styles.js +17 -5
  294. package/dist/components/loader/loader/loader.styles.js +3 -1
  295. package/dist/components/navigation/breadcrumb/breadcrumb.d.ts +31 -45
  296. package/dist/components/navigation/breadcrumb/breadcrumb.js +111 -77
  297. package/dist/components/navigation/breadcrumb/breadcrumb.styles.d.ts +3 -0
  298. package/dist/components/navigation/breadcrumb/breadcrumb.styles.js +22 -26
  299. package/dist/components/navigation/carousel/carousel.d.ts +30 -10
  300. package/dist/components/navigation/carousel/carousel.js +37 -18
  301. package/dist/components/navigation/carousel/carousel.styles.js +60 -20
  302. package/dist/components/navigation/pagination/pagination.styles.js +8 -3
  303. package/dist/components/navigation/sidebar/sidebar.d.ts +2 -0
  304. package/dist/components/navigation/sidebar/sidebar.js +2 -0
  305. package/dist/components/navigation/sidebar/sidebar.styles.js +27 -11
  306. package/dist/components/navigation/stepper/step.styles.js +16 -5
  307. package/dist/components/navigation/stepper/stepper.styles.js +16 -5
  308. package/dist/components/navigation/tabs/tab/tab.d.ts +11 -0
  309. package/dist/components/navigation/tabs/tab/tab.js +11 -0
  310. package/dist/components/navigation/tabs/tab/tab.styles.js +22 -16
  311. package/dist/components/navigation/tabs/tab-group/tab-group.js +7 -8
  312. package/dist/components/navigation/tabs/tab-group/tab-group.styles.js +19 -14
  313. package/dist/components/navigation/tabs/tab-panel/tab-panel.d.ts +4 -0
  314. package/dist/components/navigation/tabs/tab-panel/tab-panel.js +4 -0
  315. package/dist/components/navigation/tabs/tab-panel/tab-panel.styles.js +18 -1
  316. package/dist/components/navigation/toolbar/toolbar.d.ts +17 -49
  317. package/dist/components/navigation/toolbar/toolbar.js +23 -71
  318. package/dist/components/navigation/toolbar/toolbar.styles.js +59 -36
  319. package/dist/events/table-row-click.event.d.ts +5 -4
  320. package/dist/events/table-row-click.event.js +10 -5
  321. package/dist/features/scheduler/calendar/calendar.d.ts +12 -12
  322. package/dist/features/scheduler/calendar/calendar.js +15 -14
  323. package/dist/features/scheduler/calendar/calendar.styles.js +8 -6
  324. package/dist/features/scheduler/scheduler/scheduler.d.ts +7 -7
  325. package/dist/features/scheduler/scheduler/scheduler.js +21 -35
  326. package/dist/features/scheduler/scheduler/scheduler.styles.js +6 -4
  327. package/dist/features/scheduler/scheduler-event/scheduler-event.d.ts +12 -8
  328. package/dist/features/scheduler/scheduler-event/scheduler-event.js +9 -7
  329. package/dist/features/scheduler/scheduler-event/scheduler-event.styles.js +16 -10
  330. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.js +5 -5
  331. package/dist/features/scheduler/shared/scheduler-event-popover.js +2 -2
  332. package/dist/features/scheduler/shared/scheduler-hour-grid.d.ts +2 -2
  333. package/dist/features/scheduler/shared/scheduler-hour-grid.js +3 -3
  334. package/dist/features/scheduler/shared/scheduler-hour-grid.styles.js +3 -3
  335. package/dist/features/scheduler/shared/scheduler-month-view.d.ts +3 -3
  336. package/dist/features/scheduler/shared/scheduler-month-view.js +2 -2
  337. package/dist/features/scheduler/shared/scheduler-month-view.styles.js +2 -2
  338. package/dist/features/scheduler/shared/scheduler-year-view.styles.js +2 -2
  339. package/dist/features/table/table/table-native.styles.d.ts +28 -0
  340. package/dist/features/table/table/table-native.styles.js +502 -0
  341. package/dist/features/table/table/table.d.ts +342 -294
  342. package/dist/features/table/table/table.js +820 -546
  343. package/dist/features/table/table/table.styles.js +31 -17
  344. package/dist/features/table/table/table.types.d.ts +18 -23
  345. package/dist/features/table/table/table.utils.d.ts +6 -36
  346. package/dist/features/table/table/table.utils.js +16 -65
  347. package/dist/features/table/table-action-bar/table-action-bar.d.ts +33 -16
  348. package/dist/features/table/table-action-bar/table-action-bar.js +18 -25
  349. package/dist/features/table/table-action-bar/table-action-bar.styles.js +15 -3
  350. package/dist/i18n/en.d.ts +34 -0
  351. package/dist/i18n/en.js +34 -0
  352. package/dist/i18n/fr.js +38 -0
  353. package/dist/index.d.ts +7 -13
  354. package/dist/index.js +6 -10
  355. package/dist/jsx.d.ts +1 -1
  356. package/dist/mixins/button.mixin.d.ts +10 -9
  357. package/dist/mixins/button.mixin.js +14 -6
  358. package/dist/mixins/card-link.mixin.d.ts +3 -2
  359. package/dist/mixins/card-link.mixin.js +12 -5
  360. package/dist/mixins/check.mixin.js +4 -5
  361. package/dist/mixins/disabled.mixin.d.ts +3 -3
  362. package/dist/mixins/disabled.mixin.js +10 -5
  363. package/dist/mixins/field-appearance.mixin.d.ts +19 -0
  364. package/dist/mixins/{field-variant.mixin.js → field-appearance.mixin.js} +11 -11
  365. package/dist/mixins/form.mixin.d.ts +17 -1
  366. package/dist/mixins/form.mixin.js +80 -25
  367. package/dist/mixins/radio.mixin.js +4 -5
  368. package/dist/mixins/validators.mixin.d.ts +7 -1
  369. package/dist/mixins/validators.mixin.js +36 -17
  370. package/dist/ssr/animate-ssr.css +27 -72
  371. package/dist/ssr/button-ssr.css +319 -0
  372. package/dist/ssr/card-ssr.css +184 -0
  373. package/dist/ssr/description-list-ssr.css +150 -0
  374. package/dist/ssr/links-ssr.css +35 -0
  375. package/dist/ssr/overlay-ssr.css +0 -41
  376. package/dist/ssr/rich-text.css +38 -0
  377. package/dist/ssr/sidebar-ssr.css +0 -38
  378. package/dist/ssr/table-ssr.css +472 -0
  379. package/dist/ssr/tag-ssr.css +197 -0
  380. package/dist/ssr/toolbar-ssr.css +77 -39
  381. package/dist/types/variant.type.d.ts +26 -10
  382. package/dist/utils/drag-drop.utils.js +18 -2
  383. package/dist/utils/dropdown-menu.utils.d.ts +2 -2
  384. package/dist/utils/dropdown-menu.utils.js +4 -14
  385. package/dist/utils/light-dom-styles.utils.d.ts +14 -0
  386. package/dist/utils/light-dom-styles.utils.js +37 -0
  387. package/dist/utils/media.styles.d.ts +19 -0
  388. package/dist/utils/media.styles.js +23 -0
  389. package/dist/utils/motion.utils.d.ts +40 -0
  390. package/dist/utils/motion.utils.js +51 -0
  391. package/dist/utils/navigation.utils.d.ts +14 -0
  392. package/dist/utils/navigation.utils.js +33 -0
  393. package/dist/utils/new-tab-anchor.controller.d.ts +44 -0
  394. package/dist/utils/new-tab-anchor.controller.js +102 -0
  395. package/dist/utils/severity-icon.utils.d.ts +1 -1
  396. package/dist/utils/severity-icon.utils.js +1 -1
  397. package/dist/utils/theme-generator.utils.d.ts +9 -2
  398. package/dist/utils/theme-generator.utils.js +62 -21
  399. package/package.json +24 -29
  400. package/styles/breakpoints.scss +8 -0
  401. package/styles/eunomia-grid.scss +6 -0
  402. package/styles/themes/eunomia-theme.scss +4 -3
  403. package/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  404. package/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  405. package/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  406. package/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  407. package/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  408. package/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  409. package/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  410. package/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  411. package/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  412. package/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  413. package/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  414. package/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  415. package/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  416. package/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  417. package/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  418. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  419. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  420. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  421. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  422. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  423. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  424. package/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  425. package/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  426. package/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  427. package/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  428. package/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  429. package/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  430. package/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  431. package/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  432. package/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  433. package/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  434. package/dist/cdn/components/chunks/chunk-2JLDJFYD.js +0 -48
  435. package/dist/cdn/components/chunks/chunk-A6KGFALA.js +0 -132
  436. package/dist/cdn/components/chunks/chunk-ATH2OAMU.js +0 -1
  437. package/dist/cdn/components/chunks/chunk-BKHD4S57.js +0 -1
  438. package/dist/cdn/components/chunks/chunk-CEDHJUUH.js +0 -1
  439. package/dist/cdn/components/chunks/chunk-D2M4BV5Y.js +0 -328
  440. package/dist/cdn/components/chunks/chunk-E74CM7UG.js +0 -66
  441. package/dist/cdn/components/chunks/chunk-EST3M4AO.js +0 -1
  442. package/dist/cdn/components/chunks/chunk-GU6BVMFJ.js +0 -1
  443. package/dist/cdn/components/chunks/chunk-KVYUNKUO.js +0 -27
  444. package/dist/cdn/components/chunks/chunk-OAULRKHQ.js +0 -38
  445. package/dist/cdn/components/chunks/chunk-PCM7D3YF.js +0 -84
  446. package/dist/cdn/components/chunks/chunk-T4PTHUYF.js +0 -10
  447. package/dist/cdn/components/chunks/chunk-T7WABJEJ.js +0 -1
  448. package/dist/cdn/components/chunks/chunk-VRGRCYIO.js +0 -1
  449. package/dist/cdn/components/chunks/chunk-X2AUBZD2.js +0 -30
  450. package/dist/cdn/components/chunks/chunk-XSMCT4DF.js +0 -1
  451. package/dist/cdn/components/eun-breadcrumb-item.js +0 -93
  452. package/dist/cdn/components/eun-table-cell.js +0 -1
  453. package/dist/cdn/components/eun-table-column.js +0 -1
  454. package/dist/cdn/components/eun-table-header.js +0 -1
  455. package/dist/cdn/components/eun-table-item.js +0 -1
  456. package/dist/cdn/components/eun-table-skeleton-row.js +0 -1
  457. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  458. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  459. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
  460. package/dist/components/navigation/breadcrumb/breadcrumb-item.d.ts +0 -77
  461. package/dist/components/navigation/breadcrumb/breadcrumb-item.js +0 -130
  462. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.d.ts +0 -6
  463. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.js +0 -78
  464. package/dist/features/table/native-table.css +0 -276
  465. package/dist/features/table/shared-styles/table-row.styles.d.ts +0 -7
  466. package/dist/features/table/shared-styles/table-row.styles.js +0 -47
  467. package/dist/features/table/shared-styles/table-shared.styles.d.ts +0 -23
  468. package/dist/features/table/shared-styles/table-shared.styles.js +0 -33
  469. package/dist/features/table/table-cell/table-cell.d.ts +0 -59
  470. package/dist/features/table/table-cell/table-cell.js +0 -73
  471. package/dist/features/table/table-cell/table-cell.styles.d.ts +0 -1
  472. package/dist/features/table/table-cell/table-cell.styles.js +0 -46
  473. package/dist/features/table/table-column/table-column.d.ts +0 -73
  474. package/dist/features/table/table-column/table-column.js +0 -89
  475. package/dist/features/table/table-column/table-column.styles.d.ts +0 -1
  476. package/dist/features/table/table-column/table-column.styles.js +0 -51
  477. package/dist/features/table/table-header/table-header.d.ts +0 -102
  478. package/dist/features/table/table-header/table-header.js +0 -165
  479. package/dist/features/table/table-header/table-header.styles.d.ts +0 -1
  480. package/dist/features/table/table-header/table-header.styles.js +0 -147
  481. package/dist/features/table/table-item/table-item.d.ts +0 -179
  482. package/dist/features/table/table-item/table-item.js +0 -291
  483. package/dist/features/table/table-item/table-item.styles.d.ts +0 -1
  484. package/dist/features/table/table-item/table-item.styles.js +0 -404
  485. package/dist/features/table/table-managed/table-managed.d.ts +0 -19
  486. package/dist/features/table/table-managed/table-managed.js +0 -128
  487. package/dist/features/table/table-skeleton-row/table-skeleton-row.d.ts +0 -46
  488. package/dist/features/table/table-skeleton-row/table-skeleton-row.js +0 -110
  489. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.d.ts +0 -12
  490. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.js +0 -65
  491. package/dist/mixins/field-variant.mixin.d.ts +0 -22
  492. package/dist/mixins/table-row.mixin.d.ts +0 -37
  493. package/dist/mixins/table-row.mixin.js +0 -103
  494. package/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  495. package/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  496. package/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
@@ -15,7 +15,7 @@ import { ValidatorsMixin, } from "../../../mixins/validators.mixin.js";
15
15
  import { FormMixin } from "../../../mixins/form.mixin.js";
16
16
  import { FormLabelMixin, } from "../../../mixins/form-label.mixin.js";
17
17
  import { EditableMixin, } from "../../../mixins/editable.mixin.js";
18
- import { FieldVariantMixin, } from "../../../mixins/field-variant.mixin.js";
18
+ import { FieldAppearanceMixin, } from "../../../mixins/field-appearance.mixin.js";
19
19
  import { ChangeEvent } from "../../../events/change.event.js";
20
20
  import { findRichTextColor, formatRichText, getPlainTextLength, populateEditableRoot, RICH_TEXT_COLORS, serializeEditableRoot, splitAlign, } from "../../../utils/rich-text.utils.js";
21
21
  import { formLabelsStyles } from "../shared-styles/form-labels.styles.js";
@@ -467,7 +467,7 @@ function getActiveColorName(root, kind) {
467
467
  * @internal
468
468
  */
469
469
  const Base = DisabledMixin(ValidatorsMixin(LitElement));
470
- const EunomiaTextareaMixinBase = FieldVariantMixin(FormLabelMixin(ReadonlyMixin(EditableMixin(FormMixin(Base)))));
470
+ const EunomiaTextareaMixinBase = FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(EditableMixin(FormMixin(Base)))));
471
471
  /**
472
472
  * A multi-line text field, sharing its label, hint, and error chrome and
473
473
  * theming with the input component. It grows and shrinks to fit its
@@ -485,7 +485,7 @@ const EunomiaTextareaMixinBase = FieldVariantMixin(FormLabelMixin(ReadonlyMixin(
485
485
  * typed by hand. See the Accessibility tab for the full keyboard and ARIA
486
486
  * details of the toolbar and both readonly behaviors.
487
487
  *
488
- * @prop {'outline' | 'fill' | 'underline'} [variant='outline'] - The visual variant to apply to the field
488
+ * @prop {'outline' | 'flat' | 'underline'} [appearance='outline'] - How the field's surface is drawn: a bordered box, a muted background with no border, or a bottom border only
489
489
  * @prop {string} label - The title label of the field, rendered through the label component
490
490
  * @prop {string} instructions - Instructions displayed below the label
491
491
  * @prop {string} placeholder - The placeholder shown when the field is empty
@@ -495,7 +495,8 @@ const EunomiaTextareaMixinBase = FieldVariantMixin(FormLabelMixin(ReadonlyMixin(
495
495
  * @prop {boolean} [disabled=false] - Whether the field is disabled
496
496
  * @prop {boolean} [readonly=false] - Whether the field is read only
497
497
  * @prop {boolean} [required=false] - Whether the field is required
498
- * @prop {boolean} [hideError=false] - Whether the errors are hidden
498
+ * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
499
+ * @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
499
500
  * @prop {Array<import('../../../types/form-validators.type.js').Validators<string>>} validators - The list of validation rules applied to the field value
500
501
  * @prop {number} rows - The fixed number of visible rows. When omitted, the field automatically grows and shrinks its height to fit its content
501
502
  * @prop {boolean} [readonlyAvailable=false] - Whether the field can switch between a static display and an editable one
@@ -527,6 +528,8 @@ const EunomiaTextareaMixinBase = FieldVariantMixin(FormLabelMixin(ReadonlyMixin(
527
528
  * @cssprop [--field-border-color-focus] - Sets the border color on focus
528
529
  * @cssprop [--field-border-radius] - Sets the corner radius of the field
529
530
  * @cssprop [--field-padding] - Sets the padding of the field
531
+ * @cssprop [--field-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --field-padding is set
532
+ * @cssprop [--field-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --field-padding is set
530
533
  * @cssprop [--field-text-color] - Sets the text color of the field
531
534
  * @cssprop [--field-placeholder-color] - Sets the color of the placeholder
532
535
  * @cssprop [--field-error-color] - Sets the color of the error message
@@ -535,6 +538,9 @@ const EunomiaTextareaMixinBase = FieldVariantMixin(FormLabelMixin(ReadonlyMixin(
535
538
  * @cssprop [--field-edit-confirm-color] - Sets the color of the confirm button in readonly-available edit mode
536
539
  * @cssprop [--field-edit-cancel-color] - Sets the color of the cancel button in readonly-available edit mode
537
540
  * @cssprop [--field-shadow] - Sets a box shadow on the field, none by default
541
+ * @cssprop [--field-font-size] - Sets the font size of the field's value and placeholder
542
+ * @cssprop [--field-label-font-size] - Sets the font size of the label
543
+ * @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
538
544
  * @element eun-textarea
539
545
  */
540
546
  let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
@@ -996,13 +1002,13 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
996
1002
  if (this.minlength !== undefined && length > 0 && length < this.minlength) {
997
1003
  return {
998
1004
  validity: { tooShort: true },
999
- message: `Please lengthen this text to ${this.minlength} characters or more (you are currently using ${length} characters).`,
1005
+ message: this.validationDictionary.validation.tooShort(this.minlength, length),
1000
1006
  };
1001
1007
  }
1002
1008
  if (this.maxlength !== undefined && length > this.maxlength) {
1003
1009
  return {
1004
1010
  validity: { tooLong: true },
1005
- message: `Please shorten this text to ${this.maxlength} characters or less (you are currently using ${length} characters).`,
1011
+ message: this.validationDictionary.validation.tooLong(this.maxlength, length),
1006
1012
  };
1007
1013
  }
1008
1014
  return { validity: {} };
@@ -1204,7 +1210,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1204
1210
  return;
1205
1211
  }
1206
1212
  this.handleEditableInput();
1207
- this.updateComplete.then(() => {
1213
+ void this.updateComplete.then(() => {
1208
1214
  root.focus();
1209
1215
  this.syncToolbarToSelection();
1210
1216
  });
@@ -1260,7 +1266,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1260
1266
  const [align] = event.target.value;
1261
1267
  root.style.textAlign = align === "start" ? "" : align;
1262
1268
  this.handleEditableInput();
1263
- this.updateComplete.then(() => root.focus());
1269
+ void this.updateComplete.then(() => root.focus());
1264
1270
  }
1265
1271
  /**
1266
1272
  * Opens or closes a color picker popover, wiring up (or tearing down) the
@@ -1321,7 +1327,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1321
1327
  }
1322
1328
  }
1323
1329
  this.closeColorPicker();
1324
- this.updateComplete.then(() => this.fieldEl?.focus());
1330
+ void this.updateComplete.then(() => this.fieldEl?.focus());
1325
1331
  }
1326
1332
  /**
1327
1333
  * Renders the formatting toolbar, shown above the field itself (never
@@ -1539,7 +1545,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1539
1545
  ?required=${this.required}
1540
1546
  minlength=${ifDefined(this.minlength)}
1541
1547
  maxlength=${ifDefined(this.maxlength)}
1542
- aria-invalid=${!this.hideError && !this.disabled && !this.valid}
1548
+ aria-invalid=${this.showError}
1543
1549
  aria-label=${ifDefined(this.label)}
1544
1550
  aria-describedby=${describedBy || nothing}
1545
1551
  @input=${this.handleInput}
@@ -1570,7 +1576,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1570
1576
  role="textbox"
1571
1577
  aria-multiline="true"
1572
1578
  aria-required=${this.required ? "true" : nothing}
1573
- aria-invalid=${!this.hideError && !this.disabled && !this.valid}
1579
+ aria-invalid=${this.showError}
1574
1580
  aria-label=${ifDefined(this.label)}
1575
1581
  aria-describedby=${describedBy || nothing}
1576
1582
  @beforeinput=${this.handleEditableBeforeInput}
@@ -1625,7 +1631,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1625
1631
  <eun-button
1626
1632
  class="cancel"
1627
1633
  size="s"
1628
- variant="critical"
1634
+ color="critical"
1629
1635
  appearance="flat"
1630
1636
  rounded
1631
1637
  type="button"
@@ -36,7 +36,8 @@ const timePickerColumns = css `
36
36
  padding: var(--eun-space-xxs, 1.6px);
37
37
  color: var(--_iconColor, var(--eun-text-secondary, #484e61));
38
38
  cursor: pointer;
39
- transition: background-color 0.15s ease;
39
+ transition: background-color var(--eun-duration-s, 150ms)
40
+ var(--eun-easing-default, ease);
40
41
  }
41
42
  .tp-arrow:hover:not(:disabled) {
42
43
  background-color: var(
@@ -109,7 +110,8 @@ const timePickerColumns = css `
109
110
  color: var(--_placeholderColor, var(--eun-color-grey-400, #c1c9d6));
110
111
  font: inherit;
111
112
  cursor: pointer;
112
- transition: color 0.15s ease;
113
+ transition: color var(--eun-duration-s, 150ms)
114
+ var(--eun-easing-default, ease);
113
115
  }
114
116
  .tp-wheel-item.selected {
115
117
  color: var(--_textColor, var(--eun-text-color, #071621));
@@ -27,7 +27,8 @@ const timePickerList = css `
27
27
  font-variant-numeric: tabular-nums;
28
28
  text-align: start;
29
29
  cursor: pointer;
30
- transition: background-color 0.15s ease;
30
+ transition: background-color var(--eun-duration-s, 150ms)
31
+ var(--eun-easing-default, ease);
31
32
  }
32
33
  .tp-list-item:hover:not(:disabled) {
33
34
  background-color: var(
@@ -4,7 +4,7 @@ import { ReadonlyMixinInterface } from "../../../mixins/readonly.mixin.js";
4
4
  import { ValidatorsMixinInterface, Validity } from "../../../mixins/validators.mixin.js";
5
5
  import { FormMixinInterface } from "../../../mixins/form.mixin.js";
6
6
  import { FormLabelMixinInterface } from "../../../mixins/form-label.mixin.js";
7
- import { FieldVariantMixinInterface } from "../../../mixins/field-variant.mixin.js";
7
+ import { FieldAppearanceMixinInterface } from "../../../mixins/field-appearance.mixin.js";
8
8
  import { AnchorPositionMixinInterface } from "../../../mixins/anchor-position.mixin.js";
9
9
  import { LocalizableMixinInterface } from "../../../mixins/localizable.mixin.js";
10
10
  import { Constructor } from "../../../utils/constructor.type.js";
@@ -19,7 +19,7 @@ export declare const EunomiaTimePickerTagName = "eun-time-picker";
19
19
  * interface element.
20
20
  * @internal
21
21
  */
22
- type EunomiaTimePickerBase = LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface<Date | null> & FormMixinInterface<Date | null> & FormLabelMixinInterface & FieldVariantMixinInterface & AnchorPositionMixinInterface & LocalizableMixinInterface;
22
+ type EunomiaTimePickerBase = LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface<Date | null> & FormMixinInterface<Date | null> & FormLabelMixinInterface & FieldAppearanceMixinInterface & AnchorPositionMixinInterface & LocalizableMixinInterface;
23
23
  declare const EunomiaTimePickerMixinBase: Constructor<EunomiaTimePickerBase>;
24
24
  /**
25
25
  * A time field entered across segmented numeric hour and minute inputs,
@@ -39,7 +39,7 @@ declare const EunomiaTimePickerMixinBase: Constructor<EunomiaTimePickerBase>;
39
39
  * each hour, minute, and period column is its own spin button, grouped
40
40
  * under a labeled group.
41
41
  *
42
- * @prop {'outline' | 'fill' | 'underline'} [variant='outline'] - The visual variant to apply to the field
42
+ * @prop {'outline' | 'flat' | 'underline'} [appearance='outline'] - How the field's surface is drawn: a bordered box, a muted background with no border, or a bottom border only
43
43
  * @prop {Date | null} value - The picked instant
44
44
  * @prop {Date | null} defaultValue - The default value applied when the field connects, and restored on form reset
45
45
  * @prop {string} [timezone] - The time zone the hour and minute are displayed and edited in. Defaults to the runtime's own
@@ -64,7 +64,8 @@ declare const EunomiaTimePickerMixinBase: Constructor<EunomiaTimePickerBase>;
64
64
  * @prop {boolean} [disabled=false] - Whether the field is disabled
65
65
  * @prop {boolean} [readonly=false] - Whether the field is read only
66
66
  * @prop {boolean} [required=false] - Whether the field is required
67
- * @prop {boolean} [hideError=false] - Whether the errors are hidden
67
+ * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
68
+ * @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
68
69
  * @prop {Array<Validators<Date | null>>} validators - The list of custom validation rules applied to the value
69
70
  * @prop {string} [applyLabel='Apply'] - The label of the mobile modal's confirm button
70
71
  * @attr {string} [apply-label='Apply'] - The label of the mobile modal's confirm button
@@ -96,6 +97,9 @@ declare const EunomiaTimePickerMixinBase: Constructor<EunomiaTimePickerBase>;
96
97
  * @cssprop [--time-picker-selected-color] - Sets the text color of the selected item in the list panel mode
97
98
  * @cssprop [--time-picker-panel-background] - Sets the background color of the popover panel
98
99
  * @cssprop [--time-picker-panel-transition-duration=200ms] - Sets the duration of the popover panel's open and close transition
100
+ * @cssprop [--field-font-size] - Sets the font size of the field's value and placeholder
101
+ * @cssprop [--field-label-font-size] - Sets the font size of the label
102
+ * @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
99
103
  * @element eun-time-picker
100
104
  */
101
105
  export declare class EunomiaTimePicker extends EunomiaTimePickerMixinBase {
@@ -429,7 +433,7 @@ export declare class EunomiaTimePicker extends EunomiaTimePickerMixinBase {
429
433
  * The popover's open/close animation duration, in ms : `0` if
430
434
  * `noAnimation` is set or the browser reports `prefers-reduced-motion:
431
435
  * reduce`, otherwise `--time-picker-panel-transition-duration` (default
432
- * `200ms`).
436
+ * `--eun-duration-m`).
433
437
  *
434
438
  * @param el the popover to read `--time-picker-panel-transition-duration` off.
435
439
  * @private
@@ -9,9 +9,9 @@ import { html, LitElement, nothing } from "lit";
9
9
  import { DisabledMixin, } from "../../../mixins/disabled.mixin.js";
10
10
  import { ReadonlyMixin, } from "../../../mixins/readonly.mixin.js";
11
11
  import { ValidatorsMixin, } from "../../../mixins/validators.mixin.js";
12
- import { FormMixin } from "../../../mixins/form.mixin.js";
12
+ import { FormMixin, hasErrorDisplayChange, } from "../../../mixins/form.mixin.js";
13
13
  import { FormLabelMixin, } from "../../../mixins/form-label.mixin.js";
14
- import { FieldVariantMixin, } from "../../../mixins/field-variant.mixin.js";
14
+ import { FieldAppearanceMixin, } from "../../../mixins/field-appearance.mixin.js";
15
15
  import { AnchorPositionMixin, } from "../../../mixins/anchor-position.mixin.js";
16
16
  import { LocalizableMixin, } from "../../../mixins/localizable.mixin.js";
17
17
  import { ChangeEvent } from "../../../events/change.event.js";
@@ -24,6 +24,8 @@ import { timePickerColumnsStyles } from "./time-picker-columns.styles.js";
24
24
  import { renderTimePickerColumns } from "./time-picker-columns.js";
25
25
  import { timePickerListStyles } from "./time-picker-list.styles.js";
26
26
  import { renderTimePickerList } from "./time-picker-list.js";
27
+ import { resolveDurationMs, resolveEasing, } from "../../../utils/motion.utils.js";
28
+ import { mediaBelow } from "../../../breakpoints.js";
27
29
  /**
28
30
  * Tag name of the time-picker component.
29
31
  */
@@ -34,7 +36,7 @@ export const EunomiaTimePickerTagName = "eun-time-picker";
34
36
  * @internal
35
37
  */
36
38
  const Base = DisabledMixin(ValidatorsMixin(LitElement));
37
- const EunomiaTimePickerMixinBase = LocalizableMixin(AnchorPositionMixin(FieldVariantMixin(FormLabelMixin(ReadonlyMixin(FormMixin(Base))))));
39
+ const EunomiaTimePickerMixinBase = LocalizableMixin(AnchorPositionMixin(FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(FormMixin(Base))))));
38
40
  /**
39
41
  * A time field entered across segmented numeric hour and minute inputs,
40
42
  * plus an AM/PM toggle segment at a 12-hour format, with a trailing clock
@@ -53,7 +55,7 @@ const EunomiaTimePickerMixinBase = LocalizableMixin(AnchorPositionMixin(FieldVar
53
55
  * each hour, minute, and period column is its own spin button, grouped
54
56
  * under a labeled group.
55
57
  *
56
- * @prop {'outline' | 'fill' | 'underline'} [variant='outline'] - The visual variant to apply to the field
58
+ * @prop {'outline' | 'flat' | 'underline'} [appearance='outline'] - How the field's surface is drawn: a bordered box, a muted background with no border, or a bottom border only
57
59
  * @prop {Date | null} value - The picked instant
58
60
  * @prop {Date | null} defaultValue - The default value applied when the field connects, and restored on form reset
59
61
  * @prop {string} [timezone] - The time zone the hour and minute are displayed and edited in. Defaults to the runtime's own
@@ -78,7 +80,8 @@ const EunomiaTimePickerMixinBase = LocalizableMixin(AnchorPositionMixin(FieldVar
78
80
  * @prop {boolean} [disabled=false] - Whether the field is disabled
79
81
  * @prop {boolean} [readonly=false] - Whether the field is read only
80
82
  * @prop {boolean} [required=false] - Whether the field is required
81
- * @prop {boolean} [hideError=false] - Whether the errors are hidden
83
+ * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
84
+ * @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
82
85
  * @prop {Array<Validators<Date | null>>} validators - The list of custom validation rules applied to the value
83
86
  * @prop {string} [applyLabel='Apply'] - The label of the mobile modal's confirm button
84
87
  * @attr {string} [apply-label='Apply'] - The label of the mobile modal's confirm button
@@ -110,6 +113,9 @@ const EunomiaTimePickerMixinBase = LocalizableMixin(AnchorPositionMixin(FieldVar
110
113
  * @cssprop [--time-picker-selected-color] - Sets the text color of the selected item in the list panel mode
111
114
  * @cssprop [--time-picker-panel-background] - Sets the background color of the popover panel
112
115
  * @cssprop [--time-picker-panel-transition-duration=200ms] - Sets the duration of the popover panel's open and close transition
116
+ * @cssprop [--field-font-size] - Sets the font size of the field's value and placeholder
117
+ * @cssprop [--field-label-font-size] - Sets the font size of the label
118
+ * @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
113
119
  * @element eun-time-picker
114
120
  */
115
121
  let EunomiaTimePicker = class EunomiaTimePicker extends EunomiaTimePickerMixinBase {
@@ -227,7 +233,10 @@ let EunomiaTimePicker = class EunomiaTimePicker extends EunomiaTimePickerMixinBa
227
233
  const format = this.resolvedHourFormat();
228
234
  if (isPartiallyFilled(this.segments) &&
229
235
  !clockSegmentsToTime(this.segments, format)) {
230
- return { validity: { badInput: true }, message: "Enter a valid time" };
236
+ return {
237
+ validity: { badInput: true },
238
+ message: this.dictionary.validation.invalidTime,
239
+ };
231
240
  }
232
241
  if (this.value) {
233
242
  const { hour, minute } = getZonedParts(this.value, this.timezone);
@@ -285,7 +294,7 @@ let EunomiaTimePicker = class EunomiaTimePicker extends EunomiaTimePickerMixinBa
285
294
  this.isModalOpen = true;
286
295
  return;
287
296
  }
288
- this.updateComplete.then(() => {
297
+ void this.updateComplete.then(() => {
289
298
  const popover = this.popoverEl;
290
299
  if (!popover) {
291
300
  return;
@@ -318,7 +327,7 @@ let EunomiaTimePicker = class EunomiaTimePicker extends EunomiaTimePickerMixinBa
318
327
  });
319
328
  }
320
329
  this.observeAnchorVisibility(this.fieldWrapperEl, () => this.closePopover());
321
- this.updateComplete.then(() => this.panelMode === "list"
330
+ void this.updateComplete.then(() => this.panelMode === "list"
322
331
  ? this.focusListSelection()
323
332
  : this.focusFirstSpinbutton());
324
333
  return;
@@ -469,10 +478,8 @@ let EunomiaTimePicker = class EunomiaTimePicker extends EunomiaTimePickerMixinBa
469
478
  */
470
479
  updated(changed) {
471
480
  super.updated(changed);
472
- if (changed.has("valid") ||
473
- changed.has("hideError") ||
474
- changed.has("disabled")) {
475
- this.setAttribute("aria-invalid", String(!this.hideError && !this.disabled && !this.valid));
481
+ if (hasErrorDisplayChange(changed)) {
482
+ this.setAttribute("aria-invalid", String(this.showError));
476
483
  }
477
484
  }
478
485
  /**
@@ -498,7 +505,7 @@ let EunomiaTimePicker = class EunomiaTimePicker extends EunomiaTimePickerMixinBa
498
505
  * @private
499
506
  */
500
507
  isMobileViewport() {
501
- return window.matchMedia("(max-width: 767px)").matches;
508
+ return window.matchMedia(mediaBelow("tablet")).matches;
502
509
  }
503
510
  /**
504
511
  * The hour format actually in effect, resolving `hourFormat`/`locale`
@@ -599,7 +606,7 @@ let EunomiaTimePicker = class EunomiaTimePicker extends EunomiaTimePickerMixinBa
599
606
  * The popover's open/close animation duration, in ms : `0` if
600
607
  * `noAnimation` is set or the browser reports `prefers-reduced-motion:
601
608
  * reduce`, otherwise `--time-picker-panel-transition-duration` (default
602
- * `200ms`).
609
+ * `--eun-duration-m`).
603
610
  *
604
611
  * @param el the popover to read `--time-picker-panel-transition-duration` off.
605
612
  * @private
@@ -609,18 +616,7 @@ let EunomiaTimePicker = class EunomiaTimePicker extends EunomiaTimePickerMixinBa
609
616
  window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
610
617
  return 0;
611
618
  }
612
- const raw = getComputedStyle(el)
613
- .getPropertyValue("--time-picker-panel-transition-duration")
614
- .trim();
615
- if (raw) {
616
- const parsed = raw.endsWith("ms")
617
- ? Number.parseFloat(raw)
618
- : Number.parseFloat(raw) * 1000;
619
- if (Number.isFinite(parsed) && parsed >= 0) {
620
- return parsed;
621
- }
622
- }
623
- return 200;
619
+ return resolveDurationMs(el, "--time-picker-panel-transition-duration", "m", 200);
624
620
  }
625
621
  /**
626
622
  * Plays the fade/scaleY-in, replacing any {@link popoverAnimation}
@@ -638,7 +634,7 @@ let EunomiaTimePicker = class EunomiaTimePicker extends EunomiaTimePickerMixinBa
638
634
  this.popoverAnimation = popover.animate([
639
635
  { opacity: 0, transform: "scaleY(0.01)" },
640
636
  { opacity: 1, transform: "scaleY(1)" },
641
- ], { duration, easing: "ease", fill: "forwards" });
637
+ ], { duration, easing: resolveEasing(popover), fill: "forwards" });
642
638
  }
643
639
  /**
644
640
  * Closes the popover, if open — accepting an instant, unanimated close
@@ -676,7 +672,7 @@ let EunomiaTimePicker = class EunomiaTimePicker extends EunomiaTimePickerMixinBa
676
672
  const animation = popover.animate([
677
673
  { opacity: 1, transform: "scaleY(1)" },
678
674
  { opacity: 0, transform: "scaleY(0.01)" },
679
- ], { duration, easing: "ease", fill: "forwards" });
675
+ ], { duration, easing: resolveEasing(popover), fill: "forwards" });
680
676
  this.popoverAnimation = animation;
681
677
  animation.finished
682
678
  .then(() => {
@@ -949,7 +945,7 @@ let EunomiaTimePicker = class EunomiaTimePicker extends EunomiaTimePickerMixinBa
949
945
  renderTimezoneLabel() {
950
946
  if (this.hideTimezoneLabel ||
951
947
  !this.timezone ||
952
- isSameTimeZone(this.timezone, undefined)) {
948
+ isSameTimeZone(this.timezone)) {
953
949
  return nothing;
954
950
  }
955
951
  const label = getTimeZoneOffsetLabel(this.value ?? new Date(), this.timezone, {
@@ -28,8 +28,8 @@ const timePicker = css `
28
28
  outline: 1px solid transparent;
29
29
  box-sizing: border-box;
30
30
  transition:
31
- border-color 0.15s ease,
32
- outline-color 0.15s ease;
31
+ border-color var(--eun-duration-s, 150ms) var(--eun-easing-default, ease),
32
+ outline-color var(--eun-duration-s, 150ms) var(--eun-easing-default, ease);
33
33
  }
34
34
  :host(:not([aria-readonly="true"]))
35
35
  #field-wrapper:hover:not(:has(:disabled)) {
@@ -55,22 +55,22 @@ const timePicker = css `
55
55
  :host([aria-invalid="true"]) #field-wrapper:focus-within {
56
56
  outline-color: var(--_errorColor);
57
57
  }
58
- :host([variant="fill"]) {
58
+ :host([appearance="flat"]) {
59
59
  --_background: var(--field-background, var(--eun-content-hover, #edeff0));
60
60
  }
61
- :host([variant="fill"]) #field-wrapper {
61
+ :host([appearance="flat"]) #field-wrapper {
62
62
  border-color: transparent;
63
63
  }
64
- :host([variant="fill"][aria-invalid="true"]) #field-wrapper {
64
+ :host([appearance="flat"][aria-invalid="true"]) #field-wrapper {
65
65
  box-shadow: inset 0 0 0 var(--eun-border-width-m, 1.5px) var(--_errorColor);
66
66
  }
67
- :host([variant="underline"]) #field-wrapper {
67
+ :host([appearance="underline"]) #field-wrapper {
68
68
  border: none;
69
69
  outline: none;
70
70
  border-bottom: var(--eun-border-width-m, 1.5px) solid var(--_borderColor);
71
71
  border-radius: 0;
72
72
  }
73
- :host([variant="underline"]) #field-wrapper:focus-within {
73
+ :host([appearance="underline"]) #field-wrapper:focus-within {
74
74
  outline: none;
75
75
  }
76
76
  .segment-group {
@@ -120,7 +120,8 @@ const timePicker = css `
120
120
  color: var(--_iconColor);
121
121
  outline: 2px solid transparent;
122
122
  cursor: pointer;
123
- transition: outline 0.2s ease-out;
123
+ transition: outline var(--eun-duration-m, 200ms)
124
+ var(--eun-easing-out, ease-out);
124
125
  }
125
126
  #clock-trigger:hover:not(:disabled) {
126
127
  color: var(--_textColor);
@@ -20,14 +20,19 @@ export type EunomiaAnimateAnimation = "none" | "fade" | "scroll-right" | "scroll
20
20
  *
21
21
  * @slot [default] - The content to animate on scroll. Always present in the DOM and readable by assistive technology, regardless of viewport intersection
22
22
  * @prop {EunomiaAnimateAnimation} [animation='fade'] - Which transition to apply. None renders the content immediately, with no transition
23
- * @prop {number} [duration=600] - The transition duration, in milliseconds
23
+ * @prop {number} [duration=1000] - The transition duration, in milliseconds. Left unset, it follows --animate-duration
24
24
  * @prop {number} [delay=0] - The transition delay, in milliseconds
25
+ * @prop {number} [tabletDelay] - Overrides `delay` below the tablet breakpoint (width < 768px)
26
+ * @attr {number} [tablet-delay] - Overrides `delay` below the tablet breakpoint (width < 768px)
27
+ * @prop {number} [mobileDelay] - Overrides `delay` (and `tabletDelay`, if also set) below the mobile breakpoint (width < 600px)
28
+ * @attr {number} [mobile-delay] - Overrides `delay` (and `tabletDelay`, if also set) below the mobile breakpoint (width < 600px)
25
29
  * @prop {boolean} [once=true] - Whether the animation plays only the first time it enters the viewport, or replays every time it re-enters
26
30
  * @prop {number} [threshold=0.1] - The ratio of the element, from 0 to 1, that must be visible before the animation triggers
27
31
  * @prop {string} [rootMargin='0px'] - The margin applied around the viewport before threshold is evaluated, accepting CSS-like values such as -50px 0px
28
- * @prop {EunomiaAnimateAnimation} [tabletAnimation] - Overrides `animation` at tablet-width viewports and narrower (max-width: 768px). Left unset, the viewport keeps using `animation`
29
- * @prop {EunomiaAnimateAnimation} [mobileAnimation] - Overrides `animation` (and `tabletAnimation`, if also set) at mobile-width viewports and narrower (max-width: 600px)
32
+ * @prop {EunomiaAnimateAnimation} [tabletAnimation] - Overrides `animation` below the tablet breakpoint (width < 768px). Left unset, the viewport keeps using `animation`
33
+ * @prop {EunomiaAnimateAnimation} [mobileAnimation] - Overrides `animation` (and `tabletAnimation`, if also set) below the mobile breakpoint (width < 600px)
30
34
  * @cssprop [--animate-distance] - Sets the travel distance for the scroll and faded-scroll animations
35
+ * @cssprop [--animate-duration=1000ms] - Sets the transition duration of every animate that has no duration of its own, for example once for the whole site
31
36
  * @element eun-animate
32
37
  */
33
38
  export declare class EunomiaAnimate extends LitElement {
@@ -47,15 +52,30 @@ export declare class EunomiaAnimate extends LitElement {
47
52
  */
48
53
  animation: EunomiaAnimateAnimation;
49
54
  /**
50
- * Transition duration, in milliseconds.
51
- * @default 600
55
+ * Transition duration, in milliseconds. Left `undefined`, the stylesheet
56
+ * applies `--animate-duration`, `1000ms` by default.
57
+ * @default undefined
52
58
  */
53
- duration: number;
59
+ duration?: number;
54
60
  /**
55
61
  * Transition delay, in milliseconds.
56
62
  * @default 0
57
63
  */
58
64
  delay: number;
65
+ /**
66
+ * Overrides `delay` at tablet-width viewports and narrower, with the same
67
+ * `@media` switch as {@link tabletAnimation}. A stagger between cards in
68
+ * a desktop grid, for example, makes no sense once they're stacked.
69
+ * @default undefined
70
+ */
71
+ tabletDelay?: number;
72
+ /**
73
+ * Overrides `delay` (and `tabletDelay`, if also set) at mobile-width
74
+ * viewports and narrower, with the same `@media` switch as
75
+ * {@link mobileAnimation}.
76
+ * @default undefined
77
+ */
78
+ mobileDelay?: number;
59
79
  /**
60
80
  * Whether the animation plays only the first time it enters the
61
81
  * viewport (unobserved right after), or replays every time it re-enters.
@@ -75,8 +95,8 @@ export declare class EunomiaAnimate extends LitElement {
75
95
  */
76
96
  rootMargin: string;
77
97
  /**
78
- * Overrides `animation` at tablet-width viewports and narrower
79
- * (`max-width: 768px`, matching `EUNOMIA_BREAKPOINTS.tablet`). Purely a
98
+ * Overrides `animation` below the tablet breakpoint
99
+ * (`mediaBelow("tablet")`, `width < 768px`). Purely a
80
100
  * CSS `@media` switch (`animate.styles.ts`, mirrored in
81
101
  * `animate-ssr.css` for the pre-hydration state) — never read from JS,
82
102
  * so there's no `matchMedia` listener to keep in sync with the actual
@@ -87,9 +107,9 @@ export declare class EunomiaAnimate extends LitElement {
87
107
  */
88
108
  tabletAnimation?: EunomiaAnimateAnimation;
89
109
  /**
90
- * Overrides `animation` (and `tabletAnimation`, if also set) at
91
- * mobile-width viewports and narrower (`max-width: 600px`, matching
92
- * `EUNOMIA_BREAKPOINTS.mobile`). Same pure-CSS mechanism as
110
+ * Overrides `animation` (and `tabletAnimation`, if also set)
111
+ * below the mobile breakpoint (`mediaBelow("mobile")`,
112
+ * `width < 600px`). Same pure-CSS mechanism as
93
113
  * {@link tabletAnimation}.
94
114
  * @default undefined
95
115
  */
@@ -129,6 +149,16 @@ export declare class EunomiaAnimate extends LitElement {
129
149
  * @private
130
150
  */
131
151
  private teardownObserver;
152
+ /**
153
+ * Forwards `duration`, `delay` and the per-breakpoint delays to the
154
+ * host's transition through a shadow-internal `<style>`, only when they
155
+ * differ from the stylesheet's own defaults : an inline style on the host
156
+ * would be a hydration mismatch for an SSR framework, since the server
157
+ * never renders it. The breakpoints match {@link tabletAnimation} and
158
+ * {@link mobileAnimation}.
159
+ * @private
160
+ */
161
+ private renderTiming;
132
162
  render(): TemplateResult;
133
163
  }
134
164
  declare global {
@@ -5,8 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { customElement, property } from "lit/decorators.js";
8
- import { html, LitElement } from "lit";
8
+ import { html, LitElement, nothing } from "lit";
9
9
  import { animateStyles } from "./animate.styles.js";
10
+ import { mediaBelow } from "../../../breakpoints.js";
10
11
  /**
11
12
  * Tag name of the animate component.
12
13
  */
@@ -31,14 +32,19 @@ const IN_VIEW_ATTR = "in-view";
31
32
  *
32
33
  * @slot [default] - The content to animate on scroll. Always present in the DOM and readable by assistive technology, regardless of viewport intersection
33
34
  * @prop {EunomiaAnimateAnimation} [animation='fade'] - Which transition to apply. None renders the content immediately, with no transition
34
- * @prop {number} [duration=600] - The transition duration, in milliseconds
35
+ * @prop {number} [duration=1000] - The transition duration, in milliseconds. Left unset, it follows --animate-duration
35
36
  * @prop {number} [delay=0] - The transition delay, in milliseconds
37
+ * @prop {number} [tabletDelay] - Overrides `delay` below the tablet breakpoint (width < 768px)
38
+ * @attr {number} [tablet-delay] - Overrides `delay` below the tablet breakpoint (width < 768px)
39
+ * @prop {number} [mobileDelay] - Overrides `delay` (and `tabletDelay`, if also set) below the mobile breakpoint (width < 600px)
40
+ * @attr {number} [mobile-delay] - Overrides `delay` (and `tabletDelay`, if also set) below the mobile breakpoint (width < 600px)
36
41
  * @prop {boolean} [once=true] - Whether the animation plays only the first time it enters the viewport, or replays every time it re-enters
37
42
  * @prop {number} [threshold=0.1] - The ratio of the element, from 0 to 1, that must be visible before the animation triggers
38
43
  * @prop {string} [rootMargin='0px'] - The margin applied around the viewport before threshold is evaluated, accepting CSS-like values such as -50px 0px
39
- * @prop {EunomiaAnimateAnimation} [tabletAnimation] - Overrides `animation` at tablet-width viewports and narrower (max-width: 768px). Left unset, the viewport keeps using `animation`
40
- * @prop {EunomiaAnimateAnimation} [mobileAnimation] - Overrides `animation` (and `tabletAnimation`, if also set) at mobile-width viewports and narrower (max-width: 600px)
44
+ * @prop {EunomiaAnimateAnimation} [tabletAnimation] - Overrides `animation` below the tablet breakpoint (width < 768px). Left unset, the viewport keeps using `animation`
45
+ * @prop {EunomiaAnimateAnimation} [mobileAnimation] - Overrides `animation` (and `tabletAnimation`, if also set) below the mobile breakpoint (width < 600px)
41
46
  * @cssprop [--animate-distance] - Sets the travel distance for the scroll and faded-scroll animations
47
+ * @cssprop [--animate-duration=1000ms] - Sets the transition duration of every animate that has no duration of its own, for example once for the whole site
42
48
  * @element eun-animate
43
49
  */
44
50
  let EunomiaAnimate = class EunomiaAnimate extends LitElement {
@@ -51,11 +57,6 @@ let EunomiaAnimate = class EunomiaAnimate extends LitElement {
51
57
  * @default fade
52
58
  */
53
59
  this.animation = "fade";
54
- /**
55
- * Transition duration, in milliseconds.
56
- * @default 600
57
- */
58
- this.duration = 600;
59
60
  /**
60
61
  * Transition delay, in milliseconds.
61
62
  * @default 0
@@ -105,12 +106,6 @@ let EunomiaAnimate = class EunomiaAnimate extends LitElement {
105
106
  }
106
107
  updated(changed) {
107
108
  super.updated(changed);
108
- if (changed.has("duration")) {
109
- this.style.setProperty("--_duration", `${this.duration}ms`);
110
- }
111
- if (changed.has("delay")) {
112
- this.style.setProperty("--_delay", `${this.delay}ms`);
113
- }
114
109
  if (this.isConnected &&
115
110
  (changed.has("animation") ||
116
111
  changed.has("tabletAnimation") ||
@@ -155,8 +150,39 @@ let EunomiaAnimate = class EunomiaAnimate extends LitElement {
155
150
  this.observer?.disconnect();
156
151
  this.observer = undefined;
157
152
  }
153
+ /**
154
+ * Forwards `duration`, `delay` and the per-breakpoint delays to the
155
+ * host's transition through a shadow-internal `<style>`, only when they
156
+ * differ from the stylesheet's own defaults : an inline style on the host
157
+ * would be a hydration mismatch for an SSR framework, since the server
158
+ * never renders it. The breakpoints match {@link tabletAnimation} and
159
+ * {@link mobileAnimation}.
160
+ * @private
161
+ */
162
+ renderTiming() {
163
+ const host = [
164
+ this.duration !== undefined
165
+ ? `--_duration: ${Number(this.duration)}ms;`
166
+ : "",
167
+ this.delay !== 0 ? `--_delay: ${Number(this.delay)}ms;` : "",
168
+ ].join("");
169
+ const rules = [
170
+ host ? `:host { ${host} }` : "",
171
+ this.tabletDelay !== undefined
172
+ ? `@media ${mediaBelow("tablet")} { :host { --_delay: ${Number(this.tabletDelay)}ms; } }`
173
+ : "",
174
+ this.mobileDelay !== undefined
175
+ ? `@media ${mediaBelow("mobile")} { :host { --_delay: ${Number(this.mobileDelay)}ms; } }`
176
+ : "",
177
+ ].join("");
178
+ return rules
179
+ ? html `<style>
180
+ ${rules}
181
+ </style>`
182
+ : nothing;
183
+ }
158
184
  render() {
159
- return html `<slot></slot>`;
185
+ return html `${this.renderTiming()}<slot></slot>`;
160
186
  }
161
187
  };
162
188
  /**
@@ -176,6 +202,12 @@ __decorate([
176
202
  __decorate([
177
203
  property({ type: Number })
178
204
  ], EunomiaAnimate.prototype, "delay", void 0);
205
+ __decorate([
206
+ property({ type: Number, attribute: "tablet-delay" })
207
+ ], EunomiaAnimate.prototype, "tabletDelay", void 0);
208
+ __decorate([
209
+ property({ type: Number, attribute: "mobile-delay" })
210
+ ], EunomiaAnimate.prototype, "mobileDelay", void 0);
179
211
  __decorate([
180
212
  property({ type: Boolean })
181
213
  ], EunomiaAnimate.prototype, "once", void 0);