@boostdev/design-system-components 2.15.0 → 2.17.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 (299) hide show
  1. package/AGENTS.md +22 -15
  2. package/dist/client.cjs +271 -205
  3. package/dist/client.css +813 -650
  4. package/dist/client.d.cts +19 -4
  5. package/dist/client.d.ts +19 -4
  6. package/dist/client.js +206 -139
  7. package/dist/index.cjs +271 -205
  8. package/dist/index.css +813 -650
  9. package/dist/index.d.cts +19 -4
  10. package/dist/index.d.ts +19 -4
  11. package/dist/index.js +206 -139
  12. package/dist/web-components/chunk-2DHW2WJZ.js +154 -0
  13. package/dist/web-components/{chunk-3WAV6MDN.js → chunk-3FSGP35V.js} +1 -0
  14. package/dist/web-components/{chunk-SYNLFKD3.js → chunk-3LQKFSMR.js} +6 -0
  15. package/dist/web-components/{chunk-KA3VPKMY.js → chunk-4MB2ICSK.js} +1 -0
  16. package/dist/web-components/{chunk-6G22I2CK.js → chunk-5ATTKUCP.js} +33 -3
  17. package/dist/web-components/{chunk-IDSM74LM.js → chunk-6XL5P76D.js} +3 -3
  18. package/dist/web-components/{chunk-P24JYC5V.js → chunk-7VXRMCAL.js} +10 -4
  19. package/dist/web-components/{chunk-CUKQ2L5B.js → chunk-AGI6YQRC.js} +9 -16
  20. package/dist/web-components/chunk-BDRV452N.js +51 -0
  21. package/dist/web-components/{chunk-3AY2YKCM.js → chunk-CKCPV347.js} +1 -0
  22. package/dist/web-components/{chunk-HBLJ4SLY.js → chunk-DD3OUXNG.js} +5 -5
  23. package/dist/web-components/{chunk-RVF7W653.js → chunk-DGOCPKHI.js} +30 -10
  24. package/dist/web-components/{chunk-2OLVQUBU.js → chunk-EYCW7TKB.js} +8 -15
  25. package/dist/web-components/{chunk-VANAKB6D.js → chunk-GPJWLAKU.js} +33 -16
  26. package/dist/web-components/{chunk-VED2DFJ6.js → chunk-GQNQBEYR.js} +8 -15
  27. package/dist/web-components/{chunk-WFVKU4GX.js → chunk-IKAJLROF.js} +49 -4
  28. package/dist/web-components/{chunk-RSZ3BWBK.js → chunk-KSK4RZZQ.js} +30 -7
  29. package/dist/web-components/{chunk-FEDABOR5.js → chunk-LHFUXZ52.js} +7 -15
  30. package/dist/web-components/{chunk-M3ECULRH.js → chunk-RBF7WPLI.js} +10 -8
  31. package/dist/web-components/{chunk-BPYKZVDK.js → chunk-SJLMW2VR.js} +2 -2
  32. package/dist/web-components/chunk-SRKQ6GST.js +40 -0
  33. package/dist/web-components/{chunk-5HUAFCU6.js → chunk-TJV7UIXC.js} +7 -0
  34. package/dist/web-components/{chunk-LDIPCTRN.js → chunk-WWWJCSXN.js} +50 -4
  35. package/dist/web-components/{chunk-J3HVUIUH.js → chunk-XI2U6U26.js} +8 -15
  36. package/dist/web-components/{chunk-JH6LQKLK.js → chunk-XJU7KITO.js} +8 -15
  37. package/dist/web-components/{chunk-JV5QT2OU.js → chunk-YLDQOESI.js} +27 -13
  38. package/dist/web-components/globals.js +1 -1
  39. package/dist/web-components/index.d.ts +1 -0
  40. package/dist/web-components/index.js +35 -30
  41. package/dist/web-components/interaction/bds-dropdown-menu-group.d.ts +41 -0
  42. package/dist/web-components/interaction/bds-dropdown-menu-group.js +7 -0
  43. package/dist/web-components/interaction/bds-dropdown-menu-item.d.ts +14 -1
  44. package/dist/web-components/interaction/bds-dropdown-menu-item.js +1 -1
  45. package/dist/web-components/interaction/bds-dropdown-menu.d.ts +2 -1
  46. package/dist/web-components/interaction/bds-dropdown-menu.js +1 -1
  47. package/dist/web-components/interaction/bds-tab.d.ts +5 -0
  48. package/dist/web-components/interaction/bds-tab.js +1 -1
  49. package/dist/web-components/interaction/bds-tooltip.js +1 -1
  50. package/dist/web-components/interaction/form/bds-checkbox-group.d.ts +6 -0
  51. package/dist/web-components/interaction/form/bds-checkbox-group.js +2 -1
  52. package/dist/web-components/interaction/form/bds-checkbox.js +1 -1
  53. package/dist/web-components/interaction/form/bds-combobox.js +2 -1
  54. package/dist/web-components/interaction/form/bds-form-input.js +2 -1
  55. package/dist/web-components/interaction/form/bds-number-input.js +2 -1
  56. package/dist/web-components/interaction/form/bds-radio-group.d.ts +5 -0
  57. package/dist/web-components/interaction/form/bds-radio-group.js +2 -1
  58. package/dist/web-components/interaction/form/bds-radio.js +1 -1
  59. package/dist/web-components/interaction/form/bds-select.js +2 -1
  60. package/dist/web-components/interaction/form/bds-slider.js +2 -1
  61. package/dist/web-components/interaction/form/bds-switch.js +1 -1
  62. package/dist/web-components/interaction/form/bds-textarea.js +2 -1
  63. package/dist/web-components/ui/bds-alert.d.ts +8 -1
  64. package/dist/web-components/ui/bds-alert.js +1 -1
  65. package/dist/web-components/ui/bds-avatar.d.ts +11 -0
  66. package/dist/web-components/ui/bds-avatar.js +1 -1
  67. package/dist/web-components/ui/bds-badge.js +1 -1
  68. package/dist/web-components/ui/bds-notification-banner.d.ts +14 -1
  69. package/dist/web-components/ui/bds-notification-banner.js +1 -1
  70. package/dist/web-components/ui/bds-rating.js +1 -1
  71. package/dist/web-components/ui/bds-section-header.d.ts +6 -0
  72. package/dist/web-components/ui/bds-section-header.js +1 -1
  73. package/dist/web-components/ui/bds-separator.js +1 -1
  74. package/dist/web-components/ui/bds-table.js +1 -1
  75. package/package.json +6 -2
  76. package/src/components/interaction/DropdownMenu/DropdownMenu.mdx +35 -4
  77. package/src/components/interaction/DropdownMenu/DropdownMenu.module.css +58 -10
  78. package/src/components/interaction/DropdownMenu/DropdownMenu.spec.tsx +114 -1
  79. package/src/components/interaction/DropdownMenu/DropdownMenu.stories.tsx +25 -0
  80. package/src/components/interaction/DropdownMenu/DropdownMenu.tsx +69 -17
  81. package/src/components/interaction/Rating/Rating.mdx +4 -1
  82. package/src/components/interaction/Rating/Rating.module.css +9 -0
  83. package/src/components/interaction/Rating/Rating.spec.tsx +9 -0
  84. package/src/components/interaction/form/Checkbox/Checkbox.module.css +1 -0
  85. package/src/components/interaction/form/Checkbox/Checkbox.spec.tsx +7 -0
  86. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.mdx +2 -1
  87. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.module.css +8 -1
  88. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.spec.tsx +27 -0
  89. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx +1 -1
  90. package/src/components/interaction/form/Combobox/Combobox.module.css +1 -0
  91. package/src/components/interaction/form/Combobox/Combobox.spec.tsx +7 -0
  92. package/src/components/interaction/form/FormInput/FormInput.mdx +9 -0
  93. package/src/components/interaction/form/FormInput/FormInput.module.css +1 -0
  94. package/src/components/interaction/form/FormInput/FormInput.spec.tsx +7 -0
  95. package/src/components/interaction/form/NumberInput/NumberInput.module.css +1 -0
  96. package/src/components/interaction/form/NumberInput/NumberInput.spec.tsx +7 -0
  97. package/src/components/interaction/form/Radio/Radio.module.css +1 -0
  98. package/src/components/interaction/form/Radio/Radio.spec.tsx +7 -0
  99. package/src/components/interaction/form/RadioGroup/RadioGroup.mdx +2 -1
  100. package/src/components/interaction/form/RadioGroup/RadioGroup.module.css +8 -1
  101. package/src/components/interaction/form/RadioGroup/RadioGroup.spec.tsx +27 -0
  102. package/src/components/interaction/form/RadioGroup/RadioGroup.tsx +1 -1
  103. package/src/components/interaction/form/Select/Select.module.css +1 -0
  104. package/src/components/interaction/form/Select/Select.spec.tsx +7 -0
  105. package/src/components/interaction/form/Switch/Switch.module.css +1 -0
  106. package/src/components/interaction/form/Switch/Switch.spec.tsx +7 -0
  107. package/src/components/interaction/form/Textarea/Textarea.module.css +1 -0
  108. package/src/components/interaction/form/Textarea/Textarea.spec.tsx +7 -0
  109. package/src/components/interaction/form/atoms/Message.module.css +14 -3
  110. package/src/components/interaction/form/atoms/Message.spec.tsx +22 -0
  111. package/src/components/interaction/form/atoms/Message.tsx +5 -0
  112. package/src/components/layout/SectionHeader/SectionHeader.mdx +18 -5
  113. package/src/components/layout/SectionHeader/SectionHeader.module.css +35 -14
  114. package/src/components/layout/SectionHeader/SectionHeader.spec.tsx +44 -0
  115. package/src/components/layout/SectionHeader/SectionHeader.stories.tsx +5 -0
  116. package/src/components/layout/SectionHeader/SectionHeader.tsx +3 -1
  117. package/src/components/ui/Alert/Alert.mdx +12 -1
  118. package/src/components/ui/Alert/Alert.module.css +32 -3
  119. package/src/components/ui/Alert/Alert.spec.tsx +27 -0
  120. package/src/components/ui/Alert/Alert.stories.tsx +20 -0
  121. package/src/components/ui/Alert/Alert.tsx +8 -1
  122. package/src/components/ui/Avatar/Avatar.mdx +22 -2
  123. package/src/components/ui/Avatar/Avatar.module.css +29 -2
  124. package/src/components/ui/Avatar/Avatar.spec.tsx +26 -0
  125. package/src/components/ui/Avatar/Avatar.stories.tsx +23 -0
  126. package/src/components/ui/Avatar/Avatar.tsx +4 -2
  127. package/src/components/ui/Avatar/avatarTone.spec.ts +41 -0
  128. package/src/components/ui/Avatar/avatarTone.ts +22 -0
  129. package/src/components/ui/Badge/Badge.mdx +1 -1
  130. package/src/components/ui/Badge/Badge.module.css +2 -2
  131. package/src/components/ui/Badge/Badge.spec.tsx +8 -0
  132. package/src/components/ui/Collapsible/Collapsible.module.css +1 -2
  133. package/src/components/ui/NotificationBanner/NotificationBanner.mdx +27 -1
  134. package/src/components/ui/NotificationBanner/NotificationBanner.module.css +33 -3
  135. package/src/components/ui/NotificationBanner/NotificationBanner.spec.tsx +35 -0
  136. package/src/components/ui/NotificationBanner/NotificationBanner.stories.tsx +25 -0
  137. package/src/components/ui/NotificationBanner/NotificationBanner.tsx +15 -1
  138. package/src/components/ui/Separator/Separator.mdx +1 -0
  139. package/src/components/ui/Separator/Separator.module.css +6 -0
  140. package/src/components/ui/Separator/Separator.spec.tsx +19 -0
  141. package/src/components/ui/Separator/Separator.stories.tsx +15 -0
  142. package/src/components/ui/Table/Table.mdx +4 -1
  143. package/src/components/ui/Table/Table.module.css +7 -7
  144. package/src/components/ui/Table/Table.spec.tsx +11 -0
  145. package/src/components/ui/Tabs/Tabs.mdx +11 -5
  146. package/src/components/ui/Tabs/Tabs.module.css +23 -5
  147. package/src/components/ui/Tabs/Tabs.spec.tsx +39 -0
  148. package/src/components/ui/Tabs/Tabs.tsx +2 -1
  149. package/src/components/ui/Tabs/getNodeText.spec.tsx +23 -0
  150. package/src/components/ui/Tabs/getNodeText.ts +13 -0
  151. package/src/components/ui/Tooltip/Tooltip.mdx +6 -3
  152. package/src/components/ui/Tooltip/Tooltip.module.css +6 -2
  153. package/src/components/ui/Tooltip/Tooltip.spec.tsx +10 -0
  154. package/src/components/ui/Tooltip/Tooltip.stories.tsx +13 -0
  155. package/src/css/bdc.css +5 -2
  156. package/src/css/bdc.spec.ts +65 -0
  157. package/src/stories/DesignSystem/Borders.mdx +17 -9
  158. package/src/test/token-contract.spec.ts +1 -0
  159. package/src/web-components/globals.ts +10 -4
  160. package/src/web-components/index.ts +1 -0
  161. package/src/web-components/interaction/BdsAccordion.mdx +1 -1
  162. package/src/web-components/interaction/BdsAccordion.stories.tsx +1 -1
  163. package/src/web-components/interaction/BdsButton.mdx +1 -1
  164. package/src/web-components/interaction/BdsButton.stories.tsx +1 -1
  165. package/src/web-components/interaction/BdsCollapsible.mdx +1 -1
  166. package/src/web-components/interaction/BdsCollapsible.stories.tsx +1 -1
  167. package/src/web-components/interaction/BdsDialog.mdx +1 -1
  168. package/src/web-components/interaction/BdsDialog.stories.tsx +1 -1
  169. package/src/web-components/interaction/BdsDrawer.mdx +1 -1
  170. package/src/web-components/interaction/BdsDrawer.stories.tsx +1 -1
  171. package/src/web-components/interaction/BdsDropdownMenu.mdx +62 -6
  172. package/src/web-components/interaction/BdsDropdownMenu.stories.tsx +32 -7
  173. package/src/web-components/interaction/BdsPopover.mdx +1 -1
  174. package/src/web-components/interaction/BdsPopover.stories.tsx +1 -1
  175. package/src/web-components/interaction/BdsSkipLink.mdx +1 -1
  176. package/src/web-components/interaction/BdsSkipLink.stories.tsx +1 -1
  177. package/src/web-components/interaction/BdsTabs.mdx +10 -1
  178. package/src/web-components/interaction/BdsTabs.stories.tsx +1 -1
  179. package/src/web-components/interaction/BdsToastProvider.mdx +1 -1
  180. package/src/web-components/interaction/BdsToastProvider.stories.tsx +1 -1
  181. package/src/web-components/interaction/BdsTooltip.mdx +13 -5
  182. package/src/web-components/interaction/BdsTooltip.stories.tsx +12 -12
  183. package/src/web-components/interaction/bds-dropdown-menu-group.ts +72 -0
  184. package/src/web-components/interaction/bds-dropdown-menu-item.ts +65 -17
  185. package/src/web-components/interaction/bds-dropdown-menu.spec.ts +135 -0
  186. package/src/web-components/interaction/bds-dropdown-menu.ts +5 -4
  187. package/src/web-components/interaction/bds-tab.spec.ts +34 -2
  188. package/src/web-components/interaction/bds-tab.ts +31 -6
  189. package/src/web-components/interaction/bds-tooltip.spec.ts +16 -0
  190. package/src/web-components/interaction/bds-tooltip.ts +10 -8
  191. package/src/web-components/interaction/form/BdsCheckbox.mdx +5 -1
  192. package/src/web-components/interaction/form/BdsCheckbox.stories.tsx +1 -1
  193. package/src/web-components/interaction/form/BdsCheckboxGroup.mdx +5 -1
  194. package/src/web-components/interaction/form/BdsCheckboxGroup.stories.tsx +1 -1
  195. package/src/web-components/interaction/form/BdsCombobox.mdx +5 -1
  196. package/src/web-components/interaction/form/BdsCombobox.stories.tsx +1 -1
  197. package/src/web-components/interaction/form/BdsFieldGroup.stories.tsx +1 -1
  198. package/src/web-components/interaction/form/BdsFileInput.mdx +1 -1
  199. package/src/web-components/interaction/form/BdsFileInput.stories.tsx +1 -1
  200. package/src/web-components/interaction/form/BdsFormInput.mdx +8 -1
  201. package/src/web-components/interaction/form/BdsFormInput.stories.tsx +1 -1
  202. package/src/web-components/interaction/form/BdsNumberInput.mdx +5 -1
  203. package/src/web-components/interaction/form/BdsNumberInput.stories.tsx +1 -1
  204. package/src/web-components/interaction/form/BdsRadio.mdx +5 -1
  205. package/src/web-components/interaction/form/BdsRadio.stories.tsx +1 -1
  206. package/src/web-components/interaction/form/BdsRadioGroup.mdx +5 -1
  207. package/src/web-components/interaction/form/BdsRadioGroup.stories.tsx +1 -1
  208. package/src/web-components/interaction/form/BdsSegmentedControl.mdx +1 -1
  209. package/src/web-components/interaction/form/BdsSegmentedControl.stories.tsx +1 -1
  210. package/src/web-components/interaction/form/BdsSelect.mdx +5 -1
  211. package/src/web-components/interaction/form/BdsSelect.stories.tsx +1 -1
  212. package/src/web-components/interaction/form/BdsSlider.mdx +5 -1
  213. package/src/web-components/interaction/form/BdsSlider.stories.tsx +1 -1
  214. package/src/web-components/interaction/form/BdsSwitch.mdx +5 -1
  215. package/src/web-components/interaction/form/BdsSwitch.stories.tsx +1 -1
  216. package/src/web-components/interaction/form/BdsTextarea.mdx +5 -1
  217. package/src/web-components/interaction/form/BdsTextarea.stories.tsx +1 -1
  218. package/src/web-components/interaction/form/bds-checkbox-group.spec.ts +32 -3
  219. package/src/web-components/interaction/form/bds-checkbox-group.ts +33 -17
  220. package/src/web-components/interaction/form/bds-checkbox.ts +1 -0
  221. package/src/web-components/interaction/form/bds-combobox.ts +6 -16
  222. package/src/web-components/interaction/form/bds-form-input.ts +6 -16
  223. package/src/web-components/interaction/form/bds-number-input.ts +6 -16
  224. package/src/web-components/interaction/form/bds-radio-group.spec.ts +32 -3
  225. package/src/web-components/interaction/form/bds-radio-group.ts +26 -14
  226. package/src/web-components/interaction/form/bds-radio.ts +1 -0
  227. package/src/web-components/interaction/form/bds-select.ts +6 -16
  228. package/src/web-components/interaction/form/bds-slider.ts +5 -16
  229. package/src/web-components/interaction/form/bds-switch.ts +1 -0
  230. package/src/web-components/interaction/form/bds-textarea.ts +6 -16
  231. package/src/web-components/interaction/form/field-message.spec.ts +62 -0
  232. package/src/web-components/interaction/form/field-message.ts +55 -0
  233. package/src/web-components/layout/BdsGrid.mdx +1 -1
  234. package/src/web-components/layout/BdsGrid.stories.tsx +1 -1
  235. package/src/web-components/layout/BdsGridItem.mdx +1 -1
  236. package/src/web-components/layout/BdsGridItem.stories.tsx +1 -1
  237. package/src/web-components/ui/BdsAlert.mdx +20 -1
  238. package/src/web-components/ui/BdsAlert.stories.tsx +29 -3
  239. package/src/web-components/ui/BdsAvatar.mdx +20 -3
  240. package/src/web-components/ui/BdsAvatar.stories.tsx +25 -2
  241. package/src/web-components/ui/BdsBadge.mdx +2 -1
  242. package/src/web-components/ui/BdsBadge.stories.tsx +1 -1
  243. package/src/web-components/ui/BdsBreadcrumb.mdx +1 -1
  244. package/src/web-components/ui/BdsBreadcrumb.stories.tsx +1 -1
  245. package/src/web-components/ui/BdsButtonContainer.mdx +1 -1
  246. package/src/web-components/ui/BdsButtonContainer.stories.tsx +1 -1
  247. package/src/web-components/ui/BdsCalendar.mdx +1 -1
  248. package/src/web-components/ui/BdsCalendar.stories.tsx +1 -1
  249. package/src/web-components/ui/BdsCalendarRange.mdx +1 -1
  250. package/src/web-components/ui/BdsCalendarRange.stories.tsx +1 -1
  251. package/src/web-components/ui/BdsCard.mdx +1 -1
  252. package/src/web-components/ui/BdsCard.stories.tsx +1 -1
  253. package/src/web-components/ui/BdsCarousel.mdx +1 -1
  254. package/src/web-components/ui/BdsCarousel.stories.tsx +1 -1
  255. package/src/web-components/ui/BdsDescriptionList.mdx +1 -1
  256. package/src/web-components/ui/BdsDescriptionList.stories.tsx +1 -1
  257. package/src/web-components/ui/BdsIconWrapper.mdx +1 -1
  258. package/src/web-components/ui/BdsIconWrapper.stories.tsx +1 -1
  259. package/src/web-components/ui/BdsLink.mdx +1 -1
  260. package/src/web-components/ui/BdsLink.stories.tsx +1 -1
  261. package/src/web-components/ui/BdsLoading.mdx +1 -1
  262. package/src/web-components/ui/BdsLoading.stories.tsx +1 -1
  263. package/src/web-components/ui/BdsNotificationBanner.mdx +11 -2
  264. package/src/web-components/ui/BdsNotificationBanner.stories.tsx +29 -2
  265. package/src/web-components/ui/BdsPagination.mdx +1 -1
  266. package/src/web-components/ui/BdsPagination.stories.tsx +1 -1
  267. package/src/web-components/ui/BdsProgress.mdx +1 -1
  268. package/src/web-components/ui/BdsProgress.stories.tsx +1 -1
  269. package/src/web-components/ui/BdsProgressCircle.mdx +1 -1
  270. package/src/web-components/ui/BdsProgressCircle.stories.tsx +1 -1
  271. package/src/web-components/ui/BdsRating.mdx +5 -2
  272. package/src/web-components/ui/BdsRating.stories.tsx +1 -1
  273. package/src/web-components/ui/BdsSectionHeader.mdx +18 -6
  274. package/src/web-components/ui/BdsSectionHeader.stories.tsx +10 -2
  275. package/src/web-components/ui/BdsSeparator.mdx +2 -1
  276. package/src/web-components/ui/BdsSeparator.stories.tsx +13 -1
  277. package/src/web-components/ui/BdsSkeleton.mdx +1 -1
  278. package/src/web-components/ui/BdsSkeleton.stories.tsx +1 -1
  279. package/src/web-components/ui/BdsTable.mdx +5 -1
  280. package/src/web-components/ui/BdsTable.stories.tsx +1 -1
  281. package/src/web-components/ui/BdsTypography.mdx +1 -1
  282. package/src/web-components/ui/BdsTypography.stories.tsx +1 -1
  283. package/src/web-components/ui/bds-alert.spec.ts +34 -0
  284. package/src/web-components/ui/bds-alert.ts +36 -3
  285. package/src/web-components/ui/bds-avatar.spec.ts +47 -0
  286. package/src/web-components/ui/bds-avatar.ts +36 -3
  287. package/src/web-components/ui/bds-badge.spec.ts +6 -0
  288. package/src/web-components/ui/bds-badge.ts +2 -2
  289. package/src/web-components/ui/bds-notification-banner.spec.ts +52 -0
  290. package/src/web-components/ui/bds-notification-banner.ts +55 -3
  291. package/src/web-components/ui/bds-rating.spec.ts +7 -0
  292. package/src/web-components/ui/bds-rating.ts +6 -0
  293. package/src/web-components/ui/bds-section-header.spec.ts +36 -3
  294. package/src/web-components/ui/bds-section-header.ts +32 -10
  295. package/src/web-components/ui/bds-separator.spec.ts +8 -0
  296. package/src/web-components/ui/bds-separator.ts +7 -0
  297. package/src/web-components/ui/bds-table.spec.ts +11 -0
  298. package/src/web-components/ui/bds-table.ts +5 -5
  299. package/dist/web-components/chunk-QZAIRJ75.js +0 -111
@@ -7,7 +7,7 @@ import * as Stories from './BdsAvatar.stories';
7
7
 
8
8
  Framework-agnostic Avatar custom element. Displays a user photo when `src` is provided, or falls back to initials derived from the `name` attribute.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -37,6 +37,12 @@ import '@boostdev/design-system-components/web-components';
37
37
  ### Large
38
38
  <Canvas of={Stories.Large} />
39
39
 
40
+ ### Tones
41
+ <Canvas of={Stories.AllTones} />
42
+
43
+ ### Automatic tone from the name
44
+ <Canvas of={Stories.AutoTone} />
45
+
40
46
  ## Props
41
47
 
42
48
  <ArgTypes of={Stories} />
@@ -49,6 +55,7 @@ import '@boostdev/design-system-components/web-components';
49
55
  | `alt` | string | `name` or `"User avatar"` | Alt text for the `<img>` element. Pass `alt=""` explicitly to mark a decorative image — an empty attribute is preserved as-is and is not replaced by `name`/`"User avatar"`. |
50
56
  | `name` | string | — | Full name; used to compute up to two initials and as `aria-label` |
51
57
  | `size` | `"small" \| "medium" \| "large"` | `"medium"` | Diameter scale |
58
+ | `tone` | `"auto" \| "primary" \| "secondary" \| "accent-1" \| "accent-2" \| "accent-3"` | `"auto"` | Colour of the initials fallback. `auto` picks a tone from `name` (same name, same tone; no name gives `primary`). Image avatars ignore it. |
52
59
 
53
60
  ## CSS Custom Properties
54
61
 
@@ -56,8 +63,18 @@ import '@boostdev/design-system-components/web-components';
56
63
  |----------|-------------|
57
64
  | `--avatar_size` | Diameter override (wins over the `size` attribute's preset); defaults to `3em` |
58
65
  | `--avatar_radius` | Corner radius; defaults to `var(--bds-border_radius--circle)` |
59
- | `--avatar_bg` | Background colour of the fallback initials circle |
60
- | `--avatar_text` | Text colour of the initials |
66
+ | `--avatar_bg` | Background colour of the fallback initials circle; wins over every tone |
67
+ | `--avatar_text` | Text colour of the initials; wins over every tone |
68
+ | `--avatar_bg--primary` | Background for `tone="primary"`; defaults to `var(--bds-color_primary--subtle)` |
69
+ | `--avatar_text--primary` | Text colour for `tone="primary"`; defaults to `var(--bds-color_on-primary--subtle)` |
70
+ | `--avatar_bg--secondary` | Background for `tone="secondary"`; defaults to `var(--bds-color_secondary--subtle)` |
71
+ | `--avatar_text--secondary` | Text colour for `tone="secondary"`; defaults to `var(--bds-color_on-secondary--subtle)` |
72
+ | `--avatar_bg--accent-1` | Background for `tone="accent-1"`; defaults to `var(--bds-color_accent-1--subtle)` |
73
+ | `--avatar_text--accent-1` | Text colour for `tone="accent-1"`; defaults to `var(--bds-color_on-accent-1--subtle)` |
74
+ | `--avatar_bg--accent-2` | Background for `tone="accent-2"`; defaults to `var(--bds-color_accent-2--subtle)` |
75
+ | `--avatar_text--accent-2` | Text colour for `tone="accent-2"`; defaults to `var(--bds-color_on-accent-2--subtle)` |
76
+ | `--avatar_bg--accent-3` | Background for `tone="accent-3"`; defaults to `var(--bds-color_accent-3--subtle)` |
77
+ | `--avatar_text--accent-3` | Text colour for `tone="accent-3"`; defaults to `var(--bds-color_on-accent-3--subtle)` |
61
78
 
62
79
  ## Usage in plain HTML
63
80
 
@@ -7,22 +7,25 @@ function BdsAvatar({
7
7
  alt,
8
8
  name,
9
9
  size = 'medium',
10
+ tone = 'auto',
10
11
  }: {
11
12
  src?: string;
12
13
  alt?: string;
13
14
  name?: string;
14
15
  size?: 'small' | 'medium' | 'large';
16
+ tone?: 'auto' | 'primary' | 'secondary' | 'accent-1' | 'accent-2' | 'accent-3';
15
17
  }) {
16
- return React.createElement('bds-avatar', { src, alt, name, size });
18
+ return React.createElement('bds-avatar', { src, alt, name, size, tone });
17
19
  }
18
20
 
19
21
  const meta = {
20
22
  title: 'Web Components/UI/Avatar',
21
23
  component: BdsAvatar,
22
- tags: ['!stable', 'experimental'],
24
+ tags: ['!stable', 'alpha'],
23
25
  parameters: { layout: 'centered' },
24
26
  argTypes: {
25
27
  size: { control: 'select', options: ['small', 'medium', 'large'] },
28
+ tone: { control: 'select', options: ['auto', 'primary', 'secondary', 'accent-1', 'accent-2', 'accent-3'] },
26
29
  },
27
30
  } satisfies Meta<typeof BdsAvatar>;
28
31
 
@@ -46,3 +49,23 @@ export const AllSizes: Story = {
46
49
  </div>
47
50
  ),
48
51
  };
52
+
53
+ export const AllTones: Story = {
54
+ render: () => (
55
+ <div style={{ display: 'flex', gap: 16, alignItems: 'center' }}>
56
+ {['primary', 'secondary', 'accent-1', 'accent-2', 'accent-3'].map(tone =>
57
+ React.createElement('bds-avatar', { key: tone, name: tone, tone }),
58
+ )}
59
+ </div>
60
+ ),
61
+ };
62
+
63
+ export const AutoTone: Story = {
64
+ render: () => (
65
+ <div style={{ display: 'flex', gap: 16, alignItems: 'center' }}>
66
+ {['Jane Doe', 'Bjorn Boonen', 'Sam Visser', 'Noor de Vries', 'Lars Bakker'].map(name =>
67
+ React.createElement('bds-avatar', { key: name, name }),
68
+ )}
69
+ </div>
70
+ ),
71
+ };
@@ -7,7 +7,7 @@ import * as Stories from './BdsBadge.stories';
7
7
 
8
8
  Framework-agnostic badge custom element for short status labels and counts. Five semantic variants covering the common status palette.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -57,6 +57,7 @@ import '@boostdev/design-system-components/web-components';
57
57
  |----------|-------------|
58
58
  | `--badge_bg` | Badge background colour |
59
59
  | `--badge_text` | Badge text colour |
60
+ | `--badge_bg--secondary` / `--badge_text--secondary` | `secondary` variant colours (defaults `--bds-color_grey`, `--bds-color_on-grey`). The other variants have the same pair: `--badge_bg--{variant}` / `--badge_text--{variant}`. |
60
61
  | `--badge_font-size` | Font size |
61
62
  | `--badge_radius` | Border radius |
62
63
 
@@ -11,7 +11,7 @@ function BdsBadge({ variant = 'primary', children }: { variant?: BadgeVariant; c
11
11
  const meta = {
12
12
  title: 'Web Components/UI/Badge',
13
13
  component: BdsBadge,
14
- tags: ['!stable', 'experimental'],
14
+ tags: ['!stable', 'alpha'],
15
15
  parameters: { layout: 'centered' },
16
16
  argTypes: {
17
17
  variant: { control: 'select', options: ['primary', 'secondary', 'success', 'error', 'warning'] },
@@ -7,7 +7,7 @@ import * as Stories from './BdsBreadcrumb.stories';
7
7
 
8
8
  Framework-agnostic Breadcrumb custom element. Renders a horizontal navigation trail from a JSON array of `{ label, href? }` items. The last item is treated as the current page and rendered without a link. Non-last items without an `href` render as plain (non-interactive) text instead of an unusable link.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -10,7 +10,7 @@ function BdsBreadcrumb({ items = [] }: { items?: BreadcrumbItem[] }) {
10
10
  const meta = {
11
11
  title: 'Web Components/UI/Breadcrumb',
12
12
  component: BdsBreadcrumb,
13
- tags: ['!stable', 'experimental'],
13
+ tags: ['!stable', 'alpha'],
14
14
  parameters: { layout: 'centered' },
15
15
  } satisfies Meta<typeof BdsBreadcrumb>;
16
16
 
@@ -7,7 +7,7 @@ import * as Stories from './BdsButtonContainer.stories';
7
7
 
8
8
  Framework-agnostic layout wrapper for a row of action buttons (Cancel / Confirm, Back / Next). Web-component port of the React `ButtonContainer`.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  Buttons stack vertically (primary on top, via `column-reverse`) on narrow containers and lay out in a row once the container is at least `30rem` wide. The `variant` controls alignment: `flow` (multi-step navigation), `card` (single-form submit), `modal` (dialog actions, aligned end), `content` (inline actions, aligned start).
13
13
 
@@ -18,7 +18,7 @@ function BdsButtonContainer({
18
18
  const meta = {
19
19
  title: 'Web Components/Layout/ButtonContainer',
20
20
  component: BdsButtonContainer,
21
- tags: ['!stable', 'experimental'],
21
+ tags: ['!stable', 'alpha'],
22
22
  parameters: { layout: 'padded' },
23
23
  argTypes: {
24
24
  variant: { control: 'radio', options: ['flow', 'card', 'modal', 'content'] },
@@ -7,7 +7,7 @@ import * as Stories from './BdsCalendar.stories';
7
7
 
8
8
  Framework-agnostic Calendar date picker custom element. Renders a keyboard-navigable month grid for selecting a date. Participates in HTML forms via the Form-Associated Custom Elements API.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -20,7 +20,7 @@ function BdsCalendar({
20
20
  const meta = {
21
21
  title: 'Web Components/UI/Calendar',
22
22
  component: BdsCalendar,
23
- tags: ['!stable', 'experimental'],
23
+ tags: ['!stable', 'alpha'],
24
24
  parameters: { layout: 'centered' },
25
25
  argTypes: {
26
26
  value: { control: 'text' },
@@ -8,7 +8,7 @@ import * as Stories from './BdsCalendarRange.stories';
8
8
  Form-associated range date picker custom element. Two-click selection with
9
9
  hover/focus preview; value is an ISO range `"YYYY-MM-DD/YYYY-MM-DD"`.
10
10
 
11
- > **Status: experimental** — API may change before stable release.
11
+ > **Status: alpha** — API may change before stable release.
12
12
 
13
13
  ## Installation
14
14
 
@@ -13,7 +13,7 @@ function BdsCalendarRange({
13
13
  const meta = {
14
14
  title: 'Web Components/UI/CalendarRange',
15
15
  component: BdsCalendarRange,
16
- tags: ['!stable', 'experimental'],
16
+ tags: ['!stable', 'alpha'],
17
17
  parameters: { layout: 'centered' },
18
18
  argTypes: {
19
19
  value: { control: 'text' },
@@ -7,7 +7,7 @@ import * as Stories from './BdsCard.stories';
7
7
 
8
8
  Framework-agnostic Card layout custom element. A versatile container with three visual variants, five padding variants, text alignment, and an optional clickable mode. Each padding variant's resolved value can be overridden via the `--card_padding` CSS custom property.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -34,7 +34,7 @@ function BdsCard({
34
34
  const meta = {
35
35
  title: 'Web Components/Layout/Card',
36
36
  component: BdsCard,
37
- tags: ['!stable', 'experimental'],
37
+ tags: ['!stable', 'alpha'],
38
38
  parameters: { layout: 'centered' },
39
39
  argTypes: {
40
40
  variant: { control: 'select', options: ['default', 'elevated', 'outlined'] },
@@ -7,7 +7,7 @@ import * as Stories from './BdsCarousel.stories';
7
7
 
8
8
  Framework-agnostic Carousel custom element. A scroll-snap based slider where each direct child becomes a slide. Supports dot indicators, looping, and custom previous/next buttons via named slots.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -47,7 +47,7 @@ const slides = ['Slide 1', 'Slide 2', 'Slide 3'].map(label =>
47
47
  const meta = {
48
48
  title: 'Web Components/UI/Carousel',
49
49
  component: BdsCarousel,
50
- tags: ['!stable', 'experimental'],
50
+ tags: ['!stable', 'alpha'],
51
51
  parameters: { layout: 'padded' },
52
52
  argTypes: {
53
53
  currentIndex: { control: 'number' },
@@ -7,7 +7,7 @@ import * as Stories from './BdsDescriptionList.stories';
7
7
 
8
8
  Framework-agnostic Description List custom element. Wraps slotted `<dt>`/`<dd>` pairs in a styled `<dl>` with stacked or inline layout.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -15,7 +15,7 @@ function BdsDescriptionList({
15
15
  const meta = {
16
16
  title: 'Web Components/UI/DescriptionList',
17
17
  component: BdsDescriptionList,
18
- tags: ['!stable', 'experimental'],
18
+ tags: ['!stable', 'alpha'],
19
19
  parameters: { layout: 'centered' },
20
20
  argTypes: {
21
21
  layout: { control: 'radio', options: ['stacked', 'inline'] },
@@ -7,7 +7,7 @@ import * as Stories from './BdsIconWrapper.stories';
7
7
 
8
8
  Framework-agnostic Icon Wrapper custom element. Displays a slotted icon inside a circular container with design-system background and foreground colour theming.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -25,7 +25,7 @@ function BdsIconWrapper({
25
25
  const meta = {
26
26
  title: 'Web Components/Layout/IconWrapper',
27
27
  component: BdsIconWrapper,
28
- tags: ['!stable', 'experimental'],
28
+ tags: ['!stable', 'alpha'],
29
29
  parameters: { layout: 'centered' },
30
30
  argTypes: {
31
31
  ariaHidden: { control: 'text' },
@@ -7,7 +7,7 @@ import * as Stories from './BdsLink.stories';
7
7
 
8
8
  Framework-agnostic Link custom element. Renders a styled `<a>` tag with three visual variants, automatic external link handling, and design-token colours.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -34,7 +34,7 @@ function BdsLink({
34
34
  const meta = {
35
35
  title: 'Web Components/UI/Link',
36
36
  component: BdsLink,
37
- tags: ['!stable', 'experimental'],
37
+ tags: ['!stable', 'alpha'],
38
38
  parameters: { layout: 'centered' },
39
39
  argTypes: {
40
40
  variant: { control: 'select', options: ['default', 'subtle', 'standalone'] },
@@ -7,7 +7,7 @@ import * as Stories from './BdsLoading.stories';
7
7
 
8
8
  Framework-agnostic Loading spinner custom element. Displays an animated circular spinner to indicate that a process is in progress.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -9,7 +9,7 @@ function BdsLoading({ size = 'medium' }: { size?: 'small' | 'medium' | 'large' }
9
9
  const meta = {
10
10
  title: 'Web Components/UI/Loading',
11
11
  component: BdsLoading,
12
- tags: ['!stable', 'experimental'],
12
+ tags: ['!stable', 'alpha'],
13
13
  parameters: { layout: 'centered' },
14
14
  argTypes: {
15
15
  size: { control: 'select', options: ['small', 'medium', 'large'] },
@@ -7,7 +7,7 @@ import * as Stories from './BdsNotificationBanner.stories';
7
7
 
8
8
  Framework-agnostic Notification Banner custom element. Renders a full-width status banner at the top of a page or section with optional dismiss button and action slot.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -38,6 +38,9 @@ import '@boostdev/design-system-components/web-components';
38
38
  ### Error
39
39
  <Canvas of={Stories.Error} />
40
40
 
41
+ ### Gradient
42
+ <Canvas of={Stories.Gradient} />
43
+
41
44
  ### Dismissible
42
45
  <Canvas of={Stories.Dismissible} />
43
46
 
@@ -53,6 +56,7 @@ import '@boostdev/design-system-components/web-components';
53
56
  | Attribute | Type | Default | Description |
54
57
  |-----------|------|---------|-------------|
55
58
  | `variant` | `"info" \| "success" \| "warning" \| "error"` | `"info"` | Visual style and semantic urgency |
59
+ | `appearance` | `"default" \| "gradient"` | `"default"` | `gradient` fades the variant tint to the surface and adds a shadow |
56
60
  | `dismissible` | boolean | `false` | Shows a dismiss (×) button |
57
61
  | `dismiss-label` | string | `"Dismiss notification"` | `aria-label` for the dismiss button |
58
62
 
@@ -61,6 +65,7 @@ import '@boostdev/design-system-components/web-components';
61
65
  | Slot | Description |
62
66
  |------|-------------|
63
67
  | `(default)` | Banner body text or HTML |
68
+ | `icon` | Optional icon before the content (rendered `aria-hidden`) |
64
69
  | `action` | Optional action area (e.g. a `<button>` or `<a>`) |
65
70
 
66
71
  ## CSS Custom Properties
@@ -73,7 +78,11 @@ import '@boostdev/design-system-components/web-components';
73
78
  | `--banner_bg--info` / `--banner_text--info` / `--banner_border--info` | Info variant colours |
74
79
  | `--banner_bg--success` / `--banner_text--success` / `--banner_border--success` | Success variant colours |
75
80
  | `--banner_bg--warning` / `--banner_text--warning` / `--banner_border--warning` | Warning variant colours |
76
- | `--banner_bg--error` / `--banner_text--error` / `--banner_border--error` | Error variant colours |
81
+ | `--banner_bg--error` / `--banner_text--error` / `--banner_border--error` | Error variant colours (defaults `--bds-color_error--subtle`, `--bds-color_on-error--subtle`, `--bds-color_error`) |
82
+ | `--banner_border-width` | Width of the block-end accent line (default `3px`) |
83
+ | `--banner_gradient` | Gradient over the variant background, `appearance="gradient"` only (default `linear-gradient(100deg, transparent 35%, var(--bds-color_bg--strong, var(--bds-color_bg)) 100%)`) |
84
+ | `--banner_shadow` | Box shadow, `appearance="gradient"` only (default `var(--bds-shadow_s)`) |
85
+ | `--banner_accent--info` / `--banner_accent--success` / `--banner_accent--warning` / `--banner_accent--error` | Accent line colour with `appearance="gradient"` (defaults `--bds-color_on-blue--subtle`, `--bds-color_on-success--subtle`, `--bds-color_warning`, `--bds-color_error`). `--banner_border--{variant}` and `--banner_border` win. |
77
86
  | `--banner_dismiss-size` | Dismiss button minimum touch target (default `2.75rem`, WCAG 2.5.5); the visible icon stays 1rem |
78
87
  | `--banner_dismiss-radius` | Dismiss button border radius |
79
88
  | `--banner_dismiss-border` | Dismiss button border |
@@ -1,16 +1,18 @@
1
1
  import React from 'react';
2
2
  import type { Meta, StoryObj } from '@storybook/react';
3
- import type { NotificationBannerVariant } from './bds-notification-banner';
3
+ import type { NotificationBannerAppearance, NotificationBannerVariant } from './bds-notification-banner';
4
4
  import '../index'; // auto-registers all custom elements
5
5
 
6
6
  function BdsNotificationBanner({
7
7
  variant = 'info',
8
+ appearance,
8
9
  dismissible,
9
10
  dismissLabel,
10
11
  children,
11
12
  action,
12
13
  }: {
13
14
  variant?: NotificationBannerVariant;
15
+ appearance?: NotificationBannerAppearance;
14
16
  dismissible?: boolean;
15
17
  dismissLabel?: string;
16
18
  children?: React.ReactNode;
@@ -20,6 +22,7 @@ function BdsNotificationBanner({
20
22
  'bds-notification-banner',
21
23
  {
22
24
  variant,
25
+ appearance,
23
26
  dismissible: dismissible || undefined,
24
27
  'dismiss-label': dismissLabel,
25
28
  },
@@ -33,10 +36,11 @@ function BdsNotificationBanner({
33
36
  const meta = {
34
37
  title: 'Web Components/UI/NotificationBanner',
35
38
  component: BdsNotificationBanner,
36
- tags: ['!stable', 'experimental'],
39
+ tags: ['!stable', 'alpha'],
37
40
  parameters: { layout: 'fullscreen' },
38
41
  argTypes: {
39
42
  variant: { control: 'select', options: ['info', 'success', 'warning', 'error'] },
43
+ appearance: { control: 'select', options: ['default', 'gradient'] },
40
44
  dismissible: { control: 'boolean' },
41
45
  },
42
46
  } satisfies Meta<typeof BdsNotificationBanner>;
@@ -82,3 +86,26 @@ export const AllVariants: Story = {
82
86
  </div>
83
87
  ),
84
88
  };
89
+
90
+ const gradientIcon = (path: string) =>
91
+ React.createElement(
92
+ 'svg',
93
+ { slot: 'icon', viewBox: '0 0 24 24', width: 20, height: 20, fill: 'none', stroke: 'currentColor', strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round' },
94
+ React.createElement('circle', { cx: 12, cy: 12, r: 10 }),
95
+ React.createElement('path', { d: path }),
96
+ );
97
+
98
+ export const Gradient: Story = {
99
+ render: () => (
100
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>
101
+ {(['info', 'success', 'warning', 'error'] as const).map(v =>
102
+ React.createElement(
103
+ 'bds-notification-banner',
104
+ { key: v, variant: v, appearance: 'gradient' },
105
+ gradientIcon(v === 'success' ? 'm8 12 3 3 5-6' : v === 'info' ? 'M12 16v-4M12 8h.01' : 'M12 7v6M12 16h.01'),
106
+ `This is a ${v} notification banner.`,
107
+ ),
108
+ )}
109
+ </div>
110
+ ),
111
+ };
@@ -7,7 +7,7 @@ import * as Stories from './BdsPagination.stories';
7
7
 
8
8
  Framework-agnostic Pagination navigation custom element. Renders previous/next buttons and a page number list with smart ellipsis truncation.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -18,7 +18,7 @@ function BdsPagination({
18
18
  const meta = {
19
19
  title: 'Web Components/UI/Pagination',
20
20
  component: BdsPagination,
21
- tags: ['!stable', 'experimental'],
21
+ tags: ['!stable', 'alpha'],
22
22
  parameters: { layout: 'centered' },
23
23
  argTypes: {
24
24
  currentPage: { control: { type: 'number', min: 1 } },
@@ -7,7 +7,7 @@ import * as Stories from './BdsProgress.stories';
7
7
 
8
8
  Framework-agnostic horizontal Progress bar custom element. Tracks progress toward a goal with optional label and percentage display.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -27,7 +27,7 @@ function BdsProgress({
27
27
  const meta = {
28
28
  title: 'Web Components/UI/Progress',
29
29
  component: BdsProgress,
30
- tags: ['!stable', 'experimental'],
30
+ tags: ['!stable', 'alpha'],
31
31
  parameters: { layout: 'centered' },
32
32
  argTypes: {
33
33
  value: { control: { type: 'range', min: 0, max: 100 } },
@@ -7,7 +7,7 @@ import * as Stories from './BdsProgressCircle.stories';
7
7
 
8
8
  Framework-agnostic circular Progress custom element. Renders an SVG ring that fills proportionally to the `value` attribute, with an optional centred percentage label.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -27,7 +27,7 @@ function BdsProgressCircle({
27
27
  const meta = {
28
28
  title: 'Web Components/UI/ProgressCircle',
29
29
  component: BdsProgressCircle,
30
- tags: ['!stable', 'experimental'],
30
+ tags: ['!stable', 'alpha'],
31
31
  parameters: { layout: 'centered' },
32
32
  argTypes: {
33
33
  value: { control: { type: 'range', min: 0, max: 100 } },
@@ -7,7 +7,7 @@ import * as Stories from './BdsRating.stories';
7
7
 
8
8
  Framework-agnostic read-only star Rating custom element. Renders a row of SVG stars with filled/empty states based on `value` and `max`.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -59,8 +59,11 @@ import '@boostdev/design-system-components/web-components';
59
59
 
60
60
  | Variable | Default | Description |
61
61
  |----------|---------|--------------|
62
- | `--rating_color` | `var(--bds-color_bg)` | Colour of unfilled stars |
62
+ | `--rating_color` | `var(--bds-color_bg)` | Fill of unfilled stars |
63
63
  | `--rating_color--filled` | `var(--bds-color_warning)` | Colour of filled stars |
64
+ | `--rating_stroke-color` | `var(--bds-color_on-bg--as-surface)` | Outline of unfilled stars, a non-text mark (falls back to `--bds-color_on-bg--border`, then `--bds-color_on-bg`, on foundations before 2.3.0) |
65
+ | `--rating_stroke-color--filled` | `currentcolor` | Outline of filled stars, the filled colour by default so both kinds keep the same size |
66
+ | `--rating_stroke-width` | `var(--bdc-outline_width)` | Outline width, in the star's 24-unit viewBox |
64
67
 
65
68
  ## Accessibility
66
69
 
@@ -15,7 +15,7 @@ function BdsRating({
15
15
  const meta = {
16
16
  title: 'Web Components/Interaction/Rating',
17
17
  component: BdsRating,
18
- tags: ['!stable', 'experimental'],
18
+ tags: ['!stable', 'alpha'],
19
19
  parameters: { layout: 'centered' },
20
20
  argTypes: {
21
21
  value: { control: { type: 'range', min: 0, max: 10 } },
@@ -7,7 +7,7 @@ import * as Stories from './BdsSectionHeader.stories';
7
7
 
8
8
  Framework-agnostic Section Header custom element. Combines a title and optional subtitle into a consistently styled page or section heading with size and alignment variants.
9
9
 
10
- > **Status: experimental** — API may change before stable release.
10
+ > **Status: alpha** — API may change before stable release.
11
11
 
12
12
  ## Installation
13
13
 
@@ -41,6 +41,15 @@ import '@boostdev/design-system-components/web-components';
41
41
  ### Centered
42
42
  <Canvas of={Stories.Centered} />
43
43
 
44
+ ### Gradient
45
+ <Canvas of={Stories.Gradient} />
46
+
47
+ <Canvas of={Stories.GradientExtraSmall} />
48
+
49
+ <Canvas of={Stories.GradientSmall} />
50
+
51
+ <Canvas of={Stories.GradientLarge} />
52
+
44
53
  ### Title only
45
54
  <Canvas of={Stories.TitleOnly} />
46
55
 
@@ -57,6 +66,7 @@ import '@boostdev/design-system-components/web-components';
57
66
  | `subtitle` | string | — | Optional subheading text |
58
67
  | `alignment` | `"start" \| "center" \| "end"` | `"start"` | Text and flex alignment |
59
68
  | `size` | `"xs" \| "small" \| "medium" \| "large"` | `"medium"` | Font size scale for title and subtitle |
69
+ | `appearance` | `"default" \| "gradient"` | `"default"` | `gradient` fills the title with a gradient that spans the text. Falls back to the normal colour without `background-clip: text` support, and to `CanvasText` in forced-colors mode |
60
70
  | `title-as` | string | `"h2"` | Override the HTML element rendered for the title |
61
71
 
62
72
  ## Usage in plain HTML
@@ -79,13 +89,15 @@ import '@boostdev/design-system-components/web-components';
79
89
 
80
90
  | Token | Default | Description |
81
91
  |-------|---------|--------------|
92
+ | `--sectionHeader_title-font-family` | `--bds-font_family--heading` | Title font family |
93
+ | `--sectionHeader_title-gradient` | `linear-gradient(90deg, --bds-color_primary--strong, --bds-color_accent-3--strong)` | Title gradient, only with `appearance="gradient"` |
82
94
  | `--sectionHeader_gap` | `--bds-space_m` | Gap between title and subtitle |
83
- | `--sectionHeader_title-color` | `--bds-color_on-bg` | Title text color (`--sectionHeader-title-color`, kebab-delimited, is a deprecated alias) |
84
- | `--sectionHeader_subtitle-color` | `--bds-color_grey--strong` | Subtitle text color |
85
- | `--sectionHeader_title-size` | Size-variant font-size token (e.g. `--bds-font_size--display` for medium/large) | Title font size |
95
+ | `--sectionHeader_title-color` | `--bds-color_on-bg` | Title text color; no effect with `appearance="gradient"`, where the colour comes from `--sectionHeader_title-gradient` (`--sectionHeader-title-color`, kebab-delimited, is a deprecated alias) |
96
+ | `--sectionHeader_subtitle-color` | `--bds-color_on-bg--muted` | Subtitle text color |
97
+ | `--sectionHeader_title-size` | `xs` body, `small` heading-3, `medium` heading-2, `large` heading-1 | Title font size |
86
98
  | `--sectionHeader_title-line-height` | Size-variant line-height token | Title line height |
87
- | `--sectionHeader_title-weight` | `--bds-font_weight--bold` | Title font weight |
88
- | `--sectionHeader_subtitle-size` | Size-variant font-size token | Subtitle font size |
99
+ | `--sectionHeader_title-weight` | `--bds-font_weight--heading` | Title font weight |
100
+ | `--sectionHeader_subtitle-size` | `xs` body--s, `small`/`medium` body, `large` heading-3 | Subtitle font size |
89
101
  | `--sectionHeader_subtitle-line-height` | `1.3` (medium/large) or `1.4` (xs/small) | Subtitle line height |
90
102
 
91
103
  The host also sets `grid-column: var(--bds-grid_span-100)` so the header spans the full row when placed inside `<bds-grid>`.