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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (496) hide show
  1. package/README.md +1 -1
  2. package/dist/breakpoints.d.ts +37 -10
  3. package/dist/breakpoints.js +38 -10
  4. package/dist/cdn/components/chunks/{chunk-MMLIPCOY.js → chunk-22D3SRFR.js} +1 -1
  5. package/dist/cdn/components/chunks/{chunk-4MXL6PZC.js → chunk-2Y2EU2CI.js} +28 -28
  6. package/dist/cdn/components/chunks/chunk-3MTUVMM5.js +1 -0
  7. package/dist/cdn/components/chunks/chunk-4PI6RDUS.js +1 -0
  8. package/dist/cdn/components/chunks/chunk-5GKM5DIB.js +1 -0
  9. package/dist/cdn/components/chunks/chunk-624VJYNA.js +1 -0
  10. package/dist/cdn/components/chunks/{chunk-5XJLIHAU.js → chunk-7KKWYPHY.js} +4 -2
  11. package/dist/cdn/components/chunks/chunk-A3X4KD2X.js +1 -0
  12. package/dist/cdn/components/chunks/chunk-BKZGTCMF.js +1 -0
  13. package/dist/cdn/components/chunks/{chunk-GW3VP2L7.js → chunk-BO3JOEWM.js} +1 -1
  14. package/dist/cdn/components/chunks/{chunk-NHFWATVN.js → chunk-BQFJR2UP.js} +5 -5
  15. package/dist/cdn/components/chunks/chunk-EUWUDCBZ.js +1 -0
  16. package/dist/cdn/components/chunks/{chunk-P32B7BFD.js → chunk-FF3I7C3C.js} +15 -15
  17. package/dist/cdn/components/chunks/{chunk-74AOAB4X.js → chunk-FOILAXLL.js} +6 -5
  18. package/dist/cdn/components/chunks/{chunk-E4IS25H7.js → chunk-G5SBDQQ3.js} +1 -1
  19. package/dist/cdn/components/chunks/{chunk-LGLQ36QB.js → chunk-GDBPWZN6.js} +1 -1
  20. package/dist/cdn/components/chunks/{chunk-S2UCEWNG.js → chunk-JYIIWN2P.js} +13 -11
  21. package/dist/cdn/components/chunks/{chunk-EOWBYZV7.js → chunk-KDN4O5W2.js} +26 -13
  22. package/dist/cdn/components/chunks/chunk-KSZRQRN4.js +1 -0
  23. package/dist/cdn/components/chunks/{chunk-PED5ATYN.js → chunk-L2ADCEN7.js} +1 -1
  24. package/dist/cdn/components/chunks/chunk-LMVW522V.js +1 -0
  25. package/dist/cdn/components/chunks/{chunk-5XJGYXW7.js → chunk-MOMYII3P.js} +1 -1
  26. package/dist/cdn/components/chunks/{chunk-SIHZFOTK.js → chunk-MQQ4BGVJ.js} +5 -5
  27. package/dist/cdn/components/chunks/{chunk-A4EQSU36.js → chunk-O7PHBLH2.js} +1 -1
  28. package/dist/cdn/components/chunks/chunk-PD62MBOJ.js +1 -0
  29. package/dist/cdn/components/chunks/{chunk-KBH5PCUO.js → chunk-PE4DAXHQ.js} +1 -1
  30. package/dist/cdn/components/chunks/{chunk-GSJEJLFA.js → chunk-PMPSJG5V.js} +7 -7
  31. package/dist/cdn/components/chunks/{chunk-5EVP7YNE.js → chunk-PPCHQG7P.js} +1 -1
  32. package/dist/cdn/components/chunks/{chunk-EJIX2D4Z.js → chunk-QZ5SHR3I.js} +15 -11
  33. package/dist/cdn/components/chunks/chunk-RS7TWEMQ.js +1 -0
  34. package/dist/cdn/components/chunks/chunk-SMTIDNGW.js +1 -0
  35. package/dist/cdn/components/chunks/{chunk-YGUJJ25C.js → chunk-SZYEBMG6.js} +11 -10
  36. package/dist/cdn/components/chunks/chunk-UDVB4LAE.js +56 -0
  37. package/dist/cdn/components/chunks/{chunk-UAGCQF23.js → chunk-UYZR4JXZ.js} +17 -12
  38. package/dist/cdn/components/chunks/chunk-VG6NAAIV.js +1 -0
  39. package/dist/cdn/components/chunks/chunk-VJCNHMQZ.js +10 -0
  40. package/dist/cdn/components/chunks/chunk-VOTRXBDS.js +38 -0
  41. package/dist/cdn/components/chunks/{chunk-BMQOI7HX.js → chunk-VYFR364B.js} +128 -74
  42. package/dist/cdn/components/chunks/{chunk-IJ5WFMK4.js → chunk-XDPRWUKN.js} +7 -6
  43. package/dist/cdn/components/chunks/{chunk-XH6NREVZ.js → chunk-YITWLCD3.js} +1 -1
  44. package/dist/cdn/components/chunks/{chunk-BQHYZB2W.js → chunk-ZBN4HTWP.js} +1 -1
  45. package/dist/cdn/components/chunks/{chunk-RJCJXB7Y.js → chunk-ZKZV2YG5.js} +18 -18
  46. package/dist/cdn/components/eun-alert.js +24 -16
  47. package/dist/cdn/components/eun-animate.js +12 -6
  48. package/dist/cdn/components/eun-badge.js +7 -7
  49. package/dist/cdn/components/eun-breadcrumb.js +25 -41
  50. package/dist/cdn/components/eun-button.js +1 -1
  51. package/dist/cdn/components/eun-calendar.js +68 -66
  52. package/dist/cdn/components/eun-card.js +67 -13
  53. package/dist/cdn/components/eun-carousel.js +66 -35
  54. package/dist/cdn/components/eun-check-card.js +13 -6
  55. package/dist/cdn/components/eun-checkbox-list.js +4 -4
  56. package/dist/cdn/components/eun-checkbox.js +1 -1
  57. package/dist/cdn/components/eun-chip.js +1 -1
  58. package/dist/cdn/components/eun-collapse.js +87 -39
  59. package/dist/cdn/components/eun-color-picker.js +54 -53
  60. package/dist/cdn/components/eun-counter.js +14 -13
  61. package/dist/cdn/components/eun-date-picker.js +66 -63
  62. package/dist/cdn/components/eun-description-list.js +152 -0
  63. package/dist/cdn/components/eun-divider.js +1 -1
  64. package/dist/cdn/components/eun-drawer.js +26 -12
  65. package/dist/cdn/components/eun-dropdown-button.js +1 -1
  66. package/dist/cdn/components/eun-dropdown-item.js +6 -5
  67. package/dist/cdn/components/eun-fab.js +20 -19
  68. package/dist/cdn/components/eun-icon.js +1 -1
  69. package/dist/cdn/components/eun-image-card.js +79 -22
  70. package/dist/cdn/components/eun-image-carousel.js +92 -47
  71. package/dist/cdn/components/eun-infinite-list.js +23 -11
  72. package/dist/cdn/components/eun-input-file.js +14 -13
  73. package/dist/cdn/components/eun-input-phone.js +26 -26
  74. package/dist/cdn/components/eun-input.js +1 -1
  75. package/dist/cdn/components/eun-label.js +4 -4
  76. package/dist/cdn/components/eun-link.js +174 -27
  77. package/dist/cdn/components/eun-loader.js +1 -1
  78. package/dist/cdn/components/eun-modal.js +29 -22
  79. package/dist/cdn/components/eun-pagination.js +17 -12
  80. package/dist/cdn/components/eun-password-strength.js +6 -2
  81. package/dist/cdn/components/eun-progress-bar.js +13 -5
  82. package/dist/cdn/components/eun-radio-card.js +16 -9
  83. package/dist/cdn/components/eun-radio-list.js +4 -4
  84. package/dist/cdn/components/eun-radio.js +1 -1
  85. package/dist/cdn/components/eun-scheduler-event-editor.js +8 -8
  86. package/dist/cdn/components/eun-scheduler-event.js +1 -1
  87. package/dist/cdn/components/eun-scheduler.js +42 -42
  88. package/dist/cdn/components/eun-search.js +21 -20
  89. package/dist/cdn/components/eun-select.js +12 -11
  90. package/dist/cdn/components/eun-sidebar.js +34 -20
  91. package/dist/cdn/components/eun-skeleton.js +1 -1
  92. package/dist/cdn/components/eun-slider.js +15 -14
  93. package/dist/cdn/components/eun-sliding-card.js +8 -4
  94. package/dist/cdn/components/eun-step.js +17 -6
  95. package/dist/cdn/components/eun-stepper.js +17 -6
  96. package/dist/cdn/components/eun-switch.js +10 -8
  97. package/dist/cdn/components/eun-tab-group.js +22 -17
  98. package/dist/cdn/components/eun-tab-panel.js +11 -3
  99. package/dist/cdn/components/eun-tab.js +1 -1
  100. package/dist/cdn/components/eun-table-action-bar.js +1 -1
  101. package/dist/cdn/components/eun-table.js +572 -31
  102. package/dist/cdn/components/eun-tag.js +13 -7
  103. package/dist/cdn/components/eun-textarea.js +24 -24
  104. package/dist/cdn/components/eun-time-picker.js +21 -19
  105. package/dist/cdn/components/eun-toast.js +36 -16
  106. package/dist/cdn/components/eun-toggle-group.js +64 -37
  107. package/dist/cdn/components/eun-toggle-item.js +24 -21
  108. package/dist/cdn/components/eun-toggle.js +12 -10
  109. package/dist/cdn/components/eun-toolbar.js +62 -52
  110. package/dist/cdn/components/eun-tooltip.js +30 -14
  111. package/dist/cdn/styles/breakpoints.scss +8 -0
  112. package/dist/cdn/styles/eunomia-grid.scss +6 -0
  113. package/dist/cdn/styles/eunomia-themes.css +1 -1
  114. package/dist/cdn/styles/themes/eunomia-theme.css +1 -1
  115. package/dist/cdn/styles/themes/eunomia-theme.scss +4 -3
  116. package/dist/cdn/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  117. package/dist/cdn/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  118. package/dist/cdn/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  119. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  120. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  121. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.css +1 -1
  122. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  123. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  124. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  125. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.css +1 -1
  126. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  127. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  128. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  129. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.css +1 -1
  130. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  131. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  132. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  133. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.css +1 -1
  134. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  135. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  136. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  137. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.css +1 -1
  138. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  139. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  140. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  141. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.css +1 -1
  142. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  143. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  144. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  145. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.css +1 -1
  146. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  147. package/dist/cdn/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  148. package/dist/cdn/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  149. package/dist/cdn/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  150. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  151. package/dist/cdn/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  152. package/dist/cdn/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  153. package/dist/cdn/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  154. package/dist/components/action/button/button.d.ts +51 -19
  155. package/dist/components/action/button/button.js +107 -24
  156. package/dist/components/action/button/button.styles.js +115 -62
  157. package/dist/components/action/dropdown-button/dropdown-button.d.ts +10 -10
  158. package/dist/components/action/dropdown-button/dropdown-button.js +18 -17
  159. package/dist/components/action/dropdown-button/dropdown-button.styles.js +3 -2
  160. package/dist/components/action/dropdown-button/dropdown-item.js +5 -6
  161. package/dist/components/action/dropdown-button/dropdown-item.styles.js +3 -2
  162. package/dist/components/action/fab/fab.d.ts +7 -6
  163. package/dist/components/action/fab/fab.js +11 -8
  164. package/dist/components/action/fab/fab.styles.js +18 -17
  165. package/dist/components/action/link/link.d.ts +72 -9
  166. package/dist/components/action/link/link.js +183 -23
  167. package/dist/components/action/link/link.styles.js +146 -10
  168. package/dist/components/action/shared-styles/button-palette.styles.d.ts +3 -3
  169. package/dist/components/action/shared-styles/button-palette.styles.js +29 -29
  170. package/dist/components/action/toggle/toggle-group.d.ts +17 -5
  171. package/dist/components/action/toggle/toggle-group.js +46 -19
  172. package/dist/components/action/toggle/toggle-group.styles.d.ts +4 -1
  173. package/dist/components/action/toggle/toggle-group.styles.js +56 -27
  174. package/dist/components/action/toggle/toggle-item.d.ts +4 -4
  175. package/dist/components/action/toggle/toggle-item.js +2 -2
  176. package/dist/components/action/toggle/toggle-item.styles.js +20 -17
  177. package/dist/components/action/toggle/toggle.d.ts +2 -0
  178. package/dist/components/action/toggle/toggle.js +2 -0
  179. package/dist/components/action/toggle/toggle.styles.d.ts +2 -0
  180. package/dist/components/action/toggle/toggle.styles.js +12 -8
  181. package/dist/components/alert/alert/alert.d.ts +2 -0
  182. package/dist/components/alert/alert/alert.js +2 -0
  183. package/dist/components/alert/alert/alert.styles.js +23 -13
  184. package/dist/components/alert/drawer/drawer.d.ts +3 -1
  185. package/dist/components/alert/drawer/drawer.js +5 -3
  186. package/dist/components/alert/drawer/drawer.styles.js +25 -9
  187. package/dist/components/alert/modal/modal.d.ts +11 -9
  188. package/dist/components/alert/modal/modal.js +15 -13
  189. package/dist/components/alert/modal/modal.styles.js +16 -7
  190. package/dist/components/alert/toast/toast.d.ts +2 -0
  191. package/dist/components/alert/toast/toast.js +2 -0
  192. package/dist/components/alert/toast/toast.styles.js +37 -15
  193. package/dist/components/content/badge/badge.d.ts +6 -6
  194. package/dist/components/content/badge/badge.js +4 -4
  195. package/dist/components/content/badge/badge.styles.js +4 -4
  196. package/dist/components/content/card/card.d.ts +39 -7
  197. package/dist/components/content/card/card.js +71 -7
  198. package/dist/components/content/card/card.styles.js +58 -11
  199. package/dist/components/content/card/image-card.d.ts +62 -7
  200. package/dist/components/content/card/image-card.js +121 -11
  201. package/dist/components/content/card/image-card.styles.js +66 -15
  202. package/dist/components/content/card/sliding-card.d.ts +4 -1
  203. package/dist/components/content/card/sliding-card.js +3 -0
  204. package/dist/components/content/card/sliding-card.styles.js +5 -1
  205. package/dist/components/content/collapse/collapse.d.ts +39 -12
  206. package/dist/components/content/collapse/collapse.js +65 -25
  207. package/dist/components/content/collapse/collapse.styles.d.ts +10 -1
  208. package/dist/components/content/collapse/collapse.styles.js +69 -18
  209. package/dist/components/content/description-list/description-list.d.ts +87 -0
  210. package/dist/components/content/description-list/description-list.js +107 -0
  211. package/dist/components/content/description-list/description-list.styles.d.ts +1 -0
  212. package/dist/components/content/description-list/description-list.styles.js +185 -0
  213. package/dist/components/content/icon/icon.d.ts +14 -2
  214. package/dist/components/content/icon/icon.js +54 -22
  215. package/dist/components/content/icon/icon.style.d.ts +2 -0
  216. package/dist/components/content/icon/icon.style.js +8 -2
  217. package/dist/components/content/image-carousel/image-carousel.d.ts +30 -19
  218. package/dist/components/content/image-carousel/image-carousel.js +48 -45
  219. package/dist/components/content/image-carousel/image-carousel.styles.js +69 -30
  220. package/dist/components/content/password-strength/password-strength.styles.js +5 -1
  221. package/dist/components/content/progress-bar/progress-bar.styles.js +12 -4
  222. package/dist/components/content/shared-styles/card-link.styles.js +5 -3
  223. package/dist/components/content/shared-styles/tone-surface.styles.d.ts +5 -0
  224. package/dist/components/content/shared-styles/tone-surface.styles.js +19 -14
  225. package/dist/components/content/tag/tag.d.ts +4 -0
  226. package/dist/components/content/tag/tag.js +4 -0
  227. package/dist/components/content/tag/tag.styles.js +14 -4
  228. package/dist/components/content/tooltip/tooltip.d.ts +3 -2
  229. package/dist/components/content/tooltip/tooltip.js +9 -16
  230. package/dist/components/content/tooltip/tooltip.styles.js +25 -7
  231. package/dist/components/form/checkbox/check-card.d.ts +4 -1
  232. package/dist/components/form/checkbox/check-card.js +4 -1
  233. package/dist/components/form/checkbox/check-card.styles.js +13 -4
  234. package/dist/components/form/checkbox/checkbox-list.d.ts +4 -1
  235. package/dist/components/form/checkbox/checkbox-list.js +11 -7
  236. package/dist/components/form/checkbox/checkbox.d.ts +4 -1
  237. package/dist/components/form/checkbox/checkbox.js +4 -1
  238. package/dist/components/form/checkbox/checkbox.styles.js +2 -2
  239. package/dist/components/form/color-picker/color-picker.d.ts +10 -4
  240. package/dist/components/form/color-picker/color-picker.js +23 -25
  241. package/dist/components/form/color-picker/color-picker.styles.js +6 -5
  242. package/dist/components/form/counter/counter.d.ts +7 -4
  243. package/dist/components/form/counter/counter.js +8 -5
  244. package/dist/components/form/counter/counter.styles.js +10 -9
  245. package/dist/components/form/date-picker/date-picker.d.ts +40 -36
  246. package/dist/components/form/date-picker/date-picker.js +35 -45
  247. package/dist/components/form/date-picker/date-picker.styles.js +13 -10
  248. package/dist/components/form/input/input.d.ts +10 -4
  249. package/dist/components/form/input/input.js +12 -6
  250. package/dist/components/form/input-file/input-file.d.ts +4 -1
  251. package/dist/components/form/input-file/input-file.js +8 -5
  252. package/dist/components/form/input-file/input-file.styles.js +3 -2
  253. package/dist/components/form/input-phone/input-phone.d.ts +11 -5
  254. package/dist/components/form/input-phone/input-phone.js +16 -20
  255. package/dist/components/form/input-phone/input-phone.styles.js +16 -16
  256. package/dist/components/form/label/label.styles.js +3 -3
  257. package/dist/components/form/radio/radio-card.d.ts +5 -2
  258. package/dist/components/form/radio/radio-card.js +5 -2
  259. package/dist/components/form/radio/radio-card.styles.js +14 -5
  260. package/dist/components/form/radio/radio-list.d.ts +5 -2
  261. package/dist/components/form/radio/radio-list.js +14 -10
  262. package/dist/components/form/radio/radio.d.ts +5 -2
  263. package/dist/components/form/radio/radio.js +5 -2
  264. package/dist/components/form/radio/radio.styles.js +4 -4
  265. package/dist/components/form/search/search.d.ts +2 -1
  266. package/dist/components/form/search/search.js +6 -15
  267. package/dist/components/form/search/search.styles.js +8 -7
  268. package/dist/components/form/select/select.d.ts +12 -5
  269. package/dist/components/form/select/select.js +18 -21
  270. package/dist/components/form/select/select.styles.js +3 -2
  271. package/dist/components/form/shared-styles/card.styles.js +5 -4
  272. package/dist/components/form/shared-styles/field.styles.js +21 -11
  273. package/dist/components/form/shared-styles/form-labels.styles.js +1 -1
  274. package/dist/components/form/slider/slider.d.ts +4 -1
  275. package/dist/components/form/slider/slider.js +5 -2
  276. package/dist/components/form/slider/slider.styles.js +8 -7
  277. package/dist/components/form/switch/switch.d.ts +4 -1
  278. package/dist/components/form/switch/switch.js +4 -1
  279. package/dist/components/form/switch/switch.styles.js +7 -5
  280. package/dist/components/form/textarea/textarea.d.ts +10 -4
  281. package/dist/components/form/textarea/textarea.js +18 -12
  282. package/dist/components/form/time-picker/time-picker-columns.styles.js +4 -2
  283. package/dist/components/form/time-picker/time-picker-list.styles.js +2 -1
  284. package/dist/components/form/time-picker/time-picker.d.ts +9 -5
  285. package/dist/components/form/time-picker/time-picker.js +25 -29
  286. package/dist/components/form/time-picker/time-picker.styles.js +9 -8
  287. package/dist/components/layout/animate/animate.d.ts +41 -11
  288. package/dist/components/layout/animate/animate.js +48 -16
  289. package/dist/components/layout/animate/animate.styles.js +9 -16
  290. package/dist/components/layout/infinite-list/infinite-list.d.ts +33 -10
  291. package/dist/components/layout/infinite-list/infinite-list.js +115 -18
  292. package/dist/components/layout/infinite-list/infinite-list.styles.d.ts +3 -0
  293. package/dist/components/layout/infinite-list/infinite-list.styles.js +17 -5
  294. package/dist/components/loader/loader/loader.styles.js +3 -1
  295. package/dist/components/navigation/breadcrumb/breadcrumb.d.ts +31 -45
  296. package/dist/components/navigation/breadcrumb/breadcrumb.js +111 -77
  297. package/dist/components/navigation/breadcrumb/breadcrumb.styles.d.ts +3 -0
  298. package/dist/components/navigation/breadcrumb/breadcrumb.styles.js +22 -26
  299. package/dist/components/navigation/carousel/carousel.d.ts +30 -10
  300. package/dist/components/navigation/carousel/carousel.js +37 -18
  301. package/dist/components/navigation/carousel/carousel.styles.js +60 -20
  302. package/dist/components/navigation/pagination/pagination.styles.js +8 -3
  303. package/dist/components/navigation/sidebar/sidebar.d.ts +2 -0
  304. package/dist/components/navigation/sidebar/sidebar.js +2 -0
  305. package/dist/components/navigation/sidebar/sidebar.styles.js +27 -11
  306. package/dist/components/navigation/stepper/step.styles.js +16 -5
  307. package/dist/components/navigation/stepper/stepper.styles.js +16 -5
  308. package/dist/components/navigation/tabs/tab/tab.d.ts +11 -0
  309. package/dist/components/navigation/tabs/tab/tab.js +11 -0
  310. package/dist/components/navigation/tabs/tab/tab.styles.js +22 -16
  311. package/dist/components/navigation/tabs/tab-group/tab-group.js +7 -8
  312. package/dist/components/navigation/tabs/tab-group/tab-group.styles.js +19 -14
  313. package/dist/components/navigation/tabs/tab-panel/tab-panel.d.ts +4 -0
  314. package/dist/components/navigation/tabs/tab-panel/tab-panel.js +4 -0
  315. package/dist/components/navigation/tabs/tab-panel/tab-panel.styles.js +18 -1
  316. package/dist/components/navigation/toolbar/toolbar.d.ts +17 -49
  317. package/dist/components/navigation/toolbar/toolbar.js +23 -71
  318. package/dist/components/navigation/toolbar/toolbar.styles.js +59 -36
  319. package/dist/events/table-row-click.event.d.ts +5 -4
  320. package/dist/events/table-row-click.event.js +10 -5
  321. package/dist/features/scheduler/calendar/calendar.d.ts +12 -12
  322. package/dist/features/scheduler/calendar/calendar.js +15 -14
  323. package/dist/features/scheduler/calendar/calendar.styles.js +8 -6
  324. package/dist/features/scheduler/scheduler/scheduler.d.ts +7 -7
  325. package/dist/features/scheduler/scheduler/scheduler.js +21 -35
  326. package/dist/features/scheduler/scheduler/scheduler.styles.js +6 -4
  327. package/dist/features/scheduler/scheduler-event/scheduler-event.d.ts +12 -8
  328. package/dist/features/scheduler/scheduler-event/scheduler-event.js +9 -7
  329. package/dist/features/scheduler/scheduler-event/scheduler-event.styles.js +16 -10
  330. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.js +5 -5
  331. package/dist/features/scheduler/shared/scheduler-event-popover.js +2 -2
  332. package/dist/features/scheduler/shared/scheduler-hour-grid.d.ts +2 -2
  333. package/dist/features/scheduler/shared/scheduler-hour-grid.js +3 -3
  334. package/dist/features/scheduler/shared/scheduler-hour-grid.styles.js +3 -3
  335. package/dist/features/scheduler/shared/scheduler-month-view.d.ts +3 -3
  336. package/dist/features/scheduler/shared/scheduler-month-view.js +2 -2
  337. package/dist/features/scheduler/shared/scheduler-month-view.styles.js +2 -2
  338. package/dist/features/scheduler/shared/scheduler-year-view.styles.js +2 -2
  339. package/dist/features/table/table/table-native.styles.d.ts +28 -0
  340. package/dist/features/table/table/table-native.styles.js +502 -0
  341. package/dist/features/table/table/table.d.ts +342 -294
  342. package/dist/features/table/table/table.js +820 -546
  343. package/dist/features/table/table/table.styles.js +31 -17
  344. package/dist/features/table/table/table.types.d.ts +18 -23
  345. package/dist/features/table/table/table.utils.d.ts +6 -36
  346. package/dist/features/table/table/table.utils.js +16 -65
  347. package/dist/features/table/table-action-bar/table-action-bar.d.ts +33 -16
  348. package/dist/features/table/table-action-bar/table-action-bar.js +18 -25
  349. package/dist/features/table/table-action-bar/table-action-bar.styles.js +15 -3
  350. package/dist/i18n/en.d.ts +34 -0
  351. package/dist/i18n/en.js +34 -0
  352. package/dist/i18n/fr.js +38 -0
  353. package/dist/index.d.ts +7 -13
  354. package/dist/index.js +6 -10
  355. package/dist/jsx.d.ts +1 -1
  356. package/dist/mixins/button.mixin.d.ts +10 -9
  357. package/dist/mixins/button.mixin.js +14 -6
  358. package/dist/mixins/card-link.mixin.d.ts +3 -2
  359. package/dist/mixins/card-link.mixin.js +12 -5
  360. package/dist/mixins/check.mixin.js +4 -5
  361. package/dist/mixins/disabled.mixin.d.ts +3 -3
  362. package/dist/mixins/disabled.mixin.js +10 -5
  363. package/dist/mixins/field-appearance.mixin.d.ts +19 -0
  364. package/dist/mixins/{field-variant.mixin.js → field-appearance.mixin.js} +11 -11
  365. package/dist/mixins/form.mixin.d.ts +17 -1
  366. package/dist/mixins/form.mixin.js +80 -25
  367. package/dist/mixins/radio.mixin.js +4 -5
  368. package/dist/mixins/validators.mixin.d.ts +7 -1
  369. package/dist/mixins/validators.mixin.js +36 -17
  370. package/dist/ssr/animate-ssr.css +27 -72
  371. package/dist/ssr/button-ssr.css +319 -0
  372. package/dist/ssr/card-ssr.css +184 -0
  373. package/dist/ssr/description-list-ssr.css +150 -0
  374. package/dist/ssr/links-ssr.css +35 -0
  375. package/dist/ssr/overlay-ssr.css +0 -41
  376. package/dist/ssr/rich-text.css +38 -0
  377. package/dist/ssr/sidebar-ssr.css +0 -38
  378. package/dist/ssr/table-ssr.css +472 -0
  379. package/dist/ssr/tag-ssr.css +197 -0
  380. package/dist/ssr/toolbar-ssr.css +77 -39
  381. package/dist/types/variant.type.d.ts +26 -10
  382. package/dist/utils/drag-drop.utils.js +18 -2
  383. package/dist/utils/dropdown-menu.utils.d.ts +2 -2
  384. package/dist/utils/dropdown-menu.utils.js +4 -14
  385. package/dist/utils/light-dom-styles.utils.d.ts +14 -0
  386. package/dist/utils/light-dom-styles.utils.js +37 -0
  387. package/dist/utils/media.styles.d.ts +19 -0
  388. package/dist/utils/media.styles.js +23 -0
  389. package/dist/utils/motion.utils.d.ts +40 -0
  390. package/dist/utils/motion.utils.js +51 -0
  391. package/dist/utils/navigation.utils.d.ts +14 -0
  392. package/dist/utils/navigation.utils.js +33 -0
  393. package/dist/utils/new-tab-anchor.controller.d.ts +44 -0
  394. package/dist/utils/new-tab-anchor.controller.js +102 -0
  395. package/dist/utils/severity-icon.utils.d.ts +1 -1
  396. package/dist/utils/severity-icon.utils.js +1 -1
  397. package/dist/utils/theme-generator.utils.d.ts +9 -2
  398. package/dist/utils/theme-generator.utils.js +62 -21
  399. package/package.json +24 -29
  400. package/styles/breakpoints.scss +8 -0
  401. package/styles/eunomia-grid.scss +6 -0
  402. package/styles/themes/eunomia-theme.scss +4 -3
  403. package/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  404. package/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  405. package/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  406. package/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  407. package/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  408. package/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  409. package/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  410. package/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  411. package/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  412. package/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  413. package/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  414. package/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  415. package/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  416. package/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  417. package/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  418. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  419. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  420. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  421. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  422. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  423. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  424. package/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  425. package/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  426. package/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  427. package/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  428. package/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  429. package/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  430. package/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  431. package/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  432. package/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  433. package/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  434. package/dist/cdn/components/chunks/chunk-2JLDJFYD.js +0 -48
  435. package/dist/cdn/components/chunks/chunk-A6KGFALA.js +0 -132
  436. package/dist/cdn/components/chunks/chunk-ATH2OAMU.js +0 -1
  437. package/dist/cdn/components/chunks/chunk-BKHD4S57.js +0 -1
  438. package/dist/cdn/components/chunks/chunk-CEDHJUUH.js +0 -1
  439. package/dist/cdn/components/chunks/chunk-D2M4BV5Y.js +0 -328
  440. package/dist/cdn/components/chunks/chunk-E74CM7UG.js +0 -66
  441. package/dist/cdn/components/chunks/chunk-EST3M4AO.js +0 -1
  442. package/dist/cdn/components/chunks/chunk-GU6BVMFJ.js +0 -1
  443. package/dist/cdn/components/chunks/chunk-KVYUNKUO.js +0 -27
  444. package/dist/cdn/components/chunks/chunk-OAULRKHQ.js +0 -38
  445. package/dist/cdn/components/chunks/chunk-PCM7D3YF.js +0 -84
  446. package/dist/cdn/components/chunks/chunk-T4PTHUYF.js +0 -10
  447. package/dist/cdn/components/chunks/chunk-T7WABJEJ.js +0 -1
  448. package/dist/cdn/components/chunks/chunk-VRGRCYIO.js +0 -1
  449. package/dist/cdn/components/chunks/chunk-X2AUBZD2.js +0 -30
  450. package/dist/cdn/components/chunks/chunk-XSMCT4DF.js +0 -1
  451. package/dist/cdn/components/eun-breadcrumb-item.js +0 -93
  452. package/dist/cdn/components/eun-table-cell.js +0 -1
  453. package/dist/cdn/components/eun-table-column.js +0 -1
  454. package/dist/cdn/components/eun-table-header.js +0 -1
  455. package/dist/cdn/components/eun-table-item.js +0 -1
  456. package/dist/cdn/components/eun-table-skeleton-row.js +0 -1
  457. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  458. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  459. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
  460. package/dist/components/navigation/breadcrumb/breadcrumb-item.d.ts +0 -77
  461. package/dist/components/navigation/breadcrumb/breadcrumb-item.js +0 -130
  462. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.d.ts +0 -6
  463. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.js +0 -78
  464. package/dist/features/table/native-table.css +0 -276
  465. package/dist/features/table/shared-styles/table-row.styles.d.ts +0 -7
  466. package/dist/features/table/shared-styles/table-row.styles.js +0 -47
  467. package/dist/features/table/shared-styles/table-shared.styles.d.ts +0 -23
  468. package/dist/features/table/shared-styles/table-shared.styles.js +0 -33
  469. package/dist/features/table/table-cell/table-cell.d.ts +0 -59
  470. package/dist/features/table/table-cell/table-cell.js +0 -73
  471. package/dist/features/table/table-cell/table-cell.styles.d.ts +0 -1
  472. package/dist/features/table/table-cell/table-cell.styles.js +0 -46
  473. package/dist/features/table/table-column/table-column.d.ts +0 -73
  474. package/dist/features/table/table-column/table-column.js +0 -89
  475. package/dist/features/table/table-column/table-column.styles.d.ts +0 -1
  476. package/dist/features/table/table-column/table-column.styles.js +0 -51
  477. package/dist/features/table/table-header/table-header.d.ts +0 -102
  478. package/dist/features/table/table-header/table-header.js +0 -165
  479. package/dist/features/table/table-header/table-header.styles.d.ts +0 -1
  480. package/dist/features/table/table-header/table-header.styles.js +0 -147
  481. package/dist/features/table/table-item/table-item.d.ts +0 -179
  482. package/dist/features/table/table-item/table-item.js +0 -291
  483. package/dist/features/table/table-item/table-item.styles.d.ts +0 -1
  484. package/dist/features/table/table-item/table-item.styles.js +0 -404
  485. package/dist/features/table/table-managed/table-managed.d.ts +0 -19
  486. package/dist/features/table/table-managed/table-managed.js +0 -128
  487. package/dist/features/table/table-skeleton-row/table-skeleton-row.d.ts +0 -46
  488. package/dist/features/table/table-skeleton-row/table-skeleton-row.js +0 -110
  489. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.d.ts +0 -12
  490. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.js +0 -65
  491. package/dist/mixins/field-variant.mixin.d.ts +0 -22
  492. package/dist/mixins/table-row.mixin.d.ts +0 -37
  493. package/dist/mixins/table-row.mixin.js +0 -103
  494. package/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  495. package/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  496. package/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
@@ -4,12 +4,26 @@ 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
+ 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 _EunomiaLink_currentAnchor, _EunomiaLink_newTab;
7
19
  import { customElement, property, queryAssignedElements, } from "lit/decorators.js";
8
20
  import { html, LitElement, nothing } from "lit";
9
21
  import { classMap } from "lit/directives/class-map.js";
10
22
  import { ifDefined } from "lit/directives/if-defined.js";
11
23
  import { linkStyles } from "./link.styles.js";
12
- import { handleLinkNavigation } from "../../../utils/navigation.utils.js";
24
+ import { handleLinkNavigation, warnIgnoredHostLinkAttributes, } from "../../../utils/navigation.utils.js";
25
+ import { LocalizableMixin } from "../../../mixins/localizable.mixin.js";
26
+ import { NewTabAnchorController } from "../../../utils/new-tab-anchor.controller.js";
13
27
  /**
14
28
  * Tag name of the link component.
15
29
  */
@@ -21,15 +35,23 @@ export const EunomiaLinkTagName = "eun-link";
21
35
  * prevent the new page from controlling the original one, without affecting
22
36
  * same-tab navigation.
23
37
  *
24
- * @slot [default] - The link content
25
- * @slot [icon] - Replaces the leading icon entirely with any content, not just an icon element. Falls back to icon when empty
38
+ * Without href, a native anchor placed as a direct child becomes the link
39
+ * instead, such as a framework's own link component. The anchor then exists
40
+ * in the server-rendered HTML, so crawlers that don't run JavaScript still
41
+ * find it, and it keeps the link styles and the current state. When that
42
+ * anchor opens in a new tab, the link shows the same end icon and announces
43
+ * it the same way, through the anchor's aria-description.
44
+ *
45
+ * @slot [default] - The link content, or a native anchor carrying the href itself when href is unset
46
+ * @slot [icon] - Replaces the leading icon entirely with any content, not just an icon element, such as an icon from another set. Falls back to icon when empty. The icon is decorative : the focus ring surrounds the text only
26
47
  * @prop {string} href - The destination URL
27
- * @prop {'_blank' | '_self' | '_parent' | '_top'} [target='_self'] - Where to open the linked URL. Opening in a new tab automatically announces it to assistive technology
48
+ * @prop {'_blank' | '_self' | '_parent' | '_top'} [target='_self'] - Where to open the linked URL. Opening in a new tab automatically adds an external link icon at the end and announces it to assistive technology, in the current locale
28
49
  * @prop {import('../../content/icon/icon.type.js').EunomiaIconName} icon - An optional decorative icon displayed to the left of the link
29
- * @prop {'light' | 'dark'} [theme='light'] - The text color theme. Use dark on a dark background
50
+ * @prop {'light' | 'dark'} [theme='light'] - The text color theme. Use dark on a dark background, such as --eun-surface-inverse, where it takes the --eun-text-on-inverse colors
30
51
  * @prop {'auto' | 'off' | 'on'} [visitedStyle='auto'] - Controls the visited state color. Auto follows the browser's real navigation history, off always renders as unvisited, and on always renders as visited
31
52
  * @prop {boolean} [current=false] - Marks the link as the current page: it renders with aria-current="page" and keeps the --link-color-current color in every state (hover, focus, visited), for example an active item in a navigation
32
- * @attr {string} aria-label - An accessible label that overrides the link content. When the link also opens in a new tab, a note announcing it is appended automatically
53
+ * @prop {string} [locale] - The locale used to resolve the "opens in a new tab" announcement. Defaults to the one set with setDefaultLocale, English otherwise
54
+ * @attr {string} aria-label - An accessible label that overrides the link content. When the link also opens in a new tab, a note announcing it is appended automatically. Ignored with a slotted anchor, which takes it instead
33
55
  * @fires {NavigationEvent} eunnavigate - Fired before following the link, so a client-side router can intercept the navigation. Cancelable
34
56
  * @cssprop [--link-color] - Sets the color of the link
35
57
  * @cssprop [--link-color-hover] - Sets the color of the link on hover
@@ -40,14 +62,18 @@ export const EunomiaLinkTagName = "eun-link";
40
62
  * @cssprop [--link-line-height] - Sets the line-height of the link. Inherits the surrounding text's line-height when unset
41
63
  * @cssprop [--link-text-decoration] - Sets the text decoration of the link, for example none, when embedding a link inside an already distinct interactive surface such as a card
42
64
  * @cssprop [--link-icon-color] - Sets the color of the leading icon, independently of the link text color
65
+ * @cssprop [--link-icon-size] - Sets the size of the leading icon, 18px by default. Also sets the font size of the icon slot, so an icon from another set sized in em follows it
66
+ * @cssprop [--link-transition-duration] - Sets the duration of the color, background and focus transitions. Defaults to --eun-duration-xl
43
67
  * @cssprop [--link-padding] - Sets padding around the link, for example to give its focus outline room to breathe. Defaults to 0, flush with the text
68
+ * @cssprop [--link-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --link-padding is set
69
+ * @cssprop [--link-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --link-padding is set
44
70
  * @cssprop [--link-background] - Sets a persistent background color behind the link. Defaults to transparent
45
71
  * @cssprop [--link-background-focus] - Sets a background color shown while the link is keyboard-focused, falling back to --link-background when unset
46
72
  * @cssprop [--link-border-radius] - Sets the corner radius of the link's own background/focus outline box
47
73
  * @cssstate focus-visible - Set while the link is keyboard-focused (never after a mouse click), so it can be styled from outside the shadow root with eun-link:state(focus-visible). Turbopack's CSS parser (lightningcss) doesn't recognize :state() yet and rejects the whole stylesheet it's in ; ship that rule as a runtime <style>/<link> instead until it's supported
48
74
  * @element eun-link
49
75
  */
50
- let EunomiaLink = class EunomiaLink extends LitElement {
76
+ let EunomiaLink = class EunomiaLink extends LocalizableMixin(LitElement) {
51
77
  /**
52
78
  * The element's custom state set, typed locally since the bundled DOM
53
79
  * typings don't declare `ElementInternals.states` yet.
@@ -64,14 +90,17 @@ let EunomiaLink = class EunomiaLink extends LitElement {
64
90
  */
65
91
  this.target = "_self";
66
92
  /**
67
- * Text color theme, use `dark` on a dark background.
93
+ * Text color theme, use `dark` on a dark background. Only reflected once
94
+ * it differs from the default, so an SSR framework doesn't see an
95
+ * attribute it never rendered.
68
96
  * @default light
69
97
  */
70
98
  this.theme = "light";
71
99
  /**
72
100
  * Controls the visited-state color: `auto` follows the browser's real
73
101
  * navigation history for `href`, `off` always renders as unvisited, `on`
74
- * always renders as visited.
102
+ * always renders as visited. Only reflected once it differs from the
103
+ * default, like {@link theme}.
75
104
  * @default auto
76
105
  */
77
106
  this.visitedStyle = "auto";
@@ -82,6 +111,48 @@ let EunomiaLink = class EunomiaLink extends LitElement {
82
111
  * @default false
83
112
  */
84
113
  this.current = false;
114
+ /**
115
+ * The anchor {@link current} was last mirrored onto, so its
116
+ * `aria-current` can be cleared once it's swapped out or removed.
117
+ * @internal
118
+ */
119
+ _EunomiaLink_currentAnchor.set(this, void 0);
120
+ /**
121
+ * Announces the slotted anchor opening in a new tab.
122
+ * @internal
123
+ */
124
+ _EunomiaLink_newTab.set(this, new NewTabAnchorController(this, () => this.slottedAnchor, () => this.dictionary.link.opensInNewTab));
125
+ /**
126
+ * Re-renders when the default slot changes, so an anchor added or removed
127
+ * after the first render switches between the two modes.
128
+ * @private
129
+ */
130
+ this.handleDefaultSlotChange = () => {
131
+ this.requestUpdate();
132
+ };
133
+ /**
134
+ * The slotted anchor's counterpart of {@link handleFocus} : it lives in
135
+ * the light DOM, so its focus reaches the host as a plain `focusin`.
136
+ * @param event the host's focusin event.
137
+ * @private
138
+ */
139
+ this.handleSlottedFocusIn = (event) => {
140
+ const target = event.target;
141
+ if (target === this.slottedAnchor && target.matches(":focus-visible")) {
142
+ this.states?.add("focus-visible");
143
+ }
144
+ };
145
+ /**
146
+ * Clears the `focus-visible` custom state once the slotted anchor loses
147
+ * focus.
148
+ * @param event the host's focusout event.
149
+ * @private
150
+ */
151
+ this.handleSlottedFocusOut = (event) => {
152
+ if (event.target === this.slottedAnchor) {
153
+ this.states?.delete("focus-visible");
154
+ }
155
+ };
85
156
  /**
86
157
  * Re-renders when the `icon` slot's assigned content changes, so the
87
158
  * `icon` prop fallback correctly appears/disappears as content is
@@ -113,6 +184,56 @@ let EunomiaLink = class EunomiaLink extends LitElement {
113
184
  }
114
185
  super.attributeChangedCallback(name, oldValue, value);
115
186
  }
187
+ /**
188
+ * The native `<a>` slotted as a direct child while `href` is unset, which
189
+ * then acts as the link itself : it's in the light DOM, so it's part of
190
+ * the server-rendered HTML, and a framework's own link component (Next's
191
+ * `<Link>`, Angular's `routerLink`, ...) can be that anchor. Navigation,
192
+ * `target`/`rel` and the new-tab hint are the consumer's own in this mode.
193
+ * @internal
194
+ */
195
+ get slottedAnchor() {
196
+ return this.href ? null : this.querySelector(":scope > a");
197
+ }
198
+ connectedCallback() {
199
+ super.connectedCallback();
200
+ this.addEventListener("focusin", this.handleSlottedFocusIn);
201
+ this.addEventListener("focusout", this.handleSlottedFocusOut);
202
+ }
203
+ disconnectedCallback() {
204
+ this.removeEventListener("focusin", this.handleSlottedFocusIn);
205
+ this.removeEventListener("focusout", this.handleSlottedFocusOut);
206
+ super.disconnectedCallback();
207
+ }
208
+ updated(changed) {
209
+ super.updated(changed);
210
+ this.syncSlottedAnchor();
211
+ }
212
+ /**
213
+ * Mirrors {@link current} onto the slotted anchor as `aria-current`,
214
+ * since that anchor, not the wrapper around it, is what assistive
215
+ * technology announces.
216
+ * @private
217
+ */
218
+ syncSlottedAnchor() {
219
+ const anchor = this.slottedAnchor;
220
+ if (__classPrivateFieldGet(this, _EunomiaLink_currentAnchor, "f") && __classPrivateFieldGet(this, _EunomiaLink_currentAnchor, "f") !== anchor) {
221
+ __classPrivateFieldGet(this, _EunomiaLink_currentAnchor, "f").removeAttribute("aria-current");
222
+ __classPrivateFieldSet(this, _EunomiaLink_currentAnchor, undefined, "f");
223
+ }
224
+ if (!anchor) {
225
+ return;
226
+ }
227
+ warnIgnoredHostLinkAttributes(this);
228
+ if (this.current) {
229
+ anchor.setAttribute("aria-current", "page");
230
+ __classPrivateFieldSet(this, _EunomiaLink_currentAnchor, anchor, "f");
231
+ }
232
+ else if (__classPrivateFieldGet(this, _EunomiaLink_currentAnchor, "f") === anchor) {
233
+ anchor.removeAttribute("aria-current");
234
+ __classPrivateFieldSet(this, _EunomiaLink_currentAnchor, undefined, "f");
235
+ }
236
+ }
116
237
  /**
117
238
  * Mirrors the inner anchor's real `:focus-visible` state onto the host as
118
239
  * the `focus-visible` custom state, styled from outside with
@@ -147,6 +268,16 @@ let EunomiaLink = class EunomiaLink extends LitElement {
147
268
  handleClick(event) {
148
269
  handleLinkNavigation(this, event, this.href, this.target);
149
270
  }
271
+ /**
272
+ * The decorative icon at the end of a link opening in a new tab, the
273
+ * wording being announced separately.
274
+ * @private
275
+ */
276
+ renderExternalLinkIcon() {
277
+ return html `<span id="external-link-icon">
278
+ <eun-icon name="arrow_forward" shape="round" size="14"></eun-icon>
279
+ </span>`;
280
+ }
150
281
  /**
151
282
  * Renders the link template.
152
283
  * @returns The rendered HTML template
@@ -154,6 +285,27 @@ let EunomiaLink = class EunomiaLink extends LitElement {
154
285
  render() {
155
286
  const isBlank = this.target === "_blank";
156
287
  const hasIcon = !!this.icon || this.iconSlotEls?.length > 0;
288
+ const iconSlot = html `<slot
289
+ name="icon"
290
+ class=${classMap({ "has-icon": hasIcon })}
291
+ @slotchange=${this.handleIconSlotChange}
292
+ >
293
+ ${this.icon ? html `<eun-icon name=${this.icon}></eun-icon>` : nothing}
294
+ </slot>`;
295
+ if (this.slottedAnchor) {
296
+ return html `
297
+ <span
298
+ id="link"
299
+ part="link"
300
+ class=${classMap({ "has-icon": hasIcon, "slotted-link": true })}
301
+ >
302
+ ${iconSlot}
303
+ <slot @slotchange=${this.handleDefaultSlotChange}></slot>
304
+ ${__classPrivateFieldGet(this, _EunomiaLink_newTab, "f").isBlank ? this.renderExternalLinkIcon() : nothing}
305
+ </span>
306
+ `;
307
+ }
308
+ const newTabHint = `(${this.dictionary.link.opensInNewTab})`;
157
309
  return html `
158
310
  <a
159
311
  id="link"
@@ -164,29 +316,26 @@ let EunomiaLink = class EunomiaLink extends LitElement {
164
316
  aria-current=${ifDefined(this.current ? "page" : undefined)}
165
317
  rel=${ifDefined(isBlank ? "noopener noreferrer" : undefined)}
166
318
  aria-label=${ifDefined(isBlank && this.ariaLabel
167
- ? `${this.ariaLabel} (opens in a new tab)`
319
+ ? `${this.ariaLabel} ${newTabHint}`
168
320
  : (this.ariaLabel ?? undefined))}
169
321
  @click=${this.handleClick}
170
322
  @focus=${this.handleFocus}
171
323
  @blur=${this.handleBlur}
172
324
  >
173
- <slot
174
- name="icon"
175
- class=${classMap({ "has-icon": hasIcon })}
176
- @slotchange=${this.handleIconSlotChange}
177
- >
178
- ${this.icon
179
- ? html `<eun-icon name=${this.icon} size="18"></eun-icon>`
180
- : nothing}
181
- </slot>
182
- <slot></slot>
325
+ ${iconSlot}
326
+ <span id="label"
327
+ ><slot @slotchange=${this.handleDefaultSlotChange}></slot
328
+ ></span>
183
329
  ${isBlank && !this.ariaLabel
184
- ? html `<span class="sr-only"> (opens in a new tab)</span>`
330
+ ? html `<span class="sr-only"> ${newTabHint}</span>`
185
331
  : nothing}
332
+ ${isBlank ? this.renderExternalLinkIcon() : nothing}
186
333
  </a>
187
334
  `;
188
335
  }
189
336
  };
337
+ _EunomiaLink_currentAnchor = new WeakMap();
338
+ _EunomiaLink_newTab = new WeakMap();
190
339
  /**
191
340
  * Styles to import to the component.
192
341
  *
@@ -205,10 +354,21 @@ __decorate([
205
354
  property()
206
355
  ], EunomiaLink.prototype, "icon", void 0);
207
356
  __decorate([
208
- property({ reflect: true })
357
+ property({
358
+ reflect: true,
359
+ converter: {
360
+ toAttribute: (value) => (value === "light" ? null : value),
361
+ },
362
+ })
209
363
  ], EunomiaLink.prototype, "theme", void 0);
210
364
  __decorate([
211
- property({ reflect: true, attribute: "visited-style" })
365
+ property({
366
+ reflect: true,
367
+ attribute: "visited-style",
368
+ converter: {
369
+ toAttribute: (value) => (value === "auto" ? null : value),
370
+ },
371
+ })
212
372
  ], EunomiaLink.prototype, "visitedStyle", void 0);
213
373
  __decorate([
214
374
  property({ type: Boolean, reflect: true })
@@ -13,7 +13,11 @@ import { css } from "lit";
13
13
  * [--link-color-current] - Set a custom link color for the current page link (the `current` attribute). It stays this color on hover, focus and visited states
14
14
  * [--link-text-decoration] - Set a custom text-decoration for the link
15
15
  * [--link-icon-color] - Set a custom color for the leading icon, independent from the link text color
16
+ * [--link-icon-size] - Set a custom size for the leading icon, 18px by default. Also the font size of the icon slot, for an icon sized in em
17
+ * [--link-transition-duration] - Set a custom duration for the link transitions, --eun-duration-xl by default
16
18
  * [--link-padding] - Set custom padding around the link, for example to give its focus outline room to breathe. Defaults to 0, flush with the text
19
+ * [--link-padding-block] - Set a custom vertical padding, as one length applied to both sides. Ignored when --link-padding is set
20
+ * [--link-padding-inline] - Set a custom horizontal padding, as one length applied to both sides. Ignored when --link-padding is set
17
21
  * [--link-background] - Set a persistent background color behind the link. Defaults to transparent
18
22
  * [--link-background-focus] - Set a background color shown while the link is keyboard-focused, falling back to --link-background when unset
19
23
  * [--link-border-radius] - Set a custom corner radius for the link's own background/focus outline box
@@ -42,6 +46,7 @@ const base = css `
42
46
  var(--eun-color-primary-500, #3d6fff)
43
47
  );
44
48
  --_textDecoration: var(--link-text-decoration, underline);
49
+ --_duration: var(--link-transition-duration, var(--eun-duration-xl, 300ms));
45
50
  --_iconColor: var(--link-icon-color, var(--_color));
46
51
  --icon-color: var(--_iconColor);
47
52
  font-size: var(--link-font-size, unset);
@@ -50,9 +55,12 @@ const base = css `
50
55
  align-items: center;
51
56
  }
52
57
  :host([theme="dark"]) {
53
- --_color: var(--link-color, rgba(255, 255, 255, 0.7));
54
- --_colorHover: var(--link-color-hover, #fff);
55
- --_colorFocus: var(--link-color-focus, #fff);
58
+ --_color: var(
59
+ --link-color,
60
+ var(--eun-text-on-inverse-secondary, rgba(255, 255, 255, 0.7))
61
+ );
62
+ --_colorHover: var(--link-color-hover, var(--eun-text-on-inverse, #fff));
63
+ --_colorFocus: var(--link-color-focus, var(--eun-text-on-inverse, #fff));
56
64
  --_colorVisited: var(
57
65
  --link-color-visited,
58
66
  var(--eun-color-purple-300, #bea0ed)
@@ -65,24 +73,42 @@ const base = css `
65
73
  display: inline-flex;
66
74
  flex-shrink: 0;
67
75
  }
76
+ slot[name="icon"] {
77
+ --icon-size: var(--link-icon-size, 18px);
78
+ font-size: var(--link-icon-size, inherit);
79
+ }
80
+ #label {
81
+ border-radius: var(--link-border-radius, var(--eun-border-radius-m, 8px));
82
+ outline: 2px solid transparent;
83
+ transition: outline var(--_duration) var(--eun-easing-out, ease-out);
84
+ }
85
+ #external-link-icon {
86
+ display: inline-flex;
87
+ flex-shrink: 0;
88
+ margin-inline-start: calc(-1 * var(--eun-space-xs, 4px));
89
+ transform: rotate(-45deg);
90
+ }
68
91
  #link {
69
92
  display: inline-flex;
70
93
  align-items: center;
71
94
  gap: var(--eun-space-s, 8px);
72
- padding: var(--link-padding, 0);
95
+ padding: var(
96
+ --link-padding,
97
+ var(--link-padding-block, 0) var(--link-padding-inline, 0)
98
+ );
73
99
  background: var(--link-background, transparent);
74
100
  color: var(--_color);
75
101
  font: inherit;
76
102
  text-decoration: var(--_textDecoration);
77
- text-wrap: pretty;
103
+ text-wrap-style: pretty;
78
104
  border-radius: var(--link-border-radius, var(--eun-border-radius-m, 8px));
79
105
  cursor: pointer;
80
106
  outline: 2px solid transparent;
81
107
  transition:
82
- color 0.3s ease-out,
83
- background-color 0.3s ease-out,
84
- outline 0.3s ease-out,
85
- text-decoration-color 0.3s ease-out;
108
+ color var(--_duration) var(--eun-easing-out, ease-out),
109
+ background-color var(--_duration) var(--eun-easing-out, ease-out),
110
+ outline var(--_duration) var(--eun-easing-out, ease-out),
111
+ text-decoration-color var(--_duration) var(--eun-easing-out, ease-out);
86
112
  }
87
113
  #link:visited {
88
114
  color: var(--_colorVisited);
@@ -123,6 +149,18 @@ const base = css `
123
149
  outline-offset: 2px;
124
150
  --icon-color: var(--link-icon-color, var(--_colorHover));
125
151
  }
152
+ #link.has-icon:focus-visible {
153
+ background: var(--link-background, transparent);
154
+ outline-color: transparent;
155
+ }
156
+ #link.has-icon:focus-visible #label {
157
+ background: var(
158
+ --link-background-focus,
159
+ var(--link-background, transparent)
160
+ );
161
+ outline-color: var(--_colorFocus);
162
+ outline-offset: 2px;
163
+ }
126
164
 
127
165
  :host([current]) #link,
128
166
  :host([current]) #link:visited,
@@ -134,8 +172,106 @@ const base = css `
134
172
  --icon-color: var(--link-icon-color, var(--_colorCurrent));
135
173
  }
136
174
 
175
+ #link.slotted-link {
176
+ position: relative;
177
+ text-decoration: none;
178
+ cursor: auto;
179
+ }
180
+ ::slotted(a)::after {
181
+ content: "";
182
+ position: absolute;
183
+ inset: 0;
184
+ border-radius: inherit;
185
+ }
186
+ ::slotted(a) {
187
+ color: var(--_color);
188
+ font: inherit;
189
+ text-decoration: var(--_textDecoration);
190
+ text-wrap-style: pretty;
191
+ border-radius: var(--link-border-radius, var(--eun-border-radius-m, 8px));
192
+ transition:
193
+ color var(--_duration) var(--eun-easing-out, ease-out),
194
+ background-color var(--_duration) var(--eun-easing-out, ease-out),
195
+ text-decoration-color var(--_duration) var(--eun-easing-out, ease-out);
196
+ }
197
+ ::slotted(a:visited) {
198
+ color: var(--_colorVisited);
199
+ text-decoration-color: var(--_colorVisited);
200
+ }
201
+ ::slotted(a:visited:hover) {
202
+ color: var(--_colorVisitedHover);
203
+ text-decoration-color: var(--_colorVisitedHover);
204
+ }
205
+ :host([visited-style="off"]) ::slotted(a:visited) {
206
+ color: var(--_color);
207
+ text-decoration-color: currentColor;
208
+ }
209
+ :host([visited-style="off"]) ::slotted(a:visited:hover) {
210
+ color: var(--_colorHover);
211
+ text-decoration-color: currentColor;
212
+ }
213
+ :host([visited-style="on"]) ::slotted(a) {
214
+ color: var(--_colorVisited);
215
+ text-decoration-color: var(--_colorVisited);
216
+ }
217
+ :host([visited-style="on"]) ::slotted(a:hover) {
218
+ color: var(--_colorVisitedHover);
219
+ text-decoration-color: var(--_colorVisitedHover);
220
+ }
221
+ ::slotted(a:hover) {
222
+ color: var(--_colorHover);
223
+ }
224
+ #link.slotted-link:hover {
225
+ --icon-color: var(--link-icon-color, var(--_colorHover));
226
+ }
227
+ ::slotted(a:focus-visible) {
228
+ color: var(--_colorHover) !important;
229
+ text-decoration: none;
230
+ outline: none;
231
+ }
232
+ #link.has-icon ::slotted(a) {
233
+ outline: 2px solid transparent;
234
+ transition:
235
+ color var(--_duration) var(--eun-easing-out, ease-out),
236
+ background-color var(--_duration) var(--eun-easing-out, ease-out),
237
+ outline var(--_duration) var(--eun-easing-out, ease-out),
238
+ text-decoration-color var(--_duration) var(--eun-easing-out, ease-out);
239
+ }
240
+ #link.has-icon ::slotted(a:focus-visible) {
241
+ background: var(
242
+ --link-background-focus,
243
+ var(--link-background, transparent)
244
+ );
245
+ outline-color: var(--_colorFocus);
246
+ outline-offset: 2px;
247
+ }
248
+ :host(:state(focus-visible)) #link.slotted-link.has-icon {
249
+ --icon-color: var(--link-icon-color, var(--_colorHover));
250
+ }
251
+ :host(:state(focus-visible)) #link.slotted-link:not(.has-icon) {
252
+ background: var(
253
+ --link-background-focus,
254
+ var(--link-background, transparent)
255
+ );
256
+ outline-color: var(--_colorFocus);
257
+ outline-offset: 2px;
258
+ --icon-color: var(--link-icon-color, var(--_colorHover));
259
+ }
260
+ :host([current]) ::slotted(a),
261
+ :host([current]) ::slotted(a:visited),
262
+ :host([current]) ::slotted(a:hover),
263
+ :host([current]) ::slotted(a:visited:hover),
264
+ :host([current]) ::slotted(a:focus-visible) {
265
+ color: var(--_colorCurrent) !important;
266
+ text-decoration-color: var(--_colorCurrent);
267
+ }
268
+ :host([current]) #link.slotted-link {
269
+ --icon-color: var(--link-icon-color, var(--_colorCurrent));
270
+ }
271
+
137
272
  @media (prefers-reduced-motion: reduce) {
138
- #link {
273
+ #link,
274
+ ::slotted(a) {
139
275
  transition: none;
140
276
  }
141
277
  }
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Shared color palette of the button family (`eun-button`, `eun-fab`, and so
3
- * `eun-dropdown-button`, which renders an `eun-button`). A `variant` fills
3
+ * `eun-dropdown-button`, which renders an `eun-button`). A `color` fills
4
4
  * the same slots on the host, and each component's stylesheet then reads
5
5
  * them, per appearance and state, *behind* its public `--<component>-*`
6
- * custom properties, so those always win over any variant and appearance.
6
+ * custom properties, so those always win over any color and appearance.
7
7
  *
8
8
  * Slots :
9
9
  * - `--_solid`, `--_solid-hover`, `--_solid-active` : the strong color, at
@@ -20,7 +20,7 @@
20
20
  * `light` and `dark` are absolute colors : white and black, whatever the
21
21
  * appearance. They have no pale wash, so the tinted surface is as solid as
22
22
  * the strong one, and `flat` is a faint wash of the color itself rather than
23
- * the neutral surface every other variant shares. By default they follow the
23
+ * the neutral surface every other color shares. By default they follow the
24
24
  * grey scale, which flips with the active theme ; `fixed-color` pins them to
25
25
  * the light theme's white and black instead.
26
26
  */