@boostdev/design-system-components 2.15.0 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/AGENTS.md +19 -14
  2. package/dist/client.cjs +271 -205
  3. package/dist/client.css +801 -642
  4. package/dist/client.d.cts +19 -4
  5. package/dist/client.d.ts +19 -4
  6. package/dist/client.js +206 -139
  7. package/dist/index.cjs +271 -205
  8. package/dist/index.css +801 -642
  9. package/dist/index.d.cts +19 -4
  10. package/dist/index.d.ts +19 -4
  11. package/dist/index.js +206 -139
  12. package/dist/web-components/chunk-2DHW2WJZ.js +154 -0
  13. package/dist/web-components/{chunk-LDIPCTRN.js → chunk-2MJTO2IW.js} +48 -2
  14. package/dist/web-components/{chunk-3WAV6MDN.js → chunk-3FSGP35V.js} +1 -0
  15. package/dist/web-components/{chunk-KA3VPKMY.js → chunk-4MB2ICSK.js} +1 -0
  16. package/dist/web-components/{chunk-IDSM74LM.js → chunk-6XL5P76D.js} +3 -3
  17. package/dist/web-components/{chunk-P24JYC5V.js → chunk-7VXRMCAL.js} +10 -4
  18. package/dist/web-components/{chunk-CUKQ2L5B.js → chunk-AGI6YQRC.js} +9 -16
  19. package/dist/web-components/chunk-BDRV452N.js +51 -0
  20. package/dist/web-components/{chunk-3AY2YKCM.js → chunk-CKCPV347.js} +1 -0
  21. package/dist/web-components/{chunk-HBLJ4SLY.js → chunk-DD3OUXNG.js} +5 -5
  22. package/dist/web-components/{chunk-RVF7W653.js → chunk-DGOCPKHI.js} +30 -10
  23. package/dist/web-components/{chunk-2OLVQUBU.js → chunk-EYCW7TKB.js} +8 -15
  24. package/dist/web-components/{chunk-VANAKB6D.js → chunk-GPJWLAKU.js} +33 -16
  25. package/dist/web-components/{chunk-VED2DFJ6.js → chunk-GQNQBEYR.js} +8 -15
  26. package/dist/web-components/{chunk-WFVKU4GX.js → chunk-IKAJLROF.js} +49 -4
  27. package/dist/web-components/{chunk-RSZ3BWBK.js → chunk-KSK4RZZQ.js} +30 -7
  28. package/dist/web-components/{chunk-FEDABOR5.js → chunk-LHFUXZ52.js} +7 -15
  29. package/dist/web-components/{chunk-M3ECULRH.js → chunk-RBF7WPLI.js} +10 -8
  30. package/dist/web-components/{chunk-6G22I2CK.js → chunk-RZH5IVB5.js} +31 -1
  31. package/dist/web-components/chunk-SRKQ6GST.js +40 -0
  32. package/dist/web-components/{chunk-5HUAFCU6.js → chunk-TJV7UIXC.js} +7 -0
  33. package/dist/web-components/{chunk-J3HVUIUH.js → chunk-XI2U6U26.js} +8 -15
  34. package/dist/web-components/{chunk-JH6LQKLK.js → chunk-XJU7KITO.js} +8 -15
  35. package/dist/web-components/{chunk-JV5QT2OU.js → chunk-YLDQOESI.js} +27 -13
  36. package/dist/web-components/globals.js +1 -1
  37. package/dist/web-components/index.d.ts +1 -0
  38. package/dist/web-components/index.js +33 -28
  39. package/dist/web-components/interaction/bds-dropdown-menu-group.d.ts +41 -0
  40. package/dist/web-components/interaction/bds-dropdown-menu-group.js +7 -0
  41. package/dist/web-components/interaction/bds-dropdown-menu-item.d.ts +14 -1
  42. package/dist/web-components/interaction/bds-dropdown-menu-item.js +1 -1
  43. package/dist/web-components/interaction/bds-dropdown-menu.d.ts +2 -1
  44. package/dist/web-components/interaction/bds-dropdown-menu.js +1 -1
  45. package/dist/web-components/interaction/bds-tab.d.ts +5 -0
  46. package/dist/web-components/interaction/bds-tab.js +1 -1
  47. package/dist/web-components/interaction/bds-tooltip.js +1 -1
  48. package/dist/web-components/interaction/form/bds-checkbox-group.d.ts +6 -0
  49. package/dist/web-components/interaction/form/bds-checkbox-group.js +2 -1
  50. package/dist/web-components/interaction/form/bds-checkbox.js +1 -1
  51. package/dist/web-components/interaction/form/bds-combobox.js +2 -1
  52. package/dist/web-components/interaction/form/bds-form-input.js +2 -1
  53. package/dist/web-components/interaction/form/bds-number-input.js +2 -1
  54. package/dist/web-components/interaction/form/bds-radio-group.d.ts +5 -0
  55. package/dist/web-components/interaction/form/bds-radio-group.js +2 -1
  56. package/dist/web-components/interaction/form/bds-radio.js +1 -1
  57. package/dist/web-components/interaction/form/bds-select.js +2 -1
  58. package/dist/web-components/interaction/form/bds-slider.js +2 -1
  59. package/dist/web-components/interaction/form/bds-switch.js +1 -1
  60. package/dist/web-components/interaction/form/bds-textarea.js +2 -1
  61. package/dist/web-components/ui/bds-alert.d.ts +8 -1
  62. package/dist/web-components/ui/bds-alert.js +1 -1
  63. package/dist/web-components/ui/bds-avatar.d.ts +11 -0
  64. package/dist/web-components/ui/bds-avatar.js +1 -1
  65. package/dist/web-components/ui/bds-notification-banner.d.ts +14 -1
  66. package/dist/web-components/ui/bds-notification-banner.js +1 -1
  67. package/dist/web-components/ui/bds-section-header.d.ts +6 -0
  68. package/dist/web-components/ui/bds-section-header.js +1 -1
  69. package/dist/web-components/ui/bds-separator.js +1 -1
  70. package/dist/web-components/ui/bds-table.js +1 -1
  71. package/package.json +6 -2
  72. package/src/components/interaction/DropdownMenu/DropdownMenu.mdx +35 -4
  73. package/src/components/interaction/DropdownMenu/DropdownMenu.module.css +58 -10
  74. package/src/components/interaction/DropdownMenu/DropdownMenu.spec.tsx +114 -1
  75. package/src/components/interaction/DropdownMenu/DropdownMenu.stories.tsx +25 -0
  76. package/src/components/interaction/DropdownMenu/DropdownMenu.tsx +69 -17
  77. package/src/components/interaction/form/Checkbox/Checkbox.module.css +1 -0
  78. package/src/components/interaction/form/Checkbox/Checkbox.spec.tsx +7 -0
  79. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.mdx +1 -0
  80. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.module.css +7 -0
  81. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.spec.tsx +22 -0
  82. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx +1 -1
  83. package/src/components/interaction/form/Combobox/Combobox.module.css +1 -0
  84. package/src/components/interaction/form/Combobox/Combobox.spec.tsx +7 -0
  85. package/src/components/interaction/form/FormInput/FormInput.mdx +9 -0
  86. package/src/components/interaction/form/FormInput/FormInput.module.css +1 -0
  87. package/src/components/interaction/form/FormInput/FormInput.spec.tsx +7 -0
  88. package/src/components/interaction/form/NumberInput/NumberInput.module.css +1 -0
  89. package/src/components/interaction/form/NumberInput/NumberInput.spec.tsx +7 -0
  90. package/src/components/interaction/form/Radio/Radio.module.css +1 -0
  91. package/src/components/interaction/form/Radio/Radio.spec.tsx +7 -0
  92. package/src/components/interaction/form/RadioGroup/RadioGroup.mdx +1 -0
  93. package/src/components/interaction/form/RadioGroup/RadioGroup.module.css +7 -0
  94. package/src/components/interaction/form/RadioGroup/RadioGroup.spec.tsx +22 -0
  95. package/src/components/interaction/form/RadioGroup/RadioGroup.tsx +1 -1
  96. package/src/components/interaction/form/Select/Select.module.css +1 -0
  97. package/src/components/interaction/form/Select/Select.spec.tsx +7 -0
  98. package/src/components/interaction/form/Switch/Switch.module.css +1 -0
  99. package/src/components/interaction/form/Switch/Switch.spec.tsx +7 -0
  100. package/src/components/interaction/form/Textarea/Textarea.module.css +1 -0
  101. package/src/components/interaction/form/Textarea/Textarea.spec.tsx +7 -0
  102. package/src/components/interaction/form/atoms/Message.module.css +14 -3
  103. package/src/components/interaction/form/atoms/Message.spec.tsx +22 -0
  104. package/src/components/interaction/form/atoms/Message.tsx +5 -0
  105. package/src/components/layout/SectionHeader/SectionHeader.mdx +18 -5
  106. package/src/components/layout/SectionHeader/SectionHeader.module.css +35 -14
  107. package/src/components/layout/SectionHeader/SectionHeader.spec.tsx +44 -0
  108. package/src/components/layout/SectionHeader/SectionHeader.stories.tsx +5 -0
  109. package/src/components/layout/SectionHeader/SectionHeader.tsx +3 -1
  110. package/src/components/ui/Alert/Alert.mdx +11 -0
  111. package/src/components/ui/Alert/Alert.module.css +30 -1
  112. package/src/components/ui/Alert/Alert.spec.tsx +21 -0
  113. package/src/components/ui/Alert/Alert.stories.tsx +20 -0
  114. package/src/components/ui/Alert/Alert.tsx +8 -1
  115. package/src/components/ui/Avatar/Avatar.mdx +22 -2
  116. package/src/components/ui/Avatar/Avatar.module.css +29 -2
  117. package/src/components/ui/Avatar/Avatar.spec.tsx +26 -0
  118. package/src/components/ui/Avatar/Avatar.stories.tsx +23 -0
  119. package/src/components/ui/Avatar/Avatar.tsx +4 -2
  120. package/src/components/ui/Avatar/avatarTone.spec.ts +41 -0
  121. package/src/components/ui/Avatar/avatarTone.ts +22 -0
  122. package/src/components/ui/Collapsible/Collapsible.module.css +1 -2
  123. package/src/components/ui/NotificationBanner/NotificationBanner.mdx +14 -0
  124. package/src/components/ui/NotificationBanner/NotificationBanner.module.css +31 -1
  125. package/src/components/ui/NotificationBanner/NotificationBanner.spec.tsx +29 -0
  126. package/src/components/ui/NotificationBanner/NotificationBanner.stories.tsx +25 -0
  127. package/src/components/ui/NotificationBanner/NotificationBanner.tsx +15 -1
  128. package/src/components/ui/Separator/Separator.mdx +1 -0
  129. package/src/components/ui/Separator/Separator.module.css +6 -0
  130. package/src/components/ui/Separator/Separator.spec.tsx +19 -0
  131. package/src/components/ui/Separator/Separator.stories.tsx +15 -0
  132. package/src/components/ui/Table/Table.mdx +4 -1
  133. package/src/components/ui/Table/Table.module.css +7 -7
  134. package/src/components/ui/Table/Table.spec.tsx +11 -0
  135. package/src/components/ui/Tabs/Tabs.mdx +11 -5
  136. package/src/components/ui/Tabs/Tabs.module.css +23 -5
  137. package/src/components/ui/Tabs/Tabs.spec.tsx +39 -0
  138. package/src/components/ui/Tabs/Tabs.tsx +2 -1
  139. package/src/components/ui/Tabs/getNodeText.spec.tsx +23 -0
  140. package/src/components/ui/Tabs/getNodeText.ts +13 -0
  141. package/src/components/ui/Tooltip/Tooltip.mdx +6 -3
  142. package/src/components/ui/Tooltip/Tooltip.module.css +6 -2
  143. package/src/components/ui/Tooltip/Tooltip.spec.tsx +10 -0
  144. package/src/components/ui/Tooltip/Tooltip.stories.tsx +13 -0
  145. package/src/css/bdc.css +5 -2
  146. package/src/css/bdc.spec.ts +65 -0
  147. package/src/stories/DesignSystem/Borders.mdx +17 -9
  148. package/src/web-components/globals.ts +10 -4
  149. package/src/web-components/index.ts +1 -0
  150. package/src/web-components/interaction/BdsAccordion.mdx +1 -1
  151. package/src/web-components/interaction/BdsAccordion.stories.tsx +1 -1
  152. package/src/web-components/interaction/BdsButton.mdx +1 -1
  153. package/src/web-components/interaction/BdsButton.stories.tsx +1 -1
  154. package/src/web-components/interaction/BdsCollapsible.mdx +1 -1
  155. package/src/web-components/interaction/BdsCollapsible.stories.tsx +1 -1
  156. package/src/web-components/interaction/BdsDialog.mdx +1 -1
  157. package/src/web-components/interaction/BdsDialog.stories.tsx +1 -1
  158. package/src/web-components/interaction/BdsDrawer.mdx +1 -1
  159. package/src/web-components/interaction/BdsDrawer.stories.tsx +1 -1
  160. package/src/web-components/interaction/BdsDropdownMenu.mdx +62 -6
  161. package/src/web-components/interaction/BdsDropdownMenu.stories.tsx +32 -7
  162. package/src/web-components/interaction/BdsPopover.mdx +1 -1
  163. package/src/web-components/interaction/BdsPopover.stories.tsx +1 -1
  164. package/src/web-components/interaction/BdsSkipLink.mdx +1 -1
  165. package/src/web-components/interaction/BdsSkipLink.stories.tsx +1 -1
  166. package/src/web-components/interaction/BdsTabs.mdx +10 -1
  167. package/src/web-components/interaction/BdsTabs.stories.tsx +1 -1
  168. package/src/web-components/interaction/BdsToastProvider.mdx +1 -1
  169. package/src/web-components/interaction/BdsToastProvider.stories.tsx +1 -1
  170. package/src/web-components/interaction/BdsTooltip.mdx +13 -5
  171. package/src/web-components/interaction/BdsTooltip.stories.tsx +12 -12
  172. package/src/web-components/interaction/bds-dropdown-menu-group.ts +72 -0
  173. package/src/web-components/interaction/bds-dropdown-menu-item.ts +65 -17
  174. package/src/web-components/interaction/bds-dropdown-menu.spec.ts +135 -0
  175. package/src/web-components/interaction/bds-dropdown-menu.ts +5 -4
  176. package/src/web-components/interaction/bds-tab.spec.ts +34 -2
  177. package/src/web-components/interaction/bds-tab.ts +31 -6
  178. package/src/web-components/interaction/bds-tooltip.spec.ts +16 -0
  179. package/src/web-components/interaction/bds-tooltip.ts +10 -8
  180. package/src/web-components/interaction/form/BdsCheckbox.mdx +5 -1
  181. package/src/web-components/interaction/form/BdsCheckbox.stories.tsx +1 -1
  182. package/src/web-components/interaction/form/BdsCheckboxGroup.mdx +5 -1
  183. package/src/web-components/interaction/form/BdsCheckboxGroup.stories.tsx +1 -1
  184. package/src/web-components/interaction/form/BdsCombobox.mdx +5 -1
  185. package/src/web-components/interaction/form/BdsCombobox.stories.tsx +1 -1
  186. package/src/web-components/interaction/form/BdsFieldGroup.stories.tsx +1 -1
  187. package/src/web-components/interaction/form/BdsFileInput.mdx +1 -1
  188. package/src/web-components/interaction/form/BdsFileInput.stories.tsx +1 -1
  189. package/src/web-components/interaction/form/BdsFormInput.mdx +8 -1
  190. package/src/web-components/interaction/form/BdsFormInput.stories.tsx +1 -1
  191. package/src/web-components/interaction/form/BdsNumberInput.mdx +5 -1
  192. package/src/web-components/interaction/form/BdsNumberInput.stories.tsx +1 -1
  193. package/src/web-components/interaction/form/BdsRadio.mdx +5 -1
  194. package/src/web-components/interaction/form/BdsRadio.stories.tsx +1 -1
  195. package/src/web-components/interaction/form/BdsRadioGroup.mdx +5 -1
  196. package/src/web-components/interaction/form/BdsRadioGroup.stories.tsx +1 -1
  197. package/src/web-components/interaction/form/BdsSegmentedControl.mdx +1 -1
  198. package/src/web-components/interaction/form/BdsSegmentedControl.stories.tsx +1 -1
  199. package/src/web-components/interaction/form/BdsSelect.mdx +5 -1
  200. package/src/web-components/interaction/form/BdsSelect.stories.tsx +1 -1
  201. package/src/web-components/interaction/form/BdsSlider.mdx +5 -1
  202. package/src/web-components/interaction/form/BdsSlider.stories.tsx +1 -1
  203. package/src/web-components/interaction/form/BdsSwitch.mdx +5 -1
  204. package/src/web-components/interaction/form/BdsSwitch.stories.tsx +1 -1
  205. package/src/web-components/interaction/form/BdsTextarea.mdx +5 -1
  206. package/src/web-components/interaction/form/BdsTextarea.stories.tsx +1 -1
  207. package/src/web-components/interaction/form/bds-checkbox-group.spec.ts +32 -3
  208. package/src/web-components/interaction/form/bds-checkbox-group.ts +33 -17
  209. package/src/web-components/interaction/form/bds-checkbox.ts +1 -0
  210. package/src/web-components/interaction/form/bds-combobox.ts +6 -16
  211. package/src/web-components/interaction/form/bds-form-input.ts +6 -16
  212. package/src/web-components/interaction/form/bds-number-input.ts +6 -16
  213. package/src/web-components/interaction/form/bds-radio-group.spec.ts +32 -3
  214. package/src/web-components/interaction/form/bds-radio-group.ts +26 -14
  215. package/src/web-components/interaction/form/bds-radio.ts +1 -0
  216. package/src/web-components/interaction/form/bds-select.ts +6 -16
  217. package/src/web-components/interaction/form/bds-slider.ts +5 -16
  218. package/src/web-components/interaction/form/bds-switch.ts +1 -0
  219. package/src/web-components/interaction/form/bds-textarea.ts +6 -16
  220. package/src/web-components/interaction/form/field-message.spec.ts +62 -0
  221. package/src/web-components/interaction/form/field-message.ts +55 -0
  222. package/src/web-components/layout/BdsGrid.mdx +1 -1
  223. package/src/web-components/layout/BdsGrid.stories.tsx +1 -1
  224. package/src/web-components/layout/BdsGridItem.mdx +1 -1
  225. package/src/web-components/layout/BdsGridItem.stories.tsx +1 -1
  226. package/src/web-components/ui/BdsAlert.mdx +19 -1
  227. package/src/web-components/ui/BdsAlert.stories.tsx +29 -3
  228. package/src/web-components/ui/BdsAvatar.mdx +20 -3
  229. package/src/web-components/ui/BdsAvatar.stories.tsx +25 -2
  230. package/src/web-components/ui/BdsBadge.mdx +1 -1
  231. package/src/web-components/ui/BdsBadge.stories.tsx +1 -1
  232. package/src/web-components/ui/BdsBreadcrumb.mdx +1 -1
  233. package/src/web-components/ui/BdsBreadcrumb.stories.tsx +1 -1
  234. package/src/web-components/ui/BdsButtonContainer.mdx +1 -1
  235. package/src/web-components/ui/BdsButtonContainer.stories.tsx +1 -1
  236. package/src/web-components/ui/BdsCalendar.mdx +1 -1
  237. package/src/web-components/ui/BdsCalendar.stories.tsx +1 -1
  238. package/src/web-components/ui/BdsCalendarRange.mdx +1 -1
  239. package/src/web-components/ui/BdsCalendarRange.stories.tsx +1 -1
  240. package/src/web-components/ui/BdsCard.mdx +1 -1
  241. package/src/web-components/ui/BdsCard.stories.tsx +1 -1
  242. package/src/web-components/ui/BdsCarousel.mdx +1 -1
  243. package/src/web-components/ui/BdsCarousel.stories.tsx +1 -1
  244. package/src/web-components/ui/BdsDescriptionList.mdx +1 -1
  245. package/src/web-components/ui/BdsDescriptionList.stories.tsx +1 -1
  246. package/src/web-components/ui/BdsIconWrapper.mdx +1 -1
  247. package/src/web-components/ui/BdsIconWrapper.stories.tsx +1 -1
  248. package/src/web-components/ui/BdsLink.mdx +1 -1
  249. package/src/web-components/ui/BdsLink.stories.tsx +1 -1
  250. package/src/web-components/ui/BdsLoading.mdx +1 -1
  251. package/src/web-components/ui/BdsLoading.stories.tsx +1 -1
  252. package/src/web-components/ui/BdsNotificationBanner.mdx +10 -1
  253. package/src/web-components/ui/BdsNotificationBanner.stories.tsx +29 -2
  254. package/src/web-components/ui/BdsPagination.mdx +1 -1
  255. package/src/web-components/ui/BdsPagination.stories.tsx +1 -1
  256. package/src/web-components/ui/BdsProgress.mdx +1 -1
  257. package/src/web-components/ui/BdsProgress.stories.tsx +1 -1
  258. package/src/web-components/ui/BdsProgressCircle.mdx +1 -1
  259. package/src/web-components/ui/BdsProgressCircle.stories.tsx +1 -1
  260. package/src/web-components/ui/BdsRating.mdx +1 -1
  261. package/src/web-components/ui/BdsRating.stories.tsx +1 -1
  262. package/src/web-components/ui/BdsSectionHeader.mdx +18 -6
  263. package/src/web-components/ui/BdsSectionHeader.stories.tsx +10 -2
  264. package/src/web-components/ui/BdsSeparator.mdx +2 -1
  265. package/src/web-components/ui/BdsSeparator.stories.tsx +13 -1
  266. package/src/web-components/ui/BdsSkeleton.mdx +1 -1
  267. package/src/web-components/ui/BdsSkeleton.stories.tsx +1 -1
  268. package/src/web-components/ui/BdsTable.mdx +5 -1
  269. package/src/web-components/ui/BdsTable.stories.tsx +1 -1
  270. package/src/web-components/ui/BdsTypography.mdx +1 -1
  271. package/src/web-components/ui/BdsTypography.stories.tsx +1 -1
  272. package/src/web-components/ui/bds-alert.spec.ts +27 -0
  273. package/src/web-components/ui/bds-alert.ts +34 -1
  274. package/src/web-components/ui/bds-avatar.spec.ts +47 -0
  275. package/src/web-components/ui/bds-avatar.ts +36 -3
  276. package/src/web-components/ui/bds-notification-banner.spec.ts +45 -0
  277. package/src/web-components/ui/bds-notification-banner.ts +53 -1
  278. package/src/web-components/ui/bds-section-header.spec.ts +36 -3
  279. package/src/web-components/ui/bds-section-header.ts +32 -10
  280. package/src/web-components/ui/bds-separator.spec.ts +8 -0
  281. package/src/web-components/ui/bds-separator.ts +7 -0
  282. package/src/web-components/ui/bds-table.spec.ts +11 -0
  283. package/src/web-components/ui/bds-table.ts +5 -5
  284. package/dist/web-components/chunk-QZAIRJ75.js +0 -111
@@ -0,0 +1,154 @@
1
+ import {
2
+ A,
3
+ T,
4
+ i,
5
+ i2
6
+ } from "./chunk-LGEZYFUU.js";
7
+
8
+ // src/web-components/interaction/bds-dropdown-menu-item.ts
9
+ var BdsDropdownMenuItem = class extends i2 {
10
+ static styles = i`
11
+ /* Shadow DOM does not inherit the global box-sizing reset, so set it
12
+ here; otherwise elements with an explicit size + padding size as
13
+ content-box and layouts drift from the React (light-DOM) versions. */
14
+ :host,
15
+ *,
16
+ *::before,
17
+ *::after {
18
+ box-sizing: border-box;
19
+ }
20
+
21
+ :host {
22
+ display: block;
23
+ }
24
+
25
+ :host([disabled]) {
26
+ opacity: var(--dropdown_item-opacity--disabled, 0.4);
27
+ pointer-events: none;
28
+ }
29
+
30
+ .item {
31
+ display: flex;
32
+ align-items: center;
33
+ gap: var(--bds-space_xs);
34
+ inline-size: 100%;
35
+ padding: var(--dropdown_item-padding, var(--bds-space_xs) var(--bds-space_s));
36
+ font-size: var(--dropdown_item-font-size, var(--bds-font_size--body));
37
+ font-family: var(--bds-font_family--body);
38
+ color: inherit;
39
+ background: none;
40
+ border: none;
41
+ text-align: start;
42
+ cursor: pointer;
43
+ border-radius: var(--dropdown_item-radius, var(--bds-border_radius--xs));
44
+ transition: var(--bds-animation_transition);
45
+ }
46
+
47
+ :host([destructive]) .item {
48
+ color: var(--dropdown_item-color--destructive, var(--bds-color_error_on-bg));
49
+ }
50
+
51
+ .item:focus-visible {
52
+ outline: var(--bds-outline_default);
53
+ outline-offset: calc(var(--bds-outline_offset) * -1);
54
+ }
55
+
56
+ .item:not(:disabled):focus-visible {
57
+ background-color: var(--dropdown_item-bg--hover, var(--bds-color_primary--subtle, var(--bds-color_blue--subtle)));
58
+ color: var(--dropdown_item-color--hover, var(--bds-color_on-primary--subtle, var(--bds-color_on-blue--subtle)));
59
+ }
60
+
61
+ :host([destructive]) .item:not(:disabled):focus-visible {
62
+ background-color: var(--dropdown_item-bg--destructive-hover, var(--bds-color_error--subtle));
63
+ color: var(--dropdown_item-color--destructive-hover, var(--bds-color_on-error--subtle));
64
+ }
65
+
66
+ @media (hover: hover) and (pointer: fine) {
67
+ .item:not(:disabled):hover {
68
+ background-color: var(--dropdown_item-bg--hover, var(--bds-color_primary--subtle, var(--bds-color_blue--subtle)));
69
+ color: var(--dropdown_item-color--hover, var(--bds-color_on-primary--subtle, var(--bds-color_on-blue--subtle)));
70
+ }
71
+
72
+ :host([destructive]) .item:not(:disabled):hover {
73
+ background-color: var(--dropdown_item-bg--destructive-hover, var(--bds-color_error--subtle));
74
+ color: var(--dropdown_item-color--destructive-hover, var(--bds-color_on-error--subtle));
75
+ }
76
+ }
77
+
78
+ .icon[hidden] {
79
+ display: none;
80
+ }
81
+
82
+ .icon {
83
+ display: flex;
84
+ align-items: center;
85
+ flex-shrink: 0;
86
+ }
87
+
88
+ .label {
89
+ flex: 1;
90
+ }
91
+
92
+ .shortcut {
93
+ flex-shrink: 0;
94
+ color: var(--dropdown_shortcut-color, var(--bds-color_on-bg--muted, var(--bds-color_on-bg)));
95
+ font-size: var(--dropdown_shortcut-font-size, var(--bds-font_size--body--s));
96
+ }
97
+ `;
98
+ static properties = {
99
+ value: { type: String, reflect: true },
100
+ disabled: { type: Boolean, reflect: true },
101
+ destructive: { type: Boolean, reflect: true },
102
+ shortcut: { type: String, reflect: true },
103
+ _hasIcon: { state: true }
104
+ };
105
+ constructor() {
106
+ super();
107
+ this.value = "";
108
+ this.disabled = false;
109
+ this.destructive = false;
110
+ this.shortcut = "";
111
+ this._hasIcon = false;
112
+ }
113
+ _onIconSlotChange(e) {
114
+ this._hasIcon = e.target.assignedNodes().length > 0;
115
+ }
116
+ _handleClick() {
117
+ if (this.disabled) return;
118
+ this.dispatchEvent(new CustomEvent("bds-select", {
119
+ detail: { value: this.value },
120
+ bubbles: true,
121
+ composed: true
122
+ }));
123
+ }
124
+ _handleKeydown(e) {
125
+ if (e.key === "Enter" || e.key === " ") {
126
+ e.preventDefault();
127
+ this._handleClick();
128
+ }
129
+ }
130
+ render() {
131
+ return T`
132
+ <button
133
+ class="item"
134
+ type="button"
135
+ role="menuitem"
136
+ tabindex=${this.disabled ? "-1" : "0"}
137
+ ?disabled=${this.disabled}
138
+ @click=${this._handleClick}
139
+ @keydown=${this._handleKeydown}
140
+ >
141
+ <span class="icon" aria-hidden="true" ?hidden=${!this._hasIcon}>
142
+ <slot name="icon" @slotchange=${this._onIconSlotChange}></slot>
143
+ </span>
144
+ <span class="label"><slot></slot></span>
145
+ ${this.shortcut ? T`<span class="shortcut" aria-hidden="true">${this.shortcut}</span>` : A}
146
+ </button>
147
+ `;
148
+ }
149
+ };
150
+ customElements.define("bds-dropdown-menu-item", BdsDropdownMenuItem);
151
+
152
+ export {
153
+ BdsDropdownMenuItem
154
+ };
@@ -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%;
@@ -60,6 +60,41 @@ var BdsNotificationBanner = class extends i2 {
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>
@@ -77,6 +77,7 @@ var BdsRadio = class extends i2 {
77
77
 
78
78
  :host([error]) .input {
79
79
  --bdc_color: var(--bdc_color--error);
80
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
80
81
  }
81
82
 
82
83
  .textWrapper {
@@ -83,6 +83,7 @@ var BdsCheckbox = class extends i2 {
83
83
 
84
84
  :host([error]) .input {
85
85
  --bdc_color: var(--bdc_color--error);
86
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
86
87
  }
87
88
 
88
89
  label {
@@ -28,15 +28,15 @@ var BdsDropdownMenu = class extends i2 {
28
28
  inset-inline-start: 0;
29
29
  min-inline-size: 10rem;
30
30
  border: var(--dropdown_border, none);
31
- --bdc_color: currentcolor;
31
+ --bdc_color: var(--dropdown_border-color, var(--bds-color_on-bg--as-surface, var(--bds-color_on-bg--border, var(--bds-color_on-bg))));
32
32
  --bdc-outline_radius: var(--bds-border_radius--s);
33
33
 
34
34
  border-radius: var(--dropdown_radius, var(--bdc-outline_radius));
35
35
  background-color: var(--dropdown_color, var(--bds-color_bg--strong, var(--bds-color_bg)));
36
36
  color: var(--dropdown_on-color, var(--bds-color_on-bg));
37
37
  box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color),
38
- var(--dropdown_shadow, var(--bds-shadow_m));
39
- padding: var(--bds-space_xxs);
38
+ var(--dropdown_shadow, var(--bds-shadow_l));
39
+ padding: var(--dropdown_padding, var(--bds-space_xxs));
40
40
  z-index: var(--bds-z-index_dropdown);
41
41
  display: none;
42
42
  flex-direction: column;
@@ -8,7 +8,7 @@ var bdcCss = `
8
8
 
9
9
  @property --bdc-outline_width {
10
10
  syntax: '<length>';
11
- inherits: false;
11
+ inherits: true;
12
12
  initial-value: 1px;
13
13
  }
14
14
 
@@ -30,7 +30,7 @@ var bdcCss = `
30
30
  initial-value: 0 0 0 0 transparent;
31
31
  }
32
32
 
33
- @layer boostdev.component {
33
+ @layer boostdev.tokens.semantic {
34
34
  :root {
35
35
  --bdc-outline_border: none;
36
36
 
@@ -41,14 +41,20 @@ var bdcCss = `
41
41
  /* Active / selected state colours \u2014 override these to theme all filled form controls globally */
42
42
  --bdc-color_active: var(--bds-color_interactive);
43
43
  --bdc-color_on-active: var(--bds-color_on-interactive);
44
- --bdc-color_active--subtle: var(--bds-color_blue--subtle);
45
- --bdc-color_active--strong: var(--bds-color_interactive_on-bg);
44
+ --bdc-color_active--subtle: var(--bds-color_blue--subtle);
45
+ --bdc-color_on-active--subtle: var(--bds-color_on-blue--subtle);
46
+ --bdc-color_active--strong: var(--bds-color_interactive_on-bg);
47
+ --bdc-color_on-active--strong: var(--bds-color_on-blue--strong);
46
48
 
47
49
  --bdc-outline_width: 1px;
50
+ --bdc-outline_width--error: 2px;
48
51
  --bdc-outline_offset: -1px; /* available for consumer use; bdc borders now use inset box-shadow */
49
52
  --bdc-outline_radius: var(--bds-border_radius--xs);
50
53
  --bdc-outline_radius--l: 1.5em;
51
54
  --bdc-outline_shadow: 0 0 0 0 transparent;
55
+
56
+ --bds-outline_default: 2px solid var(--bds-color_interactive);
57
+ --bds-outline_offset: 2px;
52
58
  }
53
59
  }
54
60
  `;
@@ -1,3 +1,7 @@
1
+ import {
2
+ fieldMessageStyles,
3
+ renderFieldMessage
4
+ } from "./chunk-SRKQ6GST.js";
1
5
  import {
2
6
  A,
3
7
  T,
@@ -63,6 +67,7 @@ var BdsFormInput = class extends i2 {
63
67
 
64
68
  :host([error]) .wrapper {
65
69
  --bdc_color: var(--bdc_color--error);
70
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
66
71
  }
67
72
 
68
73
  .wrapper:focus-within {
@@ -71,6 +76,7 @@ var BdsFormInput = class extends i2 {
71
76
 
72
77
  :host([error]) .wrapper:focus-within {
73
78
  --bdc_color: var(--bdc_color--error);
79
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
74
80
  }
75
81
 
76
82
  .input {
@@ -120,20 +126,7 @@ var BdsFormInput = class extends i2 {
120
126
  display: none;
121
127
  }
122
128
 
123
- .message {
124
- margin-block-start: var(--bds-space_xxs);
125
- font-size: var(--bds-font_size--body--s);
126
- font-family: var(--bds-font_family--body);
127
- }
128
-
129
- .message--error {
130
- color: var(--bds-color_error);
131
- }
132
-
133
- .message--hint {
134
- color: var(--bds-color_on-bg--subtle);
135
- font-style: italic;
136
- }
129
+ ${fieldMessageStyles}
137
130
  `;
138
131
  static properties = {
139
132
  name: { type: String, reflect: true },
@@ -224,8 +217,8 @@ var BdsFormInput = class extends i2 {
224
217
  />
225
218
  <span class="suffix"><slot name="suffix"></slot></span>
226
219
  </div>
227
- ${this.error ? T`<p id=${errorId} class="message message--error" role="alert">${this.error}</p>` : ""}
228
- ${this.hint ? T`<p id=${hintId} class="message message--hint">${this.hint}</p>` : ""}
220
+ ${this.error ? renderFieldMessage("error", errorId, this.error) : ""}
221
+ ${this.hint ? renderFieldMessage("hint", hintId, this.hint) : ""}
229
222
  `;
230
223
  }
231
224
  };
@@ -0,0 +1,51 @@
1
+ import {
2
+ A,
3
+ T,
4
+ i,
5
+ i2
6
+ } from "./chunk-LGEZYFUU.js";
7
+
8
+ // src/web-components/interaction/bds-dropdown-menu-group.ts
9
+ var BdsDropdownMenuGroup = class extends i2 {
10
+ static styles = i`
11
+ /* Shadow DOM does not inherit the global box-sizing reset, so set it here. */
12
+ :host,
13
+ *,
14
+ *::before,
15
+ *::after {
16
+ box-sizing: border-box;
17
+ }
18
+
19
+ :host {
20
+ display: block;
21
+ }
22
+
23
+ .label {
24
+ padding: var(--dropdown_group-label-padding, var(--bds-space_xs) var(--bds-space_s) var(--bds-space_xxs));
25
+ font-family: var(--bds-font_family--body);
26
+ font-size: var(--dropdown_group-label-font-size, var(--bds-font_size--body--s));
27
+ font-weight: var(--dropdown_group-label-font-weight, var(--bds-font_weight--bold));
28
+ color: var(--dropdown_group-label-color, var(--bds-color_on-bg--muted, var(--bds-color_on-bg)));
29
+ }
30
+ `;
31
+ static properties = {
32
+ label: { type: String, reflect: true }
33
+ };
34
+ constructor() {
35
+ super();
36
+ this.label = "";
37
+ }
38
+ render() {
39
+ return T`
40
+ <div role="group" aria-labelledby=${this.label ? "label" : A}>
41
+ ${this.label ? T`<div id="label" class="label">${this.label}</div>` : A}
42
+ <slot></slot>
43
+ </div>
44
+ `;
45
+ }
46
+ };
47
+ customElements.define("bds-dropdown-menu-group", BdsDropdownMenuGroup);
48
+
49
+ export {
50
+ BdsDropdownMenuGroup
51
+ };
@@ -118,6 +118,7 @@ var BdsSwitch = class extends i2 {
118
118
  switch still shows the active colour even when it also has an error. */
119
119
  :host([error]) .track {
120
120
  --bdc_color: var(--switch_border-color--error, var(--bds-color_error));
121
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
121
122
  }
122
123
 
123
124
  .input:checked + .track {
@@ -9,15 +9,15 @@ import {
9
9
  var tableLightDomCss = `
10
10
  @layer boostdev.component {
11
11
  bds-table > table thead {
12
- background-color: var(--bds-color_bg--subtle);
12
+ background-color: var(--table_header-bg, var(--bds-color_bg--subtle));
13
13
  }
14
14
 
15
15
  bds-table > table th {
16
16
  padding: var(--bds-space_s) var(--bds-space_m);
17
- font-weight: var(--bds-font_weight--semibold);
18
- font-size: var(--bds-font_size--body--s);
17
+ font-weight: var(--table_header-font-weight, var(--bds-font_weight--bold));
18
+ font-size: var(--table_header-font-size, var(--bds-font_size--body));
19
19
  text-align: start;
20
- color: var(--bds-color_on-bg--subtle);
20
+ color: var(--table_header-color, var(--bds-color_on-bg--subtle));
21
21
  border-block-end: 1px solid var(--table_divider-color, var(--bds-color_on-bg--as-surface, var(--bds-color_on-bg--border, var(--bds-color_bg--subtle))));
22
22
  white-space: nowrap;
23
23
  }
@@ -35,7 +35,7 @@ var tableLightDomCss = `
35
35
  bds-table[sticky-header] > table thead th {
36
36
  position: sticky;
37
37
  inset-block-start: 0;
38
- background-color: var(--bds-color_bg--subtle);
38
+ background-color: var(--table_header-bg, var(--bds-color_bg--subtle));
39
39
  }
40
40
 
41
41
  @media (hover: hover) and (pointer: fine) {
@@ -37,11 +37,11 @@ var BdsSectionHeader = class extends i2 {
37
37
  /* --sectionHeader-title-color (kebab delimiter) is deprecated -- use --sectionHeader_title-color */
38
38
  color: var(--sectionHeader_title-color, var(--sectionHeader-title-color, var(--bds-color_on-bg)));
39
39
  margin: 0;
40
- font-family: var(--bds-font_family--body);
40
+ font-family: var(--sectionHeader_title-font-family, var(--bds-font_family--heading));
41
41
  }
42
42
 
43
43
  .subtitle {
44
- color: var(--sectionHeader_subtitle-color, var(--bds-color_grey--strong));
44
+ color: var(--sectionHeader_subtitle-color, var(--bds-color_on-bg--muted, var(--bds-color_grey--strong)));
45
45
  margin: 0;
46
46
  font-family: var(--bds-font_family--body);
47
47
  font-weight: var(--bds-font_weight--medium);
@@ -52,17 +52,35 @@ var BdsSectionHeader = class extends i2 {
52
52
  .header.--end { align-items: flex-end; text-align: end; }
53
53
 
54
54
  /* medium first -- default size, so MCP extraction picks up its fallbacks */
55
- .header.--medium .title { font-size: var(--sectionHeader_title-size, var(--bds-font_size--heading-1)); line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--heading)); font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--bold)); }
56
- .header.--medium .subtitle { font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--heading-3)); line-height: var(--sectionHeader_subtitle-line-height, 1.3); }
55
+ .header.--medium .title { font-size: var(--sectionHeader_title-size, var(--bds-font_size--heading-2)); line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--heading)); font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--heading, var(--bds-font_weight--bold))); }
56
+ .header.--medium .subtitle { font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--body)); line-height: var(--sectionHeader_subtitle-line-height, 1.3); }
57
57
 
58
- .header.--xs .title { font-size: var(--sectionHeader_title-size, var(--bds-font_size--heading-2)); line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--heading)); font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--bold)); }
59
- .header.--xs .subtitle { font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--body)); line-height: var(--sectionHeader_subtitle-line-height, 1.4); }
58
+ .header.--xs .title { font-size: var(--sectionHeader_title-size, var(--bds-font_size--body)); line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--heading)); font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--heading, var(--bds-font_weight--bold))); }
59
+ .header.--xs .subtitle { font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--body--s)); line-height: var(--sectionHeader_subtitle-line-height, 1.4); }
60
60
 
61
- .header.--small .title { font-size: var(--sectionHeader_title-size, var(--bds-font_size--heading-1)); line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--heading)); font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--bold)); }
61
+ .header.--small .title { font-size: var(--sectionHeader_title-size, var(--bds-font_size--heading-3)); line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--heading)); font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--heading, var(--bds-font_weight--bold))); }
62
62
  .header.--small .subtitle { font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--body)); line-height: var(--sectionHeader_subtitle-line-height, 1.4); }
63
63
 
64
- .header.--large .title { font-size: var(--sectionHeader_title-size, var(--bds-font_size--display)); line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--display)); font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--bold)); letter-spacing: var(--bds-font_tracking--tight); }
65
- .header.--large .subtitle { font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--heading-2)); line-height: var(--sectionHeader_subtitle-line-height, 1.3); font-weight: var(--bds-font_weight--medium); }
64
+ .header.--large .title { font-size: var(--sectionHeader_title-size, var(--bds-font_size--heading-1)); line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--heading)); font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--heading, var(--bds-font_weight--bold))); letter-spacing: var(--bds-font_tracking--tight); }
65
+ .header.--large .subtitle { font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--heading-3)); line-height: var(--sectionHeader_subtitle-line-height, 1.3); font-weight: var(--bds-font_weight--medium); }
66
+
67
+ /* Gradient only where background-clip: text is supported; elsewhere the title keeps its normal colour */
68
+ @supports (background-clip: text) {
69
+ .header.--gradient .title {
70
+ inline-size: fit-content;
71
+ max-inline-size: 100%;
72
+ background-image: var(--sectionHeader_title-gradient, linear-gradient(90deg, var(--bds-color_primary--strong, var(--bds-color_blue--strong)), var(--bds-color_accent-3--strong, var(--bds-color_blue--strong))));
73
+ background-clip: text;
74
+ color: transparent;
75
+ }
76
+ }
77
+
78
+ @media (forced-colors: active) {
79
+ .header.--gradient .title {
80
+ background-image: none;
81
+ color: CanvasText;
82
+ }
83
+ }
66
84
  `;
67
85
  static properties = {
68
86
  heading: { type: String },
@@ -70,6 +88,7 @@ var BdsSectionHeader = class extends i2 {
70
88
  subtitle: { type: String },
71
89
  alignment: { type: String, reflect: true },
72
90
  size: { type: String, reflect: true },
91
+ appearance: { type: String, reflect: true },
73
92
  titleAs: { type: String, attribute: "title-as" }
74
93
  };
75
94
  constructor() {
@@ -79,6 +98,7 @@ var BdsSectionHeader = class extends i2 {
79
98
  this.subtitle = "";
80
99
  this.alignment = "start";
81
100
  this.size = "medium";
101
+ this.appearance = "default";
82
102
  this.titleAs = "h2";
83
103
  }
84
104
  get _headingText() {
@@ -87,7 +107,7 @@ var BdsSectionHeader = class extends i2 {
87
107
  render() {
88
108
  const tag = s(this.titleAs || "h2");
89
109
  return T`
90
- <div class="header --${this.alignment} --${this.size}">
110
+ <div class="header --${this.alignment} --${this.size}${this.appearance === "gradient" ? " --gradient" : ""}">
91
111
  ${u`<${tag} class="title">${this._headingText}</${tag}>`}
92
112
  ${this.subtitle ? T`<p class="subtitle">${this.subtitle}</p>` : A}
93
113
  </div>
@@ -1,3 +1,7 @@
1
+ import {
2
+ fieldMessageStyles,
3
+ renderFieldMessage
4
+ } from "./chunk-SRKQ6GST.js";
1
5
  import {
2
6
  T,
3
7
  i,
@@ -79,26 +83,15 @@ var BdsTextarea = class extends i2 {
79
83
 
80
84
  :host([error]) .textarea {
81
85
  --bdc_color: var(--bdc_color--error);
86
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
82
87
  }
83
88
 
84
89
  :host([error]) .textarea:focus {
85
90
  --bdc_color: var(--bdc_color--error);
91
+ --bdc-outline_width: var(--bdc-outline_width--error, 2px);
86
92
  }
87
93
 
88
- .message {
89
- margin-block-start: var(--bds-space_xxs);
90
- font-size: var(--bds-font_size--body--s);
91
- font-family: var(--bds-font_family--body);
92
- }
93
-
94
- .message--error {
95
- color: var(--bds-color_error);
96
- }
97
-
98
- .message--hint {
99
- color: var(--bds-color_on-bg--subtle);
100
- font-style: italic;
101
- }
94
+ ${fieldMessageStyles}
102
95
  `;
103
96
  static properties = {
104
97
  name: { type: String, reflect: true },
@@ -182,7 +175,7 @@ var BdsTextarea = class extends i2 {
182
175
  @input=${this._handleInput}
183
176
  @change=${this._handleChange}
184
177
  ></textarea>
185
- ${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>` : ""}
178
+ ${this.error ? renderFieldMessage("error", errorId, this.error) : this.hint ? renderFieldMessage("hint", hintId, this.hint) : ""}
186
179
  `;
187
180
  }
188
181
  };
@@ -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
  }