@ebrains/components 3.0.0 → 3.2.0

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 (427) hide show
  1. package/dist/cjs/color-primary-palette_6.cjs.entry.js +14 -14
  2. package/dist/cjs/components-section.cjs.entry.js +1 -1
  3. package/dist/cjs/components.cjs.js +1 -1
  4. package/dist/cjs/correct-use-of-colors.cjs.entry.js +1 -1
  5. package/dist/cjs/docs-palettes.cjs.entry.js +1 -1
  6. package/dist/cjs/docs-tokens.cjs.entry.js +1 -1
  7. package/dist/cjs/{eds-accordion_52.cjs.entry.js → eds-accordion_53.cjs.entry.js} +1095 -336
  8. package/dist/cjs/eds-app-root.cjs.entry.js +1 -1
  9. package/dist/cjs/eds-cookies-preference.cjs.entry.js +1 -1
  10. package/dist/cjs/eds-feedback.cjs.entry.js +1 -1
  11. package/dist/cjs/eds-frame.cjs.entry.js +1 -1
  12. package/dist/cjs/eds-gauge.cjs.entry.js +1 -1
  13. package/dist/cjs/eds-gitlab-contributors.cjs.entry.js +35 -32
  14. package/dist/cjs/eds-icon-bluesky.cjs.entry.js +1 -1
  15. package/dist/cjs/eds-icon-eu.cjs.entry.js +1 -1
  16. package/dist/cjs/eds-icon-facebook.cjs.entry.js +1 -1
  17. package/dist/cjs/eds-icon-gitlab.cjs.entry.js +1 -1
  18. package/dist/cjs/eds-icon-linkedin.cjs.entry.js +1 -1
  19. package/dist/cjs/eds-icon-mastodon.cjs.entry.js +1 -1
  20. package/dist/cjs/eds-icon-twitter.cjs.entry.js +1 -1
  21. package/dist/cjs/eds-icon-youtube.cjs.entry.js +1 -1
  22. package/dist/cjs/eds-input-search.cjs.entry.js +76 -0
  23. package/dist/cjs/eds-modal.cjs.entry.js +18 -9
  24. package/dist/cjs/eds-pie.cjs.entry.js +2 -2
  25. package/dist/cjs/eds-section-core_2.cjs.entry.js +3 -3
  26. package/dist/cjs/eds-timeline.cjs.entry.js +1 -1
  27. package/dist/cjs/eds-toast-manager.cjs.entry.js +1 -1
  28. package/dist/cjs/eds-trl-badge.cjs.entry.js +184 -0
  29. package/dist/cjs/incorrect-use-of-colors.cjs.entry.js +1 -1
  30. package/dist/cjs/index-50bc1aa4.js +10 -2
  31. package/dist/cjs/loader.cjs.js +1 -1
  32. package/dist/cjs/logo-space.cjs.entry.js +58 -1
  33. package/dist/cjs/logo-variations-horizontal_2.cjs.entry.js +2 -2
  34. package/dist/cjs/logo-variations-tabs.cjs.entry.js +1 -1
  35. package/dist/cjs/logo-wrong-usage.cjs.entry.js +1 -1
  36. package/dist/cjs/svg-repository.cjs.entry.js +1 -1
  37. package/dist/cjs/token-list_3.cjs.entry.js +3 -3
  38. package/dist/cjs/token-ratios.cjs.entry.js +1 -1
  39. package/dist/cjs/token-spacing.cjs.entry.js +1 -1
  40. package/dist/cjs/token-typography.cjs.entry.js +8 -2
  41. package/dist/collection/collection-manifest.json +4 -1
  42. package/dist/collection/components/eds-accordion/eds-accordion.css +3 -2
  43. package/dist/collection/components/eds-accordion/eds-accordion.js +2 -5
  44. package/dist/collection/components/eds-accordion/eds-accordion.stories.js +7 -19
  45. package/dist/collection/components/eds-alert/eds-alert.css +14 -0
  46. package/dist/collection/components/eds-alert/eds-alert.js +2 -1
  47. package/dist/collection/components/eds-alert/eds-alert.stories.js +19 -147
  48. package/dist/collection/components/eds-avatar/eds-avatar.js +1 -1
  49. package/dist/collection/components/eds-avatar/eds-avatar.stories.js +2 -2
  50. package/dist/collection/components/eds-block-break/eds-block-break.js +1 -1
  51. package/dist/collection/components/eds-breadcrump/eds-breadcrump.js +1 -1
  52. package/dist/collection/components/eds-button/eds-button.css +15 -0
  53. package/dist/collection/components/eds-button/eds-button.js +17 -14
  54. package/dist/collection/components/eds-button/eds-button.stories.js +4 -1
  55. package/dist/collection/components/eds-cards/eds-card-app/eds-card-app.js +2 -5
  56. package/dist/collection/components/eds-cards/eds-card-composer/eds-card-desc/eds-card-desc.js +1 -1
  57. package/dist/collection/components/eds-cards/eds-card-composer/eds-card-title/eds-card-title.js +1 -1
  58. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.css +10 -1
  59. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.js +2 -5
  60. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.stories.js +4 -1
  61. package/dist/collection/components/eds-cards/eds-card-feature/eds-card-feature.js +2 -5
  62. package/dist/collection/components/eds-cards/eds-card-generic/eds-card-generic.js +2 -4
  63. package/dist/collection/components/eds-cards/eds-card-hero/eds-card-hero.js +6 -7
  64. package/dist/collection/components/eds-cards/eds-card-stat/eds-card-stat.js +6 -7
  65. package/dist/collection/components/eds-charts/eds-gauge/eds-gauge.js +1 -1
  66. package/dist/collection/components/eds-charts/eds-pie/eds-pie.js +2 -2
  67. package/dist/collection/components/eds-code-block/eds-code-block.css +72 -106
  68. package/dist/collection/components/eds-code-block/eds-code-block.js +1 -1
  69. package/dist/collection/components/eds-dropdown/eds-dropdown.js +30 -4
  70. package/dist/collection/components/eds-feedback/eds-feedback.js +1 -1
  71. package/dist/collection/components/eds-footer/eds-footer.css +143 -203
  72. package/dist/collection/components/eds-footer/eds-footer.js +176 -74
  73. package/dist/collection/components/eds-footer/eds-footer.stories.js +109 -17
  74. package/dist/collection/components/eds-form/eds-form.css +493 -1
  75. package/dist/collection/components/eds-form/eds-form.js +256 -14
  76. package/dist/collection/components/eds-form/eds-form.stories.js +110 -3
  77. package/dist/collection/components/eds-frame/eds-frame.js +1 -1
  78. package/dist/collection/components/eds-header/eds-header.js +1 -1
  79. package/dist/collection/components/eds-header/eds-header.stories.js +26 -12
  80. package/dist/collection/components/eds-icon-wrapper/eds-icon-wrapper.js +20 -1
  81. package/dist/collection/components/eds-icons/eds-icon-eu/eds-icon-eu.js +1 -1
  82. package/dist/collection/components/eds-icons/eds-icon-gitlab/eds-icon-gitlab.js +1 -1
  83. package/dist/collection/components/eds-icons/social/eds-icon-bluesky/eds-icon-bluesky.js +1 -1
  84. package/dist/collection/components/eds-icons/social/eds-icon-facebook/eds-icon-facebook.js +1 -1
  85. package/dist/collection/components/eds-icons/social/eds-icon-linkedin/eds-icon-linkedin.js +1 -1
  86. package/dist/collection/components/eds-icons/social/eds-icon-mastodon/eds-icon-mastodon.js +1 -1
  87. package/dist/collection/components/eds-icons/social/eds-icon-twitter/eds-icon-twitter.js +1 -1
  88. package/dist/collection/components/eds-icons/social/eds-icon-youtube/eds-icon-youtube.js +1 -1
  89. package/dist/collection/components/eds-img/eds-img.js +2 -2
  90. package/dist/collection/components/eds-img/eds-img.stories.js +29 -52
  91. package/dist/collection/components/eds-input-dropzone/eds-input-dropzone.js +7 -4
  92. package/dist/collection/components/eds-input-elements/eds-input/eds-input.js +20 -2
  93. package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.css +39 -0
  94. package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.js +2 -1
  95. package/dist/collection/components/eds-input-elements/eds-input-label/eds-input-label.css +17 -5
  96. package/dist/collection/components/eds-input-elements/eds-input-label/eds-input-label.js +1 -1
  97. package/dist/collection/components/eds-input-elements/eds-input-range/eds-input-range.js +15 -5
  98. package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.js +1 -1
  99. package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.stories.js +30 -0
  100. package/dist/collection/components/eds-input-elements/eds-input-select/eds-input-select.js +6 -2
  101. package/dist/collection/components/eds-input-field/eds-input-field.css +219 -0
  102. package/dist/collection/components/eds-input-field/eds-input-field.js +16 -5
  103. package/dist/collection/components/eds-input-field/eds-input-field.stories.js +105 -125
  104. package/dist/collection/components/eds-input-file/eds-input-file.js +5 -3
  105. package/dist/collection/components/eds-link/eds-link.js +4 -8
  106. package/dist/collection/components/eds-link/eds-link.stories.js +13 -8
  107. package/dist/collection/components/eds-logo/eds-logo.js +13 -66
  108. package/dist/collection/components/eds-logo/eds-logo.stories.js +36 -17
  109. package/dist/collection/components/eds-modal/eds-modal.js +18 -9
  110. package/dist/collection/components/eds-modal/eds-modal.stories.js +11 -8
  111. package/dist/collection/components/eds-nps/eds-nps.css +32 -0
  112. package/dist/collection/components/eds-nps/eds-nps.js +3 -3
  113. package/dist/collection/components/eds-pagination/eds-pagination.js +2 -2
  114. package/dist/collection/components/eds-progress-bar/eds-progress-bar.js +1 -8
  115. package/dist/collection/components/eds-rating/eds-rating.css +9 -0
  116. package/dist/collection/components/eds-rating/eds-rating.js +2 -2
  117. package/dist/collection/components/eds-section/eds-section-core/eds-section-core.js +1 -1
  118. package/dist/collection/components/eds-section/eds-section-heading/eds-section-heading.js +2 -2
  119. package/dist/collection/components/eds-sidebar/eds-sidebar.js +2 -2
  120. package/dist/collection/components/eds-social-networks/eds-social-networks.js +1 -1
  121. package/dist/collection/components/eds-spinner/eds-spinner.js +1 -1
  122. package/dist/collection/components/eds-steps/eds-steps.css +56 -25
  123. package/dist/collection/components/eds-steps/eds-steps.js +27 -7
  124. package/dist/collection/components/eds-steps-v2/eds-steps-v2.css +93 -28
  125. package/dist/collection/components/eds-steps-v2/eds-steps-v2.js +57 -10
  126. package/dist/collection/components/eds-steps-v2/eds-steps-v2.stories.js +80 -17
  127. package/dist/collection/components/eds-switch/eds-switch.css +26 -3
  128. package/dist/collection/components/eds-switch/eds-switch.js +10 -7
  129. package/dist/collection/components/eds-switch/eds-switch.stories.js +20 -1
  130. package/dist/collection/components/eds-table/eds-table.css +21 -4
  131. package/dist/collection/components/eds-table/eds-table.js +16 -51
  132. package/dist/collection/components/eds-table/eds-table.stories.js +7 -115
  133. package/dist/collection/components/eds-tabs/eds-tabs.css +7 -1
  134. package/dist/collection/components/eds-tabs/eds-tabs.js +49 -18
  135. package/dist/collection/components/eds-tabs/eds-tabs.stories.js +2 -2
  136. package/dist/collection/components/eds-tag/eds-tag.js +1 -1
  137. package/dist/collection/components/eds-timeline/eds-timeline.js +1 -1
  138. package/dist/collection/components/eds-toast/eds-toast.css +146 -0
  139. package/dist/collection/components/eds-toast/eds-toast.js +106 -4
  140. package/dist/collection/components/eds-toast/eds-toast.stories.js +102 -5
  141. package/dist/collection/components/eds-toast-manager/eds-toast-manager.js +1 -1
  142. package/dist/collection/components/eds-tooltip/eds-tooltip.js +1 -1
  143. package/dist/collection/components/eds-tooltip/eds-tooltip.stories.js +7 -1
  144. package/dist/collection/components/eds-user/eds-user.js +2 -5
  145. package/dist/collection/components/eds-user/eds-user.stories.js +8 -11
  146. package/dist/collection/eds-docs-ui/colors/color-palette/primary.js +1 -1
  147. package/dist/collection/eds-docs-ui/colors/color-palette/secondary.js +1 -1
  148. package/dist/collection/eds-docs-ui/colors/color-palette/support.js +1 -1
  149. package/dist/collection/eds-docs-ui/colors/gradient-palette/primary.js +1 -1
  150. package/dist/collection/eds-docs-ui/colors/gradient-palette/secondary.js +7 -7
  151. package/dist/collection/eds-docs-ui/colors/gradient-palette/support.js +3 -3
  152. package/dist/collection/eds-docs-ui/colors/use-of-colors/correct-use-of-colors.js +1 -1
  153. package/dist/collection/eds-docs-ui/colors/use-of-colors/incorrect-use-of-colors.js +1 -1
  154. package/dist/collection/eds-docs-ui/components-section/components-section.js +1 -1
  155. package/dist/collection/eds-docs-ui/design-tokens/docs-tokens/docs-tokens.js +1 -1
  156. package/dist/collection/eds-docs-ui/design-tokens/token-list/token-list.js +1 -1
  157. package/dist/collection/eds-docs-ui/design-tokens/token-radii/token-radii.js +1 -1
  158. package/dist/collection/eds-docs-ui/design-tokens/token-ratios/token-ratios.js +1 -1
  159. package/dist/collection/eds-docs-ui/design-tokens/token-shadows/token-shadows.js +1 -1
  160. package/dist/collection/eds-docs-ui/design-tokens/token-spacing/token-spacing.js +1 -1
  161. package/dist/collection/eds-docs-ui/design-tokens/token-typography/token-typography.js +8 -2
  162. package/dist/collection/eds-docs-ui/docs-palettes/docs-palettes.js +1 -1
  163. package/dist/collection/eds-docs-ui/logo/logo-space/logo-space.js +58 -1
  164. package/dist/collection/eds-docs-ui/logo/logo-variations/horizontal/logo-variations-horizontal.js +1 -1
  165. package/dist/collection/eds-docs-ui/logo/logo-variations/vertical/logo-variations-vertical.js +1 -1
  166. package/dist/collection/eds-docs-ui/logo/logo-variations-tabs/logo-variations.js +1 -1
  167. package/dist/collection/eds-docs-ui/logo/logo-wrong-usage/logo-wrong-usage.js +1 -1
  168. package/dist/collection/eds-docs-ui/svg-repository/svg-repository.js +1 -1
  169. package/dist/collection/shared-ui/eds-cookies-preference/eds-cookies-preference.js +1 -1
  170. package/dist/collection/shared-ui/eds-gitlab-contributors/eds-gitlab-contributors.css +19 -0
  171. package/dist/collection/shared-ui/eds-gitlab-contributors/eds-gitlab-contributors.js +34 -31
  172. package/dist/collection/shared-ui/eds-global-search/eds-global-search.css +166 -0
  173. package/dist/collection/shared-ui/eds-global-search/eds-global-search.js +69 -7
  174. package/dist/collection/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.css +205 -0
  175. package/dist/collection/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.js +253 -0
  176. package/dist/collection/shared-ui/eds-kg-web-services-select/eds-kg-web-services-select.js +2 -2
  177. package/dist/collection/shared-ui/eds-kg-web-services-select/eds-kg-web-services-select.stories.js +1 -3
  178. package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.css +23 -102
  179. package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.js +7 -1
  180. package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.stories.js +1 -1
  181. package/dist/collection/shared-ui/eds-search-select/eds-search-select.css +213 -0
  182. package/dist/collection/shared-ui/eds-search-select/eds-search-select.js +706 -0
  183. package/dist/collection/shared-ui/eds-search-select/eds-search-select.stories.js +90 -0
  184. package/dist/collection/shared-ui/eds-trl-badge/ebrains-mark.js +26 -0
  185. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.css +22 -0
  186. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.js +324 -0
  187. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.stories.js +99 -0
  188. package/dist/collection/shared-ui/examples/eds-app-root/eds-app-root.js +1 -1
  189. package/dist/collection/utils/eds-form/formValidators.js +2 -1
  190. package/dist/collection/utils/eds-form/safeFormat.js +35 -0
  191. package/dist/components/components-section.js +1 -1
  192. package/dist/components/components.css +12 -11
  193. package/dist/components/components.esm.js +1 -1
  194. package/dist/components/correct-use-of-colors.js +1 -1
  195. package/dist/components/docs-palettes.js +1 -1
  196. package/dist/components/docs-tokens.js +1 -1
  197. package/dist/components/eds-accordion2.js +3 -6
  198. package/dist/components/eds-alert2.js +3 -2
  199. package/dist/components/eds-app-root.js +1 -1
  200. package/dist/components/eds-avatar2.js +1 -1
  201. package/dist/components/eds-block-break2.js +1 -1
  202. package/dist/components/eds-breadcrumb.js +1 -1
  203. package/dist/components/eds-button2.js +16 -13
  204. package/dist/components/eds-card-app.js +2 -5
  205. package/dist/components/eds-card-cta.js +3 -6
  206. package/dist/components/eds-card-desc2.js +1 -1
  207. package/dist/components/eds-card-feature.js +2 -5
  208. package/dist/components/eds-card-generic2.js +2 -4
  209. package/dist/components/eds-card-hero.js +6 -7
  210. package/dist/components/eds-card-stat.js +6 -7
  211. package/dist/components/eds-card-title2.js +1 -1
  212. package/dist/components/eds-code-block2.js +2 -2
  213. package/dist/components/eds-cookies-preference.js +1 -1
  214. package/dist/components/eds-dropdown2.js +30 -4
  215. package/dist/components/eds-feedback.js +1 -1
  216. package/dist/components/eds-footer2.js +118 -24
  217. package/dist/components/eds-form.js +146 -45
  218. package/dist/components/eds-frame.js +1 -1
  219. package/dist/components/eds-gauge.js +1 -1
  220. package/dist/components/eds-gitlab-contributors.js +35 -32
  221. package/dist/components/eds-global-search.js +55 -70
  222. package/dist/components/eds-header.js +1 -1
  223. package/dist/components/eds-icon-bluesky.js +1 -1
  224. package/dist/components/eds-icon-eu.js +1 -1
  225. package/dist/components/eds-icon-facebook.js +1 -1
  226. package/dist/components/eds-icon-gitlab.js +1 -1
  227. package/dist/components/eds-icon-linkedin.js +1 -1
  228. package/dist/components/eds-icon-mastodon.js +1 -1
  229. package/dist/components/eds-icon-twitter.js +1 -1
  230. package/dist/components/eds-icon-wrapper2.js +5 -2
  231. package/dist/components/eds-icon-youtube.js +1 -1
  232. package/dist/components/eds-img2.js +2 -2
  233. package/dist/components/eds-input-dropzone2.js +7 -4
  234. package/dist/components/eds-input-field2.js +31 -26
  235. package/dist/components/eds-input-file2.js +5 -3
  236. package/dist/components/eds-input-footer2.js +39 -3
  237. package/dist/components/eds-input-label2.js +2 -2
  238. package/dist/components/eds-input-range2.js +15 -5
  239. package/dist/components/eds-input-search.js +100 -1
  240. package/dist/components/eds-input-select2.js +6 -2
  241. package/dist/components/eds-input2.js +4 -2
  242. package/dist/components/eds-kg-learning-resources.d.ts +11 -0
  243. package/dist/components/eds-kg-learning-resources.js +217 -0
  244. package/dist/components/eds-kg-web-services-select2.js +18 -24
  245. package/dist/components/eds-link2.js +3 -7
  246. package/dist/components/eds-logo2.js +4 -22
  247. package/dist/components/eds-matomo-notice2.js +8 -2
  248. package/dist/components/eds-modal.js +18 -9
  249. package/dist/components/eds-nps2.js +4 -4
  250. package/dist/components/eds-pagination2.js +2 -2
  251. package/dist/components/eds-pie.js +2 -2
  252. package/dist/components/eds-progress-bar.js +1 -8
  253. package/dist/components/eds-rating2.js +3 -3
  254. package/dist/components/eds-search-select.d.ts +11 -0
  255. package/dist/components/eds-search-select.js +6 -0
  256. package/dist/components/eds-search-select2.js +382 -0
  257. package/dist/components/eds-section-core2.js +1 -1
  258. package/dist/components/eds-section-heading2.js +2 -2
  259. package/dist/components/eds-sidebar.js +2 -2
  260. package/dist/components/eds-social-networks2.js +1 -1
  261. package/dist/components/eds-spinner2.js +1 -1
  262. package/dist/components/eds-steps-v2.js +41 -11
  263. package/dist/components/eds-steps2.js +28 -8
  264. package/dist/components/eds-switch2.js +8 -5
  265. package/dist/components/eds-table2.js +30 -54
  266. package/dist/components/eds-tabs.js +50 -19
  267. package/dist/components/eds-tag2.js +1 -1
  268. package/dist/components/eds-timeline.js +1 -1
  269. package/dist/components/eds-toast-manager.js +1 -1
  270. package/dist/components/eds-toast2.js +39 -3
  271. package/dist/components/eds-tooltip2.js +1 -1
  272. package/dist/components/eds-trl-badge.d.ts +11 -0
  273. package/dist/components/eds-trl-badge.js +207 -0
  274. package/dist/components/eds-user.js +1 -4
  275. package/dist/components/incorrect-use-of-colors.js +1 -1
  276. package/dist/components/logo-space.js +76 -25
  277. package/dist/components/logo-variations-horizontal2.js +1 -1
  278. package/dist/components/logo-variations-tabs.js +1 -1
  279. package/dist/components/logo-variations-vertical2.js +1 -1
  280. package/dist/components/logo-wrong-usage.js +1 -1
  281. package/dist/components/p-05e96609.entry.js +1 -0
  282. package/dist/components/p-0d778d10.entry.js +1 -0
  283. package/dist/components/{p-d2576747.entry.js → p-114f6d54.entry.js} +1 -1
  284. package/dist/components/p-1534204d.entry.js +1 -0
  285. package/dist/components/p-337d4ee3.entry.js +9 -0
  286. package/dist/components/p-340bc935.entry.js +1 -0
  287. package/dist/components/{p-a6dc1f88.entry.js → p-37ef07d9.entry.js} +1 -1
  288. package/dist/components/p-39dbb964.entry.js +1 -0
  289. package/dist/components/{p-dfe93385.entry.js → p-3f66bc26.entry.js} +1 -1
  290. package/dist/components/p-43f9e64f.entry.js +1 -0
  291. package/dist/components/p-46cc6c1a.entry.js +1 -0
  292. package/dist/components/{p-773bd015.entry.js → p-4b8a7979.entry.js} +1 -1
  293. package/dist/components/p-6b94b2ec.entry.js +1 -0
  294. package/dist/components/p-6d965fef.entry.js +1 -0
  295. package/dist/components/{p-d16b5363.entry.js → p-6e370182.entry.js} +1 -1
  296. package/dist/components/{p-7b93a385.entry.js → p-6ffe581c.entry.js} +1 -1
  297. package/dist/components/p-726637b1.entry.js +1 -0
  298. package/dist/components/{p-a63e14bb.entry.js → p-86ccc09f.entry.js} +1 -1
  299. package/dist/components/{p-c2fc62f7.entry.js → p-8755a21b.entry.js} +1 -1
  300. package/dist/components/{p-0d7aee0b.entry.js → p-8ab461e2.entry.js} +1 -1
  301. package/dist/components/p-8cb162b8.entry.js +1 -0
  302. package/dist/components/p-8cdbc280.entry.js +1 -0
  303. package/dist/components/{p-940a2d42.entry.js → p-8e034c4e.entry.js} +1 -1
  304. package/dist/components/p-9f649fa3.entry.js +1 -0
  305. package/dist/components/{p-d1b3aa52.entry.js → p-a26dad9b.entry.js} +1 -1
  306. package/dist/components/p-a2d6a9ca.entry.js +1 -0
  307. package/dist/components/p-afabe1be.entry.js +1 -0
  308. package/dist/components/{p-c46675c8.entry.js → p-b1519098.entry.js} +1 -1
  309. package/dist/components/{p-04e9c2d7.entry.js → p-b1a10842.entry.js} +1 -1
  310. package/dist/components/{p-7aa4edef.entry.js → p-b4023b45.entry.js} +1 -1
  311. package/dist/components/p-c53b3563.entry.js +1 -0
  312. package/dist/components/p-c7d612d1.entry.js +1 -0
  313. package/dist/components/p-dc9aef22.entry.js +1 -0
  314. package/dist/components/{p-f364296f.entry.js → p-f66a7cf9.entry.js} +1 -1
  315. package/dist/components/p-f97f62f2.entry.js +1 -0
  316. package/dist/components/primary.js +1 -1
  317. package/dist/components/primary2.js +1 -1
  318. package/dist/components/secondary.js +1 -1
  319. package/dist/components/secondary2.js +7 -7
  320. package/dist/components/support.js +1 -1
  321. package/dist/components/support2.js +3 -3
  322. package/dist/components/svg-repository.js +19 -25
  323. package/dist/components/token-list2.js +1 -1
  324. package/dist/components/token-radii2.js +1 -1
  325. package/dist/components/token-ratios.js +1 -1
  326. package/dist/components/token-shadows2.js +1 -1
  327. package/dist/components/token-spacing.js +1 -1
  328. package/dist/components/token-typography.js +8 -2
  329. package/dist/esm/color-primary-palette_6.entry.js +14 -14
  330. package/dist/esm/components-section.entry.js +1 -1
  331. package/dist/esm/components.js +1 -1
  332. package/dist/esm/correct-use-of-colors.entry.js +1 -1
  333. package/dist/esm/docs-palettes.entry.js +1 -1
  334. package/dist/esm/docs-tokens.entry.js +1 -1
  335. package/dist/esm/{eds-accordion_52.entry.js → eds-accordion_53.entry.js} +1094 -336
  336. package/dist/esm/eds-app-root.entry.js +1 -1
  337. package/dist/esm/eds-cookies-preference.entry.js +1 -1
  338. package/dist/esm/eds-feedback.entry.js +1 -1
  339. package/dist/esm/eds-frame.entry.js +1 -1
  340. package/dist/esm/eds-gauge.entry.js +1 -1
  341. package/dist/esm/eds-gitlab-contributors.entry.js +35 -32
  342. package/dist/esm/eds-icon-bluesky.entry.js +1 -1
  343. package/dist/esm/eds-icon-eu.entry.js +1 -1
  344. package/dist/esm/eds-icon-facebook.entry.js +1 -1
  345. package/dist/esm/eds-icon-gitlab.entry.js +1 -1
  346. package/dist/esm/eds-icon-linkedin.entry.js +1 -1
  347. package/dist/esm/eds-icon-mastodon.entry.js +1 -1
  348. package/dist/esm/eds-icon-twitter.entry.js +1 -1
  349. package/dist/esm/eds-icon-youtube.entry.js +1 -1
  350. package/dist/{components/eds-input-search2.js → esm/eds-input-search.entry.js} +9 -39
  351. package/dist/esm/eds-modal.entry.js +18 -9
  352. package/dist/esm/eds-pie.entry.js +2 -2
  353. package/dist/esm/eds-section-core_2.entry.js +3 -3
  354. package/dist/esm/eds-timeline.entry.js +1 -1
  355. package/dist/esm/eds-toast-manager.entry.js +1 -1
  356. package/dist/esm/eds-trl-badge.entry.js +180 -0
  357. package/dist/esm/incorrect-use-of-colors.entry.js +1 -1
  358. package/dist/esm/index-870ab08f.js +10 -2
  359. package/dist/esm/loader.js +1 -1
  360. package/dist/esm/logo-space.entry.js +58 -1
  361. package/dist/esm/logo-variations-horizontal_2.entry.js +2 -2
  362. package/dist/esm/logo-variations-tabs.entry.js +1 -1
  363. package/dist/esm/logo-wrong-usage.entry.js +1 -1
  364. package/dist/esm/svg-repository.entry.js +1 -1
  365. package/dist/esm/token-list_3.entry.js +3 -3
  366. package/dist/esm/token-ratios.entry.js +1 -1
  367. package/dist/esm/token-spacing.entry.js +1 -1
  368. package/dist/esm/token-typography.entry.js +8 -2
  369. package/dist/hydrate/index.js +1616 -397
  370. package/dist/hydrate/index.mjs +1616 -397
  371. package/dist/types/components/eds-accordion/eds-accordion.stories.d.ts +4 -8
  372. package/dist/types/components/eds-alert/eds-alert.stories.d.ts +7 -73
  373. package/dist/types/components/eds-button/eds-button.d.ts +1 -1
  374. package/dist/types/components/eds-dropdown/eds-dropdown.d.ts +1 -0
  375. package/dist/types/components/eds-footer/eds-footer.d.ts +84 -55
  376. package/dist/types/components/eds-footer/eds-footer.stories.d.ts +62 -1
  377. package/dist/types/components/eds-form/eds-form.d.ts +66 -0
  378. package/dist/types/components/eds-form/eds-form.stories.d.ts +63 -0
  379. package/dist/types/components/eds-header/eds-header.stories.d.ts +6 -6
  380. package/dist/types/components/eds-icon-wrapper/eds-icon-wrapper.d.ts +8 -0
  381. package/dist/types/components/eds-img/eds-img.stories.d.ts +6 -20
  382. package/dist/types/components/eds-input-elements/eds-input/eds-input.d.ts +7 -0
  383. package/dist/types/components/eds-input-elements/eds-input-search/eds-input-search.stories.d.ts +36 -0
  384. package/dist/types/components/eds-input-field/eds-input-field.stories.d.ts +97 -38
  385. package/dist/types/components/eds-link/eds-link.stories.d.ts +9 -6
  386. package/dist/types/components/eds-logo/eds-logo.d.ts +11 -28
  387. package/dist/types/components/eds-logo/eds-logo.stories.d.ts +22 -2
  388. package/dist/types/components/eds-steps/eds-steps.d.ts +7 -0
  389. package/dist/types/components/eds-steps-v2/eds-steps-v2.d.ts +14 -1
  390. package/dist/types/components/eds-steps-v2/eds-steps-v2.stories.d.ts +40 -9
  391. package/dist/types/components/eds-switch/eds-switch.d.ts +6 -2
  392. package/dist/types/components/eds-switch/eds-switch.stories.d.ts +8 -0
  393. package/dist/types/components/eds-table/eds-table.d.ts +8 -14
  394. package/dist/types/components/eds-table/eds-table.stories.d.ts +0 -107
  395. package/dist/types/components/eds-tabs/eds-tabs.d.ts +10 -0
  396. package/dist/types/components/eds-toast/eds-toast.d.ts +33 -1
  397. package/dist/types/components/eds-toast/eds-toast.stories.d.ts +49 -1
  398. package/dist/types/components/eds-user/eds-user.d.ts +0 -2
  399. package/dist/types/components/eds-user/eds-user.stories.d.ts +5 -9
  400. package/dist/types/components.d.ts +715 -144
  401. package/dist/types/shared-ui/eds-global-search/eds-global-search.d.ts +12 -0
  402. package/dist/types/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.d.ts +60 -0
  403. package/dist/types/shared-ui/eds-search-select/eds-search-select.d.ts +98 -0
  404. package/dist/types/shared-ui/eds-search-select/eds-search-select.stories.d.ts +81 -0
  405. package/dist/types/shared-ui/eds-trl-badge/ebrains-mark.d.ts +7 -0
  406. package/dist/types/shared-ui/eds-trl-badge/eds-trl-badge.d.ts +54 -0
  407. package/dist/types/shared-ui/eds-trl-badge/eds-trl-badge.stories.d.ts +112 -0
  408. package/dist/types/utils/eds-form/safeFormat.d.ts +21 -0
  409. package/package.json +1 -1
  410. package/dist/components/p-0fe10e6c.entry.js +0 -1
  411. package/dist/components/p-18e852e1.entry.js +0 -1
  412. package/dist/components/p-3ccd6948.entry.js +0 -1
  413. package/dist/components/p-3d3841d6.entry.js +0 -1
  414. package/dist/components/p-3f38df99.entry.js +0 -1
  415. package/dist/components/p-527e71d0.entry.js +0 -1
  416. package/dist/components/p-55047f7f.entry.js +0 -9
  417. package/dist/components/p-64c23098.entry.js +0 -1
  418. package/dist/components/p-74b9c9a8.entry.js +0 -1
  419. package/dist/components/p-878f65a6.entry.js +0 -1
  420. package/dist/components/p-92f6d9c0.entry.js +0 -1
  421. package/dist/components/p-9eedf771.entry.js +0 -1
  422. package/dist/components/p-b4355cec.entry.js +0 -1
  423. package/dist/components/p-d2f17fac.entry.js +0 -1
  424. package/dist/components/p-db5eea95.entry.js +0 -1
  425. package/dist/components/p-e205c269.entry.js +0 -1
  426. package/dist/components/p-f55dd314.entry.js +0 -1
  427. package/dist/components/p-f88b5f21.entry.js +0 -1
@@ -1,37 +1,123 @@
1
1
  import { h } from "@stencil/core";
2
2
  /**
3
- * `EdsFooter` is a footer component designed for the EBRAINS platform, featuring social links,
4
- * legal information, and an optional cookie preferences button. It includes a "Back to top"
5
- * button and displays an acknowledgment for Horizon Europe funding.
3
+ * EBRAINS-wide default link columns. Used when a consumer doesn't pass
4
+ * the `columns` prop. URLs are absolute so the same footer renders
5
+ * correctly from any app's domain (handbook.ebrains.eu, forms.ebrains.eu,
6
+ * design.ebrains.eu, …) — the previous eds-docs design used relative
7
+ * paths which only worked from design.ebrains.eu itself.
6
8
  *
7
- * Key Features:
8
- * - Social Network Links: Optionally display a section for social media links.
9
- * - Legal and Funding Information: Includes text for legal disclaimers and funding acknowledgments.
10
- * - Cookie Preferences: Optionally display a "Cookies Preferences" button.
11
- * - Back to Top Button: Smoothly scrolls the page back to the top when clicked.
9
+ * If EBRAINS adds / renames a canonical resource, change it here once
10
+ * and every consumer's footer updates on the next component release.
11
+ */
12
+ const DEFAULT_COLUMNS = [
13
+ {
14
+ heading: 'Resources',
15
+ links: [
16
+ { label: 'Documentation', href: 'https://design.ebrains.eu/get-started/', external: true },
17
+ { label: 'Components', href: 'https://design.ebrains.eu/ui-components/', external: true },
18
+ { label: 'Foundations', href: 'https://design.ebrains.eu/foundations/', external: true },
19
+ { label: 'Analytics', href: 'https://design.ebrains.eu/analytics/', external: true }
20
+ ]
21
+ },
22
+ {
23
+ heading: 'Community',
24
+ links: [
25
+ { label: 'GitLab', href: 'https://gitlab.ebrains.eu/ri/tech-hub/ebrains-ui-ecosystem/', external: true },
26
+ { label: 'Storybook', href: 'https://storybook.design.ebrains.eu', external: true },
27
+ {
28
+ label: 'Report Issues',
29
+ href: 'https://gitlab.ebrains.eu/ri/tech-hub/ebrains-ui-ecosystem/-/issues',
30
+ external: true
31
+ },
32
+ { label: 'Contribute', href: 'https://design.ebrains.eu/get-started/contributing/', external: true }
33
+ ]
34
+ },
35
+ {
36
+ heading: 'Legal',
37
+ links: [{ label: 'MIT License' }, { label: 'Cookie Preferences', action: 'cookies' }]
38
+ }
39
+ ];
40
+ /**
41
+ * `EdsFooter` is the EBRAINS-wide footer component.
42
+ *
43
+ * Renders a 4-column layout matching the eds-docs landing footer:
44
+ * [ Brand (EU flag + funding text + copyright) | Resources | Community | Legal ]
45
+ *
46
+ * Defaults are designed so a consumer that writes `<eds-footer></eds-footer>`
47
+ * with no props gets the full canonical EBRAINS footer rendered — same
48
+ * brand block, same link columns, same dark theme as the eds-docs
49
+ * landing page. The previous minimal-strip footer is replaced; consumers
50
+ * that need different link content pass the `columns` prop (array or
51
+ * JSON-stringified array for HTML attribute use).
12
52
  *
13
- * This component is ideal for maintaining consistent branding, legal disclaimers, and navigational elements
14
- * across the EBRAINS platform, with options for social links and a "Back to top" button.
53
+ * Configurability without breakage:
54
+ * - All previous props remain (`social`, `variant`, `fundedBy`,
55
+ * `rightsReserved`, `enableScrollTop`, `enableCookiesSettings`,
56
+ * `cookiesPreferences`, `backToTopAriaLabel`). Their meanings are
57
+ * preserved.
58
+ * - New `columns` prop is optional — omit it for the defaults.
59
+ * - The `enableCookiesSettings` toggle now decides whether any column
60
+ * link with `action: 'cookies'` is rendered (default false; pass
61
+ * true to surface the Cookie Preferences entry in the Legal column).
15
62
  */
16
63
  export class EdsFooter {
17
64
  constructor() {
18
- /**
19
- * Scrolls the page smoothly back to the top.
20
- * Called when the "Back to top" button is clicked.
21
- * @private
22
- */
23
65
  this.backToTop = () => {
24
66
  window.scrollTo({ top: 0, behavior: 'smooth' });
25
67
  };
68
+ this.emitCookies = () => {
69
+ this.cookies.emit('toggle');
70
+ };
26
71
  this.social = false;
27
- this.variant = 'default';
72
+ this.variant = 'inverse';
28
73
  this.enableScrollTop = false;
29
74
  this.fundedBy = 'EBRAINS is funded by the Horizon Europe Framework Programme.';
30
75
  this.rightsReserved = `${new Date().getFullYear()} EBRAINS. All rights reserved.`;
31
- this.cookiesPreferences = 'Cookies preferences';
76
+ this.cookiesPreferences = 'Cookie Preferences';
32
77
  this.enableCookiesSettings = false;
33
78
  this.backToTopAriaLabel = 'Back to Top';
34
- this.showMatomoNotice = false;
79
+ this.columns = undefined;
80
+ this.resolvedColumns = DEFAULT_COLUMNS;
81
+ }
82
+ componentWillLoad() {
83
+ this.resolvedColumns = this.parseColumns(this.columns);
84
+ }
85
+ onColumnsChange(value) {
86
+ this.resolvedColumns = this.parseColumns(value);
87
+ }
88
+ /**
89
+ * Resolve the `columns` prop to a usable array.
90
+ * - undefined / null → defaults
91
+ * - JSON-parseable str → parsed array
92
+ * - already an array → used as-is
93
+ * - anything else (malformed JSON, wrong shape) → defaults + console warning
94
+ *
95
+ * Defensive parsing so a typo in a Hugo template's attribute doesn't
96
+ * render an empty footer in production. Failure logs a warning but
97
+ * keeps the footer working with sensible defaults.
98
+ */
99
+ parseColumns(value) {
100
+ if (value === undefined || value === null || value === '') {
101
+ return DEFAULT_COLUMNS;
102
+ }
103
+ if (Array.isArray(value)) {
104
+ return value;
105
+ }
106
+ if (typeof value === 'string') {
107
+ try {
108
+ const parsed = JSON.parse(value);
109
+ if (Array.isArray(parsed)) {
110
+ return parsed;
111
+ }
112
+ console.warn('eds-footer: `columns` JSON parsed but is not an array; using defaults');
113
+ return DEFAULT_COLUMNS;
114
+ }
115
+ catch (e) {
116
+ console.warn('eds-footer: failed to parse `columns` JSON, using defaults', e);
117
+ return DEFAULT_COLUMNS;
118
+ }
119
+ }
120
+ return DEFAULT_COLUMNS;
35
121
  }
36
122
  componentDidLoad() {
37
123
  var _a;
@@ -50,24 +136,35 @@ export class EdsFooter {
50
136
  btn.setAttribute('tabindex', shouldShow ? '0' : '-1');
51
137
  }
52
138
  }
53
- toggleCookiesConsent() {
54
- this.cookies.emit('toggle');
55
- }
56
139
  /**
57
- * Renders the footer component with optional sections and elements,
58
- * including social network links, a Horizon Europe funding acknowledgment, and
59
- * legal links such as "Cookies Preferences" and copyright information.
140
+ * Render one link inside a column.
141
+ * - `action: 'cookies'` button-like anchor that fires the cookies event
142
+ * - `href` present → real anchor (target=_blank when `external`)
143
+ * - neither → plain text span (e.g. "MIT License")
60
144
  */
145
+ renderLink(link, index) {
146
+ if (link.action === 'cookies') {
147
+ if (!this.enableCookiesSettings) {
148
+ return null;
149
+ }
150
+ return (h("li", { key: `cookies-${index}` }, h("a", { href: "javascript:void(0)", class: "footer-link", onClick: this.emitCookies, role: "button" }, this.cookiesPreferences || link.label)));
151
+ }
152
+ if (link.href) {
153
+ const external = link.external === true;
154
+ return (h("li", { key: `${link.label}-${index}` }, h("a", Object.assign({ class: "footer-link", href: link.href }, (external ? { target: '_blank', rel: 'noopener noreferrer' } : {})), link.label)));
155
+ }
156
+ return (h("li", { key: `text-${index}` }, h("span", { class: "footer-text-item" }, link.label)));
157
+ }
61
158
  render() {
62
159
  const year = new Date().getFullYear();
63
160
  const rights = this.rightsReserved || `${year} EBRAINS. All rights reserved.`;
64
161
  const isInverse = this.variant === 'inverse';
65
- const footerClasses = isInverse ? 'bg-strongest text-inverse' : '';
66
- const borderClasses = isInverse ? 'border-inverse-softer' : 'border-softest';
67
- const textClasses = isInverse ? 'text-inverse' : 'text-default';
68
- return (h("footer", { key: 'ffe47afda9981e367f24d2525a5b21e96f4f3d10', class: footerClasses }, this.social ? (h("div", { class: `${borderClasses} border-t-2 pt-20 md:pt-28` }, h("div", { class: "container pb-20" }, h("div", { class: "grid-layout" }, h("div", { class: "grid-col-span-12 lg:grid-col-span-5" }, h("eds-social-networks", { class: "mt-28", variant: this.variant })))))) : null, h("div", { key: '2e884f06ca55ea5837aabfd7d726a79b72365ab3', class: `${borderClasses} ${this.social ? 'border-t-2' : ''} pb-28 pt-20 md:pt-28` }, h("div", { key: 'f601602dd39c564ce77d978325cbacaa752bd5f0', class: "container flex items-center gap-20 lg:flex-nowrap" }, h("div", { key: '94d6bf12bca8a37560124de2a9114a4566494883', class: "flex items-center gap-x-12" }, h("a", { key: '8c9bf0a41cce7e043311b39c6418d2dc3541694f', target: "_blank", rel: "noopener noreferrer", class: "effect-focus focus-visible:rounded-xs flex w-[54px] ml-0", href: "https://research-and-innovation.ec.europa.eu/funding/funding-opportunities/funding-programmes-and-open-calls/horizon-europe_en", "aria-label": "Learn about Horizon Europe funding" }, h("svg", { key: '5d0c96911aa0069dd7c0ef6a5690d5ac59dbc737', class: "h-auto w-full", width: "63", height: "50", viewBox: "0 0 640 480", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'bab3fd3f37857e99c2a525b7a9553d4c706d247c', d: "M0 0h640v480H0V0z", fill: "#039" }), h("path", { key: 'e77d6f1fc21f36083196adcb4f6b7a3e70105b0f', d: "M325.032 93.15l17.513-.398-14.401 9.972 5.789 16.53L320 108.639l-13.933 10.615 5.789-16.531-14.399-9.97 17.51.396L320 76.374l5.032 16.775zm0 284.444l17.513-.398-14.401 9.972 5.789 16.53L320 393.083l-13.933 10.615 5.789-16.531-14.399-9.97 17.51.397L320 360.818l5.032 16.776zm-147.25-158.983l5.029 16.761 17.511-.397-14.4 9.969 5.79 16.533-13.933-10.616-13.932 10.616 5.788-16.531-14.401-9.971 17.511.397 5.028-16.761.004-.015.001.003.001-.003.003.015zm77.885-105.334l17.511-.397-14.401 9.971 5.79 16.531-13.932-10.614-13.933 10.615 5.788-16.531-14.4-9.971h.005l-.003-.001 17.51.397 5.033-16.775 5.032 16.775zm-52.729 52.729l17.511-.398h.002l-14.402 9.971 5.79 16.531-13.933-10.615-13.932 10.615 5.789-16.532-14.4-9.97 17.51.397 5.033-16.776 5.032 16.777zm-5.001 125.803l5.027 16.759 17.513-.397-14.401 9.971 5.79 16.531-.005-.005.003.006-13.932-10.615-13.933 10.615 5.788-16.532-14.398-9.97 17.51.396 5.029-16.759.004-.016v.003l.002-.003.003.016zm51.445 47.71l5.027 16.76 17.513-.397-14.401 9.97 5.791 16.532-.004-.004.002.004-13.933-10.615-13.933 10.615 5.788-16.532-14.398-9.97 17.51.397 5.029-16.76.004-.016v.003l.002-.003.003.016zm217.873-104.147l17.511-.397-14.401 9.969 5.79 16.533-13.934-10.616-13.931 10.616 5.789-16.533-14.399-9.969 17.509.397 5.034-16.776 5.032 16.776zm-63.958-95.997l-5.786-16.522 14.401-9.972-17.511.398-5.033-16.778-5.034 16.777-17.51-.398 14.4 9.972-5.789 16.53 13.932-10.614 13.934 10.614-.004-.007zm38.797 42.122l13.934 10.614-.004-.007-5.787-16.524 14.401-9.971-17.51.399-5.033-16.778-5.033 16.777-17.51-.398h-.001l14.399 9.972-5.787 16.529 13.931-10.613zm5.007 127.071l17.51-.397-14.4 9.971 5.79 16.531-13.933-10.614-13.932 10.615 5.788-16.531-14.401-9.971h.005l-.003-.001 17.51.397 5.033-16.775 5.033 16.775zm-51.446 47.711l17.511-.397-14.4 9.97 5.79 16.532-13.933-10.615-13.933 10.615 5.789-16.531-14.401-9.971h.002l17.51.397 5.033-16.776 5.032 16.776z", fill: "#FC0" })))), h("div", { key: '3057a627d8cc6e524f6381f21bb34b549d45021f' }, h("div", { key: 'd6397eaa434f15d415bff0c5171b4f71295dabc3', class: `f-ui-02 ${textClasses}` }, h("p", { key: 'cc9e370cd5b4238fcd76bc8f1f84c54af2873bab' }, this.fundedBy), h("div", { key: '9af9a16cf3cc6fc4223c1b5eac13f96894b92962', class: "mt-4 flex flex-wrap gap-12 lg:flex-nowrap inline-block" }, h("span", { key: 'e86c83c7504f60831dc9d4239b3e2b551b2765b6', class: "effect-focus !no-underline decoration-2 underline-offset-4 hover:!underline mr-4" }, "\u00A9 ", rights), this.enableCookiesSettings ? (h("eds-link", { label: this.cookiesPreferences, intent: "underline", size: "small", onClick: () => {
69
- this.toggleCookiesConsent();
70
- } })) : null))), h("div", { key: 'd2dcb8a3a99c5aa368d6d710e125e3a9f8fefd25', class: "ml-auto pl-12" }, this.enableScrollTop ? (h("div", { id: "toTop", class: "transition-all transition duration-75 opacity-0" }, h("eds-button", { id: "backToTop", "aria-label": this.backToTopAriaLabel, intent: isInverse ? 'ghostInverse' : 'ghost', size: "large", icon: "chevron-up", onClick: this.backToTop, tabindex: "-1" }))) : null)))));
162
+ // Class hooks driven by variant the CSS file styles each
163
+ // selector independently rather than relying on prop-based
164
+ // inline styles, so theme tokens stay overridable from outside
165
+ // via the host's CSS custom properties.
166
+ const rootClasses = ['eds-footer-root', isInverse ? 'theme-inverse' : 'theme-default'].join(' ');
167
+ return (h("footer", { key: 'e7d7584fcd2dcfd2e4e469c5e9e2621f010036fe', class: rootClasses }, this.social ? (h("div", { class: "footer-social" }, h("div", { class: "footer-container" }, h("eds-social-networks", { variant: this.variant })))) : null, h("div", { key: '4233c2f5665ff8fd49f1949ef450b87149f1d9ba', class: "footer-container" }, h("div", { key: '6a90c75dc5a099727e58fb21c706e7d310c2e58f', class: "footer-grid" }, h("div", { key: '450704c6200bf603a296c383872eecdf4ef94fd9', class: "footer-brand" }, h("div", { key: '380ba7f532a8f94627e206e33480be697861dc57', class: "footer-brand-row" }, h("a", { key: '2cbc262b8630d7106b1ff4c9b9e97f7421df05bd', target: "_blank", rel: "noopener noreferrer", class: "footer-flag-link", href: "https://research-and-innovation.ec.europa.eu/funding/funding-opportunities/funding-programmes-and-open-calls/horizon-europe_en", "aria-label": "Learn about Horizon Europe funding" }, h("svg", { key: 'a1374ae892acdd10d5294e3197e9b37e8adb7b38', class: "footer-flag-svg", width: "63", height: "50", viewBox: "0 0 640 480", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '11b83b7931271e829803de01822a6618e66c8b17', d: "M0 0h640v480H0V0z", fill: "#039" }), h("path", { key: '2e5b724042df62f59964709ec2e6954767690805', d: "M325.032 93.15l17.513-.398-14.401 9.972 5.789 16.53L320 108.639l-13.933 10.615 5.789-16.531-14.399-9.97 17.51.396L320 76.374l5.032 16.775zm0 284.444l17.513-.398-14.401 9.972 5.789 16.53L320 393.083l-13.933 10.615 5.789-16.531-14.399-9.97 17.51.397L320 360.818l5.032 16.776zm-147.25-158.983l5.029 16.761 17.511-.397-14.4 9.969 5.79 16.533-13.933-10.616-13.932 10.616 5.788-16.531-14.401-9.971 17.511.397 5.028-16.761.004-.015.001.003.001-.003.003.015zm77.885-105.334l17.511-.397-14.401 9.971 5.79 16.531-13.932-10.614-13.933 10.615 5.788-16.531-14.4-9.971h.005l-.003-.001 17.51.397 5.033-16.775 5.032 16.775zm-52.729 52.729l17.511-.398h.002l-14.402 9.971 5.79 16.531-13.933-10.615-13.932 10.615 5.789-16.532-14.4-9.97 17.51.397 5.033-16.776 5.032 16.777zm-5.001 125.803l5.027 16.759 17.513-.397-14.401 9.971 5.79 16.531-.005-.005.003.006-13.932-10.615-13.933 10.615 5.788-16.532-14.398-9.97 17.51.396 5.029-16.759.004-.016v.003l.002-.003.003.016zm51.445 47.71l5.027 16.76 17.513-.397-14.401 9.97 5.791 16.532-.004-.004.002.004-13.933-10.615-13.933 10.615 5.788-16.532-14.398-9.97 17.51.397 5.029-16.76.004-.016v.003l.002-.003.003.016zm217.873-104.147l17.511-.397-14.401 9.969 5.79 16.533-13.934-10.616-13.931 10.616 5.789-16.533-14.399-9.969 17.509.397 5.034-16.776 5.032 16.776zm-63.958-95.997l-5.786-16.522 14.401-9.972-17.511.398-5.033-16.778-5.034 16.777-17.51-.398 14.4 9.972-5.789 16.53 13.932-10.614 13.934 10.614-.004-.007zm38.797 42.122l13.934 10.614-.004-.007-5.787-16.524 14.401-9.971-17.51.399-5.033-16.778-5.033 16.777-17.51-.398h-.001l14.399 9.972-5.787 16.529 13.931-10.613zm5.007 127.071l17.51-.397-14.4 9.971 5.79 16.531-13.933-10.614-13.932 10.615 5.788-16.531-14.401-9.971h.005l-.003-.001 17.51.397 5.033-16.775 5.033 16.775zm-51.446 47.711l17.511-.397-14.4 9.97 5.79 16.532-13.933-10.615-13.933 10.615 5.789-16.531-14.401-9.971h.002l17.51.397 5.033-16.776 5.032 16.776z", fill: "#FC0" }))), h("p", { key: '20e15f10baf1ddf47bc35e4d339a8efaf4b4bb49', class: "footer-funded" }, this.fundedBy)), h("p", { key: '126e04d4a993422b5554fb87dfb9b388e8d2a4af', class: "footer-copyright" }, "\u00A9 ", rights)), this.resolvedColumns.map((col, ci) => (h("div", { class: "footer-column", key: `col-${ci}` }, h("h4", { class: "footer-column-heading" }, col.heading), h("ul", { class: "footer-column-list" }, (col.links || []).map((link, li) => this.renderLink(link, li)))))))), this.enableScrollTop ? (h("div", { id: "toTop", class: "footer-back-to-top" }, h("eds-button", { id: "backToTop", "aria-label": this.backToTopAriaLabel, intent: isInverse ? 'ghostInverse' : 'ghost', size: "large", icon: "chevron-up", onClick: this.backToTop, tabindex: "-1" }))) : null));
71
168
  }
72
169
  static get is() { return "eds-footer"; }
73
170
  static get encapsulation() { return "shadow"; }
@@ -94,11 +191,8 @@ export class EdsFooter {
94
191
  "required": false,
95
192
  "optional": false,
96
193
  "docs": {
97
- "tags": [{
98
- "name": "type",
99
- "text": "{boolean}"
100
- }],
101
- "text": "Determines if the social network section should be displayed.\nAdds top padding when true."
194
+ "tags": [],
195
+ "text": "Show the eds-social-networks section above the main grid."
102
196
  },
103
197
  "attribute": "social",
104
198
  "reflect": false,
@@ -115,15 +209,12 @@ export class EdsFooter {
115
209
  "required": false,
116
210
  "optional": false,
117
211
  "docs": {
118
- "tags": [{
119
- "name": "type",
120
- "text": "{'default' | 'inverse'}"
121
- }],
122
- "text": "Controls the visual variant of the footer.\n- 'default': Light background with dark text\n- 'inverse': Dark/black background with white text"
212
+ "tags": [],
213
+ "text": "Theme variant. Defaults to `inverse` (dark) because the canonical\nEBRAINS footer design uses a dark backdrop with light text. Pass\n`variant=\"default\"` for the light-on-light treatment if an app's\npage palette demands it."
123
214
  },
124
215
  "attribute": "variant",
125
- "reflect": false,
126
- "defaultValue": "'default'"
216
+ "reflect": true,
217
+ "defaultValue": "'inverse'"
127
218
  },
128
219
  "enableScrollTop": {
129
220
  "type": "boolean",
@@ -136,11 +227,8 @@ export class EdsFooter {
136
227
  "required": false,
137
228
  "optional": false,
138
229
  "docs": {
139
- "tags": [{
140
- "name": "type",
141
- "text": "{boolean}"
142
- }],
143
- "text": "Controls the display of the \"Back to Top\" button.\nWhen true, the button appears in the footer."
230
+ "tags": [],
231
+ "text": "Float a \"Back to top\" button at the top-right of the footer."
144
232
  },
145
233
  "attribute": "enable-scroll-top",
146
234
  "reflect": false,
@@ -157,11 +245,8 @@ export class EdsFooter {
157
245
  "required": false,
158
246
  "optional": false,
159
247
  "docs": {
160
- "tags": [{
161
- "name": "type",
162
- "text": "{string}"
163
- }],
164
- "text": "Controls the display of the \"Founded By\" text."
248
+ "tags": [],
249
+ "text": "\"EBRAINS is funded by\u2026\" line shown next to the EU flag in the brand column."
165
250
  },
166
251
  "attribute": "funded-by",
167
252
  "reflect": false,
@@ -178,11 +263,8 @@ export class EdsFooter {
178
263
  "required": false,
179
264
  "optional": false,
180
265
  "docs": {
181
- "tags": [{
182
- "name": "type",
183
- "text": "{string}"
184
- }],
185
- "text": "Controls the display of the \"Rights Reserved\" text."
266
+ "tags": [],
267
+ "text": "\"\u00A9 {year} EBRAINS. All rights reserved.\" line shown below the funding text."
186
268
  },
187
269
  "attribute": "rights-reserved",
188
270
  "reflect": false,
@@ -199,15 +281,12 @@ export class EdsFooter {
199
281
  "required": false,
200
282
  "optional": false,
201
283
  "docs": {
202
- "tags": [{
203
- "name": "type",
204
- "text": "{string}"
205
- }],
206
- "text": "Controls the display of the \"Cookies preferences\" text."
284
+ "tags": [],
285
+ "text": "Label used for any link with `action: 'cookies'` \u2014 overrides the column's `label`."
207
286
  },
208
287
  "attribute": "cookies-preferences",
209
288
  "reflect": false,
210
- "defaultValue": "'Cookies preferences'"
289
+ "defaultValue": "'Cookie Preferences'"
211
290
  },
212
291
  "enableCookiesSettings": {
213
292
  "type": "boolean",
@@ -220,11 +299,8 @@ export class EdsFooter {
220
299
  "required": false,
221
300
  "optional": false,
222
301
  "docs": {
223
- "tags": [{
224
- "name": "type",
225
- "text": "{string}"
226
- }],
227
- "text": "Controls the display of the \"Cookies preferences\" link."
302
+ "tags": [],
303
+ "text": "When false, any column link with `action: 'cookies'` is hidden.\nDefault false so adding the footer to a page without a Matomo\nnotice / cookie banner doesn't surface a non-functional link.\nSet true once you've also mounted `<eds-matomo-notice>` on the page."
228
304
  },
229
305
  "attribute": "enable-cookies-settings",
230
306
  "reflect": false,
@@ -241,21 +317,41 @@ export class EdsFooter {
241
317
  "required": false,
242
318
  "optional": false,
243
319
  "docs": {
244
- "tags": [{
245
- "name": "type",
246
- "text": "{string}"
247
- }],
248
- "text": "Controls the display of the \"Back to Top\" aria label text."
320
+ "tags": [],
321
+ "text": "ARIA label for the \"Back to top\" floating button."
249
322
  },
250
323
  "attribute": "back-to-top-aria-label",
251
324
  "reflect": false,
252
325
  "defaultValue": "'Back to Top'"
326
+ },
327
+ "columns": {
328
+ "type": "string",
329
+ "mutable": false,
330
+ "complexType": {
331
+ "original": "EdsFooterColumn[] | string",
332
+ "resolved": "EdsFooterColumn[] | string",
333
+ "references": {
334
+ "EdsFooterColumn": {
335
+ "location": "local",
336
+ "path": "/Users/nikolaosgeorgomanolis/Documents/EBRAINS/Projects/ebrains-ui-ecosystem/packages/components/src/components/eds-footer/eds-footer.tsx",
337
+ "id": "../../../packages/components/src/components/eds-footer/eds-footer.tsx::EdsFooterColumn"
338
+ }
339
+ }
340
+ },
341
+ "required": false,
342
+ "optional": true,
343
+ "docs": {
344
+ "tags": [],
345
+ "text": "Custom link columns. Accepts an array (Vue/React/JS bindings) OR\na JSON-stringified array (HTML attribute use). When omitted, the\ncanonical EBRAINS-wide columns above are used.\n\nShape: see EdsFooterColumn / EdsFooterLink at the top of this file."
346
+ },
347
+ "attribute": "columns",
348
+ "reflect": false
253
349
  }
254
350
  };
255
351
  }
256
352
  static get states() {
257
353
  return {
258
- "showMatomoNotice": {}
354
+ "resolvedColumns": {}
259
355
  };
260
356
  }
261
357
  static get events() {
@@ -277,6 +373,12 @@ export class EdsFooter {
277
373
  }];
278
374
  }
279
375
  static get elementRef() { return "el"; }
376
+ static get watchers() {
377
+ return [{
378
+ "propName": "columns",
379
+ "methodName": "onColumnsChange"
380
+ }];
381
+ }
280
382
  static get listeners() {
281
383
  return [{
282
384
  "name": "scroll",
@@ -1,57 +1,122 @@
1
+ // Sensible sample for the `columns` control — used as the default
2
+ // value of the CustomColumns story so the JSON editor in Storybook
3
+ // opens with something realistic to mutate rather than `null`. The
4
+ // canonical EBRAINS defaults baked into the component differ from
5
+ // this on purpose: leaving the control empty (null) demonstrates the
6
+ // "no overrides" path; this sample demonstrates the override path.
7
+ const SAMPLE_COLUMNS = [
8
+ {
9
+ heading: 'Product',
10
+ links: [
11
+ { label: 'Home', href: '/' },
12
+ { label: 'Pricing', href: '/pricing' },
13
+ { label: 'Docs', href: '/docs' }
14
+ ]
15
+ },
16
+ {
17
+ heading: 'Company',
18
+ links: [
19
+ { label: 'About', href: '/about' },
20
+ { label: 'Blog', href: 'https://example.com/blog', external: true },
21
+ { label: 'Careers', href: '/careers' }
22
+ ]
23
+ },
24
+ {
25
+ heading: 'Legal',
26
+ links: [
27
+ { label: 'Privacy', href: '/privacy' },
28
+ { label: 'Terms', href: '/terms' },
29
+ { label: 'Cookie Preferences', action: 'cookies' }
30
+ ]
31
+ }
32
+ ];
1
33
  export default {
2
34
  title: 'Components/Footer',
3
35
  component: 'eds-footer',
4
36
  argTypes: {
37
+ variant: {
38
+ control: 'select',
39
+ options: ['default', 'inverse'],
40
+ description: 'Theme. Default is `inverse` (dark) — the canonical EBRAINS footer.'
41
+ },
5
42
  social: {
6
43
  control: 'boolean',
7
- description: 'Controls if the social section is displayed'
44
+ description: 'Show the social-networks section above the main grid'
8
45
  },
9
46
  fundedBy: {
10
47
  control: 'text',
11
- description: 'Control for the funded by text'
48
+ description: 'Text shown next to the EU flag in the brand column'
12
49
  },
13
50
  rightsReserved: {
14
51
  control: 'text',
15
- description: 'Control for the rights reserved text'
52
+ description: 'Text shown after the © symbol below the funding line'
16
53
  },
17
54
  enableScrollTop: {
18
55
  control: 'boolean',
19
- description: 'Scroll to top button'
56
+ description: 'Float a "Back to top" button at the top-right of the footer'
20
57
  },
21
58
  enableCookiesSettings: {
22
59
  control: 'boolean',
23
- description: 'Enable cookies consent preferences'
60
+ description: 'Render the "Cookie Preferences" entry (column links with action="cookies")'
24
61
  },
25
62
  cookiesPreferences: {
26
63
  control: 'text',
27
- description: 'Control for the cookies preferences text'
64
+ description: 'Label used for the cookies-action link'
28
65
  },
29
66
  backToTopAriaLabel: {
30
67
  control: 'text',
31
- description: 'Control for the back to top aria label text'
68
+ description: 'ARIA label for the floating back-to-top button'
69
+ },
70
+ columns: {
71
+ // `object` opens a live JSON editor in the Storybook controls
72
+ // panel — visitors can edit headings, links, hrefs, action,
73
+ // external flag etc. and see the footer re-render. Each story
74
+ // sets its own default (null for the canonical-defaults path,
75
+ // SAMPLE_COLUMNS for the override demo).
76
+ control: 'object',
77
+ description: 'Custom link columns. Array of `{ heading, links: [{ label, href?, external?, action? }] }`. Leave null to use the canonical EBRAINS defaults baked into the component.'
32
78
  }
33
79
  },
34
80
  args: {
81
+ variant: 'inverse',
35
82
  social: false,
36
83
  fundedBy: 'EBRAINS is funded by the Horizon Europe Framework Programme.',
37
- rightsReserved: '2024 EBRAINS. All rights reserved.',
84
+ rightsReserved: `${new Date().getFullYear()} EBRAINS. All rights reserved.`,
38
85
  enableScrollTop: false,
39
86
  enableCookiesSettings: false,
40
- cookiesPreferences: 'Cookies Preferences',
41
- backToTopAriaLabel: 'Back to Top'
42
- },
43
- parameters: {}
87
+ cookiesPreferences: 'Cookie Preferences',
88
+ backToTopAriaLabel: 'Back to Top',
89
+ columns: null
90
+ }
44
91
  };
92
+ // Helper — JSON-stringify the columns array and escape single quotes so
93
+ // the resulting HTML attribute (wrapped in single quotes for readability)
94
+ // stays valid even if a link label or href contains one. Shared by every
95
+ // render function below.
96
+ function columnsAttr(columns) {
97
+ if (columns == null) {
98
+ return '';
99
+ }
100
+ const json = JSON.stringify(columns).replace(/'/g, '&#39;');
101
+ return `columns='${json}'`;
102
+ }
103
+ /**
104
+ * Default — what a consumer gets from `<eds-footer></eds-footer>`
105
+ * with no overrides. Dark theme, EBRAINS canonical link columns,
106
+ * EU funding ack + copyright.
107
+ *
108
+ * Leave `columns` null in the controls panel to see the canonical
109
+ * defaults baked into the component; set it to a JSON array (use the
110
+ * object editor) to live-preview an override.
111
+ */
45
112
  export const Default = {
46
113
  render: (args) => {
47
- const notice = args.enableCookiesSettings
48
- ? `
49
- <eds-matomo-notice></eds-matomo-notice>`
50
- : '';
114
+ const notice = args.enableCookiesSettings ? `<eds-matomo-notice></eds-matomo-notice>` : '';
51
115
  return `
52
- <eds-alert message="When cookies consent is enabled, please include <code>eds-matomo-notice</code> in your page"></eds-alert>
116
+ <eds-alert message="When cookies consent is enabled, please include <code>eds-matomo-notice</code> in your page" class="mb-16"></eds-alert>
53
117
  ${notice}
54
118
  <eds-footer
119
+ variant="${args.variant}"
55
120
  social="${args.social}"
56
121
  funded-by="${args.fundedBy}"
57
122
  rights-reserved="${args.rightsReserved}"
@@ -59,7 +124,34 @@ export const Default = {
59
124
  enable-cookies-settings="${args.enableCookiesSettings}"
60
125
  cookies-preferences="${args.cookiesPreferences}"
61
126
  back-to-top-aria-label="${args.backToTopAriaLabel}"
127
+ ${columnsAttr(args.columns)}
62
128
  ></eds-footer>
63
129
  `;
64
130
  }
65
131
  };
132
+ /**
133
+ * Custom link columns — pre-fills the `columns` control with a
134
+ * sensible non-EBRAINS example so the Storybook JSON editor opens
135
+ * with something realistic to mutate. Edit headings, links, hrefs,
136
+ * `external`, and `action` directly in the Controls panel to see
137
+ * the footer re-render.
138
+ *
139
+ * Shape: `[{ heading, links: [{ label, href?, external?, action? }] }]`
140
+ * - `href` present → renders as an anchor (target=_blank if `external`)
141
+ * - `href` absent → renders as plain text (e.g. "MIT License")
142
+ * - `action: 'cookies'` → fires the `cookies` event (gated by
143
+ * enable-cookies-settings)
144
+ */
145
+ export const CustomColumns = {
146
+ args: {
147
+ enableCookiesSettings: true,
148
+ columns: SAMPLE_COLUMNS
149
+ },
150
+ render: (args) => `
151
+ <eds-footer
152
+ variant="${args.variant}"
153
+ enable-cookies-settings="${args.enableCookiesSettings}"
154
+ ${columnsAttr(args.columns)}
155
+ ></eds-footer>
156
+ `
157
+ };