@eunomia/elements 1.0.0-beta.5 → 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 (455) 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-OW7XKDCH.js → chunk-2Y2EU2CI.js} +16 -16
  6. package/dist/cdn/components/chunks/{chunk-LFCXUVDO.js → chunk-4PI6RDUS.js} +1 -1
  7. package/dist/cdn/components/chunks/chunk-624VJYNA.js +1 -0
  8. package/dist/cdn/components/chunks/{chunk-5XJLIHAU.js → chunk-7KKWYPHY.js} +4 -2
  9. package/dist/cdn/components/chunks/chunk-A3X4KD2X.js +1 -0
  10. package/dist/cdn/components/chunks/chunk-BKZGTCMF.js +1 -0
  11. package/dist/cdn/components/chunks/{chunk-GW3VP2L7.js → chunk-BO3JOEWM.js} +1 -1
  12. package/dist/cdn/components/chunks/{chunk-EAKYD33D.js → chunk-BQFJR2UP.js} +4 -4
  13. package/dist/cdn/components/chunks/chunk-EUWUDCBZ.js +1 -0
  14. package/dist/cdn/components/chunks/{chunk-P32B7BFD.js → chunk-FF3I7C3C.js} +15 -15
  15. package/dist/cdn/components/chunks/{chunk-74AOAB4X.js → chunk-FOILAXLL.js} +6 -5
  16. package/dist/cdn/components/chunks/{chunk-E4IS25H7.js → chunk-G5SBDQQ3.js} +1 -1
  17. package/dist/cdn/components/chunks/{chunk-LGLQ36QB.js → chunk-GDBPWZN6.js} +1 -1
  18. package/dist/cdn/components/chunks/{chunk-S2UCEWNG.js → chunk-JYIIWN2P.js} +13 -11
  19. package/dist/cdn/components/chunks/{chunk-IDKZKLJR.js → chunk-KDN4O5W2.js} +24 -11
  20. package/dist/cdn/components/chunks/chunk-KSZRQRN4.js +1 -0
  21. package/dist/cdn/components/chunks/{chunk-PED5ATYN.js → chunk-L2ADCEN7.js} +1 -1
  22. package/dist/cdn/components/chunks/chunk-LMVW522V.js +1 -0
  23. package/dist/cdn/components/chunks/{chunk-5XJGYXW7.js → chunk-MOMYII3P.js} +1 -1
  24. package/dist/cdn/components/chunks/{chunk-2XASWWKR.js → chunk-MQQ4BGVJ.js} +5 -5
  25. package/dist/cdn/components/chunks/{chunk-A4EQSU36.js → chunk-O7PHBLH2.js} +1 -1
  26. package/dist/cdn/components/chunks/chunk-PD62MBOJ.js +1 -0
  27. package/dist/cdn/components/chunks/{chunk-KBH5PCUO.js → chunk-PE4DAXHQ.js} +1 -1
  28. package/dist/cdn/components/chunks/{chunk-6ETDXUH2.js → chunk-PMPSJG5V.js} +7 -7
  29. package/dist/cdn/components/chunks/{chunk-5EVP7YNE.js → chunk-PPCHQG7P.js} +1 -1
  30. package/dist/cdn/components/chunks/{chunk-AIS3UICU.js → chunk-QZ5SHR3I.js} +9 -5
  31. package/dist/cdn/components/chunks/{chunk-32DTNR52.js → chunk-RS7TWEMQ.js} +1 -1
  32. package/dist/cdn/components/chunks/chunk-SMTIDNGW.js +1 -0
  33. package/dist/cdn/components/chunks/{chunk-MPQP4R54.js → chunk-SZYEBMG6.js} +10 -9
  34. package/dist/cdn/components/chunks/{chunk-JRGM3W7I.js → chunk-UDVB4LAE.js} +5 -2
  35. package/dist/cdn/components/chunks/{chunk-L65WUTXM.js → chunk-UYZR4JXZ.js} +12 -7
  36. package/dist/cdn/components/chunks/chunk-VG6NAAIV.js +1 -0
  37. package/dist/cdn/components/chunks/chunk-VJCNHMQZ.js +10 -0
  38. package/dist/cdn/components/chunks/chunk-VOTRXBDS.js +38 -0
  39. package/dist/cdn/components/chunks/{chunk-DKOPI7QA.js → chunk-VYFR364B.js} +73 -63
  40. package/dist/cdn/components/chunks/{chunk-SD2WHGPF.js → chunk-XDPRWUKN.js} +1 -1
  41. package/dist/cdn/components/chunks/{chunk-XH6NREVZ.js → chunk-YITWLCD3.js} +1 -1
  42. package/dist/cdn/components/chunks/{chunk-BQHYZB2W.js → chunk-ZBN4HTWP.js} +1 -1
  43. package/dist/cdn/components/chunks/{chunk-NBIENHLV.js → chunk-ZKZV2YG5.js} +18 -18
  44. package/dist/cdn/components/eun-alert.js +24 -16
  45. package/dist/cdn/components/eun-animate.js +12 -8
  46. package/dist/cdn/components/eun-badge.js +1 -1
  47. package/dist/cdn/components/eun-breadcrumb.js +25 -41
  48. package/dist/cdn/components/eun-button.js +1 -1
  49. package/dist/cdn/components/eun-calendar.js +67 -65
  50. package/dist/cdn/components/eun-card.js +32 -17
  51. package/dist/cdn/components/eun-carousel.js +66 -35
  52. package/dist/cdn/components/eun-check-card.js +13 -6
  53. package/dist/cdn/components/eun-checkbox-list.js +4 -4
  54. package/dist/cdn/components/eun-checkbox.js +1 -1
  55. package/dist/cdn/components/eun-chip.js +1 -1
  56. package/dist/cdn/components/eun-collapse.js +56 -27
  57. package/dist/cdn/components/eun-color-picker.js +53 -52
  58. package/dist/cdn/components/eun-counter.js +9 -8
  59. package/dist/cdn/components/eun-date-picker.js +59 -56
  60. package/dist/cdn/components/eun-description-list.js +152 -0
  61. package/dist/cdn/components/eun-divider.js +1 -1
  62. package/dist/cdn/components/eun-drawer.js +32 -18
  63. package/dist/cdn/components/eun-dropdown-button.js +1 -1
  64. package/dist/cdn/components/eun-dropdown-item.js +6 -5
  65. package/dist/cdn/components/eun-fab.js +17 -16
  66. package/dist/cdn/components/eun-icon.js +1 -1
  67. package/dist/cdn/components/eun-image-card.js +79 -22
  68. package/dist/cdn/components/eun-image-carousel.js +92 -47
  69. package/dist/cdn/components/eun-infinite-list.js +23 -11
  70. package/dist/cdn/components/eun-input-file.js +14 -13
  71. package/dist/cdn/components/eun-input-phone.js +15 -15
  72. package/dist/cdn/components/eun-input.js +1 -1
  73. package/dist/cdn/components/eun-label.js +4 -4
  74. package/dist/cdn/components/eun-link.js +78 -29
  75. package/dist/cdn/components/eun-loader.js +1 -1
  76. package/dist/cdn/components/eun-modal.js +17 -10
  77. package/dist/cdn/components/eun-pagination.js +17 -12
  78. package/dist/cdn/components/eun-password-strength.js +6 -2
  79. package/dist/cdn/components/eun-progress-bar.js +13 -5
  80. package/dist/cdn/components/eun-radio-card.js +16 -9
  81. package/dist/cdn/components/eun-radio-list.js +4 -4
  82. package/dist/cdn/components/eun-radio.js +1 -1
  83. package/dist/cdn/components/eun-scheduler-event-editor.js +1 -1
  84. package/dist/cdn/components/eun-scheduler-event.js +1 -1
  85. package/dist/cdn/components/eun-scheduler.js +36 -36
  86. package/dist/cdn/components/eun-search.js +11 -10
  87. package/dist/cdn/components/eun-select.js +12 -11
  88. package/dist/cdn/components/eun-sidebar.js +34 -20
  89. package/dist/cdn/components/eun-skeleton.js +1 -1
  90. package/dist/cdn/components/eun-slider.js +15 -14
  91. package/dist/cdn/components/eun-sliding-card.js +8 -4
  92. package/dist/cdn/components/eun-step.js +17 -6
  93. package/dist/cdn/components/eun-stepper.js +17 -6
  94. package/dist/cdn/components/eun-switch.js +10 -8
  95. package/dist/cdn/components/eun-tab-group.js +22 -17
  96. package/dist/cdn/components/eun-tab-panel.js +11 -3
  97. package/dist/cdn/components/eun-tab.js +1 -1
  98. package/dist/cdn/components/eun-table-action-bar.js +1 -1
  99. package/dist/cdn/components/eun-table.js +572 -31
  100. package/dist/cdn/components/eun-tag.js +13 -7
  101. package/dist/cdn/components/eun-textarea.js +23 -23
  102. package/dist/cdn/components/eun-time-picker.js +17 -15
  103. package/dist/cdn/components/eun-toast.js +36 -16
  104. package/dist/cdn/components/eun-toggle-group.js +53 -34
  105. package/dist/cdn/components/eun-toggle-item.js +16 -15
  106. package/dist/cdn/components/eun-toggle.js +12 -10
  107. package/dist/cdn/components/eun-toolbar.js +62 -52
  108. package/dist/cdn/components/eun-tooltip.js +30 -14
  109. package/dist/cdn/styles/breakpoints.scss +8 -0
  110. package/dist/cdn/styles/eunomia-grid.scss +6 -0
  111. package/dist/cdn/styles/eunomia-themes.css +1 -1
  112. package/dist/cdn/styles/themes/eunomia-theme.css +1 -1
  113. package/dist/cdn/styles/themes/eunomia-theme.scss +4 -3
  114. package/dist/cdn/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  115. package/dist/cdn/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  116. package/dist/cdn/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  117. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  118. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  119. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.css +1 -1
  120. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  121. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  122. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  123. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.css +1 -1
  124. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  125. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  126. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  127. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.css +1 -1
  128. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  129. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  130. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  131. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.css +1 -1
  132. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  133. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  134. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  135. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.css +1 -1
  136. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  137. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  138. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  139. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.css +1 -1
  140. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  141. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  142. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  143. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.css +1 -1
  144. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  145. package/dist/cdn/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  146. package/dist/cdn/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  147. package/dist/cdn/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  148. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  149. package/dist/cdn/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  150. package/dist/cdn/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  151. package/dist/cdn/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  152. package/dist/components/action/button/button.d.ts +7 -2
  153. package/dist/components/action/button/button.js +7 -2
  154. package/dist/components/action/button/button.styles.js +51 -36
  155. package/dist/components/action/dropdown-button/dropdown-button.d.ts +2 -2
  156. package/dist/components/action/dropdown-button/dropdown-button.js +11 -10
  157. package/dist/components/action/dropdown-button/dropdown-button.styles.js +3 -2
  158. package/dist/components/action/dropdown-button/dropdown-item.js +5 -6
  159. package/dist/components/action/dropdown-button/dropdown-item.styles.js +3 -2
  160. package/dist/components/action/fab/fab.styles.js +14 -13
  161. package/dist/components/action/link/link.d.ts +7 -3
  162. package/dist/components/action/link/link.js +11 -7
  163. package/dist/components/action/link/link.styles.js +66 -15
  164. package/dist/components/action/shared-styles/button-palette.styles.js +15 -15
  165. package/dist/components/action/toggle/toggle-group.d.ts +2 -0
  166. package/dist/components/action/toggle/toggle-group.js +5 -3
  167. package/dist/components/action/toggle/toggle-group.styles.d.ts +2 -0
  168. package/dist/components/action/toggle/toggle-group.styles.js +42 -21
  169. package/dist/components/action/toggle/toggle-item.styles.js +13 -12
  170. package/dist/components/action/toggle/toggle.d.ts +2 -0
  171. package/dist/components/action/toggle/toggle.js +2 -0
  172. package/dist/components/action/toggle/toggle.styles.d.ts +2 -0
  173. package/dist/components/action/toggle/toggle.styles.js +12 -8
  174. package/dist/components/alert/alert/alert.d.ts +2 -0
  175. package/dist/components/alert/alert/alert.js +2 -0
  176. package/dist/components/alert/alert/alert.styles.js +23 -13
  177. package/dist/components/alert/drawer/drawer.d.ts +3 -1
  178. package/dist/components/alert/drawer/drawer.js +4 -2
  179. package/dist/components/alert/drawer/drawer.styles.js +25 -9
  180. package/dist/components/alert/modal/modal.d.ts +3 -1
  181. package/dist/components/alert/modal/modal.js +4 -2
  182. package/dist/components/alert/modal/modal.styles.js +16 -7
  183. package/dist/components/alert/toast/toast.d.ts +2 -0
  184. package/dist/components/alert/toast/toast.js +2 -0
  185. package/dist/components/alert/toast/toast.styles.js +37 -15
  186. package/dist/components/content/card/card.d.ts +7 -3
  187. package/dist/components/content/card/card.js +7 -3
  188. package/dist/components/content/card/card.styles.js +26 -11
  189. package/dist/components/content/card/image-card.d.ts +60 -6
  190. package/dist/components/content/card/image-card.js +120 -11
  191. package/dist/components/content/card/image-card.styles.js +66 -15
  192. package/dist/components/content/card/sliding-card.d.ts +2 -0
  193. package/dist/components/content/card/sliding-card.js +2 -0
  194. package/dist/components/content/card/sliding-card.styles.js +5 -1
  195. package/dist/components/content/collapse/collapse.d.ts +10 -1
  196. package/dist/components/content/collapse/collapse.js +12 -2
  197. package/dist/components/content/collapse/collapse.styles.d.ts +10 -1
  198. package/dist/components/content/collapse/collapse.styles.js +56 -18
  199. package/dist/components/content/description-list/description-list.d.ts +87 -0
  200. package/dist/components/content/description-list/description-list.js +107 -0
  201. package/dist/components/content/description-list/description-list.styles.d.ts +1 -0
  202. package/dist/components/content/description-list/description-list.styles.js +185 -0
  203. package/dist/components/content/icon/icon.d.ts +2 -0
  204. package/dist/components/content/icon/icon.js +2 -0
  205. package/dist/components/content/icon/icon.style.js +4 -1
  206. package/dist/components/content/image-carousel/image-carousel.d.ts +30 -19
  207. package/dist/components/content/image-carousel/image-carousel.js +48 -45
  208. package/dist/components/content/image-carousel/image-carousel.styles.js +69 -30
  209. package/dist/components/content/password-strength/password-strength.styles.js +5 -1
  210. package/dist/components/content/progress-bar/progress-bar.styles.js +12 -4
  211. package/dist/components/content/shared-styles/card-link.styles.js +4 -3
  212. package/dist/components/content/shared-styles/tone-surface.styles.d.ts +5 -0
  213. package/dist/components/content/shared-styles/tone-surface.styles.js +19 -14
  214. package/dist/components/content/tag/tag.d.ts +4 -0
  215. package/dist/components/content/tag/tag.js +4 -0
  216. package/dist/components/content/tag/tag.styles.js +14 -4
  217. package/dist/components/content/tooltip/tooltip.d.ts +3 -2
  218. package/dist/components/content/tooltip/tooltip.js +9 -16
  219. package/dist/components/content/tooltip/tooltip.styles.js +25 -7
  220. package/dist/components/form/checkbox/check-card.d.ts +4 -1
  221. package/dist/components/form/checkbox/check-card.js +4 -1
  222. package/dist/components/form/checkbox/check-card.styles.js +13 -4
  223. package/dist/components/form/checkbox/checkbox-list.d.ts +4 -1
  224. package/dist/components/form/checkbox/checkbox-list.js +11 -7
  225. package/dist/components/form/checkbox/checkbox.d.ts +4 -1
  226. package/dist/components/form/checkbox/checkbox.js +4 -1
  227. package/dist/components/form/checkbox/checkbox.styles.js +2 -2
  228. package/dist/components/form/color-picker/color-picker.d.ts +7 -1
  229. package/dist/components/form/color-picker/color-picker.js +19 -21
  230. package/dist/components/form/color-picker/color-picker.styles.js +6 -5
  231. package/dist/components/form/counter/counter.d.ts +4 -1
  232. package/dist/components/form/counter/counter.js +5 -2
  233. package/dist/components/form/counter/counter.styles.js +5 -4
  234. package/dist/components/form/date-picker/date-picker.d.ts +37 -33
  235. package/dist/components/form/date-picker/date-picker.js +32 -42
  236. package/dist/components/form/date-picker/date-picker.styles.js +8 -5
  237. package/dist/components/form/input/input.d.ts +7 -1
  238. package/dist/components/form/input/input.js +8 -2
  239. package/dist/components/form/input-file/input-file.d.ts +4 -1
  240. package/dist/components/form/input-file/input-file.js +8 -5
  241. package/dist/components/form/input-file/input-file.styles.js +3 -2
  242. package/dist/components/form/input-phone/input-phone.d.ts +8 -2
  243. package/dist/components/form/input-phone/input-phone.js +13 -17
  244. package/dist/components/form/input-phone/input-phone.styles.js +4 -4
  245. package/dist/components/form/label/label.styles.js +3 -3
  246. package/dist/components/form/radio/radio-card.d.ts +5 -2
  247. package/dist/components/form/radio/radio-card.js +5 -2
  248. package/dist/components/form/radio/radio-card.styles.js +14 -5
  249. package/dist/components/form/radio/radio-list.d.ts +5 -2
  250. package/dist/components/form/radio/radio-list.js +14 -10
  251. package/dist/components/form/radio/radio.d.ts +5 -2
  252. package/dist/components/form/radio/radio.js +5 -2
  253. package/dist/components/form/radio/radio.styles.js +4 -4
  254. package/dist/components/form/search/search.d.ts +2 -1
  255. package/dist/components/form/search/search.js +6 -15
  256. package/dist/components/form/search/search.styles.js +5 -4
  257. package/dist/components/form/select/select.d.ts +9 -2
  258. package/dist/components/form/select/select.js +15 -18
  259. package/dist/components/form/select/select.styles.js +3 -2
  260. package/dist/components/form/shared-styles/card.styles.js +5 -4
  261. package/dist/components/form/shared-styles/field.styles.js +16 -6
  262. package/dist/components/form/shared-styles/form-labels.styles.js +1 -1
  263. package/dist/components/form/slider/slider.d.ts +4 -1
  264. package/dist/components/form/slider/slider.js +5 -2
  265. package/dist/components/form/slider/slider.styles.js +8 -7
  266. package/dist/components/form/switch/switch.d.ts +4 -1
  267. package/dist/components/form/switch/switch.js +4 -1
  268. package/dist/components/form/switch/switch.styles.js +7 -5
  269. package/dist/components/form/textarea/textarea.d.ts +7 -1
  270. package/dist/components/form/textarea/textarea.js +14 -8
  271. package/dist/components/form/time-picker/time-picker-columns.styles.js +4 -2
  272. package/dist/components/form/time-picker/time-picker-list.styles.js +2 -1
  273. package/dist/components/form/time-picker/time-picker.d.ts +6 -2
  274. package/dist/components/form/time-picker/time-picker.js +22 -26
  275. package/dist/components/form/time-picker/time-picker.styles.js +4 -3
  276. package/dist/components/layout/animate/animate.d.ts +37 -15
  277. package/dist/components/layout/animate/animate.js +35 -15
  278. package/dist/components/layout/animate/animate.styles.js +9 -16
  279. package/dist/components/layout/infinite-list/infinite-list.d.ts +33 -10
  280. package/dist/components/layout/infinite-list/infinite-list.js +115 -18
  281. package/dist/components/layout/infinite-list/infinite-list.styles.d.ts +3 -0
  282. package/dist/components/layout/infinite-list/infinite-list.styles.js +17 -5
  283. package/dist/components/loader/loader/loader.styles.js +3 -1
  284. package/dist/components/navigation/breadcrumb/breadcrumb.d.ts +31 -45
  285. package/dist/components/navigation/breadcrumb/breadcrumb.js +111 -77
  286. package/dist/components/navigation/breadcrumb/breadcrumb.styles.d.ts +3 -0
  287. package/dist/components/navigation/breadcrumb/breadcrumb.styles.js +22 -26
  288. package/dist/components/navigation/carousel/carousel.d.ts +30 -10
  289. package/dist/components/navigation/carousel/carousel.js +37 -18
  290. package/dist/components/navigation/carousel/carousel.styles.js +60 -20
  291. package/dist/components/navigation/pagination/pagination.styles.js +8 -3
  292. package/dist/components/navigation/sidebar/sidebar.d.ts +2 -0
  293. package/dist/components/navigation/sidebar/sidebar.js +2 -0
  294. package/dist/components/navigation/sidebar/sidebar.styles.js +27 -11
  295. package/dist/components/navigation/stepper/step.styles.js +16 -5
  296. package/dist/components/navigation/stepper/stepper.styles.js +16 -5
  297. package/dist/components/navigation/tabs/tab/tab.d.ts +11 -0
  298. package/dist/components/navigation/tabs/tab/tab.js +11 -0
  299. package/dist/components/navigation/tabs/tab/tab.styles.js +22 -16
  300. package/dist/components/navigation/tabs/tab-group/tab-group.js +7 -8
  301. package/dist/components/navigation/tabs/tab-group/tab-group.styles.js +19 -14
  302. package/dist/components/navigation/tabs/tab-panel/tab-panel.d.ts +4 -0
  303. package/dist/components/navigation/tabs/tab-panel/tab-panel.js +4 -0
  304. package/dist/components/navigation/tabs/tab-panel/tab-panel.styles.js +18 -1
  305. package/dist/components/navigation/toolbar/toolbar.d.ts +17 -49
  306. package/dist/components/navigation/toolbar/toolbar.js +23 -71
  307. package/dist/components/navigation/toolbar/toolbar.styles.js +59 -36
  308. package/dist/events/table-row-click.event.d.ts +5 -4
  309. package/dist/events/table-row-click.event.js +10 -5
  310. package/dist/features/scheduler/calendar/calendar.d.ts +6 -6
  311. package/dist/features/scheduler/calendar/calendar.js +6 -5
  312. package/dist/features/scheduler/calendar/calendar.styles.js +8 -6
  313. package/dist/features/scheduler/scheduler/scheduler.d.ts +1 -1
  314. package/dist/features/scheduler/scheduler/scheduler.js +9 -23
  315. package/dist/features/scheduler/scheduler/scheduler.styles.js +6 -4
  316. package/dist/features/scheduler/scheduler-event/scheduler-event.d.ts +2 -0
  317. package/dist/features/scheduler/scheduler-event/scheduler-event.js +2 -0
  318. package/dist/features/scheduler/scheduler-event/scheduler-event.styles.js +10 -4
  319. package/dist/features/scheduler/shared/scheduler-hour-grid.styles.js +3 -3
  320. package/dist/features/scheduler/shared/scheduler-month-view.styles.js +2 -2
  321. package/dist/features/scheduler/shared/scheduler-year-view.styles.js +2 -2
  322. package/dist/features/table/table/table-native.styles.d.ts +28 -0
  323. package/dist/features/table/table/table-native.styles.js +502 -0
  324. package/dist/features/table/table/table.d.ts +342 -294
  325. package/dist/features/table/table/table.js +820 -546
  326. package/dist/features/table/table/table.styles.js +31 -17
  327. package/dist/features/table/table/table.types.d.ts +11 -20
  328. package/dist/features/table/table/table.utils.d.ts +6 -36
  329. package/dist/features/table/table/table.utils.js +16 -65
  330. package/dist/features/table/table-action-bar/table-action-bar.d.ts +33 -16
  331. package/dist/features/table/table-action-bar/table-action-bar.js +15 -22
  332. package/dist/features/table/table-action-bar/table-action-bar.styles.js +15 -3
  333. package/dist/i18n/en.d.ts +31 -0
  334. package/dist/i18n/en.js +31 -0
  335. package/dist/i18n/fr.js +35 -0
  336. package/dist/index.d.ts +4 -10
  337. package/dist/index.js +6 -10
  338. package/dist/mixins/check.mixin.js +4 -5
  339. package/dist/mixins/form.mixin.d.ts +17 -1
  340. package/dist/mixins/form.mixin.js +80 -25
  341. package/dist/mixins/radio.mixin.js +4 -5
  342. package/dist/mixins/validators.mixin.d.ts +7 -1
  343. package/dist/mixins/validators.mixin.js +36 -17
  344. package/dist/ssr/animate-ssr.css +3 -2
  345. package/dist/ssr/button-ssr.css +319 -0
  346. package/dist/ssr/card-ssr.css +184 -0
  347. package/dist/ssr/description-list-ssr.css +150 -0
  348. package/dist/ssr/links-ssr.css +1 -1
  349. package/dist/ssr/table-ssr.css +472 -0
  350. package/dist/ssr/tag-ssr.css +197 -0
  351. package/dist/ssr/toolbar-ssr.css +5 -1
  352. package/dist/utils/drag-drop.utils.js +18 -2
  353. package/dist/utils/dropdown-menu.utils.d.ts +2 -2
  354. package/dist/utils/dropdown-menu.utils.js +4 -14
  355. package/dist/utils/light-dom-styles.utils.d.ts +14 -0
  356. package/dist/utils/light-dom-styles.utils.js +37 -0
  357. package/dist/utils/media.styles.d.ts +19 -0
  358. package/dist/utils/media.styles.js +23 -0
  359. package/dist/utils/motion.utils.d.ts +40 -0
  360. package/dist/utils/motion.utils.js +51 -0
  361. package/dist/utils/theme-generator.utils.d.ts +6 -1
  362. package/dist/utils/theme-generator.utils.js +59 -20
  363. package/package.json +17 -28
  364. package/styles/breakpoints.scss +8 -0
  365. package/styles/eunomia-grid.scss +6 -0
  366. package/styles/themes/eunomia-theme.scss +4 -3
  367. package/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  368. package/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  369. package/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  370. package/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  371. package/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  372. package/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  373. package/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  374. package/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  375. package/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  376. package/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  377. package/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  378. package/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  379. package/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  380. package/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  381. package/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  382. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  383. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  384. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  385. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  386. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  387. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  388. package/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  389. package/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  390. package/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  391. package/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  392. package/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  393. package/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  394. package/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  395. package/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  396. package/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  397. package/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  398. package/dist/cdn/components/chunks/chunk-A6KGFALA.js +0 -132
  399. package/dist/cdn/components/chunks/chunk-CEDHJUUH.js +0 -1
  400. package/dist/cdn/components/chunks/chunk-D2M4BV5Y.js +0 -328
  401. package/dist/cdn/components/chunks/chunk-E74CM7UG.js +0 -66
  402. package/dist/cdn/components/chunks/chunk-EST3M4AO.js +0 -1
  403. package/dist/cdn/components/chunks/chunk-GU6BVMFJ.js +0 -1
  404. package/dist/cdn/components/chunks/chunk-KVYUNKUO.js +0 -27
  405. package/dist/cdn/components/chunks/chunk-OAULRKHQ.js +0 -38
  406. package/dist/cdn/components/chunks/chunk-PCM7D3YF.js +0 -84
  407. package/dist/cdn/components/chunks/chunk-SJWRE6PW.js +0 -1
  408. package/dist/cdn/components/chunks/chunk-T4PTHUYF.js +0 -10
  409. package/dist/cdn/components/chunks/chunk-VRGRCYIO.js +0 -1
  410. package/dist/cdn/components/chunks/chunk-X2AUBZD2.js +0 -30
  411. package/dist/cdn/components/eun-breadcrumb-item.js +0 -93
  412. package/dist/cdn/components/eun-table-cell.js +0 -1
  413. package/dist/cdn/components/eun-table-column.js +0 -1
  414. package/dist/cdn/components/eun-table-header.js +0 -1
  415. package/dist/cdn/components/eun-table-item.js +0 -1
  416. package/dist/cdn/components/eun-table-skeleton-row.js +0 -1
  417. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  418. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  419. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
  420. package/dist/components/navigation/breadcrumb/breadcrumb-item.d.ts +0 -77
  421. package/dist/components/navigation/breadcrumb/breadcrumb-item.js +0 -130
  422. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.d.ts +0 -6
  423. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.js +0 -78
  424. package/dist/features/table/native-table.css +0 -276
  425. package/dist/features/table/shared-styles/table-row.styles.d.ts +0 -7
  426. package/dist/features/table/shared-styles/table-row.styles.js +0 -47
  427. package/dist/features/table/shared-styles/table-shared.styles.d.ts +0 -23
  428. package/dist/features/table/shared-styles/table-shared.styles.js +0 -33
  429. package/dist/features/table/table-cell/table-cell.d.ts +0 -59
  430. package/dist/features/table/table-cell/table-cell.js +0 -73
  431. package/dist/features/table/table-cell/table-cell.styles.d.ts +0 -1
  432. package/dist/features/table/table-cell/table-cell.styles.js +0 -46
  433. package/dist/features/table/table-column/table-column.d.ts +0 -73
  434. package/dist/features/table/table-column/table-column.js +0 -89
  435. package/dist/features/table/table-column/table-column.styles.d.ts +0 -1
  436. package/dist/features/table/table-column/table-column.styles.js +0 -51
  437. package/dist/features/table/table-header/table-header.d.ts +0 -102
  438. package/dist/features/table/table-header/table-header.js +0 -165
  439. package/dist/features/table/table-header/table-header.styles.d.ts +0 -1
  440. package/dist/features/table/table-header/table-header.styles.js +0 -147
  441. package/dist/features/table/table-item/table-item.d.ts +0 -179
  442. package/dist/features/table/table-item/table-item.js +0 -291
  443. package/dist/features/table/table-item/table-item.styles.d.ts +0 -1
  444. package/dist/features/table/table-item/table-item.styles.js +0 -404
  445. package/dist/features/table/table-managed/table-managed.d.ts +0 -19
  446. package/dist/features/table/table-managed/table-managed.js +0 -128
  447. package/dist/features/table/table-skeleton-row/table-skeleton-row.d.ts +0 -46
  448. package/dist/features/table/table-skeleton-row/table-skeleton-row.js +0 -110
  449. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.d.ts +0 -12
  450. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.js +0 -65
  451. package/dist/mixins/table-row.mixin.d.ts +0 -37
  452. package/dist/mixins/table-row.mixin.js +0 -103
  453. package/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  454. package/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  455. package/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
@@ -4,32 +4,44 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { customElement, property } from "lit/decorators.js";
8
- import { html, LitElement, nothing } from "lit";
9
- import { classMap } from "lit/directives/class-map.js";
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
13
+ if (kind === "m") throw new TypeError("Private method is not writable");
14
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
15
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
16
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
17
+ };
18
+ var _EunomiaBreadcrumb_instances, _EunomiaBreadcrumb_autoCurrent, _EunomiaBreadcrumb_childObserver, _EunomiaBreadcrumb_syncSteps, _EunomiaBreadcrumb_markCurrent, _EunomiaBreadcrumb_setCurrent;
19
+ import { customElement, queryAll, state } from "lit/decorators.js";
20
+ import { html, LitElement } from "lit";
10
21
  import { breadcrumbStyles } from "./breadcrumb.styles.js";
11
- import { handleLinkNavigation } from "../../../utils/navigation.utils.js";
12
22
  /**
13
23
  * Tag name of the breadcrumb component.
14
24
  */
15
25
  export const EunomiaBreadcrumbTagName = "eun-breadcrumb";
16
26
  /**
17
27
  * A trail of links showing the current page's position within a site's
18
- * hierarchy. The last item always renders as the current, unlinked page
19
- * regardless of whether it has an href. Intermediate items without an
20
- * href render as plain, unlinked text, such as a category that groups
21
- * pages but isn't itself a page.
28
+ * hierarchy. Each direct child is one step, in order, from the root to the
29
+ * current page: a native anchor, or any other element, such as a span,
30
+ * for a step that isn't itself a page. The links stay in the light
31
+ * DOM, so a framework's own link component, such as Next's Link, keeps its
32
+ * client-side navigation and prefetching.
22
33
  *
23
- * There are two ways to declare items, usable together: the data-driven
24
- * items array for the common case, including an optional leading icon per
25
- * step, or slotted breadcrumb item elements when a step needs more than
26
- * plain text and an icon, such as rich content.
34
+ * The breadcrumb wraps each step in its own list item with a separator.
35
+ * The last step is the current page : unless a step already sets
36
+ * aria-current, the breadcrumb marks the last one itself.
27
37
  *
28
- * @slot [default] - Breadcrumb item elements, used instead of or alongside items
29
- * @prop {Array<EunomiaBreadcrumbItemData>} [items=[]] - The trail's steps, in order, from the root to the current page. Each entry may set a label, an href, and an optional leading icon
38
+ * @slot [default] - The steps, one per direct child : an anchor, or a plain element for an unlinked step
30
39
  * @attr {string} [aria-label='Breadcrumb'] - The accessible label for the navigation landmark
40
+ * @cssprop [--breadcrumb-font-size] - Sets the font size of the whole trail, 14px by default
31
41
  * @cssprop [--breadcrumb-link-color] - Sets the color of linked steps
32
42
  * @cssprop [--breadcrumb-link-color-hover] - Sets the color of linked steps on hover or focus
43
+ * @cssprop [--breadcrumb-link-text-decoration] - Sets the text decoration of linked steps, underline by default, such as none
44
+ * @cssprop [--breadcrumb-link-text-decoration-hover] - Sets the text decoration of linked steps on hover or focus, underline by default
33
45
  * @cssprop [--breadcrumb-current-color] - Sets the color of the current page and unlinked steps
34
46
  * @cssprop [--breadcrumb-focus-outline-color] - Sets the color of a linked step's focus outline
35
47
  * @cssprop [--breadcrumb-separator] - Sets the separator between steps, as a quoted CSS string, such as '>'
@@ -38,87 +50,95 @@ export const EunomiaBreadcrumbTagName = "eun-breadcrumb";
38
50
  * @cssprop [--breadcrumb-item-max-width] - Sets the maximum width of each step, beyond which its label truncates with an ellipsis
39
51
  * @cssprop [--breadcrumb-gap] - Sets the row gap, used when the trail wraps onto multiple lines
40
52
  * @cssprop [--breadcrumb-transition-duration] - Sets the duration of the link hover color transition
41
- * @fires {NavigationEvent} eunnavigate - Fired before following a step's link, so a client-side router can intercept the navigation. Cancelable
42
53
  * @element eun-breadcrumb
43
54
  */
44
55
  let EunomiaBreadcrumb = class EunomiaBreadcrumb extends LitElement {
45
56
  constructor() {
46
57
  super(...arguments);
58
+ _EunomiaBreadcrumb_instances.add(this);
47
59
  /**
48
- * The trail's steps, in order, from the root to the current page. Also
49
- * reflected as a JSON-serialized `items` attribute (Lit's default
50
- * `Array` converter), matching `eun-toggle-group`/`eun-segmented-filter`
51
- * — needed for the API tab's playground, which round-trips components
52
- * through an HTML string and would otherwise drop a JS-only property.
53
- * @default []
60
+ * The steps, the host's element children in order.
61
+ * @internal
54
62
  */
55
- this.items = [];
63
+ this.steps = [];
56
64
  /**
57
- * Re-renders when the slotted `eun-breadcrumb-item`s change, since that
58
- * affects both whether the data-driven trail's own last item still
59
- * counts as the overall trail's last (current) step, and whether the
60
- * items-slot wrapper should stay hidden.
61
- * @private
65
+ * The step this breadcrumb marked as the current page itself, so the
66
+ * mark can be removed once it stops being the last step.
67
+ * @internal
62
68
  */
63
- this.handleItemsSlotChange = () => {
64
- this.requestUpdate();
65
- };
69
+ _EunomiaBreadcrumb_autoCurrent.set(this, void 0);
70
+ /**
71
+ * Keeps {@link steps} in sync with the host's children. Created on
72
+ * connection rather than as a field, so the class stays constructible
73
+ * where `MutationObserver` doesn't exist, such as during SSR.
74
+ * @internal
75
+ */
76
+ _EunomiaBreadcrumb_childObserver.set(this, void 0);
77
+ }
78
+ connectedCallback() {
79
+ super.connectedCallback();
80
+ __classPrivateFieldGet(this, _EunomiaBreadcrumb_instances, "m", _EunomiaBreadcrumb_syncSteps).call(this);
81
+ __classPrivateFieldSet(this, _EunomiaBreadcrumb_childObserver, __classPrivateFieldGet(this, _EunomiaBreadcrumb_childObserver, "f") ?? new MutationObserver(() => __classPrivateFieldGet(this, _EunomiaBreadcrumb_instances, "m", _EunomiaBreadcrumb_syncSteps).call(this)), "f");
82
+ __classPrivateFieldGet(this, _EunomiaBreadcrumb_childObserver, "f").observe(this, { childList: true });
83
+ }
84
+ disconnectedCallback() {
85
+ __classPrivateFieldGet(this, _EunomiaBreadcrumb_childObserver, "f")?.disconnect();
86
+ super.disconnectedCallback();
87
+ }
88
+ updated(changed) {
89
+ super.updated(changed);
90
+ this.stepSlots.forEach((slot, index) => {
91
+ const step = this.steps[index];
92
+ if (step && slot.assignedElements()[0] !== step) {
93
+ slot.assign(step);
94
+ }
95
+ });
96
+ __classPrivateFieldGet(this, _EunomiaBreadcrumb_instances, "m", _EunomiaBreadcrumb_markCurrent).call(this);
66
97
  }
67
98
  render() {
68
- // Whichever step ends up last overall — a slotted `eun-breadcrumb-item`
69
- // if there's one, otherwise the last data-driven item — is the trail's
70
- // real current step. `this.children` (not a queried `<slot>`) is what
71
- // makes this available synchronously on the very first render.
72
- const hasSlottedItems = this.children.length > 0;
73
- const lastIndex = this.items.length - 1;
74
- // `role="list"` below is deliberate, not redundant : Safari drops the
75
- // implicit "list" role once `list-style: none` is applied (see #list
76
- // in the stylesheet), silently skipping this list for VoiceOver users
77
- // unless it's restored explicitly.
99
+ const lastIndex = this.steps.length - 1;
78
100
  /* eslint-disable lit-a11y/no-redundant-role */
79
101
  return html `
80
102
  <nav aria-label=${this.ariaLabel ?? "Breadcrumb"}>
81
103
  <ol id="list" role="list">
82
- ${this.items.map((item, index) => this.renderItem(item, !hasSlottedItems && index === lastIndex))}
83
- <li id="items-slot" class=${classMap({ hidden: !hasSlottedItems })}>
84
- <slot @slotchange=${this.handleItemsSlotChange}></slot>
85
- </li>
104
+ ${this.steps.map((_, index) => html `<li>
105
+ <slot></slot>${index < lastIndex
106
+ ? html `<span class="separator" aria-hidden="true"></span>`
107
+ : ""}
108
+ </li>`)}
86
109
  </ol>
87
110
  </nav>
88
111
  `;
89
112
  /* eslint-enable lit-a11y/no-redundant-role */
90
113
  }
91
- /**
92
- * Renders a single data-driven step, including its trailing separator —
93
- * skipped only when this is genuinely the trail's last visible step, so
94
- * it doesn't dangle after a step that's actually followed by slotted
95
- * items (see {@link render}).
96
- *
97
- * @param item the step to render.
98
- * @param isLastVisible whether this is the trail's actual last step.
99
- * @returns the rendered template.
100
- * @private
101
- */
102
- renderItem(item, isLastVisible) {
103
- const icon = item.icon
104
- ? html `<eun-icon name=${item.icon} size="14"></eun-icon>`
105
- : nothing;
106
- if (isLastVisible) {
107
- return html `<li>
108
- <span aria-current="page">${icon}${item.label}</span>
109
- </li>`;
110
- }
111
- const separator = html `<span class="separator" aria-hidden="true"></span>`;
112
- if (item.href) {
113
- return html `<li>
114
- <a
115
- href=${item.href}
116
- @click=${(event) => handleLinkNavigation(this, event, item.href)}
117
- >${icon}${item.label}</a
118
- >${separator}
119
- </li>`;
120
- }
121
- return html `<li><span>${icon}${item.label}</span>${separator}</li>`;
114
+ };
115
+ _EunomiaBreadcrumb_autoCurrent = new WeakMap();
116
+ _EunomiaBreadcrumb_childObserver = new WeakMap();
117
+ _EunomiaBreadcrumb_instances = new WeakSet();
118
+ _EunomiaBreadcrumb_syncSteps = function _EunomiaBreadcrumb_syncSteps() {
119
+ this.steps = Array.from(this.children);
120
+ };
121
+ _EunomiaBreadcrumb_markCurrent = function _EunomiaBreadcrumb_markCurrent() {
122
+ const last = this.steps[this.steps.length - 1];
123
+ if (__classPrivateFieldGet(this, _EunomiaBreadcrumb_autoCurrent, "f") && __classPrivateFieldGet(this, _EunomiaBreadcrumb_autoCurrent, "f") !== last) {
124
+ __classPrivateFieldGet(this, _EunomiaBreadcrumb_instances, "m", _EunomiaBreadcrumb_setCurrent).call(this, __classPrivateFieldGet(this, _EunomiaBreadcrumb_autoCurrent, "f"), false);
125
+ __classPrivateFieldSet(this, _EunomiaBreadcrumb_autoCurrent, undefined, "f");
126
+ }
127
+ if (!last || last === __classPrivateFieldGet(this, _EunomiaBreadcrumb_autoCurrent, "f")) {
128
+ return;
129
+ }
130
+ const hasCurrent = this.steps.some((step) => step.getAttribute("aria-current") === "page");
131
+ if (!hasCurrent) {
132
+ __classPrivateFieldGet(this, _EunomiaBreadcrumb_instances, "m", _EunomiaBreadcrumb_setCurrent).call(this, last, true);
133
+ __classPrivateFieldSet(this, _EunomiaBreadcrumb_autoCurrent, last, "f");
134
+ }
135
+ };
136
+ _EunomiaBreadcrumb_setCurrent = function _EunomiaBreadcrumb_setCurrent(step, current) {
137
+ if (current) {
138
+ step.setAttribute("aria-current", "page");
139
+ }
140
+ else {
141
+ step.removeAttribute("aria-current");
122
142
  }
123
143
  };
124
144
  /**
@@ -129,9 +149,23 @@ let EunomiaBreadcrumb = class EunomiaBreadcrumb extends LitElement {
129
149
  * @readonly
130
150
  */
131
151
  EunomiaBreadcrumb.styles = [breadcrumbStyles];
152
+ /**
153
+ * Manual slot assignment : each step is assigned to the slot of its own
154
+ * list item without the breadcrumb writing a `slot` attribute on the
155
+ * consumer's elements, which a framework would then reset or report as
156
+ * a hydration mismatch.
157
+ * @internal
158
+ */
159
+ EunomiaBreadcrumb.shadowRootOptions = {
160
+ ...LitElement.shadowRootOptions,
161
+ slotAssignment: "manual",
162
+ };
163
+ __decorate([
164
+ state()
165
+ ], EunomiaBreadcrumb.prototype, "steps", void 0);
132
166
  __decorate([
133
- property({ type: Array, reflect: true })
134
- ], EunomiaBreadcrumb.prototype, "items", void 0);
167
+ queryAll("#list slot")
168
+ ], EunomiaBreadcrumb.prototype, "stepSlots", void 0);
135
169
  EunomiaBreadcrumb = __decorate([
136
170
  customElement(EunomiaBreadcrumbTagName)
137
171
  ], EunomiaBreadcrumb);
@@ -2,8 +2,11 @@
2
2
  * Base style for the breadcrumb component.
3
3
  *
4
4
  * Custom css variables:
5
+ * [--breadcrumb-font-size] - Set a custom font size for the whole trail
5
6
  * [--breadcrumb-link-color] - Set a custom color for linked steps
6
7
  * [--breadcrumb-link-color-hover] - Set a custom color for linked steps on hover/focus
8
+ * [--breadcrumb-link-text-decoration] - Set a custom text decoration for linked steps, underline by default
9
+ * [--breadcrumb-link-text-decoration-hover] - Set a custom text decoration for linked steps on hover/focus, underline by default
7
10
  * [--breadcrumb-current-color] - Set a custom color for the current page and unlinked steps
8
11
  * [--breadcrumb-focus-outline-color] - Set a custom color for a linked step's focus outline
9
12
  * [--breadcrumb-separator] - Set a custom separator between steps ; a quoted CSS string, e.g. '>'
@@ -3,8 +3,11 @@ import { css } from "lit";
3
3
  * Base style for the breadcrumb component.
4
4
  *
5
5
  * Custom css variables:
6
+ * [--breadcrumb-font-size] - Set a custom font size for the whole trail
6
7
  * [--breadcrumb-link-color] - Set a custom color for linked steps
7
8
  * [--breadcrumb-link-color-hover] - Set a custom color for linked steps on hover/focus
9
+ * [--breadcrumb-link-text-decoration] - Set a custom text decoration for linked steps, underline by default
10
+ * [--breadcrumb-link-text-decoration-hover] - Set a custom text decoration for linked steps on hover/focus, underline by default
8
11
  * [--breadcrumb-current-color] - Set a custom color for the current page and unlinked steps
9
12
  * [--breadcrumb-focus-outline-color] - Set a custom color for a linked step's focus outline
10
13
  * [--breadcrumb-separator] - Set a custom separator between steps ; a quoted CSS string, e.g. '>'
@@ -18,7 +21,7 @@ export const breadcrumbStyles = css `
18
21
  :host {
19
22
  display: block;
20
23
  font-family: var(--eun-font-family, "Mulish", sans-serif);
21
- font-size: var(--eun-font-size-s, 14px);
24
+ font-size: var(--breadcrumb-font-size, var(--eun-font-size-s, 14px));
22
25
  }
23
26
  #list {
24
27
  display: flex;
@@ -32,54 +35,47 @@ export const breadcrumbStyles = css `
32
35
  #list li {
33
36
  display: inline-flex;
34
37
  align-items: center;
35
- max-width: var(--breadcrumb-item-max-width, 240px);
36
- }
37
- #items-slot {
38
- display: contents;
39
- }
40
- #items-slot.hidden {
41
- display: none;
38
+ min-width: 0;
42
39
  }
43
- #list li > a,
44
- #list li > span {
40
+ ::slotted(*) {
41
+ max-width: var(--breadcrumb-item-max-width, 240px);
45
42
  overflow: hidden;
46
43
  text-overflow: ellipsis;
47
44
  white-space: nowrap;
45
+ color: var(--breadcrumb-current-color, var(--eun-text-secondary, #484e61));
46
+ font-weight: var(--eun-font-weight-m, 500);
48
47
  }
49
- #list li eun-icon {
50
- display: inline-flex;
51
- vertical-align: middle;
52
- margin-inline-end: var(--eun-space-xxs, 1.6px);
53
- margin-block-end: 3px;
54
- }
55
- #list li > a {
48
+ ::slotted(a[href]) {
56
49
  color: var(--breadcrumb-link-color, var(--eun-color-primary-500, #3d6fff));
57
- text-decoration: none;
50
+ font-weight: inherit;
51
+ text-decoration: var(--breadcrumb-link-text-decoration, underline);
58
52
  border-radius: var(--eun-border-radius-s, 5px);
59
53
  outline: 2px solid transparent;
60
54
  transition:
61
- color var(--breadcrumb-transition-duration, 0.2s) ease-out,
62
- outline 0.2s ease-out;
55
+ color var(--breadcrumb-transition-duration, var(--eun-duration-m, 200ms))
56
+ var(--eun-easing-out, ease-out),
57
+ outline var(--eun-duration-m, 200ms) var(--eun-easing-out, ease-out);
63
58
  }
64
- #list li > a:hover,
65
- #list li > a:focus-visible {
59
+ ::slotted(a[href]:hover),
60
+ ::slotted(a[href]:focus-visible) {
66
61
  color: var(
67
62
  --breadcrumb-link-color-hover,
68
63
  var(--eun-color-primary-700, #3662e0)
69
64
  );
70
- text-decoration: underline;
65
+ text-decoration: var(--breadcrumb-link-text-decoration-hover, underline);
71
66
  }
72
- #list li > a:focus-visible {
73
- text-decoration: none;
67
+ ::slotted(a[href]:focus-visible) {
74
68
  outline-color: var(
75
69
  --breadcrumb-focus-outline-color,
76
70
  var(--eun-color-primary-500, #3d6fff)
77
71
  );
78
72
  outline-offset: 2px;
79
73
  }
80
- #list li > span {
74
+ ::slotted(a[aria-current="page"]),
75
+ ::slotted(a[aria-current="page"]:hover) {
81
76
  color: var(--breadcrumb-current-color, var(--eun-text-secondary, #484e61));
82
77
  font-weight: var(--eun-font-weight-m, 500);
78
+ text-decoration: none;
83
79
  }
84
80
  #list li > .separator {
85
81
  margin-inline: var(--breadcrumb-separator-gap, var(--eun-space-s, 8px));
@@ -64,22 +64,27 @@ declare const EunomiaCarousel_base: import("../../../utils/constructor.type.js")
64
64
  * @prop {boolean} [showArrows=true] - Shows the previous and next buttons
65
65
  * @prop {boolean} [showDots=true] - Shows the pagination dots
66
66
  * @attr {string} aria-label - The accessible name for the carousel region. Defaults to Carousel, and is recommended whenever a page has more than one carousel, or its purpose isn't already clear from a preceding heading
67
- * @prop {string} [ariaLabelPrevious='Previous slide'] - The accessible label of the previous control
68
- * @attr {string} [aria-label-previous='Previous slide'] - The accessible label of the previous control
69
- * @prop {string} [ariaLabelNext='Next slide'] - The accessible label of the next control
70
- * @attr {string} [aria-label-next='Next slide'] - The accessible label of the next control
67
+ * @prop {string} [ariaLabelPrevious] - The accessible label of the previous control. Defaults to the localized string for the current locale (English: "Previous slide")
68
+ * @attr {string} [aria-label-previous] - The accessible label of the previous control. Defaults to the localized string for the current locale (English: "Previous slide")
69
+ * @prop {string} [ariaLabelNext] - The accessible label of the next control. Defaults to the localized string for the current locale (English: "Next slide")
70
+ * @attr {string} [aria-label-next] - The accessible label of the next control. Defaults to the localized string for the current locale (English: "Next slide")
71
71
  * @fires {SlideChangeEvent} eunslidechange - Fired once the active slide settles on a new index
72
72
  * @cssprop [--carousel-visible-slides] - Sets how many slides are shown at once, overriding visibleSlides. Meant to be changed from your own media or container queries, so the slide count follows the available space without any script
73
73
  * @cssprop [--carousel-scroll-step] - Sets how many slides a previous, next, or dot click advances by, overriding scrollStep. Read again whenever the carousel resizes
74
74
  * @cssprop [--carousel-responsive-breakpoint] - Sets the width, in pixels, below which an inline layout moves its buttons into the header row, overriding responsiveBreakpoint. Zero disables the automatic switch. Read again whenever the carousel resizes
75
75
  * @cssprop [--carousel-gap] - Sets the gap between slides
76
76
  * @cssprop [--carousel-track-padding] - Sets the vertical padding on the track, giving slides' own effects that bleed outside their box, such as a hover shadow, room to render before it gets clipped
77
+ * @cssprop [--carousel-track-padding-top] - Sets the top padding on the track, falling back to --carousel-track-padding
78
+ * @cssprop [--carousel-track-padding-bottom] - Sets the bottom padding on the track, falling back to --carousel-track-padding
79
+ * @cssprop [--carousel-track-padding-inline] - Lets the track bleed past the carousel on both sides by this length, while slides stay aligned on its edges. The next slide and the hover shadows of the edge slides show past the container
80
+ * @cssprop [--carousel-slide-width] - Sets a fixed width for every slide, overriding visibleSlides, fullSlides and --carousel-min-slide-width
77
81
  * @cssprop [--carousel-min-slide-width] - Sets the minimum slide width. On a narrow viewport, this wins over visibleSlides so slides never get uncomfortably small
78
82
  * @cssprop [--carousel-peek-size] - Sets how much of the next slide peeks at the edge, when fullSlides is off
79
83
  * @cssprop [--carousel-fade-display] - Set to none to hide the edge fades through pure CSS, regardless of edgeFade, for instance on a narrow screen where a single slide fills the whole width
80
84
  * @cssprop [--carousel-fade-width] - Sets the width of the edge fades
81
85
  * @cssprop [--carousel-fade-color] - Sets the color of the edge fades, which fade to transparent
82
86
  * @cssprop [--carousel-active-scale] - Sets the scale applied to the active slide
87
+ * @cssprop [--carousel-header-margin] - Sets the space between the header row and the track
83
88
  * @cssprop [--carousel-header-gap] - Sets the gap between the title slot and the header navigation buttons
84
89
  * @cssprop [--carousel-header-align] - Sets the cross-axis alignment (align-items) between the title slot and the header navigation buttons. Defaults to baseline, which keeps the nav buttons close to the track below regardless of how tall a multi-line title ends up
85
90
  * @cssprop [--carousel-nav-display] - Set to none to hide the previous and next buttons through pure CSS, regardless of showArrows
@@ -88,6 +93,10 @@ declare const EunomiaCarousel_base: import("../../../utils/constructor.type.js")
88
93
  * @cssprop [--carousel-nav-color] - Sets the icon color of the previous and next buttons
89
94
  * @cssprop [--carousel-nav-background] - Sets the background color of the previous and next buttons
90
95
  * @cssprop [--carousel-nav-border-color] - Sets the border color of the previous and next buttons
96
+ * @cssprop [--carousel-nav-border-width] - Sets the border width of the previous and next buttons
97
+ * @cssprop [--carousel-nav-hover-background] - Sets the background color of the previous and next buttons on hover
98
+ * @cssprop [--carousel-nav-hover-color] - Sets the icon color of the previous and next buttons on hover
99
+ * @cssprop [--carousel-nav-hover-border-color] - Sets the border color of the previous and next buttons on hover
91
100
  * @cssprop [--carousel-nav-shadow] - Sets the shadow of the previous and next buttons in the inline layout, when enabled. Unset for the header layout, and always unset while a button is disabled
92
101
  * @cssprop [--carousel-nav-disabled-background] - Sets the background and border color of a disabled previous or next button
93
102
  * @cssprop [--carousel-nav-disabled-color] - Sets the icon color of a disabled previous or next button
@@ -197,15 +206,17 @@ export declare class EunomiaCarousel extends EunomiaCarousel_base {
197
206
  */
198
207
  showDots: boolean;
199
208
  /**
200
- * Accessible label of the Previous control.
201
- * @default Previous slide
209
+ * Accessible label of the Previous control. Resolved from the locale
210
+ * dictionary when unset, so it follows `locale` automatically.
211
+ * @default {i18n:carousel.previous}
202
212
  */
203
- ariaLabelPrevious: string;
213
+ ariaLabelPrevious?: string;
204
214
  /**
205
- * Accessible label of the Next control.
206
- * @default Next slide
215
+ * Accessible label of the Next control. Resolved from the locale
216
+ * dictionary when unset, so it follows `locale` automatically.
217
+ * @default {i18n:carousel.next}
207
218
  */
208
- ariaLabelNext: string;
219
+ ariaLabelNext?: string;
209
220
  /**
210
221
  * Index of the currently active slide (see {@link ACTIVE_SLIDE_CLASS}).
211
222
  * @internal
@@ -349,6 +360,15 @@ export declare class EunomiaCarousel extends EunomiaCarousel_base {
349
360
  * @private
350
361
  */
351
362
  private getCssPixelValue;
363
+ /**
364
+ * The track's inline padding in pixels, set by
365
+ * `--carousel-track-padding-inline` to let the track bleed past the
366
+ * host. Slides rest that far from the track's own edge, so scroll math
367
+ * measured from that edge has to offset by it.
368
+ * @returns the inline padding, `0` when unset.
369
+ * @private
370
+ */
371
+ private getTrackInset;
352
372
  /**
353
373
  * The highest valid slide index a page can start on, without leaving
354
374
  * empty space at the end of the track. Measured from the slides' actual
@@ -54,22 +54,27 @@ const ACTIVE_SLIDE_CLASS = "eun-carousel-active-slide";
54
54
  * @prop {boolean} [showArrows=true] - Shows the previous and next buttons
55
55
  * @prop {boolean} [showDots=true] - Shows the pagination dots
56
56
  * @attr {string} aria-label - The accessible name for the carousel region. Defaults to Carousel, and is recommended whenever a page has more than one carousel, or its purpose isn't already clear from a preceding heading
57
- * @prop {string} [ariaLabelPrevious='Previous slide'] - The accessible label of the previous control
58
- * @attr {string} [aria-label-previous='Previous slide'] - The accessible label of the previous control
59
- * @prop {string} [ariaLabelNext='Next slide'] - The accessible label of the next control
60
- * @attr {string} [aria-label-next='Next slide'] - The accessible label of the next control
57
+ * @prop {string} [ariaLabelPrevious] - The accessible label of the previous control. Defaults to the localized string for the current locale (English: "Previous slide")
58
+ * @attr {string} [aria-label-previous] - The accessible label of the previous control. Defaults to the localized string for the current locale (English: "Previous slide")
59
+ * @prop {string} [ariaLabelNext] - The accessible label of the next control. Defaults to the localized string for the current locale (English: "Next slide")
60
+ * @attr {string} [aria-label-next] - The accessible label of the next control. Defaults to the localized string for the current locale (English: "Next slide")
61
61
  * @fires {SlideChangeEvent} eunslidechange - Fired once the active slide settles on a new index
62
62
  * @cssprop [--carousel-visible-slides] - Sets how many slides are shown at once, overriding visibleSlides. Meant to be changed from your own media or container queries, so the slide count follows the available space without any script
63
63
  * @cssprop [--carousel-scroll-step] - Sets how many slides a previous, next, or dot click advances by, overriding scrollStep. Read again whenever the carousel resizes
64
64
  * @cssprop [--carousel-responsive-breakpoint] - Sets the width, in pixels, below which an inline layout moves its buttons into the header row, overriding responsiveBreakpoint. Zero disables the automatic switch. Read again whenever the carousel resizes
65
65
  * @cssprop [--carousel-gap] - Sets the gap between slides
66
66
  * @cssprop [--carousel-track-padding] - Sets the vertical padding on the track, giving slides' own effects that bleed outside their box, such as a hover shadow, room to render before it gets clipped
67
+ * @cssprop [--carousel-track-padding-top] - Sets the top padding on the track, falling back to --carousel-track-padding
68
+ * @cssprop [--carousel-track-padding-bottom] - Sets the bottom padding on the track, falling back to --carousel-track-padding
69
+ * @cssprop [--carousel-track-padding-inline] - Lets the track bleed past the carousel on both sides by this length, while slides stay aligned on its edges. The next slide and the hover shadows of the edge slides show past the container
70
+ * @cssprop [--carousel-slide-width] - Sets a fixed width for every slide, overriding visibleSlides, fullSlides and --carousel-min-slide-width
67
71
  * @cssprop [--carousel-min-slide-width] - Sets the minimum slide width. On a narrow viewport, this wins over visibleSlides so slides never get uncomfortably small
68
72
  * @cssprop [--carousel-peek-size] - Sets how much of the next slide peeks at the edge, when fullSlides is off
69
73
  * @cssprop [--carousel-fade-display] - Set to none to hide the edge fades through pure CSS, regardless of edgeFade, for instance on a narrow screen where a single slide fills the whole width
70
74
  * @cssprop [--carousel-fade-width] - Sets the width of the edge fades
71
75
  * @cssprop [--carousel-fade-color] - Sets the color of the edge fades, which fade to transparent
72
76
  * @cssprop [--carousel-active-scale] - Sets the scale applied to the active slide
77
+ * @cssprop [--carousel-header-margin] - Sets the space between the header row and the track
73
78
  * @cssprop [--carousel-header-gap] - Sets the gap between the title slot and the header navigation buttons
74
79
  * @cssprop [--carousel-header-align] - Sets the cross-axis alignment (align-items) between the title slot and the header navigation buttons. Defaults to baseline, which keeps the nav buttons close to the track below regardless of how tall a multi-line title ends up
75
80
  * @cssprop [--carousel-nav-display] - Set to none to hide the previous and next buttons through pure CSS, regardless of showArrows
@@ -78,6 +83,10 @@ const ACTIVE_SLIDE_CLASS = "eun-carousel-active-slide";
78
83
  * @cssprop [--carousel-nav-color] - Sets the icon color of the previous and next buttons
79
84
  * @cssprop [--carousel-nav-background] - Sets the background color of the previous and next buttons
80
85
  * @cssprop [--carousel-nav-border-color] - Sets the border color of the previous and next buttons
86
+ * @cssprop [--carousel-nav-border-width] - Sets the border width of the previous and next buttons
87
+ * @cssprop [--carousel-nav-hover-background] - Sets the background color of the previous and next buttons on hover
88
+ * @cssprop [--carousel-nav-hover-color] - Sets the icon color of the previous and next buttons on hover
89
+ * @cssprop [--carousel-nav-hover-border-color] - Sets the border color of the previous and next buttons on hover
81
90
  * @cssprop [--carousel-nav-shadow] - Sets the shadow of the previous and next buttons in the inline layout, when enabled. Unset for the header layout, and always unset while a button is disabled
82
91
  * @cssprop [--carousel-nav-disabled-background] - Sets the background and border color of a disabled previous or next button
83
92
  * @cssprop [--carousel-nav-disabled-color] - Sets the icon color of a disabled previous or next button
@@ -180,16 +189,6 @@ let EunomiaCarousel = class EunomiaCarousel extends LocalizableMixin(LitElement)
180
189
  * @default true
181
190
  */
182
191
  this.showDots = true;
183
- /**
184
- * Accessible label of the Previous control.
185
- * @default Previous slide
186
- */
187
- this.ariaLabelPrevious = "Previous slide";
188
- /**
189
- * Accessible label of the Next control.
190
- * @default Next slide
191
- */
192
- this.ariaLabelNext = "Next slide";
193
192
  /**
194
193
  * Index of the currently active slide (see {@link ACTIVE_SLIDE_CLASS}).
195
194
  * @internal
@@ -415,6 +414,20 @@ let EunomiaCarousel = class EunomiaCarousel extends LocalizableMixin(LitElement)
415
414
  const parsed = Number.parseFloat(getComputedStyle(this).getPropertyValue(name));
416
415
  return Number.isNaN(parsed) ? fallback : parsed;
417
416
  }
417
+ /**
418
+ * The track's inline padding in pixels, set by
419
+ * `--carousel-track-padding-inline` to let the track bleed past the
420
+ * host. Slides rest that far from the track's own edge, so scroll math
421
+ * measured from that edge has to offset by it.
422
+ * @returns the inline padding, `0` when unset.
423
+ * @private
424
+ */
425
+ getTrackInset() {
426
+ if (!this.trackEl) {
427
+ return 0;
428
+ }
429
+ return Number.parseFloat(getComputedStyle(this.trackEl).paddingLeft) || 0;
430
+ }
418
431
  /**
419
432
  * Number of pagination dots, derived from how many `scrollStep`-sized
420
433
  * jumps it takes to cover every slide. Rounds up so a trailing partial
@@ -481,10 +494,14 @@ let EunomiaCarousel = class EunomiaCarousel extends LocalizableMixin(LitElement)
481
494
  const track = this.trackEl;
482
495
  const trackRect = track.getBoundingClientRect();
483
496
  const maxScrollLeft = Math.max(0, track.scrollWidth - track.clientWidth);
497
+ const inset = this.getTrackInset();
484
498
  let max = 0;
485
499
  let closestDistance = Infinity;
486
500
  this.slides.forEach((slide, index) => {
487
- const slideStart = slide.getBoundingClientRect().left - trackRect.left + track.scrollLeft;
501
+ const slideStart = slide.getBoundingClientRect().left -
502
+ trackRect.left +
503
+ track.scrollLeft -
504
+ inset;
488
505
  const distance = Math.abs(slideStart - maxScrollLeft);
489
506
  if (distance < closestDistance) {
490
507
  closestDistance = distance;
@@ -512,7 +529,7 @@ let EunomiaCarousel = class EunomiaCarousel extends LocalizableMixin(LitElement)
512
529
  this.style.setProperty("--_centerPadding", "0px");
513
530
  return;
514
531
  }
515
- const trackWidth = this.trackEl.clientWidth;
532
+ const trackWidth = this.trackEl.clientWidth - 2 * this.getTrackInset();
516
533
  const slideWidth = this.slides[0].getBoundingClientRect().width;
517
534
  const padding = Math.max(0, (trackWidth - slideWidth) / 2);
518
535
  this.style.setProperty("--_centerPadding", `${padding}px`);
@@ -696,7 +713,7 @@ let EunomiaCarousel = class EunomiaCarousel extends LocalizableMixin(LitElement)
696
713
  const trackRect = this.trackEl.getBoundingClientRect();
697
714
  const reference = this.centerSnap
698
715
  ? trackRect.left + trackRect.width / 2
699
- : trackRect.left;
716
+ : trackRect.left + this.getTrackInset();
700
717
  let closestIndex = 0;
701
718
  let closestDistance = Infinity;
702
719
  this.slides.forEach((slide, index) => {
@@ -804,7 +821,9 @@ let EunomiaCarousel = class EunomiaCarousel extends LocalizableMixin(LitElement)
804
821
  type="button"
805
822
  id=${direction}
806
823
  class="nav"
807
- aria-label=${isPrev ? this.ariaLabelPrevious : this.ariaLabelNext}
824
+ aria-label=${isPrev
825
+ ? (this.ariaLabelPrevious ?? this.dictionary.carousel.previous)
826
+ : (this.ariaLabelNext ?? this.dictionary.carousel.next)}
808
827
  aria-controls="track"
809
828
  ?disabled=${disabled}
810
829
  @click=${() => (isPrev ? this.previous() : this.next())}