@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,9 +1,9 @@
1
- import { LitElement, TemplateResult } from "lit";
1
+ import { LitElement, PropertyValues, TemplateResult } from "lit";
2
2
  /**
3
3
  * Tag name of the image card component.
4
4
  */
5
5
  export declare const EunomiaImageCardTagName = "eun-image-card";
6
- declare const EunomiaImageCard_base: import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/card-link.mixin.js").CardLinkMixinInterface> & typeof LitElement;
6
+ declare const EunomiaImageCard_base: import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/card-link.mixin.js").CardLinkMixinInterface & import("../../../mixins/localizable.mixin.js").LocalizableMixinInterface> & typeof LitElement;
7
7
  /**
8
8
  * An image header with a title and description footer, such as a blog post
9
9
  * preview, a product tile, or a team member card. It shares the same CSS
@@ -11,33 +11,52 @@ declare const EunomiaImageCard_base: import("../../../utils/constructor.type.js"
11
11
  * family.
12
12
  *
13
13
  * Like every card in this family, setting href turns the whole card into a
14
- * link.
14
+ * link. Without href, a native anchor slotted into title links the whole
15
+ * card instead, stretched over its surface, so the link exists in the
16
+ * server-rendered HTML and can be a framework's own link component. When
17
+ * it opens in a new tab, the card shows the external link badge and
18
+ * announces it through the anchor's aria-description.
19
+ *
20
+ * The footer stretches to the card's height, so a card in a grid row can
21
+ * push its last line to the bottom with margin-top auto. It isn't
22
+ * rendered at all while title and description are both empty.
15
23
  *
16
24
  * @slot [image] - The card's image, as a plain image element shown edge to edge, ignoring padding. The alt text is the author's own responsibility: describe the image, or leave it empty when it's purely decorative and the title or description already convey the same information
17
- * @slot [title] - The card's title, below the image. Use a heading element at whatever level fits the surrounding page structure
18
- * @slot [description] - The card's description, below the title
25
+ * @slot [title] - The card's title, below the image. Use a heading element at whatever level fits the surrounding page structure. A native anchor slotted here links the whole card when href is unset. The title typography is inherited, so a composition styles its own parts freely
26
+ * @slot [description] - The card's description, below the title. Its typography is inherited too
19
27
  * @csspart card - The outer box, a link once href is set, a plain container otherwise. Exposed for effects the card's CSS custom properties don't cover, such as a hover accent
28
+ * @csspart footer - The box holding the title and description, below the image
20
29
  * @prop {string} href - The URL the card navigates to. When set, the card renders as a link instead of a plain wrapper
21
30
  * @prop {'_blank' | '_self' | '_parent' | '_top'} target - Where to open the linked URL. Only used when href is set. Opening in a new tab automatically adds an external link badge and announces it to assistive technology
31
+ * @prop {string} [locale] - The locale used to resolve the "opens in a new tab" announcement. Defaults to the one set with setDefaultLocale, English otherwise
22
32
  * @prop {string} download - The filename used when the linked URL is downloaded instead of navigated to. Only used when href is set
23
- * @attr {string} aria-label - An accessible label that overrides the card content. When the card also opens in a new tab, a note announcing it is appended automatically
33
+ * @attr {string} aria-label - An accessible label that overrides the card content. When the card also opens in a new tab, a note announcing it is appended automatically. Ignored with a slotted anchor, which takes it instead
24
34
  * @fires {NavigationEvent} eunnavigate - Fired before following href, so a client-side router can intercept the navigation. Not fired for downloads, and cancelable
25
35
  * @cssprop [--card-padding] - Sets the padding of the footer, holding the title and description
36
+ * @cssprop [--card-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --card-padding is set
37
+ * @cssprop [--card-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --card-padding is set
26
38
  * @cssprop [--card-gap] - Sets the gap between the title and description
27
39
  * @cssprop [--card-border-radius] - Sets the corner radius of the card
28
40
  * @cssprop [--card-border-color] - Sets the border color of the card
29
41
  * @cssprop [--card-border-width] - Sets the width of the border
30
42
  * @cssprop [--card-background] - Sets the background color of the card
31
43
  * @cssprop [--card-shadow] - Sets a box shadow, none by default
44
+ * @cssprop [--card-hover-shadow] - Sets the box shadow on hover or focus, linked or not. Defaults to the resting shadow
45
+ * @cssprop [--card-overflow] - Sets the overflow of the card, hidden by default so the image follows the rounded corners
32
46
  * @cssprop [--card-hover-transform] - Sets a transform applied on hover or focus, for linked cards only, defaulting to a small lift
33
47
  * @cssprop [--card-hover-border-color] - Sets the border color on hover or focus. Defaults to the primary color when `href` is set, otherwise the border stays exactly as it is at rest — hovering a non-link card gives no color feedback, since there's nothing to click
34
48
  * @cssprop [--card-hover-background] - Sets the background color on hover or focus, linked or not, unchanged by default
35
49
  * @cssprop [--card-hover-duration] - Sets the duration of the hover transition
36
50
  * @cssprop [--card-transition] - Overrides the card's whole hover transition, for example to animate an extra property alongside the built-in ones. Defaults to transform, box shadow, background color, and border color
37
51
  * @cssprop [--card-focus-outline-color] - Sets the focus outline color, for linked cards only
38
- * @cssprop [--image-card-image-height] - Sets the height of the image
52
+ * @cssprop [--image-card-image-height] - Sets the height of the image, 180px by default. Set it to auto to size the image from its aspect ratio instead
53
+ * @cssprop [--image-card-image-aspect-ratio] - Sets the aspect ratio of the image, such as 4 / 3. Only applies once --image-card-image-height is auto
39
54
  * @cssprop [--image-card-title-size] - Sets the font size of the title
55
+ * @cssprop [--image-card-title-weight] - Sets the font weight of the title
56
+ * @cssprop [--image-card-title-color] - Sets the color of the title
40
57
  * @cssprop [--image-card-description-size] - Sets the font size of the description
58
+ * @cssprop [--image-card-description-weight] - Sets the font weight of the description
59
+ * @cssprop [--image-card-description-color] - Sets the color of the description
41
60
  * @cssprop [--card-link-badge-offset] - Sets the inset of the external link badge from the card's top and right edges
42
61
  * @cssprop [--card-link-badge-size] - Sets the diameter of the external link badge
43
62
  * @cssprop [--card-link-badge-background] - Sets the background color of the external link badge
@@ -45,6 +64,7 @@ declare const EunomiaImageCard_base: import("../../../utils/constructor.type.js"
45
64
  * @element eun-image-card
46
65
  */
47
66
  export declare class EunomiaImageCard extends EunomiaImageCard_base {
67
+ #private;
48
68
  /**
49
69
  * Styles to import to the component.
50
70
  *
@@ -53,6 +73,41 @@ export declare class EunomiaImageCard extends EunomiaImageCard_base {
53
73
  * @readonly
54
74
  */
55
75
  static readonly styles: import("lit").CSSResult[];
76
+ /**
77
+ * Whether the slotted anchor has keyboard focus. The ring is drawn on
78
+ * the card itself, since the card clips its content and an outline
79
+ * around the stretched anchor would be cut off.
80
+ * @internal
81
+ */
82
+ private anchorFocusVisible;
83
+ /**
84
+ * The native `<a>` slotted into `title` while `href` is unset, which
85
+ * then links the whole card. Navigation, `target`/`rel` and the new-tab
86
+ * hint are the consumer's own in this mode.
87
+ * @internal
88
+ */
89
+ private get slottedAnchor();
90
+ /**
91
+ * Whether anything is slotted into `title` or `description`. The footer
92
+ * isn't rendered otherwise, so an image-only card has no empty band
93
+ * under its image.
94
+ * @internal
95
+ */
96
+ private get hasFooterContent();
97
+ connectedCallback(): void;
98
+ disconnectedCallback(): void;
99
+ /**
100
+ * Tracks keyboard focus on the slotted anchor.
101
+ * @private
102
+ */
103
+ private handleFocusChange;
104
+ /**
105
+ * Re-renders when a slot changes, so an anchor or a footer slot added or
106
+ * removed after the first render is picked up.
107
+ * @private
108
+ */
109
+ private handleSlotChange;
110
+ protected updated(changed: PropertyValues): void;
56
111
  render(): TemplateResult;
57
112
  }
58
113
  declare global {
@@ -4,9 +4,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { customElement } from "lit/decorators.js";
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _EunomiaImageCard_newTab;
13
+ import { customElement, state } from "lit/decorators.js";
8
14
  import { html, LitElement } from "lit";
15
+ import { classMap } from "lit/directives/class-map.js";
9
16
  import { CardLinkMixin } from "../../../mixins/card-link.mixin.js";
17
+ import { warnIgnoredHostLinkAttributes } from "../../../utils/navigation.utils.js";
18
+ import { NewTabAnchorController } from "../../../utils/new-tab-anchor.controller.js";
10
19
  import { imageCardStyles } from "./image-card.styles.js";
11
20
  import { cardLinkStyles } from "../shared-styles/card-link.styles.js";
12
21
  /**
@@ -20,33 +29,52 @@ export const EunomiaImageCardTagName = "eun-image-card";
20
29
  * family.
21
30
  *
22
31
  * Like every card in this family, setting href turns the whole card into a
23
- * link.
32
+ * link. Without href, a native anchor slotted into title links the whole
33
+ * card instead, stretched over its surface, so the link exists in the
34
+ * server-rendered HTML and can be a framework's own link component. When
35
+ * it opens in a new tab, the card shows the external link badge and
36
+ * announces it through the anchor's aria-description.
37
+ *
38
+ * The footer stretches to the card's height, so a card in a grid row can
39
+ * push its last line to the bottom with margin-top auto. It isn't
40
+ * rendered at all while title and description are both empty.
24
41
  *
25
42
  * @slot [image] - The card's image, as a plain image element shown edge to edge, ignoring padding. The alt text is the author's own responsibility: describe the image, or leave it empty when it's purely decorative and the title or description already convey the same information
26
- * @slot [title] - The card's title, below the image. Use a heading element at whatever level fits the surrounding page structure
27
- * @slot [description] - The card's description, below the title
43
+ * @slot [title] - The card's title, below the image. Use a heading element at whatever level fits the surrounding page structure. A native anchor slotted here links the whole card when href is unset. The title typography is inherited, so a composition styles its own parts freely
44
+ * @slot [description] - The card's description, below the title. Its typography is inherited too
28
45
  * @csspart card - The outer box, a link once href is set, a plain container otherwise. Exposed for effects the card's CSS custom properties don't cover, such as a hover accent
46
+ * @csspart footer - The box holding the title and description, below the image
29
47
  * @prop {string} href - The URL the card navigates to. When set, the card renders as a link instead of a plain wrapper
30
48
  * @prop {'_blank' | '_self' | '_parent' | '_top'} target - Where to open the linked URL. Only used when href is set. Opening in a new tab automatically adds an external link badge and announces it to assistive technology
49
+ * @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
50
  * @prop {string} download - The filename used when the linked URL is downloaded instead of navigated to. Only used when href is set
32
- * @attr {string} aria-label - An accessible label that overrides the card content. When the card also opens in a new tab, a note announcing it is appended automatically
51
+ * @attr {string} aria-label - An accessible label that overrides the card content. When the card also opens in a new tab, a note announcing it is appended automatically. Ignored with a slotted anchor, which takes it instead
33
52
  * @fires {NavigationEvent} eunnavigate - Fired before following href, so a client-side router can intercept the navigation. Not fired for downloads, and cancelable
34
53
  * @cssprop [--card-padding] - Sets the padding of the footer, holding the title and description
54
+ * @cssprop [--card-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --card-padding is set
55
+ * @cssprop [--card-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --card-padding is set
35
56
  * @cssprop [--card-gap] - Sets the gap between the title and description
36
57
  * @cssprop [--card-border-radius] - Sets the corner radius of the card
37
58
  * @cssprop [--card-border-color] - Sets the border color of the card
38
59
  * @cssprop [--card-border-width] - Sets the width of the border
39
60
  * @cssprop [--card-background] - Sets the background color of the card
40
61
  * @cssprop [--card-shadow] - Sets a box shadow, none by default
62
+ * @cssprop [--card-hover-shadow] - Sets the box shadow on hover or focus, linked or not. Defaults to the resting shadow
63
+ * @cssprop [--card-overflow] - Sets the overflow of the card, hidden by default so the image follows the rounded corners
41
64
  * @cssprop [--card-hover-transform] - Sets a transform applied on hover or focus, for linked cards only, defaulting to a small lift
42
65
  * @cssprop [--card-hover-border-color] - Sets the border color on hover or focus. Defaults to the primary color when `href` is set, otherwise the border stays exactly as it is at rest — hovering a non-link card gives no color feedback, since there's nothing to click
43
66
  * @cssprop [--card-hover-background] - Sets the background color on hover or focus, linked or not, unchanged by default
44
67
  * @cssprop [--card-hover-duration] - Sets the duration of the hover transition
45
68
  * @cssprop [--card-transition] - Overrides the card's whole hover transition, for example to animate an extra property alongside the built-in ones. Defaults to transform, box shadow, background color, and border color
46
69
  * @cssprop [--card-focus-outline-color] - Sets the focus outline color, for linked cards only
47
- * @cssprop [--image-card-image-height] - Sets the height of the image
70
+ * @cssprop [--image-card-image-height] - Sets the height of the image, 180px by default. Set it to auto to size the image from its aspect ratio instead
71
+ * @cssprop [--image-card-image-aspect-ratio] - Sets the aspect ratio of the image, such as 4 / 3. Only applies once --image-card-image-height is auto
48
72
  * @cssprop [--image-card-title-size] - Sets the font size of the title
73
+ * @cssprop [--image-card-title-weight] - Sets the font weight of the title
74
+ * @cssprop [--image-card-title-color] - Sets the color of the title
49
75
  * @cssprop [--image-card-description-size] - Sets the font size of the description
76
+ * @cssprop [--image-card-description-weight] - Sets the font weight of the description
77
+ * @cssprop [--image-card-description-color] - Sets the color of the description
50
78
  * @cssprop [--card-link-badge-offset] - Sets the inset of the external link badge from the card's top and right edges
51
79
  * @cssprop [--card-link-badge-size] - Sets the diameter of the external link badge
52
80
  * @cssprop [--card-link-badge-background] - Sets the background color of the external link badge
@@ -54,21 +82,100 @@ export const EunomiaImageCardTagName = "eun-image-card";
54
82
  * @element eun-image-card
55
83
  */
56
84
  let EunomiaImageCard = class EunomiaImageCard extends CardLinkMixin(LitElement) {
85
+ constructor() {
86
+ super(...arguments);
87
+ /**
88
+ * Whether the slotted anchor has keyboard focus. The ring is drawn on
89
+ * the card itself, since the card clips its content and an outline
90
+ * around the stretched anchor would be cut off.
91
+ * @internal
92
+ */
93
+ this.anchorFocusVisible = false;
94
+ /**
95
+ * Announces the slotted anchor opening in a new tab.
96
+ * @internal
97
+ */
98
+ _EunomiaImageCard_newTab.set(this, new NewTabAnchorController(this, () => this.slottedAnchor, () => this.dictionary.link.opensInNewTab));
99
+ /**
100
+ * Tracks keyboard focus on the slotted anchor.
101
+ * @private
102
+ */
103
+ this.handleFocusChange = () => {
104
+ const anchor = this.slottedAnchor;
105
+ this.anchorFocusVisible =
106
+ !!anchor &&
107
+ anchor === document.activeElement &&
108
+ anchor.matches(":focus-visible");
109
+ };
110
+ /**
111
+ * Re-renders when a slot changes, so an anchor or a footer slot added or
112
+ * removed after the first render is picked up.
113
+ * @private
114
+ */
115
+ this.handleSlotChange = () => {
116
+ this.requestUpdate();
117
+ };
118
+ }
119
+ /**
120
+ * The native `<a>` slotted into `title` while `href` is unset, which
121
+ * then links the whole card. Navigation, `target`/`rel` and the new-tab
122
+ * hint are the consumer's own in this mode.
123
+ * @internal
124
+ */
125
+ get slottedAnchor() {
126
+ return this.href ? null : this.querySelector(':scope > a[slot="title"]');
127
+ }
128
+ /**
129
+ * Whether anything is slotted into `title` or `description`. The footer
130
+ * isn't rendered otherwise, so an image-only card has no empty band
131
+ * under its image.
132
+ * @internal
133
+ */
134
+ get hasFooterContent() {
135
+ return !!this.querySelector(':scope > [slot="title"], :scope > [slot="description"]');
136
+ }
137
+ connectedCallback() {
138
+ super.connectedCallback();
139
+ this.addEventListener("focusin", this.handleFocusChange);
140
+ this.addEventListener("focusout", this.handleFocusChange);
141
+ }
142
+ disconnectedCallback() {
143
+ this.removeEventListener("focusin", this.handleFocusChange);
144
+ this.removeEventListener("focusout", this.handleFocusChange);
145
+ super.disconnectedCallback();
146
+ }
147
+ updated(changed) {
148
+ super.updated(changed);
149
+ if (this.slottedAnchor) {
150
+ warnIgnoredHostLinkAttributes(this);
151
+ }
152
+ }
57
153
  render() {
58
154
  const inner = html `
59
155
  <slot name="image"></slot>
60
- <div id="footer">
61
- <slot name="title"></slot>
62
- <slot name="description"></slot>
156
+ <div id="footer" part="footer" ?hidden=${!this.hasFooterContent}>
157
+ <slot name="title" @slotchange=${this.handleSlotChange}></slot>
158
+ <slot name="description" @slotchange=${this.handleSlotChange}></slot>
63
159
  </div>
64
- ${this.renderExternalLinkBadge()}
160
+ ${this.renderExternalLinkBadge(__classPrivateFieldGet(this, _EunomiaImageCard_newTab, "f").isBlank)}
65
161
  `;
66
162
  if (this.href) {
67
163
  return this.renderCardLink("card", inner);
68
164
  }
69
- return html `<div id="card" part="card">${inner}</div>`;
165
+ const anchored = !!this.slottedAnchor;
166
+ return html `<div
167
+ id="card"
168
+ part="card"
169
+ class=${classMap({
170
+ "slotted-link": anchored,
171
+ "focus-visible": anchored && this.anchorFocusVisible,
172
+ })}
173
+ >
174
+ ${inner}
175
+ </div>`;
70
176
  }
71
177
  };
178
+ _EunomiaImageCard_newTab = new WeakMap();
72
179
  /**
73
180
  * Styles to import to the component.
74
181
  *
@@ -77,6 +184,9 @@ let EunomiaImageCard = class EunomiaImageCard extends CardLinkMixin(LitElement)
77
184
  * @readonly
78
185
  */
79
186
  EunomiaImageCard.styles = [imageCardStyles, cardLinkStyles];
187
+ __decorate([
188
+ state()
189
+ ], EunomiaImageCard.prototype, "anchorFocusVisible", void 0);
80
190
  EunomiaImageCard = __decorate([
81
191
  customElement(EunomiaImageCardTagName)
82
192
  ], EunomiaImageCard);
@@ -16,10 +16,13 @@ const base = css `
16
16
  }
17
17
 
18
18
  #card {
19
- display: block;
19
+ display: flex;
20
+ flex-direction: column;
21
+ position: relative;
22
+ isolation: isolate;
20
23
  box-sizing: border-box;
21
24
  height: 100%;
22
- overflow: hidden;
25
+ overflow: var(--card-overflow, hidden);
23
26
  border-radius: var(--card-border-radius, var(--eun-border-radius-m, 8px));
24
27
  border: var(--card-border-width, var(--eun-border-width-s, 1px)) solid
25
28
  var(--card-border-color, var(--eun-border-color, #dee0e7));
@@ -29,10 +32,14 @@ const base = css `
29
32
  text-decoration: none;
30
33
  transition: var(
31
34
  --card-transition,
32
- transform var(--card-hover-duration, 0.3s) ease,
33
- box-shadow var(--card-hover-duration, 0.3s) ease,
34
- background-color var(--card-hover-duration, 0.3s) ease,
35
- border-color var(--card-hover-duration, 0.3s) ease
35
+ transform var(--card-hover-duration, var(--eun-duration-xl, 300ms))
36
+ var(--eun-easing-default, ease),
37
+ box-shadow var(--card-hover-duration, var(--eun-duration-xl, 300ms))
38
+ var(--eun-easing-default, ease),
39
+ background-color var(--card-hover-duration, var(--eun-duration-xl, 300ms))
40
+ var(--eun-easing-default, ease),
41
+ border-color var(--card-hover-duration, var(--eun-duration-xl, 300ms))
42
+ var(--eun-easing-default, ease)
36
43
  );
37
44
  }
38
45
 
@@ -49,6 +56,7 @@ const base = css `
49
56
  #card:hover,
50
57
  #card:focus-visible {
51
58
  border-color: var(--card-hover-border-color, var(--_hoverBorderDefault));
59
+ box-shadow: var(--card-hover-shadow, var(--card-shadow, none));
52
60
  background: var(
53
61
  --card-hover-background,
54
62
  var(--card-background, var(--eun-surface-color, #ffffff))
@@ -56,28 +64,63 @@ const base = css `
56
64
  }
57
65
 
58
66
  :host([href]) #card:hover,
59
- :host([href]) #card:focus-visible {
67
+ :host([href]) #card:focus-visible,
68
+ #card.slotted-link:hover,
69
+ #card.focus-visible {
60
70
  transform: var(--card-hover-transform, translateY(-4px));
61
71
  }
62
72
 
63
- a#card:focus-visible {
73
+ #card.slotted-link {
74
+ --_hoverBorderDefault: var(--eun-color-primary-500, #3d6fff);
75
+ cursor: pointer;
76
+ }
77
+ #card.focus-visible {
78
+ border-color: var(--card-hover-border-color, var(--_hoverBorderDefault));
79
+ box-shadow: var(--card-hover-shadow, var(--card-shadow, none));
80
+ }
81
+
82
+ a#card:focus-visible,
83
+ #card.focus-visible {
64
84
  outline: 2px solid
65
85
  var(--card-focus-outline-color, var(--eun-color-primary-500, #3d6fff));
66
86
  outline-offset: 2px;
67
87
  }
68
88
 
89
+ ::slotted(a[slot="title"]) {
90
+ color: inherit;
91
+ text-decoration: none;
92
+ outline: none !important;
93
+ }
94
+ ::slotted(a[slot="title"])::after {
95
+ content: "";
96
+ position: absolute;
97
+ inset: 0;
98
+ z-index: 1;
99
+ }
100
+
69
101
  ::slotted([slot="image"]) {
70
102
  display: block;
103
+ flex: none;
71
104
  width: 100%;
72
105
  height: var(--image-card-image-height, 180px);
106
+ aspect-ratio: var(--image-card-image-aspect-ratio, auto);
73
107
  object-fit: cover;
74
108
  }
75
109
 
76
110
  #footer {
111
+ flex: 1;
77
112
  display: flex;
78
113
  flex-direction: column;
79
114
  gap: var(--card-gap, var(--eun-space-s, 8px));
80
- padding: var(--card-padding, var(--eun-space-m, 16px));
115
+ padding: var(
116
+ --card-padding,
117
+ var(--card-padding-block, var(--eun-space-m, 16px))
118
+ var(--card-padding-inline, var(--eun-space-m, 16px))
119
+ );
120
+ }
121
+
122
+ #footer[hidden] {
123
+ display: none;
81
124
  }
82
125
 
83
126
  ::slotted(h1),
@@ -89,18 +132,26 @@ const base = css `
89
132
  ::slotted(p) {
90
133
  margin: 0;
91
134
  padding: 0;
135
+ font-size: inherit;
136
+ font-weight: inherit;
92
137
  }
93
138
 
94
- ::slotted([slot="title"]) {
95
- font-weight: var(--eun-font-weight-l, 700);
139
+ slot[name="title"] {
140
+ font-weight: var(--image-card-title-weight, var(--eun-font-weight-l, 700));
96
141
  font-size: var(--image-card-title-size, var(--eun-font-size-m, 16px));
97
- color: var(--eun-text-color, #071621);
142
+ color: var(--image-card-title-color, var(--eun-text-color, #071621));
98
143
  }
99
144
 
100
- ::slotted([slot="description"]) {
101
- font-weight: var(--eun-font-weight-s, 300);
145
+ slot[name="description"] {
146
+ font-weight: var(
147
+ --image-card-description-weight,
148
+ var(--eun-font-weight-s, 300)
149
+ );
102
150
  font-size: var(--image-card-description-size, var(--eun-font-size-s, 14px));
103
- color: var(--eun-text-secondary, #484e61);
151
+ color: var(
152
+ --image-card-description-color,
153
+ var(--eun-text-secondary, #484e61)
154
+ );
104
155
  }
105
156
 
106
157
  @media (prefers-reduced-motion: reduce) {
@@ -3,7 +3,7 @@ import { LitElement, TemplateResult } from "lit";
3
3
  * Tag name of the sliding card component.
4
4
  */
5
5
  export declare const EunomiaSlidingCardTagName = "eun-sliding-card";
6
- declare const EunomiaSlidingCard_base: import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/card-link.mixin.js").CardLinkMixinInterface> & typeof LitElement;
6
+ declare const EunomiaSlidingCard_base: import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/card-link.mixin.js").CardLinkMixinInterface & import("../../../mixins/localizable.mixin.js").LocalizableMixinInterface> & typeof LitElement;
7
7
  /**
8
8
  * A card with a two layer slide reveal. The front layer is always visible
9
9
  * and slides down to expose the back layer underneath.
@@ -35,6 +35,7 @@ declare const EunomiaSlidingCard_base: import("../../../utils/constructor.type.j
35
35
  * @prop {boolean} [hint=false] - Loops a bounce animation on touch devices while closed, hinting that the card is interactive
36
36
  * @prop {string} href - The URL the back layer navigates to. When set, the back layer renders as a link instead of a plain container
37
37
  * @prop {'_blank' | '_self' | '_parent' | '_top'} target - Where to open the linked URL. Only used when href is set. Opening in a new tab automatically adds an external link badge and announces it to assistive technology
38
+ * @prop {string} [locale] - The locale used to resolve the "opens in a new tab" announcement. Defaults to the one set with setDefaultLocale, English otherwise
38
39
  * @prop {string} download - The filename used when the linked URL is downloaded instead of navigated to. Only used when href is set
39
40
  * @attr {string} aria-label - The accessible label for the front layer's toggle control, touch devices only, since desktop has no such control. When the back layer also opens in a new tab, a note announcing it is appended automatically
40
41
  * @fires {NavigationEvent} eunnavigate - Fired before following href, so a client-side router can intercept the navigation. Not fired for downloads, and cancelable
@@ -45,6 +46,8 @@ declare const EunomiaSlidingCard_base: import("../../../utils/constructor.type.j
45
46
  * @cssprop [--sliding-card-border-radius] - Sets the corner radius of both layers
46
47
  * @cssprop [--sliding-card-back-inset] - Sets how far the back layer sits inside the front layer's own edge, on the top/left/right sides. Keeps the back layer fully hidden underneath the front layer at rest, rather than sized to match it exactly, so the front layer's rounded corners never cut through to whatever's behind the card on the page
47
48
  * @cssprop [--sliding-card-padding] - Sets the padding of both layers
49
+ * @cssprop [--sliding-card-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --sliding-card-padding is set
50
+ * @cssprop [--sliding-card-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --sliding-card-padding is set
48
51
  * @cssprop [--sliding-card-front-background] - Sets the background color of the front layer, and (since the host itself carries no visible box beyond what the front layer already covers) the host's own background showing through the front layer's rounded corners
49
52
  * @cssprop [--sliding-card-back-background] - Sets the background color of the back layer
50
53
  * @cssprop [--sliding-card-back-color] - Sets the text color of the back layer
@@ -47,6 +47,7 @@ export const EunomiaSlidingCardTagName = "eun-sliding-card";
47
47
  * @prop {boolean} [hint=false] - Loops a bounce animation on touch devices while closed, hinting that the card is interactive
48
48
  * @prop {string} href - The URL the back layer navigates to. When set, the back layer renders as a link instead of a plain container
49
49
  * @prop {'_blank' | '_self' | '_parent' | '_top'} target - Where to open the linked URL. Only used when href is set. Opening in a new tab automatically adds an external link badge and announces it to assistive technology
50
+ * @prop {string} [locale] - The locale used to resolve the "opens in a new tab" announcement. Defaults to the one set with setDefaultLocale, English otherwise
50
51
  * @prop {string} download - The filename used when the linked URL is downloaded instead of navigated to. Only used when href is set
51
52
  * @attr {string} aria-label - The accessible label for the front layer's toggle control, touch devices only, since desktop has no such control. When the back layer also opens in a new tab, a note announcing it is appended automatically
52
53
  * @fires {NavigationEvent} eunnavigate - Fired before following href, so a client-side router can intercept the navigation. Not fired for downloads, and cancelable
@@ -57,6 +58,8 @@ export const EunomiaSlidingCardTagName = "eun-sliding-card";
57
58
  * @cssprop [--sliding-card-border-radius] - Sets the corner radius of both layers
58
59
  * @cssprop [--sliding-card-back-inset] - Sets how far the back layer sits inside the front layer's own edge, on the top/left/right sides. Keeps the back layer fully hidden underneath the front layer at rest, rather than sized to match it exactly, so the front layer's rounded corners never cut through to whatever's behind the card on the page
59
60
  * @cssprop [--sliding-card-padding] - Sets the padding of both layers
61
+ * @cssprop [--sliding-card-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --sliding-card-padding is set
62
+ * @cssprop [--sliding-card-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --sliding-card-padding is set
60
63
  * @cssprop [--sliding-card-front-background] - Sets the background color of the front layer, and (since the host itself carries no visible box beyond what the front layer already covers) the host's own background showing through the front layer's rounded corners
61
64
  * @cssprop [--sliding-card-back-background] - Sets the background color of the back layer
62
65
  * @cssprop [--sliding-card-back-color] - Sets the text color of the back layer
@@ -65,7 +65,11 @@ const base = css `
65
65
  --sliding-card-border-radius,
66
66
  var(--eun-border-radius-l, 16px)
67
67
  );
68
- padding: var(--sliding-card-padding, var(--eun-space-l, 32px));
68
+ padding: var(
69
+ --sliding-card-padding,
70
+ var(--sliding-card-padding-block, var(--eun-space-l, 32px))
71
+ var(--sliding-card-padding-inline, var(--eun-space-l, 32px))
72
+ );
69
73
  overflow: hidden;
70
74
  }
71
75
 
@@ -37,14 +37,16 @@ export declare const EunomiaCollapseTagName = "eun-collapse";
37
37
  * trigger, so it's never dropped into now-hidden content.
38
38
  *
39
39
  * @slot [default] - The panel's content, shown when expanded, combining with richText if both are set. Only the panel's own padding and text color apply to it, with no margins, typography, or list styles forced onto slotted content
40
+ * @slot [heading] - The trigger's heading as light DOM content, so it's part of the server-rendered HTML. Falls back to heading when empty. Keep it to text and inline phrasing, since it renders inside the trigger button
40
41
  * @slot [icon] - Replaces the leading icon entirely with any content, not just an icon element. Falls back to icon when empty
41
- * @slot [tag] - Replaces the trigger's tag entirely, for example with a custom colored tag. Falls back to the plain text tag when empty
42
+ * @slot [subheading] - The secondary text under the heading as light DOM content, so it's part of the server-rendered HTML. Falls back to subheading when empty
43
+ * @slot [tag] - The trigger's tag as light DOM content. Plain elements, such as a span of text, keep the default tag style, while a custom element, such as a colored eun-tag, replaces the tag entirely. Falls back to tag when empty
42
44
  * @slot [chevron] - Replaces the trailing indicator entirely with any content, not just an icon element. Falls back to chevronIcon when empty. Whatever ends up there still rotates while open, unless that rotation is set to zero
43
- * @prop {string} heading - The trigger's heading text
44
- * @prop {string} [subheading] - Optional secondary text shown under the heading
45
+ * @prop {string} heading - The trigger's heading text. Ignored once something is slotted into heading
46
+ * @prop {string} [subheading] - Optional secondary text shown under the heading. Ignored once something is slotted into subheading
45
47
  * @prop {2 | 3 | 4 | 5 | 6} [level] - Wraps the trigger in a heading element of this level, so screen reader users can jump between items, such as several FAQ entries, by heading. Matches the page's own outline, so it's opt-in rather than assumed
46
48
  * @prop {import('../icon/icon.type.js').EunomiaIconName} [icon] - An optional leading icon for the trigger. Ignored once the icon slot has content
47
- * @prop {string} [tag] - An optional short label rendered as a default tag in the trigger, such as a count or category. Use the tag slot instead for a custom colored badge
49
+ * @prop {string} [tag] - An optional short label rendered as a default tag in the trigger, such as a count or category. Ignored once something is slotted into tag
48
50
  * @prop {import('../icon/icon.type.js').EunomiaIconName} [chevronIcon='add'] - The trailing indicator icon. Ignored once the chevron slot has content. Pair a non-default icon with the chevron rotation custom property, since the default plus-sign-to-cross rotation doesn't suit every icon
49
51
  * @prop {string} [richText] - Lightweight formatted content rendered above the default slot. Supports simple lists, links, bold, and italic text
50
52
  * @prop {boolean} [open=false] - Whether the panel is currently expanded
@@ -66,7 +68,16 @@ export declare const EunomiaCollapseTagName = "eun-collapse";
66
68
  * @cssprop [--collapse-focus-outline-color] - Sets the focus outline color of the trigger
67
69
  * @cssprop [--collapse-disabled-opacity] - Sets the opacity while disabled
68
70
  * @cssprop [--collapse-border-radius] - Sets the corner radius of the trigger and panel
69
- * @cssprop [--collapse-padding] - Sets the padding of the trigger and panel
71
+ * @cssprop [--collapse-padding] - Sets the padding of the trigger, and of the panel unless --collapse-panel-padding is set
72
+ * @cssprop [--collapse-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --collapse-padding is set
73
+ * @cssprop [--collapse-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --collapse-padding is set
74
+ * @cssprop [--collapse-panel-padding] - Sets the padding of the panel, falling back to the trigger's padding
75
+ * @cssprop [--collapse-panel-padding-block] - Sets the vertical padding of the panel, as one length applied to both sides. Ignored when --collapse-panel-padding or --collapse-padding is set
76
+ * @cssprop [--collapse-panel-padding-inline] - Sets the horizontal padding of the panel, as one length applied to both sides. Ignored when --collapse-panel-padding or --collapse-padding is set
77
+ * @cssprop [--collapse-heading-font-size] - Sets the font size of the heading
78
+ * @cssprop [--collapse-subheading-font-size] - Sets the font size of the subheading
79
+ * @cssprop [--collapse-divider-width] - Sets the width of the line between the trigger and the panel. Zero removes it
80
+ * @cssprop [--collapse-divider-color] - Sets the color of the line between the trigger and the panel
70
81
  * @cssprop [--collapse-gap] - Sets the gap between the trigger's leading icon, heading, and actions
71
82
  * @cssprop [--collapse-panel-gap] - Sets the gap between the trigger and the panel while open, with independent set
72
83
  * @cssprop [--collapse-transition-duration] - Sets the duration of the open, close, and color transitions
@@ -82,11 +93,16 @@ export declare class EunomiaCollapse extends LitElement {
82
93
  */
83
94
  static readonly styles: import("lit").CSSResult[];
84
95
  /**
85
- * The trigger's heading text.
96
+ * The trigger's heading text. Only rendered in the shadow root, so the
97
+ * `heading` slot is preferred wherever the text must be in the server
98
+ * HTML (an indexed FAQ, for example) ; ignored once that slot is filled.
86
99
  */
87
100
  heading: string;
88
101
  /**
89
- * Optional secondary text shown under the heading.
102
+ * Optional secondary text shown under the heading. Only rendered in the
103
+ * shadow root, like {@link heading}, so the `subheading` slot is
104
+ * preferred wherever the text must be in the server HTML ; ignored once
105
+ * that slot is filled.
90
106
  */
91
107
  subheading?: string;
92
108
  /**
@@ -194,12 +210,12 @@ export declare class EunomiaCollapse extends LitElement {
194
210
  */
195
211
  private readonly iconSlotEls;
196
212
  /**
197
- * Elements assigned to the `tag` slot, if any ; queried live so
198
- * {@link render} can decide whether to fall back to the `tag` prop.
213
+ * Elements assigned to the `subheading` slot, if any ; queried live so
214
+ * {@link render} can decide whether to render the subheading line at all.
199
215
  * @internal
200
216
  * @readonly
201
217
  */
202
- private readonly tagSlotEls;
218
+ private readonly subheadingSlotEls;
203
219
  /**
204
220
  * Elements assigned to the `chevron` slot, if any ; queried live so
205
221
  * {@link render} can skip instantiating the fallback `eun-icon` (and its
@@ -212,8 +228,9 @@ export declare class EunomiaCollapse extends LitElement {
212
228
  private readonly chevronSlotEls;
213
229
  /**
214
230
  * Re-renders when a named slot's assigned content changes, so the
215
- * `icon`/`tag`/`chevron` prop fallback correctly appears/disappears as
216
- * content is slotted in or removed after the initial render.
231
+ * `icon`/`subheading`/`tag`/`chevron` prop fallback correctly
232
+ * appears/disappears as content is slotted in or removed after the
233
+ * initial render.
217
234
  * @private
218
235
  */
219
236
  private handleSlotChange;
@@ -332,6 +349,16 @@ export declare class EunomiaCollapse extends LitElement {
332
349
  * @private
333
350
  */
334
351
  private renderHeadingWrapper;
352
+ /**
353
+ * Renders the `tag` slot. Plain elements slotted into it (a span of
354
+ * text, typically) are wrapped in the default tag, so server-rendered
355
+ * text keeps the tag style ; a custom element (a colored `eun-tag`, a
356
+ * badge, ...) replaces the tag entirely instead. Read from the light DOM
357
+ * rather than the slot's assigned elements, so the first render already
358
+ * picks the right shape before the slot exists.
359
+ * @private
360
+ */
361
+ private renderTag;
335
362
  render(): TemplateResult;
336
363
  }
337
364
  declare global {