@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
@@ -7,6 +7,7 @@ import { FormLabelMixinInterface } from "../../../mixins/form-label.mixin.js";
7
7
  import { EditableMixinInterface } from "../../../mixins/editable.mixin.js";
8
8
  import { FieldAppearanceMixinInterface } from "../../../mixins/field-appearance.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 textarea component.
12
13
  */
@@ -15,7 +16,7 @@ export declare const EunomiaTextareaTagName = "eun-textarea";
15
16
  * Type of the textarea base used to declare every necessary Mixin interface elements.
16
17
  * @internal
17
18
  */
18
- type EunomiaTextareaBase = LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface<string> & FormMixinInterface<string> & EditableMixinInterface & FormLabelMixinInterface & FieldAppearanceMixinInterface;
19
+ type EunomiaTextareaBase = LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface<string> & FormMixinInterface<string> & EditableMixinInterface & FormLabelMixinInterface & FieldAppearanceMixinInterface & LocalizableMixinInterface;
19
20
  declare const EunomiaTextareaMixinBase: Constructor<EunomiaTextareaBase>;
20
21
  /**
21
22
  * A multi-line text field, sharing its label, hint, and error chrome and
@@ -44,13 +45,15 @@ declare const EunomiaTextareaMixinBase: Constructor<EunomiaTextareaBase>;
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 the field 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<string>>} validators - The list of validation rules applied to the field value
49
52
  * @prop {number} rows - The fixed number of visible rows. When omitted, the field automatically grows and shrinks its height to fit its content
50
53
  * @prop {boolean} [readonlyAvailable=false] - Whether the field can switch between a static display and an editable one
51
54
  * @attr {boolean} [readonly-available=false] - Whether the field can switch between a static display and an editable one
52
55
  * @prop {boolean} [formatting=false] - Switches the field to a rich text surface with a formatting toolbar above it, and, combined with readonlyAvailable, renders the static display as formatted rich text instead of raw source
53
- * @prop {string} [formatToolbarLabel='Text formatting'] - The accessible label of the bold, italic, and underline toggle group
56
+ * @prop {string} [formatToolbarLabel='Text formatting'] - The accessible label of the formatting toolbar
54
57
  * @prop {string} [formatBoldLabel='Bold'] - The accessible label of the bold toggle
55
58
  * @prop {string} [formatItalicLabel='Italic'] - The accessible label of the italic toggle
56
59
  * @prop {string} [formatUnderlineLabel='Underline'] - The accessible label of the underline toggle
@@ -65,9 +68,9 @@ declare const EunomiaTextareaMixinBase: Constructor<EunomiaTextareaBase>;
65
68
  * @prop {string} [autocomplete='off'] - The native autocomplete attribute forwarded to the field
66
69
  * @prop {number} minlength - The native minimum length constraint forwarded to the field
67
70
  * @prop {number} maxlength - The field's maximum length. Forwarded natively when not formatting, and enforced manually otherwise. Either way, a live character counter is shown under the field
68
- * @prop {string} [emptyValueLabel='No value set'] - Text displayed in place of the value when readonly and empty
69
- * @prop {string} [confirmLabel='Save'] - The label of the confirm button in edit mode
70
- * @prop {string} [cancelLabel='Cancel'] - The label of the cancel button in edit mode
71
+ * @prop {string} [emptyValueLabel] - Text displayed in place of the value when readonly and empty. Defaults to the localized string for the current locale (English: "No value set")
72
+ * @prop {string} [confirmLabel] - The label of the confirm button in edit mode. Defaults to the localized string for the current locale (English: "Save")
73
+ * @prop {string} [cancelLabel] - The label of the cancel button in edit mode. Defaults to the localized string for the current locale (English: "Cancel")
71
74
  * @fires {ChangeEvent} eunchange - Fired on every value change, including one applied through the formatting toolbar
72
75
  * @fires {CommitEvent} euncommit - Fired when an edit is confirmed in readonlyAvailable mode
73
76
  * @cssprop [--field-background] - Sets the background color of the field
@@ -76,6 +79,8 @@ declare const EunomiaTextareaMixinBase: Constructor<EunomiaTextareaBase>;
76
79
  * @cssprop [--field-border-color-focus] - Sets the border color on focus
77
80
  * @cssprop [--field-border-radius] - Sets the corner radius of the field
78
81
  * @cssprop [--field-padding] - Sets the padding of the field
82
+ * @cssprop [--field-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --field-padding is set
83
+ * @cssprop [--field-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --field-padding is set
79
84
  * @cssprop [--field-text-color] - Sets the text color of the field
80
85
  * @cssprop [--field-placeholder-color] - Sets the color of the placeholder
81
86
  * @cssprop [--field-error-color] - Sets the color of the error message
@@ -84,6 +89,9 @@ declare const EunomiaTextareaMixinBase: Constructor<EunomiaTextareaBase>;
84
89
  * @cssprop [--field-edit-confirm-color] - Sets the color of the confirm button in readonly-available edit mode
85
90
  * @cssprop [--field-edit-cancel-color] - Sets the color of the cancel button in readonly-available edit mode
86
91
  * @cssprop [--field-shadow] - Sets a box shadow on the field, none by default
92
+ * @cssprop [--field-font-size] - Sets the font size of the field's value and placeholder
93
+ * @cssprop [--field-label-font-size] - Sets the font size of the label
94
+ * @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
87
95
  * @element eun-textarea
88
96
  */
89
97
  export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
@@ -124,7 +132,7 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
124
132
  */
125
133
  formatting: boolean;
126
134
  /**
127
- * Accessible label of the Bold/Italic/Underline toggle group.
135
+ * Accessible label of the formatting toolbar.
128
136
  * @default Text formatting
129
137
  */
130
138
  formatToolbarLabel: string;
@@ -207,19 +215,19 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
207
215
  maxlength?: number;
208
216
  /**
209
217
  * Text displayed in place of the value when readonly and empty.
210
- * @default No value set
218
+ * Falls back to the localized string for the current locale when unset.
211
219
  */
212
- emptyValueLabel: string;
220
+ emptyValueLabel?: string;
213
221
  /**
214
222
  * Label of the confirm button in edit mode.
215
- * @default Save
223
+ * Falls back to the localized string for the current locale when unset.
216
224
  */
217
- confirmLabel: string;
225
+ confirmLabel?: string;
218
226
  /**
219
227
  * Label of the cancel button in edit mode.
220
- * @default Cancel
228
+ * Falls back to the localized string for the current locale when unset.
221
229
  */
222
- cancelLabel: string;
230
+ cancelLabel?: string;
223
231
  /**
224
232
  * Which color picker (text-color or highlight) is currently open, if any.
225
233
  * @private
@@ -290,19 +298,18 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
290
298
  * @readonly
291
299
  */
292
300
  private readonly toolbarEl?;
293
- connectedCallback(): void;
294
- disconnectedCallback(): void;
295
301
  /**
296
- * Redirects focus to the native field whenever the host itself receives
297
- * it. The host stays in the tab order (`DisabledMixin`) rather than
298
- * being excluded via `tabindex="-1"` — for this form-associated
299
- * component, that turned out to break Tab from reaching the field
300
- * entirely, instead of just skipping the host. Redirecting keeps a
301
- * single, real tab stop from the user's perspective without touching
302
- * that tab order.
303
- * @private
302
+ * Index, among {@link toolbarControls}, of the control holding the
303
+ * toolbar's single Tab stop.
304
+ * @internal
304
305
  */
305
- private handleHostFocus;
306
+ private toolbarFocusIndex;
307
+ /**
308
+ * Pending {@link applyToolbarRoving} call.
309
+ * @internal
310
+ */
311
+ private toolbarRovingTimer?;
312
+ disconnectedCallback(): void;
306
313
  /**
307
314
  * Lifecycle hook called after the first render : populates the
308
315
  * contenteditable surface (when `formatting`) and fits the field height
@@ -337,6 +344,12 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
337
344
  * @private
338
345
  */
339
346
  private checkEditableValidators;
347
+ /**
348
+ * The host is never a tab stop of its own : sequential navigation goes
349
+ * straight to the controls inside, in both directions, and
350
+ * {@link focus} covers a direct call on the host.
351
+ */
352
+ protected get hostTabStop(): boolean;
340
353
  /**
341
354
  * Returns the field element to focus/anchor on validation errors.
342
355
  *
@@ -503,6 +516,23 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
503
516
  * @private
504
517
  */
505
518
  private toggleColorPicker;
519
+ /**
520
+ * The swatches of the open color picker, in display order.
521
+ *
522
+ * @returns the swatch buttons, empty while no picker is open.
523
+ * @private
524
+ */
525
+ private colorSwatches;
526
+ /**
527
+ * Keyboard support of the open color picker, following the menu pattern
528
+ * : arrows move between swatches (wrapping), Home/End jump to the first
529
+ * and last, Escape closes it, and Tab closes it before leaving it. Both
530
+ * return the focus to the picker's trigger.
531
+ *
532
+ * @param event the keyboard event.
533
+ * @private
534
+ */
535
+ private handleColorPickerKeydown;
506
536
  /**
507
537
  * Closes whichever color picker is open, if any.
508
538
  * @private
@@ -526,6 +556,48 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
526
556
  * @private
527
557
  */
528
558
  private selectColor;
559
+ /**
560
+ * The toolbar's controls, in visual order : every format and alignment
561
+ * toggle, then both color picker triggers.
562
+ *
563
+ * @returns the controls, empty while the toolbar isn't rendered.
564
+ * @private
565
+ */
566
+ private toolbarControls;
567
+ /**
568
+ * Applies the toolbar's roving `tabindex` once the toggle groups have
569
+ * applied their own (which they do after their items' updates), so the
570
+ * whole toolbar stays a single Tab stop.
571
+ * @private
572
+ */
573
+ private scheduleToolbarRoving;
574
+ /**
575
+ * Makes the control at {@link toolbarFocusIndex} the toolbar's only Tab
576
+ * stop. Left alone while the toolbar is disabled, every control then
577
+ * being out of the Tab order already.
578
+ * @private
579
+ */
580
+ private applyToolbarRoving;
581
+ /**
582
+ * Remembers the toolbar control receiving the focus, so Tab comes back
583
+ * to it.
584
+ *
585
+ * @param event the focus event.
586
+ * @private
587
+ */
588
+ private handleToolbarFocusIn;
589
+ /**
590
+ * Keyboard support of the toolbar, following the toolbar pattern :
591
+ * Left/Right move between its controls (wrapping), Home/End jump to the
592
+ * first and last, and Enter/Space pick an alignment. Listened to in the
593
+ * capture phase, ahead of the alignment group's own arrow handling.
594
+ * Up/Down are left to the alignment group, which selects the next
595
+ * alignment.
596
+ *
597
+ * @param event the keyboard event.
598
+ * @private
599
+ */
600
+ private readonly handleToolbarKeydown;
529
601
  /**
530
602
  * Renders the formatting toolbar, shown above the field itself (never
531
603
  * above the readonly display) when `formatting` is set.
@@ -21,6 +21,7 @@ import { findRichTextColor, formatRichText, getPlainTextLength, populateEditable
21
21
  import { formLabelsStyles } from "../shared-styles/form-labels.styles.js";
22
22
  import { textareaStyles } from "./textarea.styles.js";
23
23
  import { pickValidity } from "../../../utils/validity.utils.js";
24
+ import { LocalizableMixin, } from "../../../mixins/localizable.mixin.js";
24
25
  /**
25
26
  * Tag name of the textarea component.
26
27
  */
@@ -467,7 +468,7 @@ function getActiveColorName(root, kind) {
467
468
  * @internal
468
469
  */
469
470
  const Base = DisabledMixin(ValidatorsMixin(LitElement));
470
- const EunomiaTextareaMixinBase = FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(EditableMixin(FormMixin(Base)))));
471
+ const EunomiaTextareaMixinBase = LocalizableMixin(FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(EditableMixin(FormMixin(Base))))));
471
472
  /**
472
473
  * A multi-line text field, sharing its label, hint, and error chrome and
473
474
  * theming with the input component. It grows and shrinks to fit its
@@ -495,13 +496,15 @@ const EunomiaTextareaMixinBase = FieldAppearanceMixin(FormLabelMixin(ReadonlyMix
495
496
  * @prop {boolean} [disabled=false] - Whether the field is disabled
496
497
  * @prop {boolean} [readonly=false] - Whether the field is read only
497
498
  * @prop {boolean} [required=false] - Whether the field is required
498
- * @prop {boolean} [hideError=false] - Whether the errors are hidden
499
+ * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
500
+ * @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
501
+ * @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
502
  * @prop {Array<import('../../../types/form-validators.type.js').Validators<string>>} validators - The list of validation rules applied to the field value
500
503
  * @prop {number} rows - The fixed number of visible rows. When omitted, the field automatically grows and shrinks its height to fit its content
501
504
  * @prop {boolean} [readonlyAvailable=false] - Whether the field can switch between a static display and an editable one
502
505
  * @attr {boolean} [readonly-available=false] - Whether the field can switch between a static display and an editable one
503
506
  * @prop {boolean} [formatting=false] - Switches the field to a rich text surface with a formatting toolbar above it, and, combined with readonlyAvailable, renders the static display as formatted rich text instead of raw source
504
- * @prop {string} [formatToolbarLabel='Text formatting'] - The accessible label of the bold, italic, and underline toggle group
507
+ * @prop {string} [formatToolbarLabel='Text formatting'] - The accessible label of the formatting toolbar
505
508
  * @prop {string} [formatBoldLabel='Bold'] - The accessible label of the bold toggle
506
509
  * @prop {string} [formatItalicLabel='Italic'] - The accessible label of the italic toggle
507
510
  * @prop {string} [formatUnderlineLabel='Underline'] - The accessible label of the underline toggle
@@ -516,9 +519,9 @@ const EunomiaTextareaMixinBase = FieldAppearanceMixin(FormLabelMixin(ReadonlyMix
516
519
  * @prop {string} [autocomplete='off'] - The native autocomplete attribute forwarded to the field
517
520
  * @prop {number} minlength - The native minimum length constraint forwarded to the field
518
521
  * @prop {number} maxlength - The field's maximum length. Forwarded natively when not formatting, and enforced manually otherwise. Either way, a live character counter is shown under the field
519
- * @prop {string} [emptyValueLabel='No value set'] - Text displayed in place of the value when readonly and empty
520
- * @prop {string} [confirmLabel='Save'] - The label of the confirm button in edit mode
521
- * @prop {string} [cancelLabel='Cancel'] - The label of the cancel button in edit mode
522
+ * @prop {string} [emptyValueLabel] - Text displayed in place of the value when readonly and empty. Defaults to the localized string for the current locale (English: "No value set")
523
+ * @prop {string} [confirmLabel] - The label of the confirm button in edit mode. Defaults to the localized string for the current locale (English: "Save")
524
+ * @prop {string} [cancelLabel] - The label of the cancel button in edit mode. Defaults to the localized string for the current locale (English: "Cancel")
522
525
  * @fires {ChangeEvent} eunchange - Fired on every value change, including one applied through the formatting toolbar
523
526
  * @fires {CommitEvent} euncommit - Fired when an edit is confirmed in readonlyAvailable mode
524
527
  * @cssprop [--field-background] - Sets the background color of the field
@@ -527,6 +530,8 @@ const EunomiaTextareaMixinBase = FieldAppearanceMixin(FormLabelMixin(ReadonlyMix
527
530
  * @cssprop [--field-border-color-focus] - Sets the border color on focus
528
531
  * @cssprop [--field-border-radius] - Sets the corner radius of the field
529
532
  * @cssprop [--field-padding] - Sets the padding of the field
533
+ * @cssprop [--field-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --field-padding is set
534
+ * @cssprop [--field-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --field-padding is set
530
535
  * @cssprop [--field-text-color] - Sets the text color of the field
531
536
  * @cssprop [--field-placeholder-color] - Sets the color of the placeholder
532
537
  * @cssprop [--field-error-color] - Sets the color of the error message
@@ -535,6 +540,9 @@ const EunomiaTextareaMixinBase = FieldAppearanceMixin(FormLabelMixin(ReadonlyMix
535
540
  * @cssprop [--field-edit-confirm-color] - Sets the color of the confirm button in readonly-available edit mode
536
541
  * @cssprop [--field-edit-cancel-color] - Sets the color of the cancel button in readonly-available edit mode
537
542
  * @cssprop [--field-shadow] - Sets a box shadow on the field, none by default
543
+ * @cssprop [--field-font-size] - Sets the font size of the field's value and placeholder
544
+ * @cssprop [--field-label-font-size] - Sets the font size of the label
545
+ * @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
538
546
  * @element eun-textarea
539
547
  */
540
548
  let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
@@ -549,7 +557,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
549
557
  */
550
558
  this.formatting = false;
551
559
  /**
552
- * Accessible label of the Bold/Italic/Underline toggle group.
560
+ * Accessible label of the formatting toolbar.
553
561
  * @default Text formatting
554
562
  */
555
563
  this.formatToolbarLabel = "Text formatting";
@@ -619,21 +627,6 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
619
627
  * @default off
620
628
  */
621
629
  this.autocomplete = "off";
622
- /**
623
- * Text displayed in place of the value when readonly and empty.
624
- * @default No value set
625
- */
626
- this.emptyValueLabel = "No value set";
627
- /**
628
- * Label of the confirm button in edit mode.
629
- * @default Save
630
- */
631
- this.confirmLabel = "Save";
632
- /**
633
- * Label of the cancel button in edit mode.
634
- * @default Cancel
635
- */
636
- this.cancelLabel = "Cancel";
637
630
  /**
638
631
  * Which color picker (text-color or highlight) is currently open, if any.
639
632
  * @private
@@ -686,18 +679,11 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
686
679
  */
687
680
  this.pendingCaretNode = null;
688
681
  /**
689
- * Redirects focus to the native field whenever the host itself receives
690
- * it. The host stays in the tab order (`DisabledMixin`) rather than
691
- * being excluded via `tabindex="-1"` — for this form-associated
692
- * component, that turned out to break Tab from reaching the field
693
- * entirely, instead of just skipping the host. Redirecting keeps a
694
- * single, real tab stop from the user's perspective without touching
695
- * that tab order.
696
- * @private
682
+ * Index, among {@link toolbarControls}, of the control holding the
683
+ * toolbar's single Tab stop.
684
+ * @internal
697
685
  */
698
- this.handleHostFocus = () => {
699
- this.fieldEl?.focus();
700
- };
686
+ this.toolbarFocusIndex = 0;
701
687
  /**
702
688
  * Reads native HTML constraint validation from the underlying field
703
689
  * element (`required`, `minlength`, `maxlength`) when not `formatting` ;
@@ -908,6 +894,55 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
908
894
  this.closeColorPicker();
909
895
  }
910
896
  };
897
+ /**
898
+ * Keyboard support of the toolbar, following the toolbar pattern :
899
+ * Left/Right move between its controls (wrapping), Home/End jump to the
900
+ * first and last, and Enter/Space pick an alignment. Listened to in the
901
+ * capture phase, ahead of the alignment group's own arrow handling.
902
+ * Up/Down are left to the alignment group, which selects the next
903
+ * alignment.
904
+ *
905
+ * @param event the keyboard event.
906
+ * @private
907
+ */
908
+ this.handleToolbarKeydown = {
909
+ handleEvent: (event) => {
910
+ const controls = this.toolbarControls().filter((control) => !control.hasAttribute("disabled"));
911
+ const current = controls.indexOf(event.target);
912
+ if (current === -1) {
913
+ return;
914
+ }
915
+ const control = controls[current];
916
+ if ((event.key === "Enter" || event.key === " ") &&
917
+ control.closest("#align-toolbar")) {
918
+ event.preventDefault();
919
+ event.stopPropagation();
920
+ control.click();
921
+ return;
922
+ }
923
+ let next;
924
+ switch (event.key) {
925
+ case "ArrowRight":
926
+ next = (current + 1) % controls.length;
927
+ break;
928
+ case "ArrowLeft":
929
+ next = (current - 1 + controls.length) % controls.length;
930
+ break;
931
+ case "Home":
932
+ next = 0;
933
+ break;
934
+ case "End":
935
+ next = controls.length - 1;
936
+ break;
937
+ default:
938
+ return;
939
+ }
940
+ event.preventDefault();
941
+ event.stopPropagation();
942
+ controls[next].focus();
943
+ },
944
+ capture: true,
945
+ };
911
946
  }
912
947
  /**
913
948
  * The default value applied on connection and form reset. Overrides the
@@ -926,15 +961,11 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
926
961
  // @ts-expect-error — see comment above ; FormMixin's real setter exists.
927
962
  super.defaultValue = value;
928
963
  }
929
- connectedCallback() {
930
- super.connectedCallback?.();
931
- this.addEventListener("focus", this.handleHostFocus);
932
- }
933
964
  disconnectedCallback() {
934
- this.removeEventListener("focus", this.handleHostFocus);
935
965
  document.removeEventListener("click", this.handleOutsideClick, {
936
966
  capture: true,
937
967
  });
968
+ clearTimeout(this.toolbarRovingTimer);
938
969
  super.disconnectedCallback?.();
939
970
  }
940
971
  /**
@@ -974,6 +1005,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
974
1005
  }
975
1006
  return;
976
1007
  }
1008
+ this.scheduleToolbarRoving();
977
1009
  const shouldSync = ((changedProperties.has("editing") && this.editing) ||
978
1010
  (changedProperties.has("formatting") && this.formatting) ||
979
1011
  (changedProperties.has("value") &&
@@ -996,17 +1028,25 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
996
1028
  if (this.minlength !== undefined && length > 0 && length < this.minlength) {
997
1029
  return {
998
1030
  validity: { tooShort: true },
999
- message: `Please lengthen this text to ${this.minlength} characters or more (you are currently using ${length} characters).`,
1031
+ message: this.validationDictionary.validation.tooShort(this.minlength, length),
1000
1032
  };
1001
1033
  }
1002
1034
  if (this.maxlength !== undefined && length > this.maxlength) {
1003
1035
  return {
1004
1036
  validity: { tooLong: true },
1005
- message: `Please shorten this text to ${this.maxlength} characters or less (you are currently using ${length} characters).`,
1037
+ message: this.validationDictionary.validation.tooLong(this.maxlength, length),
1006
1038
  };
1007
1039
  }
1008
1040
  return { validity: {} };
1009
1041
  }
1042
+ /**
1043
+ * The host is never a tab stop of its own : sequential navigation goes
1044
+ * straight to the controls inside, in both directions, and
1045
+ * {@link focus} covers a direct call on the host.
1046
+ */
1047
+ get hostTabStop() {
1048
+ return false;
1049
+ }
1010
1050
  /**
1011
1051
  * Returns the field element to focus/anchor on validation errors.
1012
1052
  *
@@ -1204,7 +1244,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1204
1244
  return;
1205
1245
  }
1206
1246
  this.handleEditableInput();
1207
- this.updateComplete.then(() => {
1247
+ void this.updateComplete.then(() => {
1208
1248
  root.focus();
1209
1249
  this.syncToolbarToSelection();
1210
1250
  });
@@ -1260,7 +1300,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1260
1300
  const [align] = event.target.value;
1261
1301
  root.style.textAlign = align === "start" ? "" : align;
1262
1302
  this.handleEditableInput();
1263
- this.updateComplete.then(() => root.focus());
1303
+ void this.updateComplete.then(() => root.focus());
1264
1304
  }
1265
1305
  /**
1266
1306
  * Opens or closes a color picker popover, wiring up (or tearing down) the
@@ -1278,6 +1318,63 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1278
1318
  document.addEventListener("click", this.handleOutsideClick, {
1279
1319
  capture: true,
1280
1320
  });
1321
+ void this.updateComplete.then(() => {
1322
+ const swatches = this.colorSwatches();
1323
+ (swatches.find((swatch) => swatch.ariaChecked === "true") ?? swatches[0])?.focus();
1324
+ });
1325
+ }
1326
+ /**
1327
+ * The swatches of the open color picker, in display order.
1328
+ *
1329
+ * @returns the swatch buttons, empty while no picker is open.
1330
+ * @private
1331
+ */
1332
+ colorSwatches() {
1333
+ return Array.from(this.shadowRoot?.querySelectorAll(".color-picker-panel .color-swatch") ?? []);
1334
+ }
1335
+ /**
1336
+ * Keyboard support of the open color picker, following the menu pattern
1337
+ * : arrows move between swatches (wrapping), Home/End jump to the first
1338
+ * and last, Escape closes it, and Tab closes it before leaving it. Both
1339
+ * return the focus to the picker's trigger.
1340
+ *
1341
+ * @param event the keyboard event.
1342
+ * @private
1343
+ */
1344
+ handleColorPickerKeydown(event) {
1345
+ const panel = event.currentTarget;
1346
+ const trigger = panel.previousElementSibling;
1347
+ if (event.key === "Escape" || event.key === "Tab") {
1348
+ if (event.key === "Escape") {
1349
+ event.preventDefault();
1350
+ }
1351
+ this.closeColorPicker();
1352
+ trigger?.focus();
1353
+ return;
1354
+ }
1355
+ const swatches = this.colorSwatches();
1356
+ const current = swatches.indexOf(this.shadowRoot?.activeElement);
1357
+ let next;
1358
+ switch (event.key) {
1359
+ case "ArrowRight":
1360
+ case "ArrowDown":
1361
+ next = (current + 1) % swatches.length;
1362
+ break;
1363
+ case "ArrowLeft":
1364
+ case "ArrowUp":
1365
+ next = (current - 1 + swatches.length) % swatches.length;
1366
+ break;
1367
+ case "Home":
1368
+ next = 0;
1369
+ break;
1370
+ case "End":
1371
+ next = swatches.length - 1;
1372
+ break;
1373
+ default:
1374
+ return;
1375
+ }
1376
+ event.preventDefault();
1377
+ swatches[next]?.focus();
1281
1378
  }
1282
1379
  /**
1283
1380
  * Closes whichever color picker is open, if any.
@@ -1321,7 +1418,57 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1321
1418
  }
1322
1419
  }
1323
1420
  this.closeColorPicker();
1324
- this.updateComplete.then(() => this.fieldEl?.focus());
1421
+ void this.updateComplete.then(() => this.fieldEl?.focus());
1422
+ }
1423
+ /**
1424
+ * The toolbar's controls, in visual order : every format and alignment
1425
+ * toggle, then both color picker triggers.
1426
+ *
1427
+ * @returns the controls, empty while the toolbar isn't rendered.
1428
+ * @private
1429
+ */
1430
+ toolbarControls() {
1431
+ return Array.from(this.shadowRoot?.querySelectorAll("#toolbar-groups eun-toggle-item, #toolbar-groups .color-picker-trigger") ?? []);
1432
+ }
1433
+ /**
1434
+ * Applies the toolbar's roving `tabindex` once the toggle groups have
1435
+ * applied their own (which they do after their items' updates), so the
1436
+ * whole toolbar stays a single Tab stop.
1437
+ * @private
1438
+ */
1439
+ scheduleToolbarRoving() {
1440
+ clearTimeout(this.toolbarRovingTimer);
1441
+ this.toolbarRovingTimer = setTimeout(() => this.applyToolbarRoving());
1442
+ }
1443
+ /**
1444
+ * Makes the control at {@link toolbarFocusIndex} the toolbar's only Tab
1445
+ * stop. Left alone while the toolbar is disabled, every control then
1446
+ * being out of the Tab order already.
1447
+ * @private
1448
+ */
1449
+ applyToolbarRoving() {
1450
+ if (this.disabled || this.readonly) {
1451
+ return;
1452
+ }
1453
+ const controls = this.toolbarControls();
1454
+ const active = Math.min(this.toolbarFocusIndex, controls.length - 1);
1455
+ controls.forEach((control, index) => {
1456
+ control.setAttribute("tabindex", index === active ? "0" : "-1");
1457
+ });
1458
+ }
1459
+ /**
1460
+ * Remembers the toolbar control receiving the focus, so Tab comes back
1461
+ * to it.
1462
+ *
1463
+ * @param event the focus event.
1464
+ * @private
1465
+ */
1466
+ handleToolbarFocusIn(event) {
1467
+ const index = this.toolbarControls().indexOf(event.target);
1468
+ if (index !== -1 && index !== this.toolbarFocusIndex) {
1469
+ this.toolbarFocusIndex = index;
1470
+ this.applyToolbarRoving();
1471
+ }
1325
1472
  }
1326
1473
  /**
1327
1474
  * Renders the formatting toolbar, shown above the field itself (never
@@ -1336,11 +1483,14 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1336
1483
  return html `
1337
1484
  <div
1338
1485
  id="toolbar-groups"
1486
+ role="toolbar"
1487
+ aria-label=${this.formatToolbarLabel}
1339
1488
  @mousedown=${(event) => event.preventDefault()}
1489
+ @focusin=${this.handleToolbarFocusIn}
1490
+ @keydown=${this.handleToolbarKeydown}
1340
1491
  >
1341
1492
  <eun-toggle-group
1342
1493
  id="toolbar"
1343
- aria-label=${this.formatToolbarLabel}
1344
1494
  ?disabled=${toolbarDisabled}
1345
1495
  @eunchange=${this.handleToolbarChange}
1346
1496
  >
@@ -1416,7 +1566,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1416
1566
  <button
1417
1567
  type="button"
1418
1568
  class="color-picker-trigger"
1419
- aria-haspopup="true"
1569
+ aria-haspopup="menu"
1420
1570
  aria-expanded=${isOpen ? "true" : "false"}
1421
1571
  aria-label=${label}
1422
1572
  ?disabled=${toolbarDisabled}
@@ -1433,12 +1583,13 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1433
1583
  class="color-picker-panel"
1434
1584
  role="menu"
1435
1585
  aria-label=${label}
1436
- @keydown=${(event) => event.key === "Escape" && this.closeColorPicker()}
1586
+ @keydown=${this.handleColorPickerKeydown}
1437
1587
  >
1438
1588
  <button
1439
1589
  type="button"
1440
1590
  class="color-swatch clear"
1441
1591
  role="menuitemradio"
1592
+ tabindex="-1"
1442
1593
  aria-checked=${activeName === null ? "true" : "false"}
1443
1594
  aria-label=${this.formatColorClearLabel}
1444
1595
  @click=${() => this.selectColor(kind, null)}
@@ -1448,6 +1599,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1448
1599
  type="button"
1449
1600
  class="color-swatch"
1450
1601
  role="menuitemradio"
1602
+ tabindex="-1"
1451
1603
  aria-checked=${activeName === color.name
1452
1604
  ? "true"
1453
1605
  : "false"}
@@ -1514,7 +1666,10 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1514
1666
  ? formatRichText(this.value)
1515
1667
  : html `<span
1516
1668
  class=${classMap({ "plain-value": true, empty: !hasValue })}
1517
- >${hasValue ? this.value : this.emptyValueLabel}</span
1669
+ >${hasValue
1670
+ ? this.value
1671
+ : (this.emptyValueLabel ??
1672
+ this.dictionary.common.noValue)}</span
1518
1673
  >`}
1519
1674
  </div>
1520
1675
  `;
@@ -1539,7 +1694,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1539
1694
  ?required=${this.required}
1540
1695
  minlength=${ifDefined(this.minlength)}
1541
1696
  maxlength=${ifDefined(this.maxlength)}
1542
- aria-invalid=${!this.hideError && !this.disabled && !this.valid}
1697
+ aria-invalid=${this.showError}
1543
1698
  aria-label=${ifDefined(this.label)}
1544
1699
  aria-describedby=${describedBy || nothing}
1545
1700
  @input=${this.handleInput}
@@ -1570,7 +1725,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1570
1725
  role="textbox"
1571
1726
  aria-multiline="true"
1572
1727
  aria-required=${this.required ? "true" : nothing}
1573
- aria-invalid=${!this.hideError && !this.disabled && !this.valid}
1728
+ aria-invalid=${this.showError}
1574
1729
  aria-label=${ifDefined(this.label)}
1575
1730
  aria-describedby=${describedBy || nothing}
1576
1731
  @beforeinput=${this.handleEditableBeforeInput}
@@ -1620,7 +1775,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1620
1775
  rounded
1621
1776
  type="button"
1622
1777
  @click=${this.confirmEdit}
1623
- >${this.confirmLabel}</eun-button
1778
+ >${this.confirmLabel ?? this.dictionary.common.save}</eun-button
1624
1779
  >
1625
1780
  <eun-button
1626
1781
  class="cancel"
@@ -1630,7 +1785,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
1630
1785
  rounded
1631
1786
  type="button"
1632
1787
  @click=${this.cancelEdit}
1633
- >${this.cancelLabel}</eun-button
1788
+ >${this.cancelLabel ?? this.dictionary.common.cancel}</eun-button
1634
1789
  >
1635
1790
  </div>
1636
1791
  `)}