@ebrains/components 3.0.0 → 3.1.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 (371) 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} +847 -207
  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 +9 -2
  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-section-core_2.cjs.entry.js +3 -3
  24. package/dist/cjs/eds-timeline.cjs.entry.js +1 -1
  25. package/dist/cjs/eds-toast-manager.cjs.entry.js +1 -1
  26. package/dist/cjs/eds-trl-badge.cjs.entry.js +181 -0
  27. package/dist/cjs/incorrect-use-of-colors.cjs.entry.js +1 -1
  28. package/dist/cjs/index-50bc1aa4.js +10 -2
  29. package/dist/cjs/loader.cjs.js +1 -1
  30. package/dist/cjs/logo-space.cjs.entry.js +1 -1
  31. package/dist/cjs/logo-variations-horizontal_2.cjs.entry.js +2 -2
  32. package/dist/cjs/logo-variations-tabs.cjs.entry.js +1 -1
  33. package/dist/cjs/logo-wrong-usage.cjs.entry.js +1 -1
  34. package/dist/cjs/svg-repository.cjs.entry.js +1 -1
  35. package/dist/cjs/token-list_3.cjs.entry.js +3 -3
  36. package/dist/cjs/token-ratios.cjs.entry.js +1 -1
  37. package/dist/cjs/token-spacing.cjs.entry.js +1 -1
  38. package/dist/cjs/token-typography.cjs.entry.js +1 -1
  39. package/dist/collection/collection-manifest.json +4 -1
  40. package/dist/collection/components/eds-accordion/eds-accordion.css +3 -2
  41. package/dist/collection/components/eds-accordion/eds-accordion.js +1 -1
  42. package/dist/collection/components/eds-accordion/eds-accordion.stories.js +7 -19
  43. package/dist/collection/components/eds-alert/eds-alert.stories.js +19 -147
  44. package/dist/collection/components/eds-avatar/eds-avatar.js +1 -1
  45. package/dist/collection/components/eds-avatar/eds-avatar.stories.js +2 -2
  46. package/dist/collection/components/eds-block-break/eds-block-break.js +1 -1
  47. package/dist/collection/components/eds-breadcrump/eds-breadcrump.js +1 -1
  48. package/dist/collection/components/eds-button/eds-button.css +15 -0
  49. package/dist/collection/components/eds-button/eds-button.js +13 -6
  50. package/dist/collection/components/eds-cards/eds-card-composer/eds-card-desc/eds-card-desc.js +1 -1
  51. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.css +10 -1
  52. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.js +1 -1
  53. package/dist/collection/components/eds-cards/eds-card-feature/eds-card-feature.js +1 -1
  54. package/dist/collection/components/eds-cards/eds-card-generic/eds-card-generic.js +1 -1
  55. package/dist/collection/components/eds-cards/eds-card-hero/eds-card-hero.js +1 -1
  56. package/dist/collection/components/eds-cards/eds-card-stat/eds-card-stat.js +1 -1
  57. package/dist/collection/components/eds-charts/eds-gauge/eds-gauge.js +1 -1
  58. package/dist/collection/components/eds-code-block/eds-code-block.js +1 -1
  59. package/dist/collection/components/eds-dropdown/eds-dropdown.js +30 -4
  60. package/dist/collection/components/eds-feedback/eds-feedback.js +1 -1
  61. package/dist/collection/components/eds-footer/eds-footer.css +143 -203
  62. package/dist/collection/components/eds-footer/eds-footer.js +173 -76
  63. package/dist/collection/components/eds-footer/eds-footer.stories.js +108 -15
  64. package/dist/collection/components/eds-form/eds-form.css +37 -1
  65. package/dist/collection/components/eds-form/eds-form.js +45 -7
  66. package/dist/collection/components/eds-frame/eds-frame.js +1 -1
  67. package/dist/collection/components/eds-header/eds-header.js +1 -1
  68. package/dist/collection/components/eds-header/eds-header.stories.js +26 -12
  69. package/dist/collection/components/eds-icon-wrapper/eds-icon-wrapper.js +20 -1
  70. package/dist/collection/components/eds-icons/eds-icon-eu/eds-icon-eu.js +1 -1
  71. package/dist/collection/components/eds-icons/eds-icon-gitlab/eds-icon-gitlab.js +1 -1
  72. package/dist/collection/components/eds-icons/social/eds-icon-bluesky/eds-icon-bluesky.js +1 -1
  73. package/dist/collection/components/eds-icons/social/eds-icon-facebook/eds-icon-facebook.js +1 -1
  74. package/dist/collection/components/eds-icons/social/eds-icon-linkedin/eds-icon-linkedin.js +1 -1
  75. package/dist/collection/components/eds-icons/social/eds-icon-mastodon/eds-icon-mastodon.js +1 -1
  76. package/dist/collection/components/eds-icons/social/eds-icon-twitter/eds-icon-twitter.js +1 -1
  77. package/dist/collection/components/eds-icons/social/eds-icon-youtube/eds-icon-youtube.js +1 -1
  78. package/dist/collection/components/eds-img/eds-img.js +2 -2
  79. package/dist/collection/components/eds-img/eds-img.stories.js +29 -52
  80. package/dist/collection/components/eds-input-dropzone/eds-input-dropzone.js +1 -1
  81. package/dist/collection/components/eds-input-elements/eds-input/eds-input.js +20 -2
  82. package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.css +29 -0
  83. package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.js +2 -1
  84. package/dist/collection/components/eds-input-elements/eds-input-label/eds-input-label.js +1 -1
  85. package/dist/collection/components/eds-input-elements/eds-input-range/eds-input-range.js +1 -1
  86. package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.js +1 -1
  87. package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.stories.js +30 -0
  88. package/dist/collection/components/eds-input-elements/eds-input-select/eds-input-select.js +2 -2
  89. package/dist/collection/components/eds-input-field/eds-input-field.js +11 -5
  90. package/dist/collection/components/eds-input-field/eds-input-field.stories.js +82 -130
  91. package/dist/collection/components/eds-input-file/eds-input-file.js +1 -1
  92. package/dist/collection/components/eds-link/eds-link.js +1 -1
  93. package/dist/collection/components/eds-link/eds-link.stories.js +13 -8
  94. package/dist/collection/components/eds-logo/eds-logo.js +1 -1
  95. package/dist/collection/components/eds-modal/eds-modal.stories.js +9 -8
  96. package/dist/collection/components/eds-nps/eds-nps.css +32 -0
  97. package/dist/collection/components/eds-nps/eds-nps.js +3 -3
  98. package/dist/collection/components/eds-pagination/eds-pagination.js +2 -2
  99. package/dist/collection/components/eds-rating/eds-rating.css +9 -0
  100. package/dist/collection/components/eds-rating/eds-rating.js +2 -2
  101. package/dist/collection/components/eds-section/eds-section-core/eds-section-core.js +1 -1
  102. package/dist/collection/components/eds-section/eds-section-heading/eds-section-heading.js +2 -2
  103. package/dist/collection/components/eds-sidebar/eds-sidebar.js +2 -2
  104. package/dist/collection/components/eds-social-networks/eds-social-networks.js +1 -1
  105. package/dist/collection/components/eds-spinner/eds-spinner.js +1 -1
  106. package/dist/collection/components/eds-steps-v2/eds-steps-v2.js +1 -1
  107. package/dist/collection/components/eds-table/eds-table.css +21 -4
  108. package/dist/collection/components/eds-table/eds-table.js +17 -50
  109. package/dist/collection/components/eds-table/eds-table.stories.js +5 -109
  110. package/dist/collection/components/eds-tabs/eds-tabs.css +7 -1
  111. package/dist/collection/components/eds-tabs/eds-tabs.js +47 -9
  112. package/dist/collection/components/eds-tag/eds-tag.js +1 -1
  113. package/dist/collection/components/eds-timeline/eds-timeline.js +1 -1
  114. package/dist/collection/components/eds-toast-manager/eds-toast-manager.js +1 -1
  115. package/dist/collection/components/eds-tooltip/eds-tooltip.js +1 -1
  116. package/dist/collection/components/eds-tooltip/eds-tooltip.stories.js +1 -1
  117. package/dist/collection/components/eds-user/eds-user.js +1 -1
  118. package/dist/collection/eds-docs-ui/colors/color-palette/primary.js +1 -1
  119. package/dist/collection/eds-docs-ui/colors/color-palette/secondary.js +1 -1
  120. package/dist/collection/eds-docs-ui/colors/color-palette/support.js +1 -1
  121. package/dist/collection/eds-docs-ui/colors/gradient-palette/primary.js +1 -1
  122. package/dist/collection/eds-docs-ui/colors/gradient-palette/secondary.js +7 -7
  123. package/dist/collection/eds-docs-ui/colors/gradient-palette/support.js +3 -3
  124. package/dist/collection/eds-docs-ui/colors/use-of-colors/correct-use-of-colors.js +1 -1
  125. package/dist/collection/eds-docs-ui/colors/use-of-colors/incorrect-use-of-colors.js +1 -1
  126. package/dist/collection/eds-docs-ui/components-section/components-section.js +1 -1
  127. package/dist/collection/eds-docs-ui/design-tokens/docs-tokens/docs-tokens.js +1 -1
  128. package/dist/collection/eds-docs-ui/design-tokens/token-list/token-list.js +1 -1
  129. package/dist/collection/eds-docs-ui/design-tokens/token-radii/token-radii.js +1 -1
  130. package/dist/collection/eds-docs-ui/design-tokens/token-ratios/token-ratios.js +1 -1
  131. package/dist/collection/eds-docs-ui/design-tokens/token-shadows/token-shadows.js +1 -1
  132. package/dist/collection/eds-docs-ui/design-tokens/token-spacing/token-spacing.js +1 -1
  133. package/dist/collection/eds-docs-ui/design-tokens/token-typography/token-typography.js +1 -1
  134. package/dist/collection/eds-docs-ui/docs-palettes/docs-palettes.js +1 -1
  135. package/dist/collection/eds-docs-ui/logo/logo-space/logo-space.js +1 -1
  136. package/dist/collection/eds-docs-ui/logo/logo-variations/horizontal/logo-variations-horizontal.js +1 -1
  137. package/dist/collection/eds-docs-ui/logo/logo-variations/vertical/logo-variations-vertical.js +1 -1
  138. package/dist/collection/eds-docs-ui/logo/logo-variations-tabs/logo-variations.js +1 -1
  139. package/dist/collection/eds-docs-ui/logo/logo-wrong-usage/logo-wrong-usage.js +1 -1
  140. package/dist/collection/eds-docs-ui/svg-repository/svg-repository.js +1 -1
  141. package/dist/collection/shared-ui/eds-cookies-preference/eds-cookies-preference.js +1 -1
  142. package/dist/collection/shared-ui/eds-gitlab-contributors/eds-gitlab-contributors.css +19 -0
  143. package/dist/collection/shared-ui/eds-gitlab-contributors/eds-gitlab-contributors.js +8 -1
  144. package/dist/collection/shared-ui/eds-global-search/eds-global-search.css +166 -0
  145. package/dist/collection/shared-ui/eds-global-search/eds-global-search.js +62 -6
  146. package/dist/collection/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.css +205 -0
  147. package/dist/collection/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.js +257 -0
  148. package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.css +23 -102
  149. package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.js +7 -1
  150. package/dist/collection/shared-ui/eds-search-select/eds-search-select.css +203 -0
  151. package/dist/collection/shared-ui/eds-search-select/eds-search-select.js +685 -0
  152. package/dist/collection/shared-ui/eds-search-select/eds-search-select.stories.js +85 -0
  153. package/dist/collection/shared-ui/eds-trl-badge/ebrains-mark.js +26 -0
  154. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.css +22 -0
  155. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.js +321 -0
  156. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.stories.js +96 -0
  157. package/dist/collection/shared-ui/examples/eds-app-root/eds-app-root.js +1 -1
  158. package/dist/collection/utils/eds-form/formValidators.js +2 -1
  159. package/dist/collection/utils/eds-form/safeFormat.js +39 -0
  160. package/dist/components/components-section.js +1 -1
  161. package/dist/components/components.css +3 -4
  162. package/dist/components/components.esm.js +1 -1
  163. package/dist/components/correct-use-of-colors.js +1 -1
  164. package/dist/components/docs-palettes.js +1 -1
  165. package/dist/components/docs-tokens.js +1 -1
  166. package/dist/components/eds-accordion2.js +2 -2
  167. package/dist/components/eds-app-root.js +1 -1
  168. package/dist/components/eds-avatar2.js +1 -1
  169. package/dist/components/eds-block-break2.js +1 -1
  170. package/dist/components/eds-breadcrumb.js +1 -1
  171. package/dist/components/eds-button2.js +12 -5
  172. package/dist/components/eds-card-cta.js +2 -2
  173. package/dist/components/eds-card-desc2.js +1 -1
  174. package/dist/components/eds-card-feature.js +1 -1
  175. package/dist/components/eds-card-generic2.js +1 -1
  176. package/dist/components/eds-card-hero.js +1 -1
  177. package/dist/components/eds-card-stat.js +1 -1
  178. package/dist/components/eds-code-block2.js +1 -1
  179. package/dist/components/eds-cookies-preference.js +1 -1
  180. package/dist/components/eds-dropdown2.js +30 -4
  181. package/dist/components/eds-feedback.js +1 -1
  182. package/dist/components/eds-footer2.js +115 -26
  183. package/dist/components/eds-form.js +61 -23
  184. package/dist/components/eds-frame.js +1 -1
  185. package/dist/components/eds-gauge.js +1 -1
  186. package/dist/components/eds-gitlab-contributors.js +9 -2
  187. package/dist/components/eds-global-search.js +48 -69
  188. package/dist/components/eds-header.js +1 -1
  189. package/dist/components/eds-icon-bluesky.js +1 -1
  190. package/dist/components/eds-icon-eu.js +1 -1
  191. package/dist/components/eds-icon-facebook.js +1 -1
  192. package/dist/components/eds-icon-gitlab.js +1 -1
  193. package/dist/components/eds-icon-linkedin.js +1 -1
  194. package/dist/components/eds-icon-mastodon.js +1 -1
  195. package/dist/components/eds-icon-twitter.js +1 -1
  196. package/dist/components/eds-icon-wrapper2.js +5 -2
  197. package/dist/components/eds-icon-youtube.js +1 -1
  198. package/dist/components/eds-img2.js +2 -2
  199. package/dist/components/eds-input-dropzone2.js +1 -1
  200. package/dist/components/eds-input-field2.js +25 -25
  201. package/dist/components/eds-input-file2.js +1 -1
  202. package/dist/components/eds-input-footer2.js +43 -3
  203. package/dist/components/eds-input-label2.js +1 -1
  204. package/dist/components/eds-input-range2.js +1 -1
  205. package/dist/components/eds-input-search.js +100 -1
  206. package/dist/components/eds-input-select2.js +2 -2
  207. package/dist/components/eds-input2.js +4 -2
  208. package/dist/components/eds-kg-learning-resources.d.ts +11 -0
  209. package/dist/components/eds-kg-learning-resources.js +221 -0
  210. package/dist/components/eds-kg-web-services-select2.js +16 -22
  211. package/dist/components/eds-link2.js +1 -1
  212. package/dist/components/eds-logo2.js +1 -1
  213. package/dist/components/eds-matomo-notice2.js +8 -2
  214. package/dist/components/eds-nps2.js +4 -4
  215. package/dist/components/eds-pagination2.js +2 -2
  216. package/dist/components/eds-rating2.js +3 -3
  217. package/dist/components/eds-search-select.d.ts +11 -0
  218. package/dist/components/eds-search-select.js +6 -0
  219. package/dist/components/eds-search-select2.js +361 -0
  220. package/dist/components/eds-section-core2.js +1 -1
  221. package/dist/components/eds-section-heading2.js +2 -2
  222. package/dist/components/eds-sidebar.js +2 -2
  223. package/dist/components/eds-social-networks2.js +1 -1
  224. package/dist/components/eds-spinner2.js +1 -1
  225. package/dist/components/eds-steps-v2.js +1 -1
  226. package/dist/components/eds-table2.js +31 -53
  227. package/dist/components/eds-tabs.js +48 -10
  228. package/dist/components/eds-tag2.js +1 -1
  229. package/dist/components/eds-timeline.js +1 -1
  230. package/dist/components/eds-toast-manager.js +1 -1
  231. package/dist/components/eds-tooltip2.js +1 -1
  232. package/dist/components/eds-trl-badge.d.ts +11 -0
  233. package/dist/components/eds-trl-badge.js +204 -0
  234. package/dist/components/eds-user.js +1 -1
  235. package/dist/components/incorrect-use-of-colors.js +1 -1
  236. package/dist/components/logo-space.js +19 -25
  237. package/dist/components/logo-variations-horizontal2.js +1 -1
  238. package/dist/components/logo-variations-tabs.js +1 -1
  239. package/dist/components/logo-variations-vertical2.js +1 -1
  240. package/dist/components/logo-wrong-usage.js +1 -1
  241. package/dist/components/p-00ba405d.entry.js +1 -0
  242. package/dist/components/p-03342030.entry.js +1 -0
  243. package/dist/components/{p-0fe10e6c.entry.js → p-0e2bac0f.entry.js} +1 -1
  244. package/dist/components/{p-7aa4edef.entry.js → p-12acc48d.entry.js} +1 -1
  245. package/dist/components/p-18399fe1.entry.js +1 -0
  246. package/dist/components/p-1e6f0572.entry.js +1 -0
  247. package/dist/components/{p-c46675c8.entry.js → p-1fbcc480.entry.js} +1 -1
  248. package/dist/components/{p-dfe93385.entry.js → p-25729ade.entry.js} +1 -1
  249. package/dist/components/p-27e093c3.entry.js +1 -0
  250. package/dist/components/{p-a6dc1f88.entry.js → p-37ef07d9.entry.js} +1 -1
  251. package/dist/components/{p-74b9c9a8.entry.js → p-3d1bb2fe.entry.js} +1 -1
  252. package/dist/components/{p-940a2d42.entry.js → p-42791331.entry.js} +1 -1
  253. package/dist/components/p-5ff4b1d0.entry.js +1 -0
  254. package/dist/components/{p-d16b5363.entry.js → p-62580004.entry.js} +1 -1
  255. package/dist/components/{p-d2576747.entry.js → p-62f53e7a.entry.js} +1 -1
  256. package/dist/components/p-6be1730a.entry.js +1 -0
  257. package/dist/components/p-786ff09b.entry.js +1 -0
  258. package/dist/components/p-80a32e20.entry.js +1 -0
  259. package/dist/components/p-85476a6f.entry.js +9 -0
  260. package/dist/components/{p-a63e14bb.entry.js → p-8a483358.entry.js} +1 -1
  261. package/dist/components/{p-04e9c2d7.entry.js → p-b1a10842.entry.js} +1 -1
  262. package/dist/components/p-bdcb71e1.entry.js +1 -0
  263. package/dist/components/p-c2127276.entry.js +1 -0
  264. package/dist/components/p-c3ee9163.entry.js +1 -0
  265. package/dist/components/{p-f55dd314.entry.js → p-c4cfbf98.entry.js} +1 -1
  266. package/dist/components/p-c65082fe.entry.js +1 -0
  267. package/dist/components/p-cc096938.entry.js +1 -0
  268. package/dist/components/p-d59d6fda.entry.js +1 -0
  269. package/dist/components/p-e027bc90.entry.js +1 -0
  270. package/dist/components/{p-f364296f.entry.js → p-e339d0b5.entry.js} +1 -1
  271. package/dist/components/{p-0d7aee0b.entry.js → p-e4df206e.entry.js} +1 -1
  272. package/dist/components/{p-c2fc62f7.entry.js → p-e71a4f29.entry.js} +1 -1
  273. package/dist/components/{p-773bd015.entry.js → p-e9e6ec19.entry.js} +1 -1
  274. package/dist/components/p-f4d2f882.entry.js +1 -0
  275. package/dist/components/{p-d1b3aa52.entry.js → p-f9a9fa34.entry.js} +1 -1
  276. package/dist/components/primary.js +1 -1
  277. package/dist/components/primary2.js +1 -1
  278. package/dist/components/secondary.js +1 -1
  279. package/dist/components/secondary2.js +7 -7
  280. package/dist/components/support.js +1 -1
  281. package/dist/components/support2.js +3 -3
  282. package/dist/components/svg-repository.js +19 -25
  283. package/dist/components/token-list2.js +1 -1
  284. package/dist/components/token-radii2.js +1 -1
  285. package/dist/components/token-ratios.js +1 -1
  286. package/dist/components/token-shadows2.js +1 -1
  287. package/dist/components/token-spacing.js +1 -1
  288. package/dist/components/token-typography.js +1 -1
  289. package/dist/esm/color-primary-palette_6.entry.js +14 -14
  290. package/dist/esm/components-section.entry.js +1 -1
  291. package/dist/esm/components.js +1 -1
  292. package/dist/esm/correct-use-of-colors.entry.js +1 -1
  293. package/dist/esm/docs-palettes.entry.js +1 -1
  294. package/dist/esm/docs-tokens.entry.js +1 -1
  295. package/dist/esm/{eds-accordion_52.entry.js → eds-accordion_53.entry.js} +846 -207
  296. package/dist/esm/eds-app-root.entry.js +1 -1
  297. package/dist/esm/eds-cookies-preference.entry.js +1 -1
  298. package/dist/esm/eds-feedback.entry.js +1 -1
  299. package/dist/esm/eds-frame.entry.js +1 -1
  300. package/dist/esm/eds-gauge.entry.js +1 -1
  301. package/dist/esm/eds-gitlab-contributors.entry.js +9 -2
  302. package/dist/esm/eds-icon-bluesky.entry.js +1 -1
  303. package/dist/esm/eds-icon-eu.entry.js +1 -1
  304. package/dist/esm/eds-icon-facebook.entry.js +1 -1
  305. package/dist/esm/eds-icon-gitlab.entry.js +1 -1
  306. package/dist/esm/eds-icon-linkedin.entry.js +1 -1
  307. package/dist/esm/eds-icon-mastodon.entry.js +1 -1
  308. package/dist/esm/eds-icon-twitter.entry.js +1 -1
  309. package/dist/esm/eds-icon-youtube.entry.js +1 -1
  310. package/dist/{components/eds-input-search2.js → esm/eds-input-search.entry.js} +9 -39
  311. package/dist/esm/eds-section-core_2.entry.js +3 -3
  312. package/dist/esm/eds-timeline.entry.js +1 -1
  313. package/dist/esm/eds-toast-manager.entry.js +1 -1
  314. package/dist/esm/eds-trl-badge.entry.js +177 -0
  315. package/dist/esm/incorrect-use-of-colors.entry.js +1 -1
  316. package/dist/esm/index-870ab08f.js +10 -2
  317. package/dist/esm/loader.js +1 -1
  318. package/dist/esm/logo-space.entry.js +1 -1
  319. package/dist/esm/logo-variations-horizontal_2.entry.js +2 -2
  320. package/dist/esm/logo-variations-tabs.entry.js +1 -1
  321. package/dist/esm/logo-wrong-usage.entry.js +1 -1
  322. package/dist/esm/svg-repository.entry.js +1 -1
  323. package/dist/esm/token-list_3.entry.js +3 -3
  324. package/dist/esm/token-ratios.entry.js +1 -1
  325. package/dist/esm/token-spacing.entry.js +1 -1
  326. package/dist/esm/token-typography.entry.js +1 -1
  327. package/dist/hydrate/index.js +1222 -207
  328. package/dist/hydrate/index.mjs +1222 -207
  329. package/dist/types/components/eds-accordion/eds-accordion.stories.d.ts +4 -8
  330. package/dist/types/components/eds-alert/eds-alert.stories.d.ts +7 -73
  331. package/dist/types/components/eds-button/eds-button.d.ts +1 -1
  332. package/dist/types/components/eds-dropdown/eds-dropdown.d.ts +1 -0
  333. package/dist/types/components/eds-footer/eds-footer.d.ts +84 -55
  334. package/dist/types/components/eds-footer/eds-footer.stories.d.ts +62 -1
  335. package/dist/types/components/eds-form/eds-form.d.ts +10 -0
  336. package/dist/types/components/eds-header/eds-header.stories.d.ts +6 -6
  337. package/dist/types/components/eds-icon-wrapper/eds-icon-wrapper.d.ts +8 -0
  338. package/dist/types/components/eds-img/eds-img.stories.d.ts +6 -20
  339. package/dist/types/components/eds-input-elements/eds-input/eds-input.d.ts +7 -0
  340. package/dist/types/components/eds-input-elements/eds-input-search/eds-input-search.stories.d.ts +36 -0
  341. package/dist/types/components/eds-input-field/eds-input-field.stories.d.ts +97 -38
  342. package/dist/types/components/eds-link/eds-link.stories.d.ts +9 -6
  343. package/dist/types/components/eds-table/eds-table.d.ts +8 -14
  344. package/dist/types/components/eds-table/eds-table.stories.d.ts +0 -107
  345. package/dist/types/components/eds-tabs/eds-tabs.d.ts +10 -0
  346. package/dist/types/components.d.ts +507 -86
  347. package/dist/types/shared-ui/eds-global-search/eds-global-search.d.ts +12 -0
  348. package/dist/types/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.d.ts +60 -0
  349. package/dist/types/shared-ui/eds-search-select/eds-search-select.d.ts +98 -0
  350. package/dist/types/shared-ui/eds-search-select/eds-search-select.stories.d.ts +81 -0
  351. package/dist/types/shared-ui/eds-trl-badge/ebrains-mark.d.ts +7 -0
  352. package/dist/types/shared-ui/eds-trl-badge/eds-trl-badge.d.ts +54 -0
  353. package/dist/types/shared-ui/eds-trl-badge/eds-trl-badge.stories.d.ts +112 -0
  354. package/dist/types/utils/eds-form/safeFormat.d.ts +21 -0
  355. package/package.json +1 -1
  356. package/dist/components/p-18e852e1.entry.js +0 -1
  357. package/dist/components/p-3ccd6948.entry.js +0 -1
  358. package/dist/components/p-3d3841d6.entry.js +0 -1
  359. package/dist/components/p-3f38df99.entry.js +0 -1
  360. package/dist/components/p-527e71d0.entry.js +0 -1
  361. package/dist/components/p-55047f7f.entry.js +0 -9
  362. package/dist/components/p-64c23098.entry.js +0 -1
  363. package/dist/components/p-7b93a385.entry.js +0 -1
  364. package/dist/components/p-878f65a6.entry.js +0 -1
  365. package/dist/components/p-92f6d9c0.entry.js +0 -1
  366. package/dist/components/p-9eedf771.entry.js +0 -1
  367. package/dist/components/p-b4355cec.entry.js +0 -1
  368. package/dist/components/p-d2f17fac.entry.js +0 -1
  369. package/dist/components/p-db5eea95.entry.js +0 -1
  370. package/dist/components/p-e205c269.entry.js +0 -1
  371. package/dist/components/p-f88b5f21.entry.js +0 -1
@@ -22,6 +22,13 @@ const EdsDropdown = /*@__PURE__*/ proxyCustomElement(class EdsDropdown extends H
22
22
  if (this.isOpen) {
23
23
  // refresh focusables each open in case slot changed
24
24
  this.focusableItems = Array.from(((_a = this.panelEl) === null || _a === void 0 ? void 0 : _a.querySelectorAll('a, button, [role="menuitem"]')) || []);
25
+ // The panel declares role="menu"; slotted links/buttons need
26
+ // role="menuitem" or screen readers announce an empty menu.
27
+ this.focusableItems.forEach((item) => {
28
+ if (!item.hasAttribute('role')) {
29
+ item.setAttribute('role', 'menuitem');
30
+ }
31
+ });
25
32
  this.focusIndex = this.focusableItems.length ? 0 : -1;
26
33
  this.focusItem();
27
34
  }
@@ -60,7 +67,6 @@ const EdsDropdown = /*@__PURE__*/ proxyCustomElement(class EdsDropdown extends H
60
67
  const path = (e.composedPath && e.composedPath()) || [];
61
68
  if (!path.includes(this.host)) {
62
69
  this.closeDropdown();
63
- this.dropdown.emit({ expanded: false });
64
70
  }
65
71
  }
66
72
  /**
@@ -68,12 +74,22 @@ const EdsDropdown = /*@__PURE__*/ proxyCustomElement(class EdsDropdown extends H
68
74
  * @param {KeyboardEvent} event - The keyboard event.
69
75
  */
70
76
  handleKeyDown(event) {
77
+ var _a;
71
78
  if (this.isOpen) {
72
79
  const key = event.key;
73
80
  switch (key) {
74
81
  case 'Tab':
82
+ // ARIA menu pattern: Tab does not walk the items — it closes
83
+ // the menu and lets focus continue to the next element on the
84
+ // page (no preventDefault on purpose).
75
85
  this.closeDropdown();
76
- this.dropdown.emit({ expanded: false });
86
+ break;
87
+ case 'Escape':
88
+ // Close and hand focus back to the trigger so keyboard users
89
+ // can back out without committing to a Tab.
90
+ event.preventDefault();
91
+ this.closeDropdown();
92
+ (_a = this.buttonEl) === null || _a === void 0 ? void 0 : _a.focus();
77
93
  break;
78
94
  case 'ArrowUp':
79
95
  event.preventDefault();
@@ -85,6 +101,16 @@ const EdsDropdown = /*@__PURE__*/ proxyCustomElement(class EdsDropdown extends H
85
101
  this.focusIndex = (this.focusIndex + 1) % this.focusableItems.length;
86
102
  this.focusItem();
87
103
  break;
104
+ case 'Home':
105
+ event.preventDefault();
106
+ this.focusIndex = this.focusableItems.length ? 0 : -1;
107
+ this.focusItem();
108
+ break;
109
+ case 'End':
110
+ event.preventDefault();
111
+ this.focusIndex = this.focusableItems.length - 1;
112
+ this.focusItem();
113
+ break;
88
114
  }
89
115
  }
90
116
  }
@@ -152,13 +178,13 @@ const EdsDropdown = /*@__PURE__*/ proxyCustomElement(class EdsDropdown extends H
152
178
  * @returns {JSX.Element} The rendered dropdown component.
153
179
  */
154
180
  render() {
155
- return (h("div", { key: '52f349afae529afc12461642abf17fcf4870ca6f', class: "z-focus relative", ref: (el) => (this.dropdownContent = el) }, h("eds-button", { key: 'ed1f3366306f7e3d708473e14fc8de5723dba03f', label: this.label, "aria-label": this.ariaLabel, icon: this.icon, iconSmall: false, intent: this.intent, onClick: this.handleClick, "aria-expanded": this.isOpen.toString(), "aria-haspopup": "menu", size: "small", pill: true }), h("nav", { key: 'fb9a559a97ad866b62d4cb2a0f7f828548e24c75', ref: (el) => (this.panelEl = el), role: "menu", class: {
181
+ return (h("div", { key: '1ce4926a15ac67d653ef03de877e64be83f61b4e', class: "z-focus relative", ref: (el) => (this.dropdownContent = el) }, h("eds-button", { key: '8b45fc57c018dd620701b2b9db5403c30f88a6ed', ref: (el) => (this.buttonEl = el), label: this.label, "aria-label": this.ariaLabel, icon: this.icon, iconSmall: false, intent: this.intent, onClick: this.handleClick, "aria-expanded": this.isOpen.toString(), "aria-haspopup": "menu", size: "small", pill: true }), h("nav", { key: '35854d55ea595e35513348bf36145794b2c57007', ref: (el) => (this.panelEl = el), role: "menu", class: {
156
182
  'shadow-small bg-inverse border-softest z-10 z-on-top absolute top-full mt-4 flex flex-col gap-y-4 border-2 p-8': true,
157
183
  'left-4': this.dropdownPos === 'left' && this.dropdownOffset,
158
184
  'left-0': this.dropdownPos === 'left' && !this.dropdownOffset,
159
185
  'right-4': this.dropdownPos === 'right' && this.dropdownOffset,
160
186
  'right-0': this.dropdownPos === 'right' && !this.dropdownOffset
161
- }, style: { display: this.isOpen ? 'block' : 'none' }, "aria-label": "Dropdown", "aria-hidden": !this.isOpen }, h("slot", { key: '6205de74b039cb784bf9b104edfd6f7a03cc5ed1' }))));
187
+ }, style: { display: this.isOpen ? 'block' : 'none' }, "aria-label": "Dropdown", "aria-hidden": !this.isOpen }, h("slot", { key: 'd6b153bb5968fa958be4d96d60cce774a9a0713c' }))));
162
188
  }
163
189
  get host() { return this; }
164
190
  static get style() { return EdsDropdownStyle0; }
@@ -63,7 +63,7 @@ const EdsFeedback$1 = /*@__PURE__*/ proxyCustomElement(class EdsFeedback extends
63
63
  const HeadingTag = this.headingLevel;
64
64
  const levelNum = this.headingLevel.replace('h', '');
65
65
  const headingClass = `f-heading-${levelNum.padStart(2, '0')} my-4`;
66
- return (h("div", { key: '7d01b8aef2854cfdb739553e7f43ed9516199e1e', class: "grid inline" }, h(HeadingTag, { key: 'a0c4a4f93598b955e90416d50260aaa3f644615a', class: headingClass }, this.label), h("p", { key: 'acb2db8fc209faf2d39622e2e858fa1e7403e1b4', class: "f-body-01 text-light" }, this.description), h("eds-rating", { key: 'b0db57c9e3539a5edfecf67cc3a12dd87d74fad9', "rating-type": this.type, "rating-count": this.count }), this.selectedRating > 0 && this.parsedMappings[this.selectedRating - 1] && (h("span", { key: '8d6bf62a18fdb12dddba932be9a5115396fdfd6f', class: "f-ui-04 text-lighter" }, this.parsedMappings[this.selectedRating - 1]))));
66
+ return (h("div", { key: '5eddbd664389530e209698e5e435c853c8f50b9f', class: "grid inline" }, h(HeadingTag, { key: '22d1d4a44a116f78bbfa66946d8b7a9f95779524', class: headingClass }, this.label), h("p", { key: 'd3e5abefa5d0e1e32281b5088251fb9c304b8d2a', class: "f-body-01 text-light" }, this.description), h("eds-rating", { key: '65f1e772ac885d20f46e147aedeb55ab2ec871fe', "rating-type": this.type, "rating-count": this.count }), this.selectedRating > 0 && this.parsedMappings[this.selectedRating - 1] && (h("span", { key: 'f660ceb9889d560ec1687c6f17bdbbe6a89f90ee', class: "f-ui-04 text-lighter" }, this.parsedMappings[this.selectedRating - 1]))));
67
67
  }
68
68
  get el() { return this; }
69
69
  static get style() { return EdsFeedbackStyle0; }
@@ -4,41 +4,113 @@ import { d as defineCustomElement$3 } from './eds-icon-wrapper2.js';
4
4
  import { d as defineCustomElement$2 } from './eds-link2.js';
5
5
  import { d as defineCustomElement$1 } from './eds-social-networks2.js';
6
6
 
7
- const edsFooterCss = "p{margin:0}footer{position:relative}.cursor-pointer{cursor:pointer}.ml-4{margin-left:0.25rem}.container{width:calc(var(--container-width, 100%) - (2 * var(--breakout-container-outer-gutter, var(--container-outer-gutter, var(--outer-gutter, 0)))));margin-right:auto;margin-left:auto}.container>*{--container-outer-gutter:0;--breakout-container-outer-gutter:0}.bg-darker{background-color:var(--grey-light)}.bg-strongest{background-color:var(--brand-black)}.border-softest{border-color:rgba(0, 0, 0, .05)}.border-inverse-softer{border-color:rgba(255, 255, 255, .15)}.border-t-2{border-top-width:2px}.pt-20{padding-top:1.25rem}.pb-28{padding-bottom:1.75rem}.grid-layout{display:grid;grid-template-columns:repeat(var(--container-grid-columns, var(--grid-columns)), 1fr);grid-gap:var(--inner-gutter)}.grid-col-span-12{--container-grid-columns:12;grid-column:span 12 / span 12}.mt-28{margin-top:1.75rem}.gap-y-12{row-gap:0.75rem}.gap-x-12{-moz-column-gap:0.75rem;column-gap:0.75rem}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-20{gap:1.25rem}.effect-focus{outline-width:3px;outline-offset:2px;outline-color:var(--brand-green)}.effect-focus:focus-visible{outline-style:solid}.focus-visible\\:rounded-xs:focus-visible{border-radius:4px}.flex{display:flex}.w-\\[54px\\]{width:54px}.ml-0{margin-left:0rem}.order-last{order:9999}.w-full{width:100%}.h-auto{height:auto}.f-ui-02{font-family:var(--f-ui-02-fontFamily);font-weight:var(--f-ui-02-fontWeight);font-size:var(--f-ui-02-fontSize);line-height:var(--f-ui-02-lineHeight);letter-spacing:var(--f-ui-02-letterSpacing)}.f-ui-04{font-family:var(--f-ui-04-fontFamily);font-weight:var(--f-ui-04-fontWeight);font-size:var(--f-ui-04-fontSize);line-height:var(--f-ui-04-lineHeight);letter-spacing:var(--f-ui-04-letterSpacing)}.text-light{color:var(--grey-light)}.text-default{color:var(--brand-black)}.text-inverse{color:var(--white)}.mt-4{margin-top:0.25rem}.mr-4{margin-right:0.25rem}.gap-12{gap:0.75rem}.inline-block{display:inline-block}.\\!no-underline{text-decoration-line:none !important}.decoration-2{text-decoration-thickness:2px}.underline-offset-4{text-underline-offset:4px}.hover\\:\\!underline:hover{text-decoration-line:underline !important}.ml-auto{margin-left:auto}.pl-12{padding-left:0.75rem}.opacity-0{opacity:0}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.duration-75{transition-duration:75ms}@media (min-width: 750px){.md\\:pt-28{padding-top:1.75rem}}@media (min-width: 900px){.lg\\:grid-col-span-5{--container-grid-columns:5;grid-column:span 5 / span 5}.lg\\:grid-col-span-6{--container-grid-columns:6;grid-column:span 6 / span 6}.lg\\:grid-col-start-7{grid-column-start:7}.lg\\:mt-0{margin-top:0rem}.lg\\:flex-nowrap{flex-wrap:nowrap}.lg\\:order-none{order:0}.lg\\:w-auto{width:auto}}@media (min-width: 1024px){.xl\\:pb-40{padding-bottom:2.5rem}}";
7
+ const edsFooterCss = ":host{display:block}p{margin:0}ul{list-style:none;padding:0;margin:0}.eds-footer-root{position:relative;padding:4rem 4rem 2rem;border-top:1px solid rgba(0, 0, 0, 0.06);font-family:var(--f-ui-02-fontFamily)}.eds-footer-root.theme-inverse{background-color:var(--brand-black, #000000);color:var(--grey-light, rgba(255, 255, 255, 0.7));border-top-color:rgba(255, 255, 255, 0.06)}.eds-footer-root.theme-default{background-color:var(--white, #ffffff);color:var(--grey-dark, #4b5563);border-top-color:rgba(0, 0, 0, 0.06)}.footer-container{max-width:1400px;margin:0 auto}.footer-grid{display:grid;grid-template-columns:2fr repeat(3, 1fr);gap:4rem;margin-bottom:4rem}.footer-brand-row{display:flex;align-items:center;gap:1rem}.footer-flag-link{display:inline-block;width:54px;flex-shrink:0;border-radius:4px}.footer-flag-link:focus-visible{outline:3px solid var(--brand-green);outline-offset:2px}.footer-flag-svg{height:auto;width:100%;display:block}.footer-funded{font-size:0.875rem;line-height:1.6;max-width:300px}.theme-inverse .footer-funded{color:var(--grey-dark, rgba(255, 255, 255, 0.55))}.theme-default .footer-funded{color:var(--grey-dark, #4b5563)}.footer-copyright{font-size:0.875rem;margin-top:0.75rem}.theme-inverse .footer-copyright{color:var(--grey-dark, rgba(255, 255, 255, 0.55))}.theme-default .footer-copyright{color:var(--grey-dark, #4b5563)}.footer-column-heading{font-size:0.8125rem;font-weight:500;margin:0 0 1.5rem 0}.theme-inverse .footer-column-heading{color:var(--white, #ffffff)}.theme-default .footer-column-heading{color:var(--brand-black, #111827)}.footer-column-list li{margin-bottom:0.75rem}.footer-column-list li:last-child{margin-bottom:0}.footer-link,.footer-text-item{font-size:0.875rem;text-decoration:none;transition:color 0.3s ease}.footer-link{cursor:pointer}.theme-inverse .footer-link,.theme-inverse .footer-text-item{color:var(--grey-dark, rgba(255, 255, 255, 0.55))}.theme-default .footer-link,.theme-default .footer-text-item{color:var(--grey-dark, #4b5563)}.footer-link:hover{color:var(--brand-green)}.footer-link:focus-visible{outline:2px solid var(--brand-green);outline-offset:2px;border-radius:2px}.footer-social{padding-bottom:2rem;margin-bottom:2rem}.theme-inverse .footer-social{border-bottom:1px solid rgba(255, 255, 255, 0.06)}.theme-default .footer-social{border-bottom:1px solid rgba(0, 0, 0, 0.06)}.footer-back-to-top{position:absolute;top:1.5rem;right:2rem;opacity:0;transition:opacity 75ms cubic-bezier(0.4, 0, 0.2, 1)}@media (max-width: 1200px){.footer-grid{grid-template-columns:repeat(2, 1fr);gap:3rem}}@media (max-width: 768px){.eds-footer-root{padding:3rem 2rem 2rem}.footer-grid{grid-template-columns:1fr;gap:2rem;margin-bottom:2rem}.footer-funded{max-width:none}}";
8
8
  const EdsFooterStyle0 = edsFooterCss;
9
9
 
10
+ /**
11
+ * EBRAINS-wide default link columns. Used when a consumer doesn't pass
12
+ * the `columns` prop. URLs are absolute so the same footer renders
13
+ * correctly from any app's domain (handbook.ebrains.eu, forms.ebrains.eu,
14
+ * design.ebrains.eu, …) — the previous eds-docs design used relative
15
+ * paths which only worked from design.ebrains.eu itself.
16
+ *
17
+ * If EBRAINS adds / renames a canonical resource, change it here once
18
+ * and every consumer's footer updates on the next component release.
19
+ */
20
+ const DEFAULT_COLUMNS = [
21
+ {
22
+ heading: 'Resources',
23
+ links: [
24
+ { label: 'Documentation', href: 'https://design.ebrains.eu/get-started/', external: true },
25
+ { label: 'Components', href: 'https://design.ebrains.eu/ui-components/', external: true },
26
+ { label: 'Foundations', href: 'https://design.ebrains.eu/foundations/', external: true },
27
+ { label: 'Analytics', href: 'https://design.ebrains.eu/analytics/', external: true },
28
+ ],
29
+ },
30
+ {
31
+ heading: 'Community',
32
+ links: [
33
+ { label: 'GitLab', href: 'https://gitlab.ebrains.eu/ri/tech-hub/ebrains-ui-ecosystem/', external: true },
34
+ { label: 'Storybook', href: 'https://storybook.design.ebrains.eu', external: true },
35
+ { label: 'Report Issues', href: 'https://gitlab.ebrains.eu/ri/tech-hub/ebrains-ui-ecosystem/-/issues', external: true },
36
+ { label: 'Contribute', href: 'https://design.ebrains.eu/get-started/contributing/', external: true },
37
+ ],
38
+ },
39
+ {
40
+ heading: 'Legal',
41
+ links: [
42
+ { label: 'MIT License' },
43
+ { label: 'Cookie Preferences', action: 'cookies' },
44
+ ],
45
+ },
46
+ ];
10
47
  const EdsFooter = /*@__PURE__*/ proxyCustomElement(class EdsFooter extends HTMLElement {
11
48
  constructor() {
12
49
  super();
13
50
  this.__registerHost();
14
51
  this.__attachShadow();
15
52
  this.cookies = createEvent(this, "cookies", 7);
16
- /**
17
- * Scrolls the page smoothly back to the top.
18
- * Called when the "Back to top" button is clicked.
19
- * @private
20
- */
21
53
  this.backToTop = () => {
22
54
  window.scrollTo({ top: 0, behavior: 'smooth' });
23
55
  };
56
+ this.emitCookies = () => {
57
+ this.cookies.emit('toggle');
58
+ };
24
59
  this.social = false;
25
- this.variant = 'default';
60
+ this.variant = 'inverse';
26
61
  this.enableScrollTop = false;
27
62
  this.fundedBy = 'EBRAINS is funded by the Horizon Europe Framework Programme.';
28
63
  this.rightsReserved = `${new Date().getFullYear()} EBRAINS. All rights reserved.`;
29
- this.cookiesPreferences = 'Cookies preferences';
64
+ this.cookiesPreferences = 'Cookie Preferences';
30
65
  this.enableCookiesSettings = false;
31
66
  this.backToTopAriaLabel = 'Back to Top';
32
- this.showMatomoNotice = false;
67
+ this.columns = undefined;
68
+ this.resolvedColumns = DEFAULT_COLUMNS;
69
+ }
70
+ componentWillLoad() {
71
+ this.resolvedColumns = this.parseColumns(this.columns);
72
+ }
73
+ onColumnsChange(value) {
74
+ this.resolvedColumns = this.parseColumns(value);
75
+ }
76
+ /**
77
+ * Resolve the `columns` prop to a usable array.
78
+ * - undefined / null → defaults
79
+ * - JSON-parseable str → parsed array
80
+ * - already an array → used as-is
81
+ * - anything else (malformed JSON, wrong shape) → defaults + console warning
82
+ *
83
+ * Defensive parsing so a typo in a Hugo template's attribute doesn't
84
+ * render an empty footer in production. Failure logs a warning but
85
+ * keeps the footer working with sensible defaults.
86
+ */
87
+ parseColumns(value) {
88
+ if (value === undefined || value === null || value === '')
89
+ return DEFAULT_COLUMNS;
90
+ if (Array.isArray(value))
91
+ return value;
92
+ if (typeof value === 'string') {
93
+ try {
94
+ const parsed = JSON.parse(value);
95
+ if (Array.isArray(parsed))
96
+ return parsed;
97
+ console.warn('eds-footer: `columns` JSON parsed but is not an array; using defaults');
98
+ return DEFAULT_COLUMNS;
99
+ }
100
+ catch (e) {
101
+ console.warn('eds-footer: failed to parse `columns` JSON, using defaults', e);
102
+ return DEFAULT_COLUMNS;
103
+ }
104
+ }
105
+ return DEFAULT_COLUMNS;
33
106
  }
34
107
  componentDidLoad() {
35
108
  var _a;
36
109
  this.backBtn = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#toTop');
37
110
  }
38
111
  handleScroll() {
39
- if (!this.backBtn) {
112
+ if (!this.backBtn)
40
113
  return;
41
- }
42
114
  const shouldShow = window.scrollY > 100 && document.body.scrollHeight > window.innerHeight;
43
115
  this.backBtn.style.opacity = shouldShow ? '1' : '0';
44
116
  this.backBtn.style.pointerEvents = shouldShow ? 'auto' : 'none';
@@ -48,38 +120,55 @@ const EdsFooter = /*@__PURE__*/ proxyCustomElement(class EdsFooter extends HTMLE
48
120
  btn.setAttribute('tabindex', shouldShow ? '0' : '-1');
49
121
  }
50
122
  }
51
- toggleCookiesConsent() {
52
- this.cookies.emit('toggle');
53
- }
54
123
  /**
55
- * Renders the footer component with optional sections and elements,
56
- * including social network links, a Horizon Europe funding acknowledgment, and
57
- * legal links such as "Cookies Preferences" and copyright information.
124
+ * Render one link inside a column.
125
+ * - `action: 'cookies'` button-like anchor that fires the cookies event
126
+ * - `href` present → real anchor (target=_blank when `external`)
127
+ * - neither → plain text span (e.g. "MIT License")
58
128
  */
129
+ renderLink(link, index) {
130
+ if (link.action === 'cookies') {
131
+ if (!this.enableCookiesSettings)
132
+ return null;
133
+ return (h("li", { key: `cookies-${index}` }, h("a", { href: "javascript:void(0)", class: "footer-link", onClick: this.emitCookies, role: "button" }, this.cookiesPreferences || link.label)));
134
+ }
135
+ if (link.href) {
136
+ const external = link.external === true;
137
+ 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)));
138
+ }
139
+ return (h("li", { key: `text-${index}` }, h("span", { class: "footer-text-item" }, link.label)));
140
+ }
59
141
  render() {
60
142
  const year = new Date().getFullYear();
61
143
  const rights = this.rightsReserved || `${year} EBRAINS. All rights reserved.`;
62
144
  const isInverse = this.variant === 'inverse';
63
- const footerClasses = isInverse ? 'bg-strongest text-inverse' : '';
64
- const borderClasses = isInverse ? 'border-inverse-softer' : 'border-softest';
65
- const textClasses = isInverse ? 'text-inverse' : 'text-default';
66
- 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: () => {
67
- this.toggleCookiesConsent();
68
- } })) : 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)))));
145
+ // Class hooks driven by variant the CSS file styles each
146
+ // selector independently rather than relying on prop-based
147
+ // inline styles, so theme tokens stay overridable from outside
148
+ // via the host's CSS custom properties.
149
+ const rootClasses = ['eds-footer-root', isInverse ? 'theme-inverse' : 'theme-default']
150
+ .join(' ');
151
+ return (h("footer", { key: 'b09063376e3bd78845302473a96884bd473cea09', 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: '3aeb8f496bb4c3c73da907ba9b9fbb72841be213', class: "footer-container" }, h("div", { key: 'e7e33ce7dee8079a9aff17d45963dfaff9576121', class: "footer-grid" }, h("div", { key: 'e6fc738e086774e114c5ceef1b82fea2e2840990', class: "footer-brand" }, h("div", { key: '96f7030269174c122ffe0117897a79b00020dd29', class: "footer-brand-row" }, h("a", { key: '5967c33efff435ceee2a45c21cae67749b91b9ba', 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: '3de7debe64d431152e47a4daefb7c9facf7bf951', 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: '50e3f0c5ae41e3e7cc5689ddf01a8944a6c5d2eb', d: "M0 0h640v480H0V0z", fill: "#039" }), h("path", { key: '2c0f61e6de734d7214accd10cefd3a39e31f36a1', 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: '9ff8e10db0e213754bfc73bcce1b3dd36bc62e30', class: "footer-funded" }, this.fundedBy)), h("p", { key: 'a24c4fbfe48c4c3c8d076f24da9c84b739a982d8', 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));
69
152
  }
70
153
  get el() { return this; }
154
+ static get watchers() { return {
155
+ "columns": ["onColumnsChange"]
156
+ }; }
71
157
  static get style() { return EdsFooterStyle0; }
72
158
  }, [1, "eds-footer", {
73
159
  "social": [4],
74
- "variant": [1],
160
+ "variant": [513],
75
161
  "enableScrollTop": [4, "enable-scroll-top"],
76
162
  "fundedBy": [1, "funded-by"],
77
163
  "rightsReserved": [1, "rights-reserved"],
78
164
  "cookiesPreferences": [1, "cookies-preferences"],
79
165
  "enableCookiesSettings": [4, "enable-cookies-settings"],
80
166
  "backToTopAriaLabel": [1, "back-to-top-aria-label"],
81
- "showMatomoNotice": [32]
82
- }, [[9, "scroll", "handleScroll"]]]);
167
+ "columns": [1],
168
+ "resolvedColumns": [32]
169
+ }, [[9, "scroll", "handleScroll"]], {
170
+ "columns": ["onColumnsChange"]
171
+ }]);
83
172
  function defineCustomElement() {
84
173
  if (typeof customElements === "undefined") {
85
174
  return;
@@ -1,21 +1,21 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
2
  import { s as sendAnalytics } from './analytics.js';
3
3
  import { p as parseData } from './sharedUtils.js';
4
+ import { s as safeInlineFormat, d as defineCustomElement$a } from './eds-input-footer2.js';
4
5
  import { d as defineCustomElement$g } from './eds-button2.js';
5
6
  import { d as defineCustomElement$f } from './eds-icon-wrapper2.js';
6
7
  import { d as defineCustomElement$e } from './eds-input2.js';
7
8
  import { d as defineCustomElement$d } from './eds-input-dropzone2.js';
8
9
  import { d as defineCustomElement$c } from './eds-input-field2.js';
9
10
  import { d as defineCustomElement$b } from './eds-input-file2.js';
10
- import { d as defineCustomElement$a } from './eds-input-footer2.js';
11
11
  import { d as defineCustomElement$9 } from './eds-input-label2.js';
12
12
  import { d as defineCustomElement$8 } from './eds-input-range2.js';
13
- import { d as defineCustomElement$7 } from './eds-input-search2.js';
14
- import { d as defineCustomElement$6 } from './eds-input-select2.js';
15
- import { d as defineCustomElement$5 } from './eds-kg-web-services-select2.js';
16
- import { d as defineCustomElement$4 } from './eds-link2.js';
17
- import { d as defineCustomElement$3 } from './eds-nps2.js';
18
- import { d as defineCustomElement$2 } from './eds-rating2.js';
13
+ import { d as defineCustomElement$7 } from './eds-input-select2.js';
14
+ import { d as defineCustomElement$6 } from './eds-kg-web-services-select2.js';
15
+ import { d as defineCustomElement$5 } from './eds-link2.js';
16
+ import { d as defineCustomElement$4 } from './eds-nps2.js';
17
+ import { d as defineCustomElement$3 } from './eds-rating2.js';
18
+ import { d as defineCustomElement$2 } from './eds-search-select2.js';
19
19
 
20
20
  // utils/validators.ts
21
21
  function validateField(name, value, type, required, maxLength, min, max) {
@@ -146,7 +146,8 @@ isFieldVisible) {
146
146
  delete errors[field.name];
147
147
  return;
148
148
  }
149
- if (field.type !== 'hidden') {
149
+ // 'content' is a presentational text block — no input, never validated.
150
+ if (field.type !== 'hidden' && field.type !== 'content') {
150
151
  if ((field.type === 'checkbox' || field.type === 'radio') && !field.options) {
151
152
  // Single checkbox or radio without multiple options
152
153
  const fieldErrors = validateSingleBox(field.name, field.required, formEl);
@@ -247,7 +248,7 @@ function getFormInitData({ initData, parsedFields, currentValues
247
248
  return { updatedValues };
248
249
  }
249
250
 
250
- const edsFormCss = ".container{width:calc(var(--container-width, 100%) - (2 * var(--breakout-container-outer-gutter, var(--container-outer-gutter, var(--outer-gutter, 0)))));margin-right:auto;margin-left:auto}.container>*{--container-outer-gutter:0;--breakout-container-outer-gutter:0}.flex{display:flex}.flex-col{flex-direction:column}.f-body-01{font-family:var(--f-body-01-fontFamily);font-weight:var(--f-body-01-fontWeight);font-size:var(--f-body-01-fontSize);line-height:var(--f-body-01-lineHeight);letter-spacing:var(--f-body-01-letterSpacing)}.f-body-02{font-family:var(--f-body-02-fontFamily);font-weight:var(--f-body-02-fontWeight);font-size:var(--f-body-02-fontSize);line-height:var(--f-body-02-lineHeight);letter-spacing:var(--f-body-02-letterSpacing)}.f-body-01 b,.f-body-01 strong{font-weight:var(--f-body-01---bold-weight, bold)}.f-body-02 b,.f-body-02 strong{font-weight:var(--f-body-02---bold-weight, bold)}.f-heading-04{font-family:var(--f-heading-04-fontFamily);font-weight:600;font-size:var(--f-heading-04-fontSize);line-height:var(--f-heading-04-lineHeight);letter-spacing:var(--f-heading-04-letterSpacing)}.f-heading-05{font-family:var(--f-heading-05-fontFamily);font-weight:600;font-size:var(--f-heading-05-fontSize);line-height:var(--f-heading-05-lineHeight);letter-spacing:var(--f-heading-05-letterSpacing);overflow:visible}.text-light{color:var(--grey-dark)}.rounded-xs{border-radius:4px}.rounded-sm{border-radius:8px}.border-softer{border-color:rgba(0, 0, 0, .1)}.border-2{border-width:2px}.border-t-2{border-top-width:2px}.mt-20{margin-top:1.25rem}.mt-32{margin-top:2rem}.mt-64{margin-top:4rem}.mb-32{margin-bottom:2rem}.pt-28{padding-top:1.75rem}.pt-32{padding-top:2rem}.pt-64{padding-top:4rem}.pl-8{padding-left:0.5rem}.pl-16{padding-left:1rem}.border-l-2{border-left-width:2px}.gap-y-8{row-gap:0.5rem}.gap-y-16{row-gap:1rem}.gap-y-20{row-gap:1.25rem}.gap-y-24{row-gap:1.5rem}.border-group{border-left:1px solid var(--soft-color, #ddd);padding-left:1rem}.bg-inverse{background-color:var(--white)}.form-brand{box-shadow:0 2px 12px rgba(0, 0, 0, 0.08);border-left:4px solid var(--brand-green);animation:fadeInUp 0.6s ease}@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.effect-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms;transition-timing-function:cubic-bezier(0, 0, 0.2, 1)}.shadow-hover{--tw-shadow:0px 0px 16px rgba(0, 0, 0, 0.2);--tw-shadow-colored:0px 0px 16px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.cursor-pointer{cursor:pointer}.effect-focus-within{outline-width:3px;outline-offset:2px;outline-color:var(--brand-green)}.effect-focus-within:focus-within{outline-style:solid}.relative{position:relative}.rounded-sm{border-radius:8px}.rounded-lg{border-radius:16px}.px-16{padding-left:1rem;padding-right:1rem}.pb-4{padding-bottom:0.25rem}.pb-16{padding-bottom:1rem}.p-32{padding:2rem}.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}.w-full{width:100%}.justify-between{justify-content:space-between}.items-center{align-items:center}@media (min-width: 750px){.md\\:flex-row-reverse{flex-direction:row-reverse}.md\\:justify-between{justify-content:space-between}.md\\:gap-y-0{row-gap:0}.md\\:w-auto{width:auto}.md\\:mt-64{margin-top:4rem}.md\\:pt-64{padding-top:4rem}}";
251
+ const edsFormCss = ".container{width:calc(var(--container-width, 100%) - (2 * var(--breakout-container-outer-gutter, var(--container-outer-gutter, var(--outer-gutter, 0)))));margin-right:auto;margin-left:auto}.container>*{--container-outer-gutter:0;--breakout-container-outer-gutter:0}.flex{display:flex}.flex-col{flex-direction:column}.f-body-01{font-family:var(--f-body-01-fontFamily);font-weight:var(--f-body-01-fontWeight);font-size:var(--f-body-01-fontSize);line-height:var(--f-body-01-lineHeight);letter-spacing:var(--f-body-01-letterSpacing)}.f-body-02{font-family:var(--f-body-02-fontFamily);font-weight:var(--f-body-02-fontWeight);font-size:var(--f-body-02-fontSize);line-height:var(--f-body-02-lineHeight);letter-spacing:var(--f-body-02-letterSpacing)}.f-body-01 b,.f-body-01 strong{font-weight:var(--f-body-01---bold-weight, bold)}.f-body-02 b,.f-body-02 strong{font-weight:var(--f-body-02---bold-weight, bold)}.f-heading-04{font-family:var(--f-heading-04-fontFamily);font-weight:600;font-size:var(--f-heading-04-fontSize);line-height:var(--f-heading-04-lineHeight);letter-spacing:var(--f-heading-04-letterSpacing)}.f-heading-05{font-family:var(--f-heading-05-fontFamily);font-weight:600;font-size:var(--f-heading-05-fontSize);line-height:var(--f-heading-05-lineHeight);letter-spacing:var(--f-heading-05-letterSpacing);overflow:visible}.text-light{color:var(--grey-dark)}.rounded-xs{border-radius:4px}.rounded-sm{border-radius:8px}.border-softer{border-color:rgba(0, 0, 0, .1)}.border-2{border-width:2px}.border-t-2{border-top-width:2px}.mt-20{margin-top:1.25rem}.mt-32{margin-top:2rem}.mt-64{margin-top:4rem}.mb-32{margin-bottom:2rem}.pt-28{padding-top:1.75rem}.pt-32{padding-top:2rem}.pt-64{padding-top:4rem}.pl-8{padding-left:0.5rem}.pl-16{padding-left:1rem}.border-l-2{border-left-width:2px}.gap-y-8{row-gap:0.5rem}.gap-y-16{row-gap:1rem}.gap-y-20{row-gap:1.25rem}.gap-y-24{row-gap:1.5rem}.border-group{border-left:1px solid var(--soft-color, #ddd);padding-left:1rem}.bg-inverse{background-color:var(--white)}.form-brand{box-shadow:0 2px 12px rgba(0, 0, 0, 0.08);border-left:4px solid var(--brand-green);animation:fadeInUp 0.6s ease}@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.effect-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms;transition-timing-function:cubic-bezier(0, 0, 0.2, 1)}.shadow-hover{--tw-shadow:0px 0px 16px rgba(0, 0, 0, 0.2);--tw-shadow-colored:0px 0px 16px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.cursor-pointer{cursor:pointer}.effect-focus-within{outline-width:3px;outline-offset:2px;outline-color:var(--brand-green)}.effect-focus-within:focus-within{outline-style:solid}.relative{position:relative}.rounded-sm{border-radius:8px}.rounded-lg{border-radius:16px}.px-16{padding-left:1rem;padding-right:1rem}.pb-4{padding-bottom:0.25rem}.pb-16{padding-bottom:1rem}.p-32{padding:2rem}.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}.w-full{width:100%}.justify-between{justify-content:space-between}.items-center{align-items:center}@media (min-width: 750px){.md\\:flex-row-reverse{flex-direction:row-reverse}.md\\:justify-between{justify-content:space-between}.md\\:gap-y-0{row-gap:0}.md\\:w-auto{width:auto}.md\\:mt-64{margin-top:4rem}.md\\:pt-64{padding-top:4rem}}.eds-desc-link{position:relative;display:inline-block;color:var(--brand-black);text-decoration:none}.eds-desc-link::after{content:'';position:absolute;bottom:-2px;left:0;width:0;height:2px;background-color:var(--brand-green);transition:width 0.3s ease}.eds-desc-link:hover::after{width:100%}.eds-desc-link:focus-visible::after{width:0}.eds-content-block{line-height:1.5;color:var(--brand-black, #07140d)}.eds-content-block strong{font-weight:600}.eds-content-block .eds-desc-link{font-weight:600}";
251
252
  const EdsFormStyle0 = edsFormCss;
252
253
 
253
254
  const EdsForm$1 = /*@__PURE__*/ proxyCustomElement(class EdsForm extends HTMLElement {
@@ -437,7 +438,20 @@ const EdsForm$1 = /*@__PURE__*/ proxyCustomElement(class EdsForm extends HTMLEle
437
438
  if (this.setFormUrl && typeof window !== 'undefined') {
438
439
  formData.set('form_url', window.location.href);
439
440
  }
441
+ // Group fields by name so we can drop values for fields hidden by a condition.
442
+ // A name may be reused across mutually-exclusive conditional variants (e.g. a
443
+ // `web_app_url` shown for service_type=web_app AND another for =platform), so a
444
+ // value is dropped ONLY when EVERY field with that name is hidden — if any
445
+ // variant is visible, its value is kept.
446
+ const fieldsByName = {};
447
+ this.parsedFields.forEach((f) => {
448
+ (fieldsByName[f.name] = fieldsByName[f.name] || []).push(f);
449
+ });
440
450
  Object.keys(this.values).forEach((key) => {
451
+ const fields = fieldsByName[key];
452
+ if (fields && fields.length && !fields.some((f) => this.isFieldVisible(f))) {
453
+ return; // all fields with this name are conditionally hidden — skip
454
+ }
441
455
  const value = this.values[key];
442
456
  // Handle File arrays (from file inputs)
443
457
  if (Array.isArray(value)) {
@@ -732,29 +746,53 @@ const EdsForm$1 = /*@__PURE__*/ proxyCustomElement(class EdsForm extends HTMLEle
732
746
  return map;
733
747
  }
734
748
  renderField(field) {
735
- var _a, _b, _c, _d;
749
+ var _a, _b, _c, _d, _e, _f, _g;
736
750
  if (!this.isFieldVisible(field)) {
737
751
  return null;
738
752
  }
753
+ // 0) Presentational "Text Block" — static formatted text, NOT an input.
754
+ // It has no value, is never added to the submission (makeFormData only
755
+ // iterates this.values) and is never validated (see formValidators). The
756
+ // text runs through formatDescription, which escapes HTML first, so author
757
+ // content can never inject markup — only the **bold**/[link]/newline subset.
758
+ if (field.type === 'content') {
759
+ const raw = ((_b = (_a = field.content) !== null && _a !== void 0 ? _a : field.label) !== null && _b !== void 0 ? _b : '');
760
+ return (h("div", { class: "eds-content-block f-body-02 text-default", key: field.name, innerHTML: this.formatDescription(raw) }));
761
+ }
739
762
  // 1) Handle rating
740
763
  if (field.type === 'rating') {
741
764
  // pull the current value (or zero)
742
765
  const val = this.values[field.name] || 0;
743
- return (h("div", { class: "form-group rating-field", key: field.name }, h("div", { class: "flex justify-between" }, field && (h("eds-input-label", { name: `rating-${field.name}`, label: field.label, disabled: field.disabled, required: field.required }))), h("eds-rating", { id: `rating-${field.name}`, "rating-type": field.ratingType, "rating-count": field.ratingCount, "selected-rating": val, onRating: (e) => this.handleRating(e, field) }), h("div", { class: "mt-6" }, h("eds-input-footer", { id: `${field.name}-footer`, name: field.name, message: field.message, "error-message": (_a = this.errors[field.name]) === null || _a === void 0 ? void 0 : _a.join('<br/>'), error: !!this.errors[field.name], link: field.link }))));
766
+ return (h("div", { class: "form-group rating-field", key: field.name }, h("div", { class: "flex justify-between" }, field && (h("eds-input-label", { name: `rating-${field.name}`, label: field.label, disabled: field.disabled, required: field.required }))), h("eds-rating", { id: `rating-${field.name}`, "rating-type": field.ratingType, "rating-count": field.ratingCount, "selected-rating": val, onRating: (e) => this.handleRating(e, field) }), h("div", { class: "mt-6" }, h("eds-input-footer", { id: `${field.name}-footer`, name: field.name, message: field.message, "error-message": (_c = this.errors[field.name]) === null || _c === void 0 ? void 0 : _c.join('<br/>'), error: !!this.errors[field.name], link: field.link }))));
744
767
  }
745
768
  else if (field.type === 'nps') {
746
769
  // pull the current value (or null)
747
770
  const val = this.values[field.name] !== undefined ? this.values[field.name] : null;
748
- return (h("div", { class: "form-group nps-field", key: field.name }, h("div", { class: "flex justify-between" }, field && (h("eds-input-label", { name: `nps-${field.name}`, label: field.question, disabled: field.disabled, required: field.required }))), h("eds-nps", { id: `nps-${field.name}`, "right-label": field.rightLabel, "left-label": field.leftLabel, "selected-value": val, onNps: (e) => this.handleNPS(e, field) }), h("div", { class: "mt-6" }, h("eds-input-footer", { id: `${field.name}-footer`, name: field.name, "error-message": (_b = this.errors[field.name]) === null || _b === void 0 ? void 0 : _b.join('<br/>'), error: !!this.errors[field.name] }))));
771
+ return (h("div", { class: "form-group nps-field", key: field.name }, h("div", { class: "flex justify-between" }, field && (h("eds-input-label", { name: `nps-${field.name}`, label: field.question, disabled: field.disabled, required: field.required }))), h("eds-nps", { id: `nps-${field.name}`, "right-label": field.rightLabel, "left-label": field.leftLabel, "selected-value": val, onNps: (e) => this.handleNPS(e, field) }), h("div", { class: "mt-6" }, h("eds-input-footer", { id: `${field.name}-footer`, name: field.name, "error-message": (_d = this.errors[field.name]) === null || _d === void 0 ? void 0 : _d.join('<br/>'), error: !!this.errors[field.name] }))));
772
+ }
773
+ else if (field.type === 'search-select') {
774
+ return (h("eds-search-select", { key: field.name, name: field.name, label: field.label, source: field.source, options: field.options, multiple: !!field.multiple, "api-base": field.apiBase || '/api/v1', placeholder: field.placeholder, required: field.required, disabled: field.disabled, hint: field.hint, message: field.message, error: !!this.errors[field.name], "error-message": (_e = this.errors[field.name]) === null || _e === void 0 ? void 0 : _e.join('<br/>'), value: this.values[field.name], onEdsinput: (e) => this.handleInput(e, field), onEdschange: (e) => this.handleChange(e, field) }));
749
775
  }
750
776
  else if (field.type === 'kg-web-service') {
751
- return (h("eds-kg-web-services-select", { key: field.name, name: field.name, label: field.label, "api-endpoint": field.apiEndpoint || '/api/v1/kg/web-services/cached', placeholder: field.placeholder, required: field.required, disabled: field.disabled, hint: field.hint, message: field.message, error: !!this.errors[field.name], "error-message": (_c = this.errors[field.name]) === null || _c === void 0 ? void 0 : _c.join('<br/>'), value: this.values[field.name], size: field.size || 500, onEdsinput: (e) => this.handleInput(e, field), onEdschange: (e) => this.handleChange(e, field) }));
777
+ return (h("eds-kg-web-services-select", { key: field.name, name: field.name, label: field.label, "api-endpoint": field.apiEndpoint || '/api/v1/kg/web-services/cached', placeholder: field.placeholder, required: field.required, disabled: field.disabled, hint: field.hint, message: field.message, error: !!this.errors[field.name], "error-message": (_f = this.errors[field.name]) === null || _f === void 0 ? void 0 : _f.join('<br/>'), value: this.values[field.name], size: field.size || 500, onEdsinput: (e) => this.handleInput(e, field), onEdschange: (e) => this.handleChange(e, field) }));
752
778
  }
753
- return (h("eds-input-field", { key: field.name, name: field.name, label: field.label, placeholder: field.placeholder, type: field.type, value: this.values[field.name], required: field.required, hint: field.hint, message: field.message, link: field.link, error: !!this.errors[field.name], errorMessage: (_d = this.errors[field.name]) === null || _d === void 0 ? void 0 : _d.join('<br/>'), options: field.options, onInput: (e) => this.handleInput(e, field), onChangeNative: (e) => this.handleChange(e, field) }));
779
+ return (h("eds-input-field", { key: field.name, name: field.name, label: field.label, placeholder: field.placeholder, type: field.type, value: this.values[field.name], required: field.required, hint: field.hint, message: field.message, link: field.link, error: !!this.errors[field.name], errorMessage: (_g = this.errors[field.name]) === null || _g === void 0 ? void 0 : _g.join('<br/>'), options: field.options, onInput: (e) => this.handleInput(e, field), onChangeNative: (e) => this.handleChange(e, field) }));
754
780
  }
755
781
  async getData() {
756
782
  return this.makeFormData();
757
783
  }
784
+ /**
785
+ * Render the form/step description with a small, safe subset of inline
786
+ * formatting so authors can add links and emphasis:
787
+ * **bold** → <strong>
788
+ * [label](url) → <a> (only http/https/mailto; others render as text)
789
+ * blank line / \n → paragraph / line break
790
+ * HTML is escaped FIRST, so author text can never inject markup — only the
791
+ * whitelisted patterns above produce tags.
792
+ */
793
+ formatDescription(text) {
794
+ return safeInlineFormat(text);
795
+ }
758
796
  render() {
759
797
  const hiddenFields = this.parsedFields.filter((field) => field.type === 'hidden');
760
798
  //const otherFields = this.parsedFields.filter((field) => field.type !== 'hidden');
@@ -770,9 +808,9 @@ const EdsForm$1 = /*@__PURE__*/ proxyCustomElement(class EdsForm extends HTMLEle
770
808
  else if (this.formStyle === 'brand') {
771
809
  styleClasses = 'bg-inverse form-brand relative rounded-xs p-32';
772
810
  }
773
- return (h("form", { key: '5e58460e52950974cdf11001123f9ffb23dc659e', class: styleClasses, ref: (el) => (this.formEl = el), autocomplete: "on", onSubmit: this.handleSubmit }, h("div", { key: 'ff3a33e3a8d311c86712daa68c80aac767d82a9b', class: "flex flex-col gap-y-20 overflow-visible" }, this.title && (h("span", { key: 'b1f363c03074f944a8f60387a40cef6fa791b188', role: "heading", class: "f-heading-05 pb-4 block" }, this.title)), this.description && h("span", { key: '7a9b5ea5451cf59ac47ec81dd1a44c7c9e6326a3', class: "f-body-02 text-light" }, this.description), h("slot", { key: '1e50a245fa37b73149a22308fda4039051d4639c' })), hiddenFields.map((field, index) => (h("eds-input", { key: index, type: "hidden", name: field.name, value: field.value }))), this.parsedGroups
811
+ return (h("form", { key: '5717a276eb4bcb1b40bb6c3a3d68e2372ccf0b37', class: styleClasses, ref: (el) => (this.formEl = el), autocomplete: "on", onSubmit: this.handleSubmit }, h("div", { key: '8e9fec59b6cafccabbb67381a12541f12201cc48', class: "flex flex-col gap-y-20 overflow-visible" }, this.title && (h("span", { key: 'f47c68db954de63773257f9c898141be27278a00', role: "heading", class: "f-heading-05 pb-4 block" }, this.title)), this.description && h("span", { key: '4287bb5f9c31cf5d3953a032de4a8c269e1feb7e', class: "f-body-02 text-light", innerHTML: this.formatDescription(this.description) }), h("slot", { key: 'e9e52696eab6477354ac5ee6cbe08399483b1b37' })), hiddenFields.map((field, index) => (h("eds-input", { key: index, type: "hidden", name: field.name, value: field.value }))), this.parsedGroups
774
812
  .filter((g) => Array.isArray(buckets[g.id]) && buckets[g.id].length > 0)
775
- .map((g) => (h("div", { class: "mt-32", key: g.id }, h("span", { class: "f-body-02" }, h("b", null, g.title)), h("div", { class: "border-group mt-32 mb-32 flex flex-col gap-y-24" }, buckets[g.id].map((f) => this.renderField(f)))))), h("div", { key: '6cd08f342c0f9004d10628827720cb641339fcd5', class: "flex flex-col mt-32 gap-y-24" }, buckets['__ungrouped'].map((f) => this.renderField(f))), (this.formBtn || this.clearBtn) && (h("div", { key: 'e8d37bedbd49c9fc94cbd2e2a887448f3764b8f9', class: "mt-32 md:mt-64 flex flex-col items-center md:flex-row-reverse md:justify-between gap-y-16 md:gap-y-0" }, this.formBtn && (h("eds-button", { key: 'ec878c5edaa87cf9bff0424b92e5c82605856e67', intent: this.buttonIntent, pill: true, label: this.formBtnLabel, disabled: this.isSubmitting, loading: this.isSubmitting, icon: 'arrow-right', size: "large", onClick: () => this.handleSubmit() })), this.clearBtn && (h("eds-button", { key: '1158dc2af47f9f523ccd2ee1435a4147fc0a646c', intent: "neutral", pill: true, size: "large", label: this.clearBtnLabel, disabled: this.isSubmitting || !this.values || Object.keys(this.values).length === 0, onClick: (e) => this.handleClear(e) }))))));
813
+ .map((g) => (h("div", { class: "mt-32", key: g.id }, h("span", { class: "f-body-02" }, h("b", null, g.title)), h("div", { class: "border-group mt-32 mb-32 flex flex-col gap-y-24" }, buckets[g.id].map((f) => this.renderField(f)))))), h("div", { key: '22d248217ea85d68e2be652ddcbfd13ed4775934', class: "flex flex-col mt-32 gap-y-24" }, buckets['__ungrouped'].map((f) => this.renderField(f))), (this.formBtn || this.clearBtn) && (h("div", { key: '101f9e275d68f59b762938ff3f7d7102660b80f0', class: "mt-32 md:mt-64 flex flex-col items-center md:flex-row-reverse md:justify-between gap-y-16 md:gap-y-0" }, this.formBtn && (h("eds-button", { key: '02d427d951c715634605b6977f61cee67abaa8b0', intent: this.buttonIntent, pill: true, label: this.formBtnLabel, disabled: this.isSubmitting, loading: this.isSubmitting, icon: 'arrow-right', size: "large", onClick: () => this.handleSubmit() })), this.clearBtn && (h("eds-button", { key: 'abf330715df3acf2a4bdc8d4f322fc13c70c267f', intent: "neutral", pill: true, size: "large", label: this.clearBtnLabel, disabled: this.isSubmitting || !this.values || Object.keys(this.values).length === 0, onClick: (e) => this.handleClear(e) }))))));
776
814
  }
777
815
  get el() { return this; }
778
816
  static get watchers() { return {
@@ -811,7 +849,7 @@ function defineCustomElement$1() {
811
849
  if (typeof customElements === "undefined") {
812
850
  return;
813
851
  }
814
- const components = ["eds-form", "eds-button", "eds-icon-wrapper", "eds-input", "eds-input-dropzone", "eds-input-field", "eds-input-file", "eds-input-footer", "eds-input-label", "eds-input-range", "eds-input-search", "eds-input-select", "eds-kg-web-services-select", "eds-link", "eds-nps", "eds-rating"];
852
+ const components = ["eds-form", "eds-button", "eds-icon-wrapper", "eds-input", "eds-input-dropzone", "eds-input-field", "eds-input-file", "eds-input-footer", "eds-input-label", "eds-input-range", "eds-input-select", "eds-kg-web-services-select", "eds-link", "eds-nps", "eds-rating", "eds-search-select"];
815
853
  components.forEach(tagName => { switch (tagName) {
816
854
  case "eds-form":
817
855
  if (!customElements.get(tagName)) {
@@ -863,32 +901,32 @@ function defineCustomElement$1() {
863
901
  defineCustomElement$8();
864
902
  }
865
903
  break;
866
- case "eds-input-search":
904
+ case "eds-input-select":
867
905
  if (!customElements.get(tagName)) {
868
906
  defineCustomElement$7();
869
907
  }
870
908
  break;
871
- case "eds-input-select":
909
+ case "eds-kg-web-services-select":
872
910
  if (!customElements.get(tagName)) {
873
911
  defineCustomElement$6();
874
912
  }
875
913
  break;
876
- case "eds-kg-web-services-select":
914
+ case "eds-link":
877
915
  if (!customElements.get(tagName)) {
878
916
  defineCustomElement$5();
879
917
  }
880
918
  break;
881
- case "eds-link":
919
+ case "eds-nps":
882
920
  if (!customElements.get(tagName)) {
883
921
  defineCustomElement$4();
884
922
  }
885
923
  break;
886
- case "eds-nps":
924
+ case "eds-rating":
887
925
  if (!customElements.get(tagName)) {
888
926
  defineCustomElement$3();
889
927
  }
890
928
  break;
891
- case "eds-rating":
929
+ case "eds-search-select":
892
930
  if (!customElements.get(tagName)) {
893
931
  defineCustomElement$2();
894
932
  }
@@ -76,7 +76,7 @@ const EdsFrame$1 = /*@__PURE__*/ proxyCustomElement(class EdsFrame extends HTMLE
76
76
  }
77
77
  }
78
78
  render() {
79
- return (h("div", { key: '0fa74cf426f9d934a035b5e3f6c9e5722c40beab', class: this.articleClasses() }, h("div", { key: '65ab4084241ce1b5337e9bfaaffb5c2aaceec28e', class: "effect-height flex items-center justify-between py-8 px-12" }, h("span", { key: 'f1cda1a4d61b47550d9d8cd08986f2253710c4ea', class: "f-ui-02" }, this.frameLabel), !this.iframeError && this.url && this.urlLabel ? (h("eds-link", { label: this.urlLabel, url: this.url, intent: this.intent, class: "ml-auto", external: true, disabled: false, icon: "arrow-up-right" })) : null), h("div", { key: 'e02ffe4f38f1375a0694f2acec72406824745437', class: "border-softer" }, this.iframeError ? (h("div", { class: "container ml-8 mr-8 mt-16" }, this.errorMessage)) : (h("iframe", { src: this.frameSrc, width: "100%", height: this.getFrameHeight(), title: this.frameLabel, frameBorder: "0", allowFullScreen: true })))));
79
+ return (h("div", { key: 'ddbc978054f645eb990cde6bdd26647bd01eeb1a', class: this.articleClasses() }, h("div", { key: '0a16fbd950742b8a75428b3705deaa03ef785a5b', class: "effect-height flex items-center justify-between py-8 px-12" }, h("span", { key: '0c2a84cae101ec1e5352ed7be7b874b6ec45f37d', class: "f-ui-02" }, this.frameLabel), !this.iframeError && this.url && this.urlLabel ? (h("eds-link", { label: this.urlLabel, url: this.url, intent: this.intent, class: "ml-auto", external: true, disabled: false, icon: "arrow-up-right" })) : null), h("div", { key: 'c001f1b33c5136820155b0299e83b6dc49fbbd43', class: "border-softer" }, this.iframeError ? (h("div", { class: "container ml-8 mr-8 mt-16" }, this.errorMessage)) : (h("iframe", { src: this.frameSrc, width: "100%", height: this.getFrameHeight(), title: this.frameLabel, frameBorder: "0", allowFullScreen: true })))));
80
80
  }
81
81
  get el() { return this; }
82
82
  static get style() { return EdsFrameStyle0; }
@@ -49,7 +49,7 @@ const EdsGauge$1 = /*@__PURE__*/ proxyCustomElement(class EdsGauge extends HTMLE
49
49
  const textStyle = {
50
50
  fontSize: `${fontSize}px`
51
51
  };
52
- return (h("div", { key: 'f5801b63984f42bad206445de4e865c0e161b88e', role: "progressbar", "aria-valuemin": this.valueMin, "aria-valuemax": this.valueMax, "aria-valuenow": clamped, "aria-label": `Gauge value: ${clamped} of ${this.valueMax}`, class: "relative inline-block rounded-full overflow-hidden", style: containerStyle }, h("div", { key: '1a982401ba1853e937dfbb9aeb4736d4665abab1', class: "absolute bg-inverse rounded-full", style: maskStyle }), h("div", { key: '0db002b1a3a3f49fe3fd0f3aa4d3fd0e2ee6a45d', class: "absolute inset-0 flex items-center justify-center" }, h("span", { key: 'a011eaaab9e6f3d15d706bf9309ae7bafa689387', class: "f-body-01 text-default", style: textStyle }, clamped))));
52
+ return (h("div", { key: '5629f8adbc6f144aad49062883cb85ecf24fc16c', role: "progressbar", "aria-valuemin": this.valueMin, "aria-valuemax": this.valueMax, "aria-valuenow": clamped, "aria-label": `Gauge value: ${clamped} of ${this.valueMax}`, class: "relative inline-block rounded-full overflow-hidden", style: containerStyle }, h("div", { key: 'd668b54b0a5f4bf260a2f1153781c59741bd8694', class: "absolute bg-inverse rounded-full", style: maskStyle }), h("div", { key: 'f08feba97d30ed893a72a7e07e412aa82ea8cd3d', class: "absolute inset-0 flex items-center justify-center" }, h("span", { key: '2a8dccde44677d4a4b742cd992144d6cf399ee9b', class: "f-body-01 text-default", style: textStyle }, clamped))));
53
53
  }
54
54
  static get style() { return EdsGaugeStyle0; }
55
55
  }, [1, "eds-gauge", {
@@ -7,7 +7,7 @@ import { d as defineCustomElement$4 } from './eds-img2.js';
7
7
  import { d as defineCustomElement$3 } from './eds-link2.js';
8
8
  import { d as defineCustomElement$2 } from './eds-spinner2.js';
9
9
 
10
- const edsGitlabContributorsCss = ".container{width:calc(var(--container-width, 100%) - (2 * var(--breakout-container-outer-gutter, var(--container-outer-gutter, var(--outer-gutter, 0)))));margin-right:auto;margin-left:auto}.container>*{--container-outer-gutter:0;--breakout-container-outer-gutter:0}.flex{display:flex}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.grid{display:grid}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.gap-2{gap:0.5rem;}.gap-4{gap:1rem;}.gap-6{gap:1.5rem;}.p-5{padding:1.25rem;}.p-12{padding:3rem;}.pb-2{padding-bottom:0.25rem;}.pb-4{padding-bottom:1rem;}.mb-6{margin-bottom:1.5rem;}.m-0{margin:0}.mt-auto{margin-top:auto}.w-full{width:100%}.min-w-0{min-width:0}.text-xs{font-size:0.75rem;line-height:1rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.font-semibold{font-weight:600}.whitespace-nowrap{white-space:nowrap}.overflow-hidden{overflow:hidden}.text-ellipsis{text-overflow:ellipsis}.no-underline{text-decoration:none}.text-gray-600{color:var(--eds-color-gray-600, #4b5563)}.text-gray-900{color:var(--eds-color-gray-900, #111827)}.border-gray-200{border-color:var(--eds-color-gray-200, #e5e7eb)}.bg-white{background-color:var(--eds-color-white, #ffffff)}.text-primary-600{color:var(--eds-color-primary-600, #2563eb)}.hover\\:text-primary-600:hover{color:var(--eds-color-primary-600, #2563eb)}.border-primary-300{border-color:var(--eds-color-primary-300, #93c5fd)}.hover\\:border-primary-300:hover{border-color:var(--eds-color-primary-300, #93c5fd)}.text-success-600{color:var(--eds-color-success-600, #16a34a)}.text-error-600{color:var(--eds-color-error-600, #dc2626)}.border{border-width:1px}.border-b{border-bottom-width:1px}.rounded-lg{border-radius:var(--eds-radius-lg, 0.5rem);}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-colors{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.duration-200{transition-duration:200ms}.shadow-md{box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)}.hover\\:shadow-md:hover{box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)}.-translate-y-0\\.5{transform:translateY(-0.125rem);}.hover\\:-translate-y-0\\.5:hover{transform:translateY(-0.125rem)}.grid-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr))}@media (min-width: 640px){.sm\\:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media (min-width: 768px){.md\\:grid-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr))}}@media (min-width: 1024px){.lg\\:grid-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr))}.lg\\:grid-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr))}}.contributor-card{will-change:transform, box-shadow, border-color}.f-ui-01{font-family:var(--f-ui-01-fontFamily);font-weight:var(--f-ui-01-fontWeight);font-size:var(--f-ui-01-fontSize);line-height:var(--f-ui-01-lineHeight);letter-spacing:var(--f-ui-01-letterSpacing)}.text-default{color:var(--black)}.text-light{color:var(--grey-700)}.text-lighter{color:var(--grey-600)}";
10
+ const edsGitlabContributorsCss = ".container{width:calc(var(--container-width, 100%) - (2 * var(--breakout-container-outer-gutter, var(--container-outer-gutter, var(--outer-gutter, 0)))));margin-right:auto;margin-left:auto}.container>*{--container-outer-gutter:0;--breakout-container-outer-gutter:0}.flex{display:flex}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.grid{display:grid}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.gap-2{gap:0.5rem;}.gap-4{gap:1rem;}.gap-6{gap:1.5rem;}.p-5{padding:1.25rem;}.p-12{padding:3rem;}.pb-2{padding-bottom:0.25rem;}.pb-4{padding-bottom:1rem;}.mb-6{margin-bottom:1.5rem;}.m-0{margin:0}.mt-auto{margin-top:auto}.w-full{width:100%}.min-w-0{min-width:0}.text-xs{font-size:0.75rem;line-height:1rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.font-semibold{font-weight:600}.whitespace-nowrap{white-space:nowrap}.overflow-hidden{overflow:hidden}.text-ellipsis{text-overflow:ellipsis}.no-underline{text-decoration:none}.text-gray-600{color:var(--eds-color-gray-600, #4b5563)}.text-gray-900{color:var(--eds-color-gray-900, #111827)}.border-gray-200{border-color:var(--eds-color-gray-200, #e5e7eb)}.bg-white{background-color:var(--eds-color-white, #ffffff)}.text-primary-600{color:var(--eds-color-primary-600, #2563eb)}.hover\\:text-primary-600:hover{color:var(--eds-color-primary-600, #2563eb)}.border-primary-300{border-color:var(--eds-color-primary-300, #93c5fd)}.hover\\:border-primary-300:hover{border-color:var(--eds-color-primary-300, #93c5fd)}.text-success-600{color:var(--eds-color-success-600, #16a34a)}.text-error-600{color:var(--eds-color-error-600, #dc2626)}.border{border-width:1px}.border-b{border-bottom-width:1px}.rounded-lg{border-radius:var(--eds-radius-lg, 0.5rem);}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-colors{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.duration-200{transition-duration:200ms}.shadow-md{box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)}.hover\\:shadow-md:hover{box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)}.-translate-y-0\\.5{transform:translateY(-0.125rem);}.hover\\:-translate-y-0\\.5:hover{transform:translateY(-0.125rem)}.grid-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr))}@media (min-width: 640px){.sm\\:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media (min-width: 768px){.md\\:grid-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr))}}@media (min-width: 1024px){.lg\\:grid-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr))}.lg\\:grid-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr))}}.contributor-card{will-change:transform, box-shadow, border-color}.loading{position:relative;min-height:8rem;padding:1rem 1.25rem;color:var(--grey-dark, #7A7B7A);font-size:0.9375rem;border:1px solid rgba(0, 0, 0, 0.08);border-radius:0.25rem;background-color:rgba(0, 0, 0, 0.02)}.f-ui-01{font-family:var(--f-ui-01-fontFamily);font-weight:var(--f-ui-01-fontWeight);font-size:var(--f-ui-01-fontSize);line-height:var(--f-ui-01-lineHeight);letter-spacing:var(--f-ui-01-letterSpacing)}.text-default{color:var(--black)}.text-light{color:var(--grey-700)}.text-lighter{color:var(--grey-600)}";
11
11
  const EdsGitlabContributorsStyle0 = edsGitlabContributorsCss;
12
12
 
13
13
  const EdsGitlabContributors$1 = /*@__PURE__*/ proxyCustomElement(class EdsGitlabContributors extends HTMLElement {
@@ -230,7 +230,14 @@ const EdsGitlabContributors$1 = /*@__PURE__*/ proxyCustomElement(class EdsGitlab
230
230
  }
231
231
  render() {
232
232
  if (this.loading) {
233
- return (h("div", { class: "flex flex-col items-center justify-center p-12 gap-4" }, h("eds-spinner", { size: "md" }), h("p", { class: "text-base text-gray-600 m-0" }, "Loading contributors...")));
233
+ // Spinner placeholder mirrors eds-kg-learning-resources exactly
234
+ // same `.loading` wrapper (position: relative + min-height so the
235
+ // absolutely-positioned spinner anchors inside the box instead of
236
+ // escaping to the page), same eds-spinner props (sm/primary/
237
+ // transparent + message-as-prop), and the same role+aria-live for
238
+ // screen-reader announcement. Keep these two components in sync if
239
+ // the loading affordance ever changes.
240
+ return (h("div", { class: "loading", role: "status", "aria-live": "polite" }, h("eds-spinner", { size: "sm", variant: "primary", background: "transparent", message: "Loading contributors..." })));
234
241
  }
235
242
  if (this.error) {
236
243
  return (h("eds-alert", { message: "Error loading contributors", intent: "error" }));