@boostdev/design-system-components 2.15.0 → 2.16.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 (284) hide show
  1. package/AGENTS.md +19 -14
  2. package/dist/client.cjs +271 -205
  3. package/dist/client.css +801 -642
  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 +801 -642
  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-LDIPCTRN.js → chunk-2MJTO2IW.js} +48 -2
  14. package/dist/web-components/{chunk-3WAV6MDN.js → chunk-3FSGP35V.js} +1 -0
  15. package/dist/web-components/{chunk-KA3VPKMY.js → chunk-4MB2ICSK.js} +1 -0
  16. package/dist/web-components/{chunk-IDSM74LM.js → chunk-6XL5P76D.js} +3 -3
  17. package/dist/web-components/{chunk-P24JYC5V.js → chunk-7VXRMCAL.js} +10 -4
  18. package/dist/web-components/{chunk-CUKQ2L5B.js → chunk-AGI6YQRC.js} +9 -16
  19. package/dist/web-components/chunk-BDRV452N.js +51 -0
  20. package/dist/web-components/{chunk-3AY2YKCM.js → chunk-CKCPV347.js} +1 -0
  21. package/dist/web-components/{chunk-HBLJ4SLY.js → chunk-DD3OUXNG.js} +5 -5
  22. package/dist/web-components/{chunk-RVF7W653.js → chunk-DGOCPKHI.js} +30 -10
  23. package/dist/web-components/{chunk-2OLVQUBU.js → chunk-EYCW7TKB.js} +8 -15
  24. package/dist/web-components/{chunk-VANAKB6D.js → chunk-GPJWLAKU.js} +33 -16
  25. package/dist/web-components/{chunk-VED2DFJ6.js → chunk-GQNQBEYR.js} +8 -15
  26. package/dist/web-components/{chunk-WFVKU4GX.js → chunk-IKAJLROF.js} +49 -4
  27. package/dist/web-components/{chunk-RSZ3BWBK.js → chunk-KSK4RZZQ.js} +30 -7
  28. package/dist/web-components/{chunk-FEDABOR5.js → chunk-LHFUXZ52.js} +7 -15
  29. package/dist/web-components/{chunk-M3ECULRH.js → chunk-RBF7WPLI.js} +10 -8
  30. package/dist/web-components/{chunk-6G22I2CK.js → chunk-RZH5IVB5.js} +31 -1
  31. package/dist/web-components/chunk-SRKQ6GST.js +40 -0
  32. package/dist/web-components/{chunk-5HUAFCU6.js → chunk-TJV7UIXC.js} +7 -0
  33. package/dist/web-components/{chunk-J3HVUIUH.js → chunk-XI2U6U26.js} +8 -15
  34. package/dist/web-components/{chunk-JH6LQKLK.js → chunk-XJU7KITO.js} +8 -15
  35. package/dist/web-components/{chunk-JV5QT2OU.js → chunk-YLDQOESI.js} +27 -13
  36. package/dist/web-components/globals.js +1 -1
  37. package/dist/web-components/index.d.ts +1 -0
  38. package/dist/web-components/index.js +33 -28
  39. package/dist/web-components/interaction/bds-dropdown-menu-group.d.ts +41 -0
  40. package/dist/web-components/interaction/bds-dropdown-menu-group.js +7 -0
  41. package/dist/web-components/interaction/bds-dropdown-menu-item.d.ts +14 -1
  42. package/dist/web-components/interaction/bds-dropdown-menu-item.js +1 -1
  43. package/dist/web-components/interaction/bds-dropdown-menu.d.ts +2 -1
  44. package/dist/web-components/interaction/bds-dropdown-menu.js +1 -1
  45. package/dist/web-components/interaction/bds-tab.d.ts +5 -0
  46. package/dist/web-components/interaction/bds-tab.js +1 -1
  47. package/dist/web-components/interaction/bds-tooltip.js +1 -1
  48. package/dist/web-components/interaction/form/bds-checkbox-group.d.ts +6 -0
  49. package/dist/web-components/interaction/form/bds-checkbox-group.js +2 -1
  50. package/dist/web-components/interaction/form/bds-checkbox.js +1 -1
  51. package/dist/web-components/interaction/form/bds-combobox.js +2 -1
  52. package/dist/web-components/interaction/form/bds-form-input.js +2 -1
  53. package/dist/web-components/interaction/form/bds-number-input.js +2 -1
  54. package/dist/web-components/interaction/form/bds-radio-group.d.ts +5 -0
  55. package/dist/web-components/interaction/form/bds-radio-group.js +2 -1
  56. package/dist/web-components/interaction/form/bds-radio.js +1 -1
  57. package/dist/web-components/interaction/form/bds-select.js +2 -1
  58. package/dist/web-components/interaction/form/bds-slider.js +2 -1
  59. package/dist/web-components/interaction/form/bds-switch.js +1 -1
  60. package/dist/web-components/interaction/form/bds-textarea.js +2 -1
  61. package/dist/web-components/ui/bds-alert.d.ts +8 -1
  62. package/dist/web-components/ui/bds-alert.js +1 -1
  63. package/dist/web-components/ui/bds-avatar.d.ts +11 -0
  64. package/dist/web-components/ui/bds-avatar.js +1 -1
  65. package/dist/web-components/ui/bds-notification-banner.d.ts +14 -1
  66. package/dist/web-components/ui/bds-notification-banner.js +1 -1
  67. package/dist/web-components/ui/bds-section-header.d.ts +6 -0
  68. package/dist/web-components/ui/bds-section-header.js +1 -1
  69. package/dist/web-components/ui/bds-separator.js +1 -1
  70. package/dist/web-components/ui/bds-table.js +1 -1
  71. package/package.json +6 -2
  72. package/src/components/interaction/DropdownMenu/DropdownMenu.mdx +35 -4
  73. package/src/components/interaction/DropdownMenu/DropdownMenu.module.css +58 -10
  74. package/src/components/interaction/DropdownMenu/DropdownMenu.spec.tsx +114 -1
  75. package/src/components/interaction/DropdownMenu/DropdownMenu.stories.tsx +25 -0
  76. package/src/components/interaction/DropdownMenu/DropdownMenu.tsx +69 -17
  77. package/src/components/interaction/form/Checkbox/Checkbox.module.css +1 -0
  78. package/src/components/interaction/form/Checkbox/Checkbox.spec.tsx +7 -0
  79. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.mdx +1 -0
  80. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.module.css +7 -0
  81. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.spec.tsx +22 -0
  82. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx +1 -1
  83. package/src/components/interaction/form/Combobox/Combobox.module.css +1 -0
  84. package/src/components/interaction/form/Combobox/Combobox.spec.tsx +7 -0
  85. package/src/components/interaction/form/FormInput/FormInput.mdx +9 -0
  86. package/src/components/interaction/form/FormInput/FormInput.module.css +1 -0
  87. package/src/components/interaction/form/FormInput/FormInput.spec.tsx +7 -0
  88. package/src/components/interaction/form/NumberInput/NumberInput.module.css +1 -0
  89. package/src/components/interaction/form/NumberInput/NumberInput.spec.tsx +7 -0
  90. package/src/components/interaction/form/Radio/Radio.module.css +1 -0
  91. package/src/components/interaction/form/Radio/Radio.spec.tsx +7 -0
  92. package/src/components/interaction/form/RadioGroup/RadioGroup.mdx +1 -0
  93. package/src/components/interaction/form/RadioGroup/RadioGroup.module.css +7 -0
  94. package/src/components/interaction/form/RadioGroup/RadioGroup.spec.tsx +22 -0
  95. package/src/components/interaction/form/RadioGroup/RadioGroup.tsx +1 -1
  96. package/src/components/interaction/form/Select/Select.module.css +1 -0
  97. package/src/components/interaction/form/Select/Select.spec.tsx +7 -0
  98. package/src/components/interaction/form/Switch/Switch.module.css +1 -0
  99. package/src/components/interaction/form/Switch/Switch.spec.tsx +7 -0
  100. package/src/components/interaction/form/Textarea/Textarea.module.css +1 -0
  101. package/src/components/interaction/form/Textarea/Textarea.spec.tsx +7 -0
  102. package/src/components/interaction/form/atoms/Message.module.css +14 -3
  103. package/src/components/interaction/form/atoms/Message.spec.tsx +22 -0
  104. package/src/components/interaction/form/atoms/Message.tsx +5 -0
  105. package/src/components/layout/SectionHeader/SectionHeader.mdx +18 -5
  106. package/src/components/layout/SectionHeader/SectionHeader.module.css +35 -14
  107. package/src/components/layout/SectionHeader/SectionHeader.spec.tsx +44 -0
  108. package/src/components/layout/SectionHeader/SectionHeader.stories.tsx +5 -0
  109. package/src/components/layout/SectionHeader/SectionHeader.tsx +3 -1
  110. package/src/components/ui/Alert/Alert.mdx +11 -0
  111. package/src/components/ui/Alert/Alert.module.css +30 -1
  112. package/src/components/ui/Alert/Alert.spec.tsx +21 -0
  113. package/src/components/ui/Alert/Alert.stories.tsx +20 -0
  114. package/src/components/ui/Alert/Alert.tsx +8 -1
  115. package/src/components/ui/Avatar/Avatar.mdx +22 -2
  116. package/src/components/ui/Avatar/Avatar.module.css +29 -2
  117. package/src/components/ui/Avatar/Avatar.spec.tsx +26 -0
  118. package/src/components/ui/Avatar/Avatar.stories.tsx +23 -0
  119. package/src/components/ui/Avatar/Avatar.tsx +4 -2
  120. package/src/components/ui/Avatar/avatarTone.spec.ts +41 -0
  121. package/src/components/ui/Avatar/avatarTone.ts +22 -0
  122. package/src/components/ui/Collapsible/Collapsible.module.css +1 -2
  123. package/src/components/ui/NotificationBanner/NotificationBanner.mdx +14 -0
  124. package/src/components/ui/NotificationBanner/NotificationBanner.module.css +31 -1
  125. package/src/components/ui/NotificationBanner/NotificationBanner.spec.tsx +29 -0
  126. package/src/components/ui/NotificationBanner/NotificationBanner.stories.tsx +25 -0
  127. package/src/components/ui/NotificationBanner/NotificationBanner.tsx +15 -1
  128. package/src/components/ui/Separator/Separator.mdx +1 -0
  129. package/src/components/ui/Separator/Separator.module.css +6 -0
  130. package/src/components/ui/Separator/Separator.spec.tsx +19 -0
  131. package/src/components/ui/Separator/Separator.stories.tsx +15 -0
  132. package/src/components/ui/Table/Table.mdx +4 -1
  133. package/src/components/ui/Table/Table.module.css +7 -7
  134. package/src/components/ui/Table/Table.spec.tsx +11 -0
  135. package/src/components/ui/Tabs/Tabs.mdx +11 -5
  136. package/src/components/ui/Tabs/Tabs.module.css +23 -5
  137. package/src/components/ui/Tabs/Tabs.spec.tsx +39 -0
  138. package/src/components/ui/Tabs/Tabs.tsx +2 -1
  139. package/src/components/ui/Tabs/getNodeText.spec.tsx +23 -0
  140. package/src/components/ui/Tabs/getNodeText.ts +13 -0
  141. package/src/components/ui/Tooltip/Tooltip.mdx +6 -3
  142. package/src/components/ui/Tooltip/Tooltip.module.css +6 -2
  143. package/src/components/ui/Tooltip/Tooltip.spec.tsx +10 -0
  144. package/src/components/ui/Tooltip/Tooltip.stories.tsx +13 -0
  145. package/src/css/bdc.css +5 -2
  146. package/src/css/bdc.spec.ts +65 -0
  147. package/src/stories/DesignSystem/Borders.mdx +17 -9
  148. package/src/web-components/globals.ts +10 -4
  149. package/src/web-components/index.ts +1 -0
  150. package/src/web-components/interaction/BdsAccordion.mdx +1 -1
  151. package/src/web-components/interaction/BdsAccordion.stories.tsx +1 -1
  152. package/src/web-components/interaction/BdsButton.mdx +1 -1
  153. package/src/web-components/interaction/BdsButton.stories.tsx +1 -1
  154. package/src/web-components/interaction/BdsCollapsible.mdx +1 -1
  155. package/src/web-components/interaction/BdsCollapsible.stories.tsx +1 -1
  156. package/src/web-components/interaction/BdsDialog.mdx +1 -1
  157. package/src/web-components/interaction/BdsDialog.stories.tsx +1 -1
  158. package/src/web-components/interaction/BdsDrawer.mdx +1 -1
  159. package/src/web-components/interaction/BdsDrawer.stories.tsx +1 -1
  160. package/src/web-components/interaction/BdsDropdownMenu.mdx +62 -6
  161. package/src/web-components/interaction/BdsDropdownMenu.stories.tsx +32 -7
  162. package/src/web-components/interaction/BdsPopover.mdx +1 -1
  163. package/src/web-components/interaction/BdsPopover.stories.tsx +1 -1
  164. package/src/web-components/interaction/BdsSkipLink.mdx +1 -1
  165. package/src/web-components/interaction/BdsSkipLink.stories.tsx +1 -1
  166. package/src/web-components/interaction/BdsTabs.mdx +10 -1
  167. package/src/web-components/interaction/BdsTabs.stories.tsx +1 -1
  168. package/src/web-components/interaction/BdsToastProvider.mdx +1 -1
  169. package/src/web-components/interaction/BdsToastProvider.stories.tsx +1 -1
  170. package/src/web-components/interaction/BdsTooltip.mdx +13 -5
  171. package/src/web-components/interaction/BdsTooltip.stories.tsx +12 -12
  172. package/src/web-components/interaction/bds-dropdown-menu-group.ts +72 -0
  173. package/src/web-components/interaction/bds-dropdown-menu-item.ts +65 -17
  174. package/src/web-components/interaction/bds-dropdown-menu.spec.ts +135 -0
  175. package/src/web-components/interaction/bds-dropdown-menu.ts +5 -4
  176. package/src/web-components/interaction/bds-tab.spec.ts +34 -2
  177. package/src/web-components/interaction/bds-tab.ts +31 -6
  178. package/src/web-components/interaction/bds-tooltip.spec.ts +16 -0
  179. package/src/web-components/interaction/bds-tooltip.ts +10 -8
  180. package/src/web-components/interaction/form/BdsCheckbox.mdx +5 -1
  181. package/src/web-components/interaction/form/BdsCheckbox.stories.tsx +1 -1
  182. package/src/web-components/interaction/form/BdsCheckboxGroup.mdx +5 -1
  183. package/src/web-components/interaction/form/BdsCheckboxGroup.stories.tsx +1 -1
  184. package/src/web-components/interaction/form/BdsCombobox.mdx +5 -1
  185. package/src/web-components/interaction/form/BdsCombobox.stories.tsx +1 -1
  186. package/src/web-components/interaction/form/BdsFieldGroup.stories.tsx +1 -1
  187. package/src/web-components/interaction/form/BdsFileInput.mdx +1 -1
  188. package/src/web-components/interaction/form/BdsFileInput.stories.tsx +1 -1
  189. package/src/web-components/interaction/form/BdsFormInput.mdx +8 -1
  190. package/src/web-components/interaction/form/BdsFormInput.stories.tsx +1 -1
  191. package/src/web-components/interaction/form/BdsNumberInput.mdx +5 -1
  192. package/src/web-components/interaction/form/BdsNumberInput.stories.tsx +1 -1
  193. package/src/web-components/interaction/form/BdsRadio.mdx +5 -1
  194. package/src/web-components/interaction/form/BdsRadio.stories.tsx +1 -1
  195. package/src/web-components/interaction/form/BdsRadioGroup.mdx +5 -1
  196. package/src/web-components/interaction/form/BdsRadioGroup.stories.tsx +1 -1
  197. package/src/web-components/interaction/form/BdsSegmentedControl.mdx +1 -1
  198. package/src/web-components/interaction/form/BdsSegmentedControl.stories.tsx +1 -1
  199. package/src/web-components/interaction/form/BdsSelect.mdx +5 -1
  200. package/src/web-components/interaction/form/BdsSelect.stories.tsx +1 -1
  201. package/src/web-components/interaction/form/BdsSlider.mdx +5 -1
  202. package/src/web-components/interaction/form/BdsSlider.stories.tsx +1 -1
  203. package/src/web-components/interaction/form/BdsSwitch.mdx +5 -1
  204. package/src/web-components/interaction/form/BdsSwitch.stories.tsx +1 -1
  205. package/src/web-components/interaction/form/BdsTextarea.mdx +5 -1
  206. package/src/web-components/interaction/form/BdsTextarea.stories.tsx +1 -1
  207. package/src/web-components/interaction/form/bds-checkbox-group.spec.ts +32 -3
  208. package/src/web-components/interaction/form/bds-checkbox-group.ts +33 -17
  209. package/src/web-components/interaction/form/bds-checkbox.ts +1 -0
  210. package/src/web-components/interaction/form/bds-combobox.ts +6 -16
  211. package/src/web-components/interaction/form/bds-form-input.ts +6 -16
  212. package/src/web-components/interaction/form/bds-number-input.ts +6 -16
  213. package/src/web-components/interaction/form/bds-radio-group.spec.ts +32 -3
  214. package/src/web-components/interaction/form/bds-radio-group.ts +26 -14
  215. package/src/web-components/interaction/form/bds-radio.ts +1 -0
  216. package/src/web-components/interaction/form/bds-select.ts +6 -16
  217. package/src/web-components/interaction/form/bds-slider.ts +5 -16
  218. package/src/web-components/interaction/form/bds-switch.ts +1 -0
  219. package/src/web-components/interaction/form/bds-textarea.ts +6 -16
  220. package/src/web-components/interaction/form/field-message.spec.ts +62 -0
  221. package/src/web-components/interaction/form/field-message.ts +55 -0
  222. package/src/web-components/layout/BdsGrid.mdx +1 -1
  223. package/src/web-components/layout/BdsGrid.stories.tsx +1 -1
  224. package/src/web-components/layout/BdsGridItem.mdx +1 -1
  225. package/src/web-components/layout/BdsGridItem.stories.tsx +1 -1
  226. package/src/web-components/ui/BdsAlert.mdx +19 -1
  227. package/src/web-components/ui/BdsAlert.stories.tsx +29 -3
  228. package/src/web-components/ui/BdsAvatar.mdx +20 -3
  229. package/src/web-components/ui/BdsAvatar.stories.tsx +25 -2
  230. package/src/web-components/ui/BdsBadge.mdx +1 -1
  231. package/src/web-components/ui/BdsBadge.stories.tsx +1 -1
  232. package/src/web-components/ui/BdsBreadcrumb.mdx +1 -1
  233. package/src/web-components/ui/BdsBreadcrumb.stories.tsx +1 -1
  234. package/src/web-components/ui/BdsButtonContainer.mdx +1 -1
  235. package/src/web-components/ui/BdsButtonContainer.stories.tsx +1 -1
  236. package/src/web-components/ui/BdsCalendar.mdx +1 -1
  237. package/src/web-components/ui/BdsCalendar.stories.tsx +1 -1
  238. package/src/web-components/ui/BdsCalendarRange.mdx +1 -1
  239. package/src/web-components/ui/BdsCalendarRange.stories.tsx +1 -1
  240. package/src/web-components/ui/BdsCard.mdx +1 -1
  241. package/src/web-components/ui/BdsCard.stories.tsx +1 -1
  242. package/src/web-components/ui/BdsCarousel.mdx +1 -1
  243. package/src/web-components/ui/BdsCarousel.stories.tsx +1 -1
  244. package/src/web-components/ui/BdsDescriptionList.mdx +1 -1
  245. package/src/web-components/ui/BdsDescriptionList.stories.tsx +1 -1
  246. package/src/web-components/ui/BdsIconWrapper.mdx +1 -1
  247. package/src/web-components/ui/BdsIconWrapper.stories.tsx +1 -1
  248. package/src/web-components/ui/BdsLink.mdx +1 -1
  249. package/src/web-components/ui/BdsLink.stories.tsx +1 -1
  250. package/src/web-components/ui/BdsLoading.mdx +1 -1
  251. package/src/web-components/ui/BdsLoading.stories.tsx +1 -1
  252. package/src/web-components/ui/BdsNotificationBanner.mdx +10 -1
  253. package/src/web-components/ui/BdsNotificationBanner.stories.tsx +29 -2
  254. package/src/web-components/ui/BdsPagination.mdx +1 -1
  255. package/src/web-components/ui/BdsPagination.stories.tsx +1 -1
  256. package/src/web-components/ui/BdsProgress.mdx +1 -1
  257. package/src/web-components/ui/BdsProgress.stories.tsx +1 -1
  258. package/src/web-components/ui/BdsProgressCircle.mdx +1 -1
  259. package/src/web-components/ui/BdsProgressCircle.stories.tsx +1 -1
  260. package/src/web-components/ui/BdsRating.mdx +1 -1
  261. package/src/web-components/ui/BdsRating.stories.tsx +1 -1
  262. package/src/web-components/ui/BdsSectionHeader.mdx +18 -6
  263. package/src/web-components/ui/BdsSectionHeader.stories.tsx +10 -2
  264. package/src/web-components/ui/BdsSeparator.mdx +2 -1
  265. package/src/web-components/ui/BdsSeparator.stories.tsx +13 -1
  266. package/src/web-components/ui/BdsSkeleton.mdx +1 -1
  267. package/src/web-components/ui/BdsSkeleton.stories.tsx +1 -1
  268. package/src/web-components/ui/BdsTable.mdx +5 -1
  269. package/src/web-components/ui/BdsTable.stories.tsx +1 -1
  270. package/src/web-components/ui/BdsTypography.mdx +1 -1
  271. package/src/web-components/ui/BdsTypography.stories.tsx +1 -1
  272. package/src/web-components/ui/bds-alert.spec.ts +27 -0
  273. package/src/web-components/ui/bds-alert.ts +34 -1
  274. package/src/web-components/ui/bds-avatar.spec.ts +47 -0
  275. package/src/web-components/ui/bds-avatar.ts +36 -3
  276. package/src/web-components/ui/bds-notification-banner.spec.ts +45 -0
  277. package/src/web-components/ui/bds-notification-banner.ts +53 -1
  278. package/src/web-components/ui/bds-section-header.spec.ts +36 -3
  279. package/src/web-components/ui/bds-section-header.ts +32 -10
  280. package/src/web-components/ui/bds-separator.spec.ts +8 -0
  281. package/src/web-components/ui/bds-separator.ts +7 -0
  282. package/src/web-components/ui/bds-table.spec.ts +11 -0
  283. package/src/web-components/ui/bds-table.ts +5 -5
  284. package/dist/web-components/chunk-QZAIRJ75.js +0 -111
@@ -1,3 +1,7 @@
1
+ import {
2
+ fieldMessageStyles,
3
+ renderFieldMessage
4
+ } from "./chunk-SRKQ6GST.js";
1
5
  import {
2
6
  T,
3
7
  i,
@@ -55,6 +59,7 @@ var BdsNumberInput = class extends i2 {
55
59
 
56
60
  :host([error]) .row {
57
61
  --bdc_color: var(--bdc_color--error);
62
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
58
63
  }
59
64
 
60
65
  .row:focus-within {
@@ -63,6 +68,7 @@ var BdsNumberInput = class extends i2 {
63
68
 
64
69
  :host([error]) .row:focus-within {
65
70
  --bdc_color: var(--bdc_color--error);
71
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
66
72
  }
67
73
 
68
74
  .row:focus-within:has(:focus-visible) {
@@ -137,20 +143,7 @@ var BdsNumberInput = class extends i2 {
137
143
  color: var(--numberInput_stepper-color, var(--bds-color_interactive));
138
144
  }
139
145
 
140
- .message {
141
- margin-block-start: var(--bds-space_xxs);
142
- font-size: var(--bds-font_size--body--s);
143
- font-family: var(--bds-font_family--body);
144
- }
145
-
146
- .message--error {
147
- color: var(--bds-color_error);
148
- }
149
-
150
- .message--hint {
151
- color: var(--bds-color_on-bg--subtle);
152
- font-style: italic;
153
- }
146
+ ${fieldMessageStyles}
154
147
  `;
155
148
  static properties = {
156
149
  name: { type: String, reflect: true },
@@ -254,7 +247,7 @@ var BdsNumberInput = class extends i2 {
254
247
  </svg>
255
248
  </button>
256
249
  </div>
257
- ${this.error ? T`<p id=${errorId} class="message message--error" role="alert">${this.error}</p>` : this.hint ? T`<p id=${hintId} class="message message--hint">${this.hint}</p>` : ""}
250
+ ${this.error ? renderFieldMessage("error", errorId, this.error) : this.hint ? renderFieldMessage("hint", hintId, this.hint) : ""}
258
251
  `;
259
252
  }
260
253
  };
@@ -5,6 +5,22 @@ import {
5
5
  i2
6
6
  } from "./chunk-LGEZYFUU.js";
7
7
 
8
+ // src/components/ui/Avatar/avatarTone.ts
9
+ var AVATAR_TONES = ["primary", "accent-1", "accent-2", "accent-3", "secondary"];
10
+ function toneFromName(name) {
11
+ const normalised = (name ?? "").trim().toLowerCase();
12
+ if (!normalised) return "primary";
13
+ const hash = [...normalised].reduce(
14
+ (h, ch) => Math.imul(h, 31) + (ch.codePointAt(0) ?? 0) >>> 0,
15
+ 0
16
+ );
17
+ return AVATAR_TONES[hash % AVATAR_TONES.length];
18
+ }
19
+ function resolveAvatarTone(tone, name) {
20
+ const isKnownTone = (value) => AVATAR_TONES.some((known) => known === value);
21
+ return tone && isKnownTone(tone) ? tone : toneFromName(name);
22
+ }
23
+
8
24
  // src/web-components/ui/bds-avatar.ts
9
25
  var BdsAvatar = class extends i2 {
10
26
  static styles = i`
@@ -43,11 +59,38 @@ var BdsAvatar = class extends i2 {
43
59
  justify-content: center;
44
60
  inline-size: 100%;
45
61
  block-size: 100%;
46
- background-color: var(--avatar_bg, var(--bds-color_blue));
47
- color: var(--avatar_text, var(--bds-color_on-blue));
62
+ background-color: var(--avatar_bg, var(--avatar_bg--variant));
63
+ color: var(--avatar_text, var(--avatar_text--variant));
48
64
  font-weight: var(--bds-font_weight--semibold);
49
65
  }
50
66
 
67
+ /* Tone slots (mirrors the React Avatar): outer --avatar_bg / --avatar_text
68
+ still win, each tone has its own public hook. */
69
+ .fallback.tone_primary {
70
+ --avatar_bg--variant: var(--avatar_bg--primary, var(--bds-color_primary--subtle, var(--bds-color_blue--subtle)));
71
+ --avatar_text--variant: var(--avatar_text--primary, var(--bds-color_on-primary--subtle, var(--bds-color_on-blue--subtle)));
72
+ }
73
+
74
+ .fallback.tone_secondary {
75
+ --avatar_bg--variant: var(--avatar_bg--secondary, var(--bds-color_secondary--subtle, var(--bds-color_blue--subtle)));
76
+ --avatar_text--variant: var(--avatar_text--secondary, var(--bds-color_on-secondary--subtle, var(--bds-color_on-blue--subtle)));
77
+ }
78
+
79
+ .fallback.tone_accent-1 {
80
+ --avatar_bg--variant: var(--avatar_bg--accent-1, var(--bds-color_accent-1--subtle, var(--bds-color_green--subtle)));
81
+ --avatar_text--variant: var(--avatar_text--accent-1, var(--bds-color_on-accent-1--subtle, var(--bds-color_on-green--subtle)));
82
+ }
83
+
84
+ .fallback.tone_accent-2 {
85
+ --avatar_bg--variant: var(--avatar_bg--accent-2, var(--bds-color_accent-2--subtle, var(--bds-color_orange--subtle)));
86
+ --avatar_text--variant: var(--avatar_text--accent-2, var(--bds-color_on-accent-2--subtle, var(--bds-color_on-orange--subtle)));
87
+ }
88
+
89
+ .fallback.tone_accent-3 {
90
+ --avatar_bg--variant: var(--avatar_bg--accent-3, var(--bds-color_accent-3--subtle, var(--bds-color_blue--subtle)));
91
+ --avatar_text--variant: var(--avatar_text--accent-3, var(--bds-color_on-accent-3--subtle, var(--bds-color_on-blue--subtle)));
92
+ }
93
+
51
94
  .initials {
52
95
  line-height: 1;
53
96
  user-select: none;
@@ -68,7 +111,8 @@ var BdsAvatar = class extends i2 {
68
111
  src: { type: String },
69
112
  alt: { type: String },
70
113
  name: { type: String },
71
- size: { type: String, reflect: true }
114
+ size: { type: String, reflect: true },
115
+ tone: { type: String, reflect: true }
72
116
  };
73
117
  constructor() {
74
118
  super();
@@ -76,6 +120,7 @@ var BdsAvatar = class extends i2 {
76
120
  this.alt = "";
77
121
  this.name = "";
78
122
  this.size = "medium";
123
+ this.tone = "auto";
79
124
  }
80
125
  get _initials() {
81
126
  if (!this.name) return "";
@@ -88,7 +133,7 @@ var BdsAvatar = class extends i2 {
88
133
  }
89
134
  return T`
90
135
  <span
91
- class="fallback"
136
+ class="fallback tone_${resolveAvatarTone(this.tone, this.name)}"
92
137
  role="img"
93
138
  aria-label=${this.name || "User avatar"}
94
139
  >
@@ -28,14 +28,14 @@ var BdsTab = class extends i2 {
28
28
  padding: var(--bds-space_s) var(--bds-space_m);
29
29
  font-family: var(--bds-font_family--body);
30
30
  font-size: var(--bds-font_size--body);
31
- font-weight: var(--bds-font_weight--semibold);
31
+ font-weight: var(--tab_font-weight, var(--tab_font-weight--state, var(--tab_font-weight--inactive, var(--bds-font_weight--medium))));
32
32
 
33
33
  /* Layered cascade: public overrides (--tab_color, --tab_border-color) win over
34
34
  per-state defaults. Active/hover write to the inner --tab_*--state slot —
35
35
  mirrors the React Tabs.module.css pattern so a consumer's --tab_color
36
36
  override is never shadowed by the selected/hover rules below. */
37
- color: var(--tab_color, var(--tab_color--state, var(--bds-color_on-bg)));
38
- border-block-end: 2px solid var(--tab_border-color, var(--tab_border-color--state, transparent));
37
+ color: var(--tab_color, var(--tab_color--state, var(--tab_color--inactive, var(--bds-color_on-bg--muted, var(--bds-color_on-bg)))));
38
+ border-block-end: var(--tab_indicator-width, 3px) solid var(--tab_border-color, var(--tab_border-color--state, transparent));
39
39
  margin-block-end: -1px;
40
40
  cursor: pointer;
41
41
  transition: var(--bds-animation_transition);
@@ -43,10 +43,27 @@ var BdsTab = class extends i2 {
43
43
  }
44
44
 
45
45
  :host([selected]) .tab {
46
- --tab_color--state: var(--tab_color--active, var(--bds-color_interactive_on-bg));
46
+ --tab_color--state: var(--tab_color--active, var(--bds-color_on-bg));
47
+ --tab_font-weight--state: var(--tab_font-weight--active, var(--bds-font_weight--bold));
47
48
  --tab_border-color--state: var(--tab_border-color--active, var(--bds-color_interactive));
48
49
  }
49
50
 
51
+ /* Reserves the width of the bold label so selecting a tab does not shift the row.
52
+ The hidden ::after repeats the label at the active weight in the same grid cell. */
53
+ .label {
54
+ display: inline-grid;
55
+ }
56
+
57
+ .label::after {
58
+ content: attr(data-label);
59
+ grid-area: 1 / 1;
60
+ font-weight: var(--tab_font-weight, var(--tab_font-weight--active, var(--bds-font_weight--bold)));
61
+ visibility: hidden;
62
+ pointer-events: none;
63
+ block-size: 0;
64
+ overflow: hidden;
65
+ }
66
+
50
67
  .tab:disabled {
51
68
  opacity: 0.4;
52
69
  cursor: not-allowed;
@@ -60,23 +77,29 @@ var BdsTab = class extends i2 {
60
77
 
61
78
  @media (hover: hover) and (pointer: fine) {
62
79
  .tab:not(:disabled, [aria-selected='true']):hover {
63
- --tab_color--state: var(--tab_color--hover, var(--bds-color_interactive_on-bg));
80
+ --tab_color--state: var(--tab_color--hover, var(--bds-color_on-bg));
64
81
  }
65
82
  }
66
83
  `;
67
84
  static properties = {
68
85
  selected: { type: Boolean, reflect: true },
69
- disabled: { type: Boolean, reflect: true }
86
+ disabled: { type: Boolean, reflect: true },
87
+ _label: { state: true }
70
88
  };
71
89
  constructor() {
72
90
  super();
73
91
  this.selected = false;
74
92
  this.disabled = false;
93
+ this._label = "";
75
94
  }
76
95
  /** Called by `bds-tabs` to focus the inner button for keyboard navigation. */
77
96
  focusButton() {
78
97
  this.shadowRoot?.querySelector("button")?.focus();
79
98
  }
99
+ _handleSlotChange(e) {
100
+ const slot = e.target;
101
+ this._label = slot.assignedNodes({ flatten: true }).map((n) => n.textContent ?? "").join("").trim();
102
+ }
80
103
  _handleClick() {
81
104
  if (this.disabled) return;
82
105
  this.dispatchEvent(new CustomEvent("bds-tab-select", { bubbles: true, composed: true }));
@@ -92,7 +115,7 @@ var BdsTab = class extends i2 {
92
115
  ?disabled=${this.disabled}
93
116
  @click=${this._handleClick}
94
117
  >
95
- <slot></slot>
118
+ <span class="label" data-label=${this._label}><slot @slotchange=${this._handleSlotChange}></slot></span>
96
119
  </button>
97
120
  `;
98
121
  }
@@ -1,3 +1,7 @@
1
+ import {
2
+ fieldMessageStyles,
3
+ renderFieldMessage
4
+ } from "./chunk-SRKQ6GST.js";
1
5
  import {
2
6
  T,
3
7
  i,
@@ -122,20 +126,6 @@ var BdsSlider = class extends i2 {
122
126
  border-radius: var(--slider_track-radius, var(--bds-border_radius--full));
123
127
  }
124
128
 
125
- .message {
126
- margin-block-start: var(--bds-space_xxs);
127
- font-size: var(--bds-font_size--body--s);
128
- font-family: var(--bds-font_family--body);
129
- }
130
-
131
- .message--error {
132
- color: var(--bds-color_error);
133
- }
134
-
135
- .message--hint {
136
- color: var(--bds-color_on-bg--subtle);
137
- font-style: italic;
138
- }
139
129
 
140
130
  @media (prefers-reduced-motion: reduce) {
141
131
  .input,
@@ -144,6 +134,8 @@ var BdsSlider = class extends i2 {
144
134
  transition: none;
145
135
  }
146
136
  }
137
+
138
+ ${fieldMessageStyles}
147
139
  `;
148
140
  static properties = {
149
141
  name: { type: String, reflect: true },
@@ -237,7 +229,7 @@ var BdsSlider = class extends i2 {
237
229
  @change=${this._handleChange}
238
230
  />
239
231
  </div>
240
- ${this.error ? T`<p id=${errorId} class="message message--error" role="alert">${this.error}</p>` : this.hint ? T`<p id=${hintId} class="message message--hint">${this.hint}</p>` : ""}
232
+ ${this.error ? renderFieldMessage("error", errorId, this.error) : this.hint ? renderFieldMessage("hint", hintId, this.hint) : ""}
241
233
  `;
242
234
  }
243
235
  };
@@ -26,13 +26,15 @@ var BdsTooltip = class extends i2 {
26
26
  .tooltip {
27
27
  position: absolute;
28
28
  z-index: var(--bds-z-index_popover);
29
- padding: var(--bds-space_xxs) var(--bds-space_xs);
30
- border-radius: var(--tooltip_radius, var(--bds-border_radius--full));
29
+ padding: var(--tooltip_padding, var(--bds-space_xxs) var(--bds-space_s));
30
+ border-radius: var(--tooltip_radius, var(--bds-border_radius--xs));
31
31
  background-color: var(--tooltip_bg, var(--bds-color_on-bg));
32
32
  color: var(--tooltip_text, var(--bds-color_bg));
33
- font-size: var(--bds-font_size--body--s);
33
+ font-size: var(--tooltip_font-size, var(--bds-font_size--body--s));
34
34
  line-height: var(--bds-font_line-height--body);
35
- white-space: nowrap;
35
+ inline-size: max-content;
36
+ max-inline-size: var(--tooltip_max-inline-size, 20rem);
37
+ white-space: normal;
36
38
  pointer-events: none;
37
39
 
38
40
  /* Hidden by default */
@@ -50,28 +52,28 @@ var BdsTooltip = class extends i2 {
50
52
 
51
53
  /* Placement: top (default) */
52
54
  .tooltip.--placement_top {
53
- inset-block-end: calc(100% + var(--bds-space_xs));
55
+ inset-block-end: calc(100% + var(--tooltip_offset, var(--bds-space_xs)));
54
56
  inset-inline-start: 50%;
55
57
  transform: translateX(-50%);
56
58
  }
57
59
 
58
60
  /* Placement: bottom */
59
61
  .tooltip.--placement_bottom {
60
- inset-block-start: calc(100% + var(--bds-space_xs));
62
+ inset-block-start: calc(100% + var(--tooltip_offset, var(--bds-space_xs)));
61
63
  inset-inline-start: 50%;
62
64
  transform: translateX(-50%);
63
65
  }
64
66
 
65
67
  /* Placement: left */
66
68
  .tooltip.--placement_left {
67
- inset-inline-end: calc(100% + var(--bds-space_xs));
69
+ inset-inline-end: calc(100% + var(--tooltip_offset, var(--bds-space_xs)));
68
70
  inset-block-start: 50%;
69
71
  transform: translateY(-50%);
70
72
  }
71
73
 
72
74
  /* Placement: right */
73
75
  .tooltip.--placement_right {
74
- inset-inline-start: calc(100% + var(--bds-space_xs));
76
+ inset-inline-start: calc(100% + var(--tooltip_offset, var(--bds-space_xs)));
75
77
  inset-block-start: 50%;
76
78
  transform: translateY(-50%);
77
79
  }
@@ -33,9 +33,12 @@ var BdsAlert = class extends i2 {
33
33
  defaults. Variants write to the inner --alert_*--variant slot. */
34
34
  background-color: var(--alert_bg, var(--alert_bg--variant, var(--bds-color_blue--subtle)));
35
35
  color: var(--alert_text, var(--alert_text--variant, var(--bds-color_on-blue--subtle)));
36
- border-inline-start: var(--bds-space_s) solid var(--alert_border, var(--alert_border--variant, var(--bds-color_blue)));
36
+ border-inline-start: var(--alert_border-width, var(--alert_border-width--variant, var(--bds-space_s))) solid var(--alert_border, var(--alert_border--variant, var(--bds-color_blue)));
37
37
  font-size: var(--bds-font_size--body);
38
38
  line-height: var(--bds-font_line-height--body);
39
+
40
+ /* Reset the slot so a nested default alert does not inherit a parent's gradient width. */
41
+ --alert_border-width--variant: initial;
39
42
  }
40
43
 
41
44
  /* Per-variant resting overrides — consumers can theme per-variant via
@@ -64,6 +67,31 @@ var BdsAlert = class extends i2 {
64
67
  --alert_border--variant: var(--alert_border--error, var(--bds-color_error));
65
68
  }
66
69
 
70
+ /* Gradient appearance: the variant background stays the base colour and a
71
+ gradient fades it to the surface. The accent line is thinner and uses a
72
+ per-variant accent slot; --alert_border still wins over it. */
73
+ :host([appearance='gradient']) .alert {
74
+ --alert_border-width--variant: 3px;
75
+ background-image: var(--alert_gradient, linear-gradient(100deg, transparent 35%, var(--bds-color_bg--strong, var(--bds-color_bg)) 100%));
76
+ box-shadow: var(--alert_shadow, var(--bds-shadow_s));
77
+ }
78
+
79
+ :host([appearance='gradient'][variant='info']) .alert {
80
+ --alert_border--variant: var(--alert_border--info, var(--alert_accent--info, var(--bds-color_on-blue--subtle)));
81
+ }
82
+
83
+ :host([appearance='gradient'][variant='success']) .alert {
84
+ --alert_border--variant: var(--alert_border--success, var(--alert_accent--success, var(--bds-color_on-success--subtle)));
85
+ }
86
+
87
+ :host([appearance='gradient'][variant='warning']) .alert {
88
+ --alert_border--variant: var(--alert_border--warning, var(--alert_accent--warning, var(--bds-color_warning)));
89
+ }
90
+
91
+ :host([appearance='gradient'][variant='error']) .alert {
92
+ --alert_border--variant: var(--alert_border--error, var(--alert_accent--error, var(--bds-color_error)));
93
+ }
94
+
67
95
  /* Icon slot wrapper — hidden unless slot has content */
68
96
  .icon {
69
97
  display: none;
@@ -123,6 +151,7 @@ var BdsAlert = class extends i2 {
123
151
  `;
124
152
  static properties = {
125
153
  variant: { type: String, reflect: true },
154
+ appearance: { type: String, reflect: true },
126
155
  heading: { type: String },
127
156
  title: { type: String },
128
157
  dismissible: { type: Boolean, reflect: true },
@@ -131,6 +160,7 @@ var BdsAlert = class extends i2 {
131
160
  constructor() {
132
161
  super();
133
162
  this.variant = "info";
163
+ this.appearance = "default";
134
164
  this.heading = "";
135
165
  this.title = "";
136
166
  this.dismissible = false;
@@ -0,0 +1,40 @@
1
+ import {
2
+ T,
3
+ b,
4
+ i
5
+ } from "./chunk-LGEZYFUU.js";
6
+
7
+ // src/web-components/interaction/form/field-message.ts
8
+ var fieldMessageStyles = i`
9
+ .message {
10
+ margin-block-start: var(--bds-space_xxs);
11
+ font-size: var(--formMessage_font-size, var(--bds-font_size--body--s));
12
+ font-family: var(--bds-font_family--body);
13
+ }
14
+
15
+ .message--error {
16
+ display: flex;
17
+ align-items: flex-start;
18
+ gap: var(--formMessage_gap, var(--bds-space_xxs));
19
+ color: var(--formMessage_color--error, var(--bds-color_error_on-bg));
20
+ font-weight: var(--formMessage_font-weight--error, var(--bds-font_weight--semibold));
21
+ }
22
+
23
+ .message__icon {
24
+ flex-shrink: 0;
25
+ inline-size: var(--formMessage_icon-size, 1.15em);
26
+ block-size: var(--formMessage_icon-size, 1.15em);
27
+ }
28
+
29
+ .message--hint {
30
+ color: var(--formMessage_color--hint, inherit);
31
+ font-style: var(--formMessage_font-style--hint, italic);
32
+ }
33
+ `;
34
+ var warningIcon = b`<svg class="message__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z"></path></svg>`;
35
+ var renderFieldMessage = (kind, id, text) => kind === "error" ? T`<p id=${id} class="message message--error" role="alert">${warningIcon}${text}</p>` : T`<p id=${id} class="message message--hint">${text}</p>`;
36
+
37
+ export {
38
+ fieldMessageStyles,
39
+ renderFieldMessage
40
+ };
@@ -32,11 +32,18 @@ var BdsSeparator = class extends i2 {
32
32
  display: block;
33
33
  inline-size: 100%;
34
34
  block-size: var(--separator_thickness, 1px);
35
+ /* The padding is the space around the line; content-box keeps the line at the
36
+ thickness and background-clip stops the colour from painting into the padding. */
37
+ box-sizing: content-box;
38
+ padding-block: var(--separator_spacing, 0);
39
+ background-clip: content-box;
35
40
  }
36
41
 
37
42
  :host([orientation='vertical']) .separator {
38
43
  inline-size: var(--separator_thickness, 1px);
39
44
  block-size: 100%;
45
+ padding-block: 0;
46
+ padding-inline: var(--separator_spacing, var(--bds-space_s));
40
47
  }
41
48
  `;
42
49
  static properties = {
@@ -1,3 +1,7 @@
1
+ import {
2
+ fieldMessageStyles,
3
+ renderFieldMessage
4
+ } from "./chunk-SRKQ6GST.js";
1
5
  import {
2
6
  A,
3
7
  T,
@@ -71,10 +75,12 @@ var BdsCombobox = class extends i2 {
71
75
 
72
76
  :host([error]) .input {
73
77
  --bdc_color: var(--bdc_color--error);
78
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
74
79
  }
75
80
 
76
81
  :host([error]) .input:focus {
77
82
  --bdc_color: var(--bdc_color--error);
83
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
78
84
  }
79
85
 
80
86
  .chevron {
@@ -148,20 +154,7 @@ var BdsCombobox = class extends i2 {
148
154
  color: var(--bds-color_on-bg--subtle);
149
155
  }
150
156
 
151
- .message {
152
- margin-block-start: var(--bds-space_xxs);
153
- font-size: var(--bds-font_size--body--s);
154
- font-family: var(--bds-font_family--body);
155
- }
156
-
157
- .message--error {
158
- color: var(--bds-color_error);
159
- }
160
-
161
- .message--hint {
162
- color: var(--bds-color_on-bg--subtle);
163
- font-style: italic;
164
- }
157
+ ${fieldMessageStyles}
165
158
  `;
166
159
  static properties = {
167
160
  name: { type: String, reflect: true },
@@ -340,7 +333,7 @@ var BdsCombobox = class extends i2 {
340
333
  </ul>
341
334
  ` : ""}
342
335
  </div>
343
- ${this.error ? T`<p id=${errorId} class="message message--error" role="alert">${this.error}</p>` : this.hint ? T`<p id=${hintId} class="message message--hint">${this.hint}</p>` : ""}
336
+ ${this.error ? renderFieldMessage("error", errorId, this.error) : this.hint ? renderFieldMessage("hint", hintId, this.hint) : ""}
344
337
  `;
345
338
  }
346
339
  };
@@ -1,3 +1,7 @@
1
+ import {
2
+ fieldMessageStyles,
3
+ renderFieldMessage
4
+ } from "./chunk-SRKQ6GST.js";
1
5
  import {
2
6
  A,
3
7
  T,
@@ -78,22 +82,9 @@ var BdsSelect = class extends i2 {
78
82
 
79
83
  :host([error]) .select {
80
84
  --bdc_color: var(--bdc_color--error);
85
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
81
86
  }
82
87
 
83
- .message {
84
- margin-block-start: var(--bds-space_xxs);
85
- font-size: var(--bds-font_size--body--s);
86
- font-family: var(--bds-font_family--body);
87
- }
88
-
89
- .message--error {
90
- color: var(--bds-color_error);
91
- }
92
-
93
- .message--hint {
94
- color: var(--bds-color_on-bg--subtle);
95
- font-style: italic;
96
- }
97
88
 
98
89
  .chevron {
99
90
  position: absolute;
@@ -110,6 +101,8 @@ var BdsSelect = class extends i2 {
110
101
  inline-size: 100%;
111
102
  block-size: 100%;
112
103
  }
104
+
105
+ ${fieldMessageStyles}
113
106
  `;
114
107
  static properties = {
115
108
  name: { type: String, reflect: true },
@@ -205,7 +198,7 @@ var BdsSelect = class extends i2 {
205
198
  </svg>
206
199
  </span>
207
200
  </div>
208
- ${this.error ? T`<p id=${errorId} class="message message--error" role="alert">${this.error}</p>` : this.hint ? T`<p id=${hintId} class="message message--hint">${this.hint}</p>` : ""}
201
+ ${this.error ? renderFieldMessage("error", errorId, this.error) : this.hint ? renderFieldMessage("hint", hintId, this.hint) : ""}
209
202
  `;
210
203
  }
211
204
  };
@@ -1,3 +1,7 @@
1
+ import {
2
+ fieldMessageStyles,
3
+ renderFieldMessage
4
+ } from "./chunk-SRKQ6GST.js";
1
5
  import {
2
6
  A,
3
7
  T,
@@ -47,19 +51,10 @@ var BdsRadioGroup = class extends i2 {
47
51
  gap: var(--bds-space_xs);
48
52
  }
49
53
 
54
+ ${fieldMessageStyles}
55
+
50
56
  .message {
51
57
  margin-block-start: var(--bds-space_xs);
52
- font-size: var(--bds-font_size--body--s);
53
- font-family: var(--bds-font_family--body);
54
- }
55
-
56
- .message--error {
57
- color: var(--bds-color_error);
58
- }
59
-
60
- .message--hint {
61
- color: var(--bds-color_on-bg--subtle);
62
- font-style: italic;
63
58
  }
64
59
  `;
65
60
  static properties = {
@@ -103,9 +98,28 @@ var BdsRadioGroup = class extends i2 {
103
98
  }
104
99
  });
105
100
  };
101
+ /**
102
+ * Propagates the group's `error` to slotted `<bds-radio>` elements so they show
103
+ * the error ring. A radio individually marked `error` in markup keeps it.
104
+ */
105
+ _propagateError = () => {
106
+ this.querySelectorAll("bds-radio").forEach((radio) => {
107
+ const el = radio;
108
+ if (this.error) {
109
+ if (!el.hasAttribute("error")) {
110
+ el.setAttribute("data-bds-group-error", "");
111
+ }
112
+ el.setAttribute("error", "");
113
+ } else if (el.hasAttribute("data-bds-group-error")) {
114
+ el.removeAttribute("error");
115
+ el.removeAttribute("data-bds-group-error");
116
+ }
117
+ });
118
+ };
106
119
  _propagateToRadios = () => {
107
120
  this._propagateName();
108
121
  this._propagateDisabled();
122
+ this._propagateError();
109
123
  };
110
124
  connectedCallback() {
111
125
  super.connectedCallback();
@@ -113,7 +127,7 @@ var BdsRadioGroup = class extends i2 {
113
127
  }
114
128
  updated(changed) {
115
129
  super.updated(changed);
116
- if (changed.has("name") || changed.has("disabled")) {
130
+ if (changed.has("name") || changed.has("disabled") || changed.has("error")) {
117
131
  this._propagateToRadios();
118
132
  }
119
133
  }
@@ -134,7 +148,7 @@ var BdsRadioGroup = class extends i2 {
134
148
  <div class="items">
135
149
  <slot @slotchange=${this._propagateToRadios}></slot>
136
150
  </div>
137
- ${this.error ? T`<p id=${errorId} class="message message--error" role="alert">${this.error}</p>` : this.hint ? T`<p id=${hintId} class="message message--hint">${this.hint}</p>` : ""}
151
+ ${this.error ? renderFieldMessage("error", errorId, this.error) : this.hint ? renderFieldMessage("hint", hintId, this.hint) : ""}
138
152
  </fieldset>
139
153
  `;
140
154
  }
@@ -1 +1 @@
1
- import "./chunk-P24JYC5V.js";
1
+ import "./chunk-7VXRMCAL.js";
@@ -54,6 +54,7 @@ import * as lit from 'lit';
54
54
  import { LitElement } from 'lit';
55
55
  export { BdsDropdownMenu } from './interaction/bds-dropdown-menu.js';
56
56
  export { BdsDropdownMenuItem } from './interaction/bds-dropdown-menu-item.js';
57
+ export { BdsDropdownMenuGroup } from './interaction/bds-dropdown-menu-group.js';
57
58
 
58
59
  /**
59
60
  * `<bds-calendar-range>` — form-associated range date picker.