@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
@@ -1,7 +1,7 @@
1
1
  import { LitElement, TemplateResult } from "lit";
2
2
  import { DropdownMenuContainer } from "../../../utils/dropdown-menu.utils.js";
3
3
  import { EunomiaIconName } from "../../content/icon/icon.type.js";
4
- import { ButtonSize, ButtonVariant, EunomiaButtonAppearance } from "../../../mixins/button.mixin.js";
4
+ import { ButtonSize, ButtonColor, EunomiaButtonAppearance } from "../../../mixins/button.mixin.js";
5
5
  import { EunomiaSeverity } from "../../../types/variant.type.js";
6
6
  /**
7
7
  * Tag name of the dropdown-button component.
@@ -25,7 +25,7 @@ export interface EunomiaDropdownOption {
25
25
  export type EunomiaDropdownPlacement = "top-start" | "top" | "top-end" | "right" | "bottom-end" | "bottom" | "bottom-start" | "left";
26
26
  /**
27
27
  * A button that opens a menu of actions on click. Its trigger is a regular
28
- * button, so every button variant, size, and appearance works the same way.
28
+ * button, so every button color, size, and appearance works the same way.
29
29
  *
30
30
  * Choosing an option doesn't persist a value on the component itself, since
31
31
  * this is a menu of actions rather than a form field. Each choice fires an
@@ -47,16 +47,16 @@ export type EunomiaDropdownPlacement = "top-start" | "top" | "top-end" | "right"
47
47
  * @slot start - An icon or other content shown at the start of the trigger. Takes priority over the default icon from icon or severity
48
48
  * @prop {string} label - The trigger button's label
49
49
  * @prop {import('../../content/icon/icon.type.js').EunomiaIconName} icon - An optional leading icon for the trigger button. Ignored once something is slotted into start, and overridden by the default icon from severity when both are set
50
- * @prop {'info' | 'success' | 'warning' | 'critical' | 'neutral'} severity - The severity of the action this trigger leads to. When set, it supplies a default leading icon unless icon is also set or something is slotted into start. It has no effect on color, which is still controlled by variant
50
+ * @prop {'info' | 'success' | 'warning' | 'critical' | 'neutral'} severity - The severity of the action this trigger leads to. When set, it supplies a default leading icon unless icon is also set or something is slotted into start. It has no effect on color, which is still controlled by color
51
51
  * @prop {Array<EunomiaDropdownOption>} [options=[]] - The menu options
52
52
  * @attr {string} [options] - The menu options, written as a JSON string for use directly in markup instead of the JavaScript property
53
53
  * @prop {string[]} [disabledKeys=[]] - Keys of options to disable in addition to any option already marked disabled
54
54
  * @attr {string} [disabled-keys] - The disabled option keys, written as a JSON string for use directly in markup instead of the JavaScript property
55
55
  * @prop {boolean} [disabled=false] - Whether the trigger button is disabled
56
56
  * @prop {'xs' | 's' | 'm' | 'l' | 'xl'} [size='m'] - The size of the trigger button
57
- * @prop {'primary' | 'secondary' | 'critical' | 'success' | 'warning'} variant - The color theme applied to the trigger button
58
- * @prop {boolean} [fixedColor=false] - Keeps a light or dark trigger button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other variants
59
- * @attr {boolean} [fixed-color=false] - Keeps a light or dark trigger button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other variants
57
+ * @prop {'primary' | 'secondary' | 'critical' | 'success' | 'warning'} color - The color applied to the trigger button
58
+ * @prop {boolean} [fixedColor=false] - Keeps a light or dark trigger button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other colors
59
+ * @attr {boolean} [fixed-color=false] - Keeps a light or dark trigger button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other colors
60
60
  * @prop {boolean} [rounded=false] - Whether the trigger button has fully rounded corners
61
61
  * @prop {'default' | 'fill' | 'outline' | 'flat' | 'raised' | 'ghost'} [appearance='default'] - The trigger button's surface style, using the same values as the button component. Defaults to a paler tint rather than a solid fill, since a menu trigger reads better as a lighter weight control than a standalone primary action
62
62
  * @prop {EunomiaDropdownPlacement} [placement='bottom-start'] - Where the menu opens relative to the trigger
@@ -100,7 +100,7 @@ export declare class EunomiaDropdownButton extends LitElement implements Dropdow
100
100
  * trigger `eun-button`. By default, once `severity` is set and `icon`
101
101
  * isn't (and nothing is slotted into `start`), the leading icon is set
102
102
  * according to it — same vocabulary as `eun-alert`/`eun-tag`. Has no
103
- * effect on color, which stays driven by `variant` : the two genuinely
103
+ * effect on color, which stays driven by `color` : the two genuinely
104
104
  * differ here, since a full severity range (`info`/`neutral` included)
105
105
  * doesn't have a matching action color.
106
106
  */
@@ -134,7 +134,7 @@ export declare class EunomiaDropdownButton extends LitElement implements Dropdow
134
134
  /**
135
135
  * Forwarded to the trigger `eun-button`.
136
136
  */
137
- variant?: ButtonVariant;
137
+ color?: ButtonColor;
138
138
  /**
139
139
  * Forwarded to the trigger `eun-button`.
140
140
  * @default false
@@ -162,8 +162,8 @@ export declare class EunomiaDropdownButton extends LitElement implements Dropdow
162
162
  /**
163
163
  * Whether the menu is currently open. Reflected as an attribute so a
164
164
  * consumer (or its own CSS, via `eun-dropdown-button[open]`) can tell —
165
- * `eun-table-item`'s row-end action slot relies on it to stay visible
166
- * while this menu is open, since the menu itself is a `popover="auto"`
165
+ * `eun-table`'s row end action cell relies on it to stay visible while
166
+ * this menu is open, since the menu itself is a `popover="auto"`
167
167
  * element positioned outside the row's own box, so hovering it doesn't
168
168
  * count as hovering the row anymore.
169
169
  * @default false
@@ -12,13 +12,14 @@ import { SelectEvent } from "../../../events/select.event.js";
12
12
  import { clampToViewport, dropdownMenuAnimationDuration, focusEntryAt, handleMenuKeydown, positionFlyout, } from "../../../utils/dropdown-menu.utils.js";
13
13
  import { dropdownButtonStyles } from "./dropdown-button.styles.js";
14
14
  import { resolveIcon } from "../../../utils/severity-icon.utils.js";
15
+ import { resolveEasing } from "../../../utils/motion.utils.js";
15
16
  /**
16
17
  * Tag name of the dropdown-button component.
17
18
  */
18
19
  export const EunomiaDropdownButtonTagName = "eun-dropdown-button";
19
20
  /**
20
21
  * A button that opens a menu of actions on click. Its trigger is a regular
21
- * button, so every button variant, size, and appearance works the same way.
22
+ * button, so every button color, size, and appearance works the same way.
22
23
  *
23
24
  * Choosing an option doesn't persist a value on the component itself, since
24
25
  * this is a menu of actions rather than a form field. Each choice fires an
@@ -40,16 +41,16 @@ export const EunomiaDropdownButtonTagName = "eun-dropdown-button";
40
41
  * @slot start - An icon or other content shown at the start of the trigger. Takes priority over the default icon from icon or severity
41
42
  * @prop {string} label - The trigger button's label
42
43
  * @prop {import('../../content/icon/icon.type.js').EunomiaIconName} icon - An optional leading icon for the trigger button. Ignored once something is slotted into start, and overridden by the default icon from severity when both are set
43
- * @prop {'info' | 'success' | 'warning' | 'critical' | 'neutral'} severity - The severity of the action this trigger leads to. When set, it supplies a default leading icon unless icon is also set or something is slotted into start. It has no effect on color, which is still controlled by variant
44
+ * @prop {'info' | 'success' | 'warning' | 'critical' | 'neutral'} severity - The severity of the action this trigger leads to. When set, it supplies a default leading icon unless icon is also set or something is slotted into start. It has no effect on color, which is still controlled by color
44
45
  * @prop {Array<EunomiaDropdownOption>} [options=[]] - The menu options
45
46
  * @attr {string} [options] - The menu options, written as a JSON string for use directly in markup instead of the JavaScript property
46
47
  * @prop {string[]} [disabledKeys=[]] - Keys of options to disable in addition to any option already marked disabled
47
48
  * @attr {string} [disabled-keys] - The disabled option keys, written as a JSON string for use directly in markup instead of the JavaScript property
48
49
  * @prop {boolean} [disabled=false] - Whether the trigger button is disabled
49
50
  * @prop {'xs' | 's' | 'm' | 'l' | 'xl'} [size='m'] - The size of the trigger button
50
- * @prop {'primary' | 'secondary' | 'critical' | 'success' | 'warning'} variant - The color theme applied to the trigger button
51
- * @prop {boolean} [fixedColor=false] - Keeps a light or dark trigger button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other variants
52
- * @attr {boolean} [fixed-color=false] - Keeps a light or dark trigger button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other variants
51
+ * @prop {'primary' | 'secondary' | 'critical' | 'success' | 'warning'} color - The color applied to the trigger button
52
+ * @prop {boolean} [fixedColor=false] - Keeps a light or dark trigger button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other colors
53
+ * @attr {boolean} [fixed-color=false] - Keeps a light or dark trigger button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other colors
53
54
  * @prop {boolean} [rounded=false] - Whether the trigger button has fully rounded corners
54
55
  * @prop {'default' | 'fill' | 'outline' | 'flat' | 'raised' | 'ghost'} [appearance='default'] - The trigger button's surface style, using the same values as the button component. Defaults to a paler tint rather than a solid fill, since a menu trigger reads better as a lighter weight control than a standalone primary action
55
56
  * @prop {EunomiaDropdownPlacement} [placement='bottom-start'] - Where the menu opens relative to the trigger
@@ -125,8 +126,8 @@ let EunomiaDropdownButton = class EunomiaDropdownButton extends LitElement {
125
126
  /**
126
127
  * Whether the menu is currently open. Reflected as an attribute so a
127
128
  * consumer (or its own CSS, via `eun-dropdown-button[open]`) can tell —
128
- * `eun-table-item`'s row-end action slot relies on it to stay visible
129
- * while this menu is open, since the menu itself is a `popover="auto"`
129
+ * `eun-table`'s row end action cell relies on it to stay visible while
130
+ * this menu is open, since the menu itself is a `popover="auto"`
130
131
  * element positioned outside the row's own box, so hovering it doesn't
131
132
  * count as hovering the row anymore.
132
133
  * @default false
@@ -168,7 +169,7 @@ let EunomiaDropdownButton = class EunomiaDropdownButton extends LitElement {
168
169
  if (toggleEvent.newState === "open") {
169
170
  this.open = true;
170
171
  this.positionMenu();
171
- this.updateComplete.then(() => focusEntryAt(this.menuEntries, 0));
172
+ void this.updateComplete.then(() => focusEntryAt(this.menuEntries, 0));
172
173
  window.addEventListener("resize", this.handleReposition);
173
174
  window.addEventListener("scroll", this.handleReposition, true);
174
175
  return;
@@ -237,7 +238,7 @@ let EunomiaDropdownButton = class EunomiaDropdownButton extends LitElement {
237
238
  if (this.disabled) {
238
239
  return;
239
240
  }
240
- this.updateComplete.then(() => {
241
+ void this.updateComplete.then(() => {
241
242
  const menu = this.menuEl;
242
243
  if (!menu) {
243
244
  return;
@@ -278,7 +279,7 @@ let EunomiaDropdownButton = class EunomiaDropdownButton extends LitElement {
278
279
  transform: `translate(${offsetX}, ${offsetY}) scale(0.96)`,
279
280
  },
280
281
  { opacity: 1, transform: "translate(0, 0) scale(1)" },
281
- ], { duration, easing: "ease", fill: "forwards" });
282
+ ], { duration, easing: resolveEasing(menu), fill: "forwards" });
282
283
  }
283
284
  /**
284
285
  * Closes the menu, if open. All state cleanup happens in
@@ -324,7 +325,7 @@ let EunomiaDropdownButton = class EunomiaDropdownButton extends LitElement {
324
325
  opacity: 0,
325
326
  transform: `translate(${offsetX}, ${offsetY}) scale(0.96)`,
326
327
  },
327
- ], { duration, easing: "ease", fill: "forwards" });
328
+ ], { duration, easing: resolveEasing(menu), fill: "forwards" });
328
329
  this.menuAnimation = animation;
329
330
  animation.finished
330
331
  .then(() => {
@@ -673,7 +674,7 @@ let EunomiaDropdownButton = class EunomiaDropdownButton extends LitElement {
673
674
  this.submenuAnimation = submenu.animate([
674
675
  { opacity: 0, transform: `translate(${offsetX}, 0) scale(0.96)` },
675
676
  { opacity: 1, transform: "translate(0, 0) scale(1)" },
676
- ], { duration, easing: "ease", fill: "forwards" });
677
+ ], { duration, easing: resolveEasing(submenu), fill: "forwards" });
677
678
  }
678
679
  /**
679
680
  * Plays an `options`-sourced submenu's fade/scale/slide-out, then
@@ -693,7 +694,7 @@ let EunomiaDropdownButton = class EunomiaDropdownButton extends LitElement {
693
694
  const animation = submenu.animate([
694
695
  { opacity: 1, transform: "translate(0, 0) scale(1)" },
695
696
  { opacity: 0, transform: `translate(${offsetX}, 0) scale(0.96)` },
696
- ], { duration, easing: "ease", fill: "forwards" });
697
+ ], { duration, easing: resolveEasing(submenu), fill: "forwards" });
697
698
  this.submenuAnimation = animation;
698
699
  animation.finished
699
700
  .then(() => {
@@ -756,7 +757,7 @@ let EunomiaDropdownButton = class EunomiaDropdownButton extends LitElement {
756
757
  if (li) {
757
758
  this.positionSubmenu(li, submenu);
758
759
  }
759
- this.updateComplete.then(() => {
760
+ void this.updateComplete.then(() => {
760
761
  const subEntries = Array.from(submenu.querySelectorAll(":scope > li"));
761
762
  focusEntryAt(subEntries, 0);
762
763
  });
@@ -773,7 +774,7 @@ let EunomiaDropdownButton = class EunomiaDropdownButton extends LitElement {
773
774
  */
774
775
  closeSubmenuAndRefocus(option) {
775
776
  this.closeSubmenu();
776
- this.updateComplete.then(() => {
777
+ void this.updateComplete.then(() => {
777
778
  const li = this.menuEl?.querySelector(`li[data-key="${CSS.escape(option.key)}"]`);
778
779
  li?.focus();
779
780
  });
@@ -1071,7 +1072,7 @@ let EunomiaDropdownButton = class EunomiaDropdownButton extends LitElement {
1071
1072
  id="trigger"
1072
1073
  type="button"
1073
1074
  size=${this.size}
1074
- variant=${ifDefined(this.variant)}
1075
+ color=${ifDefined(this.color)}
1075
1076
  ?fixed-color=${this.fixedColor}
1076
1077
  appearance=${this.appearance}
1077
1078
  ?rounded=${this.rounded}
@@ -1128,7 +1129,7 @@ __decorate([
1128
1129
  ], EunomiaDropdownButton.prototype, "size", void 0);
1129
1130
  __decorate([
1130
1131
  property({ reflect: true })
1131
- ], EunomiaDropdownButton.prototype, "variant", void 0);
1132
+ ], EunomiaDropdownButton.prototype, "color", void 0);
1132
1133
  __decorate([
1133
1134
  property({ type: Boolean, reflect: true, attribute: "fixed-color" })
1134
1135
  ], EunomiaDropdownButton.prototype, "fixedColor", void 0);
@@ -83,8 +83,9 @@ const base = css `
83
83
  outline: 2px solid transparent;
84
84
  outline-offset: -2px;
85
85
  transition:
86
- background 0.3s ease-out,
87
- outline-color 0.3s ease-out;
86
+ background var(--eun-duration-xl, 300ms) var(--eun-easing-out, ease-out),
87
+ outline-color var(--eun-duration-xl, 300ms)
88
+ var(--eun-easing-out, ease-out);
88
89
  }
89
90
  #menu li:hover:not([aria-disabled="true"]),
90
91
  #menu li:focus-visible:not([aria-disabled="true"]),
@@ -8,6 +8,7 @@ import { customElement, property, query, queryAssignedElements, state, } from "l
8
8
  import { html, LitElement, nothing } from "lit";
9
9
  import { DROPDOWN_MENU_CONTAINER_SELECTOR, dropdownMenuAnimationDuration, focusEntryAt, handleMenuKeydown, positionFlyout, } from "../../../utils/dropdown-menu.utils.js";
10
10
  import { dropdownItemStyles } from "./dropdown-item.styles.js";
11
+ import { resolveEasing } from "../../../utils/motion.utils.js";
11
12
  /**
12
13
  * Tag name of the dropdown-item component.
13
14
  */
@@ -91,14 +92,12 @@ let EunomiaDropdownItem = class EunomiaDropdownItem extends LitElement {
91
92
  this.toggleAttribute("data-submenu-open", true);
92
93
  this.container?.notifySubmenuOpened(this.key);
93
94
  this.positionOwnSubmenu();
94
- this.updateComplete.then(() => focusEntryAt(this.submenuItems, 0));
95
+ void this.updateComplete.then(() => focusEntryAt(this.submenuItems, 0));
95
96
  return;
96
97
  }
97
98
  this.setAttribute("aria-expanded", "false");
98
99
  this.toggleAttribute("data-submenu-open", false);
99
100
  this.container?.notifySubmenuClosed(this.key);
100
- // Cascade the close to this item's own open child, if any — mirrors
101
- // `eun-dropdown-button`'s root-menu-close handling of a submenu.
102
101
  this.closeOtherSubmenus(null);
103
102
  };
104
103
  /**
@@ -139,7 +138,7 @@ let EunomiaDropdownItem = class EunomiaDropdownItem extends LitElement {
139
138
  onClose: parentItem
140
139
  ? () => {
141
140
  parentItem.closeSubmenu();
142
- this.updateComplete.then(() => parentItem.focus());
141
+ void this.updateComplete.then(() => parentItem.focus());
143
142
  }
144
143
  : undefined,
145
144
  onTabAway: () => this.tabAway(),
@@ -293,7 +292,7 @@ let EunomiaDropdownItem = class EunomiaDropdownItem extends LitElement {
293
292
  this.submenuAnimation = submenu.animate([
294
293
  { opacity: 0, transform: `translate(${offsetX}, 0) scale(0.96)` },
295
294
  { opacity: 1, transform: "translate(0, 0) scale(1)" },
296
- ], { duration, easing: "ease", fill: "forwards" });
295
+ ], { duration, easing: resolveEasing(submenu), fill: "forwards" });
297
296
  }
298
297
  /**
299
298
  * Closes this item's own submenu, if open. Part of the
@@ -332,7 +331,7 @@ let EunomiaDropdownItem = class EunomiaDropdownItem extends LitElement {
332
331
  const animation = submenu.animate([
333
332
  { opacity: 1, transform: "translate(0, 0) scale(1)" },
334
333
  { opacity: 0, transform: `translate(${offsetX}, 0) scale(0.96)` },
335
- ], { duration, easing: "ease", fill: "forwards" });
334
+ ], { duration, easing: resolveEasing(submenu), fill: "forwards" });
336
335
  this.submenuAnimation = animation;
337
336
  animation.finished
338
337
  .then(() => {
@@ -33,8 +33,9 @@ const base = css `
33
33
  outline: 2px solid transparent;
34
34
  outline-offset: -2px;
35
35
  transition:
36
- background 0.3s ease-out,
37
- outline-color 0.3s ease-out;
36
+ background var(--eun-duration-xl, 300ms) var(--eun-easing-out, ease-out),
37
+ outline-color var(--eun-duration-xl, 300ms)
38
+ var(--eun-easing-out, ease-out);
38
39
  }
39
40
  :host(:hover:not([aria-disabled="true"])) .content,
40
41
  :host(:focus-visible:not([aria-disabled="true"])) .content,
@@ -8,10 +8,10 @@ export declare const EunomiaFabTagName = "eun-fab";
8
8
  * The corner a positioned FAB is fixed to.
9
9
  */
10
10
  export type EunomiaFabPosition = "bottom-right" | "bottom-left" | "top-right" | "top-left";
11
- declare const EunomiaFab_base: import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/button.mixin.js").ButtonMixinInterface> & import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/command.mixin.js").CommandMixinInterface> & import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/disabled.mixin.js").DisabledMixinInterface> & typeof LitElement;
11
+ declare const EunomiaFab_base: import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/button.mixin.js").ButtonMixinInterface> & import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/command.mixin.js").CommandMixinInterface> & import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/disabled.mixin.js").DisabledMixinInterface> & import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/localizable.mixin.js").LocalizableMixinInterface> & typeof LitElement;
12
12
  /**
13
13
  * A circular icon button for a screen's single primary action. It shares
14
- * its variant, size, href, loading, and keyboard behavior with the regular
14
+ * its color, size, href, loading, and keyboard behavior with the regular
15
15
  * button.
16
16
  *
17
17
  * When label is set, the button becomes extendable. It stays a plain circle
@@ -25,13 +25,14 @@ declare const EunomiaFab_base: import("../../../utils/constructor.type.js").Cons
25
25
  * @prop {EunomiaIconName} icon - The icon displayed at all times
26
26
  * @prop {string} label - An optional text label, revealed on hover or focus by the slide animation. Omit it for an icon only button
27
27
  * @prop {'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'} position - Fixes the button to a corner of the viewport. Left unset, the button follows the normal document flow
28
- * @prop {'primary' | 'secondary' | 'critical' | 'success' | 'warning'} [variant='primary'] - The color theme applied to the button
29
- * @prop {boolean} [fixedColor=false] - Keeps a light or dark button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other variants
30
- * @attr {boolean} [fixed-color=false] - Keeps a light or dark button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other variants
28
+ * @prop {'primary' | 'secondary' | 'critical' | 'success' | 'warning'} [color='primary'] - The color applied to the button
29
+ * @prop {boolean} [fixedColor=false] - Keeps a light or dark button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other colors
30
+ * @attr {boolean} [fixed-color=false] - Keeps a light or dark button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other colors
31
31
  * @prop {'xs' | 's' | 'm' | 'l' | 'xl'} [size='m'] - The size of the button
32
32
  * @prop {boolean} [disabled=false] - Whether the button is disabled. For a link button, this removes the href instead, since links have no native disabled state
33
33
  * @prop {string} href - The URL the button navigates to. When set, the button renders as a link instead of a button
34
34
  * @prop {'_blank' | '_self' | '_parent' | '_top'} target - Where to open the linked URL. Only used when href is set. Opening in a new tab automatically announces it to assistive technology, and adds an external link icon when label is also set
35
+ * @prop {string} [locale] - The locale used to resolve the "opens in a new tab" announcement. Defaults to the one set with setDefaultLocale, English otherwise
35
36
  * @prop {string} download - The filename used when the linked URL is downloaded instead of navigated to. Only used when href is set
36
37
  * @prop {boolean} [loading=false] - Whether the button shows a loading indicator. Like disabled, it blocks interaction, but keeps the icon and label in place so the button doesn't change size
37
38
  * @prop {string} [loadingLabel='Loading…'] - The accessible label announced while the button is loading
@@ -40,7 +41,7 @@ declare const EunomiaFab_base: import("../../../utils/constructor.type.js").Cons
40
41
  * @attr {string} aria-label - The accessible label for the button. Required when label isn't set, since an icon alone has no accessible name, and recommended even when it is if the label text alone doesn't describe the action
41
42
  * @fires click - Fired when the button is activated by mouse, Enter, or Space
42
43
  * @fires {NavigationEvent} eunnavigate - Fired before following href, so a client-side router can intercept the navigation. Not fired for downloads, and cancelable
43
- * @cssprop [--fab-background] - Sets the background color, for every variant
44
+ * @cssprop [--fab-background] - Sets the background color, for every color
44
45
  * @cssprop [--fab-background-hover] - Sets the background color on hover
45
46
  * @cssprop [--fab-text] - Sets the color of the text and icon
46
47
  * @cssprop [--fab-focus-outline] - Sets the color of the focus outline
@@ -10,6 +10,7 @@ import { ifDefined } from "lit/directives/if-defined.js";
10
10
  import { ButtonMixin } from "../../../mixins/button.mixin.js";
11
11
  import { CommandMixin } from "../../../mixins/command.mixin.js";
12
12
  import { DisabledMixin } from "../../../mixins/disabled.mixin.js";
13
+ import { LocalizableMixin } from "../../../mixins/localizable.mixin.js";
13
14
  import { handleLinkNavigation } from "../../../utils/navigation.utils.js";
14
15
  import { fabStyles } from "./fab.styles.js";
15
16
  /**
@@ -18,7 +19,7 @@ import { fabStyles } from "./fab.styles.js";
18
19
  export const EunomiaFabTagName = "eun-fab";
19
20
  /**
20
21
  * A circular icon button for a screen's single primary action. It shares
21
- * its variant, size, href, loading, and keyboard behavior with the regular
22
+ * its color, size, href, loading, and keyboard behavior with the regular
22
23
  * button.
23
24
  *
24
25
  * When label is set, the button becomes extendable. It stays a plain circle
@@ -32,13 +33,14 @@ export const EunomiaFabTagName = "eun-fab";
32
33
  * @prop {EunomiaIconName} icon - The icon displayed at all times
33
34
  * @prop {string} label - An optional text label, revealed on hover or focus by the slide animation. Omit it for an icon only button
34
35
  * @prop {'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'} position - Fixes the button to a corner of the viewport. Left unset, the button follows the normal document flow
35
- * @prop {'primary' | 'secondary' | 'critical' | 'success' | 'warning'} [variant='primary'] - The color theme applied to the button
36
- * @prop {boolean} [fixedColor=false] - Keeps a light or dark button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other variants
37
- * @attr {boolean} [fixed-color=false] - Keeps a light or dark button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other variants
36
+ * @prop {'primary' | 'secondary' | 'critical' | 'success' | 'warning'} [color='primary'] - The color applied to the button
37
+ * @prop {boolean} [fixedColor=false] - Keeps a light or dark button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other colors
38
+ * @attr {boolean} [fixed-color=false] - Keeps a light or dark button white or black in every theme. Without it, they follow the grey scale, which flips with the active theme. Has no effect on the other colors
38
39
  * @prop {'xs' | 's' | 'm' | 'l' | 'xl'} [size='m'] - The size of the button
39
40
  * @prop {boolean} [disabled=false] - Whether the button is disabled. For a link button, this removes the href instead, since links have no native disabled state
40
41
  * @prop {string} href - The URL the button navigates to. When set, the button renders as a link instead of a button
41
42
  * @prop {'_blank' | '_self' | '_parent' | '_top'} target - Where to open the linked URL. Only used when href is set. Opening in a new tab automatically announces it to assistive technology, and adds an external link icon when label is also set
43
+ * @prop {string} [locale] - The locale used to resolve the "opens in a new tab" announcement. Defaults to the one set with setDefaultLocale, English otherwise
42
44
  * @prop {string} download - The filename used when the linked URL is downloaded instead of navigated to. Only used when href is set
43
45
  * @prop {boolean} [loading=false] - Whether the button shows a loading indicator. Like disabled, it blocks interaction, but keeps the icon and label in place so the button doesn't change size
44
46
  * @prop {string} [loadingLabel='Loading…'] - The accessible label announced while the button is loading
@@ -47,7 +49,7 @@ export const EunomiaFabTagName = "eun-fab";
47
49
  * @attr {string} aria-label - The accessible label for the button. Required when label isn't set, since an icon alone has no accessible name, and recommended even when it is if the label text alone doesn't describe the action
48
50
  * @fires click - Fired when the button is activated by mouse, Enter, or Space
49
51
  * @fires {NavigationEvent} eunnavigate - Fired before following href, so a client-side router can intercept the navigation. Not fired for downloads, and cancelable
50
- * @cssprop [--fab-background] - Sets the background color, for every variant
52
+ * @cssprop [--fab-background] - Sets the background color, for every color
51
53
  * @cssprop [--fab-background-hover] - Sets the background color on hover
52
54
  * @cssprop [--fab-text] - Sets the color of the text and icon
53
55
  * @cssprop [--fab-focus-outline] - Sets the color of the focus outline
@@ -56,7 +58,7 @@ export const EunomiaFabTagName = "eun-fab";
56
58
  * @cssprop [--fab-offset] - Sets the distance from the viewport edge for a positioned button
57
59
  * @element eun-fab
58
60
  */
59
- let EunomiaFab = class EunomiaFab extends ButtonMixin(CommandMixin(DisabledMixin(LitElement))) {
61
+ let EunomiaFab = class EunomiaFab extends ButtonMixin(CommandMixin(DisabledMixin(LocalizableMixin(LitElement)))) {
60
62
  constructor() {
61
63
  super(...arguments);
62
64
  /**
@@ -132,7 +134,8 @@ let EunomiaFab = class EunomiaFab extends ButtonMixin(CommandMixin(DisabledMixin
132
134
  if (!this.isBlank || this.ariaLabel) {
133
135
  return nothing;
134
136
  }
135
- return html `<span class="sr-only"> (opens in a new tab)</span>`;
137
+ const hint = this.dictionary.link.opensInNewTab;
138
+ return html `<span class="sr-only"> (${hint})</span>`;
136
139
  }
137
140
  /**
138
141
  * Renders `label`, with an appended external-link icon (mirroring
@@ -198,7 +201,7 @@ let EunomiaFab = class EunomiaFab extends ButtonMixin(CommandMixin(DisabledMixin
198
201
  rel=${ifDefined(this.isBlank ? "noopener noreferrer" : undefined)}
199
202
  download=${ifDefined(this.download)}
200
203
  aria-label=${ifDefined(this.isBlank && this.ariaLabel
201
- ? `${this.ariaLabel} (opens in a new tab)`
204
+ ? `${this.ariaLabel} (${this.dictionary.link.opensInNewTab})`
202
205
  : (this.ariaLabel ?? undefined))}
203
206
  aria-disabled=${ifDefined(this.disabled ? "true" : undefined)}
204
207
  aria-busy=${ifDefined(this.loading ? "true" : undefined)}
@@ -3,15 +3,15 @@ import { buttonPaletteStyles } from "../shared-styles/button-palette.styles.js";
3
3
  /**
4
4
  * Base style for the floating action button.
5
5
  *
6
- * The variant palette is shared with `eun-button` (see
6
+ * The color palette is shared with `eun-button` (see
7
7
  * {@link buttonPaletteStyles}) and read *behind* the `--fab-*` custom
8
- * properties, so those win over every variant. A fab only has a solid look,
8
+ * properties, so those win over every color. A fab only has a solid look,
9
9
  * so it only reads the solid slots.
10
10
  *
11
11
  * Custom css variables:
12
- * [--fab-background] - Set a custom background color, for every variant
12
+ * [--fab-background] - Set a custom background color, for every color
13
13
  * [--fab-background-hover] - Set a custom background color for hover state. Derived from --fab-background when only that one is set
14
- * [--fab-text] - Set a custom text/icon color, for every variant
14
+ * [--fab-text] - Set a custom text/icon color, for every color
15
15
  * [--fab-focus-outline] - Set a custom color to the focus outline
16
16
  * [--fab-transition] - Set a custom transition time, shared by the slide-open animation and the hover/focus color changes (mirrors `eun-button`'s own `--button-transition`)
17
17
  * [--fab-z-index] - Set a custom z-index for a positioned FAB
@@ -21,7 +21,7 @@ const base = css `
21
21
  :host {
22
22
  --_focusIndicator: var(--fab-focus-outline, var(--_solid));
23
23
  --_hoverFromCustom: color-mix(in srgb, var(--fab-background) 88%, black);
24
- --_transition: var(--fab-transition, 0.3s);
24
+ --_transition: var(--fab-transition, var(--eun-duration-xl, 300ms));
25
25
  --_gap: var(--eun-space-xs, 4px);
26
26
  --_circleSize: 56px;
27
27
  --icon-size: 24px;
@@ -32,9 +32,9 @@ const base = css `
32
32
  z-index: 0;
33
33
  border-radius: var(--eun-border-radius-xl);
34
34
  transition:
35
- background 0.3s ease-out,
36
- box-shadow 0.3s ease-out,
37
- outline 0.3s ease-out;
35
+ outline var(--eun-duration-xl, 300ms) var(--eun-easing-out, ease-out),
36
+ outline-offset var(--eun-duration-xl, 300ms)
37
+ var(--eun-easing-out, ease-out);
38
38
  }
39
39
  :host(:focus-visible) {
40
40
  outline-offset: 2px;
@@ -96,9 +96,10 @@ const base = css `
96
96
  outline: 2px solid transparent;
97
97
  box-shadow: var(--eun-shadow-m, 0 10px 15px -3px rgba(0, 0, 0, 0.1));
98
98
  transition:
99
- background-color 0.15s ease,
100
- box-shadow 0.15s ease,
101
- outline 0.2s ease-out;
99
+ background-color var(--eun-duration-s, 150ms)
100
+ var(--eun-easing-default, ease),
101
+ box-shadow var(--eun-duration-s, 150ms) var(--eun-easing-default, ease),
102
+ outline var(--eun-duration-m, 200ms) var(--eun-easing-out, ease-out);
102
103
  }
103
104
  #fab slot[name="icon"] {
104
105
  display: inline-flex;
@@ -157,10 +158,10 @@ const slide = css `
157
158
  justify-content: start;
158
159
  outline: 2px solid transparent;
159
160
  transition:
160
- background 0.3s ease-out,
161
- box-shadow 0.3s ease-out,
162
- outline 0.3s ease-out,
163
- grid-template-columns ease var(--_transition);
161
+ background var(--eun-duration-xl, 300ms) var(--eun-easing-out, ease-out),
162
+ box-shadow var(--eun-duration-xl, 300ms) var(--eun-easing-out, ease-out),
163
+ outline var(--eun-duration-xl, 300ms) var(--eun-easing-out, ease-out),
164
+ grid-template-columns var(--eun-easing-default, ease) var(--_transition);
164
165
  }
165
166
  :host([slide]:not([loading])) #fab slot[name="icon"] {
166
167
  grid-column: 1;
@@ -174,8 +175,8 @@ const slide = css `
174
175
  margin-inline-start: 0;
175
176
  opacity: 0;
176
177
  transition:
177
- margin-inline-start ease var(--_transition),
178
- opacity ease var(--_transition);
178
+ margin-inline-start var(--eun-easing-default, ease) var(--_transition),
179
+ opacity var(--eun-easing-default, ease) var(--_transition);
179
180
  }
180
181
  :host([slide]:not([loading]):hover) #fab,
181
182
  :host([slide]:not([loading]):focus-visible) #fab,
@@ -1,9 +1,10 @@
1
- import { LitElement, TemplateResult } from "lit";
1
+ import { LitElement, PropertyValues, TemplateResult } from "lit";
2
2
  import { EunomiaIconName } from "../../content/icon/icon.type.js";
3
3
  /**
4
4
  * Tag name of the link component.
5
5
  */
6
6
  export declare const EunomiaLinkTagName = "eun-link";
7
+ declare const EunomiaLink_base: import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/localizable.mixin.js").LocalizableMixinInterface> & typeof LitElement;
7
8
  /**
8
9
  * A basic link with an optional decorative leading icon.
9
10
  *
@@ -11,15 +12,23 @@ export declare const EunomiaLinkTagName = "eun-link";
11
12
  * prevent the new page from controlling the original one, without affecting
12
13
  * same-tab navigation.
13
14
  *
14
- * @slot [default] - The link content
15
- * @slot [icon] - Replaces the leading icon entirely with any content, not just an icon element. Falls back to icon when empty
15
+ * Without href, a native anchor placed as a direct child becomes the link
16
+ * instead, such as a framework's own link component. The anchor then exists
17
+ * in the server-rendered HTML, so crawlers that don't run JavaScript still
18
+ * find it, and it keeps the link styles and the current state. When that
19
+ * anchor opens in a new tab, the link shows the same end icon and announces
20
+ * it the same way, through the anchor's aria-description.
21
+ *
22
+ * @slot [default] - The link content, or a native anchor carrying the href itself when href is unset
23
+ * @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
16
24
  * @prop {string} href - The destination URL
17
- * @prop {'_blank' | '_self' | '_parent' | '_top'} [target='_self'] - Where to open the linked URL. Opening in a new tab automatically announces it to assistive technology
25
+ * @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
18
26
  * @prop {import('../../content/icon/icon.type.js').EunomiaIconName} icon - An optional decorative icon displayed to the left of the link
19
- * @prop {'light' | 'dark'} [theme='light'] - The text color theme. Use dark on a dark background
27
+ * @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
20
28
  * @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
21
29
  * @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
22
- * @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
30
+ * @prop {string} [locale] - The locale used to resolve the "opens in a new tab" announcement. Defaults to the one set with setDefaultLocale, English otherwise
31
+ * @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
23
32
  * @fires {NavigationEvent} eunnavigate - Fired before following the link, so a client-side router can intercept the navigation. Cancelable
24
33
  * @cssprop [--link-color] - Sets the color of the link
25
34
  * @cssprop [--link-color-hover] - Sets the color of the link on hover
@@ -30,14 +39,19 @@ export declare const EunomiaLinkTagName = "eun-link";
30
39
  * @cssprop [--link-line-height] - Sets the line-height of the link. Inherits the surrounding text's line-height when unset
31
40
  * @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
32
41
  * @cssprop [--link-icon-color] - Sets the color of the leading icon, independently of the link text color
42
+ * @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
43
+ * @cssprop [--link-transition-duration] - Sets the duration of the color, background and focus transitions. Defaults to --eun-duration-xl
33
44
  * @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
45
+ * @cssprop [--link-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --link-padding is set
46
+ * @cssprop [--link-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --link-padding is set
34
47
  * @cssprop [--link-background] - Sets a persistent background color behind the link. Defaults to transparent
35
48
  * @cssprop [--link-background-focus] - Sets a background color shown while the link is keyboard-focused, falling back to --link-background when unset
36
49
  * @cssprop [--link-border-radius] - Sets the corner radius of the link's own background/focus outline box
37
50
  * @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
38
51
  * @element eun-link
39
52
  */
40
- export declare class EunomiaLink extends LitElement {
53
+ export declare class EunomiaLink extends EunomiaLink_base {
54
+ #private;
41
55
  /**
42
56
  * Styles to import to the component.
43
57
  *
@@ -60,14 +74,17 @@ export declare class EunomiaLink extends LitElement {
60
74
  */
61
75
  icon?: EunomiaIconName;
62
76
  /**
63
- * Text color theme, use `dark` on a dark background.
77
+ * Text color theme, use `dark` on a dark background. Only reflected once
78
+ * it differs from the default, so an SSR framework doesn't see an
79
+ * attribute it never rendered.
64
80
  * @default light
65
81
  */
66
82
  theme: "light" | "dark";
67
83
  /**
68
84
  * Controls the visited-state color: `auto` follows the browser's real
69
85
  * navigation history for `href`, `off` always renders as unvisited, `on`
70
- * always renders as visited.
86
+ * always renders as visited. Only reflected once it differs from the
87
+ * default, like {@link theme}.
71
88
  * @default auto
72
89
  */
73
90
  visitedStyle: "auto" | "off" | "on";
@@ -101,6 +118,45 @@ export declare class EunomiaLink extends LitElement {
101
118
  */
102
119
  static get observedAttributes(): string[];
103
120
  attributeChangedCallback(name: string, oldValue: string | null, value: string | null): void;
121
+ /**
122
+ * The native `<a>` slotted as a direct child while `href` is unset, which
123
+ * then acts as the link itself : it's in the light DOM, so it's part of
124
+ * the server-rendered HTML, and a framework's own link component (Next's
125
+ * `<Link>`, Angular's `routerLink`, ...) can be that anchor. Navigation,
126
+ * `target`/`rel` and the new-tab hint are the consumer's own in this mode.
127
+ * @internal
128
+ */
129
+ private get slottedAnchor();
130
+ connectedCallback(): void;
131
+ disconnectedCallback(): void;
132
+ protected updated(changed: PropertyValues): void;
133
+ /**
134
+ * Mirrors {@link current} onto the slotted anchor as `aria-current`,
135
+ * since that anchor, not the wrapper around it, is what assistive
136
+ * technology announces.
137
+ * @private
138
+ */
139
+ private syncSlottedAnchor;
140
+ /**
141
+ * Re-renders when the default slot changes, so an anchor added or removed
142
+ * after the first render switches between the two modes.
143
+ * @private
144
+ */
145
+ private handleDefaultSlotChange;
146
+ /**
147
+ * The slotted anchor's counterpart of {@link handleFocus} : it lives in
148
+ * the light DOM, so its focus reaches the host as a plain `focusin`.
149
+ * @param event the host's focusin event.
150
+ * @private
151
+ */
152
+ private handleSlottedFocusIn;
153
+ /**
154
+ * Clears the `focus-visible` custom state once the slotted anchor loses
155
+ * focus.
156
+ * @param event the host's focusout event.
157
+ * @private
158
+ */
159
+ private handleSlottedFocusOut;
104
160
  /**
105
161
  * Elements assigned to the `icon` slot, if any ; queried live so
106
162
  * {@link render} can decide whether to fall back to the `icon` prop.
@@ -141,6 +197,12 @@ export declare class EunomiaLink extends LitElement {
141
197
  * @private
142
198
  */
143
199
  private handleClick;
200
+ /**
201
+ * The decorative icon at the end of a link opening in a new tab, the
202
+ * wording being announced separately.
203
+ * @private
204
+ */
205
+ private renderExternalLinkIcon;
144
206
  /**
145
207
  * Renders the link template.
146
208
  * @returns The rendered HTML template
@@ -152,3 +214,4 @@ declare global {
152
214
  [EunomiaLinkTagName]: EunomiaLink;
153
215
  }
154
216
  }
217
+ export {};