@boostdev/design-system-components 2.8.0 → 2.11.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 (534) hide show
  1. package/AGENTS.md +54 -46
  2. package/README.md +34 -20
  3. package/dist/client.cjs +1317 -779
  4. package/dist/client.css +1029 -812
  5. package/dist/client.d.cts +88 -26
  6. package/dist/client.d.ts +88 -26
  7. package/dist/client.js +1278 -732
  8. package/dist/index.cjs +1317 -779
  9. package/dist/index.css +1029 -812
  10. package/dist/index.d.cts +88 -26
  11. package/dist/index.d.ts +88 -26
  12. package/dist/index.js +1278 -732
  13. package/dist/web-components/chunk-2OLVQUBU.js +193 -0
  14. package/dist/web-components/{chunk-OF6FFGOT.js → chunk-3AY2YKCM.js} +77 -21
  15. package/dist/web-components/chunk-3WAV6MDN.js +212 -0
  16. package/dist/web-components/{chunk-UUKSDCYS.js → chunk-47AT5KZD.js} +87 -15
  17. package/dist/web-components/chunk-4A2YYTYN.js +93 -0
  18. package/dist/web-components/{chunk-Q4T5BJT6.js → chunk-62NK3ZSC.js} +18 -3
  19. package/dist/web-components/chunk-66M6ETWD.js +77 -0
  20. package/dist/web-components/{chunk-NCPQ7AF3.js → chunk-6G22I2CK.js} +18 -3
  21. package/dist/web-components/{chunk-QDST57JC.js → chunk-7ZOJ7N4E.js} +14 -4
  22. package/dist/web-components/{chunk-QLT6MTZF.js → chunk-AIBOHNDU.js} +10 -0
  23. package/dist/web-components/{chunk-X3NQMBAQ.js → chunk-AP4RDUL2.js} +14 -3
  24. package/dist/web-components/{chunk-QWPACK5L.js → chunk-BPYKZVDK.js} +11 -1
  25. package/dist/web-components/{chunk-YLVTEY23.js → chunk-BTCMJQKB.js} +53 -21
  26. package/dist/web-components/chunk-CUKQ2L5B.js +245 -0
  27. package/dist/web-components/chunk-DIZDCL7Z.js +14 -0
  28. package/dist/web-components/{chunk-PC3IOQAH.js → chunk-DV5T43ZC.js} +27 -7
  29. package/dist/web-components/{chunk-2QA62WCQ.js → chunk-EF7IVYTY.js} +10 -0
  30. package/dist/web-components/{chunk-L3XHOMN6.js → chunk-F3ZDNHZZ.js} +26 -1
  31. package/dist/web-components/chunk-FEDABOR5.js +248 -0
  32. package/dist/web-components/{chunk-6I2DBFQ7.js → chunk-HGFCJXOQ.js} +36 -5
  33. package/dist/web-components/{chunk-SOQQ7RVJ.js → chunk-IPGHUCJT.js} +23 -8
  34. package/dist/web-components/chunk-ITD2MV5K.js +392 -0
  35. package/dist/web-components/{chunk-ARMKC4BQ.js → chunk-JH6LQKLK.js} +77 -5
  36. package/dist/web-components/chunk-JMCXAAFK.js +120 -0
  37. package/dist/web-components/{chunk-KUI55GFB.js → chunk-JUPCZVVW.js} +50 -18
  38. package/dist/web-components/chunk-JV5QT2OU.js +146 -0
  39. package/dist/web-components/{chunk-3GFWLSLS.js → chunk-KA3VPKMY.js} +29 -6
  40. package/dist/web-components/{chunk-CR5PGUHV.js → chunk-KJGRFDFI.js} +26 -11
  41. package/dist/web-components/{chunk-PY62FTRW.js → chunk-KZPRFY5P.js} +68 -33
  42. package/dist/web-components/{chunk-X46KL5BK.js → chunk-LDIPCTRN.js} +18 -1
  43. package/dist/web-components/chunk-M3ECULRH.js +174 -0
  44. package/dist/web-components/chunk-NBN2ENWJ.js +90 -0
  45. package/dist/web-components/chunk-NIN3JO6Q.js +189 -0
  46. package/dist/web-components/{chunk-2FGATTGT.js → chunk-NTQ4TCUT.js} +76 -55
  47. package/dist/web-components/chunk-OY74D4X6.js +302 -0
  48. package/dist/web-components/{chunk-3S42DZ7W.js → chunk-P24JYC5V.js} +7 -0
  49. package/dist/web-components/{chunk-BKIHQYJR.js → chunk-PXPPKCLT.js} +17 -2
  50. package/dist/web-components/{chunk-TQ7IQ4GZ.js → chunk-QEF2IRID.js} +71 -29
  51. package/dist/web-components/chunk-QZAIRJ75.js +111 -0
  52. package/dist/web-components/{chunk-6I3CFC26.js → chunk-RSZ3BWBK.js} +20 -5
  53. package/dist/web-components/chunk-RVF7W653.js +101 -0
  54. package/dist/web-components/chunk-SEO2F5KJ.js +234 -0
  55. package/dist/web-components/{chunk-VMMVWLXL.js → chunk-SFZ6Q4BP.js} +10 -0
  56. package/dist/web-components/{chunk-LY62SAVN.js → chunk-SYNLFKD3.js} +12 -2
  57. package/dist/web-components/chunk-TMWXRHGF.js +192 -0
  58. package/dist/web-components/{chunk-65JXQOBA.js → chunk-U3YZE6R6.js} +51 -7
  59. package/dist/web-components/chunk-UO7ROSHD.js +424 -0
  60. package/dist/web-components/chunk-VANAKB6D.js +152 -0
  61. package/dist/web-components/{chunk-PXZWYO6Z.js → chunk-VED2DFJ6.js} +108 -29
  62. package/dist/web-components/chunk-W6H5ID2U.js +161 -0
  63. package/dist/web-components/{chunk-FSZRP43R.js → chunk-WFVKU4GX.js} +21 -10
  64. package/dist/web-components/{chunk-OQTRTMAB.js → chunk-WIBAN7KP.js} +10 -0
  65. package/dist/web-components/chunk-XI7KRAH7.js +54 -0
  66. package/dist/web-components/{chunk-ORC56MDY.js → chunk-XIZWAWMJ.js} +45 -6
  67. package/dist/web-components/{chunk-FXURM6D5.js → chunk-YFAXGRPR.js} +10 -0
  68. package/dist/web-components/globals.js +1 -1
  69. package/dist/web-components/index.d.ts +77 -707
  70. package/dist/web-components/index.js +339 -2066
  71. package/dist/web-components/interaction/bds-accordion-item.js +1 -1
  72. package/dist/web-components/interaction/bds-accordion.js +1 -1
  73. package/dist/web-components/interaction/bds-button.d.ts +10 -2
  74. package/dist/web-components/interaction/bds-button.js +1 -1
  75. package/dist/web-components/interaction/bds-collapsible.d.ts +7 -2
  76. package/dist/web-components/interaction/bds-collapsible.js +1 -1
  77. package/dist/web-components/interaction/bds-dialog.d.ts +11 -3
  78. package/dist/web-components/interaction/bds-dialog.js +1 -1
  79. package/dist/web-components/interaction/bds-drawer.d.ts +7 -1
  80. package/dist/web-components/interaction/bds-drawer.js +1 -1
  81. package/dist/web-components/interaction/bds-dropdown-menu-item.d.ts +51 -0
  82. package/dist/web-components/interaction/bds-dropdown-menu-item.js +7 -0
  83. package/dist/web-components/interaction/bds-dropdown-menu.d.ts +70 -0
  84. package/dist/web-components/interaction/bds-dropdown-menu.js +7 -0
  85. package/dist/web-components/interaction/bds-popover.d.ts +14 -3
  86. package/dist/web-components/interaction/bds-popover.js +1 -1
  87. package/dist/web-components/interaction/bds-skip-link.js +1 -1
  88. package/dist/web-components/interaction/bds-tab-panel.js +1 -1
  89. package/dist/web-components/interaction/bds-tab.js +1 -1
  90. package/dist/web-components/interaction/bds-tabs.d.ts +1 -0
  91. package/dist/web-components/interaction/bds-tabs.js +1 -1
  92. package/dist/web-components/interaction/bds-toast-provider.js +1 -1
  93. package/dist/web-components/interaction/bds-tooltip.d.ts +19 -3
  94. package/dist/web-components/interaction/bds-tooltip.js +1 -1
  95. package/dist/web-components/interaction/form/bds-checkbox-group.d.ts +83 -0
  96. package/dist/web-components/interaction/form/bds-checkbox-group.js +7 -0
  97. package/dist/web-components/interaction/form/bds-checkbox.d.ts +6 -0
  98. package/dist/web-components/interaction/form/bds-checkbox.js +1 -1
  99. package/dist/web-components/interaction/form/bds-combobox.d.ts +18 -0
  100. package/dist/web-components/interaction/form/bds-combobox.js +1 -1
  101. package/dist/web-components/interaction/form/bds-field-group.d.ts +89 -0
  102. package/dist/web-components/interaction/form/bds-field-group.js +7 -0
  103. package/dist/web-components/interaction/form/bds-file-input.d.ts +1 -1
  104. package/dist/web-components/interaction/form/bds-file-input.js +1 -1
  105. package/dist/web-components/interaction/form/bds-form-input.d.ts +92 -0
  106. package/dist/web-components/interaction/form/bds-form-input.js +7 -0
  107. package/dist/web-components/interaction/form/bds-number-input.d.ts +18 -1
  108. package/dist/web-components/interaction/form/bds-number-input.js +1 -1
  109. package/dist/web-components/interaction/form/bds-radio-group.d.ts +81 -0
  110. package/dist/web-components/interaction/form/bds-radio-group.js +7 -0
  111. package/dist/web-components/interaction/form/bds-radio.d.ts +34 -6
  112. package/dist/web-components/interaction/form/bds-radio.js +1 -1
  113. package/dist/web-components/interaction/form/bds-segmented-control.d.ts +4 -4
  114. package/dist/web-components/interaction/form/bds-segmented-control.js +1 -1
  115. package/dist/web-components/interaction/form/bds-select.d.ts +22 -1
  116. package/dist/web-components/interaction/form/bds-select.js +1 -1
  117. package/dist/web-components/interaction/form/bds-slider.d.ts +42 -10
  118. package/dist/web-components/interaction/form/bds-slider.js +1 -1
  119. package/dist/web-components/interaction/form/bds-switch.d.ts +20 -0
  120. package/dist/web-components/interaction/form/bds-switch.js +1 -1
  121. package/dist/web-components/interaction/form/bds-textarea.d.ts +23 -3
  122. package/dist/web-components/interaction/form/bds-textarea.js +1 -1
  123. package/dist/web-components/layout/bds-grid-item.d.ts +63 -0
  124. package/dist/web-components/layout/bds-grid-item.js +7 -0
  125. package/dist/web-components/layout/bds-grid.d.ts +108 -0
  126. package/dist/web-components/layout/bds-grid.js +7 -0
  127. package/dist/web-components/ui/bds-alert.d.ts +16 -2
  128. package/dist/web-components/ui/bds-alert.js +1 -1
  129. package/dist/web-components/ui/bds-avatar.d.ts +2 -1
  130. package/dist/web-components/ui/bds-avatar.js +1 -1
  131. package/dist/web-components/ui/bds-badge.js +1 -1
  132. package/dist/web-components/ui/bds-breadcrumb.d.ts +3 -1
  133. package/dist/web-components/ui/bds-breadcrumb.js +1 -1
  134. package/dist/web-components/ui/bds-button-container.d.ts +52 -0
  135. package/dist/web-components/ui/bds-button-container.js +7 -0
  136. package/dist/web-components/ui/bds-button-group.d.ts +21 -0
  137. package/dist/web-components/ui/bds-button-group.js +8 -0
  138. package/dist/web-components/ui/bds-calendar.d.ts +121 -0
  139. package/dist/web-components/ui/bds-calendar.js +7 -0
  140. package/dist/web-components/ui/bds-card.d.ts +12 -3
  141. package/dist/web-components/ui/bds-card.js +1 -1
  142. package/dist/web-components/ui/bds-carousel.d.ts +98 -0
  143. package/dist/web-components/ui/bds-carousel.js +7 -0
  144. package/dist/web-components/ui/bds-description-list.js +1 -1
  145. package/dist/web-components/ui/bds-icon-wrapper.d.ts +0 -9
  146. package/dist/web-components/ui/bds-icon-wrapper.js +1 -1
  147. package/dist/web-components/ui/bds-link.js +1 -1
  148. package/dist/web-components/ui/bds-loading.js +1 -1
  149. package/dist/web-components/ui/bds-notification-banner.js +1 -1
  150. package/dist/web-components/ui/bds-pagination.d.ts +47 -0
  151. package/dist/web-components/ui/bds-pagination.js +7 -0
  152. package/dist/web-components/ui/bds-progress-circle.d.ts +3 -1
  153. package/dist/web-components/ui/bds-progress-circle.js +1 -1
  154. package/dist/web-components/ui/bds-progress.d.ts +3 -1
  155. package/dist/web-components/ui/bds-progress.js +1 -1
  156. package/dist/web-components/ui/bds-rating.js +1 -1
  157. package/dist/web-components/ui/bds-section-header.d.ts +18 -4
  158. package/dist/web-components/ui/bds-section-header.js +1 -1
  159. package/dist/web-components/ui/bds-separator.js +1 -1
  160. package/dist/web-components/ui/bds-skeleton.js +1 -1
  161. package/dist/web-components/ui/bds-table.d.ts +52 -0
  162. package/dist/web-components/ui/bds-table.js +7 -0
  163. package/dist/web-components/ui/bds-typography.d.ts +1 -0
  164. package/dist/web-components/ui/bds-typography.js +1 -1
  165. package/package.json +60 -3
  166. package/src/components/interaction/Button/Button.module.css +23 -14
  167. package/src/components/interaction/Button/Button.spec.tsx +20 -0
  168. package/src/components/interaction/Button/Button.tsx +2 -2
  169. package/src/components/interaction/Command/Command.mdx +5 -2
  170. package/src/components/interaction/Command/Command.module.css +23 -7
  171. package/src/components/interaction/Command/Command.spec.tsx +35 -0
  172. package/src/components/interaction/Command/Command.tsx +15 -4
  173. package/src/components/interaction/Command/index.ts +1 -1
  174. package/src/components/interaction/Dialog/Dialog.mdx +4 -4
  175. package/src/components/interaction/Dialog/Dialog.module.css +20 -0
  176. package/src/components/interaction/Dialog/Dialog.spec.tsx +20 -0
  177. package/src/components/interaction/Dialog/Dialog.tsx +8 -3
  178. package/src/components/interaction/Dialog/index.ts +1 -0
  179. package/src/components/interaction/Drawer/Drawer.mdx +5 -2
  180. package/src/components/interaction/Drawer/Drawer.module.css +34 -3
  181. package/src/components/interaction/Drawer/Drawer.spec.tsx +67 -1
  182. package/src/components/interaction/Drawer/Drawer.tsx +30 -12
  183. package/src/components/interaction/Drawer/index.ts +1 -0
  184. package/src/components/interaction/DropdownMenu/DropdownMenu.mdx +2 -0
  185. package/src/components/interaction/DropdownMenu/DropdownMenu.spec.tsx +34 -0
  186. package/src/components/interaction/DropdownMenu/DropdownMenu.tsx +15 -5
  187. package/src/components/interaction/DropdownMenu/index.ts +1 -0
  188. package/src/components/interaction/Popover/Popover.mdx +6 -2
  189. package/src/components/interaction/Popover/Popover.module.css +26 -18
  190. package/src/components/interaction/Popover/Popover.spec.tsx +38 -0
  191. package/src/components/interaction/Popover/Popover.tsx +19 -5
  192. package/src/components/interaction/Popover/index.ts +1 -0
  193. package/src/components/interaction/Rating/Rating.mdx +1 -1
  194. package/src/components/interaction/Rating/Rating.module.css +2 -2
  195. package/src/components/interaction/Rating/Rating.tsx +1 -1
  196. package/src/components/interaction/Rating/index.ts +1 -0
  197. package/src/components/interaction/Toast/Toast.mdx +3 -0
  198. package/src/components/interaction/Toast/Toast.module.css +35 -5
  199. package/src/components/interaction/Toast/Toast.spec.tsx +69 -1
  200. package/src/components/interaction/Toast/Toast.tsx +15 -9
  201. package/src/components/interaction/form/Checkbox/Checkbox.mdx +3 -0
  202. package/src/components/interaction/form/Checkbox/Checkbox.module.css +13 -6
  203. package/src/components/interaction/form/Checkbox/Checkbox.spec.tsx +6 -0
  204. package/src/components/interaction/form/Checkbox/Checkbox.tsx +1 -1
  205. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.mdx +16 -1
  206. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.module.css +24 -8
  207. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.spec.tsx +32 -2
  208. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx +14 -2
  209. package/src/components/interaction/form/Combobox/Combobox.mdx +11 -4
  210. package/src/components/interaction/form/Combobox/Combobox.module.css +6 -6
  211. package/src/components/interaction/form/Combobox/Combobox.spec.tsx +47 -0
  212. package/src/components/interaction/form/Combobox/Combobox.tsx +10 -5
  213. package/src/components/interaction/form/FieldGroup/FieldGroup.mdx +9 -10
  214. package/src/components/interaction/form/FieldGroup/FieldGroup.module.css +57 -23
  215. package/src/components/interaction/form/FieldGroup/FieldGroup.spec.tsx +129 -7
  216. package/src/components/interaction/form/FieldGroup/FieldGroup.tsx +72 -12
  217. package/src/components/interaction/form/FileInput/FileInput.mdx +9 -1
  218. package/src/components/interaction/form/FileInput/FileInput.module.css +8 -8
  219. package/src/components/interaction/form/FileInput/FileInput.spec.tsx +89 -1
  220. package/src/components/interaction/form/FileInput/FileInput.tsx +6 -2
  221. package/src/components/interaction/form/FormInput/FormInput.mdx +9 -5
  222. package/src/components/interaction/form/FormInput/FormInput.module.css +17 -8
  223. package/src/components/interaction/form/FormInput/FormInput.spec.tsx +20 -0
  224. package/src/components/interaction/form/FormInput/FormInput.tsx +7 -2
  225. package/src/components/interaction/form/NumberInput/NumberInput.mdx +5 -1
  226. package/src/components/interaction/form/NumberInput/NumberInput.module.css +6 -6
  227. package/src/components/interaction/form/NumberInput/NumberInput.spec.tsx +51 -0
  228. package/src/components/interaction/form/NumberInput/NumberInput.tsx +36 -8
  229. package/src/components/interaction/form/Radio/Radio.mdx +8 -1
  230. package/src/components/interaction/form/Radio/Radio.module.css +20 -7
  231. package/src/components/interaction/form/Radio/Radio.spec.tsx +15 -0
  232. package/src/components/interaction/form/Radio/Radio.tsx +10 -4
  233. package/src/components/interaction/form/RadioGroup/RadioGroup.mdx +16 -1
  234. package/src/components/interaction/form/RadioGroup/RadioGroup.module.css +24 -8
  235. package/src/components/interaction/form/RadioGroup/RadioGroup.spec.tsx +32 -2
  236. package/src/components/interaction/form/RadioGroup/RadioGroup.tsx +14 -2
  237. package/src/components/interaction/form/SegmentedControl/SegmentedControl.mdx +9 -3
  238. package/src/components/interaction/form/SegmentedControl/SegmentedControl.module.css +25 -12
  239. package/src/components/interaction/form/SegmentedControl/SegmentedControl.spec.tsx +86 -5
  240. package/src/components/interaction/form/SegmentedControl/SegmentedControl.tsx +44 -4
  241. package/src/components/interaction/form/Select/Select.mdx +10 -4
  242. package/src/components/interaction/form/Select/Select.module.css +4 -4
  243. package/src/components/interaction/form/Select/Select.spec.tsx +34 -0
  244. package/src/components/interaction/form/Select/Select.tsx +21 -9
  245. package/src/components/interaction/form/Slider/Slider.mdx +4 -1
  246. package/src/components/interaction/form/Slider/Slider.module.css +32 -8
  247. package/src/components/interaction/form/Slider/Slider.spec.tsx +29 -0
  248. package/src/components/interaction/form/Slider/Slider.tsx +9 -7
  249. package/src/components/interaction/form/Switch/Switch.mdx +2 -2
  250. package/src/components/interaction/form/Switch/Switch.module.css +12 -13
  251. package/src/components/interaction/form/Switch/Switch.spec.tsx +20 -0
  252. package/src/components/interaction/form/Switch/Switch.tsx +2 -1
  253. package/src/components/interaction/form/Textarea/Textarea.mdx +5 -0
  254. package/src/components/interaction/form/Textarea/Textarea.module.css +5 -5
  255. package/src/components/interaction/form/Textarea/Textarea.spec.tsx +13 -0
  256. package/src/components/interaction/form/Textarea/Textarea.tsx +3 -1
  257. package/src/components/interaction/form/atoms/Message.module.css +1 -1
  258. package/src/components/interaction/form/atoms/Message.spec.tsx +29 -0
  259. package/src/components/interaction/form/atoms/Message.tsx +1 -1
  260. package/src/components/layout/ButtonGroup/ButtonGroup.mdx +11 -0
  261. package/src/components/layout/ButtonGroup/ButtonGroup.module.css +1 -5
  262. package/src/components/layout/ButtonGroup/ButtonGroup.stories.tsx +14 -0
  263. package/src/components/layout/Card/Card.mdx +6 -1
  264. package/src/components/layout/Card/Card.module.css +26 -5
  265. package/src/components/layout/Card/Card.spec.tsx +7 -0
  266. package/src/components/layout/Card/Card.tsx +4 -3
  267. package/src/components/layout/Grid/Grid.spec.tsx +44 -0
  268. package/src/components/layout/Grid/Grid.tsx +5 -5
  269. package/src/components/layout/Grid/GridItem.tsx +6 -6
  270. package/src/components/layout/Grid/masonry.ts +31 -5
  271. package/src/components/layout/Grid/useIsomorphicLayoutEffect.ts +11 -0
  272. package/src/components/layout/IconWrapper/IconWrapper.mdx +8 -2
  273. package/src/components/layout/IconWrapper/IconWrapper.module.css +9 -6
  274. package/src/components/layout/SectionHeader/SectionHeader.mdx +4 -1
  275. package/src/components/layout/SectionHeader/SectionHeader.module.css +10 -9
  276. package/src/components/ui/Accordion/Accordion.mdx +4 -1
  277. package/src/components/ui/Accordion/Accordion.module.css +2 -1
  278. package/src/components/ui/Alert/Alert.mdx +21 -4
  279. package/src/components/ui/Alert/Alert.module.css +9 -4
  280. package/src/components/ui/Alert/Alert.spec.tsx +20 -0
  281. package/src/components/ui/Avatar/Avatar.mdx +8 -3
  282. package/src/components/ui/Avatar/Avatar.module.css +13 -8
  283. package/src/components/ui/Badge/Badge.mdx +3 -1
  284. package/src/components/ui/Breadcrumb/Breadcrumb.mdx +3 -0
  285. package/src/components/ui/Breadcrumb/Breadcrumb.module.css +4 -0
  286. package/src/components/ui/Breadcrumb/Breadcrumb.spec.tsx +12 -0
  287. package/src/components/ui/Breadcrumb/Breadcrumb.tsx +11 -3
  288. package/src/components/ui/Calendar/Calendar.mdx +6 -0
  289. package/src/components/ui/Calendar/Calendar.module.css +68 -19
  290. package/src/components/ui/Calendar/Calendar.spec.tsx +139 -24
  291. package/src/components/ui/Calendar/Calendar.stories.tsx +14 -0
  292. package/src/components/ui/Calendar/Calendar.tsx +143 -154
  293. package/src/components/ui/Calendar/CalendarRange.mdx +39 -0
  294. package/src/components/ui/Calendar/CalendarRange.spec.tsx +119 -0
  295. package/src/components/ui/Calendar/CalendarRange.stories.tsx +51 -0
  296. package/src/components/ui/Calendar/CalendarRange.tsx +213 -0
  297. package/src/components/ui/Calendar/MonthGrid.tsx +141 -0
  298. package/src/components/ui/Calendar/calendar-core.spec.ts +176 -0
  299. package/src/components/ui/Calendar/calendar-core.ts +164 -0
  300. package/src/components/ui/Calendar/index.ts +1 -0
  301. package/src/components/ui/Carousel/Carousel.mdx +8 -3
  302. package/src/components/ui/Carousel/Carousel.module.css +7 -5
  303. package/src/components/ui/Carousel/Carousel.spec.tsx +67 -0
  304. package/src/components/ui/Carousel/Carousel.tsx +19 -7
  305. package/src/components/ui/Collapsible/Collapsible.mdx +17 -6
  306. package/src/components/ui/Collapsible/Collapsible.module.css +7 -2
  307. package/src/components/ui/Collapsible/Collapsible.spec.tsx +40 -0
  308. package/src/components/ui/Collapsible/Collapsible.tsx +19 -2
  309. package/src/components/ui/DescriptionList/DescriptionList.mdx +2 -0
  310. package/src/components/ui/Link/Link.mdx +4 -2
  311. package/src/components/ui/Loading/Loading.mdx +6 -3
  312. package/src/components/ui/Loading/Loading.module.css +7 -7
  313. package/src/components/ui/Loading/Loading.spec.tsx +12 -0
  314. package/src/components/ui/Loading/Loading.tsx +8 -3
  315. package/src/components/ui/NotificationBanner/NotificationBanner.mdx +4 -0
  316. package/src/components/ui/NotificationBanner/NotificationBanner.module.css +5 -0
  317. package/src/components/ui/NotificationBanner/NotificationBanner.spec.tsx +20 -0
  318. package/src/components/ui/Pagination/Pagination.mdx +29 -7
  319. package/src/components/ui/Pagination/Pagination.module.css +15 -14
  320. package/src/components/ui/Progress/Progress.mdx +6 -2
  321. package/src/components/ui/Progress/Progress.module.css +1 -1
  322. package/src/components/ui/Progress/Progress.spec.tsx +17 -0
  323. package/src/components/ui/Progress/Progress.tsx +2 -2
  324. package/src/components/ui/ProgressCircle/ProgressCircle.mdx +8 -4
  325. package/src/components/ui/ProgressCircle/ProgressCircle.module.css +2 -2
  326. package/src/components/ui/ProgressCircle/ProgressCircle.spec.tsx +11 -1
  327. package/src/components/ui/ProgressCircle/ProgressCircle.tsx +1 -1
  328. package/src/components/ui/Separator/Separator.mdx +7 -0
  329. package/src/components/ui/Separator/Separator.module.css +1 -0
  330. package/src/components/ui/Skeleton/Skeleton.mdx +17 -0
  331. package/src/components/ui/Skeleton/Skeleton.module.css +12 -5
  332. package/src/components/ui/SkipLink/SkipLink.mdx +19 -0
  333. package/src/components/ui/SkipLink/SkipLink.module.css +8 -7
  334. package/src/components/ui/SkipLink/SkipLink.spec.tsx +28 -0
  335. package/src/components/ui/Table/Table.mdx +14 -0
  336. package/src/components/ui/Table/Table.module.css +13 -8
  337. package/src/components/ui/Table/Table.spec.tsx +56 -0
  338. package/src/components/ui/Table/Table.tsx +44 -6
  339. package/src/components/ui/Tabs/Tabs.mdx +16 -0
  340. package/src/components/ui/Tabs/Tabs.module.css +3 -3
  341. package/src/components/ui/Tabs/Tabs.spec.tsx +20 -0
  342. package/src/components/ui/Tabs/Tabs.tsx +5 -1
  343. package/src/components/ui/Tooltip/Tooltip.mdx +9 -0
  344. package/src/components/ui/Tooltip/Tooltip.module.css +32 -12
  345. package/src/components/ui/Tooltip/Tooltip.spec.tsx +56 -0
  346. package/src/components/ui/Tooltip/Tooltip.tsx +26 -7
  347. package/src/components/ui/Typography/Typography.mdx +7 -0
  348. package/src/components/ui/Typography/Typography.module.css +5 -5
  349. package/src/index.ts +7 -3
  350. package/src/stories/DesignSystem/Borders.mdx +14 -9
  351. package/src/stories/DesignSystem/Colors.mdx +43 -41
  352. package/src/stories/DesignSystem/Overview.mdx +4 -3
  353. package/src/stories/Introduction.mdx +5 -5
  354. package/src/web-components/globals.ts +7 -0
  355. package/src/web-components/index.ts +2 -0
  356. package/src/web-components/interaction/BdsAccordion.mdx +10 -1
  357. package/src/web-components/interaction/BdsButton.mdx +15 -4
  358. package/src/web-components/interaction/BdsButton.stories.tsx +1 -1
  359. package/src/web-components/interaction/BdsCollapsible.mdx +3 -3
  360. package/src/web-components/interaction/BdsDialog.mdx +12 -7
  361. package/src/web-components/interaction/BdsDialog.stories.tsx +2 -2
  362. package/src/web-components/interaction/BdsDrawer.mdx +9 -6
  363. package/src/web-components/interaction/BdsDropdownMenu.mdx +20 -1
  364. package/src/web-components/interaction/BdsPopover.mdx +7 -3
  365. package/src/web-components/interaction/BdsSkipLink.mdx +14 -1
  366. package/src/web-components/interaction/BdsTabs.mdx +18 -1
  367. package/src/web-components/interaction/BdsToastProvider.mdx +21 -3
  368. package/src/web-components/interaction/BdsTooltip.mdx +4 -4
  369. package/src/web-components/interaction/bds-accordion-item.ts +10 -0
  370. package/src/web-components/interaction/bds-accordion.spec.ts +41 -0
  371. package/src/web-components/interaction/bds-accordion.ts +28 -2
  372. package/src/web-components/interaction/bds-button.spec.ts +81 -0
  373. package/src/web-components/interaction/bds-button.ts +55 -8
  374. package/src/web-components/interaction/bds-collapsible.spec.ts +93 -2
  375. package/src/web-components/interaction/bds-collapsible.ts +49 -7
  376. package/src/web-components/interaction/bds-dialog.spec.ts +49 -0
  377. package/src/web-components/interaction/bds-dialog.ts +68 -11
  378. package/src/web-components/interaction/bds-drawer.spec.ts +93 -4
  379. package/src/web-components/interaction/bds-drawer.ts +54 -21
  380. package/src/web-components/interaction/bds-dropdown-menu-item.ts +12 -1
  381. package/src/web-components/interaction/bds-dropdown-menu.spec.ts +63 -0
  382. package/src/web-components/interaction/bds-dropdown-menu.ts +45 -7
  383. package/src/web-components/interaction/bds-popover.spec.ts +80 -6
  384. package/src/web-components/interaction/bds-popover.ts +83 -32
  385. package/src/web-components/interaction/bds-skip-link.spec.ts +18 -0
  386. package/src/web-components/interaction/bds-skip-link.ts +29 -8
  387. package/src/web-components/interaction/bds-tab-panel.ts +10 -0
  388. package/src/web-components/interaction/bds-tab.spec.ts +25 -0
  389. package/src/web-components/interaction/bds-tab.ts +20 -5
  390. package/src/web-components/interaction/bds-tabs.spec.ts +92 -5
  391. package/src/web-components/interaction/bds-tabs.ts +42 -1
  392. package/src/web-components/interaction/bds-toast-provider.spec.ts +43 -0
  393. package/src/web-components/interaction/bds-toast-provider.ts +50 -21
  394. package/src/web-components/interaction/bds-tooltip.spec.ts +71 -0
  395. package/src/web-components/interaction/bds-tooltip.ts +100 -5
  396. package/src/web-components/interaction/form/BdsCheckbox.mdx +20 -1
  397. package/src/web-components/interaction/form/BdsCheckbox.stories.tsx +8 -0
  398. package/src/web-components/interaction/form/BdsCheckboxGroup.mdx +4 -3
  399. package/src/web-components/interaction/form/BdsCombobox.mdx +39 -2
  400. package/src/web-components/interaction/form/BdsCombobox.stories.tsx +31 -0
  401. package/src/web-components/interaction/form/BdsFieldGroup.mdx +8 -3
  402. package/src/web-components/interaction/form/BdsFieldGroup.stories.tsx +1 -1
  403. package/src/web-components/interaction/form/BdsFileInput.mdx +26 -5
  404. package/src/web-components/interaction/form/BdsFormInput.mdx +16 -1
  405. package/src/web-components/interaction/form/BdsNumberInput.mdx +34 -2
  406. package/src/web-components/interaction/form/BdsNumberInput.stories.tsx +27 -3
  407. package/src/web-components/interaction/form/BdsRadio.mdx +39 -12
  408. package/src/web-components/interaction/form/BdsRadio.stories.tsx +26 -0
  409. package/src/web-components/interaction/form/BdsRadioGroup.mdx +9 -4
  410. package/src/web-components/interaction/form/BdsSegmentedControl.mdx +37 -11
  411. package/src/web-components/interaction/form/BdsSelect.mdx +22 -4
  412. package/src/web-components/interaction/form/BdsSelect.stories.tsx +33 -0
  413. package/src/web-components/interaction/form/BdsSlider.mdx +36 -19
  414. package/src/web-components/interaction/form/BdsSlider.stories.tsx +24 -0
  415. package/src/web-components/interaction/form/BdsSwitch.mdx +38 -11
  416. package/src/web-components/interaction/form/BdsSwitch.stories.tsx +16 -0
  417. package/src/web-components/interaction/form/BdsTextarea.mdx +42 -16
  418. package/src/web-components/interaction/form/BdsTextarea.stories.tsx +21 -0
  419. package/src/web-components/interaction/form/bds-checkbox-group.spec.ts +99 -0
  420. package/src/web-components/interaction/form/bds-checkbox-group.ts +95 -9
  421. package/src/web-components/interaction/form/bds-checkbox.spec.ts +55 -0
  422. package/src/web-components/interaction/form/bds-checkbox.ts +30 -5
  423. package/src/web-components/interaction/form/bds-combobox.spec.ts +79 -0
  424. package/src/web-components/interaction/form/bds-combobox.ts +101 -16
  425. package/src/web-components/interaction/form/bds-field-group.spec.ts +158 -0
  426. package/src/web-components/interaction/form/bds-field-group.ts +167 -23
  427. package/src/web-components/interaction/form/bds-file-input.spec.ts +73 -5
  428. package/src/web-components/interaction/form/bds-file-input.ts +71 -34
  429. package/src/web-components/interaction/form/bds-form-input.spec.ts +22 -0
  430. package/src/web-components/interaction/form/bds-form-input.ts +27 -16
  431. package/src/web-components/interaction/form/bds-number-input.spec.ts +49 -0
  432. package/src/web-components/interaction/form/bds-number-input.ts +118 -29
  433. package/src/web-components/interaction/form/bds-radio-group.spec.ts +57 -0
  434. package/src/web-components/interaction/form/bds-radio-group.ts +60 -12
  435. package/src/web-components/interaction/form/bds-radio.spec.ts +123 -0
  436. package/src/web-components/interaction/form/bds-radio.ts +135 -22
  437. package/src/web-components/interaction/form/bds-segmented-control.spec.ts +55 -0
  438. package/src/web-components/interaction/form/bds-segmented-control.ts +81 -59
  439. package/src/web-components/interaction/form/bds-select.spec.ts +57 -0
  440. package/src/web-components/interaction/form/bds-select.ts +95 -7
  441. package/src/web-components/interaction/form/bds-slider.spec.ts +83 -0
  442. package/src/web-components/interaction/form/bds-slider.ts +154 -26
  443. package/src/web-components/interaction/form/bds-switch.spec.ts +68 -0
  444. package/src/web-components/interaction/form/bds-switch.ts +87 -20
  445. package/src/web-components/interaction/form/bds-textarea.spec.ts +71 -0
  446. package/src/web-components/interaction/form/bds-textarea.ts +108 -7
  447. package/src/web-components/layout/BdsGrid.mdx +6 -2
  448. package/src/web-components/layout/BdsGrid.stories.tsx +4 -0
  449. package/src/web-components/layout/bds-grid-item.spec.ts +21 -0
  450. package/src/web-components/layout/bds-grid-item.ts +17 -3
  451. package/src/web-components/layout/bds-grid.spec.ts +98 -0
  452. package/src/web-components/layout/bds-grid.ts +139 -19
  453. package/src/web-components/ui/BdsAlert.mdx +6 -5
  454. package/src/web-components/ui/BdsAlert.stories.tsx +6 -6
  455. package/src/web-components/ui/BdsAvatar.mdx +4 -2
  456. package/src/web-components/ui/BdsBreadcrumb.mdx +3 -2
  457. package/src/web-components/ui/BdsButtonContainer.mdx +64 -0
  458. package/src/web-components/ui/BdsButtonContainer.stories.tsx +84 -0
  459. package/src/web-components/ui/BdsCalendar.mdx +29 -4
  460. package/src/web-components/ui/BdsCalendar.stories.tsx +16 -18
  461. package/src/web-components/ui/BdsCalendarRange.mdx +71 -0
  462. package/src/web-components/ui/BdsCalendarRange.stories.tsx +31 -0
  463. package/src/web-components/ui/BdsCard.mdx +7 -3
  464. package/src/web-components/ui/BdsCard.stories.tsx +17 -1
  465. package/src/web-components/ui/BdsCarousel.mdx +40 -12
  466. package/src/web-components/ui/BdsDescriptionList.mdx +6 -1
  467. package/src/web-components/ui/BdsIconWrapper.mdx +3 -2
  468. package/src/web-components/ui/BdsLink.mdx +14 -2
  469. package/src/web-components/ui/BdsNotificationBanner.mdx +18 -0
  470. package/src/web-components/ui/BdsPagination.mdx +40 -1
  471. package/src/web-components/ui/BdsProgress.mdx +8 -2
  472. package/src/web-components/ui/BdsProgressCircle.mdx +5 -2
  473. package/src/web-components/ui/BdsRating.mdx +7 -0
  474. package/src/web-components/ui/BdsSectionHeader.mdx +22 -3
  475. package/src/web-components/ui/BdsSectionHeader.stories.tsx +15 -13
  476. package/src/web-components/ui/BdsTable.mdx +23 -2
  477. package/src/web-components/ui/BdsTable.stories.tsx +8 -2
  478. package/src/web-components/ui/BdsTypography.mdx +17 -1
  479. package/src/web-components/ui/bds-alert.spec.ts +17 -2
  480. package/src/web-components/ui/bds-alert.ts +31 -5
  481. package/src/web-components/ui/bds-avatar.spec.ts +29 -0
  482. package/src/web-components/ui/bds-avatar.ts +29 -11
  483. package/src/web-components/ui/bds-badge.spec.ts +5 -0
  484. package/src/web-components/ui/bds-badge.ts +11 -1
  485. package/src/web-components/ui/bds-breadcrumb.spec.ts +30 -0
  486. package/src/web-components/ui/bds-breadcrumb.ts +26 -4
  487. package/src/web-components/ui/bds-button-container.spec.ts +39 -0
  488. package/src/web-components/ui/bds-button-container.ts +123 -0
  489. package/src/web-components/ui/bds-button-group.spec.ts +14 -20
  490. package/src/web-components/ui/bds-button-group.ts +13 -64
  491. package/src/web-components/ui/bds-calendar-range.spec.ts +123 -0
  492. package/src/web-components/ui/bds-calendar-range.ts +307 -0
  493. package/src/web-components/ui/bds-calendar.spec.ts +176 -0
  494. package/src/web-components/ui/bds-calendar.ts +186 -344
  495. package/src/web-components/ui/bds-card.spec.ts +32 -0
  496. package/src/web-components/ui/bds-card.ts +34 -9
  497. package/src/web-components/ui/bds-carousel.spec.ts +147 -0
  498. package/src/web-components/ui/bds-carousel.ts +109 -32
  499. package/src/web-components/ui/bds-description-list.spec.ts +15 -0
  500. package/src/web-components/ui/bds-description-list.ts +37 -3
  501. package/src/web-components/ui/bds-icon-wrapper.spec.ts +12 -0
  502. package/src/web-components/ui/bds-icon-wrapper.ts +15 -14
  503. package/src/web-components/ui/bds-link.spec.ts +17 -0
  504. package/src/web-components/ui/bds-link.ts +26 -11
  505. package/src/web-components/ui/bds-loading.ts +10 -0
  506. package/src/web-components/ui/bds-notification-banner.spec.ts +13 -0
  507. package/src/web-components/ui/bds-notification-banner.ts +18 -1
  508. package/src/web-components/ui/bds-pagination.spec.ts +44 -0
  509. package/src/web-components/ui/bds-pagination.ts +39 -19
  510. package/src/web-components/ui/bds-progress-circle.spec.ts +21 -0
  511. package/src/web-components/ui/bds-progress-circle.ts +17 -5
  512. package/src/web-components/ui/bds-progress.spec.ts +21 -0
  513. package/src/web-components/ui/bds-progress.ts +17 -4
  514. package/src/web-components/ui/bds-rating.spec.ts +6 -0
  515. package/src/web-components/ui/bds-rating.ts +12 -2
  516. package/src/web-components/ui/bds-section-header.spec.ts +39 -8
  517. package/src/web-components/ui/bds-section-header.ts +47 -13
  518. package/src/web-components/ui/bds-separator.ts +10 -0
  519. package/src/web-components/ui/bds-skeleton.ts +10 -0
  520. package/src/web-components/ui/bds-table.spec.ts +63 -0
  521. package/src/web-components/ui/bds-table.ts +88 -28
  522. package/src/web-components/ui/bds-typography.spec.ts +47 -0
  523. package/src/web-components/ui/bds-typography.ts +28 -10
  524. package/src/web-components/ui/calendar-styles.ts +94 -0
  525. package/dist/web-components/chunk-7YURXHTS.js +0 -147
  526. package/dist/web-components/chunk-A3RLT3AS.js +0 -49
  527. package/dist/web-components/chunk-AGKJTMJI.js +0 -56
  528. package/dist/web-components/chunk-BQLZ7I4G.js +0 -56
  529. package/dist/web-components/chunk-DZOEPVFT.js +0 -107
  530. package/dist/web-components/chunk-JYYRJS2D.js +0 -118
  531. package/dist/web-components/chunk-Y4MAXTMA.js +0 -80
  532. package/dist/web-components/chunk-Y7V7LM6R.js +0 -98
  533. package/src/web-components/ui/BdsButtonGroup.mdx +0 -69
  534. package/src/web-components/ui/BdsButtonGroup.stories.tsx +0 -66
@@ -1,16 +1,19 @@
1
1
  @layer boostdev.component {
2
+ /* --icon-wrapper-radius / --icon-wrapper-color (hyphen-delimited) are deprecated
3
+ aliases for --icon-wrapper_radius / --icon-wrapper_color, kept working for one major. */
2
4
  .wrapper {
3
5
  inline-size: 2em;
4
6
  block-size: 2em;
5
- font-size: 3em;
6
- border-radius: var(--icon-wrapper-radius, var(--bds-border_radius--circle));
7
+ font-size: var(--icon-wrapper_size, 3em);
8
+ border-radius: var(--icon-wrapper_radius, var(--icon-wrapper-radius, var(--bds-border_radius--circle)));
7
9
  display: flex;
8
10
  align-items: center;
9
11
  justify-content: center;
10
- margin: var(--bds-space_l) auto var(--bds-space_m);
11
- background: var(--icon-wrapper-color, var(--bds-color_bg));
12
- color: var(--icon-wrapper_on-color, var(--bds-on-icon-wrapper-color, var(--bds-color_on-bg)));
13
- fill: var(--icon-wrapper_on-color, var(--bds-on-icon-wrapper-color, var(--bds-color_on-bg)));
12
+ margin-block: var(--icon-wrapper_margin-block-start, var(--bds-space_l)) var(--icon-wrapper_margin-block-end, var(--bds-space_m));
13
+ margin-inline: auto;
14
+ background: var(--icon-wrapper_color, var(--icon-wrapper-color, var(--bds-color_bg)));
15
+ color: var(--icon-wrapper_on-color, var(--bds-color_on-bg));
16
+ fill: var(--icon-wrapper_on-color, var(--bds-color_on-bg));
14
17
  position: relative;
15
18
  transition: var(--bds-animation_transition);
16
19
  }
@@ -43,15 +43,18 @@ Heading block with optional subtitle for introducing a content section.
43
43
  <tr><th>Variable</th><th>Default</th><th>Description</th></tr>
44
44
  </thead>
45
45
  <tbody>
46
- <tr><td>`--sectionHeader-title-color`</td><td>`var(--bds-color_on-bg)`</td><td>Title text colour</td></tr>
46
+ <tr><td>`--sectionHeader_title-color`</td><td>`var(--bds-color_on-bg)`</td><td>Title text colour</td></tr>
47
47
  <tr><td>`--sectionHeader_title-size`</td><td>varies by `size` prop</td><td>Title font-size (overrides the variant default)</td></tr>
48
48
  <tr><td>`--sectionHeader_title-line-height`</td><td>varies by `size` prop</td><td>Title line-height</td></tr>
49
49
  <tr><td>`--sectionHeader_title-weight`</td><td>`var(--bds-font_weight--bold)`</td><td>Title font-weight</td></tr>
50
50
  <tr><td>`--sectionHeader_subtitle-color`</td><td>`var(--bds-color_grey--strong)`</td><td>Subtitle text colour</td></tr>
51
51
  <tr><td>`--sectionHeader_subtitle-size`</td><td>varies by `size` prop</td><td>Subtitle font-size</td></tr>
52
+ <tr><td>`--sectionHeader_subtitle-line-height`</td><td>`1.4` (`xs`/`small`), `1.3` (`medium`/`large`)</td><td>Subtitle line-height</td></tr>
53
+ <tr><td>`--sectionHeader_gap`</td><td>`var(--bds-space_m)`</td><td>Gap between title and subtitle</td></tr>
52
54
  </tbody>
53
55
  </table>
54
56
 
57
+ > `--sectionHeader-title-color` (hyphen-delimited) is a deprecated alias for `--sectionHeader_title-color` — still supported, but new code should use the underscore-delimited name.
55
58
 
56
59
  ## Accessibility
57
60
 
@@ -2,12 +2,13 @@
2
2
  .sectionHeader {
3
3
  display: flex;
4
4
  flex-direction: column;
5
- gap: var(--bds-space_m);
5
+ gap: var(--sectionHeader_gap, var(--bds-space_m));
6
6
  grid-column: var(--bds-grid_span-100);
7
7
  }
8
8
 
9
9
  .title {
10
- color: var(--sectionHeader-title-color, var(--bds-color_on-bg));
10
+ /* --sectionHeader-title-color (kebab delimiter) is deprecated — use --sectionHeader_title-color */
11
+ color: var(--sectionHeader_title-color, var(--sectionHeader-title-color, var(--bds-color_on-bg)));
11
12
  margin: 0;
12
13
  font-family: var(--bds-font_family--body);
13
14
  }
@@ -36,25 +37,25 @@
36
37
 
37
38
  /* medium first — default size, so MCP extraction picks up its fallbacks */
38
39
  .sectionHeader.--medium .title {
39
- font-size: var(--sectionHeader_title-size, var(--bds-font_size--display));
40
- line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--display));
40
+ font-size: var(--sectionHeader_title-size, var(--bds-font_size--heading-1));
41
+ line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--heading));
41
42
  font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--bold));
42
43
  }
43
44
 
44
45
  .sectionHeader.--medium .subtitle {
45
46
  font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--heading-3));
46
- line-height: 1.3;
47
+ line-height: var(--sectionHeader_subtitle-line-height, 1.3);
47
48
  }
48
49
 
49
50
  .sectionHeader.--xs .title {
50
- font-size: var(--sectionHeader_title-size, 1.5em);
51
+ font-size: var(--sectionHeader_title-size, var(--bds-font_size--heading-2));
51
52
  line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--heading));
52
53
  font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--bold));
53
54
  }
54
55
 
55
56
  .sectionHeader.--xs .subtitle {
56
57
  font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--body));
57
- line-height: 1.4;
58
+ line-height: var(--sectionHeader_subtitle-line-height, 1.4);
58
59
  }
59
60
 
60
61
  .sectionHeader.--small .title {
@@ -65,7 +66,7 @@
65
66
 
66
67
  .sectionHeader.--small .subtitle {
67
68
  font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--body));
68
- line-height: 1.4;
69
+ line-height: var(--sectionHeader_subtitle-line-height, 1.4);
69
70
  }
70
71
 
71
72
  .sectionHeader.--large .title {
@@ -77,7 +78,7 @@
77
78
 
78
79
  .sectionHeader.--large .subtitle {
79
80
  font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--heading-2));
80
- line-height: 1.3;
81
+ line-height: var(--sectionHeader_subtitle-line-height, 1.3);
81
82
  font-weight: var(--bds-font_weight--medium);
82
83
  }
83
84
  }
@@ -31,6 +31,8 @@ Vertically stacked sections that can be expanded and collapsed independently.
31
31
 
32
32
  ## Props
33
33
 
34
+ > **HTML attributes** — all standard HTML attributes for the root element are forwarded via `{...rest}` (`id`, `className`, `style`, `data-*`, `aria-*`, event handlers, etc.). Component-controlled attributes take precedence.
35
+
34
36
  <ArgTypes of={Stories} />
35
37
 
36
38
  ## CSS variables
@@ -43,6 +45,7 @@ Vertically stacked sections that can be expanded and collapsed independently.
43
45
  <tbody>
44
46
  <tr><td>`--accordion_border`</td><td>`none`</td><td>Container border</td></tr>
45
47
  <tr><td>`--accordion_radius`</td><td>`var(--bdc-outline_radius)`</td><td>Container corner radius</td></tr>
48
+ <tr><td>`--accordion_shadow`</td><td>`var(--bdc-outline_shadow)`</td><td>Container box-shadow tail (layered after the frame border)</td></tr>
46
49
  <tr><td>`--accordion_trigger-bg--hover`</td><td>`var(--bds-color_bg--subtle)`</td><td>Trigger button background on hover</td></tr>
47
50
  </tbody>
48
51
  </table>
@@ -52,4 +55,4 @@ Vertically stacked sections that can be expanded and collapsed independently.
52
55
 
53
56
  - Implements ARIA disclosure pattern: trigger buttons use `aria-expanded` and `aria-controls`
54
57
  - Content panels use `role="region"` with `aria-labelledby`
55
- - Disabled items have `aria-disabled="true"` and are excluded from keyboard focus
58
+ - Disabled items use the native `disabled` attribute, which conveys the state to assistive technology and removes the trigger from the tab order
@@ -7,7 +7,8 @@
7
7
  --bdc-outline_radius: var(--bds-border_radius--s);
8
8
 
9
9
  border-radius: var(--accordion_radius, var(--bdc-outline_radius));
10
- box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
10
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color),
11
+ var(--accordion_shadow, var(--bdc-outline_shadow));
11
12
  overflow: hidden;
12
13
  }
13
14
 
@@ -40,6 +40,8 @@ Inline contextual feedback message. Use for confirmations, warnings, errors, and
40
40
 
41
41
  ## Props
42
42
 
43
+ > **HTML attributes** — all standard HTML attributes for the root element are forwarded via `{...rest}` (`id`, `className`, `style`, `data-*`, `aria-*`, event handlers, etc.). Component-controlled attributes take precedence.
44
+
43
45
  <ArgTypes of={Stories} />
44
46
 
45
47
  ## CSS variables
@@ -70,9 +72,12 @@ The override surface is **layered**. Setting a public token on the alert (or any
70
72
  <tr><td>`--alert_bg`</td><td>per variant</td><td>Background colour. Set this to theme every variant at once.</td></tr>
71
73
  <tr><td>`--alert_text`</td><td>per variant</td><td>Text and icon colour.</td></tr>
72
74
  <tr><td>`--alert_border`</td><td>per variant</td><td>Inline-start border (the coloured strip).</td></tr>
75
+ <tr><td>`--alert_radius`</td><td>`var(--bds-border_radius--s)`</td><td>Root border radius.</td></tr>
73
76
  <tr><td>`--alert_dismiss-border`</td><td>`none`</td><td>Dismiss button border.</td></tr>
74
77
  <tr><td>`--alert_dismiss-radius`</td><td>`var(--bds-border_radius--circle)`</td><td>Dismiss button border radius.</td></tr>
78
+ <tr><td>`--alert_dismiss-shadow`</td><td>`var(--bdc-outline_shadow)`</td><td>Dismiss button box-shadow tail (appended after the bdc inset border).</td></tr>
75
79
  <tr><td>`--alert_dismiss-opacity--hover`</td><td>`0.7`</td><td>Dismiss button opacity on hover.</td></tr>
80
+ <tr><td>`--alert_dismiss-size`</td><td>`2.75rem`</td><td>Dismiss button minimum hit area (44x44px, WCAG 2.5.5). The 1rem icon stays centered inside it.</td></tr>
76
81
  </tbody>
77
82
  </table>
78
83
 
@@ -90,11 +95,23 @@ The override surface is **layered**. Setting a public token on the alert (or any
90
95
  </tbody>
91
96
  </table>
92
97
 
93
- Defaults resolve to the corresponding `--bds-color_{variant}--subtle` / `--bds-color_on-{variant}--subtle` / `--bds-color_{variant}` foundation tokens.
98
+ Each variant's actual default resolution:
99
+
100
+ <table>
101
+ <thead>
102
+ <tr><th>Variant</th><th>Background default</th><th>Text default</th><th>Border default</th></tr>
103
+ </thead>
104
+ <tbody>
105
+ <tr><td>`info`</td><td>`--bds-color_blue--subtle`</td><td>`--bds-color_on-blue--subtle`</td><td>`--bds-color_blue`</td></tr>
106
+ <tr><td>`success`</td><td>`--bds-color_success--subtle`</td><td>`--bds-color_on-success--subtle`</td><td>`--bds-color_success`</td></tr>
107
+ <tr><td>`warning`</td><td>`--bds-color_orange--subtle`</td><td>`--bds-color_on-orange--subtle`</td><td>`--bds-color_warning`</td></tr>
108
+ <tr><td>`error`</td><td>relative-colour mix of `--bds-color_error` (12% alpha)</td><td>`--bds-color_on-bg`</td><td>`--bds-color_error`</td></tr>
109
+ </tbody>
110
+ </table>
94
111
 
95
112
 
96
113
  ## Accessibility
97
114
 
98
- - Uses `role="alert"` to announce content to screen readers immediately on mount
99
- - `onDismiss` close button has `aria-label="Dismiss"` — ensure the label is meaningful in context
100
- - Colour alone is not used to convey meaning: each variant includes an icon
115
+ - Uses `role="alert"`/`aria-live="assertive"` for the `error` and `warning` variants, and `role="status"`/`aria-live="polite"` for `info` and `success`
116
+ - `onDismiss` close button has `aria-label="Dismiss alert"`
117
+ - Colour alone is not used to convey meaning — pass the `icon` prop so each variant has a non-colour indicator too (icons are optional and do not render on their own)
@@ -4,7 +4,7 @@
4
4
  align-items: flex-start;
5
5
  gap: var(--bds-space_s);
6
6
  padding: var(--bds-space_m);
7
- border-radius: var(--bds-border_radius--s);
7
+ border-radius: var(--alert_radius, var(--bds-border_radius--s));
8
8
 
9
9
  /* Layered cascade: public overrides (--alert_bg, --alert_text, --alert_border)
10
10
  are read OUTERMOST so an ancestor-set value always wins over variant
@@ -74,13 +74,18 @@
74
74
  border-radius: var(--alert_dismiss-radius, var(--bds-border_radius--circle));
75
75
  --bdc_color: currentcolor;
76
76
 
77
- box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
77
+ /* WCAG 2.5.5: minimum 44x44px interactive area the visible icon stays
78
+ 1rem; the hit area grows around it via min-inline-size/min-block-size. */
79
+ min-inline-size: var(--alert_dismiss-size, 2.75rem);
80
+ min-block-size: var(--alert_dismiss-size, 2.75rem);
81
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color),
82
+ var(--alert_dismiss-shadow, var(--bdc-outline_shadow));
78
83
 
79
84
  }
80
85
 
81
86
  .dismiss svg {
82
- width: 1rem;
83
- height: 1rem;
87
+ inline-size: 1rem;
88
+ block-size: 1rem;
84
89
  }
85
90
 
86
91
  .dismiss:focus-visible {
@@ -1,7 +1,14 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
1
3
  import { render, screen } from '@testing-library/react';
2
4
  import userEvent from '@testing-library/user-event';
3
5
  import { Alert } from './Alert';
4
6
 
7
+ const cssSource = readFileSync(
8
+ resolve(process.cwd(), 'src/components/ui/Alert/Alert.module.css'),
9
+ 'utf8',
10
+ );
11
+
5
12
  describe('Alert', () => {
6
13
  it('renders children', () => {
7
14
  render(<Alert>Something went wrong</Alert>);
@@ -60,4 +67,17 @@ describe('Alert', () => {
60
67
  render(<Alert className="custom">Message</Alert>);
61
68
  expect(screen.getByRole('status')).toHaveClass('custom');
62
69
  });
70
+
71
+ it('gives the dismiss button a 44x44px minimum hit area (WCAG 2.5.5)', () => {
72
+ // jsdom has no layout engine, so this can't be asserted via
73
+ // getBoundingClientRect(); pin the contract in the CSS source instead
74
+ // (same approach as NotificationBanner.spec.tsx). The visible icon (1rem)
75
+ // can stay small — only the interactive hit area must reach 44px (2.75rem).
76
+ const dismissRuleMatch = cssSource.match(/\.dismiss\s*{[^}]*}/);
77
+ expect(dismissRuleMatch).not.toBeNull();
78
+ const dismissRule = dismissRuleMatch?.[0] ?? '';
79
+
80
+ expect(dismissRule).toMatch(/min-inline-size:\s*var\(--alert_dismiss-size,\s*2\.75rem\)/);
81
+ expect(dismissRule).toMatch(/min-block-size:\s*var\(--alert_dismiss-size,\s*2\.75rem\)/);
82
+ });
63
83
  });
@@ -30,18 +30,23 @@ Circular user representation. Displays a profile image when available, falling b
30
30
 
31
31
  ## Props
32
32
 
33
+ > **HTML attributes** — all standard HTML attributes for the root element are forwarded via `{...rest}` (`id`, `className`, `style`, `data-*`, `aria-*`, event handlers, etc.). Component-controlled attributes take precedence.
34
+
33
35
  <ArgTypes of={Stories} />
34
36
 
35
37
  ## CSS variables
36
38
 
39
+ The override surface is **layered** — `--avatar_size` wins over the per-`size`-prop default, so you can theme one avatar or every avatar under an ancestor selector.
37
40
 
38
41
  <table>
39
42
  <thead>
40
- <tr><th>Variable</th><th>Description</th></tr>
43
+ <tr><th>Variable</th><th>Default</th><th>Description</th></tr>
41
44
  </thead>
42
45
  <tbody>
43
- <tr><td>`--avatar_color`</td><td>Background colour for initials fallback</td></tr>
44
- <tr><td>`--avatar_on-color`</td><td>Text colour for initials</td></tr>
46
+ <tr><td>`--avatar_size`</td><td>per `size` (`2em` / `3em` / `4.5em`)</td><td>Avatar diameter. Set on the avatar or an ancestor to override the `size` prop's default.</td></tr>
47
+ <tr><td>`--avatar_radius`</td><td>`var(--bds-border_radius--circle)`</td><td>Avatar corner radius</td></tr>
48
+ <tr><td>`--avatar_bg`</td><td>`var(--bds-color_blue)`</td><td>Background colour for the initials fallback</td></tr>
49
+ <tr><td>`--avatar_text`</td><td>`var(--bds-color_on-blue)`</td><td>Text colour for the initials</td></tr>
45
50
  </tbody>
46
51
  </table>
47
52
 
@@ -3,11 +3,16 @@
3
3
  display: inline-flex;
4
4
  align-items: center;
5
5
  justify-content: center;
6
- width: var(--avatar_size, 3em);
7
- height: var(--avatar_size, 3em);
6
+ flex-shrink: 0;
7
+
8
+ /* Layered cascade: public override (--avatar_size) wins over the
9
+ per-size-variant default. Size classes write to the inner
10
+ --avatar_size--variant slot only, so an ancestor setting
11
+ --avatar_size still cascades correctly. */
12
+ inline-size: var(--avatar_size, var(--avatar_size--variant, 3em));
13
+ block-size: var(--avatar_size, var(--avatar_size--variant, 3em));
8
14
  border-radius: var(--avatar_radius, var(--bds-border_radius--circle));
9
15
  overflow: hidden;
10
- flex-shrink: 0;
11
16
  }
12
17
 
13
18
  .avatar.--fallback {
@@ -16,13 +21,13 @@
16
21
  font-weight: var(--bds-font_weight--semibold);
17
22
  }
18
23
 
19
- .avatar.--size_small { --avatar_size: 2em; }
20
- .avatar.--size_medium { --avatar_size: 3em; }
21
- .avatar.--size_large { --avatar_size: 4.5em; }
24
+ .avatar.--size_small { --avatar_size--variant: 2em; }
25
+ .avatar.--size_medium { --avatar_size--variant: 3em; }
26
+ .avatar.--size_large { --avatar_size--variant: 4.5em; }
22
27
 
23
28
  .image {
24
- width: 100%;
25
- height: 100%;
29
+ inline-size: 100%;
30
+ block-size: 100%;
26
31
  object-fit: cover;
27
32
  display: block;
28
33
  }
@@ -38,6 +38,8 @@ Compact inline label for status, category, or count. Renders a `<span>` with a s
38
38
 
39
39
  ## Props
40
40
 
41
+ > **HTML attributes** — all standard HTML attributes for the root element are forwarded via `{...rest}` (`id`, `className`, `style`, `data-*`, `aria-*`, event handlers, etc.). Component-controlled attributes take precedence.
42
+
41
43
  <ArgTypes of={Stories} />
42
44
 
43
45
  ## CSS variables
@@ -73,7 +75,7 @@ The override surface is **layered**. Setting a public token on the badge (or any
73
75
  </tbody>
74
76
  </table>
75
77
 
76
- Defaults resolve to the corresponding `--bds-color_{variant}` / `--bds-color_on-{variant}` foundation tokens.
78
+ Defaults resolve to foundation tokens per variant: `success`/`error`/`warning` map directly to `--bds-color_{variant}` / `--bds-color_on-{variant}`. `primary` maps to `--bds-color_interactive` / `--bds-color_on-interactive`, and `secondary` maps to `--bds-color_bg` / `--bds-color_on-bg` — neither follows the generic `{variant}` naming.
77
79
 
78
80
 
79
81
  ## Accessibility
@@ -27,6 +27,8 @@ Hierarchical navigation trail showing the user's location within the site struct
27
27
 
28
28
  ## Props
29
29
 
30
+ > **HTML attributes** — all standard HTML attributes for the root element are forwarded via `{...rest}` (`id`, `className`, `style`, `data-*`, `aria-*`, event handlers, etc.). Component-controlled attributes take precedence.
31
+
30
32
  <ArgTypes of={Stories} />
31
33
 
32
34
  ## Accessibility
@@ -34,3 +36,4 @@ Hierarchical navigation trail showing the user's location within the site struct
34
36
  - Wraps in `<nav aria-label="Breadcrumb">`
35
37
  - The current page item has `aria-current="page"`
36
38
  - Separator glyphs are `aria-hidden="true"`
39
+ - Non-last items without an `href` render as non-interactive text rather than an unusable link (an `<a>` without `href` is not focusable and isn't exposed to assistive tech with the link role)
@@ -43,6 +43,10 @@
43
43
  user-select: none;
44
44
  }
45
45
 
46
+ .text {
47
+ color: var(--bds-color_on-bg--subtle);
48
+ }
49
+
46
50
  .current {
47
51
  color: var(--bds-color_on-bg--subtle);
48
52
  font-weight: var(--bds-font_weight--semibold);
@@ -37,6 +37,18 @@ describe('Breadcrumb', () => {
37
37
  expect(screen.getByText('Home')).toHaveAttribute('aria-current', 'page');
38
38
  });
39
39
 
40
+ it('renders a non-last item without href as non-interactive text, not a link', () => {
41
+ render(
42
+ <Breadcrumb
43
+ items={[{ label: 'Home', href: '/' }, { label: 'Products' }, { label: 'Shoes' }]}
44
+ />
45
+ );
46
+ expect(screen.queryByRole('link', { name: 'Products' })).not.toBeInTheDocument();
47
+ const products = screen.getByText('Products');
48
+ expect(products.tagName).toBe('SPAN');
49
+ expect(products).not.toHaveAttribute('aria-current');
50
+ });
51
+
40
52
  it('accepts a custom className', () => {
41
53
  render(<Breadcrumb items={items} className="custom" />);
42
54
  expect(screen.getByRole('navigation')).toHaveClass('custom');
@@ -5,6 +5,10 @@ import type { WithClassName } from '../../../types';
5
5
 
6
6
  export interface BreadcrumbItem {
7
7
  label: string;
8
+ /**
9
+ * Destination URL. Optional even for non-last items: an item without
10
+ * `href` renders as non-interactive text instead of an unusable link.
11
+ */
8
12
  href?: string;
9
13
  }
10
14
 
@@ -27,9 +31,13 @@ export function Breadcrumb({ items, className, ...rest }: Readonly<BreadcrumbPro
27
31
  </span>
28
32
  ) : (
29
33
  <>
30
- <a href={item.href} className={css.link}>
31
- {item.label}
32
- </a>
34
+ {item.href ? (
35
+ <a href={item.href} className={css.link}>
36
+ {item.label}
37
+ </a>
38
+ ) : (
39
+ <span className={css.text}>{item.label}</span>
40
+ )}
33
41
  <span className={css.separator} aria-hidden="true">›</span>
34
42
  </>
35
43
  )}
@@ -24,6 +24,8 @@ Date picker calendar grid. Use standalone or as the popover content inside a dat
24
24
 
25
25
  ## Props
26
26
 
27
+ > **HTML attributes** — all standard HTML attributes for the root element are forwarded via `{...rest}` (`id`, `className`, `style`, `data-*`, `aria-*`, event handlers, etc.). Component-controlled attributes take precedence.
28
+
27
29
  <ArgTypes of={Stories} />
28
30
 
29
31
  ## CSS variables
@@ -37,12 +39,16 @@ Date picker calendar grid. Use standalone or as the popover content inside a dat
37
39
  <tr><td>`--calendar_border`</td><td>`none`</td><td>Container border</td></tr>
38
40
  <tr><td>`--calendar_radius`</td><td>`var(--bdc-outline_radius)`</td><td>Container corner radius</td></tr>
39
41
  <tr><td>`--calendar_shadow`</td><td>`var(--bds-shadow_s)`</td><td>Container box shadow</td></tr>
42
+ <tr><td>`--calendar_size`</td><td>`17rem`</td><td>Container inline-size (capped at 100% of its parent)</td></tr>
43
+ <tr><td>`--calendar_button-radius`</td><td>`var(--bds-border_radius--circle)`</td><td>Nav and day button border radius</td></tr>
40
44
  <tr><td>`--calendar_today-border`</td><td>`none`</td><td>Border on today's date cell</td></tr>
45
+ <tr><td>`--calendar_today-shadow`</td><td>`var(--bdc-outline_shadow)`</td><td>Shadow tail appended after today's ring outline</td></tr>
41
46
  <tr><td>`--calendar_navBtn-bg--hover`</td><td>`var(--bds-color_bg--subtle)`</td><td>Month navigation button background on hover</td></tr>
42
47
  <tr><td>`--calendar_day-bg--hover`</td><td>`var(--bds-color_bg--subtle)`</td><td>Day cell background on hover</td></tr>
43
48
  <tr><td>`--calendar_today-color`</td><td>`var(--bds-color_interactive)`</td><td>Today's date text colour</td></tr>
44
49
  <tr><td>`--calendar_day-bg--selected`</td><td>`var(--bds-color_interactive)`</td><td>Selected day background</td></tr>
45
50
  <tr><td>`--calendar_day-color--selected`</td><td>`var(--bds-color_on-interactive)`</td><td>Selected day text colour</td></tr>
51
+ <tr><td>`--calendar_day-bg--in-range`</td><td>`var(--bds-color_blue--subtle)`</td><td>Background of days between the range endpoints</td></tr>
46
52
  </tbody>
47
53
  </table>
48
54
 
@@ -1,8 +1,8 @@
1
1
  @layer boostdev.component {
2
2
  .calendar {
3
- display: inline-flex;
4
- flex-direction: column;
5
- gap: var(--bds-space_s);
3
+ display: inline-block;
4
+ inline-size: fit-content;
5
+ max-inline-size: 100%;
6
6
  background-color: var(--bds-color_bg);
7
7
  border: var(--calendar_border, none);
8
8
  --bdc_color: var(--bds-color_bg--subtle);
@@ -11,13 +11,34 @@
11
11
  border-radius: var(--calendar_radius, var(--bdc-outline_radius));
12
12
  padding: var(--bds-space_m);
13
13
  box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--calendar_shadow, var(--bds-shadow_s));
14
- inline-size: 20rem;
15
14
  }
16
15
 
17
- .header {
16
+ .months {
17
+ display: flex;
18
+ flex-wrap: wrap;
19
+ gap: var(--bds-space_l);
20
+ }
21
+
22
+ .month {
23
+ display: flex;
24
+ flex-direction: column;
25
+ gap: var(--bds-space_s);
26
+ inline-size: var(--calendar_size, 17rem);
27
+ max-inline-size: 100%;
28
+ }
29
+
30
+ .monthHeader {
18
31
  display: flex;
19
32
  align-items: center;
20
33
  justify-content: space-between;
34
+ gap: var(--bds-space_xs);
35
+ }
36
+
37
+ .navSlot {
38
+ display: inline-flex;
39
+ inline-size: 2.75rem;
40
+ block-size: 2.75rem;
41
+ flex: none;
21
42
  }
22
43
 
23
44
  .monthYear {
@@ -31,8 +52,8 @@
31
52
  display: flex;
32
53
  align-items: center;
33
54
  justify-content: center;
34
- inline-size: 2rem;
35
- block-size: 2rem;
55
+ inline-size: 2.75rem;
56
+ block-size: 2.75rem;
36
57
  border-radius: var(--calendar_button-radius, var(--bds-border_radius--circle));
37
58
  cursor: pointer;
38
59
  color: var(--bds-color_on-bg);
@@ -56,36 +77,46 @@
56
77
  }
57
78
 
58
79
  .grid {
59
- border-collapse: collapse;
60
- inline-size: 100%;
61
- table-layout: fixed;
80
+ display: grid;
81
+ grid-template-columns: repeat(7, 1fr);
82
+ gap: var(--bds-space_xxxs);
83
+ }
84
+
85
+ /* Rows exist only for the ARIA grid > row > gridcell hierarchy; they must not
86
+ participate in the CSS grid layout, so their cells are promoted. */
87
+ .row {
88
+ display: contents;
62
89
  }
63
90
 
64
91
  .weekday {
92
+ display: flex;
93
+ align-items: center;
94
+ justify-content: center;
95
+ block-size: 2rem;
65
96
  font-size: var(--bds-font_size--body--s);
66
97
  font-weight: var(--bds-font_weight--semibold);
67
- color: var(--bds-color_on-bg);
68
- text-align: center;
69
- padding-block-end: var(--bds-space_xs);
98
+ color: var(--bds-color_on-bg--subtle);
99
+ user-select: none;
70
100
  }
71
101
 
72
- .empty {
73
- padding: 0;
102
+ .cell {
103
+ display: flex;
104
+ aspect-ratio: 1;
74
105
  }
75
106
 
76
107
  .day {
77
108
  all: unset;
109
+ box-sizing: border-box;
78
110
  display: flex;
79
111
  align-items: center;
80
112
  justify-content: center;
81
113
  inline-size: 100%;
82
- aspect-ratio: 1;
114
+ block-size: 100%;
83
115
  border-radius: var(--calendar_button-radius, var(--bds-border_radius--circle));
84
116
  font-size: var(--bds-font_size--body--s);
85
117
  color: var(--bds-color_on-bg);
86
118
  cursor: pointer;
87
119
  transition: var(--bds-animation_transition);
88
- box-sizing: border-box;
89
120
  }
90
121
 
91
122
  .day:focus-visible {
@@ -94,18 +125,24 @@
94
125
  }
95
126
 
96
127
  @media (hover: hover) and (pointer: fine) {
97
- .day:not(.disabled, .selected):hover {
128
+ .day:not(.disabled, .selected, .rangeStart, .rangeEnd):hover {
98
129
  background-color: var(--calendar_day-bg--hover, var(--bds-color_bg--subtle));
99
130
  }
100
131
  }
101
132
 
133
+ .outside {
134
+ color: var(--bds-color_on-bg--subtle);
135
+ opacity: 0.4;
136
+ }
137
+
102
138
  .today {
103
139
  font-weight: var(--bds-font_weight--semibold);
104
140
 
105
141
  --bdc_color: var(--calendar_today-color, var(--bds-color_interactive));
106
142
 
107
143
  border: var(--calendar_today-border, none);
108
- box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
144
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color),
145
+ var(--calendar_today-shadow, var(--bdc-outline_shadow));
109
146
  }
110
147
 
111
148
  .selected {
@@ -114,6 +151,18 @@
114
151
  font-weight: var(--bds-font_weight--semibold);
115
152
  }
116
153
 
154
+ .inRange {
155
+ background-color: var(--calendar_day-bg--in-range, var(--bds-color_blue--subtle));
156
+ border-radius: 0;
157
+ }
158
+
159
+ .rangeStart,
160
+ .rangeEnd {
161
+ background-color: var(--calendar_day-bg--selected, var(--bds-color_interactive));
162
+ color: var(--calendar_day-color--selected, var(--bds-color_on-interactive));
163
+ font-weight: var(--bds-font_weight--semibold);
164
+ }
165
+
117
166
  .disabled {
118
167
  opacity: 0.35;
119
168
  cursor: not-allowed;