@boostdev/design-system-components 2.14.1 → 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 (290) hide show
  1. package/AGENTS.md +20 -15
  2. package/dist/client.cjs +271 -205
  3. package/dist/client.css +808 -648
  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 +808 -648
  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-XIZWAWMJ.js → chunk-XTPUKUN5.js} +16 -6
  36. package/dist/web-components/{chunk-JV5QT2OU.js → chunk-YLDQOESI.js} +27 -13
  37. package/dist/web-components/globals.js +1 -1
  38. package/dist/web-components/index.d.ts +1 -0
  39. package/dist/web-components/index.js +34 -29
  40. package/dist/web-components/interaction/bds-button.js +1 -1
  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-notification-banner.d.ts +14 -1
  68. package/dist/web-components/ui/bds-notification-banner.js +1 -1
  69. package/dist/web-components/ui/bds-section-header.d.ts +6 -0
  70. package/dist/web-components/ui/bds-section-header.js +1 -1
  71. package/dist/web-components/ui/bds-separator.js +1 -1
  72. package/dist/web-components/ui/bds-table.js +1 -1
  73. package/package.json +6 -2
  74. package/src/components/interaction/Button/Button.mdx +7 -0
  75. package/src/components/interaction/Button/Button.module.css +17 -9
  76. package/src/components/interaction/Button/Button.stories.tsx +28 -0
  77. package/src/components/interaction/DropdownMenu/DropdownMenu.mdx +35 -4
  78. package/src/components/interaction/DropdownMenu/DropdownMenu.module.css +58 -10
  79. package/src/components/interaction/DropdownMenu/DropdownMenu.spec.tsx +114 -1
  80. package/src/components/interaction/DropdownMenu/DropdownMenu.stories.tsx +25 -0
  81. package/src/components/interaction/DropdownMenu/DropdownMenu.tsx +69 -17
  82. package/src/components/interaction/form/Checkbox/Checkbox.module.css +1 -0
  83. package/src/components/interaction/form/Checkbox/Checkbox.spec.tsx +7 -0
  84. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.mdx +1 -0
  85. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.module.css +7 -0
  86. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.spec.tsx +22 -0
  87. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx +1 -1
  88. package/src/components/interaction/form/Combobox/Combobox.module.css +1 -0
  89. package/src/components/interaction/form/Combobox/Combobox.spec.tsx +7 -0
  90. package/src/components/interaction/form/FormInput/FormInput.mdx +9 -0
  91. package/src/components/interaction/form/FormInput/FormInput.module.css +1 -0
  92. package/src/components/interaction/form/FormInput/FormInput.spec.tsx +7 -0
  93. package/src/components/interaction/form/NumberInput/NumberInput.module.css +1 -0
  94. package/src/components/interaction/form/NumberInput/NumberInput.spec.tsx +7 -0
  95. package/src/components/interaction/form/Radio/Radio.module.css +1 -0
  96. package/src/components/interaction/form/Radio/Radio.spec.tsx +7 -0
  97. package/src/components/interaction/form/RadioGroup/RadioGroup.mdx +1 -0
  98. package/src/components/interaction/form/RadioGroup/RadioGroup.module.css +7 -0
  99. package/src/components/interaction/form/RadioGroup/RadioGroup.spec.tsx +22 -0
  100. package/src/components/interaction/form/RadioGroup/RadioGroup.tsx +1 -1
  101. package/src/components/interaction/form/Select/Select.module.css +1 -0
  102. package/src/components/interaction/form/Select/Select.spec.tsx +7 -0
  103. package/src/components/interaction/form/Switch/Switch.module.css +1 -0
  104. package/src/components/interaction/form/Switch/Switch.spec.tsx +7 -0
  105. package/src/components/interaction/form/Textarea/Textarea.module.css +1 -0
  106. package/src/components/interaction/form/Textarea/Textarea.spec.tsx +7 -0
  107. package/src/components/interaction/form/atoms/Message.module.css +14 -3
  108. package/src/components/interaction/form/atoms/Message.spec.tsx +22 -0
  109. package/src/components/interaction/form/atoms/Message.tsx +5 -0
  110. package/src/components/layout/SectionHeader/SectionHeader.mdx +18 -5
  111. package/src/components/layout/SectionHeader/SectionHeader.module.css +35 -14
  112. package/src/components/layout/SectionHeader/SectionHeader.spec.tsx +44 -0
  113. package/src/components/layout/SectionHeader/SectionHeader.stories.tsx +5 -0
  114. package/src/components/layout/SectionHeader/SectionHeader.tsx +3 -1
  115. package/src/components/ui/Alert/Alert.mdx +11 -0
  116. package/src/components/ui/Alert/Alert.module.css +30 -1
  117. package/src/components/ui/Alert/Alert.spec.tsx +21 -0
  118. package/src/components/ui/Alert/Alert.stories.tsx +20 -0
  119. package/src/components/ui/Alert/Alert.tsx +8 -1
  120. package/src/components/ui/Avatar/Avatar.mdx +22 -2
  121. package/src/components/ui/Avatar/Avatar.module.css +29 -2
  122. package/src/components/ui/Avatar/Avatar.spec.tsx +26 -0
  123. package/src/components/ui/Avatar/Avatar.stories.tsx +23 -0
  124. package/src/components/ui/Avatar/Avatar.tsx +4 -2
  125. package/src/components/ui/Avatar/avatarTone.spec.ts +41 -0
  126. package/src/components/ui/Avatar/avatarTone.ts +22 -0
  127. package/src/components/ui/Collapsible/Collapsible.module.css +1 -2
  128. package/src/components/ui/NotificationBanner/NotificationBanner.mdx +14 -0
  129. package/src/components/ui/NotificationBanner/NotificationBanner.module.css +31 -1
  130. package/src/components/ui/NotificationBanner/NotificationBanner.spec.tsx +29 -0
  131. package/src/components/ui/NotificationBanner/NotificationBanner.stories.tsx +25 -0
  132. package/src/components/ui/NotificationBanner/NotificationBanner.tsx +15 -1
  133. package/src/components/ui/Separator/Separator.mdx +1 -0
  134. package/src/components/ui/Separator/Separator.module.css +6 -0
  135. package/src/components/ui/Separator/Separator.spec.tsx +19 -0
  136. package/src/components/ui/Separator/Separator.stories.tsx +15 -0
  137. package/src/components/ui/Table/Table.mdx +4 -1
  138. package/src/components/ui/Table/Table.module.css +7 -7
  139. package/src/components/ui/Table/Table.spec.tsx +11 -0
  140. package/src/components/ui/Tabs/Tabs.mdx +11 -5
  141. package/src/components/ui/Tabs/Tabs.module.css +23 -5
  142. package/src/components/ui/Tabs/Tabs.spec.tsx +39 -0
  143. package/src/components/ui/Tabs/Tabs.tsx +2 -1
  144. package/src/components/ui/Tabs/getNodeText.spec.tsx +23 -0
  145. package/src/components/ui/Tabs/getNodeText.ts +13 -0
  146. package/src/components/ui/Tooltip/Tooltip.mdx +6 -3
  147. package/src/components/ui/Tooltip/Tooltip.module.css +6 -2
  148. package/src/components/ui/Tooltip/Tooltip.spec.tsx +10 -0
  149. package/src/components/ui/Tooltip/Tooltip.stories.tsx +13 -0
  150. package/src/css/bdc.css +5 -2
  151. package/src/css/bdc.spec.ts +65 -0
  152. package/src/stories/DesignSystem/Borders.mdx +17 -9
  153. package/src/web-components/globals.ts +10 -4
  154. package/src/web-components/index.ts +1 -0
  155. package/src/web-components/interaction/BdsAccordion.mdx +1 -1
  156. package/src/web-components/interaction/BdsAccordion.stories.tsx +1 -1
  157. package/src/web-components/interaction/BdsButton.mdx +9 -1
  158. package/src/web-components/interaction/BdsButton.stories.tsx +42 -1
  159. package/src/web-components/interaction/BdsCollapsible.mdx +1 -1
  160. package/src/web-components/interaction/BdsCollapsible.stories.tsx +1 -1
  161. package/src/web-components/interaction/BdsDialog.mdx +1 -1
  162. package/src/web-components/interaction/BdsDialog.stories.tsx +1 -1
  163. package/src/web-components/interaction/BdsDrawer.mdx +1 -1
  164. package/src/web-components/interaction/BdsDrawer.stories.tsx +1 -1
  165. package/src/web-components/interaction/BdsDropdownMenu.mdx +62 -6
  166. package/src/web-components/interaction/BdsDropdownMenu.stories.tsx +32 -7
  167. package/src/web-components/interaction/BdsPopover.mdx +1 -1
  168. package/src/web-components/interaction/BdsPopover.stories.tsx +1 -1
  169. package/src/web-components/interaction/BdsSkipLink.mdx +1 -1
  170. package/src/web-components/interaction/BdsSkipLink.stories.tsx +1 -1
  171. package/src/web-components/interaction/BdsTabs.mdx +10 -1
  172. package/src/web-components/interaction/BdsTabs.stories.tsx +1 -1
  173. package/src/web-components/interaction/BdsToastProvider.mdx +1 -1
  174. package/src/web-components/interaction/BdsToastProvider.stories.tsx +1 -1
  175. package/src/web-components/interaction/BdsTooltip.mdx +13 -5
  176. package/src/web-components/interaction/BdsTooltip.stories.tsx +12 -12
  177. package/src/web-components/interaction/bds-button.ts +16 -6
  178. package/src/web-components/interaction/bds-dropdown-menu-group.ts +72 -0
  179. package/src/web-components/interaction/bds-dropdown-menu-item.ts +65 -17
  180. package/src/web-components/interaction/bds-dropdown-menu.spec.ts +135 -0
  181. package/src/web-components/interaction/bds-dropdown-menu.ts +5 -4
  182. package/src/web-components/interaction/bds-tab.spec.ts +34 -2
  183. package/src/web-components/interaction/bds-tab.ts +31 -6
  184. package/src/web-components/interaction/bds-tooltip.spec.ts +16 -0
  185. package/src/web-components/interaction/bds-tooltip.ts +10 -8
  186. package/src/web-components/interaction/form/BdsCheckbox.mdx +5 -1
  187. package/src/web-components/interaction/form/BdsCheckbox.stories.tsx +1 -1
  188. package/src/web-components/interaction/form/BdsCheckboxGroup.mdx +5 -1
  189. package/src/web-components/interaction/form/BdsCheckboxGroup.stories.tsx +1 -1
  190. package/src/web-components/interaction/form/BdsCombobox.mdx +5 -1
  191. package/src/web-components/interaction/form/BdsCombobox.stories.tsx +1 -1
  192. package/src/web-components/interaction/form/BdsFieldGroup.stories.tsx +1 -1
  193. package/src/web-components/interaction/form/BdsFileInput.mdx +1 -1
  194. package/src/web-components/interaction/form/BdsFileInput.stories.tsx +1 -1
  195. package/src/web-components/interaction/form/BdsFormInput.mdx +8 -1
  196. package/src/web-components/interaction/form/BdsFormInput.stories.tsx +1 -1
  197. package/src/web-components/interaction/form/BdsNumberInput.mdx +5 -1
  198. package/src/web-components/interaction/form/BdsNumberInput.stories.tsx +1 -1
  199. package/src/web-components/interaction/form/BdsRadio.mdx +5 -1
  200. package/src/web-components/interaction/form/BdsRadio.stories.tsx +1 -1
  201. package/src/web-components/interaction/form/BdsRadioGroup.mdx +5 -1
  202. package/src/web-components/interaction/form/BdsRadioGroup.stories.tsx +1 -1
  203. package/src/web-components/interaction/form/BdsSegmentedControl.mdx +1 -1
  204. package/src/web-components/interaction/form/BdsSegmentedControl.stories.tsx +1 -1
  205. package/src/web-components/interaction/form/BdsSelect.mdx +5 -1
  206. package/src/web-components/interaction/form/BdsSelect.stories.tsx +1 -1
  207. package/src/web-components/interaction/form/BdsSlider.mdx +5 -1
  208. package/src/web-components/interaction/form/BdsSlider.stories.tsx +1 -1
  209. package/src/web-components/interaction/form/BdsSwitch.mdx +5 -1
  210. package/src/web-components/interaction/form/BdsSwitch.stories.tsx +1 -1
  211. package/src/web-components/interaction/form/BdsTextarea.mdx +5 -1
  212. package/src/web-components/interaction/form/BdsTextarea.stories.tsx +1 -1
  213. package/src/web-components/interaction/form/bds-checkbox-group.spec.ts +32 -3
  214. package/src/web-components/interaction/form/bds-checkbox-group.ts +33 -17
  215. package/src/web-components/interaction/form/bds-checkbox.ts +1 -0
  216. package/src/web-components/interaction/form/bds-combobox.ts +6 -16
  217. package/src/web-components/interaction/form/bds-form-input.ts +6 -16
  218. package/src/web-components/interaction/form/bds-number-input.ts +6 -16
  219. package/src/web-components/interaction/form/bds-radio-group.spec.ts +32 -3
  220. package/src/web-components/interaction/form/bds-radio-group.ts +26 -14
  221. package/src/web-components/interaction/form/bds-radio.ts +1 -0
  222. package/src/web-components/interaction/form/bds-select.ts +6 -16
  223. package/src/web-components/interaction/form/bds-slider.ts +5 -16
  224. package/src/web-components/interaction/form/bds-switch.ts +1 -0
  225. package/src/web-components/interaction/form/bds-textarea.ts +6 -16
  226. package/src/web-components/interaction/form/field-message.spec.ts +62 -0
  227. package/src/web-components/interaction/form/field-message.ts +55 -0
  228. package/src/web-components/layout/BdsGrid.mdx +1 -1
  229. package/src/web-components/layout/BdsGrid.stories.tsx +1 -1
  230. package/src/web-components/layout/BdsGridItem.mdx +1 -1
  231. package/src/web-components/layout/BdsGridItem.stories.tsx +1 -1
  232. package/src/web-components/ui/BdsAlert.mdx +19 -1
  233. package/src/web-components/ui/BdsAlert.stories.tsx +29 -3
  234. package/src/web-components/ui/BdsAvatar.mdx +20 -3
  235. package/src/web-components/ui/BdsAvatar.stories.tsx +25 -2
  236. package/src/web-components/ui/BdsBadge.mdx +1 -1
  237. package/src/web-components/ui/BdsBadge.stories.tsx +1 -1
  238. package/src/web-components/ui/BdsBreadcrumb.mdx +1 -1
  239. package/src/web-components/ui/BdsBreadcrumb.stories.tsx +1 -1
  240. package/src/web-components/ui/BdsButtonContainer.mdx +1 -1
  241. package/src/web-components/ui/BdsButtonContainer.stories.tsx +1 -1
  242. package/src/web-components/ui/BdsCalendar.mdx +1 -1
  243. package/src/web-components/ui/BdsCalendar.stories.tsx +1 -1
  244. package/src/web-components/ui/BdsCalendarRange.mdx +1 -1
  245. package/src/web-components/ui/BdsCalendarRange.stories.tsx +1 -1
  246. package/src/web-components/ui/BdsCard.mdx +1 -1
  247. package/src/web-components/ui/BdsCard.stories.tsx +1 -1
  248. package/src/web-components/ui/BdsCarousel.mdx +1 -1
  249. package/src/web-components/ui/BdsCarousel.stories.tsx +1 -1
  250. package/src/web-components/ui/BdsDescriptionList.mdx +1 -1
  251. package/src/web-components/ui/BdsDescriptionList.stories.tsx +1 -1
  252. package/src/web-components/ui/BdsIconWrapper.mdx +1 -1
  253. package/src/web-components/ui/BdsIconWrapper.stories.tsx +1 -1
  254. package/src/web-components/ui/BdsLink.mdx +1 -1
  255. package/src/web-components/ui/BdsLink.stories.tsx +1 -1
  256. package/src/web-components/ui/BdsLoading.mdx +1 -1
  257. package/src/web-components/ui/BdsLoading.stories.tsx +1 -1
  258. package/src/web-components/ui/BdsNotificationBanner.mdx +10 -1
  259. package/src/web-components/ui/BdsNotificationBanner.stories.tsx +29 -2
  260. package/src/web-components/ui/BdsPagination.mdx +1 -1
  261. package/src/web-components/ui/BdsPagination.stories.tsx +1 -1
  262. package/src/web-components/ui/BdsProgress.mdx +1 -1
  263. package/src/web-components/ui/BdsProgress.stories.tsx +1 -1
  264. package/src/web-components/ui/BdsProgressCircle.mdx +1 -1
  265. package/src/web-components/ui/BdsProgressCircle.stories.tsx +1 -1
  266. package/src/web-components/ui/BdsRating.mdx +1 -1
  267. package/src/web-components/ui/BdsRating.stories.tsx +1 -1
  268. package/src/web-components/ui/BdsSectionHeader.mdx +18 -6
  269. package/src/web-components/ui/BdsSectionHeader.stories.tsx +10 -2
  270. package/src/web-components/ui/BdsSeparator.mdx +2 -1
  271. package/src/web-components/ui/BdsSeparator.stories.tsx +13 -1
  272. package/src/web-components/ui/BdsSkeleton.mdx +1 -1
  273. package/src/web-components/ui/BdsSkeleton.stories.tsx +1 -1
  274. package/src/web-components/ui/BdsTable.mdx +5 -1
  275. package/src/web-components/ui/BdsTable.stories.tsx +1 -1
  276. package/src/web-components/ui/BdsTypography.mdx +1 -1
  277. package/src/web-components/ui/BdsTypography.stories.tsx +1 -1
  278. package/src/web-components/ui/bds-alert.spec.ts +27 -0
  279. package/src/web-components/ui/bds-alert.ts +34 -1
  280. package/src/web-components/ui/bds-avatar.spec.ts +47 -0
  281. package/src/web-components/ui/bds-avatar.ts +36 -3
  282. package/src/web-components/ui/bds-notification-banner.spec.ts +45 -0
  283. package/src/web-components/ui/bds-notification-banner.ts +53 -1
  284. package/src/web-components/ui/bds-section-header.spec.ts +36 -3
  285. package/src/web-components/ui/bds-section-header.ts +32 -10
  286. package/src/web-components/ui/bds-separator.spec.ts +8 -0
  287. package/src/web-components/ui/bds-separator.ts +7 -0
  288. package/src/web-components/ui/bds-table.spec.ts +11 -0
  289. package/src/web-components/ui/bds-table.ts +5 -5
  290. 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
  };
@@ -39,7 +39,9 @@ var BdsButton = class extends i2 {
39
39
  all: unset;
40
40
  position: relative;
41
41
  font: inherit;
42
- padding-inline: var(--bds-space_l);
42
+ --button_padding-inline--size: var(--bds-space_l);
43
+
44
+ padding-inline: var(--button_padding-inline--size);
43
45
  display: inline-flex;
44
46
  gap: var(--bds-space_xs);
45
47
  border-radius: var(--button_radius, var(--bds-border_radius--full));
@@ -89,17 +91,17 @@ var BdsButton = class extends i2 {
89
91
  .button.small {
90
92
  --button_height: 2.25em;
91
93
  --button_font-size: var(--bds-font_size--body--s);
92
- padding-inline: var(--bds-space_m);
94
+ --button_padding-inline--size: var(--bds-space_m);
93
95
  }
94
96
 
95
97
  .button.medium {
96
98
  --button_height: 3em;
97
- padding-inline: var(--bds-space_l);
99
+ --button_padding-inline--size: var(--bds-space_l);
98
100
  }
99
101
 
100
102
  .button.large {
101
103
  --button_font-size: var(--bds-font_size--heading-3);
102
- padding-inline: var(--bds-space_xl);
104
+ --button_padding-inline--size: var(--bds-space_xl);
103
105
  }
104
106
 
105
107
  /* Pulse */
@@ -142,15 +144,23 @@ var BdsButton = class extends i2 {
142
144
  align-items: center;
143
145
  }
144
146
 
147
+ /* Icon offset — pulls the icon into the padding so the optical gap between
148
+ icon and edge matches the gap between label and edge. Defaults to half
149
+ the size's inline padding (--button_padding-inline--size, set above per
150
+ size), so it scales automatically with size and with the responsive
151
+ space tokens. --button_icon-offset is the public override; it is read
152
+ only as a var() fallback here, never declared on .button, so a value
153
+ set on the host or an ancestor inherits through the shadow boundary
154
+ instead of being shadowed by a same-element declaration. */
145
155
  .icon-start.has-content {
146
156
  display: flex;
147
- margin-inline-start: calc(var(--bds-space_s) * -1);
157
+ margin-inline-start: calc(var(--button_icon-offset, calc(var(--button_padding-inline--size) / 2)) * -1);
148
158
  transition: var(--bds-animation_transition);
149
159
  }
150
160
 
151
161
  .icon-end.has-content {
152
162
  display: flex;
153
- margin-inline-end: calc(var(--bds-space_s) * -1);
163
+ margin-inline-end: calc(var(--button_icon-offset, calc(var(--button_padding-inline--size) / 2)) * -1);
154
164
  transition: var(--bds-animation_transition);
155
165
  }
156
166