@ebrains/components 3.1.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 (347) 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_53.cjs.entry.js +367 -248
  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-frame.cjs.entry.js +1 -1
  11. package/dist/cjs/eds-gitlab-contributors.cjs.entry.js +26 -30
  12. package/dist/cjs/eds-icon-bluesky.cjs.entry.js +1 -1
  13. package/dist/cjs/eds-icon-eu.cjs.entry.js +1 -1
  14. package/dist/cjs/eds-icon-facebook.cjs.entry.js +1 -1
  15. package/dist/cjs/eds-icon-gitlab.cjs.entry.js +1 -1
  16. package/dist/cjs/eds-icon-linkedin.cjs.entry.js +1 -1
  17. package/dist/cjs/eds-icon-mastodon.cjs.entry.js +1 -1
  18. package/dist/cjs/eds-icon-twitter.cjs.entry.js +1 -1
  19. package/dist/cjs/eds-icon-youtube.cjs.entry.js +1 -1
  20. package/dist/cjs/eds-input-search.cjs.entry.js +1 -1
  21. package/dist/cjs/eds-modal.cjs.entry.js +18 -9
  22. package/dist/cjs/eds-pie.cjs.entry.js +2 -2
  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 +14 -11
  27. package/dist/cjs/incorrect-use-of-colors.cjs.entry.js +1 -1
  28. package/dist/cjs/loader.cjs.js +1 -1
  29. package/dist/cjs/logo-space.cjs.entry.js +58 -1
  30. package/dist/cjs/logo-variations-horizontal_2.cjs.entry.js +2 -2
  31. package/dist/cjs/logo-variations-tabs.cjs.entry.js +1 -1
  32. package/dist/cjs/logo-wrong-usage.cjs.entry.js +1 -1
  33. package/dist/cjs/svg-repository.cjs.entry.js +1 -1
  34. package/dist/cjs/token-list_3.cjs.entry.js +3 -3
  35. package/dist/cjs/token-ratios.cjs.entry.js +1 -1
  36. package/dist/cjs/token-spacing.cjs.entry.js +1 -1
  37. package/dist/cjs/token-typography.cjs.entry.js +8 -2
  38. package/dist/collection/components/eds-accordion/eds-accordion.js +2 -5
  39. package/dist/collection/components/eds-alert/eds-alert.css +14 -0
  40. package/dist/collection/components/eds-alert/eds-alert.js +2 -1
  41. package/dist/collection/components/eds-button/eds-button.js +6 -10
  42. package/dist/collection/components/eds-button/eds-button.stories.js +4 -1
  43. package/dist/collection/components/eds-cards/eds-card-app/eds-card-app.js +2 -5
  44. package/dist/collection/components/eds-cards/eds-card-composer/eds-card-title/eds-card-title.js +1 -1
  45. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.js +2 -5
  46. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.stories.js +4 -1
  47. package/dist/collection/components/eds-cards/eds-card-feature/eds-card-feature.js +2 -5
  48. package/dist/collection/components/eds-cards/eds-card-generic/eds-card-generic.js +2 -4
  49. package/dist/collection/components/eds-cards/eds-card-hero/eds-card-hero.js +6 -7
  50. package/dist/collection/components/eds-cards/eds-card-stat/eds-card-stat.js +6 -7
  51. package/dist/collection/components/eds-charts/eds-pie/eds-pie.js +2 -2
  52. package/dist/collection/components/eds-code-block/eds-code-block.css +72 -106
  53. package/dist/collection/components/eds-code-block/eds-code-block.js +1 -1
  54. package/dist/collection/components/eds-footer/eds-footer.js +23 -18
  55. package/dist/collection/components/eds-footer/eds-footer.stories.js +3 -4
  56. package/dist/collection/components/eds-form/eds-form.css +456 -0
  57. package/dist/collection/components/eds-form/eds-form.js +218 -14
  58. package/dist/collection/components/eds-form/eds-form.stories.js +110 -3
  59. package/dist/collection/components/eds-frame/eds-frame.js +1 -1
  60. package/dist/collection/components/eds-header/eds-header.js +1 -1
  61. package/dist/collection/components/eds-icons/eds-icon-eu/eds-icon-eu.js +1 -1
  62. package/dist/collection/components/eds-icons/eds-icon-gitlab/eds-icon-gitlab.js +1 -1
  63. package/dist/collection/components/eds-icons/social/eds-icon-bluesky/eds-icon-bluesky.js +1 -1
  64. package/dist/collection/components/eds-icons/social/eds-icon-facebook/eds-icon-facebook.js +1 -1
  65. package/dist/collection/components/eds-icons/social/eds-icon-linkedin/eds-icon-linkedin.js +1 -1
  66. package/dist/collection/components/eds-icons/social/eds-icon-mastodon/eds-icon-mastodon.js +1 -1
  67. package/dist/collection/components/eds-icons/social/eds-icon-twitter/eds-icon-twitter.js +1 -1
  68. package/dist/collection/components/eds-icons/social/eds-icon-youtube/eds-icon-youtube.js +1 -1
  69. package/dist/collection/components/eds-img/eds-img.js +2 -2
  70. package/dist/collection/components/eds-input-dropzone/eds-input-dropzone.js +7 -4
  71. package/dist/collection/components/eds-input-elements/eds-input/eds-input.js +2 -2
  72. package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.css +10 -0
  73. package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.js +1 -1
  74. package/dist/collection/components/eds-input-elements/eds-input-label/eds-input-label.css +17 -5
  75. package/dist/collection/components/eds-input-elements/eds-input-label/eds-input-label.js +1 -1
  76. package/dist/collection/components/eds-input-elements/eds-input-range/eds-input-range.js +15 -5
  77. package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.js +1 -1
  78. package/dist/collection/components/eds-input-elements/eds-input-select/eds-input-select.js +6 -2
  79. package/dist/collection/components/eds-input-field/eds-input-field.css +219 -0
  80. package/dist/collection/components/eds-input-field/eds-input-field.js +7 -2
  81. package/dist/collection/components/eds-input-field/eds-input-field.stories.js +35 -7
  82. package/dist/collection/components/eds-input-file/eds-input-file.js +5 -3
  83. package/dist/collection/components/eds-link/eds-link.js +4 -8
  84. package/dist/collection/components/eds-logo/eds-logo.js +13 -66
  85. package/dist/collection/components/eds-logo/eds-logo.stories.js +36 -17
  86. package/dist/collection/components/eds-modal/eds-modal.js +18 -9
  87. package/dist/collection/components/eds-modal/eds-modal.stories.js +3 -1
  88. package/dist/collection/components/eds-nps/eds-nps.js +2 -2
  89. package/dist/collection/components/eds-pagination/eds-pagination.js +1 -1
  90. package/dist/collection/components/eds-progress-bar/eds-progress-bar.js +1 -8
  91. package/dist/collection/components/eds-rating/eds-rating.js +1 -1
  92. package/dist/collection/components/eds-section/eds-section-core/eds-section-core.js +1 -1
  93. package/dist/collection/components/eds-section/eds-section-heading/eds-section-heading.js +2 -2
  94. package/dist/collection/components/eds-social-networks/eds-social-networks.js +1 -1
  95. package/dist/collection/components/eds-spinner/eds-spinner.js +1 -1
  96. package/dist/collection/components/eds-steps/eds-steps.css +56 -25
  97. package/dist/collection/components/eds-steps/eds-steps.js +27 -7
  98. package/dist/collection/components/eds-steps-v2/eds-steps-v2.css +93 -28
  99. package/dist/collection/components/eds-steps-v2/eds-steps-v2.js +57 -10
  100. package/dist/collection/components/eds-steps-v2/eds-steps-v2.stories.js +80 -17
  101. package/dist/collection/components/eds-switch/eds-switch.css +26 -3
  102. package/dist/collection/components/eds-switch/eds-switch.js +10 -7
  103. package/dist/collection/components/eds-switch/eds-switch.stories.js +20 -1
  104. package/dist/collection/components/eds-table/eds-table.js +1 -3
  105. package/dist/collection/components/eds-table/eds-table.stories.js +2 -6
  106. package/dist/collection/components/eds-tabs/eds-tabs.js +4 -11
  107. package/dist/collection/components/eds-tabs/eds-tabs.stories.js +2 -2
  108. package/dist/collection/components/eds-tag/eds-tag.js +1 -1
  109. package/dist/collection/components/eds-timeline/eds-timeline.js +1 -1
  110. package/dist/collection/components/eds-toast/eds-toast.css +146 -0
  111. package/dist/collection/components/eds-toast/eds-toast.js +106 -4
  112. package/dist/collection/components/eds-toast/eds-toast.stories.js +102 -5
  113. package/dist/collection/components/eds-toast-manager/eds-toast-manager.js +1 -1
  114. package/dist/collection/components/eds-tooltip/eds-tooltip.js +1 -1
  115. package/dist/collection/components/eds-tooltip/eds-tooltip.stories.js +7 -1
  116. package/dist/collection/components/eds-user/eds-user.js +2 -5
  117. package/dist/collection/components/eds-user/eds-user.stories.js +8 -11
  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 +8 -2
  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 +58 -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.js +26 -30
  143. package/dist/collection/shared-ui/eds-global-search/eds-global-search.js +18 -12
  144. package/dist/collection/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.js +15 -19
  145. package/dist/collection/shared-ui/eds-kg-web-services-select/eds-kg-web-services-select.js +2 -2
  146. package/dist/collection/shared-ui/eds-kg-web-services-select/eds-kg-web-services-select.stories.js +1 -3
  147. package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.stories.js +1 -1
  148. package/dist/collection/shared-ui/eds-search-select/eds-search-select.css +11 -1
  149. package/dist/collection/shared-ui/eds-search-select/eds-search-select.js +37 -16
  150. package/dist/collection/shared-ui/eds-search-select/eds-search-select.stories.js +10 -5
  151. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.js +14 -11
  152. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.stories.js +4 -1
  153. package/dist/collection/shared-ui/examples/eds-app-root/eds-app-root.js +1 -1
  154. package/dist/collection/utils/eds-form/safeFormat.js +1 -5
  155. package/dist/components/components-section.js +1 -1
  156. package/dist/components/components.css +9 -7
  157. package/dist/components/components.esm.js +1 -1
  158. package/dist/components/correct-use-of-colors.js +1 -1
  159. package/dist/components/docs-palettes.js +1 -1
  160. package/dist/components/docs-tokens.js +1 -1
  161. package/dist/components/eds-accordion2.js +2 -5
  162. package/dist/components/eds-alert2.js +3 -2
  163. package/dist/components/eds-app-root.js +1 -1
  164. package/dist/components/eds-button2.js +5 -9
  165. package/dist/components/eds-card-app.js +2 -5
  166. package/dist/components/eds-card-cta.js +2 -5
  167. package/dist/components/eds-card-feature.js +2 -5
  168. package/dist/components/eds-card-generic2.js +2 -4
  169. package/dist/components/eds-card-hero.js +6 -7
  170. package/dist/components/eds-card-stat.js +6 -7
  171. package/dist/components/eds-card-title2.js +1 -1
  172. package/dist/components/eds-code-block2.js +2 -2
  173. package/dist/components/eds-cookies-preference.js +1 -1
  174. package/dist/components/eds-footer2.js +23 -18
  175. package/dist/components/eds-form.js +101 -38
  176. package/dist/components/eds-frame.js +1 -1
  177. package/dist/components/eds-gitlab-contributors.js +26 -30
  178. package/dist/components/eds-global-search.js +18 -12
  179. package/dist/components/eds-header.js +1 -1
  180. package/dist/components/eds-icon-bluesky.js +1 -1
  181. package/dist/components/eds-icon-eu.js +1 -1
  182. package/dist/components/eds-icon-facebook.js +1 -1
  183. package/dist/components/eds-icon-gitlab.js +1 -1
  184. package/dist/components/eds-icon-linkedin.js +1 -1
  185. package/dist/components/eds-icon-mastodon.js +1 -1
  186. package/dist/components/eds-icon-twitter.js +1 -1
  187. package/dist/components/eds-icon-youtube.js +1 -1
  188. package/dist/components/eds-img2.js +2 -2
  189. package/dist/components/eds-input-dropzone2.js +7 -4
  190. package/dist/components/eds-input-field2.js +8 -3
  191. package/dist/components/eds-input-file2.js +5 -3
  192. package/dist/components/eds-input-footer2.js +3 -7
  193. package/dist/components/eds-input-label2.js +2 -2
  194. package/dist/components/eds-input-range2.js +15 -5
  195. package/dist/components/eds-input-search.js +1 -1
  196. package/dist/components/eds-input-select2.js +6 -2
  197. package/dist/components/eds-input2.js +2 -2
  198. package/dist/components/eds-kg-learning-resources.js +15 -19
  199. package/dist/components/eds-kg-web-services-select2.js +2 -2
  200. package/dist/components/eds-link2.js +3 -7
  201. package/dist/components/eds-logo2.js +4 -22
  202. package/dist/components/eds-modal.js +18 -9
  203. package/dist/components/eds-nps2.js +2 -2
  204. package/dist/components/eds-pagination2.js +1 -1
  205. package/dist/components/eds-pie.js +2 -2
  206. package/dist/components/eds-progress-bar.js +1 -8
  207. package/dist/components/eds-rating2.js +1 -1
  208. package/dist/components/eds-search-select2.js +38 -17
  209. package/dist/components/eds-section-core2.js +1 -1
  210. package/dist/components/eds-section-heading2.js +2 -2
  211. package/dist/components/eds-social-networks2.js +1 -1
  212. package/dist/components/eds-spinner2.js +1 -1
  213. package/dist/components/eds-steps-v2.js +41 -11
  214. package/dist/components/eds-steps2.js +28 -8
  215. package/dist/components/eds-switch2.js +8 -5
  216. package/dist/components/eds-table2.js +1 -3
  217. package/dist/components/eds-tabs.js +4 -11
  218. package/dist/components/eds-tag2.js +1 -1
  219. package/dist/components/eds-timeline.js +1 -1
  220. package/dist/components/eds-toast-manager.js +1 -1
  221. package/dist/components/eds-toast2.js +39 -3
  222. package/dist/components/eds-tooltip2.js +1 -1
  223. package/dist/components/eds-trl-badge.js +14 -11
  224. package/dist/components/eds-user.js +1 -4
  225. package/dist/components/incorrect-use-of-colors.js +1 -1
  226. package/dist/components/logo-space.js +58 -1
  227. package/dist/components/logo-variations-horizontal2.js +1 -1
  228. package/dist/components/logo-variations-tabs.js +1 -1
  229. package/dist/components/logo-variations-vertical2.js +1 -1
  230. package/dist/components/logo-wrong-usage.js +1 -1
  231. package/dist/components/{p-d59d6fda.entry.js → p-05e96609.entry.js} +1 -1
  232. package/dist/components/p-0d778d10.entry.js +1 -0
  233. package/dist/components/{p-62f53e7a.entry.js → p-114f6d54.entry.js} +1 -1
  234. package/dist/components/p-1534204d.entry.js +1 -0
  235. package/dist/components/p-337d4ee3.entry.js +9 -0
  236. package/dist/components/p-340bc935.entry.js +1 -0
  237. package/dist/components/p-39dbb964.entry.js +1 -0
  238. package/dist/components/{p-25729ade.entry.js → p-3f66bc26.entry.js} +1 -1
  239. package/dist/components/p-43f9e64f.entry.js +1 -0
  240. package/dist/components/p-46cc6c1a.entry.js +1 -0
  241. package/dist/components/{p-e9e6ec19.entry.js → p-4b8a7979.entry.js} +1 -1
  242. package/dist/components/{p-bdcb71e1.entry.js → p-6b94b2ec.entry.js} +1 -1
  243. package/dist/components/p-6d965fef.entry.js +1 -0
  244. package/dist/components/{p-62580004.entry.js → p-6e370182.entry.js} +1 -1
  245. package/dist/components/p-6ffe581c.entry.js +1 -0
  246. package/dist/components/{p-e027bc90.entry.js → p-726637b1.entry.js} +1 -1
  247. package/dist/components/{p-8a483358.entry.js → p-86ccc09f.entry.js} +1 -1
  248. package/dist/components/{p-e71a4f29.entry.js → p-8755a21b.entry.js} +1 -1
  249. package/dist/components/{p-e4df206e.entry.js → p-8ab461e2.entry.js} +1 -1
  250. package/dist/components/p-8cb162b8.entry.js +1 -0
  251. package/dist/components/p-8cdbc280.entry.js +1 -0
  252. package/dist/components/{p-42791331.entry.js → p-8e034c4e.entry.js} +1 -1
  253. package/dist/components/p-9f649fa3.entry.js +1 -0
  254. package/dist/components/{p-f9a9fa34.entry.js → p-a26dad9b.entry.js} +1 -1
  255. package/dist/components/p-a2d6a9ca.entry.js +1 -0
  256. package/dist/components/p-afabe1be.entry.js +1 -0
  257. package/dist/components/{p-1fbcc480.entry.js → p-b1519098.entry.js} +1 -1
  258. package/dist/components/{p-12acc48d.entry.js → p-b4023b45.entry.js} +1 -1
  259. package/dist/components/p-c53b3563.entry.js +1 -0
  260. package/dist/components/p-c7d612d1.entry.js +1 -0
  261. package/dist/components/p-dc9aef22.entry.js +1 -0
  262. package/dist/components/{p-e339d0b5.entry.js → p-f66a7cf9.entry.js} +1 -1
  263. package/dist/components/{p-80a32e20.entry.js → p-f97f62f2.entry.js} +1 -1
  264. package/dist/components/primary.js +1 -1
  265. package/dist/components/primary2.js +1 -1
  266. package/dist/components/secondary.js +1 -1
  267. package/dist/components/secondary2.js +7 -7
  268. package/dist/components/support.js +1 -1
  269. package/dist/components/support2.js +3 -3
  270. package/dist/components/svg-repository.js +1 -1
  271. package/dist/components/token-list2.js +1 -1
  272. package/dist/components/token-radii2.js +1 -1
  273. package/dist/components/token-ratios.js +1 -1
  274. package/dist/components/token-shadows2.js +1 -1
  275. package/dist/components/token-spacing.js +1 -1
  276. package/dist/components/token-typography.js +8 -2
  277. package/dist/esm/color-primary-palette_6.entry.js +14 -14
  278. package/dist/esm/components-section.entry.js +1 -1
  279. package/dist/esm/components.js +1 -1
  280. package/dist/esm/correct-use-of-colors.entry.js +1 -1
  281. package/dist/esm/docs-palettes.entry.js +1 -1
  282. package/dist/esm/docs-tokens.entry.js +1 -1
  283. package/dist/esm/eds-accordion_53.entry.js +367 -248
  284. package/dist/esm/eds-app-root.entry.js +1 -1
  285. package/dist/esm/eds-cookies-preference.entry.js +1 -1
  286. package/dist/esm/eds-frame.entry.js +1 -1
  287. package/dist/esm/eds-gitlab-contributors.entry.js +26 -30
  288. package/dist/esm/eds-icon-bluesky.entry.js +1 -1
  289. package/dist/esm/eds-icon-eu.entry.js +1 -1
  290. package/dist/esm/eds-icon-facebook.entry.js +1 -1
  291. package/dist/esm/eds-icon-gitlab.entry.js +1 -1
  292. package/dist/esm/eds-icon-linkedin.entry.js +1 -1
  293. package/dist/esm/eds-icon-mastodon.entry.js +1 -1
  294. package/dist/esm/eds-icon-twitter.entry.js +1 -1
  295. package/dist/esm/eds-icon-youtube.entry.js +1 -1
  296. package/dist/esm/eds-input-search.entry.js +1 -1
  297. package/dist/esm/eds-modal.entry.js +18 -9
  298. package/dist/esm/eds-pie.entry.js +2 -2
  299. package/dist/esm/eds-section-core_2.entry.js +3 -3
  300. package/dist/esm/eds-timeline.entry.js +1 -1
  301. package/dist/esm/eds-toast-manager.entry.js +1 -1
  302. package/dist/esm/eds-trl-badge.entry.js +14 -11
  303. package/dist/esm/incorrect-use-of-colors.entry.js +1 -1
  304. package/dist/esm/loader.js +1 -1
  305. package/dist/esm/logo-space.entry.js +58 -1
  306. package/dist/esm/logo-variations-horizontal_2.entry.js +2 -2
  307. package/dist/esm/logo-variations-tabs.entry.js +1 -1
  308. package/dist/esm/logo-wrong-usage.entry.js +1 -1
  309. package/dist/esm/svg-repository.entry.js +1 -1
  310. package/dist/esm/token-list_3.entry.js +3 -3
  311. package/dist/esm/token-ratios.entry.js +1 -1
  312. package/dist/esm/token-spacing.entry.js +1 -1
  313. package/dist/esm/token-typography.entry.js +8 -2
  314. package/dist/hydrate/index.js +572 -368
  315. package/dist/hydrate/index.mjs +572 -368
  316. package/dist/types/components/eds-form/eds-form.d.ts +56 -0
  317. package/dist/types/components/eds-form/eds-form.stories.d.ts +63 -0
  318. package/dist/types/components/eds-logo/eds-logo.d.ts +11 -28
  319. package/dist/types/components/eds-logo/eds-logo.stories.d.ts +22 -2
  320. package/dist/types/components/eds-steps/eds-steps.d.ts +7 -0
  321. package/dist/types/components/eds-steps-v2/eds-steps-v2.d.ts +14 -1
  322. package/dist/types/components/eds-steps-v2/eds-steps-v2.stories.d.ts +40 -9
  323. package/dist/types/components/eds-switch/eds-switch.d.ts +6 -2
  324. package/dist/types/components/eds-switch/eds-switch.stories.d.ts +8 -0
  325. package/dist/types/components/eds-toast/eds-toast.d.ts +33 -1
  326. package/dist/types/components/eds-toast/eds-toast.stories.d.ts +49 -1
  327. package/dist/types/components/eds-user/eds-user.d.ts +0 -2
  328. package/dist/types/components/eds-user/eds-user.stories.d.ts +5 -9
  329. package/dist/types/components.d.ts +210 -60
  330. package/package.json +1 -1
  331. package/dist/components/p-00ba405d.entry.js +0 -1
  332. package/dist/components/p-03342030.entry.js +0 -1
  333. package/dist/components/p-0e2bac0f.entry.js +0 -1
  334. package/dist/components/p-18399fe1.entry.js +0 -1
  335. package/dist/components/p-1e6f0572.entry.js +0 -1
  336. package/dist/components/p-27e093c3.entry.js +0 -1
  337. package/dist/components/p-3d1bb2fe.entry.js +0 -1
  338. package/dist/components/p-5ff4b1d0.entry.js +0 -1
  339. package/dist/components/p-6be1730a.entry.js +0 -1
  340. package/dist/components/p-786ff09b.entry.js +0 -1
  341. package/dist/components/p-85476a6f.entry.js +0 -9
  342. package/dist/components/p-c2127276.entry.js +0 -1
  343. package/dist/components/p-c3ee9163.entry.js +0 -1
  344. package/dist/components/p-c4cfbf98.entry.js +0 -1
  345. package/dist/components/p-c65082fe.entry.js +0 -1
  346. package/dist/components/p-cc096938.entry.js +0 -1
  347. package/dist/components/p-f4d2f882.entry.js +0 -1
@@ -95,12 +95,15 @@ button.switch.switch--checked .switch-handle {
95
95
  background: transparent;
96
96
  border: none;
97
97
  border-radius: 1.5rem;
98
- font-family: var(--f-ui-02-fontFamily);
99
- font-size: 0.9rem;
98
+ /* Mockup type: Plex Sans 14px medium. Note we bundle 400/600 only, so 500
99
+ resolves to 400 in-app — kept at 500 so environments that do load the
100
+ medium cut match the mockup exactly. */
101
+ font-family: var(--plex-sans, 'IBM Plex Sans', system-ui, sans-serif);
102
+ font-size: 14px;
100
103
  font-weight: 500;
101
104
  cursor: pointer;
102
105
  transition: all 0.3s;
103
- color: var(--grey-dark);
106
+ color: var(--body-l, #5a5f5c);
104
107
  white-space: nowrap;
105
108
  }
106
109
 
@@ -113,6 +116,26 @@ button.switch.switch--checked .switch-handle {
113
116
  color: var(--brand-black);
114
117
  }
115
118
 
119
+ /* Dark segmented — the mockup's quiet control bar: white pill container with a
120
+ hairline border; the active segment inverts to brand-black. */
121
+ .segmented-container--dark {
122
+ background: #fff;
123
+ border: 1px solid var(--grey-300, #e2e2e2);
124
+ padding: 4px;
125
+ gap: 3px;
126
+ }
127
+
128
+ .segmented-container--dark .segmented-btn {
129
+ padding: 9px 30px;
130
+ border-radius: 999px;
131
+ transition: 0.14s;
132
+ }
133
+
134
+ .segmented-container--dark .segmented-btn--active {
135
+ background: var(--brand-black, #07140d);
136
+ color: #fff;
137
+ }
138
+
116
139
  .segmented-btn--disabled {
117
140
  opacity: 0.6;
118
141
  cursor: not-allowed;
@@ -31,7 +31,7 @@ export class EdsSwitch {
31
31
  this.variant = 'toggle';
32
32
  }
33
33
  render() {
34
- if (this.variant === 'segmented') {
34
+ if (this.variant === 'segmented' || this.variant === 'segmented-dark') {
35
35
  return this.renderSegmented();
36
36
  }
37
37
  return this.renderToggle();
@@ -59,7 +59,10 @@ export class EdsSwitch {
59
59
  }, onClick: this.toggleSwitch, onKeyDown: this.handleKeyDown, disabled: this.disabled }, h("span", { class: "switch-handle" })), this.labelOn && (h("span", { id: `${switchId}-on`, class: "switch-label switch-label--on ml-8" }, this.labelOn))));
60
60
  }
61
61
  renderSegmented() {
62
- return (h("div", { class: "segmented-container", role: "group", "aria-label": "View toggle" }, h("button", { type: "button", tabindex: this.disabled ? '-1' : '0', class: {
62
+ return (h("div", { class: {
63
+ 'segmented-container': true,
64
+ 'segmented-container--dark': this.variant === 'segmented-dark'
65
+ }, role: "group", "aria-label": "View toggle" }, h("button", { type: "button", tabindex: this.disabled ? '-1' : '0', class: {
63
66
  'segmented-btn': true,
64
67
  'segmented-btn--active': !this.checked,
65
68
  'segmented-btn--disabled': this.disabled
@@ -67,7 +70,7 @@ export class EdsSwitch {
67
70
  if (!this.disabled && this.checked) {
68
71
  this.toggleSwitch();
69
72
  }
70
- }, onKeyDown: this.handleKeyDown, disabled: this.disabled, "aria-pressed": !this.checked ? 'true' : 'false' }, h("span", { class: "f-ui-03" }, this.labelOff)), h("button", { type: "button", tabindex: this.disabled ? '-1' : '0', class: {
73
+ }, onKeyDown: this.handleKeyDown, disabled: this.disabled, "aria-pressed": !this.checked ? 'true' : 'false' }, h("span", null, this.labelOff)), h("button", { type: "button", tabindex: this.disabled ? '-1' : '0', class: {
71
74
  'segmented-btn': true,
72
75
  'segmented-btn--active': this.checked,
73
76
  'segmented-btn--disabled': this.disabled
@@ -75,7 +78,7 @@ export class EdsSwitch {
75
78
  if (!this.disabled && !this.checked) {
76
79
  this.toggleSwitch();
77
80
  }
78
- }, onKeyDown: this.handleKeyDown, disabled: this.disabled, "aria-pressed": this.checked ? 'true' : 'false' }, h("span", { class: "f-ui-03" }, this.labelOn))));
81
+ }, onKeyDown: this.handleKeyDown, disabled: this.disabled, "aria-pressed": this.checked ? 'true' : 'false' }, h("span", null, this.labelOn))));
79
82
  }
80
83
  static get is() { return "eds-switch"; }
81
84
  static get encapsulation() { return "shadow"; }
@@ -167,15 +170,15 @@ export class EdsSwitch {
167
170
  "type": "string",
168
171
  "mutable": false,
169
172
  "complexType": {
170
- "original": "'toggle' | 'segmented'",
171
- "resolved": "\"segmented\" | \"toggle\"",
173
+ "original": "'toggle' | 'segmented' | 'segmented-dark'",
174
+ "resolved": "\"segmented\" | \"segmented-dark\" | \"toggle\"",
172
175
  "references": {}
173
176
  },
174
177
  "required": false,
175
178
  "optional": false,
176
179
  "docs": {
177
180
  "tags": [],
178
- "text": "Variant of the switch: 'toggle' (default) or 'segmented' (pill-style buttons)"
181
+ "text": "Variant of the switch:\n- 'toggle' (default): the classic on/off switch\n- 'segmented': pill-style buttons \u2014 light container, green active pill\n- 'segmented-dark': pill-style buttons \u2014 white container with a hairline\n border and a dark (brand-black) active pill"
179
182
  },
180
183
  "attribute": "variant",
181
184
  "reflect": false,
@@ -6,7 +6,11 @@ export default {
6
6
  disabled: { control: 'boolean', description: 'Disables the switch when true.' },
7
7
  labelOn: { control: 'text', description: 'Label displayed when the switch is ON.' },
8
8
  labelOff: { control: 'text', description: 'Label displayed when the switch is OFF.' },
9
- variant: { control: 'select', options: ['toggle', 'segmented'], description: 'Switch variant: toggle or segmented.' }
9
+ variant: {
10
+ control: 'select',
11
+ options: ['toggle', 'segmented', 'segmented-dark'],
12
+ description: 'Switch variant: toggle, segmented (green active pill), or segmented-dark (white container, dark active pill).'
13
+ }
10
14
  },
11
15
  args: {
12
16
  checked: false,
@@ -90,6 +94,21 @@ export const SegmentedChecked = {
90
94
  labelOff: 'Light'
91
95
  }
92
96
  };
97
+ export const SegmentedDark = {
98
+ render: (args) => `
99
+ <eds-switch
100
+ variant="segmented-dark"
101
+ ${args.checked ? 'checked' : ''}
102
+ ${args.disabled ? 'disabled' : ''}
103
+ label-on="${args.labelOn}"
104
+ label-off="${args.labelOff}">
105
+ </eds-switch>`,
106
+ args: {
107
+ labelOn: 'Results',
108
+ labelOff: 'Poll',
109
+ checked: true
110
+ }
111
+ };
93
112
  export const SegmentedDisabled = {
94
113
  render: (args) => `
95
114
  <eds-switch
@@ -350,9 +350,7 @@ export class EdsTable {
350
350
  const paginatedRows = this.getPaginatedRows();
351
351
  const lastPage = Math.ceil(this.totalRows / this.rowsPerPage);
352
352
  const showControls = this.showViewToggle || this.searchEnabled;
353
- return (h("div", { key: '1e8a2f5f19df240ee3a57951641b60b947342fad' }, showControls && (h("div", { key: '778fe091226330448bba089189e9dd6a6aa977a9', class: "controls-container flex-col flex-md-row items-start items-md-center justify-between gap-16 mb-16" }, this.showViewToggle && (h("div", { key: '7ef287464bb2fba846be5341f4bb0e71d982be0e', class: "view-toggle-wrapper" }, h("eds-switch", { key: '2d3a494a5b354a14c8e882a153633bd5e85a40ab', variant: "segmented", labelOff: "Table View", labelOn: "Card View", checked: this.view === 'card', onUiswitch: this.handleViewChange }))), this.searchEnabled && (h("div", { key: 'dfcf6d0bdc23cb10481121881a7656b02a0599c1', class: `search-wrapper w-full ${this.showViewToggle ? 'w-md-400' : ''}` }, h("eds-input-field", { key: 1, icon: "search", name: "search", "aria-label": "Search", type: "text", placeholder: "Search...", onInput: (event) => this.handleSearch(event) }))))), this.view === 'card'
354
- ? this.renderCardView(paginatedRows)
355
- : this.renderTableView(paginatedRows), this.shouldEnablePagination() && (h("div", { key: '3f7faafdd6147855cb8812ff6303c335c7fd1f35', class: "mt-20" }, h("eds-pagination", { key: '17705ba01a8ca8cc79bacfce34e55f11ce53d70c', currentPage: this.currentPage, lastPage: lastPage, perPage: this.rowsPerPage, total: this.totalRows, mode: "default" })))));
353
+ return (h("div", { key: '8a025e9e12285aa3444b2f83e0b68af55cbe32e6' }, showControls && (h("div", { key: 'f97864d8b61db7ec4fa623ecadc3c225464a6c84', class: "controls-container flex-col flex-md-row items-start items-md-center justify-between gap-16 mb-16" }, this.showViewToggle && (h("div", { key: 'ddf8b1c0fb59fe81efa22a4dc02b414d41ae7208', class: "view-toggle-wrapper" }, h("eds-switch", { key: 'c3631986b456a88559face6a2ce7ce8acd5d01c2', variant: "segmented", labelOff: "Table View", labelOn: "Card View", checked: this.view === 'card', onUiswitch: this.handleViewChange }))), this.searchEnabled && (h("div", { key: 'a02d7f163dd2bb34bb26ae60bd5b018ed07291d9', class: `search-wrapper w-full ${this.showViewToggle ? 'w-md-400' : ''}` }, h("eds-input-field", { key: 1, icon: "search", name: "search", "aria-label": "Search", type: "text", placeholder: "Search...", onInput: (event) => this.handleSearch(event) }))))), this.view === 'card' ? this.renderCardView(paginatedRows) : this.renderTableView(paginatedRows), this.shouldEnablePagination() && (h("div", { key: 'ecf412674a951b4d19e87385270cb49e64e590f6', class: "mt-20" }, h("eds-pagination", { key: 'fe1365ecb4d249548ba0c936a48b6141ff14ad0e', currentPage: this.currentPage, lastPage: lastPage, perPage: this.rowsPerPage, total: this.totalRows, mode: "default" })))));
356
354
  }
357
355
  static get is() { return "eds-table"; }
358
356
  static get encapsulation() { return "shadow"; }
@@ -57,9 +57,7 @@ export default {
57
57
  sortingEnabled: false,
58
58
  view: 'table',
59
59
  showViewToggle: false,
60
- actions: [
61
- { name: 'view', label: 'View' }
62
- ]
60
+ actions: [{ name: 'view', label: 'View' }]
63
61
  }
64
62
  };
65
63
  // Sample data for the table
@@ -104,8 +102,6 @@ export const Default = {
104
102
  sortingEnabled: true,
105
103
  view: 'table',
106
104
  showViewToggle: true,
107
- actions: [
108
- { name: 'view', label: 'View', showLabel: true, intent: 'brand' }
109
- ]
105
+ actions: [{ name: 'view', label: 'View', showLabel: true, intent: 'brand' }]
110
106
  }
111
107
  };
@@ -139,19 +139,12 @@ export class EdsTabs {
139
139
  }
140
140
  }
141
141
  render() {
142
- const containerClasses = [
143
- 'tabs-container',
144
- `tabs-container-${this.variant}`
145
- ].join(' ');
146
- return (h("div", { key: '646f43031cde2e0ab84d2830fd9477841b3c757b', id: `${this.identifier}` }, h("div", { key: '2eb01c96640c6fc602777f227525066e5970489e', class: containerClasses }, h("nav", { key: 'b419fc7414574ea70b19433a3c5daa63b5ad6652', role: "tablist", class: "tabs-nav", "aria-label": this.navAriaLabel }, this.parsedTabs.map((tab, index) => {
142
+ const containerClasses = ['tabs-container', `tabs-container-${this.variant}`].join(' ');
143
+ return (h("div", { key: '39b1e8fc98303be43fbbd0e67807786fe0ad8fef', id: `${this.identifier}` }, h("div", { key: '3cef6bd5804c110e51560c7b58de5cb77eadbbb6', class: containerClasses }, h("nav", { key: 'b59ed6ad2fe067b2c39b1db43cd4242eec1b01bf', role: "tablist", class: "tabs-nav", "aria-label": this.navAriaLabel }, this.parsedTabs.map((tab, index) => {
147
144
  const isActive = index === this.activeIndex;
148
- const tabClasses = [
149
- 'tab',
150
- `tab-${this.variant}`,
151
- isActive ? 'tab-active' : ''
152
- ].filter(Boolean).join(' ');
145
+ const tabClasses = ['tab', `tab-${this.variant}`, isActive ? 'tab-active' : ''].filter(Boolean).join(' ');
153
146
  return (h("button", { class: tabClasses, type: "button", role: "tab", "aria-selected": isActive ? 'true' : 'false', tabIndex: isActive ? 0 : -1, "aria-label": tab.ariaLabel || tab.label, "aria-controls": `panel-${index}`, id: `tab-${index}`, ref: (el) => this.setTabRef(el, index), onClick: () => this.handleTabClick(index, tab.label, true), onKeyDown: (e) => this.onKeyDown(e, index) }, tab.label || tab.ariaLabel));
154
- }))), h("div", { key: '0ce244b3d2b2120d1bdf127144e9b42e2ad34e52', class: "tab-panels" }, this.parsedTabs.map((_, index) => (h("div", { role: "tabpanel", id: `panel-${index}`, "aria-labelledby": `tab-${index}`, hidden: index !== this.activeIndex, tabIndex: index === this.activeIndex ? 0 : -1 }, h("slot", { name: `panel-${index}` })))))));
147
+ }))), h("div", { key: '224717af5f59fbea2683dd33144760be8c553bb8', class: "tab-panels" }, this.parsedTabs.map((_, index) => (h("div", { role: "tabpanel", id: `panel-${index}`, "aria-labelledby": `tab-${index}`, hidden: index !== this.activeIndex, tabIndex: index === this.activeIndex ? 0 : -1 }, h("slot", { name: `panel-${index}` })))))));
155
148
  }
156
149
  static get is() { return "eds-tabs"; }
157
150
  static get encapsulation() { return "shadow"; }
@@ -63,9 +63,9 @@ const createTabsStory = (args, panelContents) => {
63
63
  return container;
64
64
  };
65
65
  const defaultPanels = [
66
- { title: 'Home', body: 'Welcome to our homepage! Here\'s the latest news and updates.' },
66
+ { title: 'Home', body: "Welcome to our homepage! Here's the latest news and updates." },
67
67
  { title: 'Profile', body: 'See and update your profile settings.' },
68
- { title: 'Settings', body: 'Update the app\'s settings.' }
68
+ { title: 'Settings', body: "Update the app's settings." }
69
69
  ];
70
70
  export const Default = {
71
71
  render: (args) => createTabsStory(args, defaultPanels)
@@ -35,7 +35,7 @@ export class EdsTag {
35
35
  }
36
36
  render() {
37
37
  const classes = tagStyles({ intent: this.intent, size: this.size });
38
- return (h("span", { key: '20e1625ac01b0dc1f40356d02622e0649faa7fa7', class: classes }, h("span", { key: '313c3f18c0a5df285afe6a40ded9e68035d9648f', style: { position: 'relative', zIndex: '1' } }, this.label)));
38
+ return (h("span", { key: 'f9399ed92717576781bff9fb5f117743d50720af', class: classes }, h("span", { key: '9500083dfbddd73539de9e1c5b738bf7a3415624', style: { position: 'relative', zIndex: '1' } }, this.label)));
39
39
  }
40
40
  static get is() { return "eds-tag"; }
41
41
  static get encapsulation() { return "shadow"; }
@@ -41,7 +41,7 @@ export class EdsTimeline {
41
41
  }
42
42
  }
43
43
  render() {
44
- return (h("div", { key: '78b199b18d361ae3223e4f1fe9a2043d61f4271b', class: "max-w-sidebar mx-auto px-4 py-8" }, h("div", { key: 'afdfdf7dc573a7f273703a02e38e755a9815bdf7', class: "relative" }, h("div", { key: '7affc96f356ee901ca263c7347ae60b84869f28b', class: "absolute w-4 left-1/2 transform -translate-x-1/2 bg-strong h-full z-0" }), h("div", { key: '7ba006234bd1365890e75b7f59aa118265ba727c', class: "space-y-16" }, this.parsedEvents.map((event, index) => (h("div", { class: "relative flex" }, h("div", { class: `w-1/2 ${index % 2 === 0 ? 'pr-4' : ''}` }, index % 2 === 0 && (h("eds-card-generic", { title: event.title, url: "#", description: event.description, intent: "secondary", tags: JSON.stringify(event.completed
44
+ return (h("div", { key: '3816dfeeec536ae803b069e5f5e5112f476dffed', class: "max-w-sidebar mx-auto px-4 py-8" }, h("div", { key: '360b8c6752eab781870de60aa1f89889eff644d3', class: "relative" }, h("div", { key: 'eda9ed9904dfe7c8c0fff2295666666cfbd3763a', class: "absolute w-4 left-1/2 transform -translate-x-1/2 bg-strong h-full z-0" }), h("div", { key: '5f7b736ed512cf4752c66c8a0c9010822d8b4f44', class: "space-y-16" }, this.parsedEvents.map((event, index) => (h("div", { class: "relative flex" }, h("div", { class: `w-1/2 ${index % 2 === 0 ? 'pr-4' : ''}` }, index % 2 === 0 && (h("eds-card-generic", { title: event.title, url: "#", description: event.description, intent: "secondary", tags: JSON.stringify(event.completed
45
45
  ? [{ label: 'completed', style: 'accent' }]
46
46
  : [{ label: 'pending', style: 'default' }]), onClick: () => this.handleEventClick(event) }))), h("div", { class: "flex items-center justify-center relative" }, event.completed ? (h("div", { class: "w-32 h-32 bg-accent rounded-full shadow flex items-center justify-center" })) : (h("div", { class: "w-32 h-32 bg-strong rounded-full shadow flex items-center justify-center" }))), h("div", { class: `w-1/2 ${index % 2 !== 0 ? 'pl-4' : ''}` }, index % 2 !== 0 && (h("eds-card-generic", { title: event.title, url: "#", description: event.description, intent: "secondary", tags: JSON.stringify(event.completed
47
47
  ? [{ label: 'completed', style: 'accent' }]
@@ -1,3 +1,10 @@
1
+ /* Block host so the banner variant fills its container in normal flow. The
2
+ toast variant is used inside a flex column (toast manager), where flex items
3
+ are blockified regardless, so this is safe for both. */
4
+ :host {
5
+ display: block;
6
+ }
7
+
1
8
  .relative {
2
9
  position: relative;
3
10
  }
@@ -148,4 +155,143 @@
148
155
 
149
156
  .hover\:opacity-100:hover {
150
157
  opacity: 1;
158
+ }
159
+
160
+ /* ============================================================================
161
+ Banner variant — richer inline status banner. Per-intent tone is expressed
162
+ through CSS custom properties so the structural rules stay intent-agnostic.
163
+ Semantic colours are deliberate (warn=amber, error=red); brand green never
164
+ signals "safe" or "blocked" on its own.
165
+ ========================================================================== */
166
+ .banner {
167
+ /* neutral defaults; overridden per intent below */
168
+ --rail: #7a7b7a;
169
+ --surface: #ffffff;
170
+ --line: #e2e2e2;
171
+ --icon-bg: #f0f0f0;
172
+ --icon-fg: #5a5f5c;
173
+ --title: #07140d;
174
+ --msg: #8a8c8a;
175
+
176
+ display: flex;
177
+ flex-wrap: wrap;
178
+ align-items: center;
179
+ gap: 14px;
180
+ background: var(--surface);
181
+ border: 1px solid var(--line);
182
+ border-left: 3px solid var(--rail);
183
+ border-radius: 12px;
184
+ padding: 15px 18px;
185
+ }
186
+
187
+ .banner--brand,
188
+ .banner--info {
189
+ --rail: var(--brand-green, #00ff9d);
190
+ --icon-bg: rgba(0, 255, 157, 0.12);
191
+ --icon-fg: var(--green-d, #00c87b);
192
+ --title: var(--brand-black, #07140d);
193
+ --msg: #8a8c8a;
194
+ }
195
+
196
+ .banner--success {
197
+ --rail: var(--green-d, #00c87b);
198
+ --surface: #f0fbf6;
199
+ --line: #cdeede;
200
+ --icon-bg: rgba(0, 200, 123, 0.12);
201
+ --icon-fg: var(--green-d, #00c87b);
202
+ --title: #0a6b46;
203
+ --msg: #5a7a6c;
204
+ }
205
+
206
+ .banner--warning {
207
+ --rail: #b26b00;
208
+ --surface: #fff6e6;
209
+ --line: #f0dcb4;
210
+ --icon-bg: rgba(178, 107, 0, 0.12);
211
+ --icon-fg: #b26b00;
212
+ --title: #b26b00;
213
+ --msg: #8a6a2a;
214
+ }
215
+
216
+ .banner--error {
217
+ --rail: #c0392b;
218
+ --surface: #fdf0ee;
219
+ --line: #f2cfc9;
220
+ --icon-bg: rgba(192, 57, 43, 0.1);
221
+ --icon-fg: #c0392b;
222
+ --title: #c0392b;
223
+ --msg: #8d5049;
224
+ }
225
+
226
+ .banner-ic {
227
+ flex: 0 0 auto;
228
+ width: 38px;
229
+ height: 38px;
230
+ border-radius: 10px;
231
+ display: flex;
232
+ align-items: center;
233
+ justify-content: center;
234
+ background: var(--icon-bg);
235
+ color: var(--icon-fg);
236
+ }
237
+
238
+ .banner-copy {
239
+ flex: 1 1 auto;
240
+ min-width: 0;
241
+ }
242
+
243
+ .banner-title {
244
+ font-family: var(--sans, 'IBM Plex Sans', system-ui, sans-serif);
245
+ font-size: 14.5px;
246
+ font-weight: 600;
247
+ color: var(--title);
248
+ }
249
+
250
+ .banner-msg {
251
+ font-family: var(--mono, 'IBM Plex Mono', ui-monospace, monospace);
252
+ font-size: 10.5px;
253
+ letter-spacing: 0.04em;
254
+ color: var(--msg);
255
+ line-height: 1.45;
256
+ margin-top: 3px;
257
+ }
258
+ /* When there's no heading, let the message read as the primary line. */
259
+ .banner-title + .banner-msg {
260
+ margin-top: 3px;
261
+ }
262
+
263
+ /* Compact inline actions: they sit on the top row next to the dismiss, so the
264
+ banner stays a single tidy row (the copy shrinks to make room). */
265
+ .banner-actions {
266
+ flex: 0 0 auto;
267
+ display: flex;
268
+ align-items: center;
269
+ gap: 16px;
270
+ }
271
+
272
+ .banner-x {
273
+ flex: 0 0 auto;
274
+ border: none;
275
+ background: transparent;
276
+ color: var(--msg);
277
+ cursor: pointer;
278
+ display: inline-flex;
279
+ align-items: center;
280
+ justify-content: center;
281
+ padding: 4px;
282
+ border-radius: 6px;
283
+ opacity: 0.6;
284
+ transition: opacity 0.14s, background 0.14s;
285
+ }
286
+ .banner-x:hover {
287
+ opacity: 1;
288
+ background: rgba(0, 0, 0, 0.05);
289
+ }
290
+
291
+ /* Narrow screens: keep it compact — the copy (min-width:0) absorbs the width so
292
+ the actions + dismiss stay inline on the top row rather than wrapping. */
293
+ @media (max-width: 1024px) {
294
+ .banner-actions {
295
+ gap: 12px;
296
+ }
151
297
  }
@@ -7,6 +7,8 @@ const toastStyles = cva(['relative bottom-4 w-auto rounded-xs p-12'], {
7
7
  success: 'bg-success text-dark',
8
8
  error: 'bg-error text-dark',
9
9
  warning: 'bg-warning text-dark',
10
+ info: 'bg-dark text-dark',
11
+ neutral: 'bg-dark text-dark',
10
12
  brand: 'bg-strongest text-accent',
11
13
  brandInverse: 'bg-inverse text-default'
12
14
  }
@@ -15,6 +17,16 @@ const toastStyles = cva(['relative bottom-4 w-auto rounded-xs p-12'], {
15
17
  intent: 'default'
16
18
  }
17
19
  });
20
+ /** Fallback leading icon per intent for the `banner` variant. */
21
+ const DEFAULT_BANNER_ICON = {
22
+ default: 'information',
23
+ neutral: 'information',
24
+ info: 'information',
25
+ brand: 'information',
26
+ success: 'checkmark',
27
+ warning: 'warning',
28
+ error: 'warning'
29
+ };
18
30
  export class EdsToast {
19
31
  constructor() {
20
32
  /**
@@ -26,12 +38,23 @@ export class EdsToast {
26
38
  };
27
39
  this.message = undefined;
28
40
  this.intent = 'default';
41
+ this.variant = 'toast';
42
+ this.heading = undefined;
43
+ this.icon = undefined;
44
+ this.dismissible = false;
29
45
  this.duration = undefined;
30
46
  this.visible = true;
47
+ this.hasActions = false;
48
+ }
49
+ componentWillLoad() {
50
+ // Slotted actions live in light DOM (children with slot="actions").
51
+ this.hasActions = !!this.el.querySelector('[slot="actions"]');
31
52
  }
32
53
  componentDidLoad() {
33
54
  const btn = this.el.shadowRoot.querySelector('eds-button');
34
- this.emitContext(btn);
55
+ if (btn) {
56
+ this.emitContext(btn);
57
+ }
35
58
  }
36
59
  /**
37
60
  * Emits a custom event called `parentContext` for a given button element.
@@ -57,10 +80,18 @@ export class EdsToast {
57
80
  // Clear the timeout when the component is removed
58
81
  clearTimeout(this.dismissTimeout);
59
82
  }
83
+ renderBanner() {
84
+ const iconName = this.icon || DEFAULT_BANNER_ICON[this.intent] || 'information';
85
+ const showClose = this.dismissible || (this.duration && this.duration > 0);
86
+ return (h("div", { class: `banner banner--${this.intent}`, role: "status", "aria-live": "polite" }, h("span", { class: "banner-ic", "aria-hidden": "true" }, h("eds-icon-wrapper", { name: iconName, size: 20 })), h("div", { class: "banner-copy" }, this.heading && h("div", { class: "banner-title" }, this.heading), h("div", { class: "banner-msg" }, this.message)), this.hasActions && (h("div", { class: "banner-actions" }, h("slot", { name: "actions" }))), showClose && (h("button", { type: "button", class: "banner-x", "aria-label": "Dismiss", onClick: () => this.dismissToast() }, h("eds-icon-wrapper", { name: "close", size: 16 })))));
87
+ }
60
88
  render() {
61
89
  if (!this.visible) {
62
90
  return null;
63
91
  }
92
+ if (this.variant === 'banner') {
93
+ return this.renderBanner();
94
+ }
64
95
  const classes = toastStyles({ intent: this.intent });
65
96
  return (h("div", { class: classes, role: "alert", "aria-live": "assertive" }, h("div", { class: "flex items-center justify-between gap-4" }, h("span", { class: "f-ui-02" }, this.message), h("eds-button", { intent: "ghost", size: "large", icon: "close", "aria-label": "Close Toast", onClick: () => this.dismissToast(), "extra-class": "ml-8" }))));
66
97
  }
@@ -99,8 +130,8 @@ export class EdsToast {
99
130
  "type": "string",
100
131
  "mutable": false,
101
132
  "complexType": {
102
- "original": "'default' | 'success' | 'error' | 'warning' | 'brand' | 'brandInverse'",
103
- "resolved": "\"brand\" | \"brandInverse\" | \"default\" | \"error\" | \"success\" | \"warning\"",
133
+ "original": "'default' | 'success' | 'error' | 'warning' | 'info' | 'neutral' | 'brand' | 'brandInverse'",
134
+ "resolved": "\"brand\" | \"brandInverse\" | \"default\" | \"error\" | \"info\" | \"neutral\" | \"success\" | \"warning\"",
104
135
  "references": {}
105
136
  },
106
137
  "required": false,
@@ -113,6 +144,76 @@ export class EdsToast {
113
144
  "reflect": false,
114
145
  "defaultValue": "'default'"
115
146
  },
147
+ "variant": {
148
+ "type": "string",
149
+ "mutable": false,
150
+ "complexType": {
151
+ "original": "'toast' | 'banner'",
152
+ "resolved": "\"banner\" | \"toast\"",
153
+ "references": {}
154
+ },
155
+ "required": false,
156
+ "optional": false,
157
+ "docs": {
158
+ "tags": [],
159
+ "text": "Visual variant:\n- \"toast\": the classic compact pill (message + close). Default; used by the\n global toast manager.\n- \"banner\": a richer inline banner \u2014 leading icon in a tinted square, a bold\n heading over a mono message, a coloured left rail on a tinted surface, an\n optional actions slot and an optional dismiss button. Use for persistent,\n in-page status (form expiry, saved draft, etc.)."
160
+ },
161
+ "attribute": "variant",
162
+ "reflect": false,
163
+ "defaultValue": "'toast'"
164
+ },
165
+ "heading": {
166
+ "type": "string",
167
+ "mutable": false,
168
+ "complexType": {
169
+ "original": "string",
170
+ "resolved": "string",
171
+ "references": {}
172
+ },
173
+ "required": false,
174
+ "optional": true,
175
+ "docs": {
176
+ "tags": [],
177
+ "text": "Bold heading shown above the message. Banner variant only."
178
+ },
179
+ "attribute": "heading",
180
+ "reflect": false
181
+ },
182
+ "icon": {
183
+ "type": "string",
184
+ "mutable": false,
185
+ "complexType": {
186
+ "original": "string",
187
+ "resolved": "string",
188
+ "references": {}
189
+ },
190
+ "required": false,
191
+ "optional": true,
192
+ "docs": {
193
+ "tags": [],
194
+ "text": "Leading icon name (from the EBRAINS icon set). Banner variant only.\nFalls back to a sensible default per intent when omitted."
195
+ },
196
+ "attribute": "icon",
197
+ "reflect": false
198
+ },
199
+ "dismissible": {
200
+ "type": "boolean",
201
+ "mutable": false,
202
+ "complexType": {
203
+ "original": "boolean",
204
+ "resolved": "boolean",
205
+ "references": {}
206
+ },
207
+ "required": false,
208
+ "optional": false,
209
+ "docs": {
210
+ "tags": [],
211
+ "text": "Show a dismiss (\u00D7) button regardless of `duration`. The `toast` variant\nalready shows one whenever `duration` is set; set this for a persistent\nbanner the user can still close."
212
+ },
213
+ "attribute": "dismissible",
214
+ "reflect": false,
215
+ "defaultValue": "false"
216
+ },
116
217
  "duration": {
117
218
  "type": "number",
118
219
  "mutable": false,
@@ -134,7 +235,8 @@ export class EdsToast {
134
235
  }
135
236
  static get states() {
136
237
  return {
137
- "visible": {}
238
+ "visible": {},
239
+ "hasActions": {}
138
240
  };
139
241
  }
140
242
  static get events() {