@ebrains/components 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/dist/cjs/color-primary-palette_6.cjs.entry.js +14 -14
  2. package/dist/cjs/components-section.cjs.entry.js +1 -1
  3. package/dist/cjs/components.cjs.js +1 -1
  4. package/dist/cjs/correct-use-of-colors.cjs.entry.js +1 -1
  5. package/dist/cjs/docs-palettes.cjs.entry.js +1 -1
  6. package/dist/cjs/docs-tokens.cjs.entry.js +1 -1
  7. package/dist/cjs/{eds-accordion_52.cjs.entry.js → eds-accordion_53.cjs.entry.js} +847 -207
  8. package/dist/cjs/eds-app-root.cjs.entry.js +1 -1
  9. package/dist/cjs/eds-cookies-preference.cjs.entry.js +1 -1
  10. package/dist/cjs/eds-feedback.cjs.entry.js +1 -1
  11. package/dist/cjs/eds-frame.cjs.entry.js +1 -1
  12. package/dist/cjs/eds-gauge.cjs.entry.js +1 -1
  13. package/dist/cjs/eds-gitlab-contributors.cjs.entry.js +9 -2
  14. package/dist/cjs/eds-icon-bluesky.cjs.entry.js +1 -1
  15. package/dist/cjs/eds-icon-eu.cjs.entry.js +1 -1
  16. package/dist/cjs/eds-icon-facebook.cjs.entry.js +1 -1
  17. package/dist/cjs/eds-icon-gitlab.cjs.entry.js +1 -1
  18. package/dist/cjs/eds-icon-linkedin.cjs.entry.js +1 -1
  19. package/dist/cjs/eds-icon-mastodon.cjs.entry.js +1 -1
  20. package/dist/cjs/eds-icon-twitter.cjs.entry.js +1 -1
  21. package/dist/cjs/eds-icon-youtube.cjs.entry.js +1 -1
  22. package/dist/cjs/eds-input-search.cjs.entry.js +76 -0
  23. package/dist/cjs/eds-section-core_2.cjs.entry.js +3 -3
  24. package/dist/cjs/eds-timeline.cjs.entry.js +1 -1
  25. package/dist/cjs/eds-toast-manager.cjs.entry.js +1 -1
  26. package/dist/cjs/eds-trl-badge.cjs.entry.js +181 -0
  27. package/dist/cjs/incorrect-use-of-colors.cjs.entry.js +1 -1
  28. package/dist/cjs/index-50bc1aa4.js +10 -2
  29. package/dist/cjs/loader.cjs.js +1 -1
  30. package/dist/cjs/logo-space.cjs.entry.js +1 -1
  31. package/dist/cjs/logo-variations-horizontal_2.cjs.entry.js +2 -2
  32. package/dist/cjs/logo-variations-tabs.cjs.entry.js +1 -1
  33. package/dist/cjs/logo-wrong-usage.cjs.entry.js +1 -1
  34. package/dist/cjs/svg-repository.cjs.entry.js +1 -1
  35. package/dist/cjs/token-list_3.cjs.entry.js +3 -3
  36. package/dist/cjs/token-ratios.cjs.entry.js +1 -1
  37. package/dist/cjs/token-spacing.cjs.entry.js +1 -1
  38. package/dist/cjs/token-typography.cjs.entry.js +1 -1
  39. package/dist/collection/collection-manifest.json +4 -1
  40. package/dist/collection/components/eds-accordion/eds-accordion.css +3 -2
  41. package/dist/collection/components/eds-accordion/eds-accordion.js +1 -1
  42. package/dist/collection/components/eds-accordion/eds-accordion.stories.js +7 -19
  43. package/dist/collection/components/eds-alert/eds-alert.stories.js +19 -147
  44. package/dist/collection/components/eds-avatar/eds-avatar.js +1 -1
  45. package/dist/collection/components/eds-avatar/eds-avatar.stories.js +2 -2
  46. package/dist/collection/components/eds-block-break/eds-block-break.js +1 -1
  47. package/dist/collection/components/eds-breadcrump/eds-breadcrump.js +1 -1
  48. package/dist/collection/components/eds-button/eds-button.css +15 -0
  49. package/dist/collection/components/eds-button/eds-button.js +13 -6
  50. package/dist/collection/components/eds-cards/eds-card-composer/eds-card-desc/eds-card-desc.js +1 -1
  51. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.css +10 -1
  52. package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.js +1 -1
  53. package/dist/collection/components/eds-cards/eds-card-feature/eds-card-feature.js +1 -1
  54. package/dist/collection/components/eds-cards/eds-card-generic/eds-card-generic.js +1 -1
  55. package/dist/collection/components/eds-cards/eds-card-hero/eds-card-hero.js +1 -1
  56. package/dist/collection/components/eds-cards/eds-card-stat/eds-card-stat.js +1 -1
  57. package/dist/collection/components/eds-charts/eds-gauge/eds-gauge.js +1 -1
  58. package/dist/collection/components/eds-code-block/eds-code-block.js +1 -1
  59. package/dist/collection/components/eds-dropdown/eds-dropdown.js +30 -4
  60. package/dist/collection/components/eds-feedback/eds-feedback.js +1 -1
  61. package/dist/collection/components/eds-footer/eds-footer.css +143 -203
  62. package/dist/collection/components/eds-footer/eds-footer.js +173 -76
  63. package/dist/collection/components/eds-footer/eds-footer.stories.js +108 -15
  64. package/dist/collection/components/eds-form/eds-form.css +37 -1
  65. package/dist/collection/components/eds-form/eds-form.js +45 -7
  66. package/dist/collection/components/eds-frame/eds-frame.js +1 -1
  67. package/dist/collection/components/eds-header/eds-header.js +1 -1
  68. package/dist/collection/components/eds-header/eds-header.stories.js +26 -12
  69. package/dist/collection/components/eds-icon-wrapper/eds-icon-wrapper.js +20 -1
  70. package/dist/collection/components/eds-icons/eds-icon-eu/eds-icon-eu.js +1 -1
  71. package/dist/collection/components/eds-icons/eds-icon-gitlab/eds-icon-gitlab.js +1 -1
  72. package/dist/collection/components/eds-icons/social/eds-icon-bluesky/eds-icon-bluesky.js +1 -1
  73. package/dist/collection/components/eds-icons/social/eds-icon-facebook/eds-icon-facebook.js +1 -1
  74. package/dist/collection/components/eds-icons/social/eds-icon-linkedin/eds-icon-linkedin.js +1 -1
  75. package/dist/collection/components/eds-icons/social/eds-icon-mastodon/eds-icon-mastodon.js +1 -1
  76. package/dist/collection/components/eds-icons/social/eds-icon-twitter/eds-icon-twitter.js +1 -1
  77. package/dist/collection/components/eds-icons/social/eds-icon-youtube/eds-icon-youtube.js +1 -1
  78. package/dist/collection/components/eds-img/eds-img.js +2 -2
  79. package/dist/collection/components/eds-img/eds-img.stories.js +29 -52
  80. package/dist/collection/components/eds-input-dropzone/eds-input-dropzone.js +1 -1
  81. package/dist/collection/components/eds-input-elements/eds-input/eds-input.js +20 -2
  82. package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.css +29 -0
  83. package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.js +2 -1
  84. package/dist/collection/components/eds-input-elements/eds-input-label/eds-input-label.js +1 -1
  85. package/dist/collection/components/eds-input-elements/eds-input-range/eds-input-range.js +1 -1
  86. package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.js +1 -1
  87. package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.stories.js +30 -0
  88. package/dist/collection/components/eds-input-elements/eds-input-select/eds-input-select.js +2 -2
  89. package/dist/collection/components/eds-input-field/eds-input-field.js +11 -5
  90. package/dist/collection/components/eds-input-field/eds-input-field.stories.js +82 -130
  91. package/dist/collection/components/eds-input-file/eds-input-file.js +1 -1
  92. package/dist/collection/components/eds-link/eds-link.js +1 -1
  93. package/dist/collection/components/eds-link/eds-link.stories.js +13 -8
  94. package/dist/collection/components/eds-logo/eds-logo.js +1 -1
  95. package/dist/collection/components/eds-modal/eds-modal.stories.js +9 -8
  96. package/dist/collection/components/eds-nps/eds-nps.css +32 -0
  97. package/dist/collection/components/eds-nps/eds-nps.js +3 -3
  98. package/dist/collection/components/eds-pagination/eds-pagination.js +2 -2
  99. package/dist/collection/components/eds-rating/eds-rating.css +9 -0
  100. package/dist/collection/components/eds-rating/eds-rating.js +2 -2
  101. package/dist/collection/components/eds-section/eds-section-core/eds-section-core.js +1 -1
  102. package/dist/collection/components/eds-section/eds-section-heading/eds-section-heading.js +2 -2
  103. package/dist/collection/components/eds-sidebar/eds-sidebar.js +2 -2
  104. package/dist/collection/components/eds-social-networks/eds-social-networks.js +1 -1
  105. package/dist/collection/components/eds-spinner/eds-spinner.js +1 -1
  106. package/dist/collection/components/eds-steps-v2/eds-steps-v2.js +1 -1
  107. package/dist/collection/components/eds-table/eds-table.css +21 -4
  108. package/dist/collection/components/eds-table/eds-table.js +17 -50
  109. package/dist/collection/components/eds-table/eds-table.stories.js +5 -109
  110. package/dist/collection/components/eds-tabs/eds-tabs.css +7 -1
  111. package/dist/collection/components/eds-tabs/eds-tabs.js +47 -9
  112. package/dist/collection/components/eds-tag/eds-tag.js +1 -1
  113. package/dist/collection/components/eds-timeline/eds-timeline.js +1 -1
  114. package/dist/collection/components/eds-toast-manager/eds-toast-manager.js +1 -1
  115. package/dist/collection/components/eds-tooltip/eds-tooltip.js +1 -1
  116. package/dist/collection/components/eds-tooltip/eds-tooltip.stories.js +1 -1
  117. package/dist/collection/components/eds-user/eds-user.js +1 -1
  118. package/dist/collection/eds-docs-ui/colors/color-palette/primary.js +1 -1
  119. package/dist/collection/eds-docs-ui/colors/color-palette/secondary.js +1 -1
  120. package/dist/collection/eds-docs-ui/colors/color-palette/support.js +1 -1
  121. package/dist/collection/eds-docs-ui/colors/gradient-palette/primary.js +1 -1
  122. package/dist/collection/eds-docs-ui/colors/gradient-palette/secondary.js +7 -7
  123. package/dist/collection/eds-docs-ui/colors/gradient-palette/support.js +3 -3
  124. package/dist/collection/eds-docs-ui/colors/use-of-colors/correct-use-of-colors.js +1 -1
  125. package/dist/collection/eds-docs-ui/colors/use-of-colors/incorrect-use-of-colors.js +1 -1
  126. package/dist/collection/eds-docs-ui/components-section/components-section.js +1 -1
  127. package/dist/collection/eds-docs-ui/design-tokens/docs-tokens/docs-tokens.js +1 -1
  128. package/dist/collection/eds-docs-ui/design-tokens/token-list/token-list.js +1 -1
  129. package/dist/collection/eds-docs-ui/design-tokens/token-radii/token-radii.js +1 -1
  130. package/dist/collection/eds-docs-ui/design-tokens/token-ratios/token-ratios.js +1 -1
  131. package/dist/collection/eds-docs-ui/design-tokens/token-shadows/token-shadows.js +1 -1
  132. package/dist/collection/eds-docs-ui/design-tokens/token-spacing/token-spacing.js +1 -1
  133. package/dist/collection/eds-docs-ui/design-tokens/token-typography/token-typography.js +1 -1
  134. package/dist/collection/eds-docs-ui/docs-palettes/docs-palettes.js +1 -1
  135. package/dist/collection/eds-docs-ui/logo/logo-space/logo-space.js +1 -1
  136. package/dist/collection/eds-docs-ui/logo/logo-variations/horizontal/logo-variations-horizontal.js +1 -1
  137. package/dist/collection/eds-docs-ui/logo/logo-variations/vertical/logo-variations-vertical.js +1 -1
  138. package/dist/collection/eds-docs-ui/logo/logo-variations-tabs/logo-variations.js +1 -1
  139. package/dist/collection/eds-docs-ui/logo/logo-wrong-usage/logo-wrong-usage.js +1 -1
  140. package/dist/collection/eds-docs-ui/svg-repository/svg-repository.js +1 -1
  141. package/dist/collection/shared-ui/eds-cookies-preference/eds-cookies-preference.js +1 -1
  142. package/dist/collection/shared-ui/eds-gitlab-contributors/eds-gitlab-contributors.css +19 -0
  143. package/dist/collection/shared-ui/eds-gitlab-contributors/eds-gitlab-contributors.js +8 -1
  144. package/dist/collection/shared-ui/eds-global-search/eds-global-search.css +166 -0
  145. package/dist/collection/shared-ui/eds-global-search/eds-global-search.js +62 -6
  146. package/dist/collection/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.css +205 -0
  147. package/dist/collection/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.js +257 -0
  148. package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.css +23 -102
  149. package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.js +7 -1
  150. package/dist/collection/shared-ui/eds-search-select/eds-search-select.css +203 -0
  151. package/dist/collection/shared-ui/eds-search-select/eds-search-select.js +685 -0
  152. package/dist/collection/shared-ui/eds-search-select/eds-search-select.stories.js +85 -0
  153. package/dist/collection/shared-ui/eds-trl-badge/ebrains-mark.js +26 -0
  154. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.css +22 -0
  155. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.js +321 -0
  156. package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.stories.js +96 -0
  157. package/dist/collection/shared-ui/examples/eds-app-root/eds-app-root.js +1 -1
  158. package/dist/collection/utils/eds-form/formValidators.js +2 -1
  159. package/dist/collection/utils/eds-form/safeFormat.js +39 -0
  160. package/dist/components/components-section.js +1 -1
  161. package/dist/components/components.css +3 -4
  162. package/dist/components/components.esm.js +1 -1
  163. package/dist/components/correct-use-of-colors.js +1 -1
  164. package/dist/components/docs-palettes.js +1 -1
  165. package/dist/components/docs-tokens.js +1 -1
  166. package/dist/components/eds-accordion2.js +2 -2
  167. package/dist/components/eds-app-root.js +1 -1
  168. package/dist/components/eds-avatar2.js +1 -1
  169. package/dist/components/eds-block-break2.js +1 -1
  170. package/dist/components/eds-breadcrumb.js +1 -1
  171. package/dist/components/eds-button2.js +12 -5
  172. package/dist/components/eds-card-cta.js +2 -2
  173. package/dist/components/eds-card-desc2.js +1 -1
  174. package/dist/components/eds-card-feature.js +1 -1
  175. package/dist/components/eds-card-generic2.js +1 -1
  176. package/dist/components/eds-card-hero.js +1 -1
  177. package/dist/components/eds-card-stat.js +1 -1
  178. package/dist/components/eds-code-block2.js +1 -1
  179. package/dist/components/eds-cookies-preference.js +1 -1
  180. package/dist/components/eds-dropdown2.js +30 -4
  181. package/dist/components/eds-feedback.js +1 -1
  182. package/dist/components/eds-footer2.js +115 -26
  183. package/dist/components/eds-form.js +61 -23
  184. package/dist/components/eds-frame.js +1 -1
  185. package/dist/components/eds-gauge.js +1 -1
  186. package/dist/components/eds-gitlab-contributors.js +9 -2
  187. package/dist/components/eds-global-search.js +48 -69
  188. package/dist/components/eds-header.js +1 -1
  189. package/dist/components/eds-icon-bluesky.js +1 -1
  190. package/dist/components/eds-icon-eu.js +1 -1
  191. package/dist/components/eds-icon-facebook.js +1 -1
  192. package/dist/components/eds-icon-gitlab.js +1 -1
  193. package/dist/components/eds-icon-linkedin.js +1 -1
  194. package/dist/components/eds-icon-mastodon.js +1 -1
  195. package/dist/components/eds-icon-twitter.js +1 -1
  196. package/dist/components/eds-icon-wrapper2.js +5 -2
  197. package/dist/components/eds-icon-youtube.js +1 -1
  198. package/dist/components/eds-img2.js +2 -2
  199. package/dist/components/eds-input-dropzone2.js +1 -1
  200. package/dist/components/eds-input-field2.js +25 -25
  201. package/dist/components/eds-input-file2.js +1 -1
  202. package/dist/components/eds-input-footer2.js +43 -3
  203. package/dist/components/eds-input-label2.js +1 -1
  204. package/dist/components/eds-input-range2.js +1 -1
  205. package/dist/components/eds-input-search.js +100 -1
  206. package/dist/components/eds-input-select2.js +2 -2
  207. package/dist/components/eds-input2.js +4 -2
  208. package/dist/components/eds-kg-learning-resources.d.ts +11 -0
  209. package/dist/components/eds-kg-learning-resources.js +221 -0
  210. package/dist/components/eds-kg-web-services-select2.js +16 -22
  211. package/dist/components/eds-link2.js +1 -1
  212. package/dist/components/eds-logo2.js +1 -1
  213. package/dist/components/eds-matomo-notice2.js +8 -2
  214. package/dist/components/eds-nps2.js +4 -4
  215. package/dist/components/eds-pagination2.js +2 -2
  216. package/dist/components/eds-rating2.js +3 -3
  217. package/dist/components/eds-search-select.d.ts +11 -0
  218. package/dist/components/eds-search-select.js +6 -0
  219. package/dist/components/eds-search-select2.js +361 -0
  220. package/dist/components/eds-section-core2.js +1 -1
  221. package/dist/components/eds-section-heading2.js +2 -2
  222. package/dist/components/eds-sidebar.js +2 -2
  223. package/dist/components/eds-social-networks2.js +1 -1
  224. package/dist/components/eds-spinner2.js +1 -1
  225. package/dist/components/eds-steps-v2.js +1 -1
  226. package/dist/components/eds-table2.js +31 -53
  227. package/dist/components/eds-tabs.js +48 -10
  228. package/dist/components/eds-tag2.js +1 -1
  229. package/dist/components/eds-timeline.js +1 -1
  230. package/dist/components/eds-toast-manager.js +1 -1
  231. package/dist/components/eds-tooltip2.js +1 -1
  232. package/dist/components/eds-trl-badge.d.ts +11 -0
  233. package/dist/components/eds-trl-badge.js +204 -0
  234. package/dist/components/eds-user.js +1 -1
  235. package/dist/components/incorrect-use-of-colors.js +1 -1
  236. package/dist/components/logo-space.js +19 -25
  237. package/dist/components/logo-variations-horizontal2.js +1 -1
  238. package/dist/components/logo-variations-tabs.js +1 -1
  239. package/dist/components/logo-variations-vertical2.js +1 -1
  240. package/dist/components/logo-wrong-usage.js +1 -1
  241. package/dist/components/p-00ba405d.entry.js +1 -0
  242. package/dist/components/p-03342030.entry.js +1 -0
  243. package/dist/components/{p-0fe10e6c.entry.js → p-0e2bac0f.entry.js} +1 -1
  244. package/dist/components/{p-7aa4edef.entry.js → p-12acc48d.entry.js} +1 -1
  245. package/dist/components/p-18399fe1.entry.js +1 -0
  246. package/dist/components/p-1e6f0572.entry.js +1 -0
  247. package/dist/components/{p-c46675c8.entry.js → p-1fbcc480.entry.js} +1 -1
  248. package/dist/components/{p-dfe93385.entry.js → p-25729ade.entry.js} +1 -1
  249. package/dist/components/p-27e093c3.entry.js +1 -0
  250. package/dist/components/{p-a6dc1f88.entry.js → p-37ef07d9.entry.js} +1 -1
  251. package/dist/components/{p-74b9c9a8.entry.js → p-3d1bb2fe.entry.js} +1 -1
  252. package/dist/components/{p-940a2d42.entry.js → p-42791331.entry.js} +1 -1
  253. package/dist/components/p-5ff4b1d0.entry.js +1 -0
  254. package/dist/components/{p-d16b5363.entry.js → p-62580004.entry.js} +1 -1
  255. package/dist/components/{p-d2576747.entry.js → p-62f53e7a.entry.js} +1 -1
  256. package/dist/components/p-6be1730a.entry.js +1 -0
  257. package/dist/components/p-786ff09b.entry.js +1 -0
  258. package/dist/components/p-80a32e20.entry.js +1 -0
  259. package/dist/components/p-85476a6f.entry.js +9 -0
  260. package/dist/components/{p-a63e14bb.entry.js → p-8a483358.entry.js} +1 -1
  261. package/dist/components/{p-04e9c2d7.entry.js → p-b1a10842.entry.js} +1 -1
  262. package/dist/components/p-bdcb71e1.entry.js +1 -0
  263. package/dist/components/p-c2127276.entry.js +1 -0
  264. package/dist/components/p-c3ee9163.entry.js +1 -0
  265. package/dist/components/{p-f55dd314.entry.js → p-c4cfbf98.entry.js} +1 -1
  266. package/dist/components/p-c65082fe.entry.js +1 -0
  267. package/dist/components/p-cc096938.entry.js +1 -0
  268. package/dist/components/p-d59d6fda.entry.js +1 -0
  269. package/dist/components/p-e027bc90.entry.js +1 -0
  270. package/dist/components/{p-f364296f.entry.js → p-e339d0b5.entry.js} +1 -1
  271. package/dist/components/{p-0d7aee0b.entry.js → p-e4df206e.entry.js} +1 -1
  272. package/dist/components/{p-c2fc62f7.entry.js → p-e71a4f29.entry.js} +1 -1
  273. package/dist/components/{p-773bd015.entry.js → p-e9e6ec19.entry.js} +1 -1
  274. package/dist/components/p-f4d2f882.entry.js +1 -0
  275. package/dist/components/{p-d1b3aa52.entry.js → p-f9a9fa34.entry.js} +1 -1
  276. package/dist/components/primary.js +1 -1
  277. package/dist/components/primary2.js +1 -1
  278. package/dist/components/secondary.js +1 -1
  279. package/dist/components/secondary2.js +7 -7
  280. package/dist/components/support.js +1 -1
  281. package/dist/components/support2.js +3 -3
  282. package/dist/components/svg-repository.js +19 -25
  283. package/dist/components/token-list2.js +1 -1
  284. package/dist/components/token-radii2.js +1 -1
  285. package/dist/components/token-ratios.js +1 -1
  286. package/dist/components/token-shadows2.js +1 -1
  287. package/dist/components/token-spacing.js +1 -1
  288. package/dist/components/token-typography.js +1 -1
  289. package/dist/esm/color-primary-palette_6.entry.js +14 -14
  290. package/dist/esm/components-section.entry.js +1 -1
  291. package/dist/esm/components.js +1 -1
  292. package/dist/esm/correct-use-of-colors.entry.js +1 -1
  293. package/dist/esm/docs-palettes.entry.js +1 -1
  294. package/dist/esm/docs-tokens.entry.js +1 -1
  295. package/dist/esm/{eds-accordion_52.entry.js → eds-accordion_53.entry.js} +846 -207
  296. package/dist/esm/eds-app-root.entry.js +1 -1
  297. package/dist/esm/eds-cookies-preference.entry.js +1 -1
  298. package/dist/esm/eds-feedback.entry.js +1 -1
  299. package/dist/esm/eds-frame.entry.js +1 -1
  300. package/dist/esm/eds-gauge.entry.js +1 -1
  301. package/dist/esm/eds-gitlab-contributors.entry.js +9 -2
  302. package/dist/esm/eds-icon-bluesky.entry.js +1 -1
  303. package/dist/esm/eds-icon-eu.entry.js +1 -1
  304. package/dist/esm/eds-icon-facebook.entry.js +1 -1
  305. package/dist/esm/eds-icon-gitlab.entry.js +1 -1
  306. package/dist/esm/eds-icon-linkedin.entry.js +1 -1
  307. package/dist/esm/eds-icon-mastodon.entry.js +1 -1
  308. package/dist/esm/eds-icon-twitter.entry.js +1 -1
  309. package/dist/esm/eds-icon-youtube.entry.js +1 -1
  310. package/dist/{components/eds-input-search2.js → esm/eds-input-search.entry.js} +9 -39
  311. package/dist/esm/eds-section-core_2.entry.js +3 -3
  312. package/dist/esm/eds-timeline.entry.js +1 -1
  313. package/dist/esm/eds-toast-manager.entry.js +1 -1
  314. package/dist/esm/eds-trl-badge.entry.js +177 -0
  315. package/dist/esm/incorrect-use-of-colors.entry.js +1 -1
  316. package/dist/esm/index-870ab08f.js +10 -2
  317. package/dist/esm/loader.js +1 -1
  318. package/dist/esm/logo-space.entry.js +1 -1
  319. package/dist/esm/logo-variations-horizontal_2.entry.js +2 -2
  320. package/dist/esm/logo-variations-tabs.entry.js +1 -1
  321. package/dist/esm/logo-wrong-usage.entry.js +1 -1
  322. package/dist/esm/svg-repository.entry.js +1 -1
  323. package/dist/esm/token-list_3.entry.js +3 -3
  324. package/dist/esm/token-ratios.entry.js +1 -1
  325. package/dist/esm/token-spacing.entry.js +1 -1
  326. package/dist/esm/token-typography.entry.js +1 -1
  327. package/dist/hydrate/index.js +1222 -207
  328. package/dist/hydrate/index.mjs +1222 -207
  329. package/dist/types/components/eds-accordion/eds-accordion.stories.d.ts +4 -8
  330. package/dist/types/components/eds-alert/eds-alert.stories.d.ts +7 -73
  331. package/dist/types/components/eds-button/eds-button.d.ts +1 -1
  332. package/dist/types/components/eds-dropdown/eds-dropdown.d.ts +1 -0
  333. package/dist/types/components/eds-footer/eds-footer.d.ts +84 -55
  334. package/dist/types/components/eds-footer/eds-footer.stories.d.ts +62 -1
  335. package/dist/types/components/eds-form/eds-form.d.ts +10 -0
  336. package/dist/types/components/eds-header/eds-header.stories.d.ts +6 -6
  337. package/dist/types/components/eds-icon-wrapper/eds-icon-wrapper.d.ts +8 -0
  338. package/dist/types/components/eds-img/eds-img.stories.d.ts +6 -20
  339. package/dist/types/components/eds-input-elements/eds-input/eds-input.d.ts +7 -0
  340. package/dist/types/components/eds-input-elements/eds-input-search/eds-input-search.stories.d.ts +36 -0
  341. package/dist/types/components/eds-input-field/eds-input-field.stories.d.ts +97 -38
  342. package/dist/types/components/eds-link/eds-link.stories.d.ts +9 -6
  343. package/dist/types/components/eds-table/eds-table.d.ts +8 -14
  344. package/dist/types/components/eds-table/eds-table.stories.d.ts +0 -107
  345. package/dist/types/components/eds-tabs/eds-tabs.d.ts +10 -0
  346. package/dist/types/components.d.ts +507 -86
  347. package/dist/types/shared-ui/eds-global-search/eds-global-search.d.ts +12 -0
  348. package/dist/types/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.d.ts +60 -0
  349. package/dist/types/shared-ui/eds-search-select/eds-search-select.d.ts +98 -0
  350. package/dist/types/shared-ui/eds-search-select/eds-search-select.stories.d.ts +81 -0
  351. package/dist/types/shared-ui/eds-trl-badge/ebrains-mark.d.ts +7 -0
  352. package/dist/types/shared-ui/eds-trl-badge/eds-trl-badge.d.ts +54 -0
  353. package/dist/types/shared-ui/eds-trl-badge/eds-trl-badge.stories.d.ts +112 -0
  354. package/dist/types/utils/eds-form/safeFormat.d.ts +21 -0
  355. package/package.json +1 -1
  356. package/dist/components/p-18e852e1.entry.js +0 -1
  357. package/dist/components/p-3ccd6948.entry.js +0 -1
  358. package/dist/components/p-3d3841d6.entry.js +0 -1
  359. package/dist/components/p-3f38df99.entry.js +0 -1
  360. package/dist/components/p-527e71d0.entry.js +0 -1
  361. package/dist/components/p-55047f7f.entry.js +0 -9
  362. package/dist/components/p-64c23098.entry.js +0 -1
  363. package/dist/components/p-7b93a385.entry.js +0 -1
  364. package/dist/components/p-878f65a6.entry.js +0 -1
  365. package/dist/components/p-92f6d9c0.entry.js +0 -1
  366. package/dist/components/p-9eedf771.entry.js +0 -1
  367. package/dist/components/p-b4355cec.entry.js +0 -1
  368. package/dist/components/p-d2f17fac.entry.js +0 -1
  369. package/dist/components/p-db5eea95.entry.js +0 -1
  370. package/dist/components/p-e205c269.entry.js +0 -1
  371. package/dist/components/p-f88b5f21.entry.js +0 -1
@@ -8,7 +8,7 @@ const sharedUtils = require('./sharedUtils-8e287250.js');
8
8
  const negative = require('./negative-c61d13b5.js');
9
9
  const positive = require('./positive-fdcd161e.js');
10
10
 
11
- const edsAccordionCss = ":host{display:block;width:100%}.accordion-card{border-radius:16px;padding:1.5rem;transition:all 0.4s ease;position:relative;overflow:hidden;border:1px solid rgba(0, 0, 0, 0.1)}.accordion-card-default{background:var(--brand-black);color:var(--white)}.accordion-card-default:hover{border-color:rgba(0, 255, 157, 0.4);box-shadow:0 4px 20px rgba(0, 0, 0, 0.1)}.accordion-card-default .accordion-title{color:var(--white)}.accordion-card-default .accordion-description{color:var(--grey-light)}.accordion-card-default .accordion-chevron{color:var(--white)}.accordion-card-default .accordion-content{color:var(--grey-light)}.accordion-card-inverse{background:var(--white);color:var(--brand-black)}.accordion-card-inverse:hover{border-color:rgba(0, 255, 157, 0.4);box-shadow:0 4px 20px rgba(0, 0, 0, 0.1)}.accordion-card-inverse .accordion-title{color:var(--brand-black)}.accordion-card-inverse .accordion-description{color:var(--grey-dark)}.accordion-card-inverse .accordion-chevron{color:var(--brand-black)}.accordion-card-inverse .accordion-content{color:var(--grey-dark)}.accordion-header{display:flex;align-items:center;gap:1rem;cursor:pointer;width:100%;background:none;border:none;padding:0;text-align:left;-webkit-user-select:none;user-select:none}.accordion-header:focus-visible{outline:2px solid var(--brand-green);outline-offset:2px;border-radius:8px}.accordion-icon{width:48px;height:48px;min-width:48px;display:flex;align-items:center;justify-content:center;background:rgba(0, 255, 157, 0.1);border-radius:12px;color:var(--brand-green);flex-shrink:0}.accordion-card-inverse .accordion-icon{background:rgba(0, 0, 0, 0.05);color:var(--brand-black)}.accordion-header-text{flex-grow:1;min-width:0}.accordion-title{font-family:'Inter', var(--f-heading-fontFamily);font-weight:300;font-size:1.25rem;line-height:1.4;margin:0}.accordion-description{font-family:'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;font-size:0.9375rem;line-height:1.6;margin-top:0.25rem;margin-bottom:0}.accordion-chevron{flex-shrink:0;transition:transform 0.3s ease}.accordion-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows 0.4s ease}.accordion-panel.expanded{grid-template-rows:1fr}.accordion-panel-inner{overflow:hidden}.accordion-content{padding-top:1rem;font-family:'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;font-size:0.9375rem;line-height:1.6}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}@media (max-width: 768px){.accordion-card{padding:1.25rem}.accordion-icon{width:40px;height:40px;min-width:40px}.accordion-title{font-size:1.125rem}.accordion-header{gap:0.75rem}}h3,p{margin:0}";
11
+ const edsAccordionCss = ":host{display:block;width:100%}.accordion-card{border-radius:16px;padding:1.5rem;transition:all 0.4s ease;position:relative;overflow:hidden;border:1px solid rgba(0, 0, 0, 0.1)}.accordion-card-default{background:var(--brand-black);color:var(--white)}.accordion-card-default:hover{border-color:rgba(0, 255, 157, 0.4);box-shadow:0 4px 20px rgba(0, 0, 0, 0.1)}.accordion-card-default .accordion-title{color:var(--white)}.accordion-card-default .accordion-description{color:var(--grey-light)}.accordion-card-default .accordion-chevron{color:var(--white)}.accordion-card-default .accordion-content{color:var(--grey-light)}.accordion-card-inverse{background:var(--white);color:var(--brand-black)}.accordion-card-inverse:hover{border-color:rgba(0, 255, 157, 0.4);box-shadow:0 4px 20px rgba(0, 0, 0, 0.1)}.accordion-card-inverse .accordion-title{color:var(--brand-black)}.accordion-card-inverse .accordion-description{color:var(--grey-700)}.accordion-card-inverse .accordion-chevron{color:var(--brand-black)}.accordion-card-inverse .accordion-content{color:var(--grey-700)}.accordion-header{display:flex;align-items:center;gap:1rem;cursor:pointer;width:100%;background:none;border:none;padding:0;text-align:left;-webkit-user-select:none;user-select:none}.accordion-header:focus-visible{outline:2px solid var(--brand-green);outline-offset:2px;border-radius:8px}.accordion-icon{width:48px;height:48px;min-width:48px;display:flex;align-items:center;justify-content:center;background:rgba(0, 255, 157, 0.1);border-radius:12px;color:var(--brand-green);flex-shrink:0}.accordion-card-inverse .accordion-icon{background:rgba(0, 0, 0, 0.05);color:var(--brand-black)}.accordion-header-text{flex-grow:1;min-width:0}.accordion-title{font-family:'Inter', var(--f-heading-fontFamily);font-weight:300;font-size:1.25rem;line-height:1.4;margin:0}.accordion-description{font-family:'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;font-size:0.9375rem;line-height:1.6;margin-top:0.25rem;margin-bottom:0}.accordion-chevron{flex-shrink:0;transition:transform 0.3s ease}.accordion-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows 0.4s ease}.accordion-panel.expanded{grid-template-rows:1fr}.accordion-panel-inner{overflow:hidden}.accordion-content{padding-top:1rem;font-family:'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;font-size:0.9375rem;line-height:1.6}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}@media (max-width: 768px){.accordion-card{padding:1.25rem}.accordion-icon{width:40px;height:40px;min-width:40px}.accordion-title{font-size:1.125rem}.accordion-header{gap:0.75rem}}h3,p{margin:0}";
12
12
  const EdsAccordionStyle0 = edsAccordionCss;
13
13
 
14
14
  const EdsAccordion = class {
@@ -56,7 +56,7 @@ const EdsAccordion = class {
56
56
  'accordion-card',
57
57
  `accordion-card-${this.variant}`
58
58
  ].join(' ');
59
- return (index.h("div", { key: 'e9f44914fce505b97f90415ed72f322ff09fcee7', class: cardClasses }, index.h("div", { key: 'd4c6ec563b66b14fc74bc872c953bd9e3e501a85', class: "accordion-header", onClick: this.handleClick, onKeyDown: this.handleKeyDown, role: "button", tabindex: 0, "aria-expanded": String(this.isExpanded), "aria-controls": "accordionSection" }, this.icon && (index.h("div", { key: '9c365bc15aeec93ccc2021206e72e457a2032265', class: "accordion-icon" }, index.h("eds-icon-wrapper", { key: '73742a6cb431342c62e1fd5661c39927dcb57bef', name: this.icon, size: 24 }))), index.h("div", { key: '1ba17b07eedccb135dc5138ace783ea211b75d52', class: "accordion-header-text" }, index.h("h3", { key: 'd8c34e66195fbe2863736d39f5a9e8276f30252a', class: "accordion-title" }, this.heading), this.description && (index.h("p", { key: 'c24a3614a3f2d1bcd29a39cbd3384c25c1c50e47', class: `accordion-description ${!this.isExpanded && this.clampText ? 'line-clamp-1' : ''}` }, this.description))), index.h("eds-icon-wrapper", { key: 'deecdbb3c0ec32079b3b913ed7976ae813b9468a', name: this.toggleIcon, size: 20, class: "accordion-chevron" })), index.h("section", { key: 'f3767c81d79e2681c6317e3268cf1c966fba6bc2', id: "accordionSection", "aria-hidden": String(!this.isExpanded), class: `accordion-panel ${this.isExpanded ? 'expanded' : ''}` }, index.h("div", { key: '08ce9281f2e7fc858f30d0b7c0da0b0739824193', class: "accordion-panel-inner" }, index.h("div", { key: 'c9cdc6312fa279d1c1ee5753c7038b0a9ce3c624', class: "accordion-content" }, index.h("slot", { key: 'aaec055131ce2ae7830aecfc2fc6ace50f05ded1' }))))));
59
+ return (index.h("div", { key: '08061b87dfd54b49f8aa782f29e2a9c5c8bcd2ef', class: cardClasses }, index.h("div", { key: '728033232d8e6aa348bc98d028a5bd62d32fd934', class: "accordion-header", onClick: this.handleClick, onKeyDown: this.handleKeyDown, role: "button", tabindex: 0, "aria-expanded": String(this.isExpanded), "aria-controls": "accordionSection" }, this.icon && (index.h("div", { key: 'eeb4260c955a2d4394bc3663dc749afc45b6f87f', class: "accordion-icon" }, index.h("eds-icon-wrapper", { key: '0896625a235bda97a098ac7b9a4ebec00e5fa587', name: this.icon, size: 24 }))), index.h("div", { key: '3e6b85780bc597a84dc0eb5d2526f9e54c16148d', class: "accordion-header-text" }, index.h("h3", { key: 'b5c5c0023bc23dc225183736f02683134a40da93', class: "accordion-title" }, this.heading), this.description && (index.h("p", { key: 'eb04c90cef03a838a4f852b988f3a9984e593120', class: `accordion-description ${!this.isExpanded && this.clampText ? 'line-clamp-1' : ''}` }, this.description))), index.h("eds-icon-wrapper", { key: '583d0bcc82a178c2a47eef586aede9c87e8ea456', name: this.toggleIcon, size: 20, class: "accordion-chevron" })), index.h("section", { key: '8f820377d639ced2d0a4fe505452b6b408640400', id: "accordionSection", "aria-hidden": String(!this.isExpanded), class: `accordion-panel ${this.isExpanded ? 'expanded' : ''}` }, index.h("div", { key: 'd41dc9c3ef21f14df3ca25138440356703fa35ed', class: "accordion-panel-inner" }, index.h("div", { key: '156c3c9b139efcb964525147338ecdeeca538123', class: "accordion-content" }, index.h("slot", { key: 'b19b54c279cca1a32b4ed0f5b0a319d87b7bf937' }))))));
60
60
  }
61
61
  get el() { return index.getElement(this); }
62
62
  };
@@ -172,7 +172,7 @@ const EdsAvatar = class {
172
172
  * @returns {JSX.Element} The rendered avatar component.
173
173
  */
174
174
  render() {
175
- return (index.h("div", { key: '00e163f2dd33c92bdfd8f45b6e2d3384afa32a30', class: this.containerClasses }, this.picture ? (index.h("eds-img", { src: this.picture, width: 54, height: 54, sizes: "120px", alt: `${this.firstName} ${this.lastName}`, lazyload: true, withBg: true })) : (index.h("abbr", { title: this.computedInitials || `${this.firstName} ${this.lastName}`, class: "!no-underline f-ui-01" }, this.computedInitials))));
175
+ return (index.h("div", { key: '36f8cb598e0e53793ce8a49e9e2419f41ba8f160', class: this.containerClasses }, this.picture ? (index.h("eds-img", { src: this.picture, width: 54, height: 54, sizes: "120px", alt: `${this.firstName} ${this.lastName}`, lazyload: true, withBg: true })) : (index.h("abbr", { title: this.computedInitials || `${this.firstName} ${this.lastName}`, class: "!no-underline f-ui-01" }, this.computedInitials))));
176
176
  }
177
177
  };
178
178
  EdsAvatar.style = EdsAvatarStyle0;
@@ -186,7 +186,7 @@ const EdsBlockBreak = class {
186
186
  this.inverse = false;
187
187
  }
188
188
  render() {
189
- return index.h("hr", { key: '7b472ce3dcecc7a0c061d336c4edb1bec098c113', class: `${this.inverse ? 'border-default' : 'border-softer'} my-16 inline-block w-full border-t-2` });
189
+ return index.h("hr", { key: '2531c44fa20745f7860e4647f77ffa038a56d832', class: `${this.inverse ? 'border-default' : 'border-softer'} my-16 inline-block w-full border-t-2` });
190
190
  }
191
191
  };
192
192
  EdsBlockBreak.style = EdsBlockBreakStyle0;
@@ -306,7 +306,7 @@ const EdsBreadcrumb = class {
306
306
  */
307
307
  render() {
308
308
  const itemsToRender = this.getTruncatedItems();
309
- return (index.h("nav", { key: 'a068d2deb011c0a303e5a4320f4f5913bfc36d4a', "aria-label": "Breadcrumb" }, index.h("ol", { key: '63ab81ece8ff48546875320f4fd346638fac3bdc', class: "flex items-center space-x-2" }, itemsToRender.map((item, index$1) => {
309
+ return (index.h("nav", { key: '95c13ac07de20bc04fb57ee990e5d21f928f3a86', "aria-label": "Breadcrumb" }, index.h("ol", { key: '2a03ff53ac27eaa5e37ddfef32e9a4fe322755dd', class: "flex items-center space-x-2" }, itemsToRender.map((item, index$1) => {
310
310
  const isLast = index$1 === itemsToRender.length - 1;
311
311
  return (index.h("li", { class: "flex items-center" }, !item.isHidden ? ((() => {
312
312
  const { fullLabel } = this.getLabels(item, isLast);
@@ -373,14 +373,17 @@ const cva = (base, config)=>{
373
373
  };
374
374
  };
375
375
 
376
- const edsButtonCss = "/* ============================================\n EDS BUTTON - NEW EBRAINS VISUAL SYSTEM\n ============================================ */\n\n*,\n::before,\n::after {\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n border-color: currentColor;\n}\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\n 1. Change the font styles in all browsers.\n 2. Remove the margin in Firefox and Safari.\n 3. Remove default padding in all browsers.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n font-size: 100%;\n font-weight: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n}\n\n/*\n Remove the inheritance of text transform in Edge and Firefox.\n */\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n 1. Correct the inability to style clickable types in iOS and Safari.\n 2. Remove default button styles.\n */\nbutton,\ninput:where([type='button']),\ninput:where([type='reset']),\ninput:where([type='submit']) {\n -webkit-appearance: button;\n /* 1 */\n background-color: transparent;\n /* 2 */\n background-image: none;\n /* 2 */\n}\n\np {\n margin: 0;\n}\n\n/*\n Set the default cursor for buttons.\n */\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\n Make sure disabled buttons don't get the pointer cursor.\n */\n:disabled {\n cursor: default;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n\n/* ============================================\n TYPOGRAPHY CLASSES\n ============================================ */\n\n.f-body-01 {\n font-family: var(--f-body-01-fontFamily);\n font-weight: var(--f-body-01-fontWeight);\n font-size: var(--f-body-01-fontSize);\n line-height: var(--f-body-01-lineHeight);\n letter-spacing: var(--f-body-01-letterSpacing);\n}\n\n.f-body-02 {\n font-family: var(--f-body-02-fontFamily);\n font-weight: var(--f-body-02-fontWeight);\n font-size: var(--f-body-02-fontSize);\n line-height: var(--f-body-02-lineHeight);\n letter-spacing: var(--f-body-02-letterSpacing);\n}\n\n.f-ui-01 {\n font-family: var(--f-ui-01-fontFamily);\n font-weight: var(--f-ui-01-fontWeight);\n font-size: var(--f-ui-01-fontSize);\n line-height: var(--f-ui-01-lineHeight);\n letter-spacing: var(--f-ui-01-letterSpacing);\n}\n\n.f-ui-02 {\n font-family: var(--f-ui-02-fontFamily);\n font-weight: var(--f-ui-02-fontWeight);\n font-size: var(--f-ui-02-fontSize);\n line-height: var(--f-ui-02-lineHeight);\n letter-spacing: var(--f-ui-02-letterSpacing);\n}\n\n/* ============================================\n BUTTON BORDER EFFECTS - NEW SYSTEM\n ============================================ */\n\n.border-inside {\n position: relative;\n\n &::after {\n pointer-events: none;\n position: absolute;\n inset: 0rem;\n z-index: 1;\n border-radius: 8px;\n border-width: 2px;\n border-color: rgba(7, 20, 13, 1); /* brand-black with opacity */\n content: '';\n }\n}\n\n.border-inside-inverse {\n position: relative;\n\n &::after {\n pointer-events: none;\n position: absolute;\n inset: 0rem;\n z-index: 1;\n border-radius: 8px;\n border-width: 2px;\n border-color: rgba(255, 255, 255, 1); /* white border */\n content: '';\n }\n}\n\n.border-inside-pill {\n &::after {\n border-radius: 100px; /* pill shape */\n content: '';\n }\n}\n\n.border-inside-inverse.border-inside-pill {\n &::after {\n border-radius: 100px; /* pill shape for inverse border */\n }\n}\n\n/* ============================================\n LOADER SPINNER\n ============================================ */\n\n.loader {\n box-sizing: border-box;\n display: inline-block;\n height: 1rem;\n width: 1rem;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.loader {\n animation: spin 1s linear infinite;\n border-radius: 9999px;\n border: 3px solid rgba(7, 20, 13, 0.3); /* brand-black */\n border-bottom-color: #07140D; /* brand-black */\n}\n\n/* ============================================\n TRANSITIONS & EFFECTS\n ============================================ */\n\n.effect-color {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n\n.effect-focus {\n outline-width: 3px;\n outline-offset: 2px;\n outline-color: var(--brand-green); /* NEW: brand-green for focus */\n}\n\n.effect-focus:focus-visible {\n outline-style: solid;\n}\n\n.effect-focus-within {\n outline-width: 3px;\n outline-offset: 2px;\n outline-color: var(--brand-green); /* NEW: brand-green for focus */\n}\n\n.effect-focus-within:focus-within {\n outline-style: solid;\n}\n\n/* ============================================\n BRAND HOVER TRANSFORM EFFECT\n ============================================ */\n.brand-hover-transform {\n transition-property: transform, box-shadow, color, background-color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.brand-hover-transform:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 20px rgba(0, 255, 157, 0.3);\n}\n\n.brand-hover-transform[aria-disabled=\"true\"]:hover,\n.brand-hover-transform:disabled:hover {\n transform: none;\n box-shadow: none;\n}\n\n/* Secondary Inverse Transform Effect */\n.secondary-inverse-transform {\n transition-property: transform, background-color, color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.secondary-inverse-transform:hover {\n transform: translateY(-2px);\n}\n\n.secondary-inverse-transform[aria-disabled=\"true\"]:hover,\n.secondary-inverse-transform:disabled:hover {\n transform: none;\n}\n\n/* ============================================\n UTILITY CLASSES\n ============================================ */\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.pointer-events-none {\n pointer-events: none;\n}\n\n.static {\n position: static;\n}\n\n.fixed {\n position: fixed;\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.sticky {\n position: sticky;\n}\n\n.inset-0 {\n inset: 0rem;\n}\n\n.inset-x-16 {\n left: 1rem;\n right: 1rem;\n}\n\n/* ============================================\n POSITIONING\n ============================================ */\n\n.-top-8 {\n top: -0.5rem;\n}\n\n.left-0 {\n left: 0rem;\n}\n\n.left-1\\/2 {\n left: 50%;\n}\n\n.left-4 {\n left: 0.25rem;\n}\n\n.left-\\[4px\\] {\n left: 4px;\n}\n\n.right-0 {\n right: 0rem;\n}\n\n.right-4 {\n right: 0.25rem;\n}\n\n.right-8 {\n right: 0.5rem;\n}\n\n.right-\\[6px\\] {\n right: 6px;\n}\n\n.top-0 {\n top: 0rem;\n}\n\n.top-1\\/2 {\n top: 50%;\n}\n\n/* ============================================\n SPACING\n ============================================ */\n\n.m-0 {\n margin: 0rem;\n}\n\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.-ml-16 {\n margin-left: -1rem;\n}\n\n.-mr-16 {\n margin-right: -1rem;\n}\n\n.ml-0 {\n margin-left: 0rem;\n}\n\n.ml-4 {\n margin-left: 0.25rem;\n}\n\n.ml-64 {\n margin-left: 4rem;\n}\n\n.ml-8 {\n margin-left: 0.5rem;\n}\n\n.ml-auto {\n margin-left: auto;\n}\n\n.mr-4 {\n margin-right: 0.25rem;\n}\n\n.mr-8 {\n margin-right: 0.5rem;\n}\n\n.mr-auto {\n margin-right: auto;\n}\n\n/* ============================================\n DISPLAY\n ============================================ */\n\n.block {\n display: block;\n}\n\n.\\!block {\n display: block !important;\n}\n\n.inline-block {\n display: inline-block;\n}\n\n.inline {\n display: inline;\n}\n\n.flex {\n display: flex;\n}\n\n.inline-flex {\n display: inline-flex;\n}\n\n.hidden {\n display: none;\n}\n\n/* ============================================\n DIMENSIONS\n ============================================ */\n\n.h-20 {\n height: 1.25rem;\n}\n\n.h-24 {\n height: 1.5rem;\n}\n\n.h-36 {\n height: 2.25rem;\n}\n\n.h-40 {\n height: 2.5rem;\n}\n\n.h-44 {\n height: 2.75rem;\n}\n\n.h-48 {\n height: 3rem;\n}\n\n.h-auto {\n height: auto;\n}\n\n.h-full {\n height: 100%;\n}\n\n.\\!min-h-20 {\n min-height: 1.25rem !important;\n}\n\n.min-h-screen {\n min-height: 100vh;\n}\n\n.w-20 {\n width: 1.25rem;\n}\n\n.w-24 {\n width: 1.5rem;\n}\n\n.w-full {\n width: 100%;\n}\n\n.w-auto {\n width: auto;\n}\n\n/* ============================================\n FLEXBOX\n ============================================ */\n\n.flex-none {\n flex: none;\n}\n\n.grow {\n flex-grow: 1;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.resize {\n resize: both;\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-center {\n align-items: center;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.justify-between {\n justify-content: space-between;\n}\n\n.gap-4 {\n gap: 0.25rem;\n}\n\n.gap-8 {\n gap: 0.5rem;\n}\n\n.space-x-2> :not([hidden])~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.125rem * var(--tw-space-x-reverse));\n margin-left: calc(0.125rem * calc(1 - var(--tw-space-x-reverse)));\n}\n\n/* ============================================\n OVERFLOW\n ============================================ */\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.overflow-x-auto {\n overflow-x: auto;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n\n/* ============================================\n TEXT\n ============================================ */\n\n.whitespace-nowrap {\n white-space: nowrap;\n}\n\n.break-words {\n overflow-wrap: break-word;\n}\n\n/* ============================================\n BORDERS & RADIUS - NEW SYSTEM\n ============================================ */\n\n.rounded {\n border-radius: 0.25rem;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.rounded-lg {\n border-radius: 16px;\n}\n\n.rounded-md {\n border-radius: 12px;\n}\n\n.rounded-pill {\n border-radius: 100px; /* NEW: pill shape */\n}\n\n.rounded-sm {\n border-radius: 8px;\n}\n\n.rounded-xxs {\n border-radius: 2px;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-\\[\\#0034CB\\] {\n --tw-border-opacity: 1;\n border-color: rgb(0 52 203 / var(--tw-border-opacity));\n}\n\n.border-\\[\\#d2d2d2\\] {\n --tw-border-opacity: 1;\n border-color: rgb(210 210 210 / var(--tw-border-opacity));\n}\n\n.border-softest {\n border-color: var(--grey-light);\n}\n\n.border-b-softer {\n border-bottom-color: rgba(7, 20, 13, 0.1); /* NEW: brand-black */\n}\n\n/* ============================================\n BACKGROUNDS - NEW EBRAINS COLORS\n ============================================ */\n\n/* Accent backgrounds - NEW green */\n.\\!bg-accent-dark {\n background-color: var(--brand-green-dark) !important; /* NEW: #00C87B */\n}\n\n.bg-accent {\n background-color: var(--brand-green); /* NEW: #00FF9D */\n}\n\n.bg-accent-dark {\n background-color: var(--brand-green-dark); /* NEW: #00C87B */\n}\n\n/* Neutral backgrounds - NEW simplified greys */\n.\\!bg-darker {\n background-color: var(--grey-dark) !important; /* NEW: #7A7B7A */\n}\n\n.bg-dark {\n background-color: var(--grey-light); /* NEW: #ECECEC */\n}\n\n.bg-darker {\n background-color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n/* Strong backgrounds - NEW brand-black */\n.\\!bg-strong-dark {\n background-color: var(--brand-black) !important; /* NEW: #07140D */\n}\n\n.bg-strong {\n background-color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.bg-strong-dark {\n background-color: var(--brand-black); /* NEW: #07140D */\n}\n\n.bg-stronger {\n background-color: var(--brand-black); /* NEW: #07140D */\n}\n\n.bg-strongest {\n background-color: var(--brand-black); /* NEW: #07140D (was pure black) */\n}\n\n/* Overlay */\n.bg-overlay {\n background-color: rgba(7, 20, 13, 0.25); /* NEW: brand-black overlay */\n}\n\n/* ============================================\n PADDING\n ============================================ */\n\n.p-12 {\n padding: 0.75rem;\n}\n\n.p-6 {\n padding: 0.375rem;\n}\n\n.p-8 {\n padding: 0.5rem;\n}\n\n.\\!px-0 {\n padding-left: 0rem !important;\n padding-right: 0rem !important;\n}\n\n.px-12 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n.px-16 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.px-32 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.py-8 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.py-12 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n\n.pl-2 {\n padding-left: 0.125rem;\n}\n\n.pl-4 {\n padding-left: 0.25rem;\n}\n\n.pl-8 {\n padding-left: 0.5rem;\n}\n\n.pr-2 {\n padding-right: 0.125rem;\n}\n\n.pr-4 {\n padding-right: 0.25rem;\n}\n\n.pr-8 {\n padding-right: 0.5rem;\n}\n\n/* ============================================\n TEXT COLORS - NEW SYSTEM\n ============================================ */\n\n.\\!text-current {\n color: currentColor !important;\n}\n\n.text-accent {\n color: var(--brand-green); /* NEW: #00FF9D */\n}\n\n.text-current {\n color: currentColor;\n}\n\n.text-default {\n color: var(--brand-black); /* NEW: #07140D (was pure black) */\n}\n\n.text-inverse {\n color: var(--white);\n}\n\n.text-light {\n color: var(--grey-dark); /* NEW: simplified to grey-dark */\n}\n\n\n.text-lightest {\n color: var(--grey-light); /* NEW: simplified to grey-dark */\n}\n\n/* ============================================\n OPACITY\n ============================================ */\n\n.opacity-0 {\n opacity: 0;\n}\n\n.opacity-20 {\n opacity: 20;\n}\n\n/* ============================================\n SHADOWS - NEW SYSTEM\n ============================================ */\n\n.shadow {\n --tw-shadow: 0 1px 3px rgba(7, 20, 13, 0.1); /* NEW: brand-black */\n --tw-shadow-colored: 0 1px 3px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-accent {\n --tw-shadow: 0 0 16px rgba(0, 255, 157, 0.5); /* NEW: brand-green glow */\n --tw-shadow-colored: 0 0 16px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.underline-offset-4 {\n text-underline-offset: 0.2em;\n}\n\n.\\@container {\n container-type: inline-size;\n}\n\n/* ============================================\n PSEUDO-ELEMENT EFFECTS\n ============================================ */\n\n.after\\:effect-opacity::after {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n\n.even\\:bg-inverse-softer:nth-child(even) {\n background-color: rgba(255, 255, 255, .15);\n}\n\n.invalid\\:text-lightest:invalid {\n color: var(--grey-dark); /* NEW: simplified */\n}\n\n/* ============================================\n INTERACTIVE STATES - NEW COLORS\n ============================================ */\n\n.focus-within\\:bg-transparent:focus-within {\n background-color: transparent;\n}\n\n/* Hover states with NEW colors */\n\n.hover\\:border-0::hover {\n border-width: 0px;\n}\n\n.hover\\:border-accent::hover {\n border-color: var(--brand-green); /* NEW: #00FF9D */\n}\n\n.hover\\:text-default:hover {\n color: var(--brand-black);\n}\n\n.hover\\:text-light:hover {\n color: var(--grey-dark);\n}\n\n.hover\\:text-inverse:hover {\n color: var(--white);\n}\n\n\n.hover\\:bg-accent:hover {\n background-color: var(--brand-green); /* NEW: #00C87B */\n}\n\n.hover\\:bg-accent-dark:hover {\n background-color: var(--brand-green-dark); /* NEW: #00C87B */\n}\n\n.hover\\:bg-dark:hover {\n background-color: var(--grey-light); /* NEW: #ECECEC */\n}\n\n.hover\\:bg-darker:hover {\n background-color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.hover\\:bg-default:hover {\n background-color: var(--grey-light);\n}\n\n.hover\\:bg-inverse:hover {\n background-color: var(--white);\n}\n\n.hover\\:bg-strong-dark:hover {\n background-color: var(--brand-black); /* NEW: #07140D */\n}\n\n.hover\\:bg-transparent:hover {\n background-color: transparent;\n}\n\n.hover\\:bg-strongest:hover {\n background-color: var(--brand-black);\n}\n\n.hover\\:text-default:hover {\n color: var(--brand-black); /* NEW: #07140D */\n}\n\n.hover\\:text-lighter:hover {\n color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.hover\\:\\!underline:hover {\n text-decoration-line: underline !important;\n}\n\n.hover\\:no-underline:hover {\n text-decoration-line: none;\n}\n\n.hover\\:shadow-hover:hover {\n --tw-shadow: 0 8px 24px rgba(7, 20, 13, 0.2); /* NEW: brand-black */\n --tw-shadow-colored: 0 8px 24px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.focus\\:shadow-none:focus {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n/* ============================================\n DISABLED STATES - NEW COLORS\n ============================================ */\n\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\:bg-dark:disabled {\n background-color: var(--grey-light); /* NEW: #ECECEC */\n}\n\n.disabled\\:text-lightest:disabled {\n color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.aria-disabled\\:cursor-not-allowed[aria-disabled=\"true\"] {\n cursor: not-allowed;\n}\n\n.aria-disabled\\:\\!border-transparent[aria-disabled=\"true\"] {\n border-color: transparent !important;\n}\n\n.aria-disabled\\:bg-dark[aria-disabled=\"true\"] {\n background-color: var(--grey-light); /* NEW: #ECECEC */\n}\n\n.aria-disabled\\:bg-transparent[aria-disabled=\"true\"] {\n background-color: transparent;\n}\n\n.aria-disabled\\:text-light[aria-disabled=\"true\"] {\n color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.aria-disabled\\:text-lightest[aria-disabled=\"true\"] {\n color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.aria-disabled\\:line-through[aria-disabled=\"true\"] {\n text-decoration-line: line-through;\n}\n\n.aria-disabled\\:shadow-none[aria-disabled=\"true\"] {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.aria-current-page\\:bg-darker[aria-current=\"page\"] {\n background-color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n/* ============================================\n AFTER PSEUDO-ELEMENTS\n ============================================ */\n\n.after\\:absolute::after {\n position: absolute;\n}\n\n.after\\:inset-0::after {\n inset: 0rem;\n}\n\n.after\\:inset-x-0::after {\n left: 0rem;\n right: 0rem;\n}\n\n.after\\:bottom-0::after {\n bottom: 0rem;\n}\n\n.after\\:left-16::after {\n left: 1rem;\n}\n\n.after\\:right-16::after {\n right: 1rem;\n}\n\n.after\\:z-10::after {\n z-index: 10;\n}\n\n.after\\:rounded-lg::after {\n border-radius: 16px;\n}\n\n.after\\:rounded-t-lg::after {\n border-top-left-radius: 16px;\n border-top-right-radius: 16px;\n}\n\n.after\\:border-3::after {\n border-width: 3px;\n}\n\n.after\\:border-b-2::after {\n border-bottom-width: 2px;\n}\n\n.after\\:\\!border-transparent::after {\n border-color: transparent !important;\n}\n\n.after\\:border-accent::after {\n border-color: var(--brand-green); /* NEW: #00FF9D */\n}\n\n.after\\:border-accent-dark::after {\n border-color: var(--brand-green-dark); /* NEW: #00FF9D */\n}\n\n.after\\:border-soft::after {\n border-color: var(--grey-dark);\n}\n\n.after\\:border-softest::after {\n border-color: var(--grey-light);\n}\n\n.after\\:opacity-0::after {\n opacity: 0;\n}\n\n.after\\:content-\\[\\'\\'\\]::after {\n --tw-content: '';\n content: var(--tw-content);\n}\n\n.hover\\:text-accent:hover {\n color: var(--brand-green);\n}\n\n.hover\\:after\\:\\border-accent:hover::after {\n border-color: var(--brand-green);\n}\n\n.hover\\:after\\:\\!border-transparent:hover::after {\n border-color: transparent !important;\n}\n\n.hover\\:after\\:opacity-100:hover::after {\n opacity: 1;\n}\n\n.focus-visible\\:after\\:opacity-100:focus-visible::after {\n opacity: 1;\n}\n\n.aria-disabled\\:after\\:\\!border-transparent[aria-disabled=\"true\"]::after {\n border-color: transparent !important;\n}\n\n.aria-disabled\\:after\\:\\!border-0[aria-disabled=\"true\"]::after {\n border-width: 0 !important;\n}\n\n.hover\\:before\\:opacity-100:hover::before {\n opacity: 1;\n}\n\n/* ============================================\n CTA BUTTON STYLES\n ============================================ */\n\n/* CTA link style */\n.cta-link {\n font-family: 'IBM Plex Mono', monospace;\n font-size: var(--f-ui-01-fontSize);\n color: var(--grey-dark);\n text-decoration: none;\n transition: color 0.3s ease;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n}\n\n.cta-link:hover {\n color: var(--brand-green);\n}\n\n/* CTA brand link style - always green */\n.cta-link-brand {\n font-family: 'IBM Plex Mono', monospace;\n font-size: var(--f-ui-02-fontSize);\n color: var(--brand-green);\n text-decoration: none;\n transition: color 0.3s ease;\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.cta-link-brand:hover {\n color: var(--brand-green-dark);\n}\n\n@media (min-width: 750px) {\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:flex {\n display: flex;\n }\n}";
376
+ const edsButtonCss = "/* ============================================\n EDS BUTTON - NEW EBRAINS VISUAL SYSTEM\n ============================================ */\n\n*,\n::before,\n::after {\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n border-color: currentColor;\n}\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\n 1. Change the font styles in all browsers.\n 2. Remove the margin in Firefox and Safari.\n 3. Remove default padding in all browsers.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n font-size: 100%;\n font-weight: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n}\n\n/*\n Remove the inheritance of text transform in Edge and Firefox.\n */\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n 1. Correct the inability to style clickable types in iOS and Safari.\n 2. Remove default button styles.\n */\nbutton,\ninput:where([type='button']),\ninput:where([type='reset']),\ninput:where([type='submit']) {\n -webkit-appearance: button;\n /* 1 */\n background-color: transparent;\n /* 2 */\n background-image: none;\n /* 2 */\n}\n\np {\n margin: 0;\n}\n\n/*\n Set the default cursor for buttons.\n */\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\n Make sure disabled buttons don't get the pointer cursor.\n */\n:disabled {\n cursor: default;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n\n/* ============================================\n TYPOGRAPHY CLASSES\n ============================================ */\n\n.f-body-01 {\n font-family: var(--f-body-01-fontFamily);\n font-weight: var(--f-body-01-fontWeight);\n font-size: var(--f-body-01-fontSize);\n line-height: var(--f-body-01-lineHeight);\n letter-spacing: var(--f-body-01-letterSpacing);\n}\n\n.f-body-02 {\n font-family: var(--f-body-02-fontFamily);\n font-weight: var(--f-body-02-fontWeight);\n font-size: var(--f-body-02-fontSize);\n line-height: var(--f-body-02-lineHeight);\n letter-spacing: var(--f-body-02-letterSpacing);\n}\n\n.f-ui-01 {\n font-family: var(--f-ui-01-fontFamily);\n font-weight: var(--f-ui-01-fontWeight);\n font-size: var(--f-ui-01-fontSize);\n line-height: var(--f-ui-01-lineHeight);\n letter-spacing: var(--f-ui-01-letterSpacing);\n}\n\n.f-ui-02 {\n font-family: var(--f-ui-02-fontFamily);\n font-weight: var(--f-ui-02-fontWeight);\n font-size: var(--f-ui-02-fontSize);\n line-height: var(--f-ui-02-lineHeight);\n letter-spacing: var(--f-ui-02-letterSpacing);\n}\n\n/* ============================================\n BUTTON BORDER EFFECTS - NEW SYSTEM\n ============================================ */\n\n.border-inside {\n position: relative;\n\n &::after {\n pointer-events: none;\n position: absolute;\n inset: 0rem;\n z-index: 1;\n border-radius: 8px;\n border-width: 2px;\n border-color: rgba(7, 20, 13, 1); /* brand-black with opacity */\n content: '';\n }\n}\n\n.border-inside-inverse {\n position: relative;\n\n &::after {\n pointer-events: none;\n position: absolute;\n inset: 0rem;\n z-index: 1;\n border-radius: 8px;\n border-width: 2px;\n border-color: rgba(255, 255, 255, 1); /* white border */\n content: '';\n }\n}\n\n.border-inside-pill {\n &::after {\n border-radius: 100px; /* pill shape */\n content: '';\n }\n}\n\n.border-inside-inverse.border-inside-pill {\n &::after {\n border-radius: 100px; /* pill shape for inverse border */\n }\n}\n\n/* ============================================\n LOADER SPINNER\n ============================================ */\n\n.loader {\n box-sizing: border-box;\n display: inline-block;\n height: 1rem;\n width: 1rem;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.loader {\n animation: spin 1s linear infinite;\n border-radius: 9999px;\n border: 3px solid rgba(7, 20, 13, 0.3); /* brand-black */\n border-bottom-color: #07140D; /* brand-black */\n}\n\n/* ============================================\n TRANSITIONS & EFFECTS\n ============================================ */\n\n.effect-color {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n\n.effect-focus {\n outline-width: 3px;\n outline-offset: 2px;\n outline-color: var(--brand-green); /* NEW: brand-green for focus */\n}\n\n.effect-focus:focus-visible {\n outline-style: solid;\n}\n\n.effect-focus-within {\n outline-width: 3px;\n outline-offset: 2px;\n outline-color: var(--brand-green); /* NEW: brand-green for focus */\n}\n\n.effect-focus-within:focus-within {\n outline-style: solid;\n}\n\n/* ============================================\n BRAND HOVER TRANSFORM EFFECT\n ============================================ */\n.brand-hover-transform {\n transition-property: transform, box-shadow, color, background-color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.brand-hover-transform:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 20px rgba(0, 255, 157, 0.3);\n}\n\n.brand-hover-transform[aria-disabled=\"true\"]:hover,\n.brand-hover-transform:disabled:hover {\n transform: none;\n box-shadow: none;\n}\n\n/* Secondary Inverse Transform Effect */\n.secondary-inverse-transform {\n transition-property: transform, background-color, color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.secondary-inverse-transform:hover {\n transform: translateY(-2px);\n}\n\n.secondary-inverse-transform[aria-disabled=\"true\"]:hover,\n.secondary-inverse-transform:disabled:hover {\n transform: none;\n}\n\n/* ============================================\n UTILITY CLASSES\n ============================================ */\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.pointer-events-none {\n pointer-events: none;\n}\n\n.static {\n position: static;\n}\n\n.fixed {\n position: fixed;\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.sticky {\n position: sticky;\n}\n\n.inset-0 {\n inset: 0rem;\n}\n\n.inset-x-16 {\n left: 1rem;\n right: 1rem;\n}\n\n/* ============================================\n POSITIONING\n ============================================ */\n\n.-top-8 {\n top: -0.5rem;\n}\n\n.left-0 {\n left: 0rem;\n}\n\n.left-1\\/2 {\n left: 50%;\n}\n\n.left-4 {\n left: 0.25rem;\n}\n\n.left-\\[4px\\] {\n left: 4px;\n}\n\n.right-0 {\n right: 0rem;\n}\n\n.right-4 {\n right: 0.25rem;\n}\n\n.right-8 {\n right: 0.5rem;\n}\n\n.right-\\[6px\\] {\n right: 6px;\n}\n\n.top-0 {\n top: 0rem;\n}\n\n.top-1\\/2 {\n top: 50%;\n}\n\n/* ============================================\n SPACING\n ============================================ */\n\n.m-0 {\n margin: 0rem;\n}\n\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.-ml-16 {\n margin-left: -1rem;\n}\n\n.-mr-16 {\n margin-right: -1rem;\n}\n\n.ml-0 {\n margin-left: 0rem;\n}\n\n.ml-4 {\n margin-left: 0.25rem;\n}\n\n.ml-64 {\n margin-left: 4rem;\n}\n\n.ml-8 {\n margin-left: 0.5rem;\n}\n\n.ml-auto {\n margin-left: auto;\n}\n\n.mr-4 {\n margin-right: 0.25rem;\n}\n\n.mr-8 {\n margin-right: 0.5rem;\n}\n\n.mr-auto {\n margin-right: auto;\n}\n\n/* ============================================\n DISPLAY\n ============================================ */\n\n.block {\n display: block;\n}\n\n.\\!block {\n display: block !important;\n}\n\n.inline-block {\n display: inline-block;\n}\n\n.inline {\n display: inline;\n}\n\n.flex {\n display: flex;\n}\n\n.inline-flex {\n display: inline-flex;\n}\n\n.hidden {\n display: none;\n}\n\n/* ============================================\n DIMENSIONS\n ============================================ */\n\n.h-20 {\n height: 1.25rem;\n}\n\n.h-24 {\n height: 1.5rem;\n}\n\n.h-36 {\n height: 2.25rem;\n}\n\n.h-40 {\n height: 2.5rem;\n}\n\n.h-44 {\n height: 2.75rem;\n}\n\n/* Min-height variants — used for button sizing so a label that wraps to\n two lines grows (with its py-12 padding) instead of being clipped at a\n fixed height. Single-line buttons keep the same height. */\n.min-h-36 {\n min-height: 2.25rem;\n}\n\n.min-h-44 {\n min-height: 2.75rem;\n}\n\n.h-48 {\n height: 3rem;\n}\n\n.h-auto {\n height: auto;\n}\n\n.h-full {\n height: 100%;\n}\n\n.\\!min-h-20 {\n min-height: 1.25rem !important;\n}\n\n.min-h-screen {\n min-height: 100vh;\n}\n\n.w-20 {\n width: 1.25rem;\n}\n\n.w-24 {\n width: 1.5rem;\n}\n\n.w-full {\n width: 100%;\n}\n\n.w-auto {\n width: auto;\n}\n\n/* ============================================\n FLEXBOX\n ============================================ */\n\n.flex-none {\n flex: none;\n}\n\n.grow {\n flex-grow: 1;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.resize {\n resize: both;\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-center {\n align-items: center;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.justify-between {\n justify-content: space-between;\n}\n\n.gap-4 {\n gap: 0.25rem;\n}\n\n.gap-8 {\n gap: 0.5rem;\n}\n\n.space-x-2> :not([hidden])~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.125rem * var(--tw-space-x-reverse));\n margin-left: calc(0.125rem * calc(1 - var(--tw-space-x-reverse)));\n}\n\n/* ============================================\n OVERFLOW\n ============================================ */\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.overflow-x-auto {\n overflow-x: auto;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n\n/* ============================================\n TEXT\n ============================================ */\n\n.whitespace-nowrap {\n white-space: nowrap;\n}\n\n.break-words {\n overflow-wrap: break-word;\n}\n\n/* ============================================\n BORDERS & RADIUS - NEW SYSTEM\n ============================================ */\n\n.rounded {\n border-radius: 0.25rem;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.rounded-lg {\n border-radius: 16px;\n}\n\n.rounded-md {\n border-radius: 12px;\n}\n\n.rounded-pill {\n border-radius: 100px; /* NEW: pill shape */\n}\n\n.rounded-sm {\n border-radius: 8px;\n}\n\n.rounded-xxs {\n border-radius: 2px;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-\\[\\#0034CB\\] {\n --tw-border-opacity: 1;\n border-color: rgb(0 52 203 / var(--tw-border-opacity));\n}\n\n.border-\\[\\#d2d2d2\\] {\n --tw-border-opacity: 1;\n border-color: rgb(210 210 210 / var(--tw-border-opacity));\n}\n\n.border-softest {\n border-color: var(--grey-light);\n}\n\n.border-b-softer {\n border-bottom-color: rgba(7, 20, 13, 0.1); /* NEW: brand-black */\n}\n\n/* ============================================\n BACKGROUNDS - NEW EBRAINS COLORS\n ============================================ */\n\n/* Accent backgrounds - NEW green */\n.\\!bg-accent-dark {\n background-color: var(--brand-green-dark) !important; /* NEW: #00C87B */\n}\n\n.bg-accent {\n background-color: var(--brand-green); /* NEW: #00FF9D */\n}\n\n.bg-brand-light {\n background-color: var(--green-200); /* light brand tint #d3ffdc — brandLight intent */\n}\n\n.bg-accent-dark {\n background-color: var(--brand-green-dark); /* NEW: #00C87B */\n}\n\n/* Neutral backgrounds - NEW simplified greys */\n.\\!bg-darker {\n background-color: var(--grey-dark) !important; /* NEW: #7A7B7A */\n}\n\n.bg-dark {\n background-color: var(--grey-light); /* NEW: #ECECEC */\n}\n\n.bg-darker {\n background-color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n/* Strong backgrounds - NEW brand-black */\n.\\!bg-strong-dark {\n background-color: var(--brand-black) !important; /* NEW: #07140D */\n}\n\n.bg-strong {\n background-color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.bg-strong-dark {\n background-color: var(--brand-black); /* NEW: #07140D */\n}\n\n.bg-stronger {\n background-color: var(--brand-black); /* NEW: #07140D */\n}\n\n.bg-strongest {\n background-color: var(--brand-black); /* NEW: #07140D (was pure black) */\n}\n\n/* Overlay */\n.bg-overlay {\n background-color: rgba(7, 20, 13, 0.25); /* NEW: brand-black overlay */\n}\n\n/* ============================================\n PADDING\n ============================================ */\n\n.p-12 {\n padding: 0.75rem;\n}\n\n.p-6 {\n padding: 0.375rem;\n}\n\n.p-8 {\n padding: 0.5rem;\n}\n\n.\\!px-0 {\n padding-left: 0rem !important;\n padding-right: 0rem !important;\n}\n\n.px-12 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n.px-16 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.px-32 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.py-8 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.py-12 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n\n.pl-2 {\n padding-left: 0.125rem;\n}\n\n.pl-4 {\n padding-left: 0.25rem;\n}\n\n.pl-8 {\n padding-left: 0.5rem;\n}\n\n.pr-2 {\n padding-right: 0.125rem;\n}\n\n.pr-4 {\n padding-right: 0.25rem;\n}\n\n.pr-8 {\n padding-right: 0.5rem;\n}\n\n/* ============================================\n TEXT COLORS - NEW SYSTEM\n ============================================ */\n\n.\\!text-current {\n color: currentColor !important;\n}\n\n.text-accent {\n color: var(--brand-green); /* NEW: #00FF9D */\n}\n\n.text-current {\n color: currentColor;\n}\n\n.text-default {\n color: var(--brand-black); /* NEW: #07140D (was pure black) */\n}\n\n.text-inverse {\n color: var(--white);\n}\n\n.text-light {\n color: var(--grey-dark); /* NEW: simplified to grey-dark */\n}\n\n\n.text-lightest {\n color: var(--grey-light); /* NEW: simplified to grey-dark */\n}\n\n/* ============================================\n OPACITY\n ============================================ */\n\n.opacity-0 {\n opacity: 0;\n}\n\n.opacity-20 {\n opacity: 20;\n}\n\n/* ============================================\n SHADOWS - NEW SYSTEM\n ============================================ */\n\n.shadow {\n --tw-shadow: 0 1px 3px rgba(7, 20, 13, 0.1); /* NEW: brand-black */\n --tw-shadow-colored: 0 1px 3px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-accent {\n --tw-shadow: 0 0 16px rgba(0, 255, 157, 0.5); /* NEW: brand-green glow */\n --tw-shadow-colored: 0 0 16px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.underline-offset-4 {\n text-underline-offset: 0.2em;\n}\n\n.\\@container {\n container-type: inline-size;\n}\n\n/* ============================================\n PSEUDO-ELEMENT EFFECTS\n ============================================ */\n\n.after\\:effect-opacity::after {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n\n.even\\:bg-inverse-softer:nth-child(even) {\n background-color: rgba(255, 255, 255, .15);\n}\n\n.invalid\\:text-lightest:invalid {\n color: var(--grey-dark); /* NEW: simplified */\n}\n\n/* ============================================\n INTERACTIVE STATES - NEW COLORS\n ============================================ */\n\n.focus-within\\:bg-transparent:focus-within {\n background-color: transparent;\n}\n\n/* Hover states with NEW colors */\n\n.hover\\:border-0::hover {\n border-width: 0px;\n}\n\n.hover\\:border-accent::hover {\n border-color: var(--brand-green); /* NEW: #00FF9D */\n}\n\n.hover\\:text-default:hover {\n color: var(--brand-black);\n}\n\n.hover\\:text-light:hover {\n color: var(--grey-dark);\n}\n\n.hover\\:text-inverse:hover {\n color: var(--white);\n}\n\n\n.hover\\:bg-accent:hover {\n background-color: var(--brand-green); /* NEW: #00C87B */\n}\n\n.hover\\:bg-accent-dark:hover {\n background-color: var(--brand-green-dark); /* NEW: #00C87B */\n}\n\n.hover\\:bg-dark:hover {\n background-color: var(--grey-light); /* NEW: #ECECEC */\n}\n\n.hover\\:bg-darker:hover {\n background-color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.hover\\:bg-default:hover {\n background-color: var(--grey-light);\n}\n\n.hover\\:bg-inverse:hover {\n background-color: var(--white);\n}\n\n.hover\\:bg-strong-dark:hover {\n background-color: var(--brand-black); /* NEW: #07140D */\n}\n\n.hover\\:bg-transparent:hover {\n background-color: transparent;\n}\n\n.hover\\:bg-strongest:hover {\n background-color: var(--brand-black);\n}\n\n.hover\\:text-default:hover {\n color: var(--brand-black); /* NEW: #07140D */\n}\n\n.hover\\:text-lighter:hover {\n color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.hover\\:\\!underline:hover {\n text-decoration-line: underline !important;\n}\n\n.hover\\:no-underline:hover {\n text-decoration-line: none;\n}\n\n.hover\\:shadow-hover:hover {\n --tw-shadow: 0 8px 24px rgba(7, 20, 13, 0.2); /* NEW: brand-black */\n --tw-shadow-colored: 0 8px 24px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.focus\\:shadow-none:focus {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n/* ============================================\n DISABLED STATES - NEW COLORS\n ============================================ */\n\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\:bg-dark:disabled {\n background-color: var(--grey-light); /* NEW: #ECECEC */\n}\n\n.disabled\\:text-lightest:disabled {\n color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.aria-disabled\\:cursor-not-allowed[aria-disabled=\"true\"] {\n cursor: not-allowed;\n}\n\n.aria-disabled\\:\\!border-transparent[aria-disabled=\"true\"] {\n border-color: transparent !important;\n}\n\n.aria-disabled\\:bg-dark[aria-disabled=\"true\"] {\n background-color: var(--grey-light); /* NEW: #ECECEC */\n}\n\n.aria-disabled\\:bg-transparent[aria-disabled=\"true\"] {\n background-color: transparent;\n}\n\n.aria-disabled\\:text-light[aria-disabled=\"true\"] {\n color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.aria-disabled\\:text-lightest[aria-disabled=\"true\"] {\n color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n.aria-disabled\\:line-through[aria-disabled=\"true\"] {\n text-decoration-line: line-through;\n}\n\n.aria-disabled\\:shadow-none[aria-disabled=\"true\"] {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.aria-current-page\\:bg-darker[aria-current=\"page\"] {\n background-color: var(--grey-dark); /* NEW: #7A7B7A */\n}\n\n/* ============================================\n AFTER PSEUDO-ELEMENTS\n ============================================ */\n\n.after\\:absolute::after {\n position: absolute;\n}\n\n.after\\:inset-0::after {\n inset: 0rem;\n}\n\n.after\\:inset-x-0::after {\n left: 0rem;\n right: 0rem;\n}\n\n.after\\:bottom-0::after {\n bottom: 0rem;\n}\n\n.after\\:left-16::after {\n left: 1rem;\n}\n\n.after\\:right-16::after {\n right: 1rem;\n}\n\n.after\\:z-10::after {\n z-index: 10;\n}\n\n.after\\:rounded-lg::after {\n border-radius: 16px;\n}\n\n.after\\:rounded-t-lg::after {\n border-top-left-radius: 16px;\n border-top-right-radius: 16px;\n}\n\n.after\\:border-3::after {\n border-width: 3px;\n}\n\n.after\\:border-b-2::after {\n border-bottom-width: 2px;\n}\n\n.after\\:\\!border-transparent::after {\n border-color: transparent !important;\n}\n\n.after\\:border-accent::after {\n border-color: var(--brand-green); /* NEW: #00FF9D */\n}\n\n.after\\:border-accent-dark::after {\n border-color: var(--brand-green-dark); /* NEW: #00FF9D */\n}\n\n.after\\:border-soft::after {\n border-color: var(--grey-dark);\n}\n\n.after\\:border-softest::after {\n border-color: var(--grey-light);\n}\n\n.after\\:opacity-0::after {\n opacity: 0;\n}\n\n.after\\:content-\\[\\'\\'\\]::after {\n --tw-content: '';\n content: var(--tw-content);\n}\n\n.hover\\:text-accent:hover {\n color: var(--brand-green);\n}\n\n.hover\\:after\\:\\border-accent:hover::after {\n border-color: var(--brand-green);\n}\n\n.hover\\:after\\:\\!border-transparent:hover::after {\n border-color: transparent !important;\n}\n\n.hover\\:after\\:opacity-100:hover::after {\n opacity: 1;\n}\n\n.focus-visible\\:after\\:opacity-100:focus-visible::after {\n opacity: 1;\n}\n\n.aria-disabled\\:after\\:\\!border-transparent[aria-disabled=\"true\"]::after {\n border-color: transparent !important;\n}\n\n.aria-disabled\\:after\\:\\!border-0[aria-disabled=\"true\"]::after {\n border-width: 0 !important;\n}\n\n.hover\\:before\\:opacity-100:hover::before {\n opacity: 1;\n}\n\n/* ============================================\n CTA BUTTON STYLES\n ============================================ */\n\n/* CTA link style */\n.cta-link {\n font-family: 'IBM Plex Mono', monospace;\n font-size: var(--f-ui-01-fontSize);\n color: var(--grey-dark);\n text-decoration: none;\n transition: color 0.3s ease;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n}\n\n.cta-link:hover {\n color: var(--brand-green);\n}\n\n/* CTA brand link style - always green */\n.cta-link-brand {\n font-family: 'IBM Plex Mono', monospace;\n font-size: var(--f-ui-02-fontSize);\n color: var(--brand-green);\n text-decoration: none;\n transition: color 0.3s ease;\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.cta-link-brand:hover {\n color: var(--brand-green-dark);\n}\n\n@media (min-width: 750px) {\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:flex {\n display: flex;\n }\n}";
377
377
  const EdsButtonStyle0 = edsButtonCss;
378
378
 
379
379
  const EdsButton = class {
380
380
  constructor(hostRef) {
381
381
  index.registerInstance(this, hostRef);
382
382
  this.button = cva([
383
- 'relative items-center py-12 cursor-pointer',
383
+ 'relative items-center cursor-pointer',
384
+ // Brand-green focus-visible outline (rules live in eds-button.css);
385
+ // without this class keyboard focus falls back to the browser ring.
386
+ 'effect-focus',
384
387
  'aria-disabled:text-lightest aria-disabled:bg-dark aria-disabled:cursor-not-allowed',
385
388
  'disabled:text-lightest disabled:bg-dark disabled:cursor-not-allowed'
386
389
  ], {
@@ -392,6 +395,10 @@ const EdsButton = class {
392
395
  ghost: '',
393
396
  ghostInverse: 'text-inverse',
394
397
  brand: 'bg-accent text-default hover:bg-strongest hover:text-inverse aria-disabled:shadow-none',
398
+ // Light-green tint with brand-black text — an on-brand "unselected"
399
+ // state (e.g. eds-rating / eds-nps) that brightens to solid brand on
400
+ // hover/selection. Lives start-to-finish in the brand palette.
401
+ brandLight: 'bg-brand-light text-default hover:bg-accent hover:text-default aria-disabled:shadow-none',
395
402
  brandInverse: 'bg-accent text-default hover:bg-inverse hover:text-default aria-disabled:shadow-none',
396
403
  neutral: 'bg-darker after:border-softest bg-inverse hover:bg-dark hover:text-light text-inverse aria-disabled:shadow-none',
397
404
  cta: [
@@ -410,8 +417,8 @@ const EdsButton = class {
410
417
  true: ''
411
418
  },
412
419
  size: {
413
- small: 'h-36 f-ui-02',
414
- large: 'h-44 f-ui-01'
420
+ small: 'min-h-36 f-ui-02 py-8',
421
+ large: 'min-h-44 f-ui-01 py-12'
415
422
  },
416
423
  hasIcon: {
417
424
  true: '',
@@ -584,7 +591,7 @@ const EdsButton = class {
584
591
  const loaderBottomColor = this.intent === 'primary' || this.intent === 'secondaryInverse'
585
592
  ? '#FFFFFF' // White for dark backgrounds
586
593
  : '#07140D'; // Brand-black for light backgrounds (secondary, brand, etc.)
587
- return (index.h(index.Host, { key: '6f955c89a01cf823ff8fc34bfa92df85a3aa8327' }, index.h(ElementType, { key: 'fabf5842d4c9583c7ff9e4415697c62c111dce68', tabindex: isInteractive ? '0' : '-1', "aria-label": this.label ? undefined : this.ariaLabel, "aria-disabled": this.disabled || this.loading ? 'true' : undefined, "aria-busy": this.loading ? 'true' : undefined, disabled: this.elementType === 'button' ? this.disabled || this.loading : undefined, role: this.elementType === 'a' ? 'button' : undefined, class: `${classes || ''}`, onClick: (event) => this.handleClick(event), onKeyDown: (event) => this.handleKeyDown(event) }, this.label && (index.h("span", { key: '746feb603fd83b54bab92e62ab9aefcd6a232f54', class: `${this.loading ? 'opacity-0' : ''} ${this.icon && (this.intent !== 'cta' && this.intent !== 'cta-brand') ? (this.iconPos === 'right' ? (this.size === 'large' ? 'pr-4' : 'pr-2') : (this.size === 'large' ? 'pl-4' : 'pl-2')) : ''}`, "aria-hidden": this.loading ? 'true' : undefined }, this.label)), this.loading && (index.h("span", { key: 'e0f54e409080548687304bae2f5d3e1b56863318', class: "absolute inset-0 flex items-center justify-center", "aria-hidden": "true" }, index.h("span", { key: 'c2472f5d2730ef850a076471fa00c9db91496db7', class: "loader", style: {
594
+ return (index.h(index.Host, { key: '263f3fd25c17d5f9d8ddcfcc57848d6c8e729994' }, index.h(ElementType, { key: '9c9f68e332ca6fe14387fc239e880069596b0072', tabindex: isInteractive ? '0' : '-1', "aria-label": this.label ? undefined : this.ariaLabel, "aria-disabled": this.disabled || this.loading ? 'true' : undefined, "aria-busy": this.loading ? 'true' : undefined, disabled: this.elementType === 'button' ? this.disabled || this.loading : undefined, role: this.elementType === 'a' ? 'button' : undefined, class: `${classes || ''}`, onClick: (event) => this.handleClick(event), onKeyDown: (event) => this.handleKeyDown(event) }, this.label && (index.h("span", { key: '285a0b07089eb7ebab3bd439000ea89c454164d0', class: `${this.loading ? 'opacity-0' : ''} ${this.icon && (this.intent !== 'cta' && this.intent !== 'cta-brand') ? (this.iconPos === 'right' ? (this.size === 'large' ? 'pr-4' : 'pr-2') : (this.size === 'large' ? 'pl-4' : 'pl-2')) : ''}`, "aria-hidden": this.loading ? 'true' : undefined }, this.label)), this.loading && (index.h("span", { key: '36da873de3be79f2cfc3e4851dadd953e17109dc', class: "absolute inset-0 flex items-center justify-center", "aria-hidden": "true" }, index.h("span", { key: '961913b2c22e6bd803c6639e617129843c877bfe', class: "loader", style: {
588
595
  border: `3px solid ${loaderBorderColor}`,
589
596
  borderBottomColor: loaderBottomColor
590
597
  } }))), this.icon ? (index.h("eds-icon-wrapper", { name: this.icon, size: 20, "aria-hidden": "true" })) : null)));
@@ -628,7 +635,7 @@ const EdsCardApp = class {
628
635
  };
629
636
  EdsCardApp.style = EdsCardAppStyle0;
630
637
 
631
- const edsCardCtaCss = ":host{display:flex;height:100%}.cta-container{height:auto;text-align:center;border-radius:16px;padding:1.5rem;position:relative;overflow:hidden;display:flex;flex-direction:column;flex-grow:1;justify-content:center}.cta-container-default{background-color:var(--brand-black);border:1px solid rgba(0, 255, 157, 0.25)}.cta-container-default .cta-title{color:var(--white)}.cta-container-default .cta-description{color:var(--grey-light)}.cta-container-default .cta-link{color:var(--grey-dark)}.cta-container-inverse{background-color:var(--white);border:1px solid rgba(0, 255, 157, 0.15)}.cta-container-inverse .cta-title{color:var(--brand-black)}.cta-container-inverse .cta-description{color:var(--grey-dark)}.cta-container-inverse .cta-link{color:var(--grey-dark)}.cta-container::before{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle at center, rgba(0, 255, 157, 0.1) 0%, transparent 50%);animation:rotate 20s linear infinite;pointer-events:none}@keyframes rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.cta-content{position:relative;z-index:1;width:100%}.cta-title{font-family:'Inter', var(--f-heading-fontFamily);font-weight:300;font-size:clamp(1.5rem, 4vw, 2rem);letter-spacing:-0.02em;margin-bottom:1rem;line-height:1.2}.cta-description{font-family:'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;font-size:1rem;margin:0 0 1.5rem;line-height:1.6}.cta-actions{display:flex;gap:1rem;justify-content:center;margin-bottom:1.5rem;flex-wrap:wrap}.cta-links{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}@media (max-width: 768px){.cta-container{padding:1.5rem}.cta-title{font-size:1.25rem}.cta-description{font-size:0.875rem;margin-bottom:1rem}.cta-actions{gap:0.75rem;margin-bottom:1rem}.cta-links{gap:0.75rem}}";
638
+ const edsCardCtaCss = ":host{display:flex;height:100%}.cta-container{height:auto;text-align:center;border-radius:16px;padding:1.5rem;position:relative;overflow:hidden;display:flex;flex-direction:column;flex-grow:1;justify-content:flex-start}.cta-container-default{background-color:var(--brand-black);border:1px solid rgba(0, 255, 157, 0.25)}.cta-container-default .cta-title{color:var(--white)}.cta-container-default .cta-description{color:var(--grey-light)}.cta-container-default .cta-link{color:var(--grey-dark)}.cta-container-inverse{background-color:var(--white);border:1px solid rgba(0, 255, 157, 0.15)}.cta-container-inverse .cta-title{color:var(--brand-black)}.cta-container-inverse .cta-description{color:var(--grey-dark)}.cta-container-inverse .cta-link{color:var(--grey-dark)}.cta-container::before{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle at center, rgba(0, 255, 157, 0.1) 0%, transparent 50%);animation:rotate 20s linear infinite;pointer-events:none}@keyframes rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.cta-content{position:relative;z-index:1;width:100%;flex-grow:1;display:flex;flex-direction:column}.cta-title{font-family:'Inter', var(--f-heading-fontFamily);font-weight:300;font-size:clamp(1.5rem, 4vw, 2rem);letter-spacing:-0.02em;margin-bottom:1rem;line-height:1.2}.cta-description{font-family:'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;font-size:1rem;margin:0 0 1.5rem;line-height:1.6}.cta-actions{display:flex;gap:1rem;justify-content:center;margin-bottom:1.5rem;flex-wrap:wrap;margin-top:auto}.cta-links{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}@media (max-width: 768px){.cta-container{padding:1.5rem}.cta-title{font-size:1.25rem}.cta-description{font-size:0.875rem;margin-bottom:1rem}.cta-actions{gap:0.75rem;margin-bottom:1rem}.cta-links{gap:0.75rem}}";
632
639
  const EdsCardCtaStyle0 = edsCardCtaCss;
633
640
 
634
641
  const EdsCardCta = class {
@@ -668,7 +675,7 @@ const EdsCardCta = class {
668
675
  const primaryButtonIntent = this.variant === 'default' ? 'brandInverse' : 'brand';
669
676
  const secondaryButtonIntent = this.variant === 'default' ? 'secondaryInverse' : 'secondary';
670
677
  const linkIntent = this.variant === 'default' ? 'cta' : 'underline';
671
- return (index.h("div", { key: 'ee2163e6096ad05dc55ac40c6626236723a23b72', class: containerClasses }, index.h("div", { key: 'f51481133015ef5eafce48bab525cf166c000e3a', class: "cta-content" }, index.h("h2", { key: '577441d8bc7cb4c906408faf995e106ef2779e8b', class: "cta-title", innerHTML: this.title }), index.h("p", { key: 'b8cbcf891b95f82c3dd57f1db9335f55c1d7162c', class: "cta-description" }, this.description), index.h("div", { key: 'f167262a521b9e15176a4fc65e3e45a8cf24feb1', class: "cta-actions" }, index.h("eds-button", { key: 'f2c092d340996c87864677f94d979fe6317ef6d7', label: this.primaryButtonText, intent: primaryButtonIntent, icon: "arrow-right", "icon-pos": "right", size: "large", triggerClick: this.handlePrimaryClick }), this.secondaryButtonText && (index.h("eds-button", { key: 'de0fe98dab48b2ab4b78a637915df48c930c4b54', label: this.secondaryButtonText, intent: secondaryButtonIntent, size: "large", triggerClick: this.handleSecondaryClick }))), this.parsedLinks && this.parsedLinks.length > 0 && (index.h("div", { key: '842a6e794364fb50829ad422fc7699527b17e918', class: "cta-links" }, this.parsedLinks.map((link, index$1) => (index.h("eds-link", { key: index$1, label: link.label, url: link.url, intent: linkIntent }))))))));
678
+ return (index.h("div", { key: 'ee2163e6096ad05dc55ac40c6626236723a23b72', class: containerClasses }, index.h("div", { key: 'f51481133015ef5eafce48bab525cf166c000e3a', class: "cta-content" }, index.h("h2", { key: '577441d8bc7cb4c906408faf995e106ef2779e8b', class: "cta-title", innerHTML: this.title }), index.h("p", { key: 'b8cbcf891b95f82c3dd57f1db9335f55c1d7162c', class: "cta-description" }, this.description), index.h("div", { key: 'f167262a521b9e15176a4fc65e3e45a8cf24feb1', class: "cta-actions" }, index.h("slot", { key: 'c114de9b72bf56a2bda67d21aab0a1a24efba2e4', name: "actions" }, index.h("eds-button", { key: '75c4508fad3377ae1788bca7cda5f8315c8301a3', label: this.primaryButtonText, intent: primaryButtonIntent, icon: "arrow-right", "icon-pos": "right", size: "large", triggerClick: this.handlePrimaryClick }), this.secondaryButtonText && (index.h("eds-button", { key: '2c6de6b1032c62619b7225d3f7cbc04617fca465', label: this.secondaryButtonText, intent: secondaryButtonIntent, size: "large", triggerClick: this.handleSecondaryClick })))), this.parsedLinks && this.parsedLinks.length > 0 && (index.h("div", { key: 'a78f81632c85cb729d738b0bb533d260bc7e3727', class: "cta-links" }, this.parsedLinks.map((link, index$1) => (index.h("eds-link", { key: index$1, label: link.label, url: link.url, intent: linkIntent }))))))));
672
679
  }
673
680
  get el() { return index.getElement(this); }
674
681
  };
@@ -689,7 +696,7 @@ const EdsCardDesc = class {
689
696
  return this.truncate && this.truncateLines ? `line-clamp-${this.truncateLines}` : '';
690
697
  }
691
698
  render() {
692
- return (index.h("p", { key: 'c018c6b42e709c9e5df23ba9a999955ee4da1fdd', class: `f-body-02 ${this.intent === 'secondary' ? 'text-inverse' : 'text-default'}` }, index.h("span", { key: 'bcfb43e3940a31dc4c0ec18904e4448eb27d0580', class: this.getTruncateClass() }, this.description)));
699
+ return (index.h("p", { key: 'd7d9f5d40d82700388753a165a998574bd69e674', class: `f-body-02 ${this.intent === 'secondary' ? 'text-inverse' : 'text-default'}` }, index.h("span", { key: 'bff2551896e726ce02a78b448a0e3f2a3df0c697', class: this.getTruncateClass() }, this.description)));
693
700
  }
694
701
  };
695
702
  EdsCardDesc.style = EdsCardDescStyle0;
@@ -712,7 +719,7 @@ const EdsCardFeature = class {
712
719
  'feature-card',
713
720
  `feature-card-${this.variant}`
714
721
  ].join(' ');
715
- return (index.h("div", { key: '315904b024e86403b00c9f0e3ebb93dafba08fa8', class: cardClasses }, this.icon && (index.h("div", { key: 'e0891b38e8321130471ae1422c96fbfe7662b01f', class: "feature-icon" }, index.h("eds-icon-wrapper", { key: '768b355daebf53d69a54166525c193505dc44d67', name: this.icon, size: 24 }))), index.h("h3", { key: 'e2486793198e51e518f24beab609a3d0186902d4', class: "feature-title" }, this.title), index.h("p", { key: '4d66d673b5733c96312cde5e1c3fd64cced5d95a', class: "feature-description" }, this.description), this.url && (index.h("eds-link", { key: 'e9123234265f259fb9b61172f2e79c7aba5f82b4', label: this.linkText, url: this.url, intent: "cta", icon: "arrow-right", "icon-pos": "right" }))));
722
+ return (index.h("div", { key: 'f76c056bbca7b38892cdecf56291fe3882c9e3bb', class: cardClasses }, this.icon && (index.h("div", { key: '9e22a5f6c5e30b55c4bac84f5f11f773b1b37ab9', class: "feature-icon" }, index.h("eds-icon-wrapper", { key: '64154c38f3655cb55f14c2963a62ead699d8a533', name: this.icon, size: 24 }))), index.h("h3", { key: '99ed95a90796dbb6baa3f73cb2830fcd0954328c', class: "feature-title" }, this.title), index.h("p", { key: 'f91109a10f62a58d8b650987fbbf1a5a4f68beaa', class: "feature-description" }, this.description), this.url && (index.h("eds-link", { key: 'b94b57e5385da9db54a3767d0413349000add755', label: this.linkText, url: this.url, intent: "cta", icon: "arrow-right", "icon-pos": "right" }))));
716
723
  }
717
724
  get el() { return index.getElement(this); }
718
725
  };
@@ -796,7 +803,7 @@ const EdsCardGeneric = class {
796
803
  this.isHovered = false;
797
804
  }
798
805
  render() {
799
- return (index.h("article", { key: 'eb4b42dccca0fb46bc8e51e1b6873e118796647b', class: this.articleClasses(), onClick: this.url ? () => this.handleClick() : undefined, onMouseEnter: this.url ? () => this.handleMouseEnter() : undefined, onMouseLeave: this.url ? () => this.handleMouseLeave() : undefined }, this.icon && (index.h("div", { key: '229f7daab8d8560092eb94e664c73c306b2fec19', class: "card-icon-wrapper" }, index.h("eds-icon-wrapper", { key: 'c4b76bdff72dcbe7d98a7dfea71ca8693c00094e', name: this.icon, size: 32 }))), index.h("div", { key: '45d3a9d83cf92137485bae5248c55edb56c58671', class: "p-12 flex flex-col grow" }, this.parsedTags && this.parsedTags.length > 0 && (index.h("div", { key: '101676ed06f29e985c6bf11620a56660360ace57', class: "flex mb-12 gap-x-4" }, this.parsedTags.map((tag, index$1) => (index.h("eds-tag", { key: index$1, intent: tag.intent, label: tag.label, size: tag.size }))))), index.h("eds-card-title", { key: 'c901580eca3a3b8ce4c26e1c9ce5d0f9b7a11ed6', title: this.title, url: this.url, intent: this.intent, size: this.titleSize }), this.description && (index.h("div", { key: '618be209087536eee2fdfd3eaa1595c6fe6d0176', class: "mt-8" }, this.description && (index.h("eds-card-desc", { key: '1aa3ea97c4371ea7510ad47e364cea27e1de0482', "truncate-lines": "3", description: this.description, intent: this.intent })))), index.h("slot", { key: '3086eeeeb29bb82d927ab82e6ce98664118b0193', name: "card" }), this.url && (index.h("div", { key: 'f1f73a07002f7d82daa0b68b15d7c5cddba9c730', class: `flex items-center justify-between mt-auto pt-16 ${this.getLearnMoreColor()}` }, index.h("span", { key: '86fd1e428f6553b74aa634359fad7ba3ce590844', class: "f-ui-01" }, "Learn more"), index.h("eds-icon-wrapper", { key: 'f955e10355e2726052cd2d34d888ea0effd2b362', name: this.isHovered ? 'arrow-right' : 'arrow-up-right', size: 32 }))))));
806
+ return (index.h("article", { key: '6efb0c2c0c3d196b9759307bb98f4bf1e12504d5', class: this.articleClasses(), onClick: this.url ? () => this.handleClick() : undefined, onMouseEnter: this.url ? () => this.handleMouseEnter() : undefined, onMouseLeave: this.url ? () => this.handleMouseLeave() : undefined }, this.icon && (index.h("div", { key: '9c29cae822923b524668da65f3e341f9626d7e95', class: "card-icon-wrapper" }, index.h("eds-icon-wrapper", { key: '104a3551d3d8b910528dd43e8a12494faf4764a0', name: this.icon, size: 32 }))), index.h("div", { key: 'cc9d326aa6e55d1ed26b73f46d5fbb8087d55bf0', class: "p-12 flex flex-col grow" }, this.parsedTags && this.parsedTags.length > 0 && (index.h("div", { key: 'f740e184ec400d6083d04e4fa99259aa061c5dbf', class: "flex mb-12 gap-x-4" }, this.parsedTags.map((tag, index$1) => (index.h("eds-tag", { key: index$1, intent: tag.intent, label: tag.label, size: tag.size }))))), index.h("eds-card-title", { key: 'e263ce9bd116857648439bf9f356fc110e048547', title: this.title, url: this.url, intent: this.intent, size: this.titleSize }), this.description && (index.h("div", { key: 'aa6687dc61c548dd52e2d2f3eb9598f85c2af0a5', class: "mt-8" }, this.description && (index.h("eds-card-desc", { key: '8b82f70b5dc513396d08affc4958d9c1040583d6', "truncate-lines": "3", description: this.description, intent: this.intent })))), index.h("slot", { key: 'ff4d0ba6184b01b80e44c78a7cccec124f2b1706', name: "card" }), this.url && (index.h("div", { key: '889b5fbaf026df0e826626020ff201d06f047cc8', class: `flex items-center justify-between mt-auto pt-16 ${this.getLearnMoreColor()}` }, index.h("span", { key: '3a5b5d603a7f3d852b5e92ba57f7214f7b9754ec', class: "f-ui-01" }, "Learn more"), index.h("eds-icon-wrapper", { key: 'de15571bd4892f72646c205b14105f328d5a596d', name: this.isHovered ? 'arrow-right' : 'arrow-up-right', size: 32 }))))));
800
807
  }
801
808
  get el() { return index.getElement(this); }
802
809
  };
@@ -841,7 +848,7 @@ const EdsCardHero = class {
841
848
  `hero-card-${this.variant}`,
842
849
  this.url ? 'hero-card-clickable' : ''
843
850
  ].filter(Boolean).join(' ');
844
- return (index.h("div", { key: '8f7c9c98becb22586f308b0065c3f9cd515a7860', class: cardClasses, onClick: () => this.handleClick() }, index.h("div", { key: '6d99fd528b9611573a5ad3548e04914f532cfa21', class: "card-category" }, this.category), index.h("div", { key: 'f117842619c7fa91b088a72d3e5405843f9b0b3f', class: "card-title" }, this.title), this.description && (index.h("div", { key: '25a110fe2f58cb77051a8a5b37ee43e616e516fd', class: "card-description" }, this.description)), this.parsedTags && this.parsedTags.length > 0 && (index.h("div", { key: 'd0ef732bf246460affb697d71496ae5ee284ff48', class: "card-tags" }, this.parsedTags.map((tag, index$1) => (index.h("span", { key: index$1, class: "card-tag" }, tag.label)))))));
851
+ return (index.h("div", { key: 'c92f2acc8065b4142b28ca213abbb646e61f44fc', class: cardClasses, onClick: () => this.handleClick() }, index.h("div", { key: '38b8ec832d05a4891646ac31f24d32f62c5ac2e1', class: "card-category" }, this.category), index.h("div", { key: 'd356e4651ed9d136c72c519ecb9b484570c9b3be', class: "card-title" }, this.title), this.description && (index.h("div", { key: '52afdf7988667f73d8725e6a5f5b7816d4b38b30', class: "card-description" }, this.description)), this.parsedTags && this.parsedTags.length > 0 && (index.h("div", { key: 'a50fb41278d3b98da7054e0bee52d2a98ab5d8f3', class: "card-tags" }, this.parsedTags.map((tag, index$1) => (index.h("span", { key: index$1, class: "card-tag" }, tag.label)))))));
845
852
  }
846
853
  get el() { return index.getElement(this); }
847
854
  };
@@ -879,7 +886,7 @@ const EdsCardStat = class {
879
886
  `stat-card-${this.variant}`,
880
887
  this.url ? 'stat-card-clickable' : ''
881
888
  ].filter(Boolean).join(' ');
882
- const content = (index.h("div", { key: '9934fb7c9f9014293fc4190e83b658151c8ce5a1', class: cardClasses, onClick: () => this.handleClick() }, index.h("div", { key: '22b26775310db09da96fe0d793362ff8691da554', class: "stat-number" }, this.number), index.h("div", { key: '59e5a6f0851ac2d133cdfa7fdbb160401c60ba92', class: "stat-label" }, this.label), this.description && (index.h("div", { key: '916007f86e7de06b8e7cec79fc92b422a2c66db0', class: "stat-description" }, this.description))));
889
+ const content = (index.h("div", { key: 'f1dadeadd1d893b7a33aa92772baf7245954f6e7', class: cardClasses, onClick: () => this.handleClick() }, index.h("div", { key: '6adb8cc68740cd2dabf0bacf0af446e1499171a8', class: "stat-number" }, this.number), index.h("div", { key: 'adc7a8ffd44bceda51fcb98f68cfc8d7e454db5f', class: "stat-label" }, this.label), this.description && (index.h("div", { key: 'f70549244277e2c08c7bd94a1d297c00655faff5', class: "stat-description" }, this.description))));
883
890
  return content;
884
891
  }
885
892
  get el() { return index.getElement(this); }
@@ -3402,7 +3409,7 @@ const EdsCodeBlock = class {
3402
3409
  return this.code; // Fallback if language is not provided or unsupported
3403
3410
  }
3404
3411
  render() {
3405
- return (index.h("div", { key: '16c785c0fbac538fb0e20c42ed613f5211bea089', class: "relative bg-strongest rounded-sm" }, index.h("div", { key: '24967e8c714dc62c2366cae6bf6a19566fdeedbf', class: "text-inverse flex justify-between items-center p-8" }, this.language ? (index.h("span", { class: "f-ui-03" }, this.language.toUpperCase())) : (index.h("pre", { class: "bg-stronger pl-8", role: "region", "aria-label": "Code block without language" }, index.h("code", { innerHTML: this.getHighlightedCode() }))), index.h("span", { key: 'd84c547a7fda762a51279462e6c33642d3ed93b1', "aria-hidden": "true", class: "w-20 h-20 mt-8" }, index.h("eds-icon-wrapper", { key: 'e784206acb815fdb2df3f7013b32e18b42f47e0d', name: this.copied ? 'checkmark-filled' : 'copy', onClick: () => this.copyToClipboard() })), index.h("span", { key: '8f68b5adda295c370cfff19602cb8cc140d9a10d', class: "sr-only" }, "Copy Code")), this.language && (index.h("pre", { key: 'a3c42360f4a5026d8e6f5328f5ed5d8ca724c3ca', class: `language-${this.language} bg-stronger pl-8 pb-8`, role: "region", "aria-label": `Code block in ${this.language}` }, index.h("code", { key: '96ce7f1cf1cee401bd1a90368c56934116d97d29', innerHTML: this.getHighlightedCode() })))));
3412
+ return (index.h("div", { key: '4d73fa52c489b6995dd8a6d83c05e323bb1f5431', class: "relative bg-strongest rounded-sm" }, index.h("div", { key: 'c0df3237009310833b417f5ede5b7c204f2752bc', class: "text-inverse flex justify-between items-center p-8" }, this.language ? (index.h("span", { class: "f-ui-03" }, this.language.toUpperCase())) : (index.h("pre", { class: "bg-stronger pl-8", role: "region", "aria-label": "Code block without language" }, index.h("code", { innerHTML: this.getHighlightedCode() }))), index.h("span", { key: '016505a0749baaa52c6e4aa77f00b4da31e7ec45', "aria-hidden": "true", class: "w-20 h-20 mt-8" }, index.h("eds-icon-wrapper", { key: '21474f1b28af95251aca639c349aaac489d8519b', name: this.copied ? 'checkmark-filled' : 'copy', onClick: () => this.copyToClipboard() })), index.h("span", { key: '64450529ad3cf3dab7e74f8455307cdb3298bbc4', class: "sr-only" }, "Copy Code")), this.language && (index.h("pre", { key: 'affcb4719ef29d7ed9ed676eab975c98ceca31fa', class: `language-${this.language} bg-stronger pl-8 pb-8`, role: "region", "aria-label": `Code block in ${this.language}` }, index.h("code", { key: '43fa1b80c2e02233076c4da15a5aa04f0b49bfc3', innerHTML: this.getHighlightedCode() })))));
3406
3413
  }
3407
3414
  get el() { return index.getElement(this); }
3408
3415
  };
@@ -3425,6 +3432,13 @@ const EdsDropdown = class {
3425
3432
  if (this.isOpen) {
3426
3433
  // refresh focusables each open in case slot changed
3427
3434
  this.focusableItems = Array.from(((_a = this.panelEl) === null || _a === void 0 ? void 0 : _a.querySelectorAll('a, button, [role="menuitem"]')) || []);
3435
+ // The panel declares role="menu"; slotted links/buttons need
3436
+ // role="menuitem" or screen readers announce an empty menu.
3437
+ this.focusableItems.forEach((item) => {
3438
+ if (!item.hasAttribute('role')) {
3439
+ item.setAttribute('role', 'menuitem');
3440
+ }
3441
+ });
3428
3442
  this.focusIndex = this.focusableItems.length ? 0 : -1;
3429
3443
  this.focusItem();
3430
3444
  }
@@ -3463,7 +3477,6 @@ const EdsDropdown = class {
3463
3477
  const path = (e.composedPath && e.composedPath()) || [];
3464
3478
  if (!path.includes(this.host)) {
3465
3479
  this.closeDropdown();
3466
- this.dropdown.emit({ expanded: false });
3467
3480
  }
3468
3481
  }
3469
3482
  /**
@@ -3471,12 +3484,22 @@ const EdsDropdown = class {
3471
3484
  * @param {KeyboardEvent} event - The keyboard event.
3472
3485
  */
3473
3486
  handleKeyDown(event) {
3487
+ var _a;
3474
3488
  if (this.isOpen) {
3475
3489
  const key = event.key;
3476
3490
  switch (key) {
3477
3491
  case 'Tab':
3492
+ // ARIA menu pattern: Tab does not walk the items — it closes
3493
+ // the menu and lets focus continue to the next element on the
3494
+ // page (no preventDefault on purpose).
3478
3495
  this.closeDropdown();
3479
- this.dropdown.emit({ expanded: false });
3496
+ break;
3497
+ case 'Escape':
3498
+ // Close and hand focus back to the trigger so keyboard users
3499
+ // can back out without committing to a Tab.
3500
+ event.preventDefault();
3501
+ this.closeDropdown();
3502
+ (_a = this.buttonEl) === null || _a === void 0 ? void 0 : _a.focus();
3480
3503
  break;
3481
3504
  case 'ArrowUp':
3482
3505
  event.preventDefault();
@@ -3488,6 +3511,16 @@ const EdsDropdown = class {
3488
3511
  this.focusIndex = (this.focusIndex + 1) % this.focusableItems.length;
3489
3512
  this.focusItem();
3490
3513
  break;
3514
+ case 'Home':
3515
+ event.preventDefault();
3516
+ this.focusIndex = this.focusableItems.length ? 0 : -1;
3517
+ this.focusItem();
3518
+ break;
3519
+ case 'End':
3520
+ event.preventDefault();
3521
+ this.focusIndex = this.focusableItems.length - 1;
3522
+ this.focusItem();
3523
+ break;
3491
3524
  }
3492
3525
  }
3493
3526
  }
@@ -3555,51 +3588,123 @@ const EdsDropdown = class {
3555
3588
  * @returns {JSX.Element} The rendered dropdown component.
3556
3589
  */
3557
3590
  render() {
3558
- return (index.h("div", { key: '52f349afae529afc12461642abf17fcf4870ca6f', class: "z-focus relative", ref: (el) => (this.dropdownContent = el) }, index.h("eds-button", { key: 'ed1f3366306f7e3d708473e14fc8de5723dba03f', label: this.label, "aria-label": this.ariaLabel, icon: this.icon, iconSmall: false, intent: this.intent, onClick: this.handleClick, "aria-expanded": this.isOpen.toString(), "aria-haspopup": "menu", size: "small", pill: true }), index.h("nav", { key: 'fb9a559a97ad866b62d4cb2a0f7f828548e24c75', ref: (el) => (this.panelEl = el), role: "menu", class: {
3591
+ return (index.h("div", { key: '1ce4926a15ac67d653ef03de877e64be83f61b4e', class: "z-focus relative", ref: (el) => (this.dropdownContent = el) }, index.h("eds-button", { key: '8b45fc57c018dd620701b2b9db5403c30f88a6ed', ref: (el) => (this.buttonEl = el), label: this.label, "aria-label": this.ariaLabel, icon: this.icon, iconSmall: false, intent: this.intent, onClick: this.handleClick, "aria-expanded": this.isOpen.toString(), "aria-haspopup": "menu", size: "small", pill: true }), index.h("nav", { key: '35854d55ea595e35513348bf36145794b2c57007', ref: (el) => (this.panelEl = el), role: "menu", class: {
3559
3592
  'shadow-small bg-inverse border-softest z-10 z-on-top absolute top-full mt-4 flex flex-col gap-y-4 border-2 p-8': true,
3560
3593
  'left-4': this.dropdownPos === 'left' && this.dropdownOffset,
3561
3594
  'left-0': this.dropdownPos === 'left' && !this.dropdownOffset,
3562
3595
  'right-4': this.dropdownPos === 'right' && this.dropdownOffset,
3563
3596
  'right-0': this.dropdownPos === 'right' && !this.dropdownOffset
3564
- }, style: { display: this.isOpen ? 'block' : 'none' }, "aria-label": "Dropdown", "aria-hidden": !this.isOpen }, index.h("slot", { key: '6205de74b039cb784bf9b104edfd6f7a03cc5ed1' }))));
3597
+ }, style: { display: this.isOpen ? 'block' : 'none' }, "aria-label": "Dropdown", "aria-hidden": !this.isOpen }, index.h("slot", { key: 'd6b153bb5968fa958be4d96d60cce774a9a0713c' }))));
3565
3598
  }
3566
3599
  get host() { return index.getElement(this); }
3567
3600
  };
3568
3601
  EdsDropdown.style = EdsDropdownStyle0;
3569
3602
 
3570
- const edsFooterCss = "p{margin:0}footer{position:relative}.cursor-pointer{cursor:pointer}.ml-4{margin-left:0.25rem}.container{width:calc(var(--container-width, 100%) - (2 * var(--breakout-container-outer-gutter, var(--container-outer-gutter, var(--outer-gutter, 0)))));margin-right:auto;margin-left:auto}.container>*{--container-outer-gutter:0;--breakout-container-outer-gutter:0}.bg-darker{background-color:var(--grey-light)}.bg-strongest{background-color:var(--brand-black)}.border-softest{border-color:rgba(0, 0, 0, .05)}.border-inverse-softer{border-color:rgba(255, 255, 255, .15)}.border-t-2{border-top-width:2px}.pt-20{padding-top:1.25rem}.pb-28{padding-bottom:1.75rem}.grid-layout{display:grid;grid-template-columns:repeat(var(--container-grid-columns, var(--grid-columns)), 1fr);grid-gap:var(--inner-gutter)}.grid-col-span-12{--container-grid-columns:12;grid-column:span 12 / span 12}.mt-28{margin-top:1.75rem}.gap-y-12{row-gap:0.75rem}.gap-x-12{-moz-column-gap:0.75rem;column-gap:0.75rem}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-20{gap:1.25rem}.effect-focus{outline-width:3px;outline-offset:2px;outline-color:var(--brand-green)}.effect-focus:focus-visible{outline-style:solid}.focus-visible\\:rounded-xs:focus-visible{border-radius:4px}.flex{display:flex}.w-\\[54px\\]{width:54px}.ml-0{margin-left:0rem}.order-last{order:9999}.w-full{width:100%}.h-auto{height:auto}.f-ui-02{font-family:var(--f-ui-02-fontFamily);font-weight:var(--f-ui-02-fontWeight);font-size:var(--f-ui-02-fontSize);line-height:var(--f-ui-02-lineHeight);letter-spacing:var(--f-ui-02-letterSpacing)}.f-ui-04{font-family:var(--f-ui-04-fontFamily);font-weight:var(--f-ui-04-fontWeight);font-size:var(--f-ui-04-fontSize);line-height:var(--f-ui-04-lineHeight);letter-spacing:var(--f-ui-04-letterSpacing)}.text-light{color:var(--grey-light)}.text-default{color:var(--brand-black)}.text-inverse{color:var(--white)}.mt-4{margin-top:0.25rem}.mr-4{margin-right:0.25rem}.gap-12{gap:0.75rem}.inline-block{display:inline-block}.\\!no-underline{text-decoration-line:none !important}.decoration-2{text-decoration-thickness:2px}.underline-offset-4{text-underline-offset:4px}.hover\\:\\!underline:hover{text-decoration-line:underline !important}.ml-auto{margin-left:auto}.pl-12{padding-left:0.75rem}.opacity-0{opacity:0}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.duration-75{transition-duration:75ms}@media (min-width: 750px){.md\\:pt-28{padding-top:1.75rem}}@media (min-width: 900px){.lg\\:grid-col-span-5{--container-grid-columns:5;grid-column:span 5 / span 5}.lg\\:grid-col-span-6{--container-grid-columns:6;grid-column:span 6 / span 6}.lg\\:grid-col-start-7{grid-column-start:7}.lg\\:mt-0{margin-top:0rem}.lg\\:flex-nowrap{flex-wrap:nowrap}.lg\\:order-none{order:0}.lg\\:w-auto{width:auto}}@media (min-width: 1024px){.xl\\:pb-40{padding-bottom:2.5rem}}";
3603
+ const edsFooterCss = ":host{display:block}p{margin:0}ul{list-style:none;padding:0;margin:0}.eds-footer-root{position:relative;padding:4rem 4rem 2rem;border-top:1px solid rgba(0, 0, 0, 0.06);font-family:var(--f-ui-02-fontFamily)}.eds-footer-root.theme-inverse{background-color:var(--brand-black, #000000);color:var(--grey-light, rgba(255, 255, 255, 0.7));border-top-color:rgba(255, 255, 255, 0.06)}.eds-footer-root.theme-default{background-color:var(--white, #ffffff);color:var(--grey-dark, #4b5563);border-top-color:rgba(0, 0, 0, 0.06)}.footer-container{max-width:1400px;margin:0 auto}.footer-grid{display:grid;grid-template-columns:2fr repeat(3, 1fr);gap:4rem;margin-bottom:4rem}.footer-brand-row{display:flex;align-items:center;gap:1rem}.footer-flag-link{display:inline-block;width:54px;flex-shrink:0;border-radius:4px}.footer-flag-link:focus-visible{outline:3px solid var(--brand-green);outline-offset:2px}.footer-flag-svg{height:auto;width:100%;display:block}.footer-funded{font-size:0.875rem;line-height:1.6;max-width:300px}.theme-inverse .footer-funded{color:var(--grey-dark, rgba(255, 255, 255, 0.55))}.theme-default .footer-funded{color:var(--grey-dark, #4b5563)}.footer-copyright{font-size:0.875rem;margin-top:0.75rem}.theme-inverse .footer-copyright{color:var(--grey-dark, rgba(255, 255, 255, 0.55))}.theme-default .footer-copyright{color:var(--grey-dark, #4b5563)}.footer-column-heading{font-size:0.8125rem;font-weight:500;margin:0 0 1.5rem 0}.theme-inverse .footer-column-heading{color:var(--white, #ffffff)}.theme-default .footer-column-heading{color:var(--brand-black, #111827)}.footer-column-list li{margin-bottom:0.75rem}.footer-column-list li:last-child{margin-bottom:0}.footer-link,.footer-text-item{font-size:0.875rem;text-decoration:none;transition:color 0.3s ease}.footer-link{cursor:pointer}.theme-inverse .footer-link,.theme-inverse .footer-text-item{color:var(--grey-dark, rgba(255, 255, 255, 0.55))}.theme-default .footer-link,.theme-default .footer-text-item{color:var(--grey-dark, #4b5563)}.footer-link:hover{color:var(--brand-green)}.footer-link:focus-visible{outline:2px solid var(--brand-green);outline-offset:2px;border-radius:2px}.footer-social{padding-bottom:2rem;margin-bottom:2rem}.theme-inverse .footer-social{border-bottom:1px solid rgba(255, 255, 255, 0.06)}.theme-default .footer-social{border-bottom:1px solid rgba(0, 0, 0, 0.06)}.footer-back-to-top{position:absolute;top:1.5rem;right:2rem;opacity:0;transition:opacity 75ms cubic-bezier(0.4, 0, 0.2, 1)}@media (max-width: 1200px){.footer-grid{grid-template-columns:repeat(2, 1fr);gap:3rem}}@media (max-width: 768px){.eds-footer-root{padding:3rem 2rem 2rem}.footer-grid{grid-template-columns:1fr;gap:2rem;margin-bottom:2rem}.footer-funded{max-width:none}}";
3571
3604
  const EdsFooterStyle0 = edsFooterCss;
3572
3605
 
3606
+ /**
3607
+ * EBRAINS-wide default link columns. Used when a consumer doesn't pass
3608
+ * the `columns` prop. URLs are absolute so the same footer renders
3609
+ * correctly from any app's domain (handbook.ebrains.eu, forms.ebrains.eu,
3610
+ * design.ebrains.eu, …) — the previous eds-docs design used relative
3611
+ * paths which only worked from design.ebrains.eu itself.
3612
+ *
3613
+ * If EBRAINS adds / renames a canonical resource, change it here once
3614
+ * and every consumer's footer updates on the next component release.
3615
+ */
3616
+ const DEFAULT_COLUMNS = [
3617
+ {
3618
+ heading: 'Resources',
3619
+ links: [
3620
+ { label: 'Documentation', href: 'https://design.ebrains.eu/get-started/', external: true },
3621
+ { label: 'Components', href: 'https://design.ebrains.eu/ui-components/', external: true },
3622
+ { label: 'Foundations', href: 'https://design.ebrains.eu/foundations/', external: true },
3623
+ { label: 'Analytics', href: 'https://design.ebrains.eu/analytics/', external: true },
3624
+ ],
3625
+ },
3626
+ {
3627
+ heading: 'Community',
3628
+ links: [
3629
+ { label: 'GitLab', href: 'https://gitlab.ebrains.eu/ri/tech-hub/ebrains-ui-ecosystem/', external: true },
3630
+ { label: 'Storybook', href: 'https://storybook.design.ebrains.eu', external: true },
3631
+ { label: 'Report Issues', href: 'https://gitlab.ebrains.eu/ri/tech-hub/ebrains-ui-ecosystem/-/issues', external: true },
3632
+ { label: 'Contribute', href: 'https://design.ebrains.eu/get-started/contributing/', external: true },
3633
+ ],
3634
+ },
3635
+ {
3636
+ heading: 'Legal',
3637
+ links: [
3638
+ { label: 'MIT License' },
3639
+ { label: 'Cookie Preferences', action: 'cookies' },
3640
+ ],
3641
+ },
3642
+ ];
3573
3643
  const EdsFooter = class {
3574
3644
  constructor(hostRef) {
3575
3645
  index.registerInstance(this, hostRef);
3576
3646
  this.cookies = index.createEvent(this, "cookies", 7);
3577
- /**
3578
- * Scrolls the page smoothly back to the top.
3579
- * Called when the "Back to top" button is clicked.
3580
- * @private
3581
- */
3582
3647
  this.backToTop = () => {
3583
3648
  window.scrollTo({ top: 0, behavior: 'smooth' });
3584
3649
  };
3650
+ this.emitCookies = () => {
3651
+ this.cookies.emit('toggle');
3652
+ };
3585
3653
  this.social = false;
3586
- this.variant = 'default';
3654
+ this.variant = 'inverse';
3587
3655
  this.enableScrollTop = false;
3588
3656
  this.fundedBy = 'EBRAINS is funded by the Horizon Europe Framework Programme.';
3589
3657
  this.rightsReserved = `${new Date().getFullYear()} EBRAINS. All rights reserved.`;
3590
- this.cookiesPreferences = 'Cookies preferences';
3658
+ this.cookiesPreferences = 'Cookie Preferences';
3591
3659
  this.enableCookiesSettings = false;
3592
3660
  this.backToTopAriaLabel = 'Back to Top';
3593
- this.showMatomoNotice = false;
3661
+ this.columns = undefined;
3662
+ this.resolvedColumns = DEFAULT_COLUMNS;
3663
+ }
3664
+ componentWillLoad() {
3665
+ this.resolvedColumns = this.parseColumns(this.columns);
3666
+ }
3667
+ onColumnsChange(value) {
3668
+ this.resolvedColumns = this.parseColumns(value);
3669
+ }
3670
+ /**
3671
+ * Resolve the `columns` prop to a usable array.
3672
+ * - undefined / null → defaults
3673
+ * - JSON-parseable str → parsed array
3674
+ * - already an array → used as-is
3675
+ * - anything else (malformed JSON, wrong shape) → defaults + console warning
3676
+ *
3677
+ * Defensive parsing so a typo in a Hugo template's attribute doesn't
3678
+ * render an empty footer in production. Failure logs a warning but
3679
+ * keeps the footer working with sensible defaults.
3680
+ */
3681
+ parseColumns(value) {
3682
+ if (value === undefined || value === null || value === '')
3683
+ return DEFAULT_COLUMNS;
3684
+ if (Array.isArray(value))
3685
+ return value;
3686
+ if (typeof value === 'string') {
3687
+ try {
3688
+ const parsed = JSON.parse(value);
3689
+ if (Array.isArray(parsed))
3690
+ return parsed;
3691
+ console.warn('eds-footer: `columns` JSON parsed but is not an array; using defaults');
3692
+ return DEFAULT_COLUMNS;
3693
+ }
3694
+ catch (e) {
3695
+ console.warn('eds-footer: failed to parse `columns` JSON, using defaults', e);
3696
+ return DEFAULT_COLUMNS;
3697
+ }
3698
+ }
3699
+ return DEFAULT_COLUMNS;
3594
3700
  }
3595
3701
  componentDidLoad() {
3596
3702
  var _a;
3597
3703
  this.backBtn = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#toTop');
3598
3704
  }
3599
3705
  handleScroll() {
3600
- if (!this.backBtn) {
3706
+ if (!this.backBtn)
3601
3707
  return;
3602
- }
3603
3708
  const shouldShow = window.scrollY > 100 && document.body.scrollHeight > window.innerHeight;
3604
3709
  this.backBtn.style.opacity = shouldShow ? '1' : '0';
3605
3710
  this.backBtn.style.pointerEvents = shouldShow ? 'auto' : 'none';
@@ -3609,26 +3714,40 @@ const EdsFooter = class {
3609
3714
  btn.setAttribute('tabindex', shouldShow ? '0' : '-1');
3610
3715
  }
3611
3716
  }
3612
- toggleCookiesConsent() {
3613
- this.cookies.emit('toggle');
3614
- }
3615
3717
  /**
3616
- * Renders the footer component with optional sections and elements,
3617
- * including social network links, a Horizon Europe funding acknowledgment, and
3618
- * legal links such as "Cookies Preferences" and copyright information.
3718
+ * Render one link inside a column.
3719
+ * - `action: 'cookies'` button-like anchor that fires the cookies event
3720
+ * - `href` present → real anchor (target=_blank when `external`)
3721
+ * - neither → plain text span (e.g. "MIT License")
3619
3722
  */
3723
+ renderLink(link, index$1) {
3724
+ if (link.action === 'cookies') {
3725
+ if (!this.enableCookiesSettings)
3726
+ return null;
3727
+ return (index.h("li", { key: `cookies-${index$1}` }, index.h("a", { href: "javascript:void(0)", class: "footer-link", onClick: this.emitCookies, role: "button" }, this.cookiesPreferences || link.label)));
3728
+ }
3729
+ if (link.href) {
3730
+ const external = link.external === true;
3731
+ return (index.h("li", { key: `${link.label}-${index$1}` }, index.h("a", Object.assign({ class: "footer-link", href: link.href }, (external ? { target: '_blank', rel: 'noopener noreferrer' } : {})), link.label)));
3732
+ }
3733
+ return (index.h("li", { key: `text-${index$1}` }, index.h("span", { class: "footer-text-item" }, link.label)));
3734
+ }
3620
3735
  render() {
3621
3736
  const year = new Date().getFullYear();
3622
3737
  const rights = this.rightsReserved || `${year} EBRAINS. All rights reserved.`;
3623
3738
  const isInverse = this.variant === 'inverse';
3624
- const footerClasses = isInverse ? 'bg-strongest text-inverse' : '';
3625
- const borderClasses = isInverse ? 'border-inverse-softer' : 'border-softest';
3626
- const textClasses = isInverse ? 'text-inverse' : 'text-default';
3627
- return (index.h("footer", { key: 'ffe47afda9981e367f24d2525a5b21e96f4f3d10', class: footerClasses }, this.social ? (index.h("div", { class: `${borderClasses} border-t-2 pt-20 md:pt-28` }, index.h("div", { class: "container pb-20" }, index.h("div", { class: "grid-layout" }, index.h("div", { class: "grid-col-span-12 lg:grid-col-span-5" }, index.h("eds-social-networks", { class: "mt-28", variant: this.variant })))))) : null, index.h("div", { key: '2e884f06ca55ea5837aabfd7d726a79b72365ab3', class: `${borderClasses} ${this.social ? 'border-t-2' : ''} pb-28 pt-20 md:pt-28` }, index.h("div", { key: 'f601602dd39c564ce77d978325cbacaa752bd5f0', class: "container flex items-center gap-20 lg:flex-nowrap" }, index.h("div", { key: '94d6bf12bca8a37560124de2a9114a4566494883', class: "flex items-center gap-x-12" }, index.h("a", { key: '8c9bf0a41cce7e043311b39c6418d2dc3541694f', target: "_blank", rel: "noopener noreferrer", class: "effect-focus focus-visible:rounded-xs flex w-[54px] ml-0", href: "https://research-and-innovation.ec.europa.eu/funding/funding-opportunities/funding-programmes-and-open-calls/horizon-europe_en", "aria-label": "Learn about Horizon Europe funding" }, index.h("svg", { key: '5d0c96911aa0069dd7c0ef6a5690d5ac59dbc737', class: "h-auto w-full", width: "63", height: "50", viewBox: "0 0 640 480", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, index.h("path", { key: 'bab3fd3f37857e99c2a525b7a9553d4c706d247c', d: "M0 0h640v480H0V0z", fill: "#039" }), index.h("path", { key: 'e77d6f1fc21f36083196adcb4f6b7a3e70105b0f', d: "M325.032 93.15l17.513-.398-14.401 9.972 5.789 16.53L320 108.639l-13.933 10.615 5.789-16.531-14.399-9.97 17.51.396L320 76.374l5.032 16.775zm0 284.444l17.513-.398-14.401 9.972 5.789 16.53L320 393.083l-13.933 10.615 5.789-16.531-14.399-9.97 17.51.397L320 360.818l5.032 16.776zm-147.25-158.983l5.029 16.761 17.511-.397-14.4 9.969 5.79 16.533-13.933-10.616-13.932 10.616 5.788-16.531-14.401-9.971 17.511.397 5.028-16.761.004-.015.001.003.001-.003.003.015zm77.885-105.334l17.511-.397-14.401 9.971 5.79 16.531-13.932-10.614-13.933 10.615 5.788-16.531-14.4-9.971h.005l-.003-.001 17.51.397 5.033-16.775 5.032 16.775zm-52.729 52.729l17.511-.398h.002l-14.402 9.971 5.79 16.531-13.933-10.615-13.932 10.615 5.789-16.532-14.4-9.97 17.51.397 5.033-16.776 5.032 16.777zm-5.001 125.803l5.027 16.759 17.513-.397-14.401 9.971 5.79 16.531-.005-.005.003.006-13.932-10.615-13.933 10.615 5.788-16.532-14.398-9.97 17.51.396 5.029-16.759.004-.016v.003l.002-.003.003.016zm51.445 47.71l5.027 16.76 17.513-.397-14.401 9.97 5.791 16.532-.004-.004.002.004-13.933-10.615-13.933 10.615 5.788-16.532-14.398-9.97 17.51.397 5.029-16.76.004-.016v.003l.002-.003.003.016zm217.873-104.147l17.511-.397-14.401 9.969 5.79 16.533-13.934-10.616-13.931 10.616 5.789-16.533-14.399-9.969 17.509.397 5.034-16.776 5.032 16.776zm-63.958-95.997l-5.786-16.522 14.401-9.972-17.511.398-5.033-16.778-5.034 16.777-17.51-.398 14.4 9.972-5.789 16.53 13.932-10.614 13.934 10.614-.004-.007zm38.797 42.122l13.934 10.614-.004-.007-5.787-16.524 14.401-9.971-17.51.399-5.033-16.778-5.033 16.777-17.51-.398h-.001l14.399 9.972-5.787 16.529 13.931-10.613zm5.007 127.071l17.51-.397-14.4 9.971 5.79 16.531-13.933-10.614-13.932 10.615 5.788-16.531-14.401-9.971h.005l-.003-.001 17.51.397 5.033-16.775 5.033 16.775zm-51.446 47.711l17.511-.397-14.4 9.97 5.79 16.532-13.933-10.615-13.933 10.615 5.789-16.531-14.401-9.971h.002l17.51.397 5.033-16.776 5.032 16.776z", fill: "#FC0" })))), index.h("div", { key: '3057a627d8cc6e524f6381f21bb34b549d45021f' }, index.h("div", { key: 'd6397eaa434f15d415bff0c5171b4f71295dabc3', class: `f-ui-02 ${textClasses}` }, index.h("p", { key: 'cc9e370cd5b4238fcd76bc8f1f84c54af2873bab' }, this.fundedBy), index.h("div", { key: '9af9a16cf3cc6fc4223c1b5eac13f96894b92962', class: "mt-4 flex flex-wrap gap-12 lg:flex-nowrap inline-block" }, index.h("span", { key: 'e86c83c7504f60831dc9d4239b3e2b551b2765b6', class: "effect-focus !no-underline decoration-2 underline-offset-4 hover:!underline mr-4" }, "\u00A9 ", rights), this.enableCookiesSettings ? (index.h("eds-link", { label: this.cookiesPreferences, intent: "underline", size: "small", onClick: () => {
3628
- this.toggleCookiesConsent();
3629
- } })) : null))), index.h("div", { key: 'd2dcb8a3a99c5aa368d6d710e125e3a9f8fefd25', class: "ml-auto pl-12" }, this.enableScrollTop ? (index.h("div", { id: "toTop", class: "transition-all transition duration-75 opacity-0" }, index.h("eds-button", { id: "backToTop", "aria-label": this.backToTopAriaLabel, intent: isInverse ? 'ghostInverse' : 'ghost', size: "large", icon: "chevron-up", onClick: this.backToTop, tabindex: "-1" }))) : null)))));
3739
+ // Class hooks driven by variant the CSS file styles each
3740
+ // selector independently rather than relying on prop-based
3741
+ // inline styles, so theme tokens stay overridable from outside
3742
+ // via the host's CSS custom properties.
3743
+ const rootClasses = ['eds-footer-root', isInverse ? 'theme-inverse' : 'theme-default']
3744
+ .join(' ');
3745
+ return (index.h("footer", { key: 'b09063376e3bd78845302473a96884bd473cea09', class: rootClasses }, this.social ? (index.h("div", { class: "footer-social" }, index.h("div", { class: "footer-container" }, index.h("eds-social-networks", { variant: this.variant })))) : null, index.h("div", { key: '3aeb8f496bb4c3c73da907ba9b9fbb72841be213', class: "footer-container" }, index.h("div", { key: 'e7e33ce7dee8079a9aff17d45963dfaff9576121', class: "footer-grid" }, index.h("div", { key: 'e6fc738e086774e114c5ceef1b82fea2e2840990', class: "footer-brand" }, index.h("div", { key: '96f7030269174c122ffe0117897a79b00020dd29', class: "footer-brand-row" }, index.h("a", { key: '5967c33efff435ceee2a45c21cae67749b91b9ba', target: "_blank", rel: "noopener noreferrer", class: "footer-flag-link", href: "https://research-and-innovation.ec.europa.eu/funding/funding-opportunities/funding-programmes-and-open-calls/horizon-europe_en", "aria-label": "Learn about Horizon Europe funding" }, index.h("svg", { key: '3de7debe64d431152e47a4daefb7c9facf7bf951', class: "footer-flag-svg", width: "63", height: "50", viewBox: "0 0 640 480", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, index.h("path", { key: '50e3f0c5ae41e3e7cc5689ddf01a8944a6c5d2eb', d: "M0 0h640v480H0V0z", fill: "#039" }), index.h("path", { key: '2c0f61e6de734d7214accd10cefd3a39e31f36a1', d: "M325.032 93.15l17.513-.398-14.401 9.972 5.789 16.53L320 108.639l-13.933 10.615 5.789-16.531-14.399-9.97 17.51.396L320 76.374l5.032 16.775zm0 284.444l17.513-.398-14.401 9.972 5.789 16.53L320 393.083l-13.933 10.615 5.789-16.531-14.399-9.97 17.51.397L320 360.818l5.032 16.776zm-147.25-158.983l5.029 16.761 17.511-.397-14.4 9.969 5.79 16.533-13.933-10.616-13.932 10.616 5.788-16.531-14.401-9.971 17.511.397 5.028-16.761.004-.015.001.003.001-.003.003.015zm77.885-105.334l17.511-.397-14.401 9.971 5.79 16.531-13.932-10.614-13.933 10.615 5.788-16.531-14.4-9.971h.005l-.003-.001 17.51.397 5.033-16.775 5.032 16.775zm-52.729 52.729l17.511-.398h.002l-14.402 9.971 5.79 16.531-13.933-10.615-13.932 10.615 5.789-16.532-14.4-9.97 17.51.397 5.033-16.776 5.032 16.777zm-5.001 125.803l5.027 16.759 17.513-.397-14.401 9.971 5.79 16.531-.005-.005.003.006-13.932-10.615-13.933 10.615 5.788-16.532-14.398-9.97 17.51.396 5.029-16.759.004-.016v.003l.002-.003.003.016zm51.445 47.71l5.027 16.76 17.513-.397-14.401 9.97 5.791 16.532-.004-.004.002.004-13.933-10.615-13.933 10.615 5.788-16.532-14.398-9.97 17.51.397 5.029-16.76.004-.016v.003l.002-.003.003.016zm217.873-104.147l17.511-.397-14.401 9.969 5.79 16.533-13.934-10.616-13.931 10.616 5.789-16.533-14.399-9.969 17.509.397 5.034-16.776 5.032 16.776zm-63.958-95.997l-5.786-16.522 14.401-9.972-17.511.398-5.033-16.778-5.034 16.777-17.51-.398 14.4 9.972-5.789 16.53 13.932-10.614 13.934 10.614-.004-.007zm38.797 42.122l13.934 10.614-.004-.007-5.787-16.524 14.401-9.971-17.51.399-5.033-16.778-5.033 16.777-17.51-.398h-.001l14.399 9.972-5.787 16.529 13.931-10.613zm5.007 127.071l17.51-.397-14.4 9.971 5.79 16.531-13.933-10.614-13.932 10.615 5.788-16.531-14.401-9.971h.005l-.003-.001 17.51.397 5.033-16.775 5.033 16.775zm-51.446 47.711l17.511-.397-14.4 9.97 5.79 16.532-13.933-10.615-13.933 10.615 5.789-16.531-14.401-9.971h.002l17.51.397 5.033-16.776 5.032 16.776z", fill: "#FC0" }))), index.h("p", { key: '9ff8e10db0e213754bfc73bcce1b3dd36bc62e30', class: "footer-funded" }, this.fundedBy)), index.h("p", { key: 'a24c4fbfe48c4c3c8d076f24da9c84b739a982d8', class: "footer-copyright" }, "\u00A9 ", rights)), this.resolvedColumns.map((col, ci) => (index.h("div", { class: "footer-column", key: `col-${ci}` }, index.h("h4", { class: "footer-column-heading" }, col.heading), index.h("ul", { class: "footer-column-list" }, (col.links || []).map((link, li) => this.renderLink(link, li)))))))), this.enableScrollTop ? (index.h("div", { id: "toTop", class: "footer-back-to-top" }, index.h("eds-button", { id: "backToTop", "aria-label": this.backToTopAriaLabel, intent: isInverse ? 'ghostInverse' : 'ghost', size: "large", icon: "chevron-up", onClick: this.backToTop, tabindex: "-1" }))) : null));
3630
3746
  }
3631
3747
  get el() { return index.getElement(this); }
3748
+ static get watchers() { return {
3749
+ "columns": ["onColumnsChange"]
3750
+ }; }
3632
3751
  };
3633
3752
  EdsFooter.style = EdsFooterStyle0;
3634
3753
 
@@ -3761,7 +3880,8 @@ isFieldVisible) {
3761
3880
  delete errors[field.name];
3762
3881
  return;
3763
3882
  }
3764
- if (field.type !== 'hidden') {
3883
+ // 'content' is a presentational text block — no input, never validated.
3884
+ if (field.type !== 'hidden' && field.type !== 'content') {
3765
3885
  if ((field.type === 'checkbox' || field.type === 'radio') && !field.options) {
3766
3886
  // Single checkbox or radio without multiple options
3767
3887
  const fieldErrors = validateSingleBox(field.name, field.required, formEl);
@@ -3828,6 +3948,46 @@ isFieldVisible) {
3828
3948
  return { errors, hasError };
3829
3949
  }
3830
3950
 
3951
+ /**
3952
+ * safeInlineFormat — the single, audited text→HTML formatter used everywhere a
3953
+ * form renders author-supplied text via innerHTML (form/step description, Text
3954
+ * Blocks, and field messages).
3955
+ *
3956
+ * SECURITY: escape-first, then a tiny whitelisted inline subset. Because all of
3957
+ * &, <, >, " are turned into entities BEFORE any markup is generated, author
3958
+ * text can never inject a tag or attribute — the only HTML produced is the
3959
+ * <strong>, <a> and <br> emitted here. Links are restricted to http/https/mailto
3960
+ * (others fall back to plain text), URLs cannot contain whitespace or a quote,
3961
+ * and external links get rel="noopener noreferrer".
3962
+ *
3963
+ * DO NOT reorder: escaping MUST happen before tag generation, or the guarantee
3964
+ * breaks. Keep this in sync with the JS mirror in
3965
+ * apps/live/forms-app/src/utils/descriptionFormat.ts.
3966
+ *
3967
+ * **bold** → <strong>bold</strong>
3968
+ * [label](url) → <a href="url" …>label</a> (http/https/mailto only)
3969
+ * newline → <br>
3970
+ */
3971
+ function safeInlineFormat(text) {
3972
+ if (!text) {
3973
+ return '';
3974
+ }
3975
+ let s = String(text)
3976
+ .replace(/&/g, '&amp;')
3977
+ .replace(/</g, '&lt;')
3978
+ .replace(/>/g, '&gt;')
3979
+ .replace(/"/g, '&quot;');
3980
+ // bold
3981
+ s = s.replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>');
3982
+ // links — safe schemes only; otherwise drop to the plain label
3983
+ s = s.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g, (_m, label, url) => /^(https?:|mailto:)/i.test(url)
3984
+ ? `<a href="${url}" target="_blank" rel="noopener noreferrer" class="eds-desc-link">${label}</a>`
3985
+ : label);
3986
+ // newlines → line breaks
3987
+ s = s.replace(/\n/g, '<br>');
3988
+ return s;
3989
+ }
3990
+
3831
3991
  /**
3832
3992
  * Validates a field based on its type and returns an array of error messages.
3833
3993
  * @param field - The field configuration object.
@@ -3862,7 +4022,7 @@ function getFormInitData({ initData, parsedFields, currentValues
3862
4022
  return { updatedValues };
3863
4023
  }
3864
4024
 
3865
- const edsFormCss = ".container{width:calc(var(--container-width, 100%) - (2 * var(--breakout-container-outer-gutter, var(--container-outer-gutter, var(--outer-gutter, 0)))));margin-right:auto;margin-left:auto}.container>*{--container-outer-gutter:0;--breakout-container-outer-gutter:0}.flex{display:flex}.flex-col{flex-direction:column}.f-body-01{font-family:var(--f-body-01-fontFamily);font-weight:var(--f-body-01-fontWeight);font-size:var(--f-body-01-fontSize);line-height:var(--f-body-01-lineHeight);letter-spacing:var(--f-body-01-letterSpacing)}.f-body-02{font-family:var(--f-body-02-fontFamily);font-weight:var(--f-body-02-fontWeight);font-size:var(--f-body-02-fontSize);line-height:var(--f-body-02-lineHeight);letter-spacing:var(--f-body-02-letterSpacing)}.f-body-01 b,.f-body-01 strong{font-weight:var(--f-body-01---bold-weight, bold)}.f-body-02 b,.f-body-02 strong{font-weight:var(--f-body-02---bold-weight, bold)}.f-heading-04{font-family:var(--f-heading-04-fontFamily);font-weight:600;font-size:var(--f-heading-04-fontSize);line-height:var(--f-heading-04-lineHeight);letter-spacing:var(--f-heading-04-letterSpacing)}.f-heading-05{font-family:var(--f-heading-05-fontFamily);font-weight:600;font-size:var(--f-heading-05-fontSize);line-height:var(--f-heading-05-lineHeight);letter-spacing:var(--f-heading-05-letterSpacing);overflow:visible}.text-light{color:var(--grey-dark)}.rounded-xs{border-radius:4px}.rounded-sm{border-radius:8px}.border-softer{border-color:rgba(0, 0, 0, .1)}.border-2{border-width:2px}.border-t-2{border-top-width:2px}.mt-20{margin-top:1.25rem}.mt-32{margin-top:2rem}.mt-64{margin-top:4rem}.mb-32{margin-bottom:2rem}.pt-28{padding-top:1.75rem}.pt-32{padding-top:2rem}.pt-64{padding-top:4rem}.pl-8{padding-left:0.5rem}.pl-16{padding-left:1rem}.border-l-2{border-left-width:2px}.gap-y-8{row-gap:0.5rem}.gap-y-16{row-gap:1rem}.gap-y-20{row-gap:1.25rem}.gap-y-24{row-gap:1.5rem}.border-group{border-left:1px solid var(--soft-color, #ddd);padding-left:1rem}.bg-inverse{background-color:var(--white)}.form-brand{box-shadow:0 2px 12px rgba(0, 0, 0, 0.08);border-left:4px solid var(--brand-green);animation:fadeInUp 0.6s ease}@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.effect-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms;transition-timing-function:cubic-bezier(0, 0, 0.2, 1)}.shadow-hover{--tw-shadow:0px 0px 16px rgba(0, 0, 0, 0.2);--tw-shadow-colored:0px 0px 16px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.cursor-pointer{cursor:pointer}.effect-focus-within{outline-width:3px;outline-offset:2px;outline-color:var(--brand-green)}.effect-focus-within:focus-within{outline-style:solid}.relative{position:relative}.rounded-sm{border-radius:8px}.rounded-lg{border-radius:16px}.px-16{padding-left:1rem;padding-right:1rem}.pb-4{padding-bottom:0.25rem}.pb-16{padding-bottom:1rem}.p-32{padding:2rem}.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}.w-full{width:100%}.justify-between{justify-content:space-between}.items-center{align-items:center}@media (min-width: 750px){.md\\:flex-row-reverse{flex-direction:row-reverse}.md\\:justify-between{justify-content:space-between}.md\\:gap-y-0{row-gap:0}.md\\:w-auto{width:auto}.md\\:mt-64{margin-top:4rem}.md\\:pt-64{padding-top:4rem}}";
4025
+ const edsFormCss = ".container{width:calc(var(--container-width, 100%) - (2 * var(--breakout-container-outer-gutter, var(--container-outer-gutter, var(--outer-gutter, 0)))));margin-right:auto;margin-left:auto}.container>*{--container-outer-gutter:0;--breakout-container-outer-gutter:0}.flex{display:flex}.flex-col{flex-direction:column}.f-body-01{font-family:var(--f-body-01-fontFamily);font-weight:var(--f-body-01-fontWeight);font-size:var(--f-body-01-fontSize);line-height:var(--f-body-01-lineHeight);letter-spacing:var(--f-body-01-letterSpacing)}.f-body-02{font-family:var(--f-body-02-fontFamily);font-weight:var(--f-body-02-fontWeight);font-size:var(--f-body-02-fontSize);line-height:var(--f-body-02-lineHeight);letter-spacing:var(--f-body-02-letterSpacing)}.f-body-01 b,.f-body-01 strong{font-weight:var(--f-body-01---bold-weight, bold)}.f-body-02 b,.f-body-02 strong{font-weight:var(--f-body-02---bold-weight, bold)}.f-heading-04{font-family:var(--f-heading-04-fontFamily);font-weight:600;font-size:var(--f-heading-04-fontSize);line-height:var(--f-heading-04-lineHeight);letter-spacing:var(--f-heading-04-letterSpacing)}.f-heading-05{font-family:var(--f-heading-05-fontFamily);font-weight:600;font-size:var(--f-heading-05-fontSize);line-height:var(--f-heading-05-lineHeight);letter-spacing:var(--f-heading-05-letterSpacing);overflow:visible}.text-light{color:var(--grey-dark)}.rounded-xs{border-radius:4px}.rounded-sm{border-radius:8px}.border-softer{border-color:rgba(0, 0, 0, .1)}.border-2{border-width:2px}.border-t-2{border-top-width:2px}.mt-20{margin-top:1.25rem}.mt-32{margin-top:2rem}.mt-64{margin-top:4rem}.mb-32{margin-bottom:2rem}.pt-28{padding-top:1.75rem}.pt-32{padding-top:2rem}.pt-64{padding-top:4rem}.pl-8{padding-left:0.5rem}.pl-16{padding-left:1rem}.border-l-2{border-left-width:2px}.gap-y-8{row-gap:0.5rem}.gap-y-16{row-gap:1rem}.gap-y-20{row-gap:1.25rem}.gap-y-24{row-gap:1.5rem}.border-group{border-left:1px solid var(--soft-color, #ddd);padding-left:1rem}.bg-inverse{background-color:var(--white)}.form-brand{box-shadow:0 2px 12px rgba(0, 0, 0, 0.08);border-left:4px solid var(--brand-green);animation:fadeInUp 0.6s ease}@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.effect-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms;transition-timing-function:cubic-bezier(0, 0, 0.2, 1)}.shadow-hover{--tw-shadow:0px 0px 16px rgba(0, 0, 0, 0.2);--tw-shadow-colored:0px 0px 16px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.cursor-pointer{cursor:pointer}.effect-focus-within{outline-width:3px;outline-offset:2px;outline-color:var(--brand-green)}.effect-focus-within:focus-within{outline-style:solid}.relative{position:relative}.rounded-sm{border-radius:8px}.rounded-lg{border-radius:16px}.px-16{padding-left:1rem;padding-right:1rem}.pb-4{padding-bottom:0.25rem}.pb-16{padding-bottom:1rem}.p-32{padding:2rem}.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}.w-full{width:100%}.justify-between{justify-content:space-between}.items-center{align-items:center}@media (min-width: 750px){.md\\:flex-row-reverse{flex-direction:row-reverse}.md\\:justify-between{justify-content:space-between}.md\\:gap-y-0{row-gap:0}.md\\:w-auto{width:auto}.md\\:mt-64{margin-top:4rem}.md\\:pt-64{padding-top:4rem}}.eds-desc-link{position:relative;display:inline-block;color:var(--brand-black);text-decoration:none}.eds-desc-link::after{content:'';position:absolute;bottom:-2px;left:0;width:0;height:2px;background-color:var(--brand-green);transition:width 0.3s ease}.eds-desc-link:hover::after{width:100%}.eds-desc-link:focus-visible::after{width:0}.eds-content-block{line-height:1.5;color:var(--brand-black, #07140d)}.eds-content-block strong{font-weight:600}.eds-content-block .eds-desc-link{font-weight:600}";
3866
4026
  const EdsFormStyle0 = edsFormCss;
3867
4027
 
3868
4028
  const EdsForm = class {
@@ -4050,7 +4210,20 @@ const EdsForm = class {
4050
4210
  if (this.setFormUrl && typeof window !== 'undefined') {
4051
4211
  formData.set('form_url', window.location.href);
4052
4212
  }
4213
+ // Group fields by name so we can drop values for fields hidden by a condition.
4214
+ // A name may be reused across mutually-exclusive conditional variants (e.g. a
4215
+ // `web_app_url` shown for service_type=web_app AND another for =platform), so a
4216
+ // value is dropped ONLY when EVERY field with that name is hidden — if any
4217
+ // variant is visible, its value is kept.
4218
+ const fieldsByName = {};
4219
+ this.parsedFields.forEach((f) => {
4220
+ (fieldsByName[f.name] = fieldsByName[f.name] || []).push(f);
4221
+ });
4053
4222
  Object.keys(this.values).forEach((key) => {
4223
+ const fields = fieldsByName[key];
4224
+ if (fields && fields.length && !fields.some((f) => this.isFieldVisible(f))) {
4225
+ return; // all fields with this name are conditionally hidden — skip
4226
+ }
4054
4227
  const value = this.values[key];
4055
4228
  // Handle File arrays (from file inputs)
4056
4229
  if (Array.isArray(value)) {
@@ -4345,29 +4518,53 @@ const EdsForm = class {
4345
4518
  return map;
4346
4519
  }
4347
4520
  renderField(field) {
4348
- var _a, _b, _c, _d;
4521
+ var _a, _b, _c, _d, _e, _f, _g;
4349
4522
  if (!this.isFieldVisible(field)) {
4350
4523
  return null;
4351
4524
  }
4525
+ // 0) Presentational "Text Block" — static formatted text, NOT an input.
4526
+ // It has no value, is never added to the submission (makeFormData only
4527
+ // iterates this.values) and is never validated (see formValidators). The
4528
+ // text runs through formatDescription, which escapes HTML first, so author
4529
+ // content can never inject markup — only the **bold**/[link]/newline subset.
4530
+ if (field.type === 'content') {
4531
+ const raw = ((_b = (_a = field.content) !== null && _a !== void 0 ? _a : field.label) !== null && _b !== void 0 ? _b : '');
4532
+ return (index.h("div", { class: "eds-content-block f-body-02 text-default", key: field.name, innerHTML: this.formatDescription(raw) }));
4533
+ }
4352
4534
  // 1) Handle rating
4353
4535
  if (field.type === 'rating') {
4354
4536
  // pull the current value (or zero)
4355
4537
  const val = this.values[field.name] || 0;
4356
- return (index.h("div", { class: "form-group rating-field", key: field.name }, index.h("div", { class: "flex justify-between" }, field && (index.h("eds-input-label", { name: `rating-${field.name}`, label: field.label, disabled: field.disabled, required: field.required }))), index.h("eds-rating", { id: `rating-${field.name}`, "rating-type": field.ratingType, "rating-count": field.ratingCount, "selected-rating": val, onRating: (e) => this.handleRating(e, field) }), index.h("div", { class: "mt-6" }, index.h("eds-input-footer", { id: `${field.name}-footer`, name: field.name, message: field.message, "error-message": (_a = this.errors[field.name]) === null || _a === void 0 ? void 0 : _a.join('<br/>'), error: !!this.errors[field.name], link: field.link }))));
4538
+ return (index.h("div", { class: "form-group rating-field", key: field.name }, index.h("div", { class: "flex justify-between" }, field && (index.h("eds-input-label", { name: `rating-${field.name}`, label: field.label, disabled: field.disabled, required: field.required }))), index.h("eds-rating", { id: `rating-${field.name}`, "rating-type": field.ratingType, "rating-count": field.ratingCount, "selected-rating": val, onRating: (e) => this.handleRating(e, field) }), index.h("div", { class: "mt-6" }, index.h("eds-input-footer", { id: `${field.name}-footer`, name: field.name, message: field.message, "error-message": (_c = this.errors[field.name]) === null || _c === void 0 ? void 0 : _c.join('<br/>'), error: !!this.errors[field.name], link: field.link }))));
4357
4539
  }
4358
4540
  else if (field.type === 'nps') {
4359
4541
  // pull the current value (or null)
4360
4542
  const val = this.values[field.name] !== undefined ? this.values[field.name] : null;
4361
- return (index.h("div", { class: "form-group nps-field", key: field.name }, index.h("div", { class: "flex justify-between" }, field && (index.h("eds-input-label", { name: `nps-${field.name}`, label: field.question, disabled: field.disabled, required: field.required }))), index.h("eds-nps", { id: `nps-${field.name}`, "right-label": field.rightLabel, "left-label": field.leftLabel, "selected-value": val, onNps: (e) => this.handleNPS(e, field) }), index.h("div", { class: "mt-6" }, index.h("eds-input-footer", { id: `${field.name}-footer`, name: field.name, "error-message": (_b = this.errors[field.name]) === null || _b === void 0 ? void 0 : _b.join('<br/>'), error: !!this.errors[field.name] }))));
4543
+ return (index.h("div", { class: "form-group nps-field", key: field.name }, index.h("div", { class: "flex justify-between" }, field && (index.h("eds-input-label", { name: `nps-${field.name}`, label: field.question, disabled: field.disabled, required: field.required }))), index.h("eds-nps", { id: `nps-${field.name}`, "right-label": field.rightLabel, "left-label": field.leftLabel, "selected-value": val, onNps: (e) => this.handleNPS(e, field) }), index.h("div", { class: "mt-6" }, index.h("eds-input-footer", { id: `${field.name}-footer`, name: field.name, "error-message": (_d = this.errors[field.name]) === null || _d === void 0 ? void 0 : _d.join('<br/>'), error: !!this.errors[field.name] }))));
4544
+ }
4545
+ else if (field.type === 'search-select') {
4546
+ return (index.h("eds-search-select", { key: field.name, name: field.name, label: field.label, source: field.source, options: field.options, multiple: !!field.multiple, "api-base": field.apiBase || '/api/v1', placeholder: field.placeholder, required: field.required, disabled: field.disabled, hint: field.hint, message: field.message, error: !!this.errors[field.name], "error-message": (_e = this.errors[field.name]) === null || _e === void 0 ? void 0 : _e.join('<br/>'), value: this.values[field.name], onEdsinput: (e) => this.handleInput(e, field), onEdschange: (e) => this.handleChange(e, field) }));
4362
4547
  }
4363
4548
  else if (field.type === 'kg-web-service') {
4364
- return (index.h("eds-kg-web-services-select", { key: field.name, name: field.name, label: field.label, "api-endpoint": field.apiEndpoint || '/api/v1/kg/web-services/cached', placeholder: field.placeholder, required: field.required, disabled: field.disabled, hint: field.hint, message: field.message, error: !!this.errors[field.name], "error-message": (_c = this.errors[field.name]) === null || _c === void 0 ? void 0 : _c.join('<br/>'), value: this.values[field.name], size: field.size || 500, onEdsinput: (e) => this.handleInput(e, field), onEdschange: (e) => this.handleChange(e, field) }));
4549
+ return (index.h("eds-kg-web-services-select", { key: field.name, name: field.name, label: field.label, "api-endpoint": field.apiEndpoint || '/api/v1/kg/web-services/cached', placeholder: field.placeholder, required: field.required, disabled: field.disabled, hint: field.hint, message: field.message, error: !!this.errors[field.name], "error-message": (_f = this.errors[field.name]) === null || _f === void 0 ? void 0 : _f.join('<br/>'), value: this.values[field.name], size: field.size || 500, onEdsinput: (e) => this.handleInput(e, field), onEdschange: (e) => this.handleChange(e, field) }));
4365
4550
  }
4366
- return (index.h("eds-input-field", { key: field.name, name: field.name, label: field.label, placeholder: field.placeholder, type: field.type, value: this.values[field.name], required: field.required, hint: field.hint, message: field.message, link: field.link, error: !!this.errors[field.name], errorMessage: (_d = this.errors[field.name]) === null || _d === void 0 ? void 0 : _d.join('<br/>'), options: field.options, onInput: (e) => this.handleInput(e, field), onChangeNative: (e) => this.handleChange(e, field) }));
4551
+ return (index.h("eds-input-field", { key: field.name, name: field.name, label: field.label, placeholder: field.placeholder, type: field.type, value: this.values[field.name], required: field.required, hint: field.hint, message: field.message, link: field.link, error: !!this.errors[field.name], errorMessage: (_g = this.errors[field.name]) === null || _g === void 0 ? void 0 : _g.join('<br/>'), options: field.options, onInput: (e) => this.handleInput(e, field), onChangeNative: (e) => this.handleChange(e, field) }));
4367
4552
  }
4368
4553
  async getData() {
4369
4554
  return this.makeFormData();
4370
4555
  }
4556
+ /**
4557
+ * Render the form/step description with a small, safe subset of inline
4558
+ * formatting so authors can add links and emphasis:
4559
+ * **bold** → <strong>
4560
+ * [label](url) → <a> (only http/https/mailto; others render as text)
4561
+ * blank line / \n → paragraph / line break
4562
+ * HTML is escaped FIRST, so author text can never inject markup — only the
4563
+ * whitelisted patterns above produce tags.
4564
+ */
4565
+ formatDescription(text) {
4566
+ return safeInlineFormat(text);
4567
+ }
4371
4568
  render() {
4372
4569
  const hiddenFields = this.parsedFields.filter((field) => field.type === 'hidden');
4373
4570
  //const otherFields = this.parsedFields.filter((field) => field.type !== 'hidden');
@@ -4383,9 +4580,9 @@ const EdsForm = class {
4383
4580
  else if (this.formStyle === 'brand') {
4384
4581
  styleClasses = 'bg-inverse form-brand relative rounded-xs p-32';
4385
4582
  }
4386
- return (index.h("form", { key: '5e58460e52950974cdf11001123f9ffb23dc659e', class: styleClasses, ref: (el) => (this.formEl = el), autocomplete: "on", onSubmit: this.handleSubmit }, index.h("div", { key: 'ff3a33e3a8d311c86712daa68c80aac767d82a9b', class: "flex flex-col gap-y-20 overflow-visible" }, this.title && (index.h("span", { key: 'b1f363c03074f944a8f60387a40cef6fa791b188', role: "heading", class: "f-heading-05 pb-4 block" }, this.title)), this.description && index.h("span", { key: '7a9b5ea5451cf59ac47ec81dd1a44c7c9e6326a3', class: "f-body-02 text-light" }, this.description), index.h("slot", { key: '1e50a245fa37b73149a22308fda4039051d4639c' })), hiddenFields.map((field, index$1) => (index.h("eds-input", { key: index$1, type: "hidden", name: field.name, value: field.value }))), this.parsedGroups
4583
+ return (index.h("form", { key: '5717a276eb4bcb1b40bb6c3a3d68e2372ccf0b37', class: styleClasses, ref: (el) => (this.formEl = el), autocomplete: "on", onSubmit: this.handleSubmit }, index.h("div", { key: '8e9fec59b6cafccabbb67381a12541f12201cc48', class: "flex flex-col gap-y-20 overflow-visible" }, this.title && (index.h("span", { key: 'f47c68db954de63773257f9c898141be27278a00', role: "heading", class: "f-heading-05 pb-4 block" }, this.title)), this.description && index.h("span", { key: '4287bb5f9c31cf5d3953a032de4a8c269e1feb7e', class: "f-body-02 text-light", innerHTML: this.formatDescription(this.description) }), index.h("slot", { key: 'e9e52696eab6477354ac5ee6cbe08399483b1b37' })), hiddenFields.map((field, index$1) => (index.h("eds-input", { key: index$1, type: "hidden", name: field.name, value: field.value }))), this.parsedGroups
4387
4584
  .filter((g) => Array.isArray(buckets[g.id]) && buckets[g.id].length > 0)
4388
- .map((g) => (index.h("div", { class: "mt-32", key: g.id }, index.h("span", { class: "f-body-02" }, index.h("b", null, g.title)), index.h("div", { class: "border-group mt-32 mb-32 flex flex-col gap-y-24" }, buckets[g.id].map((f) => this.renderField(f)))))), index.h("div", { key: '6cd08f342c0f9004d10628827720cb641339fcd5', class: "flex flex-col mt-32 gap-y-24" }, buckets['__ungrouped'].map((f) => this.renderField(f))), (this.formBtn || this.clearBtn) && (index.h("div", { key: 'e8d37bedbd49c9fc94cbd2e2a887448f3764b8f9', class: "mt-32 md:mt-64 flex flex-col items-center md:flex-row-reverse md:justify-between gap-y-16 md:gap-y-0" }, this.formBtn && (index.h("eds-button", { key: 'ec878c5edaa87cf9bff0424b92e5c82605856e67', intent: this.buttonIntent, pill: true, label: this.formBtnLabel, disabled: this.isSubmitting, loading: this.isSubmitting, icon: 'arrow-right', size: "large", onClick: () => this.handleSubmit() })), this.clearBtn && (index.h("eds-button", { key: '1158dc2af47f9f523ccd2ee1435a4147fc0a646c', intent: "neutral", pill: true, size: "large", label: this.clearBtnLabel, disabled: this.isSubmitting || !this.values || Object.keys(this.values).length === 0, onClick: (e) => this.handleClear(e) }))))));
4585
+ .map((g) => (index.h("div", { class: "mt-32", key: g.id }, index.h("span", { class: "f-body-02" }, index.h("b", null, g.title)), index.h("div", { class: "border-group mt-32 mb-32 flex flex-col gap-y-24" }, buckets[g.id].map((f) => this.renderField(f)))))), index.h("div", { key: '22d248217ea85d68e2be652ddcbfd13ed4775934', class: "flex flex-col mt-32 gap-y-24" }, buckets['__ungrouped'].map((f) => this.renderField(f))), (this.formBtn || this.clearBtn) && (index.h("div", { key: '101f9e275d68f59b762938ff3f7d7102660b80f0', class: "mt-32 md:mt-64 flex flex-col items-center md:flex-row-reverse md:justify-between gap-y-16 md:gap-y-0" }, this.formBtn && (index.h("eds-button", { key: '02d427d951c715634605b6977f61cee67abaa8b0', intent: this.buttonIntent, pill: true, label: this.formBtnLabel, disabled: this.isSubmitting, loading: this.isSubmitting, icon: 'arrow-right', size: "large", onClick: () => this.handleSubmit() })), this.clearBtn && (index.h("eds-button", { key: 'abf330715df3acf2a4bdc8d4f322fc13c70c267f', intent: "neutral", pill: true, size: "large", label: this.clearBtnLabel, disabled: this.isSubmitting || !this.values || Object.keys(this.values).length === 0, onClick: (e) => this.handleClear(e) }))))));
4389
4586
  }
4390
4587
  get el() { return index.getElement(this); }
4391
4588
  static get watchers() { return {
@@ -4478,7 +4675,7 @@ const EdsFullscreenMenu = class {
4478
4675
  };
4479
4676
  EdsFullscreenMenu.style = EdsFullscreenMenuStyle0;
4480
4677
 
4481
- const edsGlobalSearchCss = ":host{display:block;width:100%}p{margin:0}ol,ul,menu{list-style:none;margin:0;padding:0}.search-wrapper{position:relative;width:100%}.search-dropdown{position:absolute;top:calc(100% + 8px);left:0;right:0;background:white;border:1px solid #e0e0e0;border-radius:12px;box-shadow:0 8px 24px rgba(0, 0, 0, 0.12),\n 0 2px 8px rgba(0, 0, 0, 0.08),\n 0 0 0 1px rgba(0, 255, 157, 0.08);max-height:500px;overflow:hidden;z-index:9999;display:flex;flex-direction:column;animation:dropdownFadeIn 0.25s cubic-bezier(0.4, 0, 0.2, 1)}.dropdown-state{display:flex;align-items:center;justify-content:center;gap:8px;padding:24px;color:#616161;font-size:14px}.dropdown-results{list-style:none;margin:0;overflow-y:auto;overflow-x:hidden;max-height:440px}.result-item{padding:7px 7px;cursor:pointer;border-left:4px solid transparent;margin-bottom:2px;transition:all 0.25s cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden;word-wrap:break-word;word-break:break-word}.result-item:hover,.result-item--selected{background:linear-gradient(\n 90deg,\n rgba(0, 255, 157, 0.08) 0%,\n rgba(0, 255, 157, 0.03) 100%\n );border-left-color:var(--green-600);box-shadow:0 2px 8px rgba(0, 255, 157, 0.15)}.result-item:hover .result-title,.result-item--selected .result-title{color:var(--green-700)}.result-title{color:var(--black);transition:color 0.2s ease}.result-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.result-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.result-badge{display:inline-block;padding:3px 8px;background:rgba(0, 255, 157, 0.12);color:var(--green-800);border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;transition:all 0.2s ease}.result-item:hover .result-badge,.result-item--selected .result-badge{background:rgba(0, 255, 157, 0.2);color:var(--green-900)}.result-url{font-size:12px;color:var(--grey-600)}.external-icon{display:inline-block;width:14px;height:14px;margin-left:4px;color:var(--green-600)}.result-snippet{font-size:13px;color:#616161;line-height:1.5;margin:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;transition:color 0.2s ease}.result-item:hover .result-snippet,.result-item--selected .result-snippet{color:#424242}.dropdown-footer{border-top:1px solid rgba(0, 255, 157, 0.15);padding:10px 16px;background:linear-gradient(\n 180deg,\n rgba(0, 255, 157, 0.02) 0%,\n rgba(0, 255, 157, 0.05) 100%\n );flex-shrink:0}.footer-hint{font-size:11px;color:#616161;display:flex;align-items:center;gap:6px;flex-wrap:wrap}kbd{display:inline-block;padding:3px 7px;font-size:11px;font-family:monospace;line-height:1.2;font-weight:500;color:var(--green-700);background:rgba(0, 255, 157, 0.1);border:1px solid rgba(0, 200, 123, 0.3);border-radius:4px;box-shadow:0 2px 0 rgba(0, 255, 157, 0.15),\n inset 0 1px 0 rgba(255, 255, 255, 0.5)}.dropdown-results::-webkit-scrollbar{width:8px}.dropdown-results::-webkit-scrollbar-track{background:rgba(0, 255, 157, 0.05);border-radius:4px}.dropdown-results::-webkit-scrollbar-thumb{background:#33FFB8;border-radius:4px}.dropdown-results::-webkit-scrollbar-thumb:hover{background:#00FF9D}.flex{display:flex}.inline-flex{display:inline-flex}.text-center{text-align:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.text-error{color:var(--red-700)}.text-lighter{color:var(--grey-600)}.text-lightest{color:var(--grey-500)}.ml-4{margin-left:0.25rem}.ml-8{margin-left:0.5rem}.ml-16{margin-left:1rem}.p-16{padding:1rem}.p-64{padding:4rem}.f-body-02{font-family:var(--f-body-02-fontFamily);font-weight:var(--f-body-02-fontWeight);font-size:var(--f-body-02-fontSize);line-height:var(--f-body-02-lineHeight);letter-spacing:var(--f-body-02-letterSpacing)}.f-ui-03{font-family:var(--f-ui-03-fontFamily);font-weight:var(--f-ui-03-fontWeight);font-size:var(--f-ui-03-fontSize);line-height:var(--f-ui-03-lineHeight);letter-spacing:var(--f-ui-03-letterSpacing)}.f-ui-03-light{font-family:var(--f-ui-03-light-fontFamily);font-weight:var(--f-ui-03-light-fontWeight);font-size:var(--f-ui-03-light-fontSize);line-height:var(--f-ui-03-light-lineHeight);letter-spacing:var(--f-ui-03-light-letterSpacing)}.f-ui-04{font-family:var(--f-ui-04-fontFamily);font-weight:var(--f-ui-04-fontWeight);font-size:var(--f-ui-04-fontSize);line-height:var(--f-ui-04-lineHeight);letter-spacing:var(--f-ui-04-letterSpacing)}";
4678
+ const edsGlobalSearchCss = ":host{display:block;width:100%}p{margin:0}ol,ul,menu{list-style:none;margin:0;padding:0}.search-wrapper{position:relative;width:100%}.search-pill{display:flex;align-items:center;gap:12px;height:48px;padding:0 18px;border-radius:999px;font-family:var(--plex-sans, 'IBM Plex Sans', system-ui, sans-serif);font-size:15px;cursor:text;transition:background 120ms ease, box-shadow 120ms ease, color 120ms ease}.search-pill .search-icon{flex-shrink:0}.search-pill .search-input{flex:1;min-width:0;border:0;background:transparent;outline:none;font:inherit;color:inherit;-webkit-appearance:none;appearance:none}.search-pill .search-input::-webkit-search-cancel-button{-webkit-appearance:none}.search-pill .search-kbd{flex-shrink:0;font-family:'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, monospace;font-size:11px;font-weight:500;line-height:1;padding:3px 6px;border-radius:4px;box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.05);letter-spacing:0.02em}.search-pill:focus-within .search-kbd{display:none}.search-pill .search-clear{flex-shrink:0;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;padding:0;margin:0;border:0;border-radius:999px;background:transparent;color:inherit;cursor:pointer;opacity:0.7;transition:opacity 120ms ease, background 120ms ease}.search-pill .search-clear:hover{opacity:1;background:rgba(0, 0, 0, 0.06)}.search-pill .search-clear:focus-visible{outline:none;box-shadow:0 0 0 2px var(--brand-green, #00C87B);opacity:1}.search-pill--black .search-clear:hover{background:rgba(255, 255, 255, 0.10)}.search-pill--gray{background:var(--grey-light, #ECECEC);color:var(--grey-dark, #7A7B7A);border:0}.search-pill--gray:hover{background:#E0E0E0}.search-pill--gray .search-input{color:var(--brand-black, #07140D)}.search-pill--gray .search-input::placeholder{color:var(--grey-dark, #7A7B7A)}.search-pill--gray .search-kbd{color:var(--grey-dark, #7A7B7A);background:var(--white, #FFFFFF);border:1px solid #DCDCDC}.search-pill--gray:focus-within{background:var(--white, #FFFFFF);box-shadow:0 0 0 2px var(--brand-green, #00C87B)}.search-pill--white{background:var(--white, #FFFFFF);color:var(--grey-dark, #7A7B7A);border:1px solid var(--grey-light, #ECECEC)}.search-pill--white:hover{background:#FAFAFA}.search-pill--white .search-input{color:var(--brand-black, #07140D)}.search-pill--white .search-input::placeholder{color:var(--grey-dark, #7A7B7A)}.search-pill--white .search-kbd{color:var(--grey-dark, #7A7B7A);background:var(--grey-light, #ECECEC);border:1px solid #DCDCDC}.search-pill--white:focus-within{background:var(--white, #FFFFFF);box-shadow:0 0 0 2px var(--brand-green, #00C87B)}.search-pill--black{background:var(--brand-black, #07140D);color:rgba(255, 255, 255, 0.7);border:1px solid rgba(255, 255, 255, 0.12)}.search-pill--black:hover{background:#11221A}.search-pill--black .search-input{color:var(--white, #FFFFFF)}.search-pill--black .search-input::placeholder{color:rgba(255, 255, 255, 0.55)}.search-pill--black .search-kbd{color:rgba(255, 255, 255, 0.75);background:rgba(255, 255, 255, 0.08);border:1px solid rgba(255, 255, 255, 0.15)}.search-pill--black:focus-within{background:var(--brand-black, #07140D);box-shadow:0 0 0 2px var(--brand-green, #00C87B)}.search-dropdown{position:absolute;top:calc(100% + 8px);left:0;right:0;background:white;border:1px solid #e0e0e0;border-radius:12px;box-shadow:0 8px 24px rgba(0, 0, 0, 0.12),\n 0 2px 8px rgba(0, 0, 0, 0.08),\n 0 0 0 1px rgba(0, 255, 157, 0.08);max-height:500px;overflow:hidden;z-index:9999;display:flex;flex-direction:column;animation:dropdownFadeIn 0.25s cubic-bezier(0.4, 0, 0.2, 1)}.dropdown-state{display:flex;align-items:center;justify-content:center;gap:8px;padding:24px;color:#616161;font-size:14px}.dropdown-results{list-style:none;margin:0;overflow-y:auto;overflow-x:hidden;max-height:440px}.result-item{padding:7px 7px;cursor:pointer;border-left:4px solid transparent;margin-bottom:2px;transition:all 0.25s cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden;word-wrap:break-word;word-break:break-word}.result-item:hover,.result-item--selected{background:linear-gradient(\n 90deg,\n rgba(0, 255, 157, 0.08) 0%,\n rgba(0, 255, 157, 0.03) 100%\n );border-left-color:var(--green-600);box-shadow:0 2px 8px rgba(0, 255, 157, 0.15)}.result-item:hover .result-title,.result-item--selected .result-title{color:var(--green-700)}.result-title{color:var(--black);transition:color 0.2s ease}.result-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.result-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.result-badge{display:inline-block;padding:3px 8px;background:rgba(0, 255, 157, 0.12);color:var(--green-800);border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;transition:all 0.2s ease}.result-badge--parent{background:rgba(120, 0, 255, 0.08);color:var(--purple-800, #6b21a8)}.result-badge--lr{background:rgba(0, 120, 255, 0.1);color:var(--blue-800, #1565c0)}.result-item:hover .result-badge,.result-item--selected .result-badge{background:rgba(0, 255, 157, 0.2);color:var(--green-900)}.result-item:hover .result-badge--parent,.result-item--selected .result-badge--parent{background:rgba(120, 0, 255, 0.15);color:var(--purple-900, #581c87)}.result-item:hover .result-badge--lr,.result-item--selected .result-badge--lr{background:rgba(0, 120, 255, 0.18);color:var(--blue-900, #0d47a1)}.result-url{font-size:12px;color:var(--grey-600)}.external-icon{display:inline-block;width:14px;height:14px;margin-left:4px;color:var(--green-600)}.result-snippet{font-size:13px;color:#616161;line-height:1.5;margin:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;transition:color 0.2s ease}.result-item:hover .result-snippet,.result-item--selected .result-snippet{color:#424242}.dropdown-footer{border-top:1px solid rgba(0, 255, 157, 0.15);padding:10px 16px;background:linear-gradient(\n 180deg,\n rgba(0, 255, 157, 0.02) 0%,\n rgba(0, 255, 157, 0.05) 100%\n );flex-shrink:0}.footer-hint{font-size:11px;color:#616161;display:flex;align-items:center;gap:6px;flex-wrap:wrap}kbd{display:inline-block;padding:3px 7px;font-size:11px;font-family:monospace;line-height:1.2;font-weight:500;color:var(--green-700);background:rgba(0, 255, 157, 0.1);border:1px solid rgba(0, 200, 123, 0.3);border-radius:4px;box-shadow:0 2px 0 rgba(0, 255, 157, 0.15),\n inset 0 1px 0 rgba(255, 255, 255, 0.5)}.dropdown-results::-webkit-scrollbar{width:8px}.dropdown-results::-webkit-scrollbar-track{background:rgba(0, 255, 157, 0.05);border-radius:4px}.dropdown-results::-webkit-scrollbar-thumb{background:#33FFB8;border-radius:4px}.dropdown-results::-webkit-scrollbar-thumb:hover{background:#00FF9D}.flex{display:flex}.inline-flex{display:inline-flex}.text-center{text-align:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.text-error{color:var(--red-700)}.text-lighter{color:var(--grey-600)}.text-lightest{color:var(--grey-500)}.ml-4{margin-left:0.25rem}.ml-8{margin-left:0.5rem}.ml-16{margin-left:1rem}.p-16{padding:1rem}.p-64{padding:4rem}.f-body-02{font-family:var(--f-body-02-fontFamily);font-weight:var(--f-body-02-fontWeight);font-size:var(--f-body-02-fontSize);line-height:var(--f-body-02-lineHeight);letter-spacing:var(--f-body-02-letterSpacing)}.f-ui-03{font-family:var(--f-ui-03-fontFamily);font-weight:var(--f-ui-03-fontWeight);font-size:var(--f-ui-03-fontSize);line-height:var(--f-ui-03-lineHeight);letter-spacing:var(--f-ui-03-letterSpacing)}.f-ui-03-light{font-family:var(--f-ui-03-light-fontFamily);font-weight:var(--f-ui-03-light-fontWeight);font-size:var(--f-ui-03-light-fontSize);line-height:var(--f-ui-03-light-lineHeight);letter-spacing:var(--f-ui-03-light-letterSpacing)}.f-ui-04{font-family:var(--f-ui-04-fontFamily);font-weight:var(--f-ui-04-fontWeight);font-size:var(--f-ui-04-fontSize);line-height:var(--f-ui-04-lineHeight);letter-spacing:var(--f-ui-04-letterSpacing)}";
4482
4679
  const EdsGlobalSearchStyle0 = edsGlobalSearchCss;
4483
4680
 
4484
4681
  const EdsGlobalSearch = class {
@@ -4486,6 +4683,23 @@ const EdsGlobalSearch = class {
4486
4683
  index.registerInstance(this, hostRef);
4487
4684
  this.resultSelected = index.createEvent(this, "resultSelected", 7);
4488
4685
  this.searchClosed = index.createEvent(this, "searchClosed", 7);
4686
+ /** Clear the current query and results; keep focus in the input so the
4687
+ * user can start typing again without an extra click. */
4688
+ this.handleClear = () => {
4689
+ if (this.debounceTimer) {
4690
+ clearTimeout(this.debounceTimer);
4691
+ }
4692
+ this.query = '';
4693
+ this.results = [];
4694
+ this.hasSearched = false;
4695
+ this.showDropdown = false;
4696
+ this.selectedIndex = -1;
4697
+ // Re-focus and reflect the empty value on the underlying DOM input.
4698
+ if (this.inputRef) {
4699
+ this.inputRef.value = '';
4700
+ this.inputRef.focus();
4701
+ }
4702
+ };
4489
4703
  this.handleInput = (event) => {
4490
4704
  var _a;
4491
4705
  const target = event.target;
@@ -4518,6 +4732,7 @@ const EdsGlobalSearch = class {
4518
4732
  this.currentOrigin = '';
4519
4733
  this.currentSource = '';
4520
4734
  this.authToken = '';
4735
+ this.variant = 'gray';
4521
4736
  this.query = '';
4522
4737
  this.results = [];
4523
4738
  this.loading = false;
@@ -4527,15 +4742,26 @@ const EdsGlobalSearch = class {
4527
4742
  this.selectedIndex = -1;
4528
4743
  }
4529
4744
  componentDidLoad() {
4530
- // Focus input if needed
4531
- if (this.inputRef) {
4532
- this.inputRef.focus();
4533
- }
4745
+ // ⌘K / Ctrl+K focuses the search pill from anywhere on the page.
4746
+ // Bound here (not via @Listen) so it works across shadow boundaries.
4747
+ this.cmdKListener = (event) => {
4748
+ var _a;
4749
+ const isMac = navigator.platform.toUpperCase().includes('MAC');
4750
+ const modifier = isMac ? event.metaKey : event.ctrlKey;
4751
+ if (modifier && event.key.toLowerCase() === 'k') {
4752
+ event.preventDefault();
4753
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
4754
+ }
4755
+ };
4756
+ document.addEventListener('keydown', this.cmdKListener);
4534
4757
  }
4535
4758
  disconnectedCallback() {
4536
4759
  if (this.debounceTimer) {
4537
4760
  clearTimeout(this.debounceTimer);
4538
4761
  }
4762
+ if (this.cmdKListener) {
4763
+ document.removeEventListener('keydown', this.cmdKListener);
4764
+ }
4539
4765
  }
4540
4766
  handleDocumentClick(event) {
4541
4767
  const path = event.composedPath();
@@ -4682,10 +4908,19 @@ const EdsGlobalSearch = class {
4682
4908
  return this.hasSearched && !this.loading && !this.hasResults && this.query.trim();
4683
4909
  }
4684
4910
  render() {
4685
- return (index.h("div", { key: '1852fc796b6240987bcad1e278f4b1df136cc449', class: "search-wrapper" }, index.h("eds-input-field", { key: 'b52b3f0910af3b75c52dc5fd9a514c592b257939', icon: "search", "input-id": "search-global", type: "text", name: "search-box-global", placeholder: this.placeholder, value: this.query, onInput: this.handleInput }), this.showDropdown && (index.h("div", { key: '9f3201f757082d175f74cd6cf289235876a7adbd', class: "search-dropdown", ref: (el) => (this.dropdownRef = el) }, this.loading && (index.h("div", { key: '3eb28e3703204b69356012f69088e6eb756be901', class: "flex text-center justify-center p-64" }, index.h("eds-spinner", { key: '08034f1d9fd9125bc9581c89e9b2f96efc1a964b', variant: "primary", size: "sm" }))), this.error && !this.loading && (index.h("div", { key: '8b54ae6c27499978b37a34b0b8e596216141a967', class: "flex text-center justify-center p-16" }, index.h("span", { key: 'b4229325ea0650af096984c50882558508c3e97d', class: "text-error f-body-02" }, this.error))), this.showEmpty && (index.h("div", { key: 'e2c4afb90f05171d30c42d7f5780388b18b19e50', class: "dropdown-state" }, index.h("eds-icon-wrapper", { key: 'ad17ced3b7cd285c654cb88e21f295c1aaa1059f', name: "search" }), index.h("div", { key: '66f22b148372de474fa3593deedbaa138b6f534e' }, index.h("p", { key: 'eeb0532fbe406b0415f45685ea0f00e09950db84', class: "f-body-02" }, "No results found"), index.h("p", { key: 'e13d6267eaa8cfc11930b2f61ea29b2f3a82cb71', class: "f-ui-04 text-lightest" }, "Try different keywords")))), this.hasResults && !this.loading && (index.h("ul", { key: '23a0e1e6e1634d0e9212d2b9711a9d9f8d1ace42', class: "dropdown-results" }, this.results.map((result, index$1) => (index.h("li", { key: result.id, "data-index": index$1, class: {
4911
+ return (index.h("div", { key: '841c9a013a1c4cee9697f3465759bf638b28475e', class: "search-wrapper" }, index.h("label", { key: 'ff1b37fff6e94019d2da63060aba77d82ee1bafb', class: `search-pill search-pill--${this.variant}`, htmlFor: "search-global" }, index.h("svg", { key: '150aff8a31a68195e7b333b9bcfccbc3affb3901', class: "search-icon", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, index.h("circle", { key: 'cb424f39cd5f6316056dbcc6b80d11ce8ade1410', cx: "11", cy: "11", r: "7" }), index.h("line", { key: '004bce39d3a9ee7a53ef0e942cf986e38b76b921', x1: "20", y1: "20", x2: "16.5", y2: "16.5" })), index.h("input", { key: '97f4c012d7152f29fac9723ced4f06207b8a2453', id: "search-global", class: "search-input", type: "search", name: "search-box-global", placeholder: this.placeholder, value: this.query, autoComplete: "off", onInput: this.handleInput, ref: (el) => (this.inputRef = el) }), this.query && this.query.length > 0 ? (index.h("button", { type: "button", class: "search-clear", "aria-label": "Clear search", onMouseDown: (e) => e.preventDefault() /* keep focus in input */, onClick: () => this.handleClear() }, index.h("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2.2", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, index.h("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), index.h("line", { x1: "6", y1: "6", x2: "18", y2: "18" })))) : (index.h("kbd", { class: "search-kbd", "aria-hidden": "true" }, "\u2318K"))), this.showDropdown && (index.h("div", { key: '3354848b17ba065a64919defd74de0616a29c25c', class: "search-dropdown", ref: (el) => (this.dropdownRef = el) }, this.loading && (index.h("div", { key: '5c5f731e969f60c8c3d2ce21683fec35302a2954', class: "flex text-center justify-center p-64" }, index.h("eds-spinner", { key: '6d0b5223f03bb0ed2f83f2ab3c77cf4e116d87e7', variant: "primary", size: "sm" }))), this.error && !this.loading && (index.h("div", { key: '9cbca9b3f62c2969478e34a654a973196a5e9187', class: "flex text-center justify-center p-16" }, index.h("span", { key: 'ce2bd2f6c6b05fb5fdfec4da67460b72445970bc', class: "text-error f-body-02" }, this.error))), this.showEmpty && (index.h("div", { key: 'b7d446aa72732c9932c90bb5ef08a2f27c357ae4', class: "dropdown-state" }, index.h("eds-icon-wrapper", { key: 'ac5377b3efa4f26e10781f369843a69c3409ec83', name: "search" }), index.h("div", { key: '774784c1dbe4c6e6eda9e8d70833d0a2a6821b4f' }, index.h("p", { key: 'bbce9a267889eee40b54fd471f203b530de42a86', class: "f-body-02" }, "No results found"), index.h("p", { key: 'd440e4e0ff4f59ea14eef7aa5db0692c4a2352fa', class: "f-ui-04 text-lightest" }, "Try different keywords")))), this.hasResults && !this.loading && (index.h("ul", { key: 'b89e31f5931705e750f0f19fb159f93a05324e6d', class: "dropdown-results" }, this.results.map((result, index$1) => (index.h("li", { key: result.id, "data-index": index$1, class: {
4686
4912
  'result-item': true,
4687
4913
  'result-item--selected': index$1 === this.selectedIndex
4688
- }, onClick: () => this.selectResult(result), onMouseEnter: () => (this.selectedIndex = index$1) }, index.h("div", { class: "result-header" }, index.h("span", { class: "result-title f-body-02" }, result.title)), index.h("div", { class: "result-meta" }, index.h("span", { class: "result-badge" }, result.source), result.section && index.h("span", { class: "result-badge" }, result.section), index.h("span", { class: "result-url" }, result.url)), result.snippet && index.h("p", { class: "result-snippet" }, this.stripHtml(result.snippet))))))), this.hasResults && !this.loading && (index.h("div", { key: '4d901487a14818ea05d3433c7cc5b881a87764e2', class: "dropdown-footer" }, index.h("span", { key: '8411362dd3b694220e6d10268a63ef4fc3b30eeb', class: "footer-hint" }, index.h("kbd", { key: '5b1c50f275a4d1daa35f0b1276c26bf110189785' }, "\u2191"), " ", index.h("kbd", { key: '711430aba48663a8f58b5f3dae15c1357e75761b' }, "\u2193"), " navigate \u2022 ", index.h("kbd", { key: 'b4e4362f19d7b82cbce9dcdea0b9c863a6e36fef' }, "\u21B5"), " select \u2022 ", index.h("kbd", { key: '9cc79708fece76043eb8f050b1715ff610f937ec' }, "esc"), " close")))))));
4914
+ }, onClick: () => this.selectResult(result), onMouseEnter: () => (this.selectedIndex = index$1) }, index.h("div", { class: "result-header" }, index.h("span", { class: "result-title f-body-02" }, result.title)), index.h("div", { class: "result-meta" }, result.parent_software ? ([
4915
+ index.h("span", { class: "result-badge result-badge--parent" }, result.parent_software),
4916
+ result.section && index.h("span", { class: "result-badge result-badge--lr" }, result.section)
4917
+ ]) : result.source === 'kg-services' ? ([
4918
+ index.h("span", { class: "result-badge" }, "EBRAINS KG"),
4919
+ result.section && index.h("span", { class: "result-badge" }, result.section)
4920
+ ]) : ([
4921
+ index.h("span", { class: "result-badge" }, result.source),
4922
+ result.section && index.h("span", { class: "result-badge" }, result.section)
4923
+ ]), index.h("span", { class: "result-url" }, result.url)), result.snippet && index.h("p", { class: "result-snippet" }, this.stripHtml(result.snippet))))))), this.hasResults && !this.loading && (index.h("div", { key: 'fd07f17d78ba2d95c30d95b35d89151b27e3a957', class: "dropdown-footer" }, index.h("span", { key: '20a6bc436e135e29b89a94b150c505bab6281d6f', class: "footer-hint" }, index.h("kbd", { key: '08e43dd318b0dde7d67f74731055e2bbc00bdc78' }, "\u2191"), " ", index.h("kbd", { key: '676535d717d5fb4b98cbf09050883630dbecaf6e' }, "\u2193"), " navigate \u2022 ", index.h("kbd", { key: 'cd9ac17223ae195b0508c7ea37ad2a9459341b8b' }, "\u21B5"), " select \u2022 ", index.h("kbd", { key: 'dbaa3eacc337eee81404518e9bd4c9b9fbc44205' }, "esc"), " close")))))));
4689
4924
  }
4690
4925
  get el() { return index.getElement(this); }
4691
4926
  };
@@ -4737,7 +4972,7 @@ const EdsHeader = class {
4737
4972
  const logoType = this.variant === 'strong' ? 'negative' : 'positive';
4738
4973
  // Link intent based on header variant
4739
4974
  const linkIntent = this.variant === 'strong' ? 'underlineInverse' : 'underline';
4740
- return (index.h("header", { key: '2c1cfca934f70c0d72fa50c163eb14524ca4e5a5', role: "banner", class: `flex items-center justify-between relative z-10 ${classes}` }, index.h("div", { key: 'b7914ad1431d19a167e39814aa5ab7e6c87ce8e4', class: "w-[250px]" }, index.h("div", { key: 'efb6efcb51f960e48bf236dd94d308ae12480808', class: "p-[24px]" }, index.h("eds-logo", { key: 'a8b20eee1ed9577fc06da51e6325875f56025694', variant: logoType, href: this.url }))), this.parsedLinks && (index.h("nav", { key: '3b322f02b8249091158876559339baf4ba763242', role: "navigation", "aria-label": "Primary", class: "flex-1 flex justify-center items-center hidden md:flex" }, index.h("ul", { key: '8c74e64f51bddefcc578c09e5d6570f208ecbcf6', class: "flex gap-x-16" }, this.parsedLinks.map((link) => (index.h("eds-link", { label: link.label, "aria-label": link.label, url: link.url, intent: linkIntent, size: "large", icon: link.icon, external: link.external })))))), index.h("div", { key: 'c75b261b7bc734a121ac195400d2c1200b58d7ec', class: "w-[250px] flex justify-end items-center" }, index.h("slot", { key: '1b447037e7158d3e06f68add6084da957ff8c8b0', name: "actions" })), this.menu && (index.h("div", { key: '8e92ee65ed8a235ad0af4d61588ce6118a92b07f', class: "md:hidden flex overflow-hidden px-16" }, index.h("eds-button", { key: '8b79d619d4b51dac26f0ff5347909611383cb635', "aria-label": "Menu", intent: this.variant === 'strong' ? 'ghostInverse' : 'ghost', icon: "menu", size: "small", onClick: () => this.handleToggleMenu() })))));
4975
+ return (index.h("header", { key: 'fd95f6b0126d620ab1d4f58240d471301d607fa5', role: "banner", class: `flex items-center justify-between relative z-10 ${classes}` }, index.h("div", { key: 'e7b1bd9a146543107d87ff6f4c8575ad63fc3889', class: "w-[250px]" }, index.h("div", { key: '257a8bf3d0efea39bd0e7f5c92d2a6bcbaa66d48', class: "p-[24px]" }, index.h("eds-logo", { key: '71365268524d0db6999dc6ff4a9227e388d53cdf', variant: logoType, href: this.url }))), this.parsedLinks && (index.h("nav", { key: '085b2bd5f667ea7e0be4de77cb4bd3d1a2bb6e3c', role: "navigation", "aria-label": "Primary", class: "flex-1 flex justify-center items-center hidden md:flex" }, index.h("ul", { key: 'b5c015e6e1fb376f6b48805cc5d0db436234a5fc', class: "flex gap-x-16" }, this.parsedLinks.map((link) => (index.h("eds-link", { label: link.label, "aria-label": link.label, url: link.url, intent: linkIntent, size: "large", icon: link.icon, external: link.external })))))), index.h("div", { key: '9bca10c081cd1b8157579fa587615538dc624817', class: "w-[250px] flex justify-end items-center" }, index.h("slot", { key: '360fb5fe76b41b2513cba2f8705ea5ea91cae9a9', name: "actions" })), this.menu && (index.h("div", { key: '7feaa2b97062e7ceb94bacc35e61a12edc0b2e54', class: "md:hidden flex overflow-hidden px-16" }, index.h("eds-button", { key: '706c1668e3b04517cfe0cb92da5b459980986df0', "aria-label": "Menu", intent: this.variant === 'strong' ? 'ghostInverse' : 'ghost', icon: "menu", size: "small", onClick: () => this.handleToggleMenu() })))));
4741
4976
  }
4742
4977
  get hostEl() { return index.getElement(this); }
4743
4978
  };
@@ -7169,6 +7404,7 @@ const EdsIconWrapper = class {
7169
7404
  index.registerInstance(this, hostRef);
7170
7405
  this.name = undefined;
7171
7406
  this.size = 20;
7407
+ this.label = undefined;
7172
7408
  }
7173
7409
  render() {
7174
7410
  const iconSvg = ICONS[this.name];
@@ -7176,7 +7412,8 @@ const EdsIconWrapper = class {
7176
7412
  console.warn(`Icon "${this.name}" not found in ICONS`);
7177
7413
  return null;
7178
7414
  }
7179
- return (index.h(index.Host, { role: "img" }, index.h("span", { class: `icon icon--${this.size}`, innerHTML: iconSvg })));
7415
+ const decorative = !this.label;
7416
+ return (index.h(index.Host, { role: decorative ? null : 'img', "aria-label": decorative ? null : this.label, "aria-hidden": decorative ? 'true' : null }, index.h("span", { class: `icon icon--${this.size}`, innerHTML: iconSvg })));
7180
7417
  }
7181
7418
  };
7182
7419
  EdsIconWrapper.style = EdsIconWrapperStyle0;
@@ -7224,10 +7461,10 @@ const EdsImg = class {
7224
7461
  imgOpts['loading'] = 'lazy';
7225
7462
  imgOpts['decoding'] = 'async';
7226
7463
  }
7227
- return (index.h("div", { key: '401f46b1ba986cbab6ef1617039f2315fb9d5e6b', class: {
7464
+ return (index.h("div", { key: '122ae0673a7a2c9afd88cdcf8a83b52c11f0643e', class: {
7228
7465
  'items-center justify-center': true,
7229
7466
  'effect-bg-pattern': this.lazyload && this.showBg
7230
- } }, index.h("picture", { key: 'cf2b2803efd4f8f0abb40cd427b1b29eff591b15' }, this.formats.map((format) => (index.h("source", { type: format.type, srcSet: format.srcset, media: format.media, sizes: this.sizes }))), index.h("img", Object.assign({ key: 'a256bcf9c87284391fdeebcf6dcdb1e95b7fc1f8', ref: (el) => (this.img = el), class: {
7467
+ } }, index.h("picture", { key: 'b0bb1af0c95375db18bd45453016ee2fd78a6e2a' }, this.formats.map((format) => (index.h("source", { type: format.type, srcSet: format.srcset, media: format.media, sizes: this.sizes }))), index.h("img", Object.assign({ key: '2a8500ea92db1a846f0f6dbb41fa664c3d514f19', ref: (el) => (this.img = el), class: {
7231
7468
  'effect-opacity object-cover object-center': true,
7232
7469
  'opacity-100': this.loaded,
7233
7470
  'opacity-0': !this.loaded
@@ -7264,6 +7501,7 @@ const EdsInput = class {
7264
7501
  this.min = undefined;
7265
7502
  this.max = undefined;
7266
7503
  this.step = undefined;
7504
+ this.inputTabIndex = undefined;
7267
7505
  this.innerVal = '';
7268
7506
  this.maxLengthReached = false;
7269
7507
  }
@@ -7286,7 +7524,7 @@ const EdsInput = class {
7286
7524
  render() {
7287
7525
  const withIcon = !!this.icon;
7288
7526
  const describedBy = this.hasMessage || this.error ? `${this.name}-error` : '';
7289
- return (index.h("div", { key: '5e5aabb89e931e0129ad606f9ed6070e336f9d98', class: "relative flex items-center" }, this.type === 'textarea' ? (index.h("textarea", { id: this.inputId || this.name, name: this.name, placeholder: this.placeholder, value: this.innerVal.toString(), required: this.required, disabled: this.disabled, class: `min-h-80 input input-textarea ${withIcon ? 'input-with-icon' : ''} ${this.error ? 'input-error' : ''} ${this.extraClass}`, "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": describedBy, maxlength: this.maxLength, onInput: this.handleInput, onChange: this.handleInput })) : this.type === 'select' ? (index.h("select", { id: this.inputId || this.name, name: this.name, required: this.required, disabled: this.disabled, class: `input input-select ${this.error ? 'input-error' : ''} ${this.extraClass}`, "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": describedBy, onInput: this.handleInput, onChange: this.handleInput }, this.options.map((option) => (index.h("option", { value: option.value, selected: option.value === this.innerVal, key: option.value }, option.label))))) : (index.h("input", Object.assign({ id: this.inputId || this.name, name: this.name, placeholder: this.placeholder, value: this.innerVal.toString(), required: this.required, disabled: this.disabled, type: this.type, checked: ['radio', 'checkbox'].includes(this.type) ? this.checked : undefined }, (this.type === 'number'
7527
+ return (index.h("div", { key: '0261b14034860a2f59dde8de72d6729ec411d2cf', class: "relative flex items-center" }, this.type === 'textarea' ? (index.h("textarea", { id: this.inputId || this.name, name: this.name, placeholder: this.placeholder, value: this.innerVal.toString(), required: this.required, disabled: this.disabled, class: `min-h-80 input input-textarea ${withIcon ? 'input-with-icon' : ''} ${this.error ? 'input-error' : ''} ${this.extraClass}`, "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": describedBy, maxlength: this.maxLength, onInput: this.handleInput, onChange: this.handleInput })) : this.type === 'select' ? (index.h("select", { id: this.inputId || this.name, name: this.name, required: this.required, disabled: this.disabled, class: `input input-select ${this.error ? 'input-error' : ''} ${this.extraClass}`, "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": describedBy, onInput: this.handleInput, onChange: this.handleInput }, this.options.map((option) => (index.h("option", { value: option.value, selected: option.value === this.innerVal, key: option.value }, option.label))))) : (index.h("input", Object.assign({ id: this.inputId || this.name, name: this.name, placeholder: this.placeholder, value: this.innerVal.toString(), required: this.required, disabled: this.disabled, type: this.type, tabindex: this.inputTabIndex, checked: ['radio', 'checkbox'].includes(this.type) ? this.checked : undefined }, (this.type === 'number'
7290
7528
  ? {
7291
7529
  min: this.min,
7292
7530
  max: this.max,
@@ -7297,7 +7535,7 @@ const EdsInput = class {
7297
7535
  input ${this.type === 'radio' ? 'input-radio' : this.type === 'checkbox' ? 'input-checkbox' : ''}
7298
7536
  ${withIcon && this.type !== 'radio' && this.type !== 'checkbox' ? 'input-icon pl-36' : ''}
7299
7537
  ${this.error ? 'input-error' : ''}
7300
- `, "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": describedBy, maxlength: this.maxLength, onInput: this.handleInput, onChange: this.handleInput }))), this.maxLength && this.type === 'textarea' && (index.h("span", { key: 'b3f75c5b363dc5320d4552ca9d9544975fdd89e0', class: `input-counter f-ui-05 absolute bottom-8 right-8 ${this.maxLengthReached ? 'input-counter-error' : ''}` }, this.maxLength)), this.icon && (index.h("eds-icon-wrapper", { key: 'e3d18b7c5089e635ee3c4341f039482fdf37f5f1', class: `absolute top-1/2 left-[12px] -translate-y-1/2 ${this.disabled ? 'text-lightest' : 'text-lightest'}`, name: this.icon }))));
7538
+ `, "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": describedBy, maxlength: this.maxLength, onInput: this.handleInput, onChange: this.handleInput }))), this.maxLength && this.type === 'textarea' && (index.h("span", { key: 'f2a7b410ee586d3266d05d422f3376488392fc6b', class: `input-counter f-ui-05 absolute bottom-8 right-8 ${this.maxLengthReached ? 'input-counter-error' : ''}` }, this.maxLength)), this.icon && (index.h("eds-icon-wrapper", { key: '37581bbd64652b25a00a401ab359736169814b1f', class: `absolute top-1/2 left-[12px] -translate-y-1/2 ${this.disabled ? 'text-lightest' : 'text-lightest'}`, name: this.icon }))));
7301
7539
  }
7302
7540
  get el() { return index.getElement(this); }
7303
7541
  static get watchers() { return {
@@ -7402,7 +7640,7 @@ const EdsInputDropzone = class {
7402
7640
  }
7403
7641
  render() {
7404
7642
  const dropzoneClass = `eds-input-dropzone ${this.isDragging ? 'dragging' : ''} ${this.disabled ? 'disabled' : ''}`;
7405
- return (index.h("div", { key: 'a5f1b90a46927fc9b6396c7aa46b6871233f543a', class: "eds-input-dropzone-container" }, index.h("input", { key: '3eefd790de82dc7686f1eaeb70f974155830d0e1', ref: (el) => (this.fileInputRef = el), type: "file", id: this.inputId || this.name, name: this.name, class: "eds-input-dropzone-hidden", disabled: this.disabled, required: this.required, multiple: this.multiple, accept: this.accept, onChange: this.handleFileSelect }), index.h("div", { key: 'e9f2a824fd9df33e943b6b4ab80dff9b6b0c031d', class: dropzoneClass, onClick: this.handleDropzoneClick, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop }, index.h("svg", { key: 'f7535c3bb5e80e894520176de395da72732fa714', class: "dropzone-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, index.h("path", { key: 'c16c8692d38cf348ec967b2a3617422afff7909a', d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), index.h("polyline", { key: '13d7a4c1ae764156957c86c03dbeb4e18f4df227', points: "17 8 12 3 7 8" }), index.h("line", { key: 'ddd716e98d7defa01360ecaa726696141116c860', x1: "12", y1: "3", x2: "12", y2: "15" })), index.h("div", { key: '2ab160b911248c5db33b00100b2dbacfeebd6145', class: "dropzone-text" }, index.h("p", { key: '4dc47aaa591673211e7b6b2fbd84565a3986bf8e', class: "dropzone-primary" }, this.primaryText), index.h("p", { key: '92d44b3198860ad6509743a7c55a7c1f949fab70', class: "dropzone-secondary" }, this.secondaryText))), this.selectedFiles.length > 0 && (index.h("div", { key: '84b2403ba93872292c4d15206d9fcbe1a71a21a5', class: "eds-input-dropzone-chips" }, this.selectedFiles.map((item) => (index.h("div", { key: item.id, class: "eds-input-dropzone-chip" }, this.getFileIcon(item.file.name), index.h("span", { class: "eds-input-dropzone-chip-name" }, item.file.name), index.h("span", { class: "eds-input-dropzone-chip-size" }, this.formatFileSize(item.file.size)), index.h("button", { type: "button", class: "eds-input-dropzone-chip-remove", onClick: () => this.handleRemoveFile(item.id), disabled: this.disabled, "aria-label": `Remove ${item.file.name}` }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, index.h("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), index.h("line", { x1: "6", y1: "6", x2: "18", y2: "18" }))))))))));
7643
+ return (index.h("div", { key: '8c6d9cdd919e72f5e85a7b01a2db3cb6fadface0', class: "eds-input-dropzone-container" }, index.h("input", { key: 'fb643c39fa588971f825a01b20e8da6ac2da7d36', ref: (el) => (this.fileInputRef = el), type: "file", id: this.inputId || this.name, name: this.name, class: "eds-input-dropzone-hidden", disabled: this.disabled, required: this.required, multiple: this.multiple, accept: this.accept, onChange: this.handleFileSelect }), index.h("div", { key: 'fd000cfb95b10eb54798ea5575810692c8cce65d', class: dropzoneClass, onClick: this.handleDropzoneClick, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop }, index.h("svg", { key: 'ed7588f87e4182351f5301992ae582df1f21be5e', class: "dropzone-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, index.h("path", { key: '9977271ac6bb26c6d642708eb6a7d2f2ca242dcc', d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), index.h("polyline", { key: 'f32b1ff2bea2718e075d78985837ba71acf23ce9', points: "17 8 12 3 7 8" }), index.h("line", { key: '326bc6f0e24c191a26859567653f807c81745a77', x1: "12", y1: "3", x2: "12", y2: "15" })), index.h("div", { key: 'f880855ecf537d527663101a5348591f975e7074', class: "dropzone-text" }, index.h("p", { key: '4747da3e157c6b1c3e56774867fc0258e2e77059', class: "dropzone-primary" }, this.primaryText), index.h("p", { key: '7852be7ecdcdfabf5fed632065b14128941461ee', class: "dropzone-secondary" }, this.secondaryText))), this.selectedFiles.length > 0 && (index.h("div", { key: '36347980293d2ea800a845a4ab5bb9c28fedc485', class: "eds-input-dropzone-chips" }, this.selectedFiles.map((item) => (index.h("div", { key: item.id, class: "eds-input-dropzone-chip" }, this.getFileIcon(item.file.name), index.h("span", { class: "eds-input-dropzone-chip-name" }, item.file.name), index.h("span", { class: "eds-input-dropzone-chip-size" }, this.formatFileSize(item.file.size)), index.h("button", { type: "button", class: "eds-input-dropzone-chip-remove", onClick: () => this.handleRemoveFile(item.id), disabled: this.disabled, "aria-label": `Remove ${item.file.name}` }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, index.h("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), index.h("line", { x1: "6", y1: "6", x2: "18", y2: "18" }))))))))));
7406
7644
  }
7407
7645
  get hostEl() { return index.getElement(this); }
7408
7646
  };
@@ -7529,9 +7767,12 @@ const EdsInputField = class {
7529
7767
  return [];
7530
7768
  }
7531
7769
  render() {
7532
- const inputOpts = Object.assign({ name: this.name, id: this.inputId, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleNativeInput, onChange: this.handleNativeChange, type: this.type, required: this.required, value: this.value, error: this.error, icon: this.icon, checked: this.checked }, (this.type === 'number' ? { min: this.min, max: this.max, step: this.step } : {}));
7533
- return (index.h("div", { key: '1568054341b82bcaa01ffe4a48092d5f25a639ed' }, this.type === 'checkbox' || this.type === 'radio' ? (this.parsedOptions.length > 0 ? (index.h("fieldset", { class: "space-y-4" }, (this.label || this.hint) && (index.h("div", { class: "flex justify-between mb-4" }, this.label && (index.h("eds-input-label", { name: this.inputId || this.name, label: this.label, required: this.required })), this.hint && (index.h("p", { id: `${this.name}-hint`, class: "f-ui-05 text-lighter mt-8 ml-8" }, this.hint)))), this.parsedOptions.map((option) => (index.h("div", { class: "flex items-center gap-x-4 gap-y-4", key: option.value }, index.h("eds-input", Object.assign({}, inputOpts, { value: option.value, checked: typeof this.value === 'string' && this.value.split(',').includes(String(option.value)) })), index.h("label", { htmlFor: this.name, class: `input-label-options ${this.disabled ? 'text-lighter' : ''}` }, option.label)))))) : (index.h("div", { class: "flex items-center gap-x-8" }, index.h("eds-input", Object.assign({}, inputOpts, { value: this.value, checked: this.value === 'on' || this.checked })), this.label && (index.h("eds-input-label", { name: this.inputId || this.name, label: this.label, disabled: this.disabled, required: this.required }))))) : (index.h("div", null, (this.label || this.hint) && (index.h("div", { class: "flex justify-between mb-4" }, this.label && (index.h("eds-input-label", { name: this.inputId || this.name, label: this.label, disabled: this.disabled, required: this.required })), this.hint && (index.h("p", { id: `${this.name}-hint`, class: "f-ui-05 text-lighter mt-8 ml-8" }, this.hint)))), this.type === 'select' ? (index.h("eds-input-select", Object.assign({}, inputOpts, { options: this.parsedOptions }))) : this.type === 'file' ? (index.h("eds-input-file", { name: this.name, inputId: this.inputId, disabled: this.disabled, required: this.required, multiple: true, onEdsfile: this.handleFileChange })) : this.type === 'dropzone' ? (index.h("eds-input-dropzone", { name: this.name, inputId: this.inputId, disabled: this.disabled, required: this.required, multiple: true, onEdsfile: this.handleFileChange })) : this.type === 'search' ? (index.h("eds-input-search", { name: "search-box" })) : this.type === 'range' ? ((() => {
7534
- var _a, _b, _c;
7770
+ const inputOpts = Object.assign({ name: this.name, id: this.inputId, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleNativeInput, onChange: this.handleNativeChange, type: this.type, required: this.required, value: this.value, error: this.error,
7771
+ // Icons are only supported on text inputs for now ignore the prop for
7772
+ // every other type so e.g. number/select/checkbox never render one.
7773
+ icon: this.type === 'text' ? this.icon : undefined, checked: this.checked }, (this.type === 'number' ? { min: this.min, max: this.max, step: this.step } : {}));
7774
+ return (index.h("div", { key: '2072cce16b572431b41363beff779d8631de7abc' }, this.type === 'checkbox' || this.type === 'radio' ? (this.parsedOptions.length > 0 ? (index.h("fieldset", { class: "space-y-4" }, (this.label || this.hint) && (index.h("div", { class: "flex justify-between mb-4" }, this.label && (index.h("eds-input-label", { name: this.inputId || this.name, label: this.label, required: this.required })), this.hint && (index.h("p", { id: `${this.name}-hint`, class: "f-ui-05 text-lighter mt-8 ml-8" }, this.hint)))), this.parsedOptions.map((option) => (index.h("div", { class: "flex items-center gap-x-4 gap-y-4", key: option.value }, index.h("eds-input", Object.assign({}, inputOpts, { inputId: `${this.inputId || this.name}-${option.value}`, inputTabIndex: 0, value: option.value, checked: typeof this.value === 'string' && this.value.split(',').includes(String(option.value)) })), index.h("label", { htmlFor: `${this.inputId || this.name}-${option.value}`, class: `input-label-options ${this.disabled ? 'text-lighter' : ''}` }, option.label)))))) : (index.h("div", { class: "flex items-center gap-x-8" }, index.h("eds-input", Object.assign({}, inputOpts, { inputTabIndex: 0, value: this.value, checked: this.value === 'on' || this.checked })), this.label && (index.h("eds-input-label", { name: this.inputId || this.name, label: this.label, disabled: this.disabled, required: this.required }))))) : (index.h("div", null, (this.label || this.hint) && (index.h("div", { class: "flex justify-between mb-4" }, this.label && (index.h("eds-input-label", { name: this.inputId || this.name, label: this.label, disabled: this.disabled, required: this.required })), this.hint && (index.h("p", { id: `${this.name}-hint`, class: "f-ui-05 text-lighter mt-8 ml-8" }, this.hint)))), this.type === 'select' ? (index.h("eds-input-select", Object.assign({}, inputOpts, { options: this.parsedOptions }))) : this.type === 'file' ? (index.h("eds-input-file", { name: this.name, inputId: this.inputId, disabled: this.disabled, required: this.required, multiple: true, onEdsfile: this.handleFileChange })) : this.type === 'dropzone' ? (index.h("eds-input-dropzone", { name: this.name, inputId: this.inputId, disabled: this.disabled, required: this.required, multiple: true, onEdsfile: this.handleFileChange })) : this.type === 'range' ? ((() => {
7775
+ var _a, _b, _c, _d, _e, _f;
7535
7776
  const rangeProps = {
7536
7777
  name: inputOpts.name,
7537
7778
  inputId: inputOpts.id || inputOpts.name,
@@ -7542,8 +7783,11 @@ const EdsInputField = class {
7542
7783
  };
7543
7784
  const opt = this.parsedOptions;
7544
7785
  const numberValue = typeof this.value === 'string' ? parseFloat(this.value) : this.value;
7545
- return (index.h("eds-input-range", Object.assign({}, rangeProps, { min: (_a = opt[0]) === null || _a === void 0 ? void 0 : _a.value, max: (_b = opt[1]) === null || _b === void 0 ? void 0 : _b.value, step: (_c = opt[2]) === null || _c === void 0 ? void 0 : _c.value, value: numberValue })));
7546
- })()) : (index.h("eds-input", Object.assign({}, inputOpts))))), index.h("div", { key: '5df838f8bf73bc9e0dfa0792f76ad1b958f3d1fc', class: "mt-6" }, index.h("eds-input-footer", { key: 'daf5d0fd8d9cca3241e760b740a47e2663c3e665', id: `${this.name}-footer`, name: this.name, message: this.message, "error-message": this.errorMessage, error: this.error, link: this.link }))));
7786
+ // Prefer the explicit min/max/step props (consistent with
7787
+ // type="number"); fall back to options[0..2].value for
7788
+ // backward compatibility with existing range fields.
7789
+ return (index.h("eds-input-range", Object.assign({}, rangeProps, { min: (_a = this.min) !== null && _a !== void 0 ? _a : (_b = opt[0]) === null || _b === void 0 ? void 0 : _b.value, max: (_c = this.max) !== null && _c !== void 0 ? _c : (_d = opt[1]) === null || _d === void 0 ? void 0 : _d.value, step: (_e = this.step) !== null && _e !== void 0 ? _e : (_f = opt[2]) === null || _f === void 0 ? void 0 : _f.value, value: numberValue })));
7790
+ })()) : (index.h("eds-input", Object.assign({}, inputOpts))))), index.h("div", { key: 'f3ab7ef07c5c35f6d5e5d7a3ec35f98fe133ab5b', class: "mt-6" }, index.h("eds-input-footer", { key: 'a72af69114cd3916e9ffa6ca8a65dced572dadf7', id: `${this.name}-footer`, name: this.name, message: this.message, "error-message": this.errorMessage, error: this.error, link: this.link }))));
7547
7791
  }
7548
7792
  static get delegatesFocus() { return true; }
7549
7793
  get hostEl() { return index.getElement(this); }
@@ -7616,13 +7860,13 @@ const EdsInputFile = class {
7616
7860
  }
7617
7861
  render() {
7618
7862
  const effectiveLabel = this.buttonLabel || (this.multiple ? 'Choose Files' : 'Choose File');
7619
- return (index.h("div", { key: 'c4c8f06b7d911cc7b9aa44a54bc1ec1144fc7901', class: "eds-input-file-container" }, index.h("input", { key: 'bf4d4f3b3a49a2b386780fd6d65056e2bfee327d', ref: (el) => (this.fileInputRef = el), type: "file", id: this.inputId || this.name, name: this.name, class: "eds-input-file-hidden", disabled: this.disabled, required: this.required, multiple: this.multiple, accept: this.accept, onChange: this.handleFileSelect }), index.h("button", { key: 'cb4447bab24a31ba0ab7ab852041a9117a4c8d16', type: "button", class: "eds-input-file-btn", onClick: this.handleButtonClick, disabled: this.disabled }, index.h("svg", { key: 'b5a98574c8b044b63bf4d6b5384f691d78179b25', viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, index.h("path", { key: '9dcd73b3ea6b947052417dedbdedfbe9c1683d11', d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), index.h("polyline", { key: '17442a8caa70a37f77839b4a313a36aa8324d54a', points: "17 8 12 3 7 8" }), index.h("line", { key: 'de51aa410bd793d708280bc398766859afa59ff5', x1: "12", y1: "3", x2: "12", y2: "15" })), effectiveLabel), this.selectedFiles.length > 0 && (index.h("div", { key: '179a1541b71508f3bf78760079d04b2d98a8c7ec', class: "eds-input-file-chips" }, this.selectedFiles.map((item) => (index.h("div", { key: item.id, class: "eds-input-file-chip" }, this.getFileIcon(item.file.name), index.h("span", { class: "eds-input-file-chip-name" }, item.file.name), index.h("span", { class: "eds-input-file-chip-size" }, this.formatFileSize(item.file.size)), index.h("button", { type: "button", class: "eds-input-file-chip-remove", onClick: () => this.handleRemoveFile(item.id), disabled: this.disabled, "aria-label": `Remove ${item.file.name}` }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, index.h("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), index.h("line", { x1: "6", y1: "6", x2: "18", y2: "18" }))))))))));
7863
+ return (index.h("div", { key: 'e02d98fbc01dbe7a89eeb3010f966ed4a373ede6', class: "eds-input-file-container" }, index.h("input", { key: '2013826fda9453aade4528c9f051aac98780662f', ref: (el) => (this.fileInputRef = el), type: "file", id: this.inputId || this.name, name: this.name, class: "eds-input-file-hidden", disabled: this.disabled, required: this.required, multiple: this.multiple, accept: this.accept, onChange: this.handleFileSelect }), index.h("button", { key: 'f5e5cf91376ccb69b39ef3c9b11095aca8bfb728', type: "button", class: "eds-input-file-btn", onClick: this.handleButtonClick, disabled: this.disabled }, index.h("svg", { key: '563066375b42d0a8c14f14ac9fdfb587539f4e76', viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, index.h("path", { key: 'ebe5549fffa0c2453ab98891da75a464c09e9fa2', d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), index.h("polyline", { key: '69036b82e15103e481770d0ef2c500b0dcad0399', points: "17 8 12 3 7 8" }), index.h("line", { key: 'e0531be95796ec6dc7f9fe359e4736a15a0e3640', x1: "12", y1: "3", x2: "12", y2: "15" })), effectiveLabel), this.selectedFiles.length > 0 && (index.h("div", { key: '62590fb46cee89d2524f1ede71c7af341c3e426a', class: "eds-input-file-chips" }, this.selectedFiles.map((item) => (index.h("div", { key: item.id, class: "eds-input-file-chip" }, this.getFileIcon(item.file.name), index.h("span", { class: "eds-input-file-chip-name" }, item.file.name), index.h("span", { class: "eds-input-file-chip-size" }, this.formatFileSize(item.file.size)), index.h("button", { type: "button", class: "eds-input-file-chip-remove", onClick: () => this.handleRemoveFile(item.id), disabled: this.disabled, "aria-label": `Remove ${item.file.name}` }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, index.h("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), index.h("line", { x1: "6", y1: "6", x2: "18", y2: "18" }))))))))));
7620
7864
  }
7621
7865
  get hostEl() { return index.getElement(this); }
7622
7866
  };
7623
7867
  EdsInputFile.style = EdsInputFileStyle0;
7624
7868
 
7625
- const edsInputFooterCss = "p{margin:0}.text-error{color:var(--red-700)}.flex{display:flex}.items-center{align-items:center}.f-ui-04{font-family:var(--f-ui-04-fontFamily);font-weight:var(--f-ui-04-fontWeight);font-size:var(--f-ui-04-fontSize);line-height:var(--f-ui-04-lineHeight);letter-spacing:var(--f-ui-04-letterSpacing)}.ml-4{margin-left:0.25rem}.pt-4{padding-top:0.25rem}.mb-4{margin-bottom:0.25rem}.f-ui-05{font-family:var(--f-ui-05-fontFamily);font-weight:var(--f-ui-05-fontWeight);font-size:var(--f-ui-05-fontSize);line-height:var(--f-ui-05-lineHeight);letter-spacing:var(--f-ui-05-letterSpacing)}.text-lighter{color:var(--grey-600)}.effect-color{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms;transition-timing-function:cubic-bezier(0, 0, 0.2, 1)}.hover\\:text-lighter:hover{color:var(--grey-600)}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}";
7869
+ const edsInputFooterCss = "p{margin:0}.eds-desc-link{position:relative;display:inline-block;color:var(--brand-black);text-decoration:none}.eds-desc-link::after{content:'';position:absolute;bottom:-2px;left:0;width:0;height:2px;background-color:var(--brand-green);transition:width 0.3s ease}.eds-desc-link:hover::after{width:100%}.eds-desc-link:focus-visible::after{width:0}eds-link{--f-ui-02-fontSize:var(--f-ui-04-fontSize)}.text-error{color:var(--red-700)}.flex{display:flex}.items-center{align-items:center}.f-ui-04{font-family:var(--f-ui-04-fontFamily);font-weight:var(--f-ui-04-fontWeight);font-size:var(--f-ui-04-fontSize);line-height:var(--f-ui-04-lineHeight);letter-spacing:var(--f-ui-04-letterSpacing)}.ml-4{margin-left:0.25rem}.pt-4{padding-top:0.25rem}.mb-4{margin-bottom:0.25rem}.f-ui-05{font-family:var(--f-ui-05-fontFamily);font-weight:var(--f-ui-05-fontWeight);font-size:var(--f-ui-05-fontSize);line-height:var(--f-ui-05-lineHeight);letter-spacing:var(--f-ui-05-letterSpacing)}.text-lighter{color:var(--grey-600)}.effect-color{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms;transition-timing-function:cubic-bezier(0, 0, 0.2, 1)}.hover\\:text-lighter:hover{color:var(--grey-600)}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}";
7626
7870
  const EdsInputFooterStyle0 = edsInputFooterCss;
7627
7871
 
7628
7872
  const EdsInputFooter = class {
@@ -7635,7 +7879,7 @@ const EdsInputFooter = class {
7635
7879
  this.link = undefined;
7636
7880
  }
7637
7881
  render() {
7638
- return (index.h("div", { key: 'b6e571eae554f1292e897d99443ea03b6dfa4fe3' }, this.error && this.errorMessage && (index.h("div", { key: '9240b3db2aee19b5cbc1c54aa7a90994c23580d0', id: `error_${this.name}`, class: "text-error flex items-center" }, index.h("eds-icon-wrapper", { key: '68b17235d0396119275c9b2a883bb47ee365c266', name: "warning", size: 20 }), index.h("p", { key: 'bfb1721ddcc7ad63583e56911b8c4a31f1147c51', class: "f-ui-04 ml-4 mb-4 pt-4", innerHTML: this.errorMessage }))), this.message && index.h("p", { key: '390c9ea7b3b2754a1a090c9f3f3ec6996a8f0945', id: `desc_${this.name}`, class: "f-ui-05 text-lighter", innerHTML: this.message }), this.link && (index.h("eds-link", { key: '0777fb8b099d5cc7fa2902bf1b741f28592515a1', label: this.link.label, url: this.link.url, intent: "underline", size: "small", external: true }))));
7882
+ return (index.h("div", { key: '866e375b5dd1d9c958f2255537e919a8c1f25dc7' }, this.error && this.errorMessage && (index.h("div", { key: '95d11c9cbb7746cc727ad9e037d00a28d9475bfc', id: `error_${this.name}`, class: "text-error flex items-center" }, index.h("eds-icon-wrapper", { key: 'face7f905ffa7c5f4dc7a7e6825d185e0d6b7901', name: "warning", size: 20 }), index.h("p", { key: '2011af93e06df1d91972843a510e843763f53b0b', class: "f-ui-04 ml-4 mb-4 pt-4", innerHTML: this.errorMessage }))), this.message && index.h("p", { key: '39d6833a30e7b93f75154a14bee1e6b4500575cb', id: `desc_${this.name}`, class: "f-ui-04 text-lighter", innerHTML: safeInlineFormat(this.message) }), this.link && (index.h("eds-link", { key: 'bfbf95e704574ada6f857ca08a90409ab38c1a5e', label: this.link.label, url: this.link.url, intent: "underline", size: "small", external: true }))));
7639
7883
  }
7640
7884
  };
7641
7885
  EdsInputFooter.style = EdsInputFooterStyle0;
@@ -7652,7 +7896,7 @@ const EdsInputLabel = class {
7652
7896
  this.disabled = false;
7653
7897
  }
7654
7898
  render() {
7655
- return (index.h("label", { key: '7790bae024ee253c12b47ee43dd7697329ff5602', htmlFor: this.name, class: `input-label ${this.disabled ? 'text-lighter' : ''}` }, this.label, this.required && (index.h("span", { key: '1f8e72cee3848171c0f70ce7564524c9f2646eeb' }, index.h("span", { key: '5ac8ccbe9b984c54ae3a556ea0dc09d6fa625f24', "aria-hidden": "true" }, "*"), index.h("span", { key: 'a562b41bce8a4e671596266c7705a98f5b2252d0', class: "sr-only" }, "required")))));
7899
+ return (index.h("label", { key: '40867ae01e94ab7a69b6f82658e4ee1b1e5b87cf', htmlFor: this.name, class: `input-label ${this.disabled ? 'text-lighter' : ''}` }, this.label, this.required && (index.h("span", { key: 'e3cfc44ea2a7f53f51c544648b3c635557cb8248' }, index.h("span", { key: 'ff7559b58cb22ce2a3066ed15e77f6088f299aaa', "aria-hidden": "true" }, "*"), index.h("span", { key: '2c831682aae410ac71589171e2b04981c60052bb', class: "sr-only" }, "required")))));
7656
7900
  }
7657
7901
  };
7658
7902
  EdsInputLabel.style = EdsInputLabelStyle0;
@@ -7701,7 +7945,7 @@ const EdsInputRange = class {
7701
7945
  render() {
7702
7946
  var _a;
7703
7947
  const currentValue = (_a = this.sliderVal) !== null && _a !== void 0 ? _a : Math.round(this.min + (this.max - this.min) / 2);
7704
- return (index.h("div", { key: '9be1a9d4241844c03d7e2b851ebc5ce181bfadf6', class: "relative flex flex-col items-start" }, index.h("input", { key: '746c10f7a466a6b498f57812dcb6d9b9ff1e685d', id: this.inputId || this.name, name: this.name, min: this.min, max: this.max, step: this.step, value: currentValue, required: this.required, disabled: this.disabled, type: "range", class: "w-full py-6 input", tabindex: "0", role: "slider", "aria-describedby": `desc_${this.name}`, "aria-valuemin": this.min, "aria-valuemax": this.max, "aria-valuenow": currentValue, onInput: this.onInput, onChange: this.onChange }), index.h("p", { key: '97b516ab9c20d9b5c7a783b369081b29eb3a83f0', id: `desc_${this.name}`, class: "block f-ui-05 mt-4 text-light" }, "Current value: ", currentValue)));
7948
+ return (index.h("div", { key: '231ae0f34900dfa3b8edeb9745ce07220735c613', class: "relative flex flex-col items-start" }, index.h("input", { key: '2cbfbbb410694a4764f44c26a74f4cbca9b98f3c', id: this.inputId || this.name, name: this.name, min: this.min, max: this.max, step: this.step, value: currentValue, required: this.required, disabled: this.disabled, type: "range", class: "w-full py-6 input", tabindex: "0", role: "slider", "aria-describedby": `desc_${this.name}`, "aria-valuemin": this.min, "aria-valuemax": this.max, "aria-valuenow": currentValue, onInput: this.onInput, onChange: this.onChange }), index.h("p", { key: '8e7036cbaeebb62c6cd4b7f2105d3fa487ad463e', id: `desc_${this.name}`, class: "block f-ui-05 mt-4 text-light" }, "Current value: ", currentValue)));
7705
7949
  }
7706
7950
  get el() { return index.getElement(this); }
7707
7951
  static get watchers() { return {
@@ -7709,74 +7953,6 @@ const EdsInputRange = class {
7709
7953
  }; }
7710
7954
  };
7711
7955
 
7712
- const EdsInputSearch = class {
7713
- constructor(hostRef) {
7714
- index.registerInstance(this, hostRef);
7715
- this.search = index.createEvent(this, "search", 7);
7716
- /**
7717
- * Keydown event listener to detect Command+K (Mac) or Ctrl+K (Windows/Linux)
7718
- * and focus the input element when triggered.
7719
- *
7720
- * @param e - The keyboard event.
7721
- */
7722
- this.keydownListener = (e) => {
7723
- // Check for Command+K (Mac) or Ctrl+K (Windows/Linux)
7724
- if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'k') {
7725
- e.preventDefault();
7726
- // Focus the input if it's available and not disabled
7727
- if (this.inputElement && !this.disabled) {
7728
- this.inputElement.focus();
7729
- }
7730
- }
7731
- };
7732
- /*onInput = (e: any) => {
7733
- // eslint-disable-next-line
7734
- console.log('on input:', e);
7735
- };*/
7736
- this.onChange = (e) => {
7737
- // eslint-disable-next-line
7738
- this.search.emit({
7739
- event: 'change',
7740
- value: e.target.value
7741
- });
7742
- analytics.sendAnalytics({
7743
- category: 'ui-component',
7744
- parentContext: null,
7745
- tag: this.el.tagName.toLowerCase(),
7746
- name: e.target.value || '',
7747
- action: 'search'
7748
- });
7749
- };
7750
- this.name = undefined;
7751
- this.inputId = 'search-main';
7752
- this.placeholder = 'Search...';
7753
- this.value = undefined;
7754
- this.disabled = false;
7755
- this.required = false;
7756
- this.decorate = undefined;
7757
- this.label = 'Search';
7758
- }
7759
- componentDidLoad() {
7760
- // Assign the native input element after the component loads
7761
- this.inputElement = this.el.querySelector('input');
7762
- document.addEventListener('keydown', this.keydownListener);
7763
- }
7764
- disconnectedCallback() {
7765
- // Clean up the event listener when the component is removed
7766
- document.removeEventListener('keydown', this.keydownListener);
7767
- }
7768
- async getInputElement() {
7769
- // Return the native input element
7770
- return this.inputElement;
7771
- }
7772
- render() {
7773
- return (index.h("div", { key: '849afaf3483b07fd2579d1138fbc1c1eee3930be', class: "relative flex items-center" }, index.h("eds-icon-wrapper", { key: '1b9a30ee46d4575116b585efe8a2d0c6d6b83b39', name: "search", class: "absolute top-1/2 left-[14px] -translate-y-1/2 text-lightest", "aria-hidden": "true" }), index.h("input", { key: '174fc93f10851aec47cb440895105c34600de601', id: this.inputId || this.name, name: this.name, placeholder: this.placeholder, value: this.value || '', required: this.required, disabled: this.disabled, type: "search", "aria-label": this.placeholder, class: `input pl-36 ${this.decorate}`,
7774
- //onInput={this.onInput}
7775
- onChange: this.onChange })));
7776
- }
7777
- get el() { return index.getElement(this); }
7778
- };
7779
-
7780
7956
  const EdsInputSelect = class {
7781
7957
  constructor(hostRef) {
7782
7958
  index.registerInstance(this, hostRef);
@@ -7799,15 +7975,160 @@ const EdsInputSelect = class {
7799
7975
  const selectId = this.inputId || this.name;
7800
7976
  const placeholderText = this.placeholder || `Pick from the list`;
7801
7977
  const describedBy = this.hasMessage || this.error ? `${this.name}-error` : undefined;
7802
- return (index.h("div", { key: 'c2f809a88f8b9eab6a36b86bb49daaa39ac1a832', class: "relative" }, index.h("select", { key: '0847d6526bd118db744627279d96a979dafd19d1', id: selectId, name: this.name, class: {
7978
+ return (index.h("div", { key: '8365ffbc8f6f6386edfc1626d16c9152fd3cce9f', class: "relative" }, index.h("select", { key: '52e712898a3251cea5447a379886449175e7c8b8', id: selectId, name: this.name, class: {
7803
7979
  input: true,
7804
7980
  'input-error': this.error,
7805
7981
  'px-4': true,
7806
7982
  'py-2': true
7807
- }, "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": describedBy, disabled: this.disabled, required: this.required, onChange: this.handleChange }, index.h("option", { key: '1d66602cc92028fddfd047bb2fc79c8f3602ba8e', value: "", disabled: true, selected: !this.value || this.value === '' }, placeholderText), this.options.map((opt, index$1) => (index.h("option", { key: index$1, value: opt.value, selected: opt.value === this.value }, opt.label)))), index.h("span", { key: '40f750ff55b0ac5707c4010868835c6d82537d17', class: "bg-dark rounded-xs absolute top-1/2 right-[6px] flex h-28 w-28 -translate-y-1/2 items-center justify-center" }, index.h("eds-icon-wrapper", { key: 'ef8c068e287819be7228940bfbe0b8b923e22087', class: "w-20 h-20", name: "chevron-right" }))));
7983
+ }, "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": describedBy, disabled: this.disabled, required: this.required, onChange: this.handleChange }, index.h("option", { key: 'd52c376ffb683abc0dec72177dba445273d148f7', value: "", disabled: true, selected: !this.value || this.value === '' }, placeholderText), this.options.map((opt, index$1) => (index.h("option", { key: index$1, value: opt.value, selected: opt.value === this.value }, opt.label)))), index.h("span", { key: 'fecbcb47793f8a57de44711b33d3650be5297aa7', class: "bg-dark rounded-xs absolute top-1/2 right-[6px] flex h-28 w-28 -translate-y-1/2 items-center justify-center" }, index.h("eds-icon-wrapper", { key: '4fda1345a62eeb212093057382d877f31bb6112d', class: "w-20 h-20", name: "chevron-right" }))));
7808
7984
  }
7809
7985
  };
7810
7986
 
7987
+ const edsKgLearningResourcesCss = ":host{display:block;font-family:var(--plex-sans, 'IBM Plex Sans', system-ui, sans-serif);color:var(--brand-black, #07140D)}.lr-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:0.75rem;margin-bottom:1.5rem}.lr-heading{font-family:var(--inter, 'Inter', sans-serif);font-weight:300;font-size:1.75rem;line-height:110%;margin:0;color:var(--brand-black, #07140D)}.summary{display:flex;gap:0.5rem}.filters{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:0.75rem;margin-bottom:1.5rem;align-items:flex-end}.filter-search{grid-column:span 2}.filter-select{grid-column:span 1}.accordion-list{display:flex;flex-direction:column;gap:0.5rem}.resources-content{padding-top:0.5rem}.kg-link{margin-bottom:1rem}.resources-table{width:100%;border-collapse:collapse;font-size:0.875rem}.resources-table thead th{text-align:left;font-family:var(--plex-sans, 'IBM Plex Sans', system-ui, sans-serif);font-weight:500;font-size:0.75rem;text-transform:uppercase;letter-spacing:0.04em;color:var(--grey-dark, #7A7B7A);padding:0.5rem 0.75rem;border-bottom:1px solid rgba(0, 0, 0, 0.1)}.resource-row{transition:background-color 0.2s ease}.resource-row--clickable{cursor:pointer}.resource-row--clickable:hover{background-color:rgba(0, 255, 157, 0.04)}.resource-row td{padding:0.625rem 0.75rem;border-bottom:1px solid rgba(0, 0, 0, 0.04);vertical-align:top}.resource-row:last-child td{border-bottom:none}.resource-name{font-weight:500;font-size:1.0625rem;color:var(--brand-black, #07140D);transition:color 0.2s ease}.resource-row--clickable:hover .resource-name{color:var(--brand-green-dark, #00C87B)}.resource-desc{margin:0.25rem 0 0;font-size:0.9375rem;color:var(--grey-dark, #7A7B7A);line-height:145%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.col-name{width:auto}.col-type{width:160px;white-space:nowrap}.col-level{width:110px;white-space:nowrap}.loading{position:relative;min-height:8rem;padding:1rem 1.25rem;color:var(--grey-dark, #7A7B7A);font-size:0.9375rem;border:1px solid rgba(0, 0, 0, 0.08);border-radius:0.25rem;background-color:rgba(0, 0, 0, 0.02)}.no-results{padding:2rem;text-align:center;color:var(--grey-dark, #7A7B7A);font-size:0.875rem}@media (max-width: 750px){.lr-header{flex-direction:column;align-items:flex-start}.filters{grid-template-columns:1fr}.filter-search,.filter-select{grid-column:span 1}.col-type,.col-level{width:auto}.resources-table thead{display:none}.resource-row{display:flex;flex-wrap:wrap;gap:0.375rem;padding:0.625rem 0;border-bottom:1px solid rgba(0, 0, 0, 0.04)}.resource-row td{border:none;padding:0}.col-name{width:100%}}";
7988
+ const EdsKgLearningResourcesStyle0 = edsKgLearningResourcesCss;
7989
+
7990
+ let cachedData = null;
7991
+ let cacheTimestamp = 0;
7992
+ const CACHE_TTL = 10 * 60 * 1000;
7993
+ const EdsKgLearningResources = class {
7994
+ constructor(hostRef) {
7995
+ index.registerInstance(this, hostRef);
7996
+ this.apiEndpoint = '/api/v1/kg/learning-resources/cached';
7997
+ this.resolveNames = true;
7998
+ this.size = 500;
7999
+ this.heading = '';
8000
+ this.variant = 'inverse';
8001
+ this.loading = false;
8002
+ this.error = '';
8003
+ this.software = [];
8004
+ this.meta = null;
8005
+ this.filterType = '';
8006
+ this.filterLevel = '';
8007
+ this.searchQuery = '';
8008
+ }
8009
+ componentWillLoad() {
8010
+ this.fetchData();
8011
+ }
8012
+ async fetchData() {
8013
+ const now = Date.now();
8014
+ if (cachedData && (now - cacheTimestamp) < CACHE_TTL) {
8015
+ this.software = cachedData;
8016
+ return;
8017
+ }
8018
+ this.loading = true;
8019
+ this.error = '';
8020
+ try {
8021
+ const params = new URLSearchParams({
8022
+ size: this.size.toString(),
8023
+ resolve_names: this.resolveNames.toString(),
8024
+ });
8025
+ const response = await fetch(`${this.apiEndpoint}?${params}`);
8026
+ if (!response.ok) {
8027
+ throw new Error(`Failed to fetch: ${response.statusText}`);
8028
+ }
8029
+ const data = await response.json();
8030
+ this.software = data.data || [];
8031
+ this.meta = data.meta || null;
8032
+ cachedData = this.software;
8033
+ cacheTimestamp = now;
8034
+ }
8035
+ catch (err) {
8036
+ this.error = err instanceof Error ? err.message : 'Failed to load learning resources';
8037
+ }
8038
+ finally {
8039
+ this.loading = false;
8040
+ }
8041
+ }
8042
+ getFilteredSoftware() {
8043
+ let filtered = this.software;
8044
+ if (this.filterType) {
8045
+ filtered = filtered.filter(sw => sw.learning_resources_types.includes(this.filterType));
8046
+ }
8047
+ if (this.filterLevel) {
8048
+ filtered = filtered.filter(sw => sw.learning_resources_levels.includes(this.filterLevel));
8049
+ }
8050
+ if (this.searchQuery) {
8051
+ const q = this.searchQuery.toLowerCase();
8052
+ filtered = filtered.filter(sw => sw.name.toLowerCase().includes(q) ||
8053
+ sw.learning_resources.some(lr => {
8054
+ var _a, _b;
8055
+ return ((_a = lr.name) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(q)) ||
8056
+ ((_b = lr.abstract) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(q));
8057
+ }));
8058
+ }
8059
+ return filtered;
8060
+ }
8061
+ getFilteredResources(resources) {
8062
+ let filtered = resources;
8063
+ if (this.filterType) {
8064
+ filtered = filtered.filter(lr => lr.type === this.filterType);
8065
+ }
8066
+ if (this.filterLevel) {
8067
+ filtered = filtered.filter(lr => lr.educational_level === this.filterLevel);
8068
+ }
8069
+ return filtered;
8070
+ }
8071
+ /* TODO: Uncomment when filters are enabled
8072
+ private getAllTypes(): string[] {
8073
+ const types = new Set<string>();
8074
+ this.software.forEach(sw =>
8075
+ sw.learning_resources_types.forEach(t => types.add(t))
8076
+ );
8077
+ return Array.from(types).sort();
8078
+ }
8079
+
8080
+ private getAllLevels(): string[] {
8081
+ const levels = new Set<string>();
8082
+ this.software.forEach(sw =>
8083
+ sw.learning_resources_levels.forEach(l => levels.add(l))
8084
+ );
8085
+ return Array.from(levels).sort();
8086
+ }
8087
+ */
8088
+ getTagIntent(type) {
8089
+ const map = {
8090
+ 'interactive tutorial': 'brand',
8091
+ 'video tutorial': 'primary',
8092
+ 'user documentation': 'dark',
8093
+ 'video presentation': 'inverse',
8094
+ 'slide deck': 'strong',
8095
+ };
8096
+ return map[type] || 'brand-dark';
8097
+ }
8098
+ getLevelTagIntent(level) {
8099
+ const map = {
8100
+ 'beginner': 'brand',
8101
+ 'intermediate': 'dark',
8102
+ 'advanced': 'strong',
8103
+ };
8104
+ return map[level] || 'brand-dark';
8105
+ }
8106
+ renderAccordionDescription(sw) {
8107
+ const count = sw.learning_resources_count;
8108
+ const types = sw.learning_resources_types.join(', ');
8109
+ return `${count} resource${count !== 1 ? 's' : ''} — ${types}`;
8110
+ }
8111
+ renderResources(sw) {
8112
+ const filtered = this.getFilteredResources(sw.learning_resources);
8113
+ return (index.h("div", { class: "resources-content" }, sw.kg_search_url && (index.h("div", { class: "kg-link" }, index.h("eds-link", { url: sw.kg_search_url, label: "View in EBRAINS Knowledge Graph", intent: "cta", external: true }))), index.h("table", { class: "resources-table" }, index.h("thead", null, index.h("tr", null, index.h("th", { class: "col-name" }, "Name"), index.h("th", { class: "col-type" }, "Type"), index.h("th", { class: "col-level" }, "Level"))), index.h("tbody", null, filtered.map(lr => (index.h("tr", { class: `resource-row ${lr.iri ? 'resource-row--clickable' : ''}`, onClick: () => {
8114
+ if (lr.iri) {
8115
+ window.open(lr.iri, '_blank', 'noopener,noreferrer');
8116
+ }
8117
+ } }, index.h("td", { class: "col-name" }, index.h("span", { class: "resource-name" }, lr.name || 'Untitled'), lr.abstract && (index.h("p", { class: "resource-desc" }, lr.abstract))), index.h("td", { class: "col-type" }, lr.type && (index.h("eds-tag", { label: lr.type, intent: this.getTagIntent(lr.type), size: "medium" }))), index.h("td", { class: "col-level" }, lr.educational_level && (index.h("eds-tag", { label: lr.educational_level, intent: this.getLevelTagIntent(lr.educational_level), size: "medium" })))))))), filtered.length === 0 && (index.h("p", { class: "no-results" }, "No resources match the current filters."))));
8118
+ }
8119
+ render() {
8120
+ // Always render the same outer scaffold (header + content area) so the
8121
+ // heading sits in identical position across loading / error / loaded
8122
+ // states and the spinner appears where the accordion list will render.
8123
+ const filtered = !this.loading && !this.error ? this.getFilteredSoftware() : [];
8124
+ // const allTypes = this.getAllTypes();
8125
+ // const allLevels = this.getAllLevels();
8126
+ return (index.h("div", { key: '154b59a74cb32996f1bee10ee7758d916bebdd43', class: "lr-container" }, index.h("div", { key: '0c5c04b65f0c4e4c032b1b1a7d96e98fd6775563', class: "lr-header" }, index.h("h2", { key: '01ef66537b31a63521f0406cd2ec9976b532d18f', class: "lr-heading" }, this.heading)), this.loading && (index.h("div", { key: '134ca8e5f7349127b40aa1ae0967cd12dc12cc0b', class: "loading", role: "status", "aria-live": "polite" }, index.h("eds-spinner", { key: 'a3a0621b6ea041f8da4ef6f36c1688974f3c5591', size: "sm", variant: "primary", background: "transparent", message: "Loading learning resources..." }))), this.error && !this.loading && (index.h("eds-alert", { key: 'a0334442c175374daf8ce2be4da60ac004e4d0e2', intent: "error", message: this.error })), !this.loading && !this.error && (index.h("div", { key: 'f2b8244f1ee5c052cabd5eec8cbfc36d06f4d08d', class: "accordion-list" }, filtered.map(sw => (index.h("eds-accordion", { heading: sw.name, description: this.renderAccordionDescription(sw), variant: this.variant, icon: "book", switchBg: true, clampText: false }, this.renderResources(sw)))), filtered.length === 0 && (index.h("p", { key: 'd572c9eb76279c93ba2bd5f0fae20b4e1d9fc816', class: "no-results" }, "No software matches the current filters."))))));
8127
+ }
8128
+ get el() { return index.getElement(this); }
8129
+ };
8130
+ EdsKgLearningResources.style = EdsKgLearningResourcesStyle0;
8131
+
7811
8132
  const edsKgWebServicesSelectCss = ".kg-web-services-select-container{width:100%}.loading-container,.error-container{width:100%}";
7812
8133
  const EdsKgWebServicesSelectStyle0 = edsKgWebServicesSelectCss;
7813
8134
 
@@ -8181,7 +8502,7 @@ const EdsLink = class {
8181
8502
  const labelClasses = this.hideLabelOnSmallScreen
8182
8503
  ? 'hidden lg:flex' // Tailwind example: hidden on small screens, visible on larger
8183
8504
  : '';
8184
- return (index.h("a", { key: 'b604585e484db17a87cba4fb492ef17014c0c88a', class: `${classes || ''}`, href: isInteractive ? safeUrl : undefined, target: this.external && isInteractive ? '_blank' : undefined, rel: this.external && isInteractive ? 'noopener noreferrer' : undefined, tabIndex: isInteractive ? 0 : -1, "aria-label": isIconOnly ? this.ariaLabel || 'Link' : undefined, "aria-disabled": this.disabled ? 'true' : undefined, "aria-current": this.current ? 'page' : undefined, role: this.disabled ? 'link' : undefined, download: this.download ? '' : undefined, onClick: (event) => this.handleClick(event), onKeyDown: (event) => this.handleKeyDown(event) }, index.h("span", { key: 'c3d5d62b4740ecb9f4fa6330147bb1f23afe22e0', class: "z-1 relative inline-flex items-center justify-center" }, this.renderLeftIcon(), this.label && (index.h("span", { key: 'c4340d032516895b8ad9a01170998605875a5774', class: `${labelClasses} ${this.icon ? (this.iconPos === 'right' ? (this.size === 'large' ? 'pr-4' : 'pr-2') : (this.size === 'large' ? 'pl-4' : 'pl-2')) : ''}` }, this.label)), this.renderRightIcon())));
8505
+ return (index.h("a", { key: 'd167c16280b7f0b4c1fcf14f0f0d3468111e715b', class: `${classes || ''}`, href: isInteractive ? safeUrl : undefined, target: this.external && isInteractive ? '_blank' : undefined, rel: this.external && isInteractive ? 'noopener noreferrer' : undefined, tabIndex: isInteractive ? 0 : -1, "aria-label": isIconOnly ? this.ariaLabel || 'Link' : undefined, "aria-disabled": this.disabled ? 'true' : undefined, "aria-current": this.current ? 'page' : undefined, role: this.disabled ? 'link' : undefined, download: this.download ? '' : undefined, onClick: (event) => this.handleClick(event), onKeyDown: (event) => this.handleKeyDown(event) }, index.h("span", { key: '000476a609888f5f848722015ce5e6137f26e371', class: "z-1 relative inline-flex items-center justify-center" }, this.renderLeftIcon(), this.label && (index.h("span", { key: '15232cde31d23c5a466189c69fbdb9db48f08274', class: `${labelClasses} ${this.icon ? (this.iconPos === 'right' ? (this.size === 'large' ? 'pr-4' : 'pr-2') : (this.size === 'large' ? 'pl-4' : 'pl-2')) : ''}` }, this.label)), this.renderRightIcon())));
8185
8506
  }
8186
8507
  get el() { return index.getElement(this); }
8187
8508
  };
@@ -8225,13 +8546,13 @@ const EdsLogo = class {
8225
8546
  }
8226
8547
  render() {
8227
8548
  const logoContent = this.getLogo();
8228
- return (index.h("a", { key: '06321ecfcf456f1870cd080043203258306a2451', href: this.href, onClick: () => this.handleClick(), class: "eds-logo-wrapper", "aria-label": this.label }, index.h("div", { key: '0e9da2f98700553f4898d0f60935f1c5cbd97cbc', innerHTML: logoContent })));
8549
+ return (index.h("a", { key: '3f8257c9481079f011278b114e13effe9057d823', href: this.href, onClick: () => this.handleClick(), class: "eds-logo-wrapper", "aria-label": this.label }, index.h("div", { key: '4dac45a1a0c38c6e1613995aad2005b41acac775', innerHTML: logoContent })));
8229
8550
  }
8230
8551
  get el() { return index.getElement(this); }
8231
8552
  };
8232
8553
  EdsLogo.style = EdsLogoStyle0;
8233
8554
 
8234
- const edsMatomoNoticeCss = ".fixed{position:fixed}.absolute{position:absolute}.w-full{width:100%}.bottom-0{bottom:0rem}.bottom-4{bottom:0.25rem}.p-4{padding:0.25rem}.p-6{padding:0.375rem}.p-8{padding:0.5rem}.z-10{z-index:10}.z-\\[999999\\]{z-index:999999}.left-0{left:0rem}.left-1\\/2{left:50%}.grow{flex-grow:1}.-translate-x-1\\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex{display:flex}.gap-12{gap:0.75rem}.gap-20{gap:1.25rem}.gap-4{gap:0.25rem}.gap-8{gap:0.5rem}@media (min-width: 750px){.md\\:left-1\\/2{left:50%}.md\\:flex{display:flex}.md\\:hidden{display:none}.md\\:-translate-x-1\\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\\:-translate-y-1\\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}";
8555
+ const edsMatomoNoticeCss = ":host{display:block;background-color:var(--white, #FFFFFF);border-radius:16px;box-shadow:0 8px 24px rgba(0, 0, 0, 0.12);overflow:hidden}.flex{display:flex}.items-center{align-items:center}.gap-8{gap:0.5rem}";
8235
8556
  const EdsMatomoNoticeStyle0 = edsMatomoNoticeCss;
8236
8557
 
8237
8558
  const EdsMatomoNotice = class {
@@ -8342,13 +8663,19 @@ const EdsMatomoNotice = class {
8342
8663
  if (!this.showNotice) {
8343
8664
  return null;
8344
8665
  }
8345
- return (index.h("div", { class: "p-8" }, index.h("eds-accordion", { title: this.heading, description: this.hasCookieConsent() ? this.optOutMessage : this.description, switchBg: true, expanded: true }, this.hasCookieConsent() ? (index.h("div", { class: "flex items-center gap-8" }, this.optedOut() ? (index.h("eds-button", { intent: "brand", label: "Opt me in again", pill: true, "aria-label": "Opt me in again", onClick: () => this.optInAnalytics() })) : (index.h("eds-button", { intent: "brand", label: "Keep Me In", pill: true, "aria-label": "Keep Me In", onClick: () => this.keepMeIn() })), index.h("eds-button", { intent: "ghost", label: "Opt-out", pill: true, "aria-label": "Opt-out from analytics", onClick: () => this.optOutAnalytics() }))) : (index.h("div", { class: "flex items-center gap-8" }, index.h("eds-button", { intent: "brand", pill: true, label: "I agree", "aria-label": "Opt-in for analytics", onClick: () => this.optInAnalytics() }), index.h("eds-button", { intent: "ghost", pill: true, label: "No, thanks", "aria-label": "Opt-out from analytics", onClick: () => this.noThanks() }))))));
8666
+ return (
8667
+ // Content-only render — no positioning, no overlay, no sizing.
8668
+ // The host application wraps this component in whatever positioned
8669
+ // container makes sense (fixed bottom banner, modal, sidebar slot,
8670
+ // etc.). See packages/shared-hugo/layouts/_default/baseof.html for
8671
+ // the bottom-centered card wrapper used by handbook/eds-docs.
8672
+ index.h("div", null, index.h("eds-accordion", { title: this.heading, description: this.hasCookieConsent() ? this.optOutMessage : this.description, switchBg: true, expanded: true }, this.hasCookieConsent() ? (index.h("div", { class: "flex items-center gap-8" }, this.optedOut() ? (index.h("eds-button", { intent: "brand", label: "Opt me in again", pill: true, "aria-label": "Opt me in again", onClick: () => this.optInAnalytics() })) : (index.h("eds-button", { intent: "brand", label: "Keep Me In", pill: true, "aria-label": "Keep Me In", onClick: () => this.keepMeIn() })), index.h("eds-button", { intent: "ghost", label: "Opt-out", pill: true, "aria-label": "Opt-out from analytics", onClick: () => this.optOutAnalytics() }))) : (index.h("div", { class: "flex items-center gap-8" }, index.h("eds-button", { intent: "brand", pill: true, label: "I agree", "aria-label": "Opt-in for analytics", onClick: () => this.optInAnalytics() }), index.h("eds-button", { intent: "ghost", pill: true, label: "No, thanks", "aria-label": "Opt-out from analytics", onClick: () => this.noThanks() }))))));
8346
8673
  }
8347
8674
  get el() { return index.getElement(this); }
8348
8675
  };
8349
8676
  EdsMatomoNotice.style = EdsMatomoNoticeStyle0;
8350
8677
 
8351
- const edsNpsCss = ".flex{display:flex}.justify-between{justify-content:space-between}.mt-4{margin-top:0.25rem}.mt-8{margin-top:0.5rem}.ml-4{margin-left:0.25rem}.mr-4{margin-right:0.25rem}.gap-2{gap:0.125rem}.gap-4{gap:0.25rem}.grid{display:grid}.grid-col-span-1{--container-grid-columns:1;grid-column:span 1 / span 1}.grid-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr))}.grid-cols-11[class*=\"grid-line-x\"][class*=\"grid-line-x\"]>*:nth-child(n)::before{border-bottom-width:1px}.grid-cols-11[class*=\"grid-line-xfull\"]>*:nth-child(n)::before{inset-inline-start:calc(var(--inner-gutter) / -2);inset-inline-end:calc(var(--inner-gutter) / -2)}.grid-cols-11[class*=\"grid-line-x\"]>*:nth-child(11n+1)::before{inset-inline-start:0}.grid-cols-11[class*=\"grid-line-x\"]>*:nth-child(11n+11)::before{inset-inline-end:0}.grid-cols-11[class*=\"grid-line-x\"]>*:nth-child(11n+1):nth-last-child(-n+11)::before{border-bottom-width:0}.grid-cols-11[class*=\"grid-line-x\"]>*:nth-child(11n+1):nth-last-child(-n+11)~*::before{border-bottom-width:0}.grid-cols-11[class*=\"grid-line-y\"][class*=\"grid-line-y\"]>*:nth-child(n)::after{border-inline-end-width:1px}.grid-cols-11[class*=\"grid-line-y\"][class*=\"grid-line-y\"]>*:nth-child(11n+11)::after{border-inline-end-width:0}.grid-cols-11[class*=\"grid-line-y\"][class*=\"grid-line-y\"]>*:nth-child(-n+11)::after{top:0}.grid-cols-11[class*=\"grid-line-y\"][class*=\"grid-line-y\"]>*:nth-child(11n+1):nth-last-child(-n+11)::after{bottom:0}.grid-cols-11[class*=\"grid-line-y\"][class*=\"grid-line-y\"]>*:nth-child(11n+1):nth-last-child(-n+11)~li::after{bottom:0}.f-ui-04{font-family:var(--f-ui-04-fontFamily);font-weight:var(--f-ui-04-fontWeight);font-size:var(--f-ui-04-fontSize);line-height:var(--f-ui-04-lineHeight);letter-spacing:var(--f-ui-04-letterSpacing)}.text-light{color:var(--grey-dark)}.flex-wrap{flex-wrap:wrap}";
8678
+ const edsNpsCss = ".eds-nps__labels{padding-top:0.75rem;padding-bottom:0.5rem}.eds-nps__scale{display:block;width:fit-content;max-width:100%;padding-top:0.5rem;}#nps-buttons{gap:0.6rem}.eds-nps__btn{border-radius:9999px;transition:transform 0.15s ease-in-out}.eds-nps__btn.is-selected{transform:scale(1.12)}.flex{display:flex}.justify-between{justify-content:space-between}.mt-4{margin-top:0.25rem}.mt-8{margin-top:0.5rem}.ml-4{margin-left:0.25rem}.mr-4{margin-right:0.25rem}.gap-2{gap:0.125rem}.gap-4{gap:0.25rem}.grid{display:grid}.grid-col-span-1{--container-grid-columns:1;grid-column:span 1 / span 1}.grid-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr))}.grid-cols-11[class*=\"grid-line-x\"][class*=\"grid-line-x\"]>*:nth-child(n)::before{border-bottom-width:1px}.grid-cols-11[class*=\"grid-line-xfull\"]>*:nth-child(n)::before{inset-inline-start:calc(var(--inner-gutter) / -2);inset-inline-end:calc(var(--inner-gutter) / -2)}.grid-cols-11[class*=\"grid-line-x\"]>*:nth-child(11n+1)::before{inset-inline-start:0}.grid-cols-11[class*=\"grid-line-x\"]>*:nth-child(11n+11)::before{inset-inline-end:0}.grid-cols-11[class*=\"grid-line-x\"]>*:nth-child(11n+1):nth-last-child(-n+11)::before{border-bottom-width:0}.grid-cols-11[class*=\"grid-line-x\"]>*:nth-child(11n+1):nth-last-child(-n+11)~*::before{border-bottom-width:0}.grid-cols-11[class*=\"grid-line-y\"][class*=\"grid-line-y\"]>*:nth-child(n)::after{border-inline-end-width:1px}.grid-cols-11[class*=\"grid-line-y\"][class*=\"grid-line-y\"]>*:nth-child(11n+11)::after{border-inline-end-width:0}.grid-cols-11[class*=\"grid-line-y\"][class*=\"grid-line-y\"]>*:nth-child(-n+11)::after{top:0}.grid-cols-11[class*=\"grid-line-y\"][class*=\"grid-line-y\"]>*:nth-child(11n+1):nth-last-child(-n+11)::after{bottom:0}.grid-cols-11[class*=\"grid-line-y\"][class*=\"grid-line-y\"]>*:nth-child(11n+1):nth-last-child(-n+11)~li::after{bottom:0}.f-ui-04{font-family:var(--f-ui-04-fontFamily);font-weight:var(--f-ui-04-fontWeight);font-size:var(--f-ui-04-fontSize);line-height:var(--f-ui-04-lineHeight);letter-spacing:var(--f-ui-04-letterSpacing)}.text-light{color:var(--grey-dark)}.flex-wrap{flex-wrap:wrap}";
8352
8679
  const EdsNpsStyle0 = edsNpsCss;
8353
8680
 
8354
8681
  const EdsNps = class {
@@ -8429,14 +8756,14 @@ const EdsNps = class {
8429
8756
  }
8430
8757
  render() {
8431
8758
  const count = this.max - this.min + 1;
8432
- return (index.h("div", { key: '932d0a62e52376c1ddaf71e8d21bf5437c2d0b9f', class: "eds-nps" }, index.h("eds-input-label", { key: '60f5b6849dcc53f2a0d46fa5e44499076bd46174', id: "nps-question", name: "nps-question", label: this.question }), index.h("div", { key: '14d032aa6dc6b2cc67189f6e11a0fc59ca420cbb', id: "nps-buttons", role: "radiogroup", "aria-labelledby": "nps-question", onKeyDown: this.handleKeyNav, class: "flex flex-wrap gap-2 my-8" }, Array.from({ length: count }, (_, i) => {
8759
+ return (index.h("div", { key: '412ddeabf0cc97829202063af25f17e3309b0754', class: "eds-nps" }, index.h("eds-input-label", { key: '100a47e710fa75d6a5761a87ca68e8bc8910e248', id: "nps-question", name: "nps-question", label: this.question }), index.h("div", { key: '9a7a63112e17f4c725005e1ae8e42c98107db7c4', class: "eds-nps__scale" }, index.h("div", { key: '501029dad573cd31d956ae3cae67f2db9f2649f1', id: "nps-buttons", role: "radiogroup", "aria-labelledby": "nps-question", onKeyDown: this.handleKeyNav, class: "flex flex-wrap gap-2 my-8" }, Array.from({ length: count }, (_, i) => {
8433
8760
  const val = this.min + i;
8434
8761
  const isSelected = val === this.internalValue;
8435
8762
  const tabIndex = isSelected || (this.internalValue == null && i === 0) ? 0 : -1;
8436
- return (index.h("div", { class: "flex", key: val }, index.h("eds-button", { ref: (el) => (this.btnRefs[i] = el), size: "large", role: "radio", "aria-checked": isSelected ? 'true' : 'false', "aria-label": `${val}`, onClick: () => this.onSelect(val), tabIndex: tabIndex, intent: isSelected ? 'brand' : 'neutral', "extra-class": "!block !px-0 w-full", label: `${val}`, pill: true, onFocus: () => {
8763
+ return (index.h("div", { class: "flex", key: val }, index.h("eds-button", { ref: (el) => (this.btnRefs[i] = el), size: "large", role: "radio", "aria-checked": isSelected ? 'true' : 'false', "aria-label": `${val}`, onClick: () => this.onSelect(val), tabIndex: tabIndex, intent: isSelected ? 'brand' : 'brandLight', class: isSelected ? 'eds-nps__btn is-selected' : 'eds-nps__btn', "extra-class": "!block !px-0 w-full", label: `${val}`, pill: true, onFocus: () => {
8437
8764
  this.internalValue = val;
8438
8765
  } })));
8439
- })), index.h("div", { key: 'f1fd58c7c1003f144b816c9a1d169a2edec4a768', class: "flex justify-between mt-8" }, index.h("span", { key: '476a3c3b3ef1c43744b8a69e577e597fff887beb', class: "f-ui-04 text-light ml-4" }, this.leftLabel), index.h("span", { key: '275ec0c204781365c2e57283c1096fadb853dbe5', class: "f-ui-04 text-light mr-4" }, this.rightLabel))));
8766
+ })), index.h("div", { key: 'aa15457591f1edf6e59eed384bcfbb25d49c9fd5', class: "flex justify-between eds-nps__labels" }, index.h("span", { key: 'a468b290491e368e3084f17ce40c6aa39e00ad3a', class: "f-ui-04 text-light ml-4" }, this.leftLabel), index.h("span", { key: '146b9eea4bbc360f7765e69e319738c77beae69d', class: "f-ui-04 text-light mr-4" }, this.rightLabel)))));
8440
8767
  }
8441
8768
  get el() { return index.getElement(this); }
8442
8769
  static get watchers() { return {
@@ -8686,7 +9013,7 @@ const EdsPagination = class {
8686
9013
  }
8687
9014
  render() {
8688
9015
  const navigableIndex = -1; // Track index for keyboard navigation
8689
- return (index.h("div", { key: '6d7dea7a6d544bf79e944dfeb80cffb2f5a0b0cb' }, this.total > 0 && this.mode === 'default' && (index.h("p", { key: '77da5262419978bf0806155727f64c2c957e3bb1', class: "f-ui-03 text-light mb-28 w-full text-center", "aria-live": "polite", id: "pagination-info" }, index.h("span", { key: '537551dfe8de1af55d3350cef4fa62f503aba3c1', class: "text-light sr-only" }, "Results:"), this.pageResults())), this.mode === 'navigator' || (this.lastPage && this.lastPage > 1) ? (index.h("nav", { "aria-label": "Pagination Navigation", "aria-describedby": this.mode === 'default' ? 'pagination-info' : undefined, onKeyDown: this.handleKeyDown }, index.h("ul", { class: "flex items-center justify-center gap-x-8", role: "list" }, index.h("li", { class: "mr-auto" }, this.useButtons ? (index.h("div", { class: "pagination-button-wrapper", onFocus: () => this.handleItemFocus(navigableIndex) }, index.h("eds-button", { label: this.prevLabel, disabled: this.mode === 'navigator' ? !this.prevUrl : this.isFirstPage(), "aria-label": "Go to previous page", icon: "chevron-left", "icon-pos": "left", size: "small", "icon-small": "true", intent: "secondary", "extra-class": "!p-8 lg:!pr-12 pagination-button", onClick: (event) => {
9016
+ return (index.h("div", { key: '5c11fd306f0ebf47a452e44d633e18b2e3860d78' }, this.total > 0 && this.mode === 'default' && (index.h("p", { key: 'fe8b7f7b6c7785152f1edd90a750f4a9a7e2768b', class: "f-ui-03 text-light mb-28 w-full text-center", "aria-live": "polite", id: "pagination-info" }, index.h("span", { key: '5e2c67535dbf765dc662770164404f0de69315a1', class: "text-light sr-only" }, "Results:"), this.pageResults())), this.mode === 'navigator' || (this.lastPage && this.lastPage > 1) ? (index.h("nav", { "aria-label": "Pagination Navigation", "aria-describedby": this.mode === 'default' ? 'pagination-info' : undefined, onKeyDown: this.handleKeyDown }, index.h("ul", { class: "flex items-center justify-center gap-x-8", role: "list" }, index.h("li", { class: "mr-auto" }, this.useButtons ? (index.h("div", { class: "pagination-button-wrapper", onFocus: () => this.handleItemFocus(navigableIndex) }, index.h("eds-button", { label: this.prevLabel, disabled: this.mode === 'navigator' ? !this.prevUrl : this.isFirstPage(), "aria-label": "Go to previous page", icon: "chevron-left", "icon-pos": "left", size: "small", "icon-small": "true", intent: "ghost", "extra-class": "!p-8 lg:!pr-12 pagination-button", onClick: (event) => {
8690
9017
  if (this.mode === 'default' && !this.isFirstPage()) {
8691
9018
  this.handlePageClick(event, (this.currentPage || 1) - 1);
8692
9019
  }
@@ -8695,7 +9022,7 @@ const EdsPagination = class {
8695
9022
  : this.isFirstPage()
8696
9023
  ? '#'
8697
9024
  : this.generateLink(this.currentPage - 1).url, disabled: this.mode === 'navigator' ? !this.prevUrl : this.isFirstPage(), "aria-label": "Go to previous page", icon: "chevron-left", "icon-pos": "left", size: "small", "icon-small": "true", intent: "strong", "hide-label-on-small-screen": true, class: "!p-8 lg:!pr-12" }))), this.mode === 'default' &&
8698
- this.links.map((link, index$1) => (index.h("li", { key: index$1, class: "f-ui-02 flex h-36 items-center justify-center" }, typeof link === 'string' ? (index.h("span", { class: "flex items-center justify-center", "aria-hidden": "true" }, link)) : this.useButtons ? (index.h("div", { class: "pagination-button-wrapper", onFocus: () => this.handleItemFocus(navigableIndex) }, index.h("eds-button", { label: link.label, "aria-label": link.current ? `Current page, page ${link.label}` : `Go to page ${link.label}`, "aria-current": link.current ? 'page' : undefined, size: "small", "extra-class": "!p-8 pagination-button", intent: link.current ? 'primary' : 'secondary', onClick: (event) => this.handlePageClick(event, parseInt(link.label)) }))) : (index.h("eds-link", { url: link.url, "aria-label": link.ariaLabel, label: link.label, current: link.current, "aria-current": link.current ? 'page' : undefined, size: "small", class: "!p-8", intent: link.current ? 'primary' : 'secondary', onClick: (event) => this.handlePageClick(event, parseInt(link.label)) }))))), index.h("li", { class: "ml-auto" }, this.useButtons ? (index.h("div", { class: "pagination-button-wrapper", onFocus: () => this.handleItemFocus(navigableIndex) }, index.h("eds-button", { label: this.nextLabel, disabled: this.mode === 'navigator' ? !this.nextUrl : this.isLastPage(), "aria-label": "Go to next page", size: "small", "icon-small": "true", icon: "chevron-right", intent: "secondary", "extra-class": "!p-8 lg:!pl-12 pagination-button", onClick: (event) => {
9025
+ this.links.map((link, index$1) => (index.h("li", { key: index$1, class: "f-ui-02 flex h-36 items-center justify-center" }, typeof link === 'string' ? (index.h("span", { class: "flex items-center justify-center", "aria-hidden": "true" }, link)) : this.useButtons ? (index.h("div", { class: "pagination-button-wrapper", onFocus: () => this.handleItemFocus(navigableIndex) }, index.h("eds-button", { label: link.label, "aria-label": link.current ? `Current page, page ${link.label}` : `Go to page ${link.label}`, "aria-current": link.current ? 'page' : undefined, size: "small", "extra-class": "!p-8 pagination-button", intent: link.current ? 'brand' : 'ghost', onClick: (event) => this.handlePageClick(event, parseInt(link.label)) }))) : (index.h("eds-link", { url: link.url, "aria-label": link.ariaLabel, label: link.label, current: link.current, "aria-current": link.current ? 'page' : undefined, size: "small", class: "!p-8", intent: link.current ? 'primary' : 'secondary', onClick: (event) => this.handlePageClick(event, parseInt(link.label)) }))))), index.h("li", { class: "ml-auto" }, this.useButtons ? (index.h("div", { class: "pagination-button-wrapper", onFocus: () => this.handleItemFocus(navigableIndex) }, index.h("eds-button", { label: this.nextLabel, disabled: this.mode === 'navigator' ? !this.nextUrl : this.isLastPage(), "aria-label": "Go to next page", size: "small", "icon-small": "true", icon: "chevron-right", intent: "ghost", "extra-class": "!p-8 lg:!pl-12 pagination-button", onClick: (event) => {
8699
9026
  if (this.mode === 'default' && !this.isLastPage()) {
8700
9027
  this.handlePageClick(event, (this.currentPage || 1) + 1);
8701
9028
  }
@@ -8771,7 +9098,7 @@ const EdsProgressBar = class {
8771
9098
  };
8772
9099
  EdsProgressBar.style = EdsProgressBarStyle0;
8773
9100
 
8774
- const edsRatingCss = ":host{display:inline-block}.block{display:block}.stars{display:flex;gap:0.25rem;cursor:pointer}.star{color:var(--star-empty-color, #ccc);transition:color 0.2s ease-in-out}.star.filled{color:var(--brand-green);}.star:hover,.star.filled:hover{transform:scale(1.2)}.flex{display:flex}.inline-flex{display:inline-flex}.flex-col{flex-direction:column}.mt-4{margin-top:0.25rem}.mt-6{margin-top:0.375rem}.mt-8{margin-top:0.5rem}.my-4{margin-top:0.25rem;margin-bottom:0.25rem}.my-8{margin-top:0.5rem;margin-bottom:0.5rem}.my-16{margin-top:1rem;margin-bottom:1rem}.my-20{margin-top:1.25rem;margin-bottom:1.25rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.0625rem * var(--tw-space-x-reverse));margin-left:calc(0.0625rem * calc(1 - var(--tw-space-x-reverse)))}";
9101
+ const edsRatingCss = ":host{display:inline-block}.block{display:block}.stars{display:flex;gap:0.25rem;cursor:pointer}.star{color:var(--star-empty-color, #ccc);transition:color 0.2s ease-in-out}.star.filled{color:var(--brand-green);}.star:hover,.star.filled:hover{transform:scale(1.2)}.eds-rating__btn{transition:transform 0.15s ease-in-out}.eds-rating__btn.is-selected{transform:scale(1.05)}.flex{display:flex}.inline-flex{display:inline-flex}.flex-col{flex-direction:column}.mt-4{margin-top:0.25rem}.mt-6{margin-top:0.375rem}.mt-8{margin-top:0.5rem}.my-4{margin-top:0.25rem;margin-bottom:0.25rem}.my-8{margin-top:0.5rem;margin-bottom:0.5rem}.my-16{margin-top:1rem;margin-bottom:1rem}.my-20{margin-top:1.25rem;margin-bottom:1.25rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.0625rem * var(--tw-space-x-reverse));margin-left:calc(0.0625rem * calc(1 - var(--tw-space-x-reverse)))}";
8775
9102
  const EdsRatingStyle0 = edsRatingCss;
8776
9103
 
8777
9104
  const EdsRating = class {
@@ -8850,12 +9177,12 @@ const EdsRating = class {
8850
9177
  this.onSelect(next);
8851
9178
  }
8852
9179
  render() {
8853
- return (index.h("div", { key: '89671afe2d02d527001009ee83fb0d4e48550479', id: "rating-buttons", role: "group", "aria-labelledby": "rating", class: "stars flex space-x-1 my-8", onKeyDown: (e) => this.handleKeyNav(e) }, Array.from({ length: this.ratingCount }, (_, index$1) => {
9180
+ return (index.h("div", { key: '01857f12c63fbe53b95152902ddba594aa736f6f', id: "rating-buttons", role: "group", "aria-labelledby": "rating", class: "stars flex space-x-1 my-8", onKeyDown: (e) => this.handleKeyNav(e) }, Array.from({ length: this.ratingCount }, (_, index$1) => {
8854
9181
  const starRating = index$1 + 1;
8855
9182
  const isSelected = starRating <= this.internalRating;
8856
9183
  // Use the mapping text if available; otherwise, fall back to a generic label.
8857
9184
  const checked = this.internalRating === starRating;
8858
- return (index.h("eds-button", { ref: (el) => (this.buttonRefs[index$1] = el), icon: this.ratingType, "aria-label": `${starRating} ${this.ratingType}${starRating > 1 ? 's' : ''}`, onClick: () => this.onSelect(starRating), tabIndex: checked || (this.internalRating === 0 && index$1 === 0) ? 0 : -1, intent: isSelected ? 'brand' : 'neutral', size: "large" }));
9185
+ return (index.h("eds-button", { ref: (el) => (this.buttonRefs[index$1] = el), icon: this.ratingType, "aria-label": `${starRating} ${this.ratingType}${starRating > 1 ? 's' : ''}`, onClick: () => this.onSelect(starRating), tabIndex: checked || (this.internalRating === 0 && index$1 === 0) ? 0 : -1, intent: isSelected ? 'brand' : 'brandLight', class: isSelected ? 'eds-rating__btn is-selected' : 'eds-rating__btn', size: "large" }));
8859
9186
  })));
8860
9187
  }
8861
9188
  get el() { return index.getElement(this); }
@@ -8865,6 +9192,295 @@ const EdsRating = class {
8865
9192
  };
8866
9193
  EdsRating.style = EdsRatingStyle0;
8867
9194
 
9195
+ const edsSearchSelectCss = ":host{display:block;width:100%;font-family:var(--f-ui-02-fontFamily, 'IBM Plex Sans', system-ui, sans-serif)}.eds-ss{position:relative;display:block;width:100%}.eds-ss__labelrow{display:flex;justify-content:space-between;margin-bottom:0.25rem}.eds-ss__hint{margin-top:0.5rem;margin-left:0.5rem;font-family:var(--f-ui-05-fontFamily);font-weight:var(--f-ui-05-fontWeight);font-size:var(--f-ui-05-fontSize);line-height:var(--f-ui-05-lineHeight);letter-spacing:var(--f-ui-05-letterSpacing);color:var(--grey-600)}.eds-ss__control{position:relative}.eds-ss__box{display:flex;flex-wrap:wrap;align-items:center;gap:0.35rem;width:100%;box-sizing:border-box;min-height:2.5rem;padding:6px 0.75rem;padding-right:3.75rem;border-width:2px;border-style:solid;border-color:rgba(0, 0, 0, 0.1);border-radius:8px;background:var(--white, #fff);transition-property:color, background-color, border-color;transition-timing-function:cubic-bezier(0, 0, 0.2, 1);transition-duration:300ms}.eds-ss__box:hover{border-color:var(--brand-black)}.eds-ss__box:focus-within{border-color:var(--brand-black);outline:3px solid var(--brand-green);outline-offset:2px}.eds-ss__box.is-error{border-color:var(--red-700)}.eds-ss__box.is-disabled{cursor:not-allowed;background-color:var(--grey-300)}.eds-ss__input{flex:1;min-width:6rem;border:none;outline:none;background:transparent;padding:4px 0;color:var(--brand-black);font-family:var(--f-ui-02-light-fontFamily);font-weight:var(--f-ui-02-light-fontWeight);font-size:var(--f-ui-02-light-fontSize);line-height:var(--f-ui-02-light-lineHeight);letter-spacing:var(--f-ui-02-light-letterSpacing)}.eds-ss__input::placeholder{color:var(--grey-500)}.eds-ss__input:disabled{cursor:not-allowed;color:var(--grey-500)}.eds-ss__chip{display:inline-flex;align-items:center;gap:0.35rem;padding:4px 0.4rem 4px 0.7rem;background:rgba(0, 200, 123, 0.12);color:var(--brand-green-dark, #00A867);border-radius:6px;font-family:var(--f-ui-02-fontFamily);font-size:var(--f-ui-02-fontSize);font-weight:600;line-height:1.4;max-width:100%}.eds-ss__chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eds-ss__chip-x{flex-shrink:0;border:none;background:none;cursor:pointer;color:var(--brand-green-dark, #00A867);font-size:1.2rem;line-height:1;padding:0 2px}.eds-ss__chip-x:hover{color:var(--brand-black, #07140D)}.eds-ss__clear,.eds-ss__chevron{position:absolute;top:50%;transform:translateY(-50%)}.eds-ss__chevron{right:6px;width:1.75rem;height:1.75rem;display:flex;align-items:center;justify-content:center;background-color:var(--grey-300);border-radius:4px;color:var(--brand-black);pointer-events:none}.eds-ss__clear{right:2.6rem;color:var(--grey-600, #6e6e6e);background:none;border:none;cursor:pointer;font-size:1.05rem;line-height:1}.eds-ss__clear:hover{color:var(--brand-black, #07140D)}.eds-ss__list{position:absolute;z-index:50;left:0;right:0;margin:0.25rem 0 0;padding:0.25rem;list-style:none;max-height:18rem;overflow-y:auto;background:var(--white, #fff);border:2px solid rgba(0, 0, 0, 0.1);border-radius:8px;box-shadow:0 8px 24px rgba(0, 0, 0, 0.12)}.eds-ss__option{padding:0.5rem 0.6rem;border-radius:6px;cursor:pointer;color:var(--brand-black, #07140D);font-family:var(--f-ui-02-fontFamily);font-size:var(--f-ui-02-fontSize);line-height:var(--f-ui-02-lineHeight);letter-spacing:var(--f-ui-02-letterSpacing)}.eds-ss__option.is-active{background:rgba(0, 200, 123, 0.1)}.eds-ss__option.is-selected{font-weight:600;color:var(--brand-green-dark, #00A867)}.eds-ss__status,.eds-ss__more{padding:0.5rem 0.6rem;font-family:var(--f-ui-05-fontFamily);font-size:var(--f-ui-05-fontSize);line-height:var(--f-ui-05-lineHeight);color:var(--grey-600, #6e6e6e)}.eds-ss__status.is-error{color:var(--red-700, #d64545)}.eds-ss__more{border-top:1px solid rgba(0, 0, 0, 0.1);margin-top:0.25rem;font-style:italic}";
9196
+ const EdsSearchSelectStyle0 = edsSearchSelectCss;
9197
+
9198
+ const EdsSearchSelect = class {
9199
+ constructor(hostRef) {
9200
+ index.registerInstance(this, hostRef);
9201
+ this.edsinput = index.createEvent(this, "edsinput", 7);
9202
+ this.edschange = index.createEvent(this, "edschange", 7);
9203
+ this.debounceTimer = null;
9204
+ this.inlineOptions = [];
9205
+ this.listboxId = `eds-ss-list-${Math.round(performance.now())}`;
9206
+ // value -> label, so selected tags render readable labels even for remote
9207
+ // values whose label hasn't been fetched in the current page.
9208
+ this.labelCache = {};
9209
+ this.onInput = (e) => {
9210
+ this.query = e.target.value;
9211
+ this.open = true;
9212
+ this.activeIndex = -1;
9213
+ this.runSearch(this.query);
9214
+ };
9215
+ this.clear = () => {
9216
+ if (this.multiple) {
9217
+ this.value = [];
9218
+ this.emitValue([]);
9219
+ }
9220
+ else {
9221
+ this.value = undefined;
9222
+ this.selectedLabel = '';
9223
+ this.emitValue('');
9224
+ }
9225
+ this.query = '';
9226
+ };
9227
+ this.onKeyDown = (e) => {
9228
+ if (e.key === 'ArrowDown') {
9229
+ e.preventDefault();
9230
+ if (!this.open)
9231
+ return this.openMenu();
9232
+ this.activeIndex = Math.min(this.activeIndex + 1, this.visibleItems.length - 1);
9233
+ }
9234
+ else if (e.key === 'ArrowUp') {
9235
+ e.preventDefault();
9236
+ this.activeIndex = Math.max(this.activeIndex - 1, 0);
9237
+ }
9238
+ else if (e.key === 'Enter') {
9239
+ if (this.open && this.activeIndex >= 0) {
9240
+ e.preventDefault();
9241
+ this.select(this.visibleItems[this.activeIndex]);
9242
+ }
9243
+ }
9244
+ else if (e.key === 'Escape') {
9245
+ this.closeMenu();
9246
+ }
9247
+ else if (e.key === 'Backspace' && this.multiple && !this.query && this.selectedValues.length) {
9248
+ // Backspace on an empty query removes the last selected tag.
9249
+ this.removeValue(this.selectedValues[this.selectedValues.length - 1]);
9250
+ }
9251
+ };
9252
+ // Close when a click lands outside the component. Must be shadow-aware:
9253
+ // this component is nested inside eds-form's shadow root, so a document-level
9254
+ // listener sees the event retargeted to the OUTER host — `host.contains(target)`
9255
+ // would be false even for our own clicks and wrongly close on open. composedPath()
9256
+ // walks through every shadow boundary and contains our host iff the click was ours.
9257
+ this.onDocumentClick = (e) => {
9258
+ if (this.open && !e.composedPath().includes(this.host))
9259
+ this.closeMenu();
9260
+ };
9261
+ this.name = undefined;
9262
+ this.label = undefined;
9263
+ this.placeholder = 'Search…';
9264
+ this.required = false;
9265
+ this.disabled = false;
9266
+ this.hint = undefined;
9267
+ this.message = undefined;
9268
+ this.error = false;
9269
+ this.errorMessage = undefined;
9270
+ this.value = undefined;
9271
+ this.multiple = false;
9272
+ this.options = undefined;
9273
+ this.source = undefined;
9274
+ this.apiBase = '/api/v1';
9275
+ this.searchParam = 'q';
9276
+ this.limit = 50;
9277
+ this.debounceMs = 250;
9278
+ this.maxVisible = 100;
9279
+ this.open = false;
9280
+ this.query = '';
9281
+ this.loading = false;
9282
+ this.fetchError = '';
9283
+ this.items = [];
9284
+ this.total = 0;
9285
+ this.activeIndex = -1;
9286
+ this.selectedLabel = '';
9287
+ }
9288
+ componentWillLoad() {
9289
+ this.parseInlineOptions();
9290
+ this.resolveSelectedLabel();
9291
+ }
9292
+ onOptionsChange() {
9293
+ this.parseInlineOptions();
9294
+ this.resolveSelectedLabel();
9295
+ }
9296
+ onValueChange() {
9297
+ this.resolveSelectedLabel();
9298
+ }
9299
+ parseInlineOptions() {
9300
+ if (!this.options) {
9301
+ this.inlineOptions = [];
9302
+ return;
9303
+ }
9304
+ if (typeof this.options === 'string') {
9305
+ try {
9306
+ this.inlineOptions = JSON.parse(this.options) || [];
9307
+ }
9308
+ catch (_a) {
9309
+ this.inlineOptions = [];
9310
+ }
9311
+ }
9312
+ else {
9313
+ this.inlineOptions = this.options;
9314
+ }
9315
+ this.cacheLabels(this.inlineOptions);
9316
+ }
9317
+ cacheLabels(opts) {
9318
+ (opts || []).forEach((o) => {
9319
+ if (o && o.value != null)
9320
+ this.labelCache[String(o.value)] = o.label;
9321
+ });
9322
+ }
9323
+ /** The current selection as a value array (works for single + multi). */
9324
+ get selectedValues() {
9325
+ const v = this.value;
9326
+ if (Array.isArray(v))
9327
+ return v.map(String).filter((s) => s !== '');
9328
+ if (typeof v === 'string' && v !== '') {
9329
+ return this.multiple ? v.split(',').filter(Boolean) : [v];
9330
+ }
9331
+ return [];
9332
+ }
9333
+ labelFor(val) {
9334
+ var _a, _b;
9335
+ return (this.labelCache[String(val)] ||
9336
+ ((_a = this.inlineOptions.find((o) => String(o.value) === String(val))) === null || _a === void 0 ? void 0 : _a.label) ||
9337
+ ((_b = this.items.find((o) => String(o.value) === String(val))) === null || _b === void 0 ? void 0 : _b.label) ||
9338
+ String(val));
9339
+ }
9340
+ emitValue(v) {
9341
+ this.edsinput.emit({ value: v });
9342
+ this.edschange.emit({ value: v });
9343
+ }
9344
+ get isRemote() {
9345
+ return !!this.source && this.inlineOptions.length === 0;
9346
+ }
9347
+ resolveSelectedLabel() {
9348
+ if (!this.value) {
9349
+ this.selectedLabel = '';
9350
+ return;
9351
+ }
9352
+ // Inline: resolve label from the known list. Remote: best-effort — show the
9353
+ // value until/unless it appears in a fetched page.
9354
+ const pool = this.inlineOptions.length ? this.inlineOptions : this.items;
9355
+ const found = pool.find((o) => String(o.value) === String(this.value));
9356
+ this.selectedLabel = found ? found.label : String(this.value);
9357
+ }
9358
+ // --- Data --------------------------------------------------------------
9359
+ filterInline(q) {
9360
+ const needle = q.trim().toLowerCase();
9361
+ if (!needle)
9362
+ return this.inlineOptions;
9363
+ return this.inlineOptions.filter((o) => o.label.toLowerCase().includes(needle) ||
9364
+ String(o.value).toLowerCase().includes(needle));
9365
+ }
9366
+ async fetchRemote(q) {
9367
+ this.loading = true;
9368
+ this.fetchError = '';
9369
+ try {
9370
+ const params = new URLSearchParams({ [this.searchParam]: q, limit: String(this.limit) });
9371
+ const url = `${this.apiBase}/datasets/${encodeURIComponent(this.source)}/search?${params}`;
9372
+ const resp = await fetch(url);
9373
+ if (!resp.ok)
9374
+ throw new Error(`Search failed: ${resp.statusText}`);
9375
+ const data = await resp.json();
9376
+ this.items = data.items || [];
9377
+ this.cacheLabels(this.items);
9378
+ this.total = typeof data.total === 'number' ? data.total : this.items.length;
9379
+ this.resolveSelectedLabel();
9380
+ }
9381
+ catch (e) {
9382
+ this.fetchError = e instanceof Error ? e.message : 'Search failed';
9383
+ this.items = [];
9384
+ this.total = 0;
9385
+ }
9386
+ finally {
9387
+ this.loading = false;
9388
+ }
9389
+ }
9390
+ runSearch(q, immediate = false) {
9391
+ if (this.isRemote) {
9392
+ // Show the loading state synchronously so the debounce window renders
9393
+ // "Searching…" rather than a misleading "No matches" before the fetch.
9394
+ this.loading = true;
9395
+ clearTimeout(this.debounceTimer);
9396
+ if (immediate) {
9397
+ this.fetchRemote(q);
9398
+ }
9399
+ else {
9400
+ this.debounceTimer = setTimeout(() => this.fetchRemote(q), this.debounceMs);
9401
+ }
9402
+ }
9403
+ else {
9404
+ this.items = this.filterInline(q);
9405
+ this.total = this.items.length;
9406
+ }
9407
+ }
9408
+ // --- The capped, render-ready slice ------------------------------------
9409
+ get visibleItems() {
9410
+ return this.items.slice(0, this.maxVisible);
9411
+ }
9412
+ get hiddenCount() {
9413
+ return Math.max(0, this.total - this.visibleItems.length);
9414
+ }
9415
+ // --- Interaction -------------------------------------------------------
9416
+ openMenu() {
9417
+ if (this.disabled)
9418
+ return;
9419
+ this.open = true;
9420
+ this.activeIndex = -1;
9421
+ // Populate on first open (initial page for remote, full list for inline).
9422
+ // Immediate fetch on open — debounce only applies to typing.
9423
+ if (!this.items.length || this.isRemote)
9424
+ this.runSearch(this.query, true);
9425
+ }
9426
+ closeMenu() {
9427
+ this.open = false;
9428
+ this.activeIndex = -1;
9429
+ }
9430
+ select(opt) {
9431
+ this.labelCache[String(opt.value)] = opt.label;
9432
+ if (this.multiple) {
9433
+ const current = this.selectedValues;
9434
+ const key = String(opt.value);
9435
+ const next = current.includes(key)
9436
+ ? current.filter((v) => v !== key) // toggle off if already chosen
9437
+ : [...current, key];
9438
+ this.value = next;
9439
+ this.query = '';
9440
+ this.emitValue(next);
9441
+ // Keep the menu open so more can be picked; reset the list to all results.
9442
+ this.runSearch('', true);
9443
+ return;
9444
+ }
9445
+ this.value = opt.value;
9446
+ this.selectedLabel = opt.label;
9447
+ this.query = '';
9448
+ this.closeMenu();
9449
+ this.emitValue(opt.value);
9450
+ }
9451
+ removeValue(val, e) {
9452
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
9453
+ const next = this.selectedValues.filter((v) => v !== String(val));
9454
+ this.value = next;
9455
+ this.emitValue(next);
9456
+ }
9457
+ connectedCallback() {
9458
+ document.addEventListener('click', this.onDocumentClick, true);
9459
+ }
9460
+ disconnectedCallback() {
9461
+ document.removeEventListener('click', this.onDocumentClick, true);
9462
+ clearTimeout(this.debounceTimer);
9463
+ }
9464
+ render() {
9465
+ const selected = this.selectedValues;
9466
+ const hasSelection = selected.length > 0;
9467
+ const inputValue = this.multiple ? this.query : (this.open ? this.query : this.selectedLabel);
9468
+ const placeholder = this.multiple
9469
+ ? (hasSelection ? '' : this.placeholder)
9470
+ : (hasSelection && !this.open ? this.selectedLabel : this.placeholder);
9471
+ return (index.h("div", { key: 'f5224332aa395be2a9dd8a1312dcd1b631ad2129', class: "eds-ss" }, (this.label || this.hint) && (index.h("div", { key: 'e28da19abdedb4107a7b7be2a59e6444780f8251', class: "eds-ss__labelrow" }, this.label && (index.h("eds-input-label", { key: '81933dbc2d370b8ddbbf8f4286c3420e4f140ca7', name: `${this.name}-input`, label: this.label, required: this.required, disabled: this.disabled })), this.hint && (index.h("p", { key: '1ff5b7a62cc20bb2ce710ca2e06c728d94aef895', id: `${this.name}-hint`, class: "eds-ss__hint" }, this.hint)))), index.h("div", { key: '84fbdccc6326707ac854e06d7209dd149d9c26a7', class: "eds-ss__control relative" }, index.h("div", { key: 'ae99c3d9c706fa6619459d8d6c9baa3df610169e', class: { 'eds-ss__box': true, 'is-error': this.error || !!this.fetchError, 'is-disabled': this.disabled } }, this.multiple &&
9472
+ selected.map((v) => (index.h("span", { class: "eds-ss__chip", key: v }, index.h("span", { class: "eds-ss__chip-label" }, this.labelFor(v)), !this.disabled && (index.h("button", { type: "button", class: "eds-ss__chip-x", "aria-label": `Remove ${this.labelFor(v)}`, onMouseDown: (e) => { e.preventDefault(); this.removeValue(v, e); } }, "\u00D7"))))), index.h("input", { key: '18dcd5787c7636c09be7285fb85b77f5cae334c8', id: `${this.name}-input`, class: "eds-ss__input", type: "text", role: "combobox", autocomplete: "off", "aria-expanded": this.open ? 'true' : 'false', "aria-controls": this.listboxId, "aria-autocomplete": "list", placeholder: placeholder, value: inputValue, disabled: this.disabled, required: this.required && !hasSelection, onFocus: () => this.openMenu(), onInput: this.onInput, onKeyDown: this.onKeyDown })), !this.multiple && hasSelection && !this.disabled && (index.h("button", { key: 'c927fa49fb58b7abec13f6d436f1d1452f9644c5', type: "button", class: "eds-ss__clear", "aria-label": "Clear selection", onClick: this.clear }, "\u00D7")), index.h("span", { key: 'bff4bf41fb388f849ef9c0928f4aa88e065d718d', class: "eds-ss__chevron", "aria-hidden": "true" }, index.h("eds-icon-wrapper", { key: '7871955d6fc5626914995d51c1b4b3511b60febe', name: "chevron-right", size: 20 }))), this.open && (index.h("ul", { key: 'e529fe82576be45a0e99d4a020aa4f721b71686b', class: "eds-ss__list", id: this.listboxId, role: "listbox" }, this.loading && index.h("li", { key: 'fe8d73dfa0d6a5cf7e9bea4220511a22489884f8', class: "eds-ss__status" }, "Searching\u2026"), !this.loading && this.fetchError && index.h("li", { key: 'b708b1de4eee8e45287fd23f0bf63327032616d6', class: "eds-ss__status is-error" }, this.fetchError), !this.loading && !this.fetchError && this.visibleItems.length === 0 && (index.h("li", { key: '9400ac7a022f38935f05df3705e2a65acb9d4a04', class: "eds-ss__status" }, "No matches")), !this.loading &&
9473
+ !this.fetchError &&
9474
+ this.visibleItems.map((opt, i) => (index.h("li", { key: opt.value, class: { 'eds-ss__option': true, 'is-active': i === this.activeIndex, 'is-selected': selected.includes(String(opt.value)) }, role: "option", "aria-selected": selected.includes(String(opt.value)) ? 'true' : 'false', onMouseEnter: () => (this.activeIndex = i), onMouseDown: (e) => { e.preventDefault(); this.select(opt); } }, opt.label))), !this.loading && !this.fetchError && this.hiddenCount > 0 && (index.h("li", { key: '8e82d65e9da3755ad10ffaf0fc4a45f5bc365a48', class: "eds-ss__more" }, "+", this.hiddenCount, " more \u2014 keep typing to narrow")))), index.h("eds-input-footer", { key: '0564f006a874a3556118ce99441cbfabc230ac57', name: this.name, message: this.message, error: this.error, "error-message": this.errorMessage })));
9475
+ }
9476
+ get host() { return index.getElement(this); }
9477
+ static get watchers() { return {
9478
+ "options": ["onOptionsChange"],
9479
+ "value": ["onValueChange"]
9480
+ }; }
9481
+ };
9482
+ EdsSearchSelect.style = EdsSearchSelectStyle0;
9483
+
8868
9484
  const edsSidebarCss = ":host{display:block;width:100%;height:100%;overflow-y:auto;overflow-x:hidden;transition:width 0.3s ease}:host(.collapsed){width:4rem}:host::-webkit-scrollbar{width:8px}:host::-webkit-scrollbar-track{background:transparent}:host::-webkit-scrollbar-thumb{background:rgba(0, 0, 0, 0.2);border-radius:4px}:host::-webkit-scrollbar-thumb:hover{background:rgba(0, 0, 0, 0.3)}.sidebar-nav{padding:0.5rem 0}.sidebar-header{display:flex;justify-content:flex-end;padding:0.5rem 0.75rem;margin-bottom:0.5rem}:host(.collapsed) .sidebar-header{justify-content:center;padding:0.5rem}.collapse-toggle{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:none;border:none;cursor:pointer;padding:0;border-radius:0.375rem;transition:background-color 0.15s ease;color:inherit}.collapse-toggle:hover{background-color:rgba(0, 0, 0, 0.08)}.collapse-toggle:focus-visible{outline:2px solid var(--eds-focus-color, #0066cc);outline-offset:2px}.sidebar-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0.125rem}.sidebar-item{display:flex;flex-direction:column}.sidebar-item-content{display:flex;align-items:center;gap:0.5rem;padding:0.5rem 0.75rem;cursor:pointer;user-select:none;word-break:break-word;transition:background-color 0.15s ease;border-radius:0.375rem;margin:0 0.5rem;position:relative}:host(.collapsed) .sidebar-item-content{justify-content:center;padding:0.75rem;margin:0 0.5rem}.sidebar-item-content:hover{background-color:rgba(0, 0, 0, 0.04)}.sidebar-item-content:focus-visible{outline:2px solid var(--eds-focus-color, #0066cc);outline-offset:-2px;z-index:1}.sidebar-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:1.25rem;height:1.25rem}.sidebar-content-wrapper{display:flex;align-items:center;gap:0.5rem;flex:1;min-width:0}.sidebar-toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:1.25rem;height:1.25rem;padding:0;margin:-0.125rem 0;pointer-events:none}.sidebar-link-wrapper{flex:1;min-width:0;pointer-events:none}.sidebar-link{font-weight:400;pointer-events:none}.sidebar-children{list-style:none;margin:0.25rem 0 0 0;padding:0;display:flex;flex-direction:column;gap:0.125rem;overflow:hidden;animation:slideDown 0.2s ease}@keyframes slideDown{from{opacity:0;transform:translateY(-0.25rem)}to{opacity:1;transform:translateY(0)}}.sidebar-item.level-0 .sidebar-item-content{padding-left:0.75rem}:host(.collapsed) .sidebar-item.level-0 .sidebar-item-content{padding-left:0.75rem}.sidebar-item.level-1 .sidebar-item-content{padding-left:2rem}.sidebar-item.level-2 .sidebar-item-content{padding-left:3.25rem}.sidebar-item.level-3 .sidebar-item-content{padding-left:4.5rem}.sidebar-item.level-4 .sidebar-item-content{padding-left:5.75rem}.sidebar-item.level-5 .sidebar-item-content{padding-left:7rem}:host(.theme-default) .sidebar-item-content{border-radius:0.375rem;margin:0 0.5rem;padding:0.5rem 0.75rem}:host(.theme-default.collapsed) .sidebar-item-content{margin:0 0.5rem;border-radius:0.375rem}:host(.theme-default) .sidebar-item-content:hover{background-color:rgba(0, 0, 0, 0.04)}:host(.theme-default) .sidebar-item.active>.sidebar-item-content{background-color:transparent}:host(.theme-default) .sidebar-item.active>.sidebar-item-content .sidebar-link{font-weight:600}:host(.theme-default) .sidebar-item.level-0 .sidebar-item-content{padding-left:0.75rem}:host(.theme-default) .sidebar-item.level-1 .sidebar-item-content{padding-left:2rem}:host(.theme-default) .sidebar-item.level-2 .sidebar-item-content{padding-left:3.25rem}:host(.theme-default) .sidebar-item.level-3 .sidebar-item-content{padding-left:4.5rem}:host(.theme-default) .sidebar-item.level-4 .sidebar-item-content{padding-left:5.75rem}:host(.theme-minimal) .sidebar-item-content{border-radius:0;margin:0;padding-left:1rem;padding-right:1rem}:host(.theme-minimal.collapsed) .sidebar-item-content{margin:0 0.25rem;border-radius:0.375rem}:host(.theme-minimal) .sidebar-item-content:hover{background-color:rgba(0, 255, 157, 0.05);color:var(--brand-black, #07140D)}:host(.theme-minimal) .sidebar-item.active>.sidebar-item-content{background-color:rgba(0, 255, 157, 0.1);border-left:3px solid var(--brand-green-dark, #00C87B);padding-left:calc(1rem - 3px);color:var(--brand-black, #07140D);font-weight:500}:host(.theme-minimal.collapsed) .sidebar-item.active>.sidebar-item-content{border-left:none;border-radius:0.375rem;padding-left:0.75rem;background-color:rgba(0, 255, 157, 0.1);color:var(--brand-black, #07140D)}:host(.theme-minimal) .sidebar-item.level-1.active>.sidebar-item-content{padding-left:calc(2rem - 3px)}:host(.theme-minimal) .sidebar-item.level-2.active>.sidebar-item-content{padding-left:calc(3.25rem - 3px)}:host(.theme-minimal) .sidebar-item.level-3.active>.sidebar-item-content{padding-left:calc(4.5rem - 3px)}:host(.theme-minimal) .sidebar-item.level-4.active>.sidebar-item-content{padding-left:calc(5.75rem - 3px)}:host(.theme-minimal) .sidebar-item.level-0 .sidebar-item-content{padding-left:1rem}:host(.theme-minimal) .sidebar-item.level-1 .sidebar-item-content{padding-left:2rem}:host(.theme-minimal) .sidebar-item.level-2 .sidebar-item-content{padding-left:3.25rem}:host(.theme-minimal) .sidebar-item.level-3 .sidebar-item-content{padding-left:4.5rem}:host(.theme-minimal) .sidebar-item.level-4 .sidebar-item-content{padding-left:5.75rem}:host(.theme-minimal) .sidebar-children{position:relative}:host(.theme-ebrains) .sidebar-item-content{padding:0.5rem 1rem;border-radius:0.5rem;margin:0 0.5rem}:host(.theme-ebrains.collapsed) .sidebar-item-content{padding:0.75rem}:host(.theme-ebrains) .sidebar-item-content:hover{background-color:rgba(0, 0, 0, 0.05)}:host(.theme-ebrains) .sidebar-item.active>.sidebar-item-content{background-color:var(--brand-green-dark, #22c55e);color:white}:host(.theme-ebrains) .sidebar-item.active>.sidebar-item-content .sidebar-link{--eds-link-color:white;--eds-link-hover-color:white}:host(.theme-ebrains) .sidebar-item.active>.sidebar-item-content .sidebar-toggle{color:white}:host(.theme-ebrains) .sidebar-item.active>.sidebar-item-content .sidebar-icon{color:white}:host(.theme-ebrains) .sidebar-item.level-0 .sidebar-item-content{padding-left:1rem}:host(.theme-ebrains) .sidebar-item.level-1 .sidebar-item-content{padding-left:2.25rem}:host(.theme-ebrains) .sidebar-item.level-2 .sidebar-item-content{padding-left:3.5rem}:host(.theme-ebrains) .sidebar-item.level-3 .sidebar-item-content{padding-left:4.75rem}:host(.theme-ebrains) .sidebar-item.level-4 .sidebar-item-content{padding-left:6rem}@media (prefers-color-scheme: dark){.collapse-toggle:hover{background-color:rgba(255, 255, 255, 0.08)}:host(.theme-default) .sidebar-item-content:hover{background-color:rgba(255, 255, 255, 0.05)}:host(.theme-default) .sidebar-item.active>.sidebar-item-content{background-color:rgba(0, 102, 204, 0.15)}:host(.theme-minimal) .sidebar-item-content:hover{background-color:rgba(255, 255, 255, 0.06)}:host::-webkit-scrollbar-thumb{background:rgba(255, 255, 255, 0.2)}:host::-webkit-scrollbar-thumb:hover{background:rgba(255, 255, 255, 0.3)}}.sidebar-toggle eds-icon-wrapper,.sidebar-icon eds-icon-wrapper,.collapse-toggle eds-icon-wrapper{transition:transform 0.15s ease;display:flex;align-items:center;justify-content:center}.sidebar-item-content:focus-visible .sidebar-link{text-decoration:underline}.sidebar-item.active>.sidebar-item-content .sidebar-link{font-weight:500}:host(.collapsed) .sidebar-item-content::after{content:attr(title);position:absolute;left:100%;top:50%;transform:translateY(-50%);margin-left:0.5rem;padding:0.5rem 0.75rem;background:rgba(0, 0, 0, 0.9);color:white;border-radius:0.375rem;white-space:nowrap;font-size:0.875rem;opacity:0;pointer-events:none;transition:opacity 0.2s ease;z-index:1000}:host(.collapsed) .sidebar-item-content:hover::after{opacity:1;transition-delay:0.3s}.-ml-4{margin-left:-0.25rem}.mt-2{margin-top:0.125rem}";
8869
9485
  const EdsSidebarStyle0 = edsSidebarCss;
8870
9486
 
@@ -9016,10 +9632,10 @@ const EdsSidebar = class {
9016
9632
  } }, hasChildren && (index.h("span", { class: "sidebar-toggle -ml-4", "aria-hidden": "true" }, index.h("eds-icon-wrapper", { name: isOpen ? 'chevron-down' : 'chevron-right' }))), index.h("span", { class: "sidebar-link-wrapper" }, index.h("eds-link", { label: item.title, url: item.url || '#', intent: isActive ? 'strong' : 'weak', size: "small", "aria-label": item.title, "extra-class": "sidebar-link", tabindex: "-1" }))), hasChildren && isOpen && (index.h("ul", { id: childrenId, class: "sidebar-children" }, item.children.map((child) => this.renderItem(child, level + 1))))));
9017
9633
  }
9018
9634
  render() {
9019
- return (index.h(index.Host, { key: 'a56e293e9b53b0dbffd6268c117f77828ba5f41a', class: {
9635
+ return (index.h(index.Host, { key: 'f5221c19e8148ca62a76fb470a4aa6786c3e41b5', class: {
9020
9636
  'eds-sidebar': true,
9021
9637
  [`theme-${this.theme}`]: true
9022
- } }, index.h("nav", { key: '07ca17add683f976b30e736389eddc473e1e5669', class: "sidebar-nav", "aria-label": "Sidebar" }, index.h("ul", { key: 'a102418d399f14715eddf34e1c3373cf1be9d4aa', class: "sidebar-list" }, this.parsedItems.map((item) => this.renderItem(item, 0))))));
9638
+ } }, index.h("nav", { key: '0a975a10a3892f6eabaf2a1c2be21963f0e76549', class: "sidebar-nav", "aria-label": "Sidebar" }, index.h("ul", { key: '498436fa1f4ec7ff2f3feea843fe58b415d20a3f', class: "sidebar-list" }, this.parsedItems.map((item) => this.renderItem(item, 0))))));
9023
9639
  }
9024
9640
  get el() { return index.getElement(this); }
9025
9641
  static get watchers() { return {
@@ -9085,7 +9701,7 @@ const EdsSocialNetworks = class {
9085
9701
  const isInverse = this.variant === 'inverse';
9086
9702
  const textClass = isInverse ? 'text-inverse' : '';
9087
9703
  const linkIntent = isInverse ? 'inverse' : 'strong';
9088
- return (index.h("nav", { key: '11b876483142bb98c686a4cb722d28022ca9f40c', "aria-label": "Social media" }, index.h("p", { key: 'daf2865247ed69ab3e4233d191d8abb8d5be584f', class: `f-ui-02 ${textClass}` }, this.heading), index.h("ul", { key: '47918284e8a158d523d3329eb28f4881ac27233e', class: "mt-12 flex gap-4" }, this.socialNetworks.map((network, index$1) => (index.h("li", { key: index$1 }, index.h("eds-link", { external: true, "aria-label": `EBRAINS on ${network.label}`, url: network.url, icon: network.icon, intent: linkIntent })))))));
9704
+ return (index.h("nav", { key: '924bdf5a32b65cd0968ad92461cb8203f3305fce', "aria-label": "Social media" }, index.h("p", { key: 'f406d71ed2d7ff9048e5db05f5ad62566081aa45', class: `f-ui-02 ${textClass}` }, this.heading), index.h("ul", { key: '40d000bc78780d7ec3c0c9bf2e10ec0a26f3b72e', class: "mt-12 flex gap-4" }, this.socialNetworks.map((network, index$1) => (index.h("li", { key: index$1 }, index.h("eds-link", { external: true, "aria-label": `EBRAINS on ${network.label}`, url: network.url, icon: network.icon, intent: linkIntent })))))));
9089
9705
  }
9090
9706
  };
9091
9707
  EdsSocialNetworks.style = EdsSocialNetworksStyle0;
@@ -9166,7 +9782,7 @@ const EdsSpinner = class {
9166
9782
  alignItems: 'center',
9167
9783
  justifyContent: 'center'
9168
9784
  };
9169
- return (index.h(index.Host, { key: '16d20431aaa90a29b6e3d32cbd3403ece1f45345' }, index.h("div", { key: '0e29dafa5eb3a84f31305614ae083356604a81bf', class: "spinner-overlay", style: overlayStyle }, index.h("span", { key: 'cf63a83095e35a1ca4328fd14293e6895d8d9811', class: "spinner", style: spinnerStyle }), this.message && index.h("p", { key: '7bb83c40db5dc985c429ca6ac171145db80c011d', class: "f-ui-01" }, this.message))));
9785
+ return (index.h(index.Host, { key: 'c09fa07856848a03aab44bbb56ecdd66a986bb40' }, index.h("div", { key: '544c653e9e0457d2063eaefc5ff1fe88de89f14e', class: "spinner-overlay", style: overlayStyle }, index.h("span", { key: 'e389aa572863a265c9aa68d587ad744f1c8db0a7', class: "spinner", style: spinnerStyle }), this.message && index.h("p", { key: '5e554fe1b870e673c5b3da3ec2a227e92dd9863d', class: "f-ui-01" }, this.message))));
9170
9786
  }
9171
9787
  };
9172
9788
  EdsSpinner.style = EdsSpinnerStyle0;
@@ -9615,7 +10231,7 @@ const EdsStepsV2 = class {
9615
10231
  const steps = this.parsedSteps;
9616
10232
  const marginClass = this.orientation === 'horizontal' ? 'mt-64' : 'mt-32';
9617
10233
  const themeClass = this.theme === 'brand' ? 'theme-brand' : 'theme-default';
9618
- return (index.h("div", { key: '0f95d17cc699c020419593bec5ed76c4515501c9', class: this.articleClasses() }, this.imageSrc ? (index.h("div", { class: "w-full mb-12 rounded-t-lg overflow-hidden border-2" }, index.h("eds-img", { src: this.imageSrc, width: this.imageWidth, "with-bg": "true", "lazy-load": "true", alt: "Step illustration" }))) : (this.message && (index.h("div", { class: `w-full ${this.theme === 'brand' ? 'bg-strongest' : 'bg-darker'} rounded-t-lg border-2` }, index.h("div", { class: "p-24" }, index.h("span", { class: `${this.theme === 'brand' ? 'text-accent' : 'text-inverse'} f-heading-04` }, this.message))))), index.h("div", { key: 'ed26ac9fc5cc4d7c409d29c3cd623e37a5abc944', class: "mt-16 pb-20 px-8" }, this.type === 'linear' && this.orientation === 'horizontal' ? (index.h("div", { class: `steps--horizontal ${themeClass}`, style: { '--step-count': steps.length.toString() } }, index.h("div", { class: "horizontal-indicators" }, steps.map((step, index) => this.renderHorizontalIndicator(step, index))), steps.map((step, index$1) => {
10234
+ return (index.h("div", { key: 'e1d78d18506adb662bbcc100f6f886e33c21a996', class: this.articleClasses() }, this.imageSrc ? (index.h("div", { class: "w-full mb-12 rounded-t-lg overflow-hidden border-2" }, index.h("eds-img", { src: this.imageSrc, width: this.imageWidth, "with-bg": "true", "lazy-load": "true", alt: "Step illustration" }))) : (this.message && (index.h("div", { class: `w-full ${this.theme === 'brand' ? 'bg-strongest' : 'bg-darker'} rounded-t-lg border-2` }, index.h("div", { class: "p-24" }, index.h("span", { class: `${this.theme === 'brand' ? 'text-accent' : 'text-inverse'} f-heading-04` }, this.message))))), index.h("div", { key: '5b69e2c641d96025b34377fc647679f94d0e4e44', class: "mt-16 pb-20 px-8" }, this.type === 'linear' && this.orientation === 'horizontal' ? (index.h("div", { class: `steps--horizontal ${themeClass}`, style: { '--step-count': steps.length.toString() } }, index.h("div", { class: "horizontal-indicators" }, steps.map((step, index) => this.renderHorizontalIndicator(step, index))), steps.map((step, index$1) => {
9619
10235
  const isLast = index$1 === steps.length - 1;
9620
10236
  if (this.activeStep !== index$1) {
9621
10237
  return null;
@@ -9720,7 +10336,7 @@ const EdsSwitch = class {
9720
10336
  };
9721
10337
  EdsSwitch.style = EdsSwitchStyle0;
9722
10338
 
9723
- const edsTableCss = "table{text-indent:0;border-color:inherit;border-collapse:collapse;}tr.table-row-default{background-color:transparent}tr.table-row-color:nth-child(even){background-color:var(--grey-light)}tr.table-row-color:nth-child(odd){background-color:transparent}.brand-table-wrapper{margin-top:2rem;width:100%}.brand-table{width:100% !important;border-collapse:separate !important;border-spacing:0 !important;display:table !important;table-layout:fixed !important}.brand-thead{background:var(--grey-light)}.brand-header-row{border:none !important}.brand-header-row th{padding:1rem 1.5rem !important;text-align:center !important;font-weight:600 !important;font-size:0.9rem !important;text-transform:uppercase;letter-spacing:0.05em;color:var(--grey-dark) !important;border:none !important;overflow-wrap:break-word !important;word-wrap:break-word !important}.brand-header-row th:first-child{border-radius:0.5rem 0 0 0;padding-left:2rem !important}.brand-header-row th:last-child{border-radius:0 0.5rem 0 0;padding-right:2rem !important}.brand-row{border-bottom:1px solid var(--grey-light) !important;transition:all 0.3s ease;cursor:pointer;position:relative;background:transparent !important}.brand-row:hover{background:rgba(0, 255, 157, 0.05) !important}.brand-row td{padding:1.5rem 1.5rem !important;border:none !important;vertical-align:middle;position:relative;z-index:1;overflow-wrap:break-word !important;word-wrap:break-word !important}.brand-row td:first-child{padding-left:2rem !important}.brand-row td:last-child{padding-right:2rem !important}.brand-row .actions-cell{text-align:right !important}.brand-table tr.brand-row{border-left:none;border-right:none;border-top:none}.container{width:calc(var(--container-width, 100%) - (2 * var(--breakout-container-outer-gutter, var(--container-outer-gutter, var(--outer-gutter, 0)))));margin-right:auto;margin-left:auto}.container>*{--container-outer-gutter:0;--breakout-container-outer-gutter:0}.pt-32{padding-top:2rem}.pt-40{padding-top:2.5rem}.pt-48{padding-top:3rem}.pb-28{padding-bottom:1.75rem}.pb-60{padding-bottom:3.75rem}.mt-20{margin-top:1.25rem}.mt-28{margin-top:1.75rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.overflow-x-auto{overflow-x:auto}.mt-6{margin-top:0.375rem}.p-0{padding:0rem}.p-4{padding:0.25rem}.m-0{margin:0rem}.border{border-width:1px}.border-softer{border:1px solid rgba(0, 0, 0, .1)}.even\\:bg-inverse-softer:nth-child(even){background-color:rgba(255, 255, 255, .15)}.px-8{padding-left:0.5rem;padding-right:0.5rem}.px-20{padding-left:1.25rem;padding-right:1.25rem}.py-8{padding-top:0.5rem;padding-bottom:0.5rem}.f-ui-01{font-family:var(--f-ui-01-fontFamily);font-size:var(--f-ui-01-fontSize);line-height:var(--f-ui-01-lineHeight);letter-spacing:var(--f-ui-01-letterSpacing)}.f-ui-02{font-family:var(--f-ui-02-fontFamily);font-size:var(--f-ui-02-fontSize);line-height:var(--f-ui-02-lineHeight);letter-spacing:var(--f-ui-02-letterSpacing)}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.text-center{text-align:center}.break-words{overflow-wrap:anywhere}.controls-container{display:flex;width:100%}.view-toggle-wrapper{flex-shrink:0}.search-wrapper{min-width:0}.card-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));gap:1.5rem;margin-top:1.5rem}.data-card{background:var(--white);border:1px solid var(--grey-light);border-radius:0.75rem;padding:1.5rem;transition:all 0.3s ease;display:flex;flex-direction:column;gap:1rem}.data-card:hover{border-color:var(--brand-green);box-shadow:0 4px 12px rgba(0, 255, 157, 0.1);transform:translateY(-2px)}.card-content{display:flex;flex-direction:column;gap:0.75rem;flex:1}.card-field{display:flex;flex-direction:column;gap:0.25rem}.card-label{font-family:var(--f-ui-03-fontFamily);font-size:var(--f-ui-03-fontSize);font-weight:var(--f-ui-03-fontWeight);line-height:var(--f-ui-03-lineHeight);text-transform:uppercase;letter-spacing:0.05em;color:var(--grey-dark)}.card-value{font-family:var(--f-ui-02-fontFamily);font-size:var(--f-ui-02-fontSize);line-height:var(--f-ui-02-lineHeight);color:var(--brand-black);word-wrap:break-word}.card-actions{display:flex;gap:0.5rem;justify-content:flex-end;padding-top:0.75rem;border-top:1px solid var(--grey-light)}@media (min-width: 640px){.card-grid{grid-template-columns:repeat(auto-fill, minmax(320px, 1fr))}}@media (min-width: 1024px){.card-grid{grid-template-columns:repeat(auto-fill, minmax(350px, 1fr));gap:2rem}}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-start{align-items:flex-start}.items-center{align-items:center}.gap-16{gap:1rem}.mb-16{margin-bottom:1rem}.w-full{width:100%}.w-auto{width:auto}@media (min-width: 750px){.flex-md-row{flex-direction:row}.items-md-center{align-items:center}.w-md-auto{width:auto}.w-md-400{width:400px}}";
10339
+ const edsTableCss = "table{text-indent:0;border-color:inherit;border-collapse:collapse;}.brand-table-wrapper{margin-top:2rem;width:100%}.brand-table{width:100% !important;border-collapse:separate !important;border-spacing:0 !important;display:table !important;table-layout:fixed !important}.brand-thead{background:var(--grey-light)}.brand-header-row{border:none !important}.brand-header-row th{padding:1rem 1.5rem !important;text-align:center !important;font-weight:600 !important;font-size:0.9rem !important;text-transform:uppercase;letter-spacing:0.05em;color:var(--grey-dark) !important;border:none !important;overflow-wrap:break-word !important;word-wrap:break-word !important}.brand-header-row th:first-child{border-radius:0.5rem 0 0 0;padding-left:2rem !important}.brand-header-row th:last-child{border-radius:0 0.5rem 0 0;padding-right:2rem !important}.brand-row{border-bottom:1px solid var(--grey-light) !important;transition:all 0.3s ease;position:relative;background:transparent !important}.brand-row.has-actions{cursor:pointer}.brand-row:hover{background:rgba(0, 255, 157, 0.05) !important}.brand-row td{padding:1.5rem 1.5rem !important;border:none !important;vertical-align:middle;position:relative;z-index:1;overflow-wrap:break-word !important;word-wrap:break-word !important}.brand-row td:first-child{padding-left:2rem !important}.brand-row td:last-child{padding-right:2rem !important}.brand-row .actions-cell{text-align:right !important}.brand-table tr.brand-row{border-left:none;border-right:none;border-top:none}.container{width:calc(var(--container-width, 100%) - (2 * var(--breakout-container-outer-gutter, var(--container-outer-gutter, var(--outer-gutter, 0)))));margin-right:auto;margin-left:auto}.container>*{--container-outer-gutter:0;--breakout-container-outer-gutter:0}.pt-32{padding-top:2rem}.pt-40{padding-top:2.5rem}.pt-48{padding-top:3rem}.pb-28{padding-bottom:1.75rem}.pb-60{padding-bottom:3.75rem}.mt-20{margin-top:1.25rem}.mt-28{margin-top:1.75rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.overflow-x-auto{overflow-x:auto}.mt-6{margin-top:0.375rem}.p-0{padding:0rem}.p-4{padding:0.25rem}.m-0{margin:0rem}.border{border-width:1px}.border-softer{border:1px solid rgba(0, 0, 0, .1)}.even\\:bg-inverse-softer:nth-child(even){background-color:rgba(255, 255, 255, .15)}.px-8{padding-left:0.5rem;padding-right:0.5rem}.px-20{padding-left:1.25rem;padding-right:1.25rem}.py-8{padding-top:0.5rem;padding-bottom:0.5rem}.f-ui-01{font-family:var(--f-ui-01-fontFamily);font-size:var(--f-ui-01-fontSize);line-height:var(--f-ui-01-lineHeight);letter-spacing:var(--f-ui-01-letterSpacing)}.f-ui-02{font-family:var(--f-ui-02-fontFamily);font-size:var(--f-ui-02-fontSize);line-height:var(--f-ui-02-lineHeight);letter-spacing:var(--f-ui-02-letterSpacing)}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.text-center{text-align:center}.break-words{overflow-wrap:anywhere}.controls-container{display:flex;width:100%}.view-toggle-wrapper{flex-shrink:0}.search-wrapper{min-width:0}.card-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));gap:1.5rem;margin-top:1.5rem}.data-card{background:var(--white);border:1px solid var(--grey-light);border-radius:0.75rem;padding:1.5rem;transition:all 0.3s ease;display:flex;flex-direction:column;gap:1rem}.data-card:hover{border-color:var(--brand-green);box-shadow:0 4px 12px rgba(0, 255, 157, 0.1);transform:translateY(-2px)}.card-content{display:flex;flex-direction:column;gap:0.75rem;flex:1}.card-field{display:flex;flex-direction:column;gap:0.25rem}.card-label{font-family:var(--f-ui-03-fontFamily);font-size:var(--f-ui-03-fontSize);font-weight:var(--f-ui-03-fontWeight);line-height:var(--f-ui-03-lineHeight);text-transform:uppercase;letter-spacing:0.05em;color:var(--grey-dark)}.card-value{font-family:var(--f-ui-02-fontFamily);font-size:var(--f-ui-02-fontSize);line-height:var(--f-ui-02-lineHeight);color:var(--brand-black);word-wrap:break-word}.card-field:first-child .card-value{font-size:var(--f-ui-01-fontSize);line-height:var(--f-ui-01-lineHeight)}.card-actions{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;gap:0.5rem;padding-top:0.75rem;border-top:1px solid var(--grey-light)}@media (min-width: 640px){.card-grid{grid-template-columns:repeat(auto-fill, minmax(320px, 1fr))}}@media (min-width: 1024px){.card-grid{grid-template-columns:repeat(auto-fill, minmax(350px, 1fr));gap:2rem}}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-start{align-items:flex-start}.items-center{align-items:center}.gap-16{gap:1rem}.mb-16{margin-bottom:1rem}.w-full{width:100%}.w-auto{width:auto}@media (min-width: 750px){.flex-md-row{flex-direction:row}.items-md-center{align-items:center}.w-md-auto{width:auto}.w-md-400{width:400px}}";
9724
10340
  const EdsTableStyle0 = edsTableCss;
9725
10341
 
9726
10342
  const EdsTable = class {
@@ -9792,11 +10408,10 @@ const EdsTable = class {
9792
10408
  this.paginationEnabled = true;
9793
10409
  this.searchEnabled = false;
9794
10410
  this.hostWidth = undefined;
9795
- this.columnSize = 'default';
9796
10411
  this.actions = [];
9797
10412
  this.actionTemplate = undefined;
9798
10413
  this.sortingEnabled = false;
9799
- this.theme = 'color';
10414
+ this.theme = 'brand';
9800
10415
  this.view = 'table';
9801
10416
  this.showViewToggle = false;
9802
10417
  this.parsedActions = [];
@@ -9828,6 +10443,8 @@ const EdsTable = class {
9828
10443
  }
9829
10444
  }
9830
10445
  componentWillLoad() {
10446
+ // 'default' / 'color' themes are disabled — always render the brand theme.
10447
+ this.theme = 'brand';
9831
10448
  this.parseConfig();
9832
10449
  this.handleActionsChange();
9833
10450
  this.parseData();
@@ -9963,19 +10580,6 @@ const EdsTable = class {
9963
10580
  this.columns.push('actions');
9964
10581
  }
9965
10582
  }
9966
- getVisibleColumnsCount() {
9967
- return this.columns.filter((column) => { var _a; return !((_a = this.parsedConfig[column]) === null || _a === void 0 ? void 0 : _a.hidden); }).length;
9968
- }
9969
- divisionFactor() {
9970
- let divisionFactor = 1;
9971
- if (this.columnSize === 'medium') {
9972
- divisionFactor = 2;
9973
- }
9974
- else if (this.columnSize === 'large') {
9975
- divisionFactor = 4;
9976
- }
9977
- return divisionFactor;
9978
- }
9979
10583
  capitalize(str) {
9980
10584
  return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
9981
10585
  }
@@ -10010,24 +10614,23 @@ const EdsTable = class {
10010
10614
  const dataColumns = this.columns.filter((col) => { var _a; return col !== 'actions' && !((_a = this.parsedConfig[col]) === null || _a === void 0 ? void 0 : _a.hidden); });
10011
10615
  return (index.h("div", { class: "card-grid" }, rows.map((row) => (index.h("div", { class: "data-card" }, index.h("div", { class: "card-content" }, dataColumns.map((col) => (index.h("div", { class: "card-field" }, index.h("span", { class: "card-label" }, this.capitalize(col)), index.h("span", { class: "card-value" }, this.renderCell(row[col], col)))))), this.parsedActions.length > 0 && (index.h("div", { class: "card-actions" }, this.parsedActions.map((act) => (index.h("span", null, this.renderSingleActionCell(act.name, row)))))))))));
10012
10616
  }
10013
- renderTableView(paginatedRows, currentContainerWidth, visibleColumnsCount) {
10014
- const columnWidth = visibleColumnsCount > 0 ? Math.floor((currentContainerWidth / visibleColumnsCount) * this.divisionFactor()) : 100;
10617
+ renderTableView(paginatedRows) {
10015
10618
  return (index.h("div", { class: `mt-20 ${this.theme === 'brand' ? 'brand-table-wrapper' : ''}` }, index.h("table", { class: `${this.theme === 'brand' ? '' : 'block overflow-x-auto'} mt-6 p-0 ${this.theme === 'brand' ? 'brand-table' : ''}` }, index.h("thead", { class: this.theme === 'brand' ? 'brand-thead' : '' }, index.h("tr", { class: `m-0 p-0 border border-softer table-row-${this.theme} ${this.theme === 'brand' ? 'brand-header-row' : ''}` }, this.columns
10016
10619
  .filter((col) => { var _a; return col === 'actions' || !((_a = this.parsedConfig[col]) === null || _a === void 0 ? void 0 : _a.hidden); })
10017
10620
  .map((col) => {
10018
10621
  if (col === 'actions') {
10019
- return (index.h("th", { class: "m-0 py-8 border border-softer f-ui-02 break-words", style: this.theme === 'brand' ? {} : { minWidth: `${columnWidth - 4}px` } }));
10622
+ return (index.h("th", { class: "m-0 py-8 border border-softer f-ui-02 break-words" }));
10020
10623
  }
10021
- return (index.h("th", { class: "m-0 py-8 border border-softer f-ui-02 break-words", style: this.theme === 'brand' ? {} : { minWidth: `${columnWidth - 4}px` } }, index.h("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'center', gap: '0.25rem' } }, index.h("span", null, this.capitalize(col)), this.sortingEnabled && (index.h("eds-icon-wrapper", { name: this.sortColumn === col
10624
+ return (index.h("th", { class: "m-0 py-8 border border-softer f-ui-02 break-words" }, index.h("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'center', gap: '0.25rem' } }, index.h("span", null, this.capitalize(col)), this.sortingEnabled && (index.h("eds-icon-wrapper", { name: this.sortColumn === col
10022
10625
  ? this.sortDirection === 'asc'
10023
10626
  ? 'chevron-up'
10024
10627
  : 'chevron-down'
10025
10628
  : 'chevron-down', "aria-label": `Sort by ${col}`, onClick: () => this.handleSort(col), style: { cursor: 'pointer' } })))));
10026
- }))), index.h("tbody", null, paginatedRows.map((row) => (index.h("tr", { class: `m-0 p-0 border border-softer table-row-${this.theme} ${this.theme === 'brand' ? 'brand-row' : ''}` }, this.columns
10629
+ }))), index.h("tbody", null, paginatedRows.map((row) => (index.h("tr", { class: `m-0 p-0 border border-softer table-row-${this.theme} ${this.theme === 'brand' ? 'brand-row' : ''} ${this.parsedActions.length > 0 ? 'has-actions' : ''}` }, this.columns
10027
10630
  .filter((col) => { var _a; return col === 'actions' || !((_a = this.parsedConfig[col]) === null || _a === void 0 ? void 0 : _a.hidden); })
10028
10631
  .map((col) => {
10029
10632
  if (col === 'actions') {
10030
- return (index.h("td", { class: "text-center border border-softer m-0 f-ui-01 break-words actions-cell", style: this.theme === 'brand' ? {} : { minWidth: `${columnWidth - 4}px` } }, index.h("div", { role: "toolbar", "aria-label": "Row actions", onKeyDown: this.onActionKeyDown, style: {
10633
+ return (index.h("td", { class: "text-center border border-softer m-0 f-ui-01 break-words actions-cell" }, index.h("div", { role: "toolbar", "aria-label": "Row actions", onKeyDown: this.onActionKeyDown, style: {
10031
10634
  display: 'flex',
10032
10635
  gap: '0.5rem',
10033
10636
  justifyContent: 'center',
@@ -10035,18 +10638,16 @@ const EdsTable = class {
10035
10638
  } }, this.parsedActions.map((act) => (index.h("span", { style: { whiteSpace: 'nowrap' } }, this.renderSingleActionCell(act.name, row)))))));
10036
10639
  }
10037
10640
  // Regular data cell
10038
- return (index.h("td", { class: "text-center border border-softer m-0 py-8 f-ui-02 break-words", style: this.theme === 'brand' ? {} : { minWidth: `${columnWidth - 4}px` } }, this.renderCell(row[col], col)));
10641
+ return (index.h("td", { class: "text-center border border-softer m-0 py-8 f-ui-02 break-words" }, this.renderCell(row[col], col)));
10039
10642
  }))))))));
10040
10643
  }
10041
10644
  render() {
10042
- const currentContainerWidth = this.hostWidth && this.hostWidth.trim() !== '' ? Number(this.hostWidth) : this.containerWidth || 400;
10043
- const visibleColumnsCount = this.getVisibleColumnsCount();
10044
10645
  const paginatedRows = this.getPaginatedRows();
10045
10646
  const lastPage = Math.ceil(this.totalRows / this.rowsPerPage);
10046
10647
  const showControls = this.showViewToggle || this.searchEnabled;
10047
- return (index.h("div", { key: 'ca547566767c7bccd7b894dad5819ed74e9e281d' }, showControls && (index.h("div", { key: '47c6fa14c2dbe499617dc31df1fd578bde473c6f', class: "controls-container flex-col flex-md-row items-start items-md-center justify-between gap-16 mb-16" }, this.showViewToggle && (index.h("div", { key: '7f63fd07e67eaca9abc9d0700d7824e0f474dc23', class: "view-toggle-wrapper" }, index.h("eds-switch", { key: 'f52b744b0e83295c1641f338212bae5843970ab9', variant: "segmented", labelOff: "Table View", labelOn: "Card View", checked: this.view === 'card', onUiswitch: this.handleViewChange }))), this.searchEnabled && (index.h("div", { key: '5ebb3620be6161a1d7e1881cb5d33f5aac2e12a4', class: `search-wrapper w-full ${this.showViewToggle ? 'w-md-400' : ''}` }, index.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'
10648
+ return (index.h("div", { key: '1e8a2f5f19df240ee3a57951641b60b947342fad' }, showControls && (index.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 && (index.h("div", { key: '7ef287464bb2fba846be5341f4bb0e71d982be0e', class: "view-toggle-wrapper" }, index.h("eds-switch", { key: '2d3a494a5b354a14c8e882a153633bd5e85a40ab', variant: "segmented", labelOff: "Table View", labelOn: "Card View", checked: this.view === 'card', onUiswitch: this.handleViewChange }))), this.searchEnabled && (index.h("div", { key: 'dfcf6d0bdc23cb10481121881a7656b02a0599c1', class: `search-wrapper w-full ${this.showViewToggle ? 'w-md-400' : ''}` }, index.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'
10048
10649
  ? this.renderCardView(paginatedRows)
10049
- : this.renderTableView(paginatedRows, currentContainerWidth, visibleColumnsCount), this.shouldEnablePagination() && (index.h("div", { key: 'bed5232d5ff9d7cac22ac2537876a388f35c85a6', class: "mt-20" }, index.h("eds-pagination", { key: 'ec91525689028f6cfe2721e290f5c5c7097ab67a', currentPage: this.currentPage, lastPage: lastPage, perPage: this.rowsPerPage, total: this.totalRows, mode: "default" })))));
10650
+ : this.renderTableView(paginatedRows), this.shouldEnablePagination() && (index.h("div", { key: '3f7faafdd6147855cb8812ff6303c335c7fd1f35', class: "mt-20" }, index.h("eds-pagination", { key: '17705ba01a8ca8cc79bacfce34e55f11ce53d70c', currentPage: this.currentPage, lastPage: lastPage, perPage: this.rowsPerPage, total: this.totalRows, mode: "default" })))));
10050
10651
  }
10051
10652
  get hostEl() { return index.getElement(this); }
10052
10653
  static get watchers() { return {
@@ -10057,7 +10658,7 @@ const EdsTable = class {
10057
10658
  };
10058
10659
  EdsTable.style = EdsTableStyle0;
10059
10660
 
10060
- const edsTabsCss = ":host{display:block}.tabs-container{display:flex;gap:0.25rem;padding:0.25rem;border-radius:10px;width:fit-content;margin-bottom:3rem}.tabs-container-default{background-color:var(--brand-black, #07140D);border:1px solid rgba(255, 255, 255, 0.06)}.tabs-container-inverse{background:rgba(0, 0, 0, 0.02);border:1px solid rgba(0, 0, 0, 0.06)}.tabs-nav{display:flex;gap:0.25rem}.tab{padding:0.625rem 1.25rem;border-radius:8px;font-size:1.125rem;cursor:pointer;transition:all 0.2s ease;border:none;background:transparent;font-family:'IBM Plex Sans', sans-serif;white-space:nowrap;outline:none}.tab:focus-visible{outline:3px solid var(--brand-green);outline-offset:2px}.tab-default{color:var(--grey-700)}.tab-default:hover{color:var(--white)}.tab-default.tab-active{background:rgba(0, 255, 157, 0.1);color:var(--brand-green)}.tab-inverse{color:var(--grey-700)}.tab-inverse:hover{color:var(--brand-black)}.tab-inverse.tab-active{background:rgba(0, 200, 123, 0.1);color:var(--brand-green-dark)}.tab-panels{margin-top:2rem}.tab-panels>div{outline:none}.tab-panels>div:focus-visible{outline:3px solid var(--brand-green);outline-offset:2px;border-radius:4px}@media (max-width: 768px){.tabs-container{width:100%;overflow-x:auto}.tabs-nav{width:100%;min-width:fit-content}}";
10661
+ const edsTabsCss = ":host{display:block}.tabs-container{display:flex;gap:0.25rem;padding:0.25rem;border-radius:10px;width:fit-content;margin-bottom:3rem}.tabs-container-default{background-color:var(--brand-black, #07140D);border:1px solid rgba(255, 255, 255, 0.06)}.tabs-container-inverse{background:rgba(0, 0, 0, 0.02);border:1px solid rgba(0, 0, 0, 0.06)}.tabs-nav{display:flex;gap:0.25rem}.tab{padding:0.625rem 1.25rem;border-radius:8px;font-size:1.125rem;cursor:pointer;transition:color 0.15s ease;border:none;background:transparent;font-family:'IBM Plex Sans', sans-serif;white-space:nowrap;outline:none}.tab:focus-visible{outline:3px solid var(--brand-green);outline-offset:2px}.tab-default{color:var(--grey-700)}.tab-default:hover{color:var(--white)}.tab-default.tab-active{background:rgba(0, 255, 157, 0.1);color:var(--brand-green)}.tab-inverse{color:var(--grey-700)}.tab-inverse:hover{color:var(--brand-black)}.tab-inverse.tab-active{background:rgba(0, 200, 123, 0.1);color:var(--brand-green-dark)}.tab-panels{margin-top:2rem}.tab-panels>div{outline:none}.tab-panels>div:focus-visible{outline:3px solid var(--brand-green);outline-offset:2px;border-radius:4px}@media (max-width: 768px){.tabs-container{width:100%;overflow-x:auto}.tabs-nav{width:100%;min-width:fit-content}}";
10061
10662
  const EdsTabsStyle0 = edsTabsCss;
10062
10663
 
10063
10664
  const EdsTabs = class {
@@ -10084,14 +10685,28 @@ const EdsTabs = class {
10084
10685
  }
10085
10686
  /**
10086
10687
  * Parses the `tabs` prop into an array of tab objects.
10688
+ *
10689
+ * Note: we deliberately do NOT clear `tabRefs` here. Consumers
10690
+ * often re-pass `tabs` with an updated `active` flag every time
10691
+ * the user switches tabs (Vue/React re-render on event). Wiping
10692
+ * the refs leaves a window in which a queued focus() call sees
10693
+ * `tabRefs[index] === undefined` and silently no-ops — focus
10694
+ * gets stuck on the previous tab even though `aria-selected` and
10695
+ * the background already moved. Stencil re-binds refs on render,
10696
+ * so the array stays in sync without us emptying it; we only
10697
+ * truncate when the new list is shorter to drop stale entries.
10087
10698
  */
10088
10699
  parseTabs() {
10089
10700
  this.parsedTabs = sharedUtils.parseData(this.tabs);
10090
- this.tabRefs = [];
10701
+ if (this.tabRefs.length > this.parsedTabs.length) {
10702
+ this.tabRefs.length = this.parsedTabs.length;
10703
+ }
10091
10704
  }
10092
10705
  componentDidUpdate() {
10093
- if (this.tabRefs.length !== this.parsedTabs.length) {
10094
- this.tabRefs = new Array(this.parsedTabs.length).fill(null);
10706
+ // Same reasoning as parseTabs: only shrink, never re-allocate
10707
+ // to nulls — that would re-introduce the silent-no-op window.
10708
+ if (this.tabRefs.length > this.parsedTabs.length) {
10709
+ this.tabRefs.length = this.parsedTabs.length;
10095
10710
  }
10096
10711
  }
10097
10712
  setActiveIndex() {
@@ -10102,6 +10717,7 @@ const EdsTabs = class {
10102
10717
  }
10103
10718
  }
10104
10719
  handleTabClick(index, tabLabel, shouldFocus = true) {
10720
+ var _a;
10105
10721
  if (index < 0 || index >= this.parsedTabs.length) {
10106
10722
  return;
10107
10723
  }
@@ -10116,11 +10732,34 @@ const EdsTabs = class {
10116
10732
  action: 'click'
10117
10733
  });
10118
10734
  }
10119
- if (shouldFocus && this.tabRefs[index]) {
10120
- setTimeout(() => {
10735
+ if (shouldFocus) {
10736
+ // Focus must move SYNCHRONOUSLY, while the keydown event
10737
+ // that triggered this call is still on the stack. Otherwise
10738
+ // the browser's `:focus-visible` heuristic doesn't flag the
10739
+ // focus move as keyboard-driven and the outline never paints
10740
+ // — accessibility regression (WCAG 2.4.7).
10741
+ //
10742
+ // We query by static id (`#tab-${index}`) instead of using
10743
+ // `tabRefs[index]` because consumer-driven prop changes can
10744
+ // briefly drop the cached ref. The button id is set in
10745
+ // `render()` and doesn't depend on active state, so it is
10746
+ // always findable.
10747
+ const findBtn = () => { var _a; return ((_a = this.el.shadowRoot) !== null && _a !== void 0 ? _a : this.el).querySelector(`#tab-${index}`); };
10748
+ (_a = findBtn()) === null || _a === void 0 ? void 0 : _a.focus();
10749
+ // Belt-and-suspenders: if a consumer reacts to the `tab`
10750
+ // event by re-rendering our buttons (rare, but possible
10751
+ // when the `tabs` prop is recomputed), the sync focus above
10752
+ // landed on a button that is now detached. Re-focus once
10753
+ // the next frame's DOM is in place. We only act if focus
10754
+ // genuinely isn't on the right element, to avoid a redundant
10755
+ // focus call that would reset selection/IME state.
10756
+ requestAnimationFrame(() => {
10121
10757
  var _a;
10122
- (_a = this.tabRefs[index]) === null || _a === void 0 ? void 0 : _a.focus();
10123
- }, 0);
10758
+ const after = findBtn();
10759
+ if (after && ((_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) !== after) {
10760
+ after.focus();
10761
+ }
10762
+ });
10124
10763
  }
10125
10764
  }
10126
10765
  onKeyDown(ev, idx) {
@@ -10154,7 +10793,7 @@ const EdsTabs = class {
10154
10793
  'tabs-container',
10155
10794
  `tabs-container-${this.variant}`
10156
10795
  ].join(' ');
10157
- return (index.h("div", { key: '66e0871d6cd917c15598b6e3ea80e5ff82970029', id: `${this.identifier}` }, index.h("div", { key: 'c65163e33fcf4960bbcc367a2abf62c0aec99446', class: containerClasses }, index.h("nav", { key: 'fae5e0f23904318299d60e1d3212f84b8c5a0bed', role: "tablist", class: "tabs-nav", "aria-label": this.navAriaLabel }, this.parsedTabs.map((tab, index$1) => {
10796
+ return (index.h("div", { key: '646f43031cde2e0ab84d2830fd9477841b3c757b', id: `${this.identifier}` }, index.h("div", { key: '2eb01c96640c6fc602777f227525066e5970489e', class: containerClasses }, index.h("nav", { key: 'b419fc7414574ea70b19433a3c5daa63b5ad6652', role: "tablist", class: "tabs-nav", "aria-label": this.navAriaLabel }, this.parsedTabs.map((tab, index$1) => {
10158
10797
  const isActive = index$1 === this.activeIndex;
10159
10798
  const tabClasses = [
10160
10799
  'tab',
@@ -10162,7 +10801,7 @@ const EdsTabs = class {
10162
10801
  isActive ? 'tab-active' : ''
10163
10802
  ].filter(Boolean).join(' ');
10164
10803
  return (index.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$1}`, id: `tab-${index$1}`, ref: (el) => this.setTabRef(el, index$1), onClick: () => this.handleTabClick(index$1, tab.label, true), onKeyDown: (e) => this.onKeyDown(e, index$1) }, tab.label || tab.ariaLabel));
10165
- }))), index.h("div", { key: 'a259d3e45fbcc5f75303cf8eb256374c67c62db1', class: "tab-panels" }, this.parsedTabs.map((_, index$1) => (index.h("div", { role: "tabpanel", id: `panel-${index$1}`, "aria-labelledby": `tab-${index$1}`, hidden: index$1 !== this.activeIndex, tabIndex: index$1 === this.activeIndex ? 0 : -1 }, index.h("slot", { name: `panel-${index$1}` })))))));
10804
+ }))), index.h("div", { key: '0ce244b3d2b2120d1bdf127144e9b42e2ad34e52', class: "tab-panels" }, this.parsedTabs.map((_, index$1) => (index.h("div", { role: "tabpanel", id: `panel-${index$1}`, "aria-labelledby": `tab-${index$1}`, hidden: index$1 !== this.activeIndex, tabIndex: index$1 === this.activeIndex ? 0 : -1 }, index.h("slot", { name: `panel-${index$1}` })))))));
10166
10805
  }
10167
10806
  get el() { return index.getElement(this); }
10168
10807
  static get watchers() { return {
@@ -10206,7 +10845,7 @@ const EdsTag = class {
10206
10845
  }
10207
10846
  render() {
10208
10847
  const classes = tagStyles({ intent: this.intent, size: this.size });
10209
- return (index.h("span", { key: 'ca20e54df5fc895110b39ce7875c3c0026e94fc3', class: classes }, index.h("span", { key: '5ad7ada1ae051ff2840bb033ec683b44477f6684', style: { position: 'relative', zIndex: '1' } }, this.label)));
10848
+ return (index.h("span", { key: '20e1625ac01b0dc1f40356d02622e0649faa7fa7', class: classes }, index.h("span", { key: '313c3f18c0a5df285afe6a40ded9e68035d9648f', style: { position: 'relative', zIndex: '1' } }, this.label)));
10210
10849
  }
10211
10850
  };
10212
10851
  EdsTag.style = EdsTagStyle0;
@@ -10304,7 +10943,7 @@ const EdsTooltip = class {
10304
10943
  }
10305
10944
  render() {
10306
10945
  const positionClass = this.position === 'bottom' ? 'top-full mt-2' : 'bottom-full mb-2';
10307
- return (index.h("div", { key: '240956acf8218cb0b36254aecd629058ad39f4eb', class: "relative w-full inline-block group" }, index.h("slot", { key: '4424c8de31fd4e2aa702369314cf0819447ca364' }), index.h("div", { key: 'f260ef6ee9700231dc77ddc9debc7f5b92f546c6', class: `absolute ${positionClass}
10946
+ return (index.h("div", { key: '8b4396894b1ec7cc1c2d928ffa5b3d7628f8c4ee', class: "relative w-full inline-block group" }, index.h("slot", { key: 'c2547098aacc584960f217edcafeb060ce742adc' }), index.h("div", { key: '1e6beac7e4294456f7a6130c4b0573cce3e4b548', class: `absolute ${positionClass}
10308
10947
  rounded-xs bg-strongest text-inverse
10309
10948
  f-ui-03-light pointer-events-none
10310
10949
  z-10 px-4 opacity-0 transition-opacity duration-150 ease-in-out
@@ -10359,7 +10998,7 @@ const EdsUser = class {
10359
10998
  render() {
10360
10999
  const user = this.parsedUser;
10361
11000
  //const iconName = this.expanded ? 'chevron-down' : 'chevron-right';
10362
- return (index.h("div", { key: 'd23f741600ca86103642bfe17058e8e966ed00e0', class: "block" }, index.h("div", { key: 'cf73f261fdd219f236a93b4162656ef3178ca419', class: "flex items-center" }, index.h("eds-dropdown", { key: 'c69a3c95348c765d893aa01d5631d122de428970', ref: (el) => (this.dropdownEl = el), intent: this.intent, "aria-label": "User Menu", "dropdown-pos": "right", "dropdown-offset": "false", icon: "user", label: this.dropdownLabel, class: "text-default", onDropdown: this.handleDropdown }, index.h("div", { key: 'f142afdf77953f791ca0478af862934d0904dabb', class: "min-w-[280px] p-8" }, index.h("div", { key: '7ee37a9f2175e626c278071a409a5c26f4331c8a', class: "flex gap-x-16", "data-dropdown-no-close": true }, index.h("eds-avatar", { key: '7248877a0579d8d15dec94b994af5150c9dbf2c2', "first-name": user.given_name, "last-name": user.family_name, initials: this.initials, color: "black" }), index.h("div", { key: '1766fb5e2613b434c8de825c90141b4f95be00e1', class: "max-w-full" }, user.name && index.h("p", { key: 'd36907607f575eeb5425c1f2e32e91034fad6dde', class: "f-ui-01 text-default w-full text-ellipsis" }, user.name), user.preferred_username && index.h("p", { key: '73e02010d3d54151252903071bbe30168ea7d64a', class: "f-ui-03-light text-light mt-4" }, user.preferred_username), user.email && index.h("p", { key: 'eb522e6c95f15ef0584c7a90c20bb815ccc5d1a1', class: "f-ui-03-light text-light mt-4" }, user.email))), index.h("div", { key: 'c4284f4dba1964a949380aa0154419e3215daac4', class: "text-default flex w-full flex-col gap-y-8" }, index.h("slot", { key: '6476e03cf61ad7517e9742e67b44b9c917d9f329' })))))));
11001
+ return (index.h("div", { key: '1a9c56a4868b68ea95fdbb19a61435f5fa23b1b5', class: "block" }, index.h("div", { key: '242beb1cf3dc3e545be84003615eaed119be3e20', class: "flex items-center" }, index.h("eds-dropdown", { key: 'e75e0305a60936df4deb5b012fa139ca9a6b024f', ref: (el) => (this.dropdownEl = el), intent: this.intent, "aria-label": "User Menu", "dropdown-pos": "right", "dropdown-offset": "false", icon: "user", label: this.dropdownLabel, class: "text-default", onDropdown: this.handleDropdown }, index.h("div", { key: '09c74d1320e9637e50f7e0f8482e435db7a3319a', class: "min-w-[280px] p-8" }, index.h("div", { key: 'fa70ecc13e477cf2d2ead8e8dbab4fa3c3587149', class: "flex gap-x-16", "data-dropdown-no-close": true }, index.h("eds-avatar", { key: '69f059e2002237dd874ba62952c2b014ad94cb8a', "first-name": user.given_name, "last-name": user.family_name, initials: this.initials, color: "black" }), index.h("div", { key: 'c300f3bbe7f57d82913cef614637188babb82818', class: "max-w-full" }, user.name && index.h("p", { key: 'dc1a4a26f6c1da6c6e88e5aae484ca2ada2864e6', class: "f-ui-01 text-default w-full text-ellipsis" }, user.name), user.preferred_username && index.h("p", { key: '76f94c7b0394125d9a6b547722df5545c6b479fd', class: "f-ui-03-light text-light mt-4" }, user.preferred_username), user.email && index.h("p", { key: '8be3fe5ba1c302d5ef9bfb6d563070c07ed722ca', class: "f-ui-03-light text-light mt-4" }, user.email))), index.h("div", { key: '191e365fa893122e09c07aa36d1fde5d28b9b3de', class: "text-default flex w-full flex-col gap-y-8" }, index.h("slot", { key: '8d3fbd032340d5c32fd93ab89b034e7de25ef2e3' })))))));
10363
11002
  }
10364
11003
  get hostEl() { return index.getElement(this); }
10365
11004
  };
@@ -10395,8 +11034,8 @@ exports.eds_input_file = EdsInputFile;
10395
11034
  exports.eds_input_footer = EdsInputFooter;
10396
11035
  exports.eds_input_label = EdsInputLabel;
10397
11036
  exports.eds_input_range = EdsInputRange;
10398
- exports.eds_input_search = EdsInputSearch;
10399
11037
  exports.eds_input_select = EdsInputSelect;
11038
+ exports.eds_kg_learning_resources = EdsKgLearningResources;
10400
11039
  exports.eds_kg_web_services_select = EdsKgWebServicesSelect;
10401
11040
  exports.eds_link = EdsLink;
10402
11041
  exports.eds_logo = EdsLogo;
@@ -10405,6 +11044,7 @@ exports.eds_nps = EdsNps;
10405
11044
  exports.eds_pagination = EdsPagination;
10406
11045
  exports.eds_progress_bar = EdsProgressBar;
10407
11046
  exports.eds_rating = EdsRating;
11047
+ exports.eds_search_select = EdsSearchSelect;
10408
11048
  exports.eds_sidebar = EdsSidebar;
10409
11049
  exports.eds_social_networks = EdsSocialNetworks;
10410
11050
  exports.eds_spinner = EdsSpinner;