@ebrains/components 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/dist/cjs/color-primary-palette_6.cjs.entry.js +14 -14
  2. package/dist/cjs/components-section.cjs.entry.js +1 -1
  3. package/dist/cjs/components.cjs.js +1 -1
  4. package/dist/cjs/correct-use-of-colors.cjs.entry.js +1 -1
  5. package/dist/cjs/docs-palettes.cjs.entry.js +1 -1
  6. package/dist/cjs/docs-tokens.cjs.entry.js +1 -1
  7. package/dist/cjs/{eds-accordion_52.cjs.entry.js → eds-accordion_53.cjs.entry.js} +1095 -336
  8. package/dist/cjs/eds-app-root.cjs.entry.js +1 -1
  9. package/dist/cjs/eds-cookies-preference.cjs.entry.js +1 -1
  10. package/dist/cjs/eds-feedback.cjs.entry.js +1 -1
  11. package/dist/cjs/eds-frame.cjs.entry.js +1 -1
  12. package/dist/cjs/eds-gauge.cjs.entry.js +1 -1
  13. package/dist/cjs/eds-gitlab-contributors.cjs.entry.js +35 -32
  14. package/dist/cjs/eds-icon-bluesky.cjs.entry.js +1 -1
  15. package/dist/cjs/eds-icon-eu.cjs.entry.js +1 -1
  16. package/dist/cjs/eds-icon-facebook.cjs.entry.js +1 -1
  17. package/dist/cjs/eds-icon-gitlab.cjs.entry.js +1 -1
  18. package/dist/cjs/eds-icon-linkedin.cjs.entry.js +1 -1
  19. package/dist/cjs/eds-icon-mastodon.cjs.entry.js +1 -1
  20. package/dist/cjs/eds-icon-twitter.cjs.entry.js +1 -1
  21. package/dist/cjs/eds-icon-youtube.cjs.entry.js +1 -1
  22. package/dist/cjs/eds-input-search.cjs.entry.js +76 -0
  23. package/dist/cjs/eds-modal.cjs.entry.js +18 -9
  24. package/dist/cjs/eds-pie.cjs.entry.js +2 -2
  25. package/dist/cjs/eds-section-core_2.cjs.entry.js +3 -3
  26. package/dist/cjs/eds-timeline.cjs.entry.js +1 -1
  27. package/dist/cjs/eds-toast-manager.cjs.entry.js +1 -1
  28. package/dist/cjs/eds-trl-badge.cjs.entry.js +184 -0
  29. package/dist/cjs/incorrect-use-of-colors.cjs.entry.js +1 -1
  30. package/dist/cjs/index-50bc1aa4.js +10 -2
  31. package/dist/cjs/loader.cjs.js +1 -1
  32. package/dist/cjs/logo-space.cjs.entry.js +58 -1
  33. package/dist/cjs/logo-variations-horizontal_2.cjs.entry.js +2 -2
  34. package/dist/cjs/logo-variations-tabs.cjs.entry.js +1 -1
  35. package/dist/cjs/logo-wrong-usage.cjs.entry.js +1 -1
  36. package/dist/cjs/svg-repository.cjs.entry.js +1 -1
  37. package/dist/cjs/token-list_3.cjs.entry.js +3 -3
  38. package/dist/cjs/token-ratios.cjs.entry.js +1 -1
  39. package/dist/cjs/token-spacing.cjs.entry.js +1 -1
  40. package/dist/cjs/token-typography.cjs.entry.js +8 -2
  41. package/dist/collection/collection-manifest.json +4 -1
  42. package/dist/collection/components/eds-accordion/eds-accordion.css +3 -2
  43. package/dist/collection/components/eds-accordion/eds-accordion.js +2 -5
  44. package/dist/collection/components/eds-accordion/eds-accordion.stories.js +7 -19
  45. package/dist/collection/components/eds-alert/eds-alert.css +14 -0
  46. package/dist/collection/components/eds-alert/eds-alert.js +2 -1
  47. package/dist/collection/components/eds-alert/eds-alert.stories.js +19 -147
  48. package/dist/collection/components/eds-avatar/eds-avatar.js +1 -1
  49. package/dist/collection/components/eds-avatar/eds-avatar.stories.js +2 -2
  50. package/dist/collection/components/eds-block-break/eds-block-break.js +1 -1
  51. package/dist/collection/components/eds-breadcrump/eds-breadcrump.js +1 -1
  52. package/dist/collection/components/eds-button/eds-button.css +15 -0
  53. package/dist/collection/components/eds-button/eds-button.js +17 -14
  54. package/dist/collection/components/eds-button/eds-button.stories.js +4 -1
  55. package/dist/collection/components/eds-cards/eds-card-app/eds-card-app.js +2 -5
  56. package/dist/collection/components/eds-cards/eds-card-composer/eds-card-desc/eds-card-desc.js +1 -1
  57. package/dist/collection/components/eds-cards/eds-card-composer/eds-card-title/eds-card-title.js +1 -1
  58. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.css +10 -1
  59. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.js +2 -5
  60. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.stories.js +4 -1
  61. package/dist/collection/components/eds-cards/eds-card-feature/eds-card-feature.js +2 -5
  62. package/dist/collection/components/eds-cards/eds-card-generic/eds-card-generic.js +2 -4
  63. package/dist/collection/components/eds-cards/eds-card-hero/eds-card-hero.js +6 -7
  64. package/dist/collection/components/eds-cards/eds-card-stat/eds-card-stat.js +6 -7
  65. package/dist/collection/components/eds-charts/eds-gauge/eds-gauge.js +1 -1
  66. package/dist/collection/components/eds-charts/eds-pie/eds-pie.js +2 -2
  67. package/dist/collection/components/eds-code-block/eds-code-block.css +72 -106
  68. package/dist/collection/components/eds-code-block/eds-code-block.js +1 -1
  69. package/dist/collection/components/eds-dropdown/eds-dropdown.js +30 -4
  70. package/dist/collection/components/eds-feedback/eds-feedback.js +1 -1
  71. package/dist/collection/components/eds-footer/eds-footer.css +143 -203
  72. package/dist/collection/components/eds-footer/eds-footer.js +176 -74
  73. package/dist/collection/components/eds-footer/eds-footer.stories.js +109 -17
  74. package/dist/collection/components/eds-form/eds-form.css +493 -1
  75. package/dist/collection/components/eds-form/eds-form.js +256 -14
  76. package/dist/collection/components/eds-form/eds-form.stories.js +110 -3
  77. package/dist/collection/components/eds-frame/eds-frame.js +1 -1
  78. package/dist/collection/components/eds-header/eds-header.js +1 -1
  79. package/dist/collection/components/eds-header/eds-header.stories.js +26 -12
  80. package/dist/collection/components/eds-icon-wrapper/eds-icon-wrapper.js +20 -1
  81. package/dist/collection/components/eds-icons/eds-icon-eu/eds-icon-eu.js +1 -1
  82. package/dist/collection/components/eds-icons/eds-icon-gitlab/eds-icon-gitlab.js +1 -1
  83. package/dist/collection/components/eds-icons/social/eds-icon-bluesky/eds-icon-bluesky.js +1 -1
  84. package/dist/collection/components/eds-icons/social/eds-icon-facebook/eds-icon-facebook.js +1 -1
  85. package/dist/collection/components/eds-icons/social/eds-icon-linkedin/eds-icon-linkedin.js +1 -1
  86. package/dist/collection/components/eds-icons/social/eds-icon-mastodon/eds-icon-mastodon.js +1 -1
  87. package/dist/collection/components/eds-icons/social/eds-icon-twitter/eds-icon-twitter.js +1 -1
  88. package/dist/collection/components/eds-icons/social/eds-icon-youtube/eds-icon-youtube.js +1 -1
  89. package/dist/collection/components/eds-img/eds-img.js +2 -2
  90. package/dist/collection/components/eds-img/eds-img.stories.js +29 -52
  91. package/dist/collection/components/eds-input-dropzone/eds-input-dropzone.js +7 -4
  92. package/dist/collection/components/eds-input-elements/eds-input/eds-input.js +20 -2
  93. package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.css +39 -0
  94. package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.js +2 -1
  95. package/dist/collection/components/eds-input-elements/eds-input-label/eds-input-label.css +17 -5
  96. package/dist/collection/components/eds-input-elements/eds-input-label/eds-input-label.js +1 -1
  97. package/dist/collection/components/eds-input-elements/eds-input-range/eds-input-range.js +15 -5
  98. package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.js +1 -1
  99. package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.stories.js +30 -0
  100. package/dist/collection/components/eds-input-elements/eds-input-select/eds-input-select.js +6 -2
  101. package/dist/collection/components/eds-input-field/eds-input-field.css +219 -0
  102. package/dist/collection/components/eds-input-field/eds-input-field.js +16 -5
  103. package/dist/collection/components/eds-input-field/eds-input-field.stories.js +105 -125
  104. package/dist/collection/components/eds-input-file/eds-input-file.js +5 -3
  105. package/dist/collection/components/eds-link/eds-link.js +4 -8
  106. package/dist/collection/components/eds-link/eds-link.stories.js +13 -8
  107. package/dist/collection/components/eds-logo/eds-logo.js +13 -66
  108. package/dist/collection/components/eds-logo/eds-logo.stories.js +36 -17
  109. package/dist/collection/components/eds-modal/eds-modal.js +18 -9
  110. package/dist/collection/components/eds-modal/eds-modal.stories.js +11 -8
  111. package/dist/collection/components/eds-nps/eds-nps.css +32 -0
  112. package/dist/collection/components/eds-nps/eds-nps.js +3 -3
  113. package/dist/collection/components/eds-pagination/eds-pagination.js +2 -2
  114. package/dist/collection/components/eds-progress-bar/eds-progress-bar.js +1 -8
  115. package/dist/collection/components/eds-rating/eds-rating.css +9 -0
  116. package/dist/collection/components/eds-rating/eds-rating.js +2 -2
  117. package/dist/collection/components/eds-section/eds-section-core/eds-section-core.js +1 -1
  118. package/dist/collection/components/eds-section/eds-section-heading/eds-section-heading.js +2 -2
  119. package/dist/collection/components/eds-sidebar/eds-sidebar.js +2 -2
  120. package/dist/collection/components/eds-social-networks/eds-social-networks.js +1 -1
  121. package/dist/collection/components/eds-spinner/eds-spinner.js +1 -1
  122. package/dist/collection/components/eds-steps/eds-steps.css +56 -25
  123. package/dist/collection/components/eds-steps/eds-steps.js +27 -7
  124. package/dist/collection/components/eds-steps-v2/eds-steps-v2.css +93 -28
  125. package/dist/collection/components/eds-steps-v2/eds-steps-v2.js +57 -10
  126. package/dist/collection/components/eds-steps-v2/eds-steps-v2.stories.js +80 -17
  127. package/dist/collection/components/eds-switch/eds-switch.css +26 -3
  128. package/dist/collection/components/eds-switch/eds-switch.js +10 -7
  129. package/dist/collection/components/eds-switch/eds-switch.stories.js +20 -1
  130. package/dist/collection/components/eds-table/eds-table.css +21 -4
  131. package/dist/collection/components/eds-table/eds-table.js +16 -51
  132. package/dist/collection/components/eds-table/eds-table.stories.js +7 -115
  133. package/dist/collection/components/eds-tabs/eds-tabs.css +7 -1
  134. package/dist/collection/components/eds-tabs/eds-tabs.js +49 -18
  135. package/dist/collection/components/eds-tabs/eds-tabs.stories.js +2 -2
  136. package/dist/collection/components/eds-tag/eds-tag.js +1 -1
  137. package/dist/collection/components/eds-timeline/eds-timeline.js +1 -1
  138. package/dist/collection/components/eds-toast/eds-toast.css +146 -0
  139. package/dist/collection/components/eds-toast/eds-toast.js +106 -4
  140. package/dist/collection/components/eds-toast/eds-toast.stories.js +102 -5
  141. package/dist/collection/components/eds-toast-manager/eds-toast-manager.js +1 -1
  142. package/dist/collection/components/eds-tooltip/eds-tooltip.js +1 -1
  143. package/dist/collection/components/eds-tooltip/eds-tooltip.stories.js +7 -1
  144. package/dist/collection/components/eds-user/eds-user.js +2 -5
  145. package/dist/collection/components/eds-user/eds-user.stories.js +8 -11
  146. package/dist/collection/eds-docs-ui/colors/color-palette/primary.js +1 -1
  147. package/dist/collection/eds-docs-ui/colors/color-palette/secondary.js +1 -1
  148. package/dist/collection/eds-docs-ui/colors/color-palette/support.js +1 -1
  149. package/dist/collection/eds-docs-ui/colors/gradient-palette/primary.js +1 -1
  150. package/dist/collection/eds-docs-ui/colors/gradient-palette/secondary.js +7 -7
  151. package/dist/collection/eds-docs-ui/colors/gradient-palette/support.js +3 -3
  152. package/dist/collection/eds-docs-ui/colors/use-of-colors/correct-use-of-colors.js +1 -1
  153. package/dist/collection/eds-docs-ui/colors/use-of-colors/incorrect-use-of-colors.js +1 -1
  154. package/dist/collection/eds-docs-ui/components-section/components-section.js +1 -1
  155. package/dist/collection/eds-docs-ui/design-tokens/docs-tokens/docs-tokens.js +1 -1
  156. package/dist/collection/eds-docs-ui/design-tokens/token-list/token-list.js +1 -1
  157. package/dist/collection/eds-docs-ui/design-tokens/token-radii/token-radii.js +1 -1
  158. package/dist/collection/eds-docs-ui/design-tokens/token-ratios/token-ratios.js +1 -1
  159. package/dist/collection/eds-docs-ui/design-tokens/token-shadows/token-shadows.js +1 -1
  160. package/dist/collection/eds-docs-ui/design-tokens/token-spacing/token-spacing.js +1 -1
  161. package/dist/collection/eds-docs-ui/design-tokens/token-typography/token-typography.js +8 -2
  162. package/dist/collection/eds-docs-ui/docs-palettes/docs-palettes.js +1 -1
  163. package/dist/collection/eds-docs-ui/logo/logo-space/logo-space.js +58 -1
  164. package/dist/collection/eds-docs-ui/logo/logo-variations/horizontal/logo-variations-horizontal.js +1 -1
  165. package/dist/collection/eds-docs-ui/logo/logo-variations/vertical/logo-variations-vertical.js +1 -1
  166. package/dist/collection/eds-docs-ui/logo/logo-variations-tabs/logo-variations.js +1 -1
  167. package/dist/collection/eds-docs-ui/logo/logo-wrong-usage/logo-wrong-usage.js +1 -1
  168. package/dist/collection/eds-docs-ui/svg-repository/svg-repository.js +1 -1
  169. package/dist/collection/shared-ui/eds-cookies-preference/eds-cookies-preference.js +1 -1
  170. package/dist/collection/shared-ui/eds-gitlab-contributors/eds-gitlab-contributors.css +19 -0
  171. package/dist/collection/shared-ui/eds-gitlab-contributors/eds-gitlab-contributors.js +34 -31
  172. package/dist/collection/shared-ui/eds-global-search/eds-global-search.css +166 -0
  173. package/dist/collection/shared-ui/eds-global-search/eds-global-search.js +69 -7
  174. package/dist/collection/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.css +205 -0
  175. package/dist/collection/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.js +253 -0
  176. package/dist/collection/shared-ui/eds-kg-web-services-select/eds-kg-web-services-select.js +2 -2
  177. package/dist/collection/shared-ui/eds-kg-web-services-select/eds-kg-web-services-select.stories.js +1 -3
  178. package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.css +23 -102
  179. package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.js +7 -1
  180. package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.stories.js +1 -1
  181. package/dist/collection/shared-ui/eds-search-select/eds-search-select.css +213 -0
  182. package/dist/collection/shared-ui/eds-search-select/eds-search-select.js +706 -0
  183. package/dist/collection/shared-ui/eds-search-select/eds-search-select.stories.js +90 -0
  184. package/dist/collection/shared-ui/eds-trl-badge/ebrains-mark.js +26 -0
  185. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.css +22 -0
  186. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.js +324 -0
  187. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.stories.js +99 -0
  188. package/dist/collection/shared-ui/examples/eds-app-root/eds-app-root.js +1 -1
  189. package/dist/collection/utils/eds-form/formValidators.js +2 -1
  190. package/dist/collection/utils/eds-form/safeFormat.js +35 -0
  191. package/dist/components/components-section.js +1 -1
  192. package/dist/components/components.css +12 -11
  193. package/dist/components/components.esm.js +1 -1
  194. package/dist/components/correct-use-of-colors.js +1 -1
  195. package/dist/components/docs-palettes.js +1 -1
  196. package/dist/components/docs-tokens.js +1 -1
  197. package/dist/components/eds-accordion2.js +3 -6
  198. package/dist/components/eds-alert2.js +3 -2
  199. package/dist/components/eds-app-root.js +1 -1
  200. package/dist/components/eds-avatar2.js +1 -1
  201. package/dist/components/eds-block-break2.js +1 -1
  202. package/dist/components/eds-breadcrumb.js +1 -1
  203. package/dist/components/eds-button2.js +16 -13
  204. package/dist/components/eds-card-app.js +2 -5
  205. package/dist/components/eds-card-cta.js +3 -6
  206. package/dist/components/eds-card-desc2.js +1 -1
  207. package/dist/components/eds-card-feature.js +2 -5
  208. package/dist/components/eds-card-generic2.js +2 -4
  209. package/dist/components/eds-card-hero.js +6 -7
  210. package/dist/components/eds-card-stat.js +6 -7
  211. package/dist/components/eds-card-title2.js +1 -1
  212. package/dist/components/eds-code-block2.js +2 -2
  213. package/dist/components/eds-cookies-preference.js +1 -1
  214. package/dist/components/eds-dropdown2.js +30 -4
  215. package/dist/components/eds-feedback.js +1 -1
  216. package/dist/components/eds-footer2.js +118 -24
  217. package/dist/components/eds-form.js +146 -45
  218. package/dist/components/eds-frame.js +1 -1
  219. package/dist/components/eds-gauge.js +1 -1
  220. package/dist/components/eds-gitlab-contributors.js +35 -32
  221. package/dist/components/eds-global-search.js +55 -70
  222. package/dist/components/eds-header.js +1 -1
  223. package/dist/components/eds-icon-bluesky.js +1 -1
  224. package/dist/components/eds-icon-eu.js +1 -1
  225. package/dist/components/eds-icon-facebook.js +1 -1
  226. package/dist/components/eds-icon-gitlab.js +1 -1
  227. package/dist/components/eds-icon-linkedin.js +1 -1
  228. package/dist/components/eds-icon-mastodon.js +1 -1
  229. package/dist/components/eds-icon-twitter.js +1 -1
  230. package/dist/components/eds-icon-wrapper2.js +5 -2
  231. package/dist/components/eds-icon-youtube.js +1 -1
  232. package/dist/components/eds-img2.js +2 -2
  233. package/dist/components/eds-input-dropzone2.js +7 -4
  234. package/dist/components/eds-input-field2.js +31 -26
  235. package/dist/components/eds-input-file2.js +5 -3
  236. package/dist/components/eds-input-footer2.js +39 -3
  237. package/dist/components/eds-input-label2.js +2 -2
  238. package/dist/components/eds-input-range2.js +15 -5
  239. package/dist/components/eds-input-search.js +100 -1
  240. package/dist/components/eds-input-select2.js +6 -2
  241. package/dist/components/eds-input2.js +4 -2
  242. package/dist/components/eds-kg-learning-resources.d.ts +11 -0
  243. package/dist/components/eds-kg-learning-resources.js +217 -0
  244. package/dist/components/eds-kg-web-services-select2.js +18 -24
  245. package/dist/components/eds-link2.js +3 -7
  246. package/dist/components/eds-logo2.js +4 -22
  247. package/dist/components/eds-matomo-notice2.js +8 -2
  248. package/dist/components/eds-modal.js +18 -9
  249. package/dist/components/eds-nps2.js +4 -4
  250. package/dist/components/eds-pagination2.js +2 -2
  251. package/dist/components/eds-pie.js +2 -2
  252. package/dist/components/eds-progress-bar.js +1 -8
  253. package/dist/components/eds-rating2.js +3 -3
  254. package/dist/components/eds-search-select.d.ts +11 -0
  255. package/dist/components/eds-search-select.js +6 -0
  256. package/dist/components/eds-search-select2.js +382 -0
  257. package/dist/components/eds-section-core2.js +1 -1
  258. package/dist/components/eds-section-heading2.js +2 -2
  259. package/dist/components/eds-sidebar.js +2 -2
  260. package/dist/components/eds-social-networks2.js +1 -1
  261. package/dist/components/eds-spinner2.js +1 -1
  262. package/dist/components/eds-steps-v2.js +41 -11
  263. package/dist/components/eds-steps2.js +28 -8
  264. package/dist/components/eds-switch2.js +8 -5
  265. package/dist/components/eds-table2.js +30 -54
  266. package/dist/components/eds-tabs.js +50 -19
  267. package/dist/components/eds-tag2.js +1 -1
  268. package/dist/components/eds-timeline.js +1 -1
  269. package/dist/components/eds-toast-manager.js +1 -1
  270. package/dist/components/eds-toast2.js +39 -3
  271. package/dist/components/eds-tooltip2.js +1 -1
  272. package/dist/components/eds-trl-badge.d.ts +11 -0
  273. package/dist/components/eds-trl-badge.js +207 -0
  274. package/dist/components/eds-user.js +1 -4
  275. package/dist/components/incorrect-use-of-colors.js +1 -1
  276. package/dist/components/logo-space.js +76 -25
  277. package/dist/components/logo-variations-horizontal2.js +1 -1
  278. package/dist/components/logo-variations-tabs.js +1 -1
  279. package/dist/components/logo-variations-vertical2.js +1 -1
  280. package/dist/components/logo-wrong-usage.js +1 -1
  281. package/dist/components/p-05e96609.entry.js +1 -0
  282. package/dist/components/p-0d778d10.entry.js +1 -0
  283. package/dist/components/{p-d2576747.entry.js → p-114f6d54.entry.js} +1 -1
  284. package/dist/components/p-1534204d.entry.js +1 -0
  285. package/dist/components/p-337d4ee3.entry.js +9 -0
  286. package/dist/components/p-340bc935.entry.js +1 -0
  287. package/dist/components/{p-a6dc1f88.entry.js → p-37ef07d9.entry.js} +1 -1
  288. package/dist/components/p-39dbb964.entry.js +1 -0
  289. package/dist/components/{p-dfe93385.entry.js → p-3f66bc26.entry.js} +1 -1
  290. package/dist/components/p-43f9e64f.entry.js +1 -0
  291. package/dist/components/p-46cc6c1a.entry.js +1 -0
  292. package/dist/components/{p-773bd015.entry.js → p-4b8a7979.entry.js} +1 -1
  293. package/dist/components/p-6b94b2ec.entry.js +1 -0
  294. package/dist/components/p-6d965fef.entry.js +1 -0
  295. package/dist/components/{p-d16b5363.entry.js → p-6e370182.entry.js} +1 -1
  296. package/dist/components/{p-7b93a385.entry.js → p-6ffe581c.entry.js} +1 -1
  297. package/dist/components/p-726637b1.entry.js +1 -0
  298. package/dist/components/{p-a63e14bb.entry.js → p-86ccc09f.entry.js} +1 -1
  299. package/dist/components/{p-c2fc62f7.entry.js → p-8755a21b.entry.js} +1 -1
  300. package/dist/components/{p-0d7aee0b.entry.js → p-8ab461e2.entry.js} +1 -1
  301. package/dist/components/p-8cb162b8.entry.js +1 -0
  302. package/dist/components/p-8cdbc280.entry.js +1 -0
  303. package/dist/components/{p-940a2d42.entry.js → p-8e034c4e.entry.js} +1 -1
  304. package/dist/components/p-9f649fa3.entry.js +1 -0
  305. package/dist/components/{p-d1b3aa52.entry.js → p-a26dad9b.entry.js} +1 -1
  306. package/dist/components/p-a2d6a9ca.entry.js +1 -0
  307. package/dist/components/p-afabe1be.entry.js +1 -0
  308. package/dist/components/{p-c46675c8.entry.js → p-b1519098.entry.js} +1 -1
  309. package/dist/components/{p-04e9c2d7.entry.js → p-b1a10842.entry.js} +1 -1
  310. package/dist/components/{p-7aa4edef.entry.js → p-b4023b45.entry.js} +1 -1
  311. package/dist/components/p-c53b3563.entry.js +1 -0
  312. package/dist/components/p-c7d612d1.entry.js +1 -0
  313. package/dist/components/p-dc9aef22.entry.js +1 -0
  314. package/dist/components/{p-f364296f.entry.js → p-f66a7cf9.entry.js} +1 -1
  315. package/dist/components/p-f97f62f2.entry.js +1 -0
  316. package/dist/components/primary.js +1 -1
  317. package/dist/components/primary2.js +1 -1
  318. package/dist/components/secondary.js +1 -1
  319. package/dist/components/secondary2.js +7 -7
  320. package/dist/components/support.js +1 -1
  321. package/dist/components/support2.js +3 -3
  322. package/dist/components/svg-repository.js +19 -25
  323. package/dist/components/token-list2.js +1 -1
  324. package/dist/components/token-radii2.js +1 -1
  325. package/dist/components/token-ratios.js +1 -1
  326. package/dist/components/token-shadows2.js +1 -1
  327. package/dist/components/token-spacing.js +1 -1
  328. package/dist/components/token-typography.js +8 -2
  329. package/dist/esm/color-primary-palette_6.entry.js +14 -14
  330. package/dist/esm/components-section.entry.js +1 -1
  331. package/dist/esm/components.js +1 -1
  332. package/dist/esm/correct-use-of-colors.entry.js +1 -1
  333. package/dist/esm/docs-palettes.entry.js +1 -1
  334. package/dist/esm/docs-tokens.entry.js +1 -1
  335. package/dist/esm/{eds-accordion_52.entry.js → eds-accordion_53.entry.js} +1094 -336
  336. package/dist/esm/eds-app-root.entry.js +1 -1
  337. package/dist/esm/eds-cookies-preference.entry.js +1 -1
  338. package/dist/esm/eds-feedback.entry.js +1 -1
  339. package/dist/esm/eds-frame.entry.js +1 -1
  340. package/dist/esm/eds-gauge.entry.js +1 -1
  341. package/dist/esm/eds-gitlab-contributors.entry.js +35 -32
  342. package/dist/esm/eds-icon-bluesky.entry.js +1 -1
  343. package/dist/esm/eds-icon-eu.entry.js +1 -1
  344. package/dist/esm/eds-icon-facebook.entry.js +1 -1
  345. package/dist/esm/eds-icon-gitlab.entry.js +1 -1
  346. package/dist/esm/eds-icon-linkedin.entry.js +1 -1
  347. package/dist/esm/eds-icon-mastodon.entry.js +1 -1
  348. package/dist/esm/eds-icon-twitter.entry.js +1 -1
  349. package/dist/esm/eds-icon-youtube.entry.js +1 -1
  350. package/dist/{components/eds-input-search2.js → esm/eds-input-search.entry.js} +9 -39
  351. package/dist/esm/eds-modal.entry.js +18 -9
  352. package/dist/esm/eds-pie.entry.js +2 -2
  353. package/dist/esm/eds-section-core_2.entry.js +3 -3
  354. package/dist/esm/eds-timeline.entry.js +1 -1
  355. package/dist/esm/eds-toast-manager.entry.js +1 -1
  356. package/dist/esm/eds-trl-badge.entry.js +180 -0
  357. package/dist/esm/incorrect-use-of-colors.entry.js +1 -1
  358. package/dist/esm/index-870ab08f.js +10 -2
  359. package/dist/esm/loader.js +1 -1
  360. package/dist/esm/logo-space.entry.js +58 -1
  361. package/dist/esm/logo-variations-horizontal_2.entry.js +2 -2
  362. package/dist/esm/logo-variations-tabs.entry.js +1 -1
  363. package/dist/esm/logo-wrong-usage.entry.js +1 -1
  364. package/dist/esm/svg-repository.entry.js +1 -1
  365. package/dist/esm/token-list_3.entry.js +3 -3
  366. package/dist/esm/token-ratios.entry.js +1 -1
  367. package/dist/esm/token-spacing.entry.js +1 -1
  368. package/dist/esm/token-typography.entry.js +8 -2
  369. package/dist/hydrate/index.js +1616 -397
  370. package/dist/hydrate/index.mjs +1616 -397
  371. package/dist/types/components/eds-accordion/eds-accordion.stories.d.ts +4 -8
  372. package/dist/types/components/eds-alert/eds-alert.stories.d.ts +7 -73
  373. package/dist/types/components/eds-button/eds-button.d.ts +1 -1
  374. package/dist/types/components/eds-dropdown/eds-dropdown.d.ts +1 -0
  375. package/dist/types/components/eds-footer/eds-footer.d.ts +84 -55
  376. package/dist/types/components/eds-footer/eds-footer.stories.d.ts +62 -1
  377. package/dist/types/components/eds-form/eds-form.d.ts +66 -0
  378. package/dist/types/components/eds-form/eds-form.stories.d.ts +63 -0
  379. package/dist/types/components/eds-header/eds-header.stories.d.ts +6 -6
  380. package/dist/types/components/eds-icon-wrapper/eds-icon-wrapper.d.ts +8 -0
  381. package/dist/types/components/eds-img/eds-img.stories.d.ts +6 -20
  382. package/dist/types/components/eds-input-elements/eds-input/eds-input.d.ts +7 -0
  383. package/dist/types/components/eds-input-elements/eds-input-search/eds-input-search.stories.d.ts +36 -0
  384. package/dist/types/components/eds-input-field/eds-input-field.stories.d.ts +97 -38
  385. package/dist/types/components/eds-link/eds-link.stories.d.ts +9 -6
  386. package/dist/types/components/eds-logo/eds-logo.d.ts +11 -28
  387. package/dist/types/components/eds-logo/eds-logo.stories.d.ts +22 -2
  388. package/dist/types/components/eds-steps/eds-steps.d.ts +7 -0
  389. package/dist/types/components/eds-steps-v2/eds-steps-v2.d.ts +14 -1
  390. package/dist/types/components/eds-steps-v2/eds-steps-v2.stories.d.ts +40 -9
  391. package/dist/types/components/eds-switch/eds-switch.d.ts +6 -2
  392. package/dist/types/components/eds-switch/eds-switch.stories.d.ts +8 -0
  393. package/dist/types/components/eds-table/eds-table.d.ts +8 -14
  394. package/dist/types/components/eds-table/eds-table.stories.d.ts +0 -107
  395. package/dist/types/components/eds-tabs/eds-tabs.d.ts +10 -0
  396. package/dist/types/components/eds-toast/eds-toast.d.ts +33 -1
  397. package/dist/types/components/eds-toast/eds-toast.stories.d.ts +49 -1
  398. package/dist/types/components/eds-user/eds-user.d.ts +0 -2
  399. package/dist/types/components/eds-user/eds-user.stories.d.ts +5 -9
  400. package/dist/types/components.d.ts +715 -144
  401. package/dist/types/shared-ui/eds-global-search/eds-global-search.d.ts +12 -0
  402. package/dist/types/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.d.ts +60 -0
  403. package/dist/types/shared-ui/eds-search-select/eds-search-select.d.ts +98 -0
  404. package/dist/types/shared-ui/eds-search-select/eds-search-select.stories.d.ts +81 -0
  405. package/dist/types/shared-ui/eds-trl-badge/ebrains-mark.d.ts +7 -0
  406. package/dist/types/shared-ui/eds-trl-badge/eds-trl-badge.d.ts +54 -0
  407. package/dist/types/shared-ui/eds-trl-badge/eds-trl-badge.stories.d.ts +112 -0
  408. package/dist/types/utils/eds-form/safeFormat.d.ts +21 -0
  409. package/package.json +1 -1
  410. package/dist/components/p-0fe10e6c.entry.js +0 -1
  411. package/dist/components/p-18e852e1.entry.js +0 -1
  412. package/dist/components/p-3ccd6948.entry.js +0 -1
  413. package/dist/components/p-3d3841d6.entry.js +0 -1
  414. package/dist/components/p-3f38df99.entry.js +0 -1
  415. package/dist/components/p-527e71d0.entry.js +0 -1
  416. package/dist/components/p-55047f7f.entry.js +0 -9
  417. package/dist/components/p-64c23098.entry.js +0 -1
  418. package/dist/components/p-74b9c9a8.entry.js +0 -1
  419. package/dist/components/p-878f65a6.entry.js +0 -1
  420. package/dist/components/p-92f6d9c0.entry.js +0 -1
  421. package/dist/components/p-9eedf771.entry.js +0 -1
  422. package/dist/components/p-b4355cec.entry.js +0 -1
  423. package/dist/components/p-d2f17fac.entry.js +0 -1
  424. package/dist/components/p-db5eea95.entry.js +0 -1
  425. package/dist/components/p-e205c269.entry.js +0 -1
  426. package/dist/components/p-f55dd314.entry.js +0 -1
  427. package/dist/components/p-f88b5f21.entry.js +0 -1
@@ -372,30 +372,54 @@ pre {
372
372
 
373
373
  .horizontal-indicators {
374
374
  display: flex;
375
- justify-content: space-between;
376
- gap: 1rem;
377
- padding: 1rem 0;
375
+ align-items: flex-start;
376
+ gap: 0;
377
+ padding: 0;
378
+ /* Breathing room above (from the header); fields sit right below the steps. */
379
+ margin-top: 1.75rem;
380
+ margin-bottom: 0;
378
381
  }
379
382
 
383
+ /* Left-aligned layout: every step left-aligns its circle so the FIRST circle
384
+ hugs the indicators' left edge — the same left edge as the form content below
385
+ it (see .step-content) — instead of being centred inside a flex cell. */
380
386
  .horizontal-step {
381
387
  display: flex;
382
388
  flex-direction: column;
383
- align-items: center;
384
- gap: 0.5rem;
389
+ align-items: flex-start;
390
+ gap: 0.6rem;
385
391
  cursor: pointer;
386
- flex: 1;
392
+ flex: 1 1 0;
393
+ min-width: 0;
387
394
  position: relative;
388
395
  }
389
396
 
397
+ /* The last step only needs room for its own circle + label; without this it
398
+ would reserve a full flex cell and leave a large empty gap after the final
399
+ circle. */
400
+ .horizontal-step:last-child {
401
+ flex: 0 0 auto;
402
+ }
403
+
404
+ /* Left-aligned circles → the connector runs from just after this circle to the
405
+ next circle's left edge (one cell-width away). */
390
406
  .horizontal-step:not(:last-child)::after {
391
407
  content: '';
392
408
  position: absolute;
393
- top: 1.25rem;
394
- left: 50%;
395
- width: 100%;
396
- height: 2px;
409
+ top: 1.375rem; /* vertical centre of the 2.75rem circle */
410
+ left: calc(2.75rem + 0.4rem); /* just past this circle */
411
+ width: calc(100% - 2.75rem - 0.8rem); /* up to the next circle */
412
+ height: 3px;
413
+ border-radius: 2px;
397
414
  background-color: #e0e0e0;
398
- z-index: -1;
415
+ transform: translateY(-50%);
416
+ z-index: 1;
417
+ }
418
+
419
+ /* Titles sit left-aligned under their (left-aligned) circle. */
420
+ .horizontal-step > span {
421
+ text-align: left;
422
+ align-self: stretch;
399
423
  }
400
424
 
401
425
  .horizontal-step.is-completed:not(:last-child)::after {
@@ -403,8 +427,8 @@ pre {
403
427
  }
404
428
 
405
429
  .step-indicator {
406
- width: 2.5rem;
407
- height: 2.5rem;
430
+ width: 2.75rem;
431
+ height: 2.75rem;
408
432
  border-radius: 50%;
409
433
  border: 2px solid #e0e0e0;
410
434
  display: flex;
@@ -412,6 +436,7 @@ pre {
412
436
  justify-content: center;
413
437
  background-color: white;
414
438
  transition: all 0.3s ease;
439
+ flex: 0 0 auto;
415
440
  }
416
441
 
417
442
  .horizontal-step.is-active .step-indicator {
@@ -431,14 +456,18 @@ pre {
431
456
  }
432
457
 
433
458
  .step-number {
434
- font-weight: 600;
435
- font-size: 0.875rem;
459
+ font-family: var(--font-family-mono, 'IBM Plex Mono', monospace);
460
+ font-weight: 500;
461
+ font-size: 0.95rem;
436
462
  }
437
463
 
438
464
  .step-label {
439
- font-size: 0.875rem;
440
- text-align: center;
465
+ font-family: var(--font-family-mono, 'IBM Plex Mono', monospace);
466
+ font-size: 9.5px;
467
+ letter-spacing: 0.07em;
468
+ text-transform: uppercase;
441
469
  font-weight: 500;
470
+ color: var(--dark-grey, #7a7b7a);
442
471
  }
443
472
 
444
473
  .horizontal-step.is-active .step-label {
@@ -447,17 +476,15 @@ pre {
447
476
 
448
477
  .step-content {
449
478
  padding: 0.5rem 0;
450
- /* Align content to start under the first step indicator */
451
- margin-left: calc((100% / var(--step-count, 1)) * 0.20 - 1.25rem);
452
- margin-right: calc((100% / var(--step-count, 1)) * 0.20 - 1.25rem);
479
+ /* Flush-left: the form shares the indicators' left edge (the first circle),
480
+ instead of the old step-count-based magic margin. */
481
+ margin-left: 0;
482
+ margin-right: 0;
453
483
  }
454
484
 
455
- /* Adjust margins for larger screens (> 700px) */
456
485
  @media (min-width: 700px) {
457
486
  .step-content {
458
487
  padding: 1.5rem 0;
459
- margin-left: calc((100% / var(--step-count, 1)) * 0.45 - 1.25rem);
460
- margin-right: calc((100% / var(--step-count, 1)) * 0.45 - 1.25rem);
461
488
  }
462
489
  }
463
490
 
@@ -488,12 +515,16 @@ pre {
488
515
  /* Brand theme - Horizontal step indicators */
489
516
  .theme-brand .step-indicator {
490
517
  background-color: var(--grey-light);
518
+ border-color: transparent; /* flat grey upcoming circle (matches mockup) */
519
+ color: var(--dark-grey, #7a7b7a);
491
520
  }
492
521
 
493
522
  .theme-brand .horizontal-step.is-active .step-indicator {
494
523
  border-color: var(--brand-green);
495
524
  background-color: var(--brand-green);
496
525
  color: var(--brand-black);
526
+ /* Soft green ring around the current step (matches mockup). */
527
+ box-shadow: 0 0 0 4px rgba(0, 255, 157, 0.2);
497
528
  }
498
529
 
499
530
  .theme-brand .horizontal-step.is-completed .step-indicator {
@@ -506,9 +537,9 @@ pre {
506
537
  background-color: var(--brand-green);
507
538
  }
508
539
 
509
- .theme-brand .horizontal-step.is-active .step-label {
540
+ .theme-brand .horizontal-step.is-active .step-label,
541
+ .theme-brand .horizontal-step.is-completed .step-label {
510
542
  color: var(--brand-black);
511
- font-weight: 600;
512
543
  }
513
544
 
514
545
  .theme-brand .step-number {
@@ -2,6 +2,9 @@ import { h } from "@stencil/core";
2
2
  import { parseData } from "../../utils/sharedUtils";
3
3
  export class EdsSteps {
4
4
  constructor() {
5
+ this.onResize = () => {
6
+ this.isMobile = typeof window !== 'undefined' && window.innerWidth < 750;
7
+ };
5
8
  this.handleTitleClick = (index) => {
6
9
  // In linear mode, do NOT collapse; only navigate if allowed.
7
10
  if (this.type === 'linear') {
@@ -29,11 +32,11 @@ export class EdsSteps {
29
32
  };
30
33
  this.handleNext = () => {
31
34
  const lastIndex = this.parsedSteps.length - 1;
32
- // On last step
35
+ // On last step: stay put and just emit finished. Collapsing (activeStep = -1)
36
+ // left the form as an empty shell when the host rejected the submit (e.g.
37
+ // single-submission already used); the success path navigates away.
33
38
  if (this.activeStep >= lastIndex) {
34
39
  this.finished.emit();
35
- this.activeStep = -1; // collapse the content
36
- this.step.emit(this.activeStep); // notify change (-1 sentinel)
37
40
  return;
38
41
  }
39
42
  const target = this.activeStep + 1;
@@ -77,6 +80,7 @@ export class EdsSteps {
77
80
  this.headingLevel = 'h4';
78
81
  this.collapsibleTitles = false;
79
82
  this.activeStep = 0;
83
+ this.isMobile = false;
80
84
  }
81
85
  handleDisableNextChange(newValue) {
82
86
  if (typeof newValue === 'string' && newValue.trim().startsWith('[')) {
@@ -88,8 +92,23 @@ export class EdsSteps {
88
92
  }
89
93
  }
90
94
  }
95
+ /** Nav button size: comfortable on desktop, compact on mobile. */
96
+ get navBtnSize() {
97
+ return this.isMobile ? 'small' : 'large';
98
+ }
91
99
  componentWillLoad() {
92
100
  this.handleDisableNextChange(this.disableNext);
101
+ this.onResize();
102
+ }
103
+ connectedCallback() {
104
+ if (typeof window !== 'undefined') {
105
+ window.addEventListener('resize', this.onResize);
106
+ }
107
+ }
108
+ disconnectedCallback() {
109
+ if (typeof window !== 'undefined') {
110
+ window.removeEventListener('resize', this.onResize);
111
+ }
93
112
  }
94
113
  componentDidLoad() {
95
114
  if (this.type === 'linear') {
@@ -189,7 +208,7 @@ export class EdsSteps {
189
208
  this.handleTitleClick(index);
190
209
  }
191
210
  };
192
- return (h("div", { class: `horizontal-step ${isActive ? 'is-active' : ''} ${isCompleted ? 'is-completed' : ''}`, onClick: () => !forwardBlocked && this.handleTitleClick(index), onKeyDown: onKey, role: "button", tabindex: forwardBlocked ? -1 : 0, "aria-label": `Step ${index + 1}: ${step.title}`, "aria-current": isActive ? 'step' : undefined, "aria-disabled": forwardBlocked ? 'true' : 'false' }, h("div", { class: "step-indicator" }, h("span", { class: "step-number" }, index + 1)), h("span", { class: `text-center text-default f-ui-03 ${forwardBlocked ? 'opacity-50' : ''}` }, step.title)));
211
+ return (h("div", { class: `horizontal-step ${isActive ? 'is-active' : ''} ${isCompleted ? 'is-completed' : ''}`, onClick: () => !forwardBlocked && this.handleTitleClick(index), onKeyDown: onKey, role: "button", tabindex: forwardBlocked ? -1 : 0, "aria-label": `Step ${index + 1}: ${step.title}`, "aria-current": isActive ? 'step' : undefined, "aria-disabled": forwardBlocked ? 'true' : 'false' }, h("div", { class: "step-indicator" }, h("span", { class: "step-number" }, index + 1)), h("span", { class: `step-label ${forwardBlocked ? 'opacity-50' : ''}` }, step.title)));
193
212
  }
194
213
  render() {
195
214
  const steps = this.parsedSteps;
@@ -202,7 +221,7 @@ export class EdsSteps {
202
221
  return null;
203
222
  }
204
223
  const marginClass = this.orientation === 'horizontal' ? 'mt-64' : 'mt-32';
205
- return (h("div", { class: "step-content", key: index, id: `eds-step-panel-${index}` }, h("slot", { name: `step-${index}` }, h("div", { class: "f-body-02 text-lighter", innerHTML: step.content })), h("div", { class: `flex items-center justify-between ${marginClass}` }, h("eds-button", { label: this.backLabel, intent: "secondary", icon: "chevron-left", iconPos: "left", onClick: this.handleBack, disabled: index === 0, class: index === 0 ? 'hidden' : 'block', size: "small" }), (!isLast || this.showFinish) && (h("eds-button", { label: isLast ? this.finishLabel : this.nextLabel, intent: "primary", icon: "chevron-right", onClick: this.handleNext, disabled: this.isNextDisabledFor(index), size: "small", class: index > 0 ? 'ml-8' : null }))), h("slot", { name: `actions-${index}` })));
224
+ return (h("div", { class: "step-content", key: index, id: `eds-step-panel-${index}` }, h("slot", { name: `step-${index}` }, h("div", { class: "f-body-02 text-lighter", innerHTML: step.content })), h("div", { class: `flex items-center justify-between ${marginClass}` }, h("eds-button", { label: this.backLabel, intent: "primary", icon: "chevron-left", iconPos: "left", onClick: this.handleBack, disabled: index === 0, class: index === 0 ? 'hidden' : 'block', size: this.navBtnSize, iconSmall: this.isMobile }), (!isLast || this.showFinish) && (h("eds-button", { label: isLast ? this.finishLabel : this.nextLabel, intent: isLast ? 'brand' : 'primary', icon: "chevron-right", onClick: this.handleNext, disabled: this.isNextDisabledFor(index), size: this.navBtnSize, iconSmall: this.isMobile, class: index > 0 ? 'ml-8' : null }))), h("slot", { name: `actions-${index}` })));
206
225
  })));
207
226
  }
208
227
  // Vertical Linear
@@ -210,7 +229,7 @@ export class EdsSteps {
210
229
  return (h("div", { class: `steps ${themeClass}` }, steps.map((step, index) => {
211
230
  const isLast = index === steps.length - 1;
212
231
  const marginClass = this.orientation === 'horizontal' ? 'mt-64' : 'mt-32';
213
- return (h("div", { class: "step mb-16", key: index }, this.renderHeading(step.title, index), this.activeStep === index && (h("div", { class: "content grid gap-y-16", id: `eds-step-panel-${index}` }, h("slot", { name: `step-${index}` }, h("div", { class: "my-16 f-body-02 text-lighter", innerHTML: step.content })), h("div", { class: `flex items-center justify-between ${marginClass}` }, h("eds-button", { label: this.backLabel, intent: "secondary", icon: "chevron-left", iconPos: "left", onClick: this.handleBack, disabled: index === 0, class: index === 0 ? 'hidden' : 'block', size: "small" }), (!isLast || this.showFinish) && (h("eds-button", { label: isLast ? this.finishLabel : this.nextLabel, intent: "primary", icon: "chevron-right", onClick: this.handleNext, disabled: this.isNextDisabledFor(index), size: "small", class: index > 0 ? 'ml-8' : null }))), h("slot", { name: `actions-${index}` })))));
232
+ return (h("div", { class: "step mb-16", key: index }, this.renderHeading(step.title, index), this.activeStep === index && (h("div", { class: "content grid gap-y-16", id: `eds-step-panel-${index}` }, h("slot", { name: `step-${index}` }, h("div", { class: "my-16 f-body-02 text-lighter", innerHTML: step.content })), h("div", { class: `flex items-center justify-between ${marginClass}` }, h("eds-button", { label: this.backLabel, intent: "primary", icon: "chevron-left", iconPos: "left", onClick: this.handleBack, disabled: index === 0, class: index === 0 ? 'hidden' : 'block', size: this.navBtnSize, iconSmall: this.isMobile }), (!isLast || this.showFinish) && (h("eds-button", { label: isLast ? this.finishLabel : this.nextLabel, intent: isLast ? 'brand' : 'primary', icon: "chevron-right", onClick: this.handleNext, disabled: this.isNextDisabledFor(index), size: this.navBtnSize, iconSmall: this.isMobile, class: index > 0 ? 'ml-8' : null }))), h("slot", { name: `actions-${index}` })))));
214
233
  })));
215
234
  }
216
235
  // Static
@@ -441,7 +460,8 @@ export class EdsSteps {
441
460
  }
442
461
  static get states() {
443
462
  return {
444
- "activeStep": {}
463
+ "activeStep": {},
464
+ "isMobile": {}
445
465
  };
446
466
  }
447
467
  static get events() {
@@ -36,6 +36,8 @@ pre {
36
36
  content: counter(step);
37
37
  position: absolute;
38
38
  left: -41px;
39
+ top: 50%;
40
+ transform: translateY(-50%);
39
41
  display: flex;
40
42
  align-items: center;
41
43
  justify-content: center;
@@ -61,12 +63,34 @@ pre {
61
63
  position: relative;
62
64
  }
63
65
 
66
+ /* Step content wrapper. A little more top breathing room on small screens
67
+ (where the stepper sits directly above the fields), tighter on desktop. */
68
+ .steps-body {
69
+ margin-top: 16px;
70
+ }
71
+
72
+ /* On small screens the vertical step titles read large next to the field
73
+ labels — drop them to a compact UI size. */
74
+ @media (max-width: 749px) {
75
+ .steps h3,
76
+ .steps h4,
77
+ .steps h5 {
78
+ font-size: var(--f-ui-01-fontSize);
79
+ line-height: var(--f-ui-01-lineHeight);
80
+ }
81
+ .steps-body {
82
+ margin-top: 32px;
83
+ }
84
+ }
85
+
64
86
  .steps h4::before,
65
87
  .steps h5::before {
66
88
  content: counter(step);
67
89
  position: absolute;
68
90
  left: -40px;
69
- top: -2px;
91
+ /* Vertically centre the circle on the title line, regardless of font size. */
92
+ top: 50%;
93
+ transform: translateY(-50%);
70
94
  display: flex;
71
95
  align-items: center;
72
96
  justify-content: center;
@@ -193,6 +217,14 @@ pre {
193
217
  margin-top: 4rem;
194
218
  }
195
219
 
220
+ .mb-16 {
221
+ margin-bottom: 1rem;
222
+ }
223
+
224
+ .mb-32 {
225
+ margin-bottom: 2rem;
226
+ }
227
+
196
228
  .my-16 {
197
229
  margin-top: 1rem;
198
230
  margin-bottom: 1rem;
@@ -377,9 +409,12 @@ pre {
377
409
 
378
410
  .horizontal-indicators {
379
411
  display: flex;
380
- justify-content: space-between;
381
- gap: 1rem;
382
- padding: 1rem 0;
412
+ align-items: flex-start;
413
+ gap: 0;
414
+ padding: 0;
415
+ /* Breathing room above (from the header); fields sit right below the steps. */
416
+ margin-top: 1.75rem;
417
+ margin-bottom: 0;
383
418
  }
384
419
 
385
420
  /* Helper class for aligning content with first step indicator */
@@ -388,34 +423,55 @@ pre {
388
423
  padding-right: 0;
389
424
  }
390
425
 
426
+ /* Left-aligned layout: every step left-aligns its circle so the FIRST circle
427
+ hugs the indicators' left edge — the same left edge as the form content below
428
+ it (see .step-content) — instead of being centred inside a flex cell. */
391
429
  .horizontal-step {
392
430
  display: flex;
393
431
  flex-direction: column;
394
- align-items: center;
395
- gap: 0.5rem;
432
+ align-items: flex-start;
433
+ gap: 0.6rem;
396
434
  cursor: pointer;
397
- flex: 1;
435
+ flex: 1 1 0;
436
+ min-width: 0;
398
437
  position: relative;
399
438
  }
400
439
 
440
+ /* The last step only needs room for its own circle + label; without this it
441
+ would reserve a full flex cell and leave a large empty gap after the final
442
+ circle. */
443
+ .horizontal-step:last-child {
444
+ flex: 0 0 auto;
445
+ }
446
+
447
+ /* Left-aligned circles → the connector runs from just after this circle to the
448
+ next circle's left edge (one cell-width away). */
401
449
  .horizontal-step:not(:last-child)::after {
402
450
  content: '';
403
451
  position: absolute;
404
- top: 1.25rem;
405
- left: calc(50% + 2rem); /* Start after the circle */
406
- width: calc(100% - 3rem); /* Width to reach next step with gap */
407
- height: 2px;
452
+ top: 1.375rem; /* vertical centre of the 2.75rem circle */
453
+ left: calc(2.75rem + 0.4rem); /* just past this circle */
454
+ width: calc(100% - 2.75rem - 0.8rem); /* up to the next circle */
455
+ height: 3px;
456
+ border-radius: 2px;
408
457
  background-color: #e0e0e0;
458
+ transform: translateY(-50%);
409
459
  z-index: 1;
410
460
  }
411
461
 
462
+ /* Titles sit left-aligned under their (left-aligned) circle. */
463
+ .horizontal-step > span {
464
+ text-align: left;
465
+ align-self: stretch;
466
+ }
467
+
412
468
  .horizontal-step.is-completed:not(:last-child)::after {
413
469
  background-color: var(--brand-green); /* brand green */
414
470
  }
415
471
 
416
472
  .step-indicator {
417
- width: 2.5rem;
418
- height: 2.5rem;
473
+ width: 2.75rem;
474
+ height: 2.75rem;
419
475
  border-radius: 50%;
420
476
  border: 2px solid #e0e0e0;
421
477
  display: flex;
@@ -423,7 +479,8 @@ pre {
423
479
  justify-content: center;
424
480
  background-color: white;
425
481
  transition: all 0.3s ease;
426
- z-index:2
482
+ flex: 0 0 auto;
483
+ z-index: 2;
427
484
  }
428
485
 
429
486
  .horizontal-step.is-active .step-indicator {
@@ -443,14 +500,18 @@ pre {
443
500
  }
444
501
 
445
502
  .step-number {
446
- font-weight: 600;
447
- font-size: 0.875rem;
503
+ font-family: var(--font-family-mono, 'IBM Plex Mono', monospace);
504
+ font-weight: 500;
505
+ font-size: 0.95rem;
448
506
  }
449
507
 
450
508
  .step-label {
451
- font-size: 0.875rem;
452
- text-align: center;
509
+ font-family: var(--font-family-mono, 'IBM Plex Mono', monospace);
510
+ font-size: 9.5px;
511
+ letter-spacing: 0.07em;
512
+ text-transform: uppercase;
453
513
  font-weight: 500;
514
+ color: var(--dark-grey, #7a7b7a);
454
515
  }
455
516
 
456
517
  .horizontal-step.is-active .step-label {
@@ -459,17 +520,15 @@ pre {
459
520
 
460
521
  .step-content {
461
522
  padding: 0.5rem 0;
462
- /* Align content to start under the first step indicator */
463
- margin-left: calc((100% / var(--step-count, 1)) * 0.20 - 1.25rem);
464
- margin-right: calc((100% / var(--step-count, 1)) * 0.20 - 1.25rem);
523
+ /* Flush-left: the form shares the indicators' left edge (the first circle),
524
+ instead of the old step-count-based magic margin. */
525
+ margin-left: 0;
526
+ margin-right: 0;
465
527
  }
466
528
 
467
- /* Adjust margins for larger screens (> 700px) */
468
529
  @media (min-width: 700px) {
469
530
  .step-content {
470
531
  padding: 1.5rem 0;
471
- margin-left: calc((100% / var(--step-count, 1)) * 0.45 - 1.25rem);
472
- margin-right: calc((100% / var(--step-count, 1)) * 0.45 - 1.25rem);
473
532
  }
474
533
  }
475
534
 
@@ -511,7 +570,9 @@ pre {
511
570
  .theme-brand.steps .step-checkmark-icon {
512
571
  position: absolute;
513
572
  left: -39px;
514
- top: 0px;
573
+ /* Match the centred number circle. */
574
+ top: 50%;
575
+ transform: translateY(-50%);
515
576
  display: flex;
516
577
  align-items: center;
517
578
  justify-content: center;
@@ -524,18 +585,22 @@ pre {
524
585
  left: -41px;
525
586
  width: 32px;
526
587
  height: 32px;
527
- top: 2px;
588
+ top: 50%;
528
589
  }
529
590
 
530
591
  /* Brand theme - Horizontal step indicators */
531
592
  .theme-brand .step-indicator {
532
593
  background-color: var(--grey-light);
594
+ border-color: transparent; /* flat grey upcoming circle (matches mockup) */
595
+ color: var(--dark-grey, #7a7b7a);
533
596
  }
534
597
 
535
598
  .theme-brand .horizontal-step.is-active .step-indicator {
536
599
  border-color: var(--brand-green);
537
600
  background-color: var(--brand-green);
538
601
  color: var(--brand-black);
602
+ /* Soft green ring around the current step (matches mockup). */
603
+ box-shadow: 0 0 0 4px rgba(0, 255, 157, 0.2);
539
604
  }
540
605
 
541
606
  .theme-brand .horizontal-step.is-completed .step-indicator {
@@ -557,9 +622,9 @@ pre {
557
622
  background-color: var(--brand-green);
558
623
  }
559
624
 
560
- .theme-brand .horizontal-step.is-active .step-label {
625
+ .theme-brand .horizontal-step.is-active .step-label,
626
+ .theme-brand .horizontal-step.is-completed .step-label {
561
627
  color: var(--brand-black);
562
- font-weight: 600;
563
628
  }
564
629
 
565
630
  .theme-brand .step-number {
@@ -2,6 +2,9 @@ import { h } from "@stencil/core";
2
2
  import { parseData } from "../../utils/sharedUtils";
3
3
  export class EdsStepsV2 {
4
4
  constructor() {
5
+ this.onResize = () => {
6
+ this.isMobile = typeof window !== 'undefined' && window.innerWidth < 750;
7
+ };
5
8
  this.handleTitleClick = (index) => {
6
9
  // In linear mode, do NOT collapse; only navigate if allowed.
7
10
  if (this.type === 'linear') {
@@ -29,11 +32,12 @@ export class EdsStepsV2 {
29
32
  };
30
33
  this.handleNext = () => {
31
34
  const lastIndex = this.parsedSteps.length - 1;
32
- // On last step: do NOT collapse; keep content visible, just emit finished
35
+ // On last step: stay on the last step and just emit finished. Collapsing
36
+ // here (activeStep = -1) left the form as an empty "Step 0" shell whenever
37
+ // the host's submit was rejected (e.g. single-submission already used) —
38
+ // the success path navigates away, so there's nothing to collapse for.
33
39
  if (this.activeStep >= lastIndex) {
34
40
  this.finished.emit();
35
- this.activeStep = -1; // collapse the content
36
- this.step.emit(this.activeStep); // notify change (-1 sentinel)
37
41
  return;
38
42
  }
39
43
  const target = this.activeStep + 1;
@@ -77,9 +81,15 @@ export class EdsStepsV2 {
77
81
  this.backLabel = 'Back';
78
82
  this.finishLabel = 'Finish';
79
83
  this.showFinish = true;
84
+ this.card = true;
80
85
  this.disableNext = false;
81
86
  this.headingLevel = 'h4';
82
87
  this.activeStep = 0;
88
+ this.isMobile = false;
89
+ }
90
+ /** Nav button size: comfortable on desktop, compact on mobile. */
91
+ get navBtnSize() {
92
+ return this.isMobile ? 'small' : 'large';
83
93
  }
84
94
  handleDisableNextChange(newValue) {
85
95
  if (typeof newValue === 'string' && newValue.trim().startsWith('[')) {
@@ -114,6 +124,17 @@ export class EdsStepsV2 {
114
124
  }
115
125
  componentWillLoad() {
116
126
  this.handleDisableNextChange(this.disableNext);
127
+ this.onResize();
128
+ }
129
+ connectedCallback() {
130
+ if (typeof window !== 'undefined') {
131
+ window.addEventListener('resize', this.onResize);
132
+ }
133
+ }
134
+ disconnectedCallback() {
135
+ if (typeof window !== 'undefined') {
136
+ window.removeEventListener('resize', this.onResize);
137
+ }
117
138
  }
118
139
  componentDidLoad() {
119
140
  if (this.type === 'linear') {
@@ -134,7 +155,9 @@ export class EdsStepsV2 {
134
155
  linkElement.dispatchEvent(event);
135
156
  }
136
157
  articleClasses() {
137
- return ['border-softer relative rounded-lg border-2'].join(' ');
158
+ // The card chrome is opt-out so a host that already provides the frame
159
+ // (e.g. a multi-step form's outer form-style wrapper) isn't double-bordered.
160
+ return this.card ? 'border-softer relative rounded-lg border-2' : 'relative';
138
161
  }
139
162
  get parsedSteps() {
140
163
  return parseData(this.steps);
@@ -198,21 +221,26 @@ export class EdsStepsV2 {
198
221
  this.handleTitleClick(index);
199
222
  }
200
223
  };
201
- return (h("div", { class: `horizontal-step ${isActive ? 'is-active' : ''} ${isCompleted ? 'is-completed' : ''}`, onClick: () => !forwardBlocked && this.handleTitleClick(index), onKeyDown: onKey, role: "button", tabindex: forwardBlocked ? -1 : 0, "aria-label": `Step ${index + 1}: ${step.title}`, "aria-current": isActive ? 'step' : undefined, "aria-disabled": forwardBlocked ? 'true' : 'false' }, h("div", { class: "step-indicator" }, isCompleted ? (h("eds-icon-wrapper", { name: "checkmark", size: 20 })) : (h("span", { class: "step-number" }, index + 1))), h("span", { class: `text-center text-default f-ui-03 ${forwardBlocked ? 'opacity-50' : ''}` }, step.title)));
224
+ return (h("div", { class: `horizontal-step ${isActive ? 'is-active' : ''} ${isCompleted ? 'is-completed' : ''}`, onClick: () => !forwardBlocked && this.handleTitleClick(index), onKeyDown: onKey, role: "button", tabindex: forwardBlocked ? -1 : 0, "aria-label": `Step ${index + 1}: ${step.title}`, "aria-current": isActive ? 'step' : undefined, "aria-disabled": forwardBlocked ? 'true' : 'false' }, h("div", { class: "step-indicator" }, isCompleted ? (h("eds-icon-wrapper", { name: "checkmark", size: 20 })) : (h("span", { class: "step-number" }, index + 1))), h("span", { class: `step-label ${forwardBlocked ? 'opacity-50' : ''}` }, step.title)));
202
225
  }
203
226
  render() {
204
227
  const steps = this.parsedSteps;
205
- const marginClass = this.orientation === 'horizontal' ? 'mt-64' : 'mt-32';
228
+ // Top margin separates the buttons from the fields; bottom margin gives them
229
+ // breathing room from whatever follows (e.g. the next vertical step).
230
+ const marginClass = this.orientation === 'horizontal' ? 'mt-64 mb-16' : 'mt-32 mb-32';
206
231
  const themeClass = this.theme === 'brand' ? 'theme-brand' : 'theme-default';
207
- return (h("div", { key: '0f95d17cc699c020419593bec5ed76c4515501c9', class: this.articleClasses() }, this.imageSrc ? (h("div", { class: "w-full mb-12 rounded-t-lg overflow-hidden border-2" }, h("eds-img", { src: this.imageSrc, width: this.imageWidth, "with-bg": "true", "lazy-load": "true", alt: "Step illustration" }))) : (this.message && (h("div", { class: `w-full ${this.theme === 'brand' ? 'bg-strongest' : 'bg-darker'} rounded-t-lg border-2` }, h("div", { class: "p-24" }, h("span", { class: `${this.theme === 'brand' ? 'text-accent' : 'text-inverse'} f-heading-04` }, this.message))))), h("div", { key: 'ed26ac9fc5cc4d7c409d29c3cd623e37a5abc944', class: "mt-16 pb-20 px-8" }, this.type === 'linear' && this.orientation === 'horizontal' ? (h("div", { class: `steps--horizontal ${themeClass}`, style: { '--step-count': steps.length.toString() } }, h("div", { class: "horizontal-indicators" }, steps.map((step, index) => this.renderHorizontalIndicator(step, index))), steps.map((step, index) => {
232
+ return (h("div", { key: '84383c5655004ccc0bcc144f3765c2d0b000cad6', class: this.articleClasses() }, this.imageSrc ? (h("div", { class: "w-full mb-12 rounded-t-lg overflow-hidden border-2" }, h("eds-img", { src: this.imageSrc, width: this.imageWidth, "with-bg": "true", "lazy-load": "true", alt: "Step illustration" }))) : (this.message && (h("div", { class: `w-full ${this.theme === 'brand' ? 'bg-strongest' : 'bg-darker'} rounded-t-lg border-2` }, h("div", { class: "p-24" }, h("span", { class: `${this.theme === 'brand' ? 'text-accent' : 'text-inverse'} f-heading-04` }, this.message))))), h("div", { key: 'd5fb5bbf6a48b90bf0db1e79a61ba5e445986368', class: "steps-body pb-20", style: {
233
+ paddingLeft: 'var(--eds-steps-padding-x, 0.5rem)',
234
+ paddingRight: 'var(--eds-steps-padding-x, 0.5rem)'
235
+ } }, this.type === 'linear' && this.orientation === 'horizontal' ? (h("div", { class: `steps--horizontal ${themeClass}`, style: { '--step-count': steps.length.toString() } }, h("div", { class: "horizontal-indicators" }, steps.map((step, index) => this.renderHorizontalIndicator(step, index))), steps.map((step, index) => {
208
236
  const isLast = index === steps.length - 1;
209
237
  if (this.activeStep !== index) {
210
238
  return null;
211
239
  }
212
- return (h("div", { class: "step-content", key: index, id: `eds-step-panel-${index}` }, h("slot", { name: `step-${index}` }, h("div", { class: "f-body-02 text-lighter", innerHTML: step.content })), h("div", { class: `flex items-center justify-between ${marginClass}` }, h("eds-button", { label: this.backLabel, intent: "primary", icon: "arrow-left", iconPos: "left", onClick: this.handleBack, disabled: index === 0, class: index === 0 ? 'hidden' : 'block', size: "small", pill: true }), (!isLast || this.showFinish) && (h("eds-button", { label: isLast ? this.finishLabel : this.nextLabel, intent: "primary", icon: "arrow-right", onClick: this.handleNext, disabled: this.isNextDisabledFor(index), size: "small", class: index > 0 ? 'ml-8' : null, pill: true }))), h("slot", { name: `actions-${index}` })));
240
+ return (h("div", { class: "step-content", key: index, id: `eds-step-panel-${index}` }, h("slot", { name: `step-${index}` }, h("div", { class: "f-body-02 text-lighter", innerHTML: step.content })), h("div", { class: `flex items-center justify-between ${marginClass}` }, h("eds-button", { label: this.backLabel, intent: "primary", icon: "arrow-left", iconPos: "left", onClick: this.handleBack, disabled: index === 0, class: index === 0 ? 'hidden' : 'block', size: this.navBtnSize, iconSmall: this.isMobile, pill: true }), (!isLast || this.showFinish) && (h("eds-button", { label: isLast ? this.finishLabel : this.nextLabel, intent: isLast ? 'brand' : 'primary', icon: "arrow-right", onClick: this.handleNext, disabled: this.isNextDisabledFor(index), size: this.navBtnSize, iconSmall: this.isMobile, class: index > 0 ? 'ml-8' : null, pill: true }))), h("slot", { name: `actions-${index}` })));
213
241
  }))) : this.type === 'linear' ? (h("div", { class: `steps ${themeClass}` }, steps.map((step, index) => {
214
242
  const isCompleted = this.activeStep > index;
215
- return (h("div", { class: `${index === 0 ? 'step' : 'step mt-16'} ${isCompleted ? 'is-completed' : ''}`, key: index }, this.renderHeading(step.title, index), this.activeStep === index && (h("div", { class: "content grid gap-y-16", id: `eds-step-panel-${index}` }, h("slot", { name: `step-${index}` }, h("div", { class: "my-16 f-body-02 text-lighter", innerHTML: step.content })), h("div", { class: `flex items-center justify-between ${marginClass}` }, h("eds-button", { label: this.backLabel, intent: "secondary", icon: "chevron-left", iconPos: "left", onClick: this.handleBack, disabled: index === 0, class: index === 0 ? 'hidden' : 'block', size: "small", pill: true }), (index < steps.length - 1 || this.showFinish) && (h("eds-button", { label: index === steps.length - 1 ? this.finishLabel : this.nextLabel, intent: "primary", icon: "chevron-right", onClick: this.handleNext, disabled: this.isNextDisabledFor(index), size: "small", class: index > 0 ? 'ml-8' : null, pill: true })))))));
243
+ return (h("div", { class: `${index === 0 ? 'step' : 'step mt-16'} ${isCompleted ? 'is-completed' : ''}`, key: index }, this.renderHeading(step.title, index), this.activeStep === index && (h("div", { class: "content grid gap-y-16", id: `eds-step-panel-${index}` }, h("slot", { name: `step-${index}` }, h("div", { class: "my-16 f-body-02 text-lighter", innerHTML: step.content })), h("div", { class: `flex items-center justify-between ${marginClass}` }, h("eds-button", { label: this.backLabel, intent: "primary", icon: "chevron-left", iconPos: "left", onClick: this.handleBack, disabled: index === 0, class: index === 0 ? 'hidden' : 'block', size: this.navBtnSize, iconSmall: this.isMobile, pill: true }), (index < steps.length - 1 || this.showFinish) && (h("eds-button", { label: index === steps.length - 1 ? this.finishLabel : this.nextLabel, intent: index === steps.length - 1 ? 'brand' : 'primary', icon: "chevron-right", onClick: this.handleNext, disabled: this.isNextDisabledFor(index), size: this.navBtnSize, iconSmall: this.isMobile, class: index > 0 ? 'ml-8' : null, pill: true })))))));
216
244
  }))) : (h("div", { class: `steps space-y-8 ${themeClass}` }, steps.map((step, index) => (h("div", { class: "step", key: index }, this.renderHeading(step.title, index), h("div", { class: "content", id: `eds-step-panel-${index}` }, h("div", { class: "content-body" }, h("slot", { name: `step-${index}` }, h("div", { class: "my-16 f-body-02 text-lighter", innerHTML: step.content }))))))))))));
217
245
  }
218
246
  static get is() { return "eds-steps-v2"; }
@@ -430,6 +458,24 @@ export class EdsStepsV2 {
430
458
  "reflect": false,
431
459
  "defaultValue": "true"
432
460
  },
461
+ "card": {
462
+ "type": "boolean",
463
+ "mutable": false,
464
+ "complexType": {
465
+ "original": "boolean",
466
+ "resolved": "boolean",
467
+ "references": {}
468
+ },
469
+ "required": false,
470
+ "optional": false,
471
+ "docs": {
472
+ "tags": [],
473
+ "text": "Whether the stepper draws its own bordered card. Default true. Set to false\nwhen the host already provides the card chrome (e.g. a multi-step form whose\nform-style border lives on an outer wrapper) to avoid a double border."
474
+ },
475
+ "attribute": "card",
476
+ "reflect": false,
477
+ "defaultValue": "true"
478
+ },
433
479
  "disableNext": {
434
480
  "type": "any",
435
481
  "mutable": true,
@@ -473,7 +519,8 @@ export class EdsStepsV2 {
473
519
  }
474
520
  static get states() {
475
521
  return {
476
- "activeStep": {}
522
+ "activeStep": {},
523
+ "isMobile": {}
477
524
  };
478
525
  }
479
526
  static get events() {