@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
@@ -1,3 +1,7 @@
1
+ import {
2
+ fieldMessageStyles,
3
+ renderFieldMessage
4
+ } from "./chunk-SRKQ6GST.js";
1
5
  import {
2
6
  A,
3
7
  T,
@@ -68,19 +72,10 @@ var BdsCheckboxGroup = class extends i2 {
68
72
  gap: var(--bds-space_xs);
69
73
  }
70
74
 
75
+ ${fieldMessageStyles}
76
+
71
77
  .message {
72
78
  margin-block-start: var(--bds-space_xs);
73
- font-size: var(--bds-font_size--body--s);
74
- font-family: var(--bds-font_family--body);
75
- }
76
-
77
- .message--error {
78
- color: var(--bds-color_error_on-bg);
79
- }
80
-
81
- .message--hint {
82
- color: var(--bds-color_on-bg--subtle);
83
- font-style: italic;
84
79
  }
85
80
  `;
86
81
  static properties = {
@@ -117,14 +112,36 @@ var BdsCheckboxGroup = class extends i2 {
117
112
  }
118
113
  });
119
114
  };
115
+ /**
116
+ * Propagates the group's `error` to slotted `<bds-checkbox>` elements so they
117
+ * show the error ring. A checkbox individually marked `error` in markup keeps it.
118
+ */
119
+ _propagateError = () => {
120
+ this.querySelectorAll("bds-checkbox").forEach((checkbox) => {
121
+ const el = checkbox;
122
+ if (this.error) {
123
+ if (!el.hasAttribute("error")) {
124
+ el.setAttribute("data-bds-group-error", "");
125
+ }
126
+ el.setAttribute("error", "");
127
+ } else if (el.hasAttribute("data-bds-group-error")) {
128
+ el.removeAttribute("error");
129
+ el.removeAttribute("data-bds-group-error");
130
+ }
131
+ });
132
+ };
133
+ _propagateToCheckboxes = () => {
134
+ this._propagateDisabled();
135
+ this._propagateError();
136
+ };
120
137
  connectedCallback() {
121
138
  super.connectedCallback();
122
- Promise.resolve().then(this._propagateDisabled);
139
+ Promise.resolve().then(this._propagateToCheckboxes);
123
140
  }
124
141
  updated(changed) {
125
142
  super.updated(changed);
126
- if (changed.has("disabled")) {
127
- this._propagateDisabled();
143
+ if (changed.has("disabled") || changed.has("error")) {
144
+ this._propagateToCheckboxes();
128
145
  }
129
146
  }
130
147
  render() {
@@ -138,9 +155,9 @@ var BdsCheckboxGroup = class extends i2 {
138
155
  ${this.required ? T`<span class="required" aria-hidden="true"> *</span> <span class="requiredLabel">(required)</span>` : ""}
139
156
  </legend>
140
157
  <div class="items">
141
- <slot @slotchange=${this._propagateDisabled}></slot>
158
+ <slot @slotchange=${this._propagateToCheckboxes}></slot>
142
159
  </div>
143
- ${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>` : ""}
160
+ ${this.error ? renderFieldMessage("error", errorId, this.error) : this.hint ? renderFieldMessage("hint", hintId, this.hint) : ""}
144
161
  </fieldset>
145
162
  `;
146
163
  }
@@ -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
  }
@@ -45,8 +45,8 @@ var BdsBadge = class extends i2 {
45
45
  }
46
46
 
47
47
  :host([variant='secondary']) .badge {
48
- --badge_bg--variant: var(--badge_bg--secondary, var(--bds-color_bg));
49
- --badge_text--variant: var(--badge_text--secondary, var(--bds-color_on-bg));
48
+ --badge_bg--variant: var(--badge_bg--secondary, var(--bds-color_grey));
49
+ --badge_text--variant: var(--badge_text--secondary, var(--bds-color_on-grey));
50
50
  }
51
51
 
52
52
  :host([variant='success']) .badge {
@@ -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 = {
@@ -29,7 +29,7 @@ var BdsNotificationBanner = class extends i2 {
29
29
  padding: var(--bds-space_s) var(--bds-space_m);
30
30
  background-color: var(--banner_bg, var(--banner_bg--variant, var(--bds-color_blue--subtle)));
31
31
  color: var(--banner_text, var(--banner_text--variant, var(--bds-color_on-blue--subtle)));
32
- border-block-end: 3px solid var(--banner_border, var(--banner_border--variant, var(--bds-color_blue)));
32
+ border-block-end: var(--banner_border-width, 3px) solid var(--banner_border, var(--banner_border--variant, var(--bds-color_blue)));
33
33
  font-size: var(--bds-font_size--body);
34
34
  line-height: var(--bds-font_line-height--body);
35
35
  inline-size: 100%;
@@ -55,11 +55,46 @@ var BdsNotificationBanner = class extends i2 {
55
55
  }
56
56
 
57
57
  :host([variant='error']) .banner {
58
- --banner_bg--variant: var(--banner_bg--error, rgb(from var(--bds-color_error) r g b / 12%));
59
- --banner_text--variant: var(--banner_text--error, var(--bds-color_on-bg));
58
+ --banner_bg--variant: var(--banner_bg--error, var(--bds-color_error--subtle));
59
+ --banner_text--variant: var(--banner_text--error, var(--bds-color_on-error--subtle));
60
60
  --banner_border--variant: var(--banner_border--error, var(--bds-color_error));
61
61
  }
62
62
 
63
+ /* Gradient appearance: the variant background stays the base colour and a
64
+ gradient fades it to the surface. The accent line uses a per-variant
65
+ accent slot; --banner_border still wins over it. */
66
+ :host([appearance='gradient']) .banner {
67
+ background-image: var(--banner_gradient, linear-gradient(100deg, transparent 35%, var(--bds-color_bg--strong, var(--bds-color_bg)) 100%));
68
+ box-shadow: var(--banner_shadow, var(--bds-shadow_s));
69
+ }
70
+
71
+ :host([appearance='gradient'][variant='info']) .banner {
72
+ --banner_border--variant: var(--banner_border--info, var(--banner_accent--info, var(--bds-color_on-blue--subtle)));
73
+ }
74
+
75
+ :host([appearance='gradient'][variant='success']) .banner {
76
+ --banner_border--variant: var(--banner_border--success, var(--banner_accent--success, var(--bds-color_on-success--subtle)));
77
+ }
78
+
79
+ :host([appearance='gradient'][variant='warning']) .banner {
80
+ --banner_border--variant: var(--banner_border--warning, var(--banner_accent--warning, var(--bds-color_warning)));
81
+ }
82
+
83
+ :host([appearance='gradient'][variant='error']) .banner {
84
+ --banner_border--variant: var(--banner_border--error, var(--banner_accent--error, var(--bds-color_error)));
85
+ }
86
+
87
+ /* Icon slot wrapper — hidden unless slot has content */
88
+ .icon {
89
+ display: none;
90
+ align-items: center;
91
+ flex-shrink: 0;
92
+ }
93
+
94
+ .icon.has-content {
95
+ display: flex;
96
+ }
97
+
63
98
  .content {
64
99
  flex: 1;
65
100
  }
@@ -113,16 +148,24 @@ var BdsNotificationBanner = class extends i2 {
113
148
  `;
114
149
  static properties = {
115
150
  variant: { type: String, reflect: true },
151
+ appearance: { type: String, reflect: true },
116
152
  dismissible: { type: Boolean, reflect: true },
117
153
  dismissLabel: { type: String, attribute: "dismiss-label" },
118
- _actionFilled: { state: true }
154
+ _actionFilled: { state: true },
155
+ _iconFilled: { state: true }
119
156
  };
120
157
  constructor() {
121
158
  super();
122
159
  this.variant = "info";
160
+ this.appearance = "default";
123
161
  this.dismissible = false;
124
162
  this.dismissLabel = "Dismiss notification";
125
163
  this._actionFilled = false;
164
+ this._iconFilled = false;
165
+ }
166
+ _onIconSlotChange(e) {
167
+ const slot = e.target;
168
+ this._iconFilled = slot.assignedNodes({ flatten: true }).length > 0;
126
169
  }
127
170
  _onActionSlotChange(e) {
128
171
  const slot = e.target;
@@ -142,6 +185,9 @@ var BdsNotificationBanner = class extends i2 {
142
185
  aria-live=${this._isUrgent ? "assertive" : "polite"}
143
186
  aria-atomic="true"
144
187
  >
188
+ <span class="icon ${this._iconFilled ? "has-content" : ""}" aria-hidden="true">
189
+ <slot name="icon" @slotchange=${this._onIconSlotChange}></slot>
190
+ </span>
145
191
  <div class="content"><slot></slot></div>
146
192
  <div class="action ${this._actionFilled ? "has-content" : ""}">
147
193
  <slot name="action" @slotchange=${this._onActionSlotChange}></slot>
@@ -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
  };