@boostdev/design-system-components 1.1.1 → 1.2.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 (320) hide show
  1. package/AGENTS.md +13 -10
  2. package/dist/client.cjs +77 -99
  3. package/dist/client.css +611 -580
  4. package/dist/client.d.cts +13 -16
  5. package/dist/client.d.ts +13 -16
  6. package/dist/client.js +87 -109
  7. package/dist/index.cjs +77 -99
  8. package/dist/index.css +611 -580
  9. package/dist/index.d.cts +13 -16
  10. package/dist/index.d.ts +13 -16
  11. package/dist/index.js +87 -109
  12. package/dist/native/index.cjs +9 -8
  13. package/dist/native/index.d.cts +1 -1
  14. package/dist/native/index.d.ts +1 -1
  15. package/dist/native/index.js +9 -8
  16. package/dist/web-components/chunk-2QA62WCQ.js +48 -0
  17. package/dist/web-components/chunk-3REOIRDW.js +246 -0
  18. package/dist/web-components/chunk-57TRNCWQ.js +93 -0
  19. package/dist/web-components/chunk-5IPHEONG.js +139 -0
  20. package/dist/web-components/chunk-5R6IFELV.js +63 -0
  21. package/dist/web-components/chunk-5TFWOPLH.js +49 -0
  22. package/dist/web-components/chunk-6I3CFC26.js +89 -0
  23. package/dist/web-components/chunk-6MH5UWUD.js +226 -0
  24. package/dist/web-components/chunk-7FMR53BW.js +127 -0
  25. package/dist/web-components/chunk-AGKJTMJI.js +56 -0
  26. package/dist/web-components/chunk-AJSXNDAP.js +151 -0
  27. package/dist/web-components/chunk-BQLZ7I4G.js +56 -0
  28. package/dist/web-components/chunk-BX3IPVOB.js +167 -0
  29. package/dist/web-components/chunk-CR5PGUHV.js +109 -0
  30. package/dist/web-components/chunk-DI46Q2EA.js +278 -0
  31. package/dist/web-components/chunk-DZRSJGPB.js +53 -0
  32. package/dist/web-components/chunk-EBJM3VD4.js +107 -0
  33. package/dist/web-components/chunk-ECW3HHWA.js +185 -0
  34. package/dist/web-components/chunk-HGBNDR22.js +98 -0
  35. package/dist/web-components/chunk-HHHRF2PS.js +118 -0
  36. package/dist/web-components/chunk-ITHLKR7Q.js +105 -0
  37. package/dist/web-components/chunk-JUKB3BUP.js +186 -0
  38. package/dist/web-components/chunk-L3XHOMN6.js +111 -0
  39. package/dist/{web-components.js → web-components/chunk-LGEZYFUU.js} +62 -844
  40. package/dist/web-components/chunk-LY62SAVN.js +64 -0
  41. package/dist/web-components/chunk-N6IMUOY4.js +185 -0
  42. package/dist/web-components/chunk-OHUTLSIQ.js +69 -0
  43. package/dist/web-components/chunk-OQTRTMAB.js +27 -0
  44. package/dist/web-components/chunk-PY62FTRW.js +179 -0
  45. package/dist/web-components/chunk-Q4T5BJT6.js +94 -0
  46. package/dist/web-components/chunk-QDST57JC.js +119 -0
  47. package/dist/web-components/chunk-QLZ2362S.js +279 -0
  48. package/dist/web-components/chunk-QPOKHLMQ.js +45 -0
  49. package/dist/web-components/chunk-SOQQ7RVJ.js +88 -0
  50. package/dist/web-components/chunk-T6AETZRP.js +131 -0
  51. package/dist/web-components/chunk-UFFCKVZE.js +149 -0
  52. package/dist/web-components/chunk-VMMVWLXL.js +53 -0
  53. package/dist/web-components/chunk-X3FKVHLK.js +144 -0
  54. package/dist/web-components/chunk-XNA6WTXG.js +133 -0
  55. package/dist/web-components/chunk-Y4MAXTMA.js +80 -0
  56. package/dist/web-components/chunk-YLVTEY23.js +165 -0
  57. package/dist/web-components/chunk-YRXCVKHV.js +116 -0
  58. package/dist/web-components/chunk-ZTC6GRP7.js +64 -0
  59. package/dist/web-components/globals.d.ts +2 -0
  60. package/dist/web-components/globals.js +1 -0
  61. package/dist/web-components/index.d.ts +41 -0
  62. package/dist/web-components/index.js +165 -0
  63. package/dist/web-components/interaction/bds-accordion-item.d.ts +54 -0
  64. package/dist/web-components/interaction/bds-accordion-item.js +7 -0
  65. package/dist/web-components/interaction/bds-accordion.d.ts +50 -0
  66. package/dist/web-components/interaction/bds-accordion.js +7 -0
  67. package/dist/web-components/interaction/bds-button.d.ts +100 -0
  68. package/dist/web-components/interaction/bds-button.js +7 -0
  69. package/dist/web-components/interaction/bds-collapsible.d.ts +52 -0
  70. package/dist/web-components/interaction/bds-collapsible.js +7 -0
  71. package/dist/web-components/interaction/bds-dialog.d.ts +56 -0
  72. package/dist/web-components/interaction/bds-dialog.js +7 -0
  73. package/dist/web-components/interaction/bds-drawer.d.ts +64 -0
  74. package/dist/web-components/interaction/bds-drawer.js +7 -0
  75. package/dist/web-components/interaction/bds-popover.d.ts +62 -0
  76. package/dist/web-components/interaction/bds-popover.js +7 -0
  77. package/dist/web-components/interaction/bds-skip-link.d.ts +36 -0
  78. package/dist/web-components/interaction/bds-skip-link.js +7 -0
  79. package/dist/web-components/interaction/bds-tab-panel.d.ts +26 -0
  80. package/dist/web-components/interaction/bds-tab-panel.js +7 -0
  81. package/dist/web-components/interaction/bds-tab.d.ts +45 -0
  82. package/dist/web-components/interaction/bds-tab.js +7 -0
  83. package/dist/web-components/interaction/bds-tabs.d.ts +46 -0
  84. package/dist/web-components/interaction/bds-tabs.js +7 -0
  85. package/dist/web-components/interaction/bds-toast-provider.d.ts +57 -0
  86. package/dist/web-components/interaction/bds-toast-provider.js +7 -0
  87. package/dist/web-components/interaction/bds-tooltip.d.ts +50 -0
  88. package/dist/web-components/interaction/bds-tooltip.js +7 -0
  89. package/dist/web-components/interaction/form/bds-checkbox.d.ts +70 -0
  90. package/dist/web-components/interaction/form/bds-checkbox.js +7 -0
  91. package/dist/web-components/interaction/form/bds-combobox.d.ts +84 -0
  92. package/dist/web-components/interaction/form/bds-combobox.js +7 -0
  93. package/dist/web-components/interaction/form/bds-file-input.d.ts +62 -0
  94. package/dist/web-components/interaction/form/bds-file-input.js +7 -0
  95. package/dist/web-components/interaction/form/bds-number-input.d.ts +68 -0
  96. package/dist/web-components/interaction/form/bds-number-input.js +7 -0
  97. package/dist/web-components/interaction/form/bds-radio.d.ts +68 -0
  98. package/dist/web-components/interaction/form/bds-radio.js +7 -0
  99. package/dist/web-components/interaction/form/bds-segmented-control.d.ts +88 -0
  100. package/dist/web-components/interaction/form/bds-segmented-control.js +7 -0
  101. package/dist/web-components/interaction/form/bds-select.d.ts +79 -0
  102. package/dist/web-components/interaction/form/bds-select.js +7 -0
  103. package/dist/web-components/interaction/form/bds-slider.d.ts +70 -0
  104. package/dist/web-components/interaction/form/bds-slider.js +7 -0
  105. package/dist/web-components/interaction/form/bds-switch.d.ts +67 -0
  106. package/dist/web-components/interaction/form/bds-switch.js +7 -0
  107. package/dist/web-components/interaction/form/bds-textarea.d.ts +70 -0
  108. package/dist/web-components/interaction/form/bds-textarea.js +7 -0
  109. package/dist/web-components/ui/bds-alert.d.ts +66 -0
  110. package/dist/web-components/ui/bds-alert.js +7 -0
  111. package/dist/web-components/ui/bds-avatar.d.ts +50 -0
  112. package/dist/web-components/ui/bds-avatar.js +7 -0
  113. package/dist/web-components/ui/bds-badge.d.ts +35 -0
  114. package/dist/web-components/ui/bds-badge.js +7 -0
  115. package/dist/web-components/ui/bds-breadcrumb.d.ts +35 -0
  116. package/dist/web-components/ui/bds-breadcrumb.js +7 -0
  117. package/dist/web-components/ui/bds-card.d.ts +72 -0
  118. package/dist/web-components/ui/bds-card.js +7 -0
  119. package/dist/web-components/ui/bds-description-list.d.ts +42 -0
  120. package/dist/web-components/ui/bds-description-list.js +7 -0
  121. package/dist/web-components/ui/bds-icon-wrapper.d.ts +39 -0
  122. package/dist/web-components/ui/bds-icon-wrapper.js +7 -0
  123. package/dist/web-components/ui/bds-link.d.ts +59 -0
  124. package/dist/web-components/ui/bds-link.js +7 -0
  125. package/dist/web-components/ui/bds-loading.d.ts +32 -0
  126. package/dist/web-components/ui/bds-loading.js +7 -0
  127. package/dist/web-components/ui/bds-notification-banner.d.ts +61 -0
  128. package/dist/web-components/ui/bds-notification-banner.js +7 -0
  129. package/dist/web-components/ui/bds-progress-circle.d.ts +53 -0
  130. package/dist/web-components/ui/bds-progress-circle.js +7 -0
  131. package/dist/web-components/ui/bds-progress.d.ts +54 -0
  132. package/dist/web-components/ui/bds-progress.js +7 -0
  133. package/dist/web-components/ui/bds-rating.d.ts +36 -0
  134. package/dist/web-components/ui/bds-rating.js +7 -0
  135. package/dist/web-components/ui/bds-section-header.d.ts +53 -0
  136. package/dist/web-components/ui/bds-section-header.js +8 -0
  137. package/dist/web-components/ui/bds-separator.d.ts +32 -0
  138. package/dist/web-components/ui/bds-separator.js +7 -0
  139. package/dist/web-components/ui/bds-skeleton.d.ts +22 -0
  140. package/dist/web-components/ui/bds-skeleton.js +7 -0
  141. package/dist/web-components/ui/bds-typography.d.ts +44 -0
  142. package/dist/web-components/ui/bds-typography.js +8 -0
  143. package/package.json +170 -5
  144. package/src/components/interaction/Button/Button.module.css +12 -11
  145. package/src/components/interaction/Button/Button.native.tsx +10 -9
  146. package/src/components/interaction/Button/Button.tsx +1 -1
  147. package/src/components/interaction/Command/Command.module.css +3 -7
  148. package/src/components/interaction/Dialog/Dialog.module.css +7 -5
  149. package/src/components/interaction/Drawer/Drawer.module.css +49 -1
  150. package/src/components/interaction/DropdownMenu/DropdownMenu.module.css +1 -3
  151. package/src/components/interaction/Popover/Popover.module.css +1 -3
  152. package/src/components/interaction/form/Checkbox/Checkbox.module.css +1 -3
  153. package/src/components/interaction/form/Combobox/Combobox.module.css +2 -6
  154. package/src/components/interaction/form/FormInput/FormInput.module.css +1 -3
  155. package/src/components/interaction/form/NumberInput/NumberInput.module.css +16 -4
  156. package/src/components/interaction/form/Radio/Radio.module.css +6 -16
  157. package/src/components/interaction/form/SegmentedControl/SegmentedControl.mdx +70 -25
  158. package/src/components/interaction/form/SegmentedControl/SegmentedControl.module.css +55 -33
  159. package/src/components/interaction/form/SegmentedControl/SegmentedControl.spec.tsx +127 -56
  160. package/src/components/interaction/form/SegmentedControl/SegmentedControl.stories.tsx +89 -72
  161. package/src/components/interaction/form/SegmentedControl/SegmentedControl.tsx +40 -62
  162. package/src/components/interaction/form/SegmentedControl/index.ts +1 -1
  163. package/src/components/interaction/form/Select/Select.module.css +2 -4
  164. package/src/components/interaction/form/Switch/Switch.module.css +5 -7
  165. package/src/components/interaction/form/Switch/Switch.native.spec.tsx +9 -9
  166. package/src/components/interaction/form/Switch/Switch.native.tsx +2 -2
  167. package/src/components/interaction/form/Textarea/Textarea.module.css +1 -3
  168. package/src/components/interaction/form/atoms/InputContainer.stories.tsx +64 -0
  169. package/src/components/interaction/form/atoms/Label.stories.tsx +33 -0
  170. package/src/components/interaction/form/atoms/Message.stories.tsx +33 -0
  171. package/src/components/layout/Card/Card.module.css +1 -3
  172. package/src/components/ui/Accordion/Accordion.module.css +1 -2
  173. package/src/components/ui/Alert/Alert.module.css +1 -2
  174. package/src/components/ui/Calendar/Calendar.module.css +2 -5
  175. package/src/components/ui/Carousel/Carousel.module.css +1 -3
  176. package/src/components/ui/NotificationBanner/NotificationBanner.module.css +1 -2
  177. package/src/components/ui/Pagination/Pagination.module.css +1 -2
  178. package/src/components/ui/SkipLink/SkipLink.module.css +1 -2
  179. package/src/components/ui/Table/Table.module.css +1 -2
  180. package/src/css/bdc.css +16 -11
  181. package/src/index.ts +1 -1
  182. package/src/web-components/globals.ts +3 -3
  183. package/src/web-components/index.ts +47 -0
  184. package/src/web-components/interaction/BdsAccordion.mdx +51 -0
  185. package/src/web-components/interaction/BdsAccordion.stories.tsx +85 -0
  186. package/src/web-components/interaction/BdsCollapsible.mdx +46 -0
  187. package/src/web-components/interaction/BdsCollapsible.stories.tsx +87 -0
  188. package/src/web-components/interaction/BdsDialog.mdx +49 -0
  189. package/src/web-components/interaction/BdsDialog.stories.tsx +75 -0
  190. package/src/web-components/interaction/BdsDrawer.mdx +50 -0
  191. package/src/web-components/interaction/BdsDrawer.stories.tsx +66 -0
  192. package/src/web-components/interaction/BdsSkipLink.mdx +34 -0
  193. package/src/web-components/interaction/BdsSkipLink.stories.tsx +55 -0
  194. package/src/web-components/interaction/BdsTabs.mdx +47 -0
  195. package/src/web-components/interaction/BdsTabs.stories.tsx +80 -0
  196. package/src/web-components/interaction/BdsTooltip.mdx +38 -0
  197. package/src/web-components/interaction/BdsTooltip.stories.tsx +68 -0
  198. package/src/web-components/interaction/bds-accordion-item.spec.ts +75 -0
  199. package/src/web-components/interaction/bds-accordion-item.ts +181 -0
  200. package/src/web-components/interaction/bds-accordion.spec.ts +73 -0
  201. package/src/web-components/interaction/bds-accordion.ts +98 -0
  202. package/src/web-components/interaction/bds-button.ts +15 -13
  203. package/src/web-components/interaction/bds-collapsible.spec.ts +56 -0
  204. package/src/web-components/interaction/bds-collapsible.ts +170 -0
  205. package/src/web-components/interaction/bds-dialog.spec.ts +119 -0
  206. package/src/web-components/interaction/bds-dialog.ts +221 -0
  207. package/src/web-components/interaction/bds-drawer.spec.ts +113 -0
  208. package/src/web-components/interaction/bds-drawer.ts +315 -0
  209. package/src/web-components/interaction/bds-skip-link.spec.ts +42 -0
  210. package/src/web-components/interaction/bds-skip-link.ts +74 -0
  211. package/src/web-components/interaction/bds-tab-panel.spec.ts +32 -0
  212. package/src/web-components/interaction/bds-tab-panel.ts +38 -0
  213. package/src/web-components/interaction/bds-tab.spec.ts +71 -0
  214. package/src/web-components/interaction/bds-tab.ts +110 -0
  215. package/src/web-components/interaction/bds-tabs.spec.ts +120 -0
  216. package/src/web-components/interaction/bds-tabs.ts +152 -0
  217. package/src/web-components/interaction/bds-tooltip.spec.ts +49 -0
  218. package/src/web-components/interaction/bds-tooltip.ts +127 -0
  219. package/src/web-components/interaction/form/BdsCheckbox.mdx +39 -0
  220. package/src/web-components/interaction/form/BdsCheckbox.stories.tsx +73 -0
  221. package/src/web-components/interaction/form/BdsCombobox.mdx +52 -0
  222. package/src/web-components/interaction/form/BdsCombobox.stories.tsx +91 -0
  223. package/src/web-components/interaction/form/BdsFileInput.mdx +44 -0
  224. package/src/web-components/interaction/form/BdsFileInput.stories.tsx +84 -0
  225. package/src/web-components/interaction/form/BdsNumberInput.mdx +41 -0
  226. package/src/web-components/interaction/form/BdsNumberInput.stories.tsx +90 -0
  227. package/src/web-components/interaction/form/BdsRadio.mdx +41 -0
  228. package/src/web-components/interaction/form/BdsRadio.stories.tsx +90 -0
  229. package/src/web-components/interaction/form/BdsSegmentedControl.mdx +42 -0
  230. package/src/web-components/interaction/form/BdsSegmentedControl.stories.tsx +92 -0
  231. package/src/web-components/interaction/form/BdsSelect.mdx +38 -0
  232. package/src/web-components/interaction/form/BdsSelect.stories.tsx +93 -0
  233. package/src/web-components/interaction/form/BdsSlider.mdx +49 -0
  234. package/src/web-components/interaction/form/BdsSlider.stories.tsx +89 -0
  235. package/src/web-components/interaction/form/BdsSwitch.mdx +39 -0
  236. package/src/web-components/interaction/form/BdsSwitch.stories.tsx +73 -0
  237. package/src/web-components/interaction/form/BdsTextarea.mdx +41 -0
  238. package/src/web-components/interaction/form/BdsTextarea.stories.tsx +79 -0
  239. package/src/web-components/interaction/form/bds-checkbox.spec.ts +63 -0
  240. package/src/web-components/interaction/form/bds-checkbox.ts +166 -0
  241. package/src/web-components/interaction/form/bds-combobox.spec.ts +117 -0
  242. package/src/web-components/interaction/form/bds-combobox.ts +334 -0
  243. package/src/web-components/interaction/form/bds-file-input.spec.ts +58 -0
  244. package/src/web-components/interaction/form/bds-file-input.ts +209 -0
  245. package/src/web-components/interaction/form/bds-number-input.spec.ts +87 -0
  246. package/src/web-components/interaction/form/bds-number-input.ts +220 -0
  247. package/src/web-components/interaction/form/bds-radio.spec.ts +70 -0
  248. package/src/web-components/interaction/form/bds-radio.ts +151 -0
  249. package/src/web-components/interaction/form/bds-segmented-control.spec.ts +74 -0
  250. package/src/web-components/interaction/form/bds-segmented-control.ts +282 -0
  251. package/src/web-components/interaction/form/bds-select.spec.ts +74 -0
  252. package/src/web-components/interaction/form/bds-select.ts +188 -0
  253. package/src/web-components/interaction/form/bds-slider.spec.ts +41 -0
  254. package/src/web-components/interaction/form/bds-slider.ts +162 -0
  255. package/src/web-components/interaction/form/bds-switch.spec.ts +62 -0
  256. package/src/web-components/interaction/form/bds-switch.ts +165 -0
  257. package/src/web-components/interaction/form/bds-textarea.spec.ts +55 -0
  258. package/src/web-components/interaction/form/bds-textarea.ts +141 -0
  259. package/src/web-components/ui/BdsAvatar.mdx +67 -0
  260. package/src/web-components/ui/BdsAvatar.stories.tsx +62 -0
  261. package/src/web-components/ui/BdsBreadcrumb.mdx +63 -0
  262. package/src/web-components/ui/BdsBreadcrumb.stories.tsx +59 -0
  263. package/src/web-components/ui/BdsCard.mdx +83 -0
  264. package/src/web-components/ui/BdsCard.stories.tsx +90 -0
  265. package/src/web-components/ui/BdsDescriptionList.mdx +67 -0
  266. package/src/web-components/ui/BdsDescriptionList.stories.tsx +79 -0
  267. package/src/web-components/ui/BdsIconWrapper.mdx +70 -0
  268. package/src/web-components/ui/BdsIconWrapper.stories.tsx +76 -0
  269. package/src/web-components/ui/BdsLink.mdx +75 -0
  270. package/src/web-components/ui/BdsLink.stories.tsx +64 -0
  271. package/src/web-components/ui/BdsLoading.mdx +62 -0
  272. package/src/web-components/ui/BdsLoading.stories.tsx +37 -0
  273. package/src/web-components/ui/BdsNotificationBanner.mdx +90 -0
  274. package/src/web-components/ui/BdsNotificationBanner.stories.tsx +93 -0
  275. package/src/web-components/ui/BdsProgress.mdx +63 -0
  276. package/src/web-components/ui/BdsProgress.stories.tsx +70 -0
  277. package/src/web-components/ui/BdsProgressCircle.mdx +64 -0
  278. package/src/web-components/ui/BdsProgressCircle.stories.tsx +69 -0
  279. package/src/web-components/ui/BdsRating.mdx +61 -0
  280. package/src/web-components/ui/BdsRating.stories.tsx +39 -0
  281. package/src/web-components/ui/BdsSectionHeader.mdx +69 -0
  282. package/src/web-components/ui/BdsSectionHeader.stories.tsx +56 -0
  283. package/src/web-components/ui/BdsSeparator.mdx +63 -0
  284. package/src/web-components/ui/BdsSeparator.stories.tsx +47 -0
  285. package/src/web-components/ui/BdsSkeleton.mdx +67 -0
  286. package/src/web-components/ui/BdsSkeleton.stories.tsx +50 -0
  287. package/src/web-components/ui/BdsTypography.mdx +83 -0
  288. package/src/web-components/ui/BdsTypography.stories.tsx +51 -0
  289. package/src/web-components/ui/bds-alert.ts +1 -2
  290. package/src/web-components/ui/bds-avatar.spec.ts +75 -0
  291. package/src/web-components/ui/bds-avatar.ts +122 -0
  292. package/src/web-components/ui/bds-breadcrumb.spec.ts +55 -0
  293. package/src/web-components/ui/bds-breadcrumb.ts +114 -0
  294. package/src/web-components/ui/bds-card.spec.ts +70 -0
  295. package/src/web-components/ui/bds-card.ts +154 -0
  296. package/src/web-components/ui/bds-description-list.spec.ts +36 -0
  297. package/src/web-components/ui/bds-description-list.ts +79 -0
  298. package/src/web-components/ui/bds-icon-wrapper.spec.ts +21 -0
  299. package/src/web-components/ui/bds-icon-wrapper.ts +68 -0
  300. package/src/web-components/ui/bds-link.spec.ts +72 -0
  301. package/src/web-components/ui/bds-link.ts +138 -0
  302. package/src/web-components/ui/bds-loading.spec.ts +38 -0
  303. package/src/web-components/ui/bds-loading.ts +76 -0
  304. package/src/web-components/ui/bds-notification-banner.spec.ts +82 -0
  305. package/src/web-components/ui/bds-notification-banner.ts +184 -0
  306. package/src/web-components/ui/bds-progress-circle.spec.ts +58 -0
  307. package/src/web-components/ui/bds-progress-circle.ts +142 -0
  308. package/src/web-components/ui/bds-progress.spec.ts +66 -0
  309. package/src/web-components/ui/bds-progress.ts +127 -0
  310. package/src/web-components/ui/bds-rating.spec.ts +70 -0
  311. package/src/web-components/ui/bds-rating.ts +80 -0
  312. package/src/web-components/ui/bds-section-header.spec.ts +57 -0
  313. package/src/web-components/ui/bds-section-header.ts +96 -0
  314. package/src/web-components/ui/bds-separator.spec.ts +50 -0
  315. package/src/web-components/ui/bds-separator.ts +66 -0
  316. package/src/web-components/ui/bds-skeleton.spec.ts +22 -0
  317. package/src/web-components/ui/bds-skeleton.ts +55 -0
  318. package/src/web-components/ui/bds-typography.spec.ts +76 -0
  319. package/src/web-components/ui/bds-typography.ts +112 -0
  320. package/dist/web-components.d.ts +0 -304
@@ -0,0 +1,141 @@
1
+ import { LitElement, css, html } from 'lit';
2
+
3
+ /**
4
+ * `<bds-textarea>` — form-associated Textarea custom element.
5
+ *
6
+ * Wraps a native `<textarea>` for consistent styling while participating
7
+ * in HTML forms via the Form-Associated Custom Elements API.
8
+ *
9
+ * Attributes:
10
+ * name — form field name
11
+ * value — text value
12
+ * placeholder — placeholder text
13
+ * rows — number of visible rows (default: 4)
14
+ * required — boolean
15
+ * disabled — boolean
16
+ *
17
+ * Events:
18
+ * input — native input event
19
+ * change — native change event
20
+ *
21
+ * @example
22
+ * <bds-textarea name="message" placeholder="Enter message…" rows="6"></bds-textarea>
23
+ */
24
+ export class BdsTextarea extends LitElement {
25
+ static formAssociated = true;
26
+
27
+ static styles = css`
28
+ :host {
29
+ display: block;
30
+ }
31
+
32
+ :host([disabled]) {
33
+ opacity: 0.5;
34
+ pointer-events: none;
35
+ }
36
+
37
+ .textarea {
38
+ inline-size: 100%;
39
+ font-family: var(--bds-font_family--body);
40
+ font-size: var(--bds-font_size--body);
41
+ line-height: var(--bds-font_line-height--body);
42
+ padding: var(--bds-space_s);
43
+ border: none;
44
+ --bdc_color: currentcolor;
45
+ --bdc-outline_radius: var(--bds-border_radius--xs);
46
+
47
+ border-radius: var(--textarea_radius, var(--bdc-outline_radius));
48
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--textarea_shadow, var(--bdc-outline_shadow));
49
+ background-color: var(--textarea_color_bg, var(--bds-color_bg));
50
+ color: var(--textarea_color, var(--bds-color_on-bg));
51
+ resize: vertical;
52
+ min-block-size: calc(var(--bds-space_m) * 5);
53
+ box-sizing: border-box;
54
+ transition: --bdc_color var(--bds-animation_transition-duration) var(--bds-animation_easing),
55
+ background-color var(--bds-animation_transition-duration) var(--bds-animation_easing);
56
+ }
57
+
58
+ .textarea:focus {
59
+ --bdc_color: var(--bdc_color--focus);
60
+ }
61
+
62
+ .textarea:focus-visible {
63
+ outline: var(--bds-outline_default);
64
+ outline-offset: var(--bds-outline_offset);
65
+ }
66
+
67
+ .textarea:disabled {
68
+ opacity: 0.5;
69
+ cursor: not-allowed;
70
+ resize: none;
71
+ }
72
+ `;
73
+
74
+ static properties = {
75
+ name: { type: String, reflect: true },
76
+ value: { type: String },
77
+ placeholder: { type: String },
78
+ rows: { type: Number },
79
+ required: { type: Boolean, reflect: true },
80
+ disabled: { type: Boolean, reflect: true },
81
+ };
82
+
83
+ declare name: string;
84
+ declare value: string;
85
+ declare placeholder: string;
86
+ declare rows: number;
87
+ declare required: boolean;
88
+ declare disabled: boolean;
89
+
90
+ private _internals!: ElementInternals;
91
+
92
+ constructor() {
93
+ super();
94
+ this._internals = this.attachInternals();
95
+ this.name = '';
96
+ this.value = '';
97
+ this.placeholder = '';
98
+ this.rows = 4;
99
+ this.required = false;
100
+ this.disabled = false;
101
+ }
102
+
103
+ updated(changed: Map<string, unknown>) {
104
+ super.updated(changed);
105
+ if (changed.has('value')) {
106
+ this._internals.setFormValue?.(this.value || null);
107
+ }
108
+ }
109
+
110
+ formResetCallback() {
111
+ this.value = '';
112
+ this._internals.setFormValue?.(null);
113
+ }
114
+
115
+ private _handleInput(e: Event) {
116
+ this.value = (e.target as HTMLTextAreaElement).value;
117
+ }
118
+
119
+ render() {
120
+ return html`
121
+ <textarea
122
+ class="textarea"
123
+ name=${this.name}
124
+ .value=${this.value}
125
+ placeholder=${this.placeholder}
126
+ rows=${this.rows}
127
+ ?required=${this.required}
128
+ ?disabled=${this.disabled}
129
+ @input=${this._handleInput}
130
+ ></textarea>
131
+ `;
132
+ }
133
+ }
134
+
135
+ customElements.define('bds-textarea', BdsTextarea);
136
+
137
+ declare global {
138
+ interface HTMLElementTagNameMap {
139
+ 'bds-textarea': BdsTextarea;
140
+ }
141
+ }
@@ -0,0 +1,67 @@
1
+ import { Meta, Canvas, ArgTypes } from '@storybook/blocks';
2
+ import * as Stories from './BdsAvatar.stories';
3
+
4
+ <Meta of={Stories} />
5
+
6
+ # &lt;bds-avatar&gt;
7
+
8
+ Framework-agnostic Avatar custom element. Displays a profile image when `src` is set; falls back to initials derived from the `name` attribute.
9
+
10
+ > **Status: experimental** — API may change before stable release.
11
+
12
+ ## Installation
13
+
14
+ ```js
15
+ import '@boostdev/components/web-components';
16
+ ```
17
+
18
+ ## Examples
19
+
20
+ ### All sizes
21
+ <Canvas of={Stories.AllSizes} />
22
+
23
+ ### With initials
24
+ <Canvas of={Stories.Default} />
25
+
26
+ ### All variants
27
+ <Canvas of={Stories.AllVariants} />
28
+
29
+ ## Props
30
+
31
+ <ArgTypes of={Stories} />
32
+
33
+ ## Attributes
34
+
35
+ | Attribute | Type | Default | Description |
36
+ |-----------|------|---------|-------------|
37
+ | `name` | string | — | Full name; used to compute initials and as `aria-label` fallback |
38
+ | `src` | string | — | Image URL; when set, shows the image instead of initials |
39
+ | `alt` | string | — | Alt text for the image (defaults to `name`) |
40
+ | `size` | `"small" \| "medium" \| "large"` | `"medium"` | Avatar diameter (`2em` / `3em` / `4.5em`) |
41
+
42
+ ## CSS Custom Properties
43
+
44
+ | Property | Description |
45
+ |----------|-------------|
46
+ | `--avatar_size` | Override the diameter directly |
47
+ | `--avatar_bg` | Fallback background colour (defaults to `--bds-color_blue`) |
48
+ | `--avatar_text` | Initials text colour (defaults to `--bds-color_on-blue`) |
49
+
50
+ ## Usage in plain HTML
51
+
52
+ ```html
53
+ <!-- Initials fallback -->
54
+ <bds-avatar name="Jane Doe"></bds-avatar>
55
+
56
+ <!-- With image -->
57
+ <bds-avatar src="/path/to/photo.jpg" name="Jane Doe" alt="Jane Doe's avatar"></bds-avatar>
58
+
59
+ <!-- Large size -->
60
+ <bds-avatar name="John Smith" size="large"></bds-avatar>
61
+ ```
62
+
63
+ ## Accessibility
64
+
65
+ - When showing initials: renders `role="img"` with `aria-label` set to the `name` value
66
+ - When showing an image: renders a standard `<img>` with `alt` text
67
+ - Initials are hidden from assistive technology (`aria-hidden="true"`) — the label is on the container
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import '../index';
4
+
5
+ function BdsAvatar({
6
+ name,
7
+ src,
8
+ alt,
9
+ size,
10
+ }: {
11
+ name?: string;
12
+ src?: string;
13
+ alt?: string;
14
+ size?: 'small' | 'medium' | 'large';
15
+ }) {
16
+ return React.createElement('bds-avatar', { name, src, alt, size });
17
+ }
18
+
19
+ const meta = {
20
+ title: 'Web Components/UI/Avatar',
21
+ component: BdsAvatar,
22
+ tags: ['!stable', 'experimental'],
23
+ parameters: { layout: 'centered' },
24
+ argTypes: {
25
+ size: { control: 'select', options: ['small', 'medium', 'large'] },
26
+ },
27
+ } satisfies Meta<typeof BdsAvatar>;
28
+
29
+ export default meta;
30
+ type Story = StoryObj<typeof meta>;
31
+
32
+ export const Default: Story = { args: { name: 'Jane Doe' } };
33
+ export const SingleInitial: Story = { args: { name: 'Jane' } };
34
+ export const Small: Story = { args: { name: 'Jane Doe', size: 'small' } };
35
+ export const Medium: Story = { args: { name: 'Jane Doe', size: 'medium' } };
36
+ export const Large: Story = { args: { name: 'Jane Doe', size: 'large' } };
37
+
38
+ export const AllSizes: Story = {
39
+ render: () => (
40
+ <div style={{ display: 'flex', alignItems: 'center', gap: '24px' }}>
41
+ {(['small', 'medium', 'large'] as const).map(s => (
42
+ <div key={s} style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '8px' }}>
43
+ <BdsAvatar name="Jane Doe" size={s} />
44
+ <span style={{ fontSize: '0.75rem', color: '#888' }}>{s}</span>
45
+ </div>
46
+ ))}
47
+ </div>
48
+ ),
49
+ };
50
+
51
+ export const AllVariants: Story = {
52
+ render: () => (
53
+ <div style={{ display: 'flex', alignItems: 'center', gap: '16px', flexWrap: 'wrap' }}>
54
+ <BdsAvatar name="Jane Doe" />
55
+ <BdsAvatar name="John Smith" />
56
+ <BdsAvatar name="Alice" />
57
+ <BdsAvatar name="Bob" />
58
+ <BdsAvatar name="Jane Doe" size="small" />
59
+ <BdsAvatar name="Jane Doe" size="large" />
60
+ </div>
61
+ ),
62
+ };
@@ -0,0 +1,63 @@
1
+ import { Meta, Canvas, ArgTypes } from '@storybook/blocks';
2
+ import * as Stories from './BdsBreadcrumb.stories';
3
+
4
+ <Meta of={Stories} />
5
+
6
+ # &lt;bds-breadcrumb&gt;
7
+
8
+ Framework-agnostic Breadcrumb navigation custom element. Renders an ordered list of links showing the user's location in the site hierarchy.
9
+
10
+ > **Status: experimental** — API may change before stable release.
11
+
12
+ ## Installation
13
+
14
+ ```js
15
+ import '@boostdev/components/web-components';
16
+ ```
17
+
18
+ ## Examples
19
+
20
+ ### Default (3 levels)
21
+ <Canvas of={Stories.Default} />
22
+
23
+ ### Deep nested
24
+ <Canvas of={Stories.DeepNested} />
25
+
26
+ ### All variants
27
+ <Canvas of={Stories.AllVariants} />
28
+
29
+ ## Props
30
+
31
+ <ArgTypes of={Stories} />
32
+
33
+ ## Attributes
34
+
35
+ | Attribute | Type | Default | Description |
36
+ |-----------|------|---------|-------------|
37
+ | `items` | JSON string | `"[]"` | Array of `{ label: string, href?: string }` objects. The last item is the current page (no link). |
38
+
39
+ ## Usage in plain HTML
40
+
41
+ ```html
42
+ <bds-breadcrumb items='[
43
+ {"label":"Home","href":"/"},
44
+ {"label":"Products","href":"/products"},
45
+ {"label":"Detail"}
46
+ ]'></bds-breadcrumb>
47
+ ```
48
+
49
+ In JavaScript:
50
+ ```js
51
+ const crumb = document.querySelector('bds-breadcrumb');
52
+ crumb.items = [
53
+ { label: 'Home', href: '/' },
54
+ { label: 'Products', href: '/products' },
55
+ { label: 'Detail' },
56
+ ];
57
+ ```
58
+
59
+ ## Accessibility
60
+
61
+ - Renders as `<nav aria-label="Breadcrumb">` with an `<ol>` list
62
+ - The last item gets `aria-current="page"` — it is not a link
63
+ - Separators (`›`) are hidden from screen readers with `aria-hidden="true"`
@@ -0,0 +1,59 @@
1
+ import React from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import type { BreadcrumbItem } from './bds-breadcrumb';
4
+ import '../index';
5
+
6
+ function BdsBreadcrumb({ items = [] }: { items?: BreadcrumbItem[] }) {
7
+ return React.createElement('bds-breadcrumb', { items: JSON.stringify(items) });
8
+ }
9
+
10
+ const meta = {
11
+ title: 'Web Components/UI/Breadcrumb',
12
+ component: BdsBreadcrumb,
13
+ tags: ['!stable', 'experimental'],
14
+ parameters: { layout: 'padded' },
15
+ } satisfies Meta<typeof BdsBreadcrumb>;
16
+
17
+ export default meta;
18
+ type Story = StoryObj<typeof meta>;
19
+
20
+ export const Default: Story = {
21
+ args: {
22
+ items: [
23
+ { label: 'Home', href: '/' },
24
+ { label: 'Products', href: '/products' },
25
+ { label: 'Current page' },
26
+ ],
27
+ },
28
+ };
29
+
30
+ export const TwoLevels: Story = {
31
+ args: {
32
+ items: [
33
+ { label: 'Home', href: '/' },
34
+ { label: 'Current page' },
35
+ ],
36
+ },
37
+ };
38
+
39
+ export const DeepNested: Story = {
40
+ args: {
41
+ items: [
42
+ { label: 'Home', href: '/' },
43
+ { label: 'Category', href: '/category' },
44
+ { label: 'Subcategory', href: '/category/sub' },
45
+ { label: 'Section', href: '/category/sub/section' },
46
+ { label: 'Current page' },
47
+ ],
48
+ },
49
+ };
50
+
51
+ export const AllVariants: Story = {
52
+ render: () => (
53
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>
54
+ <BdsBreadcrumb items={[{ label: 'Home', href: '/' }, { label: 'Current' }]} />
55
+ <BdsBreadcrumb items={[{ label: 'Home', href: '/' }, { label: 'Products', href: '/products' }, { label: 'Detail' }]} />
56
+ <BdsBreadcrumb items={[{ label: 'Home', href: '/' }, { label: 'A', href: '/a' }, { label: 'B', href: '/a/b' }, { label: 'C', href: '/a/b/c' }, { label: 'Current' }]} />
57
+ </div>
58
+ ),
59
+ };
@@ -0,0 +1,83 @@
1
+ import { Meta, Canvas, ArgTypes } from '@storybook/blocks';
2
+ import * as Stories from './BdsCard.stories';
3
+
4
+ <Meta of={Stories} />
5
+
6
+ # &lt;bds-card&gt;
7
+
8
+ Framework-agnostic Card layout element. Groups related content in a contained surface with optional elevation or outline. Can be made clickable.
9
+
10
+ > **Status: experimental** — API may change before stable release.
11
+
12
+ ## Installation
13
+
14
+ ```js
15
+ import '@boostdev/components/web-components';
16
+ ```
17
+
18
+ ## Examples
19
+
20
+ ### All variants
21
+ <Canvas of={Stories.AllVariants} />
22
+
23
+ ### Clickable
24
+ <Canvas of={Stories.Interactive} />
25
+
26
+ ## Props
27
+
28
+ <ArgTypes of={Stories} />
29
+
30
+ ## Attributes
31
+
32
+ | Attribute | Type | Default | Description |
33
+ |-----------|------|---------|-------------|
34
+ | `variant` | `"default" \| "elevated" \| "outlined"` | `"default"` | Visual style |
35
+ | `padding` | `"none" \| "small" \| "medium" \| "large"` | `"medium"` | Internal spacing |
36
+ | `text-align` | `"start" \| "center" \| "end"` | `"start"` | Content alignment |
37
+ | `clickable` | boolean | `false` | Renders as `<button>`, adds hover/active effects |
38
+ | `aria-label` | string | — | Accessible label (required when `clickable` and the card content is not descriptive enough) |
39
+
40
+ ## Slots
41
+
42
+ | Slot | Description |
43
+ |------|-------------|
44
+ | `(default)` | Card content |
45
+
46
+ ## Events
47
+
48
+ | Event | Detail | Bubbles | Composed | Description |
49
+ |-------|--------|---------|----------|-------------|
50
+ | `bds-click` | — | Yes | Yes | Fired when a clickable card is activated |
51
+
52
+ ## CSS Custom Properties
53
+
54
+ | Property | Description |
55
+ |----------|-------------|
56
+ | `--card_color` | Card background colour |
57
+ | `--card_on-color` | Card text colour |
58
+
59
+ ## Usage in plain HTML
60
+
61
+ ```html
62
+ <bds-card variant="elevated" padding="large">
63
+ <h3>Card title</h3>
64
+ <p>Card body text.</p>
65
+ </bds-card>
66
+
67
+ <bds-card clickable aria-label="View product details">
68
+ <strong>Clickable card</strong>
69
+ </bds-card>
70
+ ```
71
+
72
+ Listen for click:
73
+ ```js
74
+ document.querySelector('bds-card[clickable]').addEventListener('bds-click', () => {
75
+ console.log('card clicked');
76
+ });
77
+ ```
78
+
79
+ ## Accessibility
80
+
81
+ - Non-clickable cards are `<div>` elements — they have no interactive role
82
+ - Clickable cards render as `<button>` with keyboard and pointer support
83
+ - Always provide `aria-label` on clickable cards when the text content alone is not descriptive
@@ -0,0 +1,90 @@
1
+ import React from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import type { CardVariant, CardPadding, CardTextAlign } from './bds-card';
4
+ import '../index';
5
+
6
+ function BdsCard({
7
+ variant,
8
+ padding,
9
+ textAlign,
10
+ clickable,
11
+ ariaLabel,
12
+ onClick,
13
+ children,
14
+ }: {
15
+ variant?: CardVariant;
16
+ padding?: CardPadding;
17
+ textAlign?: CardTextAlign;
18
+ clickable?: boolean;
19
+ ariaLabel?: string;
20
+ onClick?: () => void;
21
+ children?: React.ReactNode;
22
+ }) {
23
+ return React.createElement(
24
+ 'bds-card',
25
+ {
26
+ variant,
27
+ padding,
28
+ 'text-align': textAlign,
29
+ clickable: clickable || undefined,
30
+ 'aria-label': ariaLabel,
31
+ onbdsclick: onClick,
32
+ },
33
+ children,
34
+ );
35
+ }
36
+
37
+ const meta = {
38
+ title: 'Web Components/UI/Card',
39
+ component: BdsCard,
40
+ tags: ['!stable', 'experimental'],
41
+ parameters: { layout: 'centered' },
42
+ argTypes: {
43
+ variant: { control: 'select', options: ['default', 'elevated', 'outlined'] },
44
+ padding: { control: 'select', options: ['none', 'small', 'medium', 'large'] },
45
+ textAlign: { control: 'select', options: ['start', 'center', 'end'] },
46
+ },
47
+ } satisfies Meta<typeof BdsCard>;
48
+
49
+ export default meta;
50
+ type Story = StoryObj<typeof meta>;
51
+
52
+ const cardContent = React.createElement(
53
+ 'div',
54
+ null,
55
+ React.createElement('strong', null, 'Card title'),
56
+ React.createElement('p', { style: { margin: '8px 0 0' } }, 'Card body with some descriptive text.'),
57
+ );
58
+
59
+ export const Default: Story = { args: { variant: 'default', children: cardContent } };
60
+ export const Elevated: Story = { args: { variant: 'elevated', children: cardContent } };
61
+ export const Outlined: Story = { args: { variant: 'outlined', children: cardContent } };
62
+ export const Clickable: Story = { args: { variant: 'default', clickable: true, ariaLabel: 'Open details', children: cardContent } };
63
+
64
+ export const AllVariants: Story = {
65
+ render: () => (
66
+ <div style={{ display: 'flex', gap: '16px', flexWrap: 'wrap' }}>
67
+ {(['default', 'elevated', 'outlined'] as const).map(v => (
68
+ <BdsCard key={v} variant={v} style={{ width: '200px' } as React.CSSProperties}>
69
+ <strong>{v}</strong>
70
+ <p style={{ margin: '8px 0 0' }}>Card variant</p>
71
+ </BdsCard>
72
+ ))}
73
+ </div>
74
+ ),
75
+ };
76
+
77
+ export const Interactive: Story = {
78
+ render: () => {
79
+ const [count, setCount] = React.useState(0);
80
+ return (
81
+ <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '16px' }}>
82
+ <BdsCard variant="elevated" clickable ariaLabel="Click me" onClick={() => setCount(c => c + 1)}>
83
+ <strong>Clickable card</strong>
84
+ <p style={{ margin: '8px 0 0' }}>Click to increment counter</p>
85
+ </BdsCard>
86
+ <p style={{ margin: 0 }}>Clicked {count} times</p>
87
+ </div>
88
+ );
89
+ },
90
+ };
@@ -0,0 +1,67 @@
1
+ import { Meta, Canvas, ArgTypes } from '@storybook/blocks';
2
+ import * as Stories from './BdsDescriptionList.stories';
3
+
4
+ <Meta of={Stories} />
5
+
6
+ # &lt;bds-description-list&gt;
7
+
8
+ Framework-agnostic Description List custom element. Wraps a semantic `<dl>` element for rendering key–value pairs. Consumers provide `<dt>` and `<dd>` elements as slotted children.
9
+
10
+ > **Status: experimental** — API may change before stable release.
11
+
12
+ ## Installation
13
+
14
+ ```js
15
+ import '@boostdev/components/web-components';
16
+ ```
17
+
18
+ ## Examples
19
+
20
+ ### All layouts
21
+ <Canvas of={Stories.AllVariants} />
22
+
23
+ ### Stacked
24
+ <Canvas of={Stories.Stacked} />
25
+
26
+ ### Inline
27
+ <Canvas of={Stories.Inline} />
28
+
29
+ ## Props
30
+
31
+ <ArgTypes of={Stories} />
32
+
33
+ ## Attributes
34
+
35
+ | Attribute | Type | Default | Description |
36
+ |-----------|------|---------|-------------|
37
+ | `layout` | `"stacked" \| "inline"` | `"stacked"` | Arrangement of terms and details |
38
+
39
+ ## Slots
40
+
41
+ | Slot | Description |
42
+ |------|-------------|
43
+ | `(default)` | `<dt>` and `<dd>` element pairs |
44
+
45
+ ## Usage in plain HTML
46
+
47
+ ```html
48
+ <bds-description-list>
49
+ <dt>Name</dt>
50
+ <dd>Jane Doe</dd>
51
+ <dt>Email</dt>
52
+ <dd>jane@example.com</dd>
53
+ </bds-description-list>
54
+
55
+ <bds-description-list layout="inline">
56
+ <dt>Status</dt>
57
+ <dd>Active</dd>
58
+ <dt>Role</dt>
59
+ <dd>Designer</dd>
60
+ </bds-description-list>
61
+ ```
62
+
63
+ ## Accessibility
64
+
65
+ - Renders a semantic `<dl>` element — screen readers announce it as a description list
66
+ - Ensure `<dt>` and `<dd>` elements are properly paired
67
+ - The `::slotted(dt)` and `::slotted(dd)` CSS selectors apply the visual styling