@brandsync/wc 1.19.0 → 1.20.1

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 (883) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/REFERENCE.md +266 -11
  3. package/custom-elements.json +11415 -6969
  4. package/dist/brandsync-wc/brandsync-wc.css +1 -1
  5. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  6. package/dist/brandsync-wc/index.esm.js +1 -1
  7. package/dist/brandsync-wc/p-040d4755.entry.js +1 -0
  8. package/dist/brandsync-wc/{p-a688a7ca.entry.js → p-08a5e178.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-a50c5e68.entry.js → p-08d08dc9.entry.js} +1 -1
  10. package/dist/brandsync-wc/{p-568de1b0.entry.js → p-0ebb60a8.entry.js} +1 -1
  11. package/dist/brandsync-wc/{p-10b8937f.entry.js → p-11fefb5a.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-313ec145.entry.js → p-13d98ec3.entry.js} +1 -1
  13. package/dist/brandsync-wc/p-14719554.entry.js +1 -0
  14. package/dist/brandsync-wc/{p-42fcf134.entry.js → p-18cfec13.entry.js} +1 -1
  15. package/dist/brandsync-wc/{p-9751a12d.entry.js → p-1a549f9a.entry.js} +1 -1
  16. package/dist/brandsync-wc/{p-a28ef52e.entry.js → p-1bf8a54a.entry.js} +1 -1
  17. package/dist/brandsync-wc/{p-5371b31c.entry.js → p-1ce4395a.entry.js} +1 -1
  18. package/dist/brandsync-wc/{p-de0dfd1c.entry.js → p-1daf48b1.entry.js} +1 -1
  19. package/dist/brandsync-wc/{p-86f04e9e.entry.js → p-20dd8b76.entry.js} +1 -1
  20. package/dist/brandsync-wc/{p-391504ab.entry.js → p-2210c680.entry.js} +1 -1
  21. package/dist/brandsync-wc/{p-f10b19a8.entry.js → p-23367a4d.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-02314404.entry.js → p-238be384.entry.js} +1 -1
  23. package/dist/brandsync-wc/p-23affb5d.entry.js +1 -0
  24. package/dist/brandsync-wc/p-23b3958e.entry.js +1 -0
  25. package/dist/brandsync-wc/{p-03ad83a3.entry.js → p-2621b1b2.entry.js} +1 -1
  26. package/dist/brandsync-wc/p-28723df1.entry.js +1 -0
  27. package/dist/brandsync-wc/{p-d484e976.entry.js → p-28a34097.entry.js} +1 -1
  28. package/dist/brandsync-wc/{p-129a4de7.entry.js → p-2a96ce61.entry.js} +1 -1
  29. package/dist/brandsync-wc/{p-7160a72e.entry.js → p-2f58b161.entry.js} +1 -1
  30. package/dist/brandsync-wc/p-319b7baa.entry.js +1 -0
  31. package/dist/brandsync-wc/{p-8a606b38.entry.js → p-32004fb3.entry.js} +1 -1
  32. package/dist/brandsync-wc/{p-78c94cfe.entry.js → p-32157c7a.entry.js} +1 -1
  33. package/dist/brandsync-wc/{p-ab99b8c3.entry.js → p-32d83763.entry.js} +1 -1
  34. package/dist/brandsync-wc/{p-8b21f623.entry.js → p-338b5e39.entry.js} +1 -1
  35. package/dist/brandsync-wc/p-39c50762.entry.js +1 -0
  36. package/dist/brandsync-wc/p-3f6be3f7.entry.js +1 -0
  37. package/dist/brandsync-wc/p-409cf56b.entry.js +1 -0
  38. package/dist/brandsync-wc/{p-8e107d7a.entry.js → p-452f6c13.entry.js} +1 -1
  39. package/dist/brandsync-wc/{p-527fd08d.entry.js → p-47fc5f29.entry.js} +1 -1
  40. package/dist/brandsync-wc/p-4810bcc8.entry.js +1 -0
  41. package/dist/brandsync-wc/p-484a6546.entry.js +1 -0
  42. package/dist/brandsync-wc/p-4ae7b8b9.entry.js +1 -0
  43. package/dist/brandsync-wc/p-4d6f2fec.entry.js +1 -0
  44. package/dist/brandsync-wc/{p-4ffcf41a.entry.js → p-4f19e8d8.entry.js} +1 -1
  45. package/dist/brandsync-wc/p-50a154b8.entry.js +1 -0
  46. package/dist/brandsync-wc/{p-26e0ab15.entry.js → p-50ac6889.entry.js} +1 -1
  47. package/dist/brandsync-wc/p-520b277a.entry.js +1 -0
  48. package/dist/brandsync-wc/p-53b1c545.entry.js +1 -0
  49. package/dist/brandsync-wc/{p-90d8d45f.entry.js → p-548b96f7.entry.js} +1 -1
  50. package/dist/brandsync-wc/{p-144b6ac8.entry.js → p-57ed5ac6.entry.js} +1 -1
  51. package/dist/brandsync-wc/{p-028d3244.entry.js → p-587be2c6.entry.js} +1 -1
  52. package/dist/brandsync-wc/p-5a35d573.entry.js +1 -0
  53. package/dist/brandsync-wc/p-5b48a6c7.entry.js +1 -0
  54. package/dist/brandsync-wc/{p-4d1ee16e.entry.js → p-5ea899c4.entry.js} +1 -1
  55. package/dist/brandsync-wc/p-60636c6c.entry.js +1 -0
  56. package/dist/brandsync-wc/p-6096900b.entry.js +1 -0
  57. package/dist/brandsync-wc/{p-fc76031e.entry.js → p-630d41ab.entry.js} +1 -1
  58. package/dist/brandsync-wc/p-66f1ca2e.entry.js +1 -0
  59. package/dist/brandsync-wc/p-69489f45.entry.js +1 -0
  60. package/dist/brandsync-wc/p-6adc9c4f.entry.js +1 -0
  61. package/dist/brandsync-wc/p-6ae75ed0.entry.js +1 -0
  62. package/dist/brandsync-wc/p-6b1ba5ec.entry.js +1 -0
  63. package/dist/brandsync-wc/p-6bdd9ef9.entry.js +1 -0
  64. package/dist/brandsync-wc/{p-dc2ea372.entry.js → p-6db03e96.entry.js} +1 -1
  65. package/dist/brandsync-wc/{p-64e19200.entry.js → p-70924681.entry.js} +1 -1
  66. package/dist/brandsync-wc/{p-590deea0.entry.js → p-78e4dd14.entry.js} +1 -1
  67. package/dist/brandsync-wc/{p-f96f45ae.entry.js → p-806bb471.entry.js} +1 -1
  68. package/dist/brandsync-wc/{p-8a18864a.entry.js → p-89dbb3c8.entry.js} +1 -1
  69. package/dist/brandsync-wc/{p-ebcd105d.entry.js → p-8a4d64fd.entry.js} +1 -1
  70. package/dist/brandsync-wc/p-8c83cc99.entry.js +1 -0
  71. package/dist/brandsync-wc/p-8ccd1735.entry.js +1 -0
  72. package/dist/brandsync-wc/p-8d674f11.entry.js +1 -0
  73. package/dist/brandsync-wc/{p-8d1ad4b0.entry.js → p-90442341.entry.js} +1 -1
  74. package/dist/brandsync-wc/{p-a2bfbf02.entry.js → p-9e93b482.entry.js} +1 -1
  75. package/dist/brandsync-wc/{p-020cb767.entry.js → p-9f852c8b.entry.js} +1 -1
  76. package/dist/brandsync-wc/p-Vo0zbGRB.js +1 -0
  77. package/dist/brandsync-wc/p-a1d34ff3.entry.js +1 -0
  78. package/dist/brandsync-wc/{p-15c6f0f3.entry.js → p-a3c7b4e7.entry.js} +1 -1
  79. package/dist/brandsync-wc/{p-9ba500f1.entry.js → p-a6cbb6c6.entry.js} +1 -1
  80. package/dist/brandsync-wc/{p-70a5897b.entry.js → p-a86560e6.entry.js} +1 -1
  81. package/dist/brandsync-wc/p-aa70e80c.entry.js +1 -0
  82. package/dist/brandsync-wc/p-aa99b1f8.entry.js +1 -0
  83. package/dist/brandsync-wc/{p-0dff9822.entry.js → p-b0f4cbca.entry.js} +1 -1
  84. package/dist/brandsync-wc/{p-3c6980b9.entry.js → p-b1663378.entry.js} +1 -1
  85. package/dist/brandsync-wc/{p-25914efc.entry.js → p-b1b14615.entry.js} +1 -1
  86. package/dist/brandsync-wc/p-b6dc9234.entry.js +1 -0
  87. package/dist/brandsync-wc/{p-2389f473.entry.js → p-b7545d9b.entry.js} +1 -1
  88. package/dist/brandsync-wc/{p-d80eecf4.entry.js → p-baca1abf.entry.js} +1 -1
  89. package/dist/brandsync-wc/{p-a92c0f06.entry.js → p-bfdd135b.entry.js} +1 -1
  90. package/dist/brandsync-wc/p-c0e5db3d.entry.js +1 -0
  91. package/dist/brandsync-wc/{p-89fa7567.entry.js → p-c23e274a.entry.js} +1 -1
  92. package/dist/brandsync-wc/{p-4928c4ad.entry.js → p-c39e6be9.entry.js} +1 -1
  93. package/dist/brandsync-wc/{p-30736034.entry.js → p-c6c15b9f.entry.js} +1 -1
  94. package/dist/brandsync-wc/p-ca8a1e51.entry.js +1 -0
  95. package/dist/brandsync-wc/{p-9fa7bd83.entry.js → p-d263deec.entry.js} +1 -1
  96. package/dist/brandsync-wc/p-d555984e.entry.js +1 -0
  97. package/dist/brandsync-wc/p-d6600c7c.entry.js +1 -0
  98. package/dist/brandsync-wc/{p-e5235e76.entry.js → p-d67840f5.entry.js} +1 -1
  99. package/dist/brandsync-wc/p-d8a299a9.entry.js +1 -0
  100. package/dist/brandsync-wc/{p-8ac86d16.entry.js → p-dc59a735.entry.js} +1 -1
  101. package/dist/brandsync-wc/{p-f4796801.entry.js → p-dd3499ab.entry.js} +1 -1
  102. package/dist/brandsync-wc/p-debc308d.entry.js +1 -0
  103. package/dist/brandsync-wc/{p-c01e231e.entry.js → p-e18cb639.entry.js} +1 -1
  104. package/dist/brandsync-wc/{p-7bff3aa5.entry.js → p-e18e45bc.entry.js} +1 -1
  105. package/dist/brandsync-wc/{p-4c51da66.entry.js → p-e2268c96.entry.js} +1 -1
  106. package/dist/brandsync-wc/p-e4033ebc.entry.js +1 -0
  107. package/dist/brandsync-wc/p-e8027825.entry.js +1 -0
  108. package/dist/brandsync-wc/{p-7c741b8d.entry.js → p-eb1b1497.entry.js} +1 -1
  109. package/dist/brandsync-wc/{p-9868ee72.entry.js → p-eb4ad606.entry.js} +1 -1
  110. package/dist/brandsync-wc/p-ecb1a27d.entry.js +1 -0
  111. package/dist/brandsync-wc/p-f229f59a.entry.js +1 -0
  112. package/dist/brandsync-wc/{p-0819add7.entry.js → p-f22d2db8.entry.js} +1 -1
  113. package/dist/brandsync-wc/{p-feb46fa6.entry.js → p-f71d7582.entry.js} +1 -1
  114. package/dist/brandsync-wc/p-fa894893.entry.js +1 -0
  115. package/dist/brandsync-wc/p-fbd204b6.entry.js +1 -0
  116. package/dist/brandsync-wc/{p-21e5d4d6.entry.js → p-fc7df528.entry.js} +1 -1
  117. package/dist/brandsync-wc/{p-27663faf.entry.js → p-fe6f71da.entry.js} +1 -1
  118. package/dist/brandsync-wc/p-ff85a9d8.entry.js +1 -0
  119. package/dist/brandsync-wc/p-wz7B473u.js +3 -0
  120. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  121. package/dist/cjs/bs-accordion-group.cjs.entry.js +2 -2
  122. package/dist/cjs/bs-accordion.cjs.entry.js +2 -2
  123. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +2 -2
  124. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  125. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  126. package/dist/cjs/bs-app-recent-item_3.cjs.entry.js +5 -5
  127. package/dist/cjs/bs-app-shell.cjs.entry.js +2 -2
  128. package/dist/cjs/bs-app-switcher.cjs.entry.js +1 -1
  129. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  130. package/dist/cjs/bs-attachment.cjs.entry.js +2 -2
  131. package/dist/cjs/bs-avatar.cjs.entry.js +3 -10
  132. package/dist/cjs/bs-badge.cjs.entry.js +2 -2
  133. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +1 -1
  134. package/dist/cjs/bs-breadcrumb.cjs.entry.js +3 -3
  135. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +10 -2
  136. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  137. package/dist/cjs/bs-button_2.cjs.entry.js +17 -4
  138. package/dist/cjs/bs-card.cjs.entry.js +44 -3
  139. package/dist/cjs/bs-carousel.cjs.entry.js +2 -2
  140. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +3 -7
  141. package/dist/cjs/bs-chatbot-header.cjs.entry.js +3 -7
  142. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  143. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  144. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +3 -3
  145. package/dist/cjs/bs-checkbox-group.cjs.entry.js +80 -0
  146. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +2 -2
  147. package/dist/cjs/bs-checkbox.cjs.entry.js +1 -1
  148. package/dist/cjs/bs-chip-filter.cjs.entry.js +2 -2
  149. package/dist/cjs/bs-chip-informative.cjs.entry.js +2 -2
  150. package/dist/cjs/bs-chip-input.cjs.entry.js +2 -2
  151. package/dist/cjs/bs-citation-preview.cjs.entry.js +2 -2
  152. package/dist/cjs/bs-code-block.cjs.entry.js +75 -0
  153. package/dist/cjs/bs-command-palette.cjs.entry.js +2 -2
  154. package/dist/cjs/bs-compact-menu-block_2.cjs.entry.js +5 -5
  155. package/dist/cjs/bs-company-switcher.cjs.entry.js +3 -3
  156. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +2 -2
  157. package/dist/cjs/bs-composer.cjs.entry.js +6 -4
  158. package/dist/cjs/bs-container.cjs.entry.js +2 -2
  159. package/dist/cjs/bs-cookie-consent.cjs.entry.js +1 -1
  160. package/dist/cjs/bs-data-table.cjs.entry.js +8 -5
  161. package/dist/cjs/bs-datepicker.cjs.entry.js +2 -2
  162. package/dist/cjs/bs-description-item.cjs.entry.js +23 -0
  163. package/dist/cjs/bs-description-list.cjs.entry.js +40 -0
  164. package/dist/cjs/bs-dialog.cjs.entry.js +1 -1
  165. package/dist/cjs/bs-divider.cjs.entry.js +2 -2
  166. package/dist/cjs/bs-dropdown.cjs.entry.js +96 -0
  167. package/dist/cjs/bs-empty-state.cjs.entry.js +7 -3
  168. package/dist/cjs/bs-error-page.cjs.entry.js +2 -2
  169. package/dist/cjs/bs-file-upload-item.cjs.entry.js +2 -2
  170. package/dist/cjs/bs-file-upload.cjs.entry.js +2 -2
  171. package/dist/cjs/bs-global-search.cjs.entry.js +3 -3
  172. package/dist/cjs/bs-grid.cjs.entry.js +3 -3
  173. package/dist/cjs/bs-heading.cjs.entry.js +28 -0
  174. package/dist/cjs/bs-icon-button.cjs.entry.js +10 -3
  175. package/dist/cjs/bs-icon-tile.cjs.entry.js +3 -3
  176. package/dist/cjs/bs-icon.cjs.entry.js +35 -0
  177. package/dist/cjs/bs-inline-tab.cjs.entry.js +3 -3
  178. package/dist/cjs/bs-input_4.cjs.entry.js +794 -0
  179. package/dist/cjs/bs-key-caps.cjs.entry.js +2 -2
  180. package/dist/cjs/bs-key.cjs.entry.js +2 -2
  181. package/dist/cjs/bs-keyboard-shortcuts.cjs.entry.js +3 -3
  182. package/dist/cjs/bs-link.cjs.entry.js +52 -0
  183. package/dist/cjs/bs-list-item.cjs.entry.js +68 -0
  184. package/dist/cjs/bs-list.cjs.entry.js +9 -3
  185. package/dist/cjs/bs-logo.cjs.entry.js +1 -1
  186. package/dist/cjs/bs-mega-menu.cjs.entry.js +2 -2
  187. package/dist/cjs/bs-message-list.cjs.entry.js +2 -2
  188. package/dist/cjs/bs-message.cjs.entry.js +2 -2
  189. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +26 -5
  190. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +4 -4
  191. package/dist/cjs/bs-navigation-header.cjs.entry.js +4 -4
  192. package/dist/cjs/bs-onboarding-checklist.cjs.entry.js +1 -1
  193. package/dist/cjs/bs-page-header.cjs.entry.js +2 -2
  194. package/dist/cjs/bs-pagination.cjs.entry.js +2 -2
  195. package/dist/cjs/bs-popover.cjs.entry.js +223 -0
  196. package/dist/cjs/bs-presence.cjs.entry.js +2 -2
  197. package/dist/cjs/bs-product-tour.cjs.entry.js +1 -1
  198. package/dist/cjs/bs-progress-linear.cjs.entry.js +4 -4
  199. package/dist/cjs/bs-progress.cjs.entry.js +3 -3
  200. package/dist/cjs/bs-qr-code.cjs.entry.js +2 -2
  201. package/dist/cjs/bs-radio-group.cjs.entry.js +90 -0
  202. package/dist/cjs/bs-radio.cjs.entry.js +6 -2
  203. package/dist/cjs/bs-search-item.cjs.entry.js +2 -2
  204. package/dist/cjs/bs-select.cjs.entry.js +234 -0
  205. package/dist/cjs/bs-session-timeout.cjs.entry.js +2 -2
  206. package/dist/cjs/bs-shortcut-row.cjs.entry.js +2 -2
  207. package/dist/cjs/bs-side-panel.cjs.entry.js +1 -1
  208. package/dist/cjs/bs-skip-link.cjs.entry.js +52 -0
  209. package/dist/cjs/bs-slider.cjs.entry.js +3 -3
  210. package/dist/cjs/bs-snackbar.cjs.entry.js +3 -3
  211. package/dist/cjs/bs-source-link.cjs.entry.js +4 -4
  212. package/dist/cjs/bs-split-pane.cjs.entry.js +2 -2
  213. package/dist/cjs/bs-stack.cjs.entry.js +2 -2
  214. package/dist/cjs/bs-stat.cjs.entry.js +53 -0
  215. package/dist/cjs/bs-stepper-step.cjs.entry.js +2 -2
  216. package/dist/cjs/bs-stepper.cjs.entry.js +2 -2
  217. package/dist/cjs/bs-switch.cjs.entry.js +2 -2
  218. package/dist/cjs/bs-tab_3.cjs.entry.js +16 -9
  219. package/dist/cjs/bs-table-of-contents.cjs.entry.js +171 -0
  220. package/dist/cjs/bs-tag.cjs.entry.js +51 -0
  221. package/dist/cjs/bs-text.cjs.entry.js +24 -0
  222. package/dist/cjs/bs-timepicker.cjs.entry.js +3 -3
  223. package/dist/cjs/bs-toast.cjs.entry.js +2 -2
  224. package/dist/cjs/bs-toggle-button-group.cjs.entry.js +108 -0
  225. package/dist/cjs/bs-toggle-button.cjs.entry.js +57 -0
  226. package/dist/cjs/bs-toolbar.cjs.entry.js +195 -0
  227. package/dist/cjs/bs-tooltip-trigger.cjs.entry.js +2 -2
  228. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  229. package/dist/cjs/bs-tree-item.cjs.entry.js +3 -3
  230. package/dist/cjs/bs-tree.cjs.entry.js +2 -2
  231. package/dist/cjs/bs-whats-new.cjs.entry.js +1 -1
  232. package/dist/cjs/icon-registry-DWYCqjKw.js +64 -0
  233. package/dist/cjs/{index-BYfMRtlW.js → index-BFxk-bY6.js} +1 -1
  234. package/dist/cjs/index.cjs.js +4 -0
  235. package/dist/cjs/loader.cjs.js +2 -2
  236. package/dist/collection/collection-manifest.json +19 -1
  237. package/dist/collection/components/bs-a11y.cmp.test.js +9 -0
  238. package/dist/collection/components/bs-accordion/bs-accordion.js +1 -1
  239. package/dist/collection/components/bs-accordion-group/bs-accordion-group.js +1 -1
  240. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  241. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  242. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  243. package/dist/collection/components/bs-app-recent-item/bs-app-recent-item.js +3 -3
  244. package/dist/collection/components/bs-app-shell/bs-app-shell.js +1 -1
  245. package/dist/collection/components/bs-attachment/bs-attachment.cmp.test.js +10 -0
  246. package/dist/collection/components/bs-attachment/bs-attachment.css +6 -6
  247. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  248. package/dist/collection/components/bs-avatar/bs-avatar.cmp.test.js +11 -1
  249. package/dist/collection/components/bs-avatar/bs-avatar.css +9 -4
  250. package/dist/collection/components/bs-avatar/bs-avatar.js +1 -8
  251. package/dist/collection/components/bs-badge/bs-badge.css +4 -1
  252. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.js +13 -0
  253. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.css +8 -0
  254. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +1 -1
  255. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +26 -1
  256. package/dist/collection/components/bs-button/bs-button/bs-button.cmp.test.js +31 -2
  257. package/dist/collection/components/bs-button/bs-button/bs-button.css +16 -18
  258. package/dist/collection/components/bs-button/bs-button/bs-button.js +102 -7
  259. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.js +43 -0
  260. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.css +32 -2
  261. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +68 -1
  262. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  263. package/dist/collection/components/bs-card/bs-card.cmp.test.js +78 -0
  264. package/dist/collection/components/bs-card/bs-card.css +75 -0
  265. package/dist/collection/components/bs-card/bs-card.js +200 -1
  266. package/dist/collection/components/bs-card/bs-card.stories.js +32 -0
  267. package/dist/collection/components/bs-carousel/bs-carousel.js +2 -2
  268. package/dist/collection/components/bs-carousel/bs-carousel.stories.js +9 -5
  269. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.cmp.test.js +8 -0
  270. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.css +11 -8
  271. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -5
  272. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.css +2 -3
  273. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -5
  274. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  275. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  276. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.cmp.test.js +18 -0
  277. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.css +8 -2
  278. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +4 -1
  279. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
  280. package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.cmp.test.js +58 -0
  281. package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.css +65 -0
  282. package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.js +254 -0
  283. package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.stories.js +34 -0
  284. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.js +1 -1
  285. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.js +1 -1
  286. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +1 -1
  287. package/dist/collection/components/bs-citation-preview/bs-citation-preview.js +1 -1
  288. package/dist/collection/components/bs-code-block/bs-code-block.cmp.test.js +78 -0
  289. package/dist/collection/components/bs-code-block/bs-code-block.css +132 -0
  290. package/dist/collection/components/bs-code-block/bs-code-block.js +317 -0
  291. package/dist/collection/components/bs-code-block/bs-code-block.stories.js +56 -0
  292. package/dist/collection/components/bs-command-palette/bs-command-palette.js +1 -1
  293. package/dist/collection/components/bs-compact-menu-block/bs-compact-menu-block.js +1 -1
  294. package/dist/collection/components/bs-company-switcher/bs-company-switcher.cmp.test.js +13 -7
  295. package/dist/collection/components/bs-company-switcher/bs-company-switcher.js +2 -2
  296. package/dist/collection/components/bs-composer/bs-composer.cmp.test.js +29 -0
  297. package/dist/collection/components/bs-composer/bs-composer.css +2 -1
  298. package/dist/collection/components/bs-composer/bs-composer.js +4 -2
  299. package/dist/collection/components/bs-composer/bs-composer.stories.js +1 -2
  300. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -1
  301. package/dist/collection/components/bs-container/bs-container.js +1 -1
  302. package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.cmp.test.js +1 -1
  303. package/dist/collection/components/bs-data-table/bs-data-table.cmp.test.js +39 -0
  304. package/dist/collection/components/bs-data-table/bs-data-table.css +12 -0
  305. package/dist/collection/components/bs-data-table/bs-data-table.js +34 -3
  306. package/dist/collection/components/bs-data-table/bs-data-table.stories.js +1 -1
  307. package/dist/collection/components/bs-datepicker/bs-datepicker.js +1 -1
  308. package/dist/collection/components/bs-description-item/bs-description-item.cmp.test.js +14 -0
  309. package/dist/collection/components/bs-description-item/bs-description-item.css +47 -0
  310. package/dist/collection/components/bs-description-item/bs-description-item.js +111 -0
  311. package/dist/collection/components/bs-description-list/bs-description-list.cmp.test.js +58 -0
  312. package/dist/collection/components/bs-description-list/bs-description-list.css +15 -0
  313. package/dist/collection/components/bs-description-list/bs-description-list.js +127 -0
  314. package/dist/collection/components/bs-description-list/bs-description-list.stories.js +34 -0
  315. package/dist/collection/components/bs-divider/bs-divider.js +1 -1
  316. package/dist/collection/components/bs-dropdown/bs-dropdown.cmp.test.js +133 -0
  317. package/dist/collection/components/bs-dropdown/bs-dropdown.css +3 -0
  318. package/dist/collection/components/bs-dropdown/bs-dropdown.js +218 -0
  319. package/dist/collection/components/bs-dropdown/bs-dropdown.stories.js +42 -0
  320. package/dist/collection/components/bs-empty-state/bs-empty-state.cmp.test.js +15 -0
  321. package/dist/collection/components/bs-empty-state/bs-empty-state.css +30 -1
  322. package/dist/collection/components/bs-empty-state/bs-empty-state.js +29 -1
  323. package/dist/collection/components/bs-empty-state/bs-empty-state.stories.js +24 -1
  324. package/dist/collection/components/bs-error-page/bs-error-page.js +1 -1
  325. package/dist/collection/components/bs-file-upload/bs-file-upload.js +1 -1
  326. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +1 -1
  327. package/dist/collection/components/bs-global-search/bs-global-search.js +2 -2
  328. package/dist/collection/components/bs-grid/bs-grid.js +2 -2
  329. package/dist/collection/components/bs-heading/bs-heading.cmp.test.js +38 -0
  330. package/dist/collection/components/bs-heading/bs-heading.css +42 -0
  331. package/dist/collection/components/bs-heading/bs-heading.js +154 -0
  332. package/dist/collection/components/bs-heading/bs-heading.stories.js +28 -0
  333. package/dist/collection/components/bs-icon/bs-icon.cmp.test.js +78 -0
  334. package/dist/collection/components/bs-icon/bs-icon.css +47 -0
  335. package/dist/collection/components/bs-icon/bs-icon.js +155 -0
  336. package/dist/collection/components/bs-icon/bs-icon.stories.js +52 -0
  337. package/dist/collection/components/bs-icon/icon-registry.js +58 -0
  338. package/dist/collection/components/bs-icon-tile/bs-icon-tile.js +2 -2
  339. package/dist/collection/components/bs-input/bs-input.cmp.test.js +431 -45
  340. package/dist/collection/components/bs-input/bs-input.css +196 -12
  341. package/dist/collection/components/bs-input/bs-input.js +565 -46
  342. package/dist/collection/components/bs-input/bs-input.stories.js +32 -4
  343. package/dist/collection/components/bs-key/bs-key.js +1 -1
  344. package/dist/collection/components/bs-key-caps/bs-key-caps.js +1 -1
  345. package/dist/collection/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.js +2 -2
  346. package/dist/collection/components/bs-link/bs-link.cmp.test.js +52 -0
  347. package/dist/collection/components/bs-link/bs-link.css +129 -0
  348. package/dist/collection/components/bs-link/bs-link.js +257 -0
  349. package/dist/collection/components/bs-link/bs-link.stories.js +31 -0
  350. package/dist/collection/components/bs-list/bs-list.cmp.test.js +23 -0
  351. package/dist/collection/components/bs-list/bs-list.js +32 -2
  352. package/dist/collection/components/bs-list/bs-list.stories.js +35 -2
  353. package/dist/collection/components/bs-list-item/bs-list-item.css +8 -0
  354. package/dist/collection/components/bs-list-item/bs-list-item.js +24 -1
  355. package/dist/collection/components/bs-mega-menu/bs-mega-menu.js +1 -1
  356. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  357. package/dist/collection/components/bs-menu-block/bs-menu-block.js +3 -3
  358. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  359. package/dist/collection/components/bs-menu-item/bs-menu-item.stories.js +19 -15
  360. package/dist/collection/components/bs-message/bs-message.js +1 -1
  361. package/dist/collection/components/bs-message-list/bs-message-list.js +1 -1
  362. package/dist/collection/components/bs-page-header/bs-page-header.js +1 -1
  363. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  364. package/dist/collection/components/bs-popover/bs-popover.cmp.test.js +11 -4
  365. package/dist/collection/components/bs-popover/bs-popover.js +26 -2
  366. package/dist/collection/components/bs-presence/bs-presence.js +1 -1
  367. package/dist/collection/components/bs-progress/bs-progress.js +2 -2
  368. package/dist/collection/components/bs-progress-linear/bs-progress-linear.css +4 -1
  369. package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +2 -2
  370. package/dist/collection/components/bs-qr-code/bs-qr-code.js +1 -1
  371. package/dist/collection/components/bs-radio/bs-radio.cmp.test.js +8 -0
  372. package/dist/collection/components/bs-radio/bs-radio.js +25 -1
  373. package/dist/collection/components/bs-radio-group/bs-radio-group.cmp.test.js +85 -0
  374. package/dist/collection/components/bs-radio-group/bs-radio-group.css +59 -0
  375. package/dist/collection/components/bs-radio-group/bs-radio-group.js +309 -0
  376. package/dist/collection/components/bs-radio-group/bs-radio-group.stories.js +35 -0
  377. package/dist/collection/components/bs-ripple/bs-ripple.js +1 -1
  378. package/dist/collection/components/bs-search-item/bs-search-item.js +1 -1
  379. package/dist/collection/components/bs-select/bs-select.cmp.test.js +108 -0
  380. package/dist/collection/components/bs-select/bs-select.css +231 -0
  381. package/dist/collection/components/bs-select/bs-select.js +506 -0
  382. package/dist/collection/components/bs-select/bs-select.stories.js +58 -0
  383. package/dist/collection/components/bs-session-timeout/bs-session-timeout.js +1 -1
  384. package/dist/collection/components/bs-shortcut-row/bs-shortcut-row.js +1 -1
  385. package/dist/collection/components/bs-skeleton/bs-skeleton.js +1 -1
  386. package/dist/collection/components/bs-skip-link/bs-skip-link.cmp.test.js +60 -0
  387. package/dist/collection/components/bs-skip-link/bs-skip-link.css +58 -0
  388. package/dist/collection/components/bs-skip-link/bs-skip-link.js +123 -0
  389. package/dist/collection/components/bs-skip-link/bs-skip-link.stories.js +27 -0
  390. package/dist/collection/components/bs-slider/bs-slider.cmp.test.js +13 -0
  391. package/dist/collection/components/bs-slider/bs-slider.css +3 -2
  392. package/dist/collection/components/bs-slider/bs-slider.js +1 -1
  393. package/dist/collection/components/bs-snackbar/bs-snackbar.cmp.test.js +22 -0
  394. package/dist/collection/components/bs-snackbar/bs-snackbar.css +23 -0
  395. package/dist/collection/components/bs-snackbar/bs-snackbar.js +1 -1
  396. package/dist/collection/components/bs-source-link/bs-source-link.js +3 -3
  397. package/dist/collection/components/bs-spinner/bs-spinner.js +1 -1
  398. package/dist/collection/components/bs-split-pane/bs-split-pane.js +1 -1
  399. package/dist/collection/components/bs-stack/bs-stack.js +1 -1
  400. package/dist/collection/components/bs-stat/bs-stat.cmp.test.js +49 -0
  401. package/dist/collection/components/bs-stat/bs-stat.css +116 -0
  402. package/dist/collection/components/bs-stat/bs-stat.js +284 -0
  403. package/dist/collection/components/bs-stat/bs-stat.stories.js +44 -0
  404. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
  405. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
  406. package/dist/collection/components/bs-switch/bs-switch.js +1 -1
  407. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.css +2 -2
  408. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  409. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.js +0 -4
  410. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
  411. package/dist/collection/components/bs-tab/bs-tab/bs-tab.stories.js +7 -7
  412. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.cmp.test.js +35 -0
  413. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.css +6 -2
  414. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +13 -6
  415. package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.cmp.test.js +125 -0
  416. package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.css +115 -0
  417. package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.js +392 -0
  418. package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.stories.js +58 -0
  419. package/dist/collection/components/bs-tag/bs-tag.cmp.test.js +66 -0
  420. package/dist/collection/components/bs-tag/bs-tag.css +101 -0
  421. package/dist/collection/components/bs-tag/bs-tag.js +233 -0
  422. package/dist/collection/components/bs-tag/bs-tag.stories.js +59 -0
  423. package/dist/collection/components/bs-text/bs-text.cmp.test.js +33 -0
  424. package/dist/collection/components/bs-text/bs-text.css +48 -0
  425. package/dist/collection/components/bs-text/bs-text.js +126 -0
  426. package/dist/collection/components/bs-text/bs-text.stories.js +25 -0
  427. package/dist/collection/components/bs-timepicker/bs-timepicker.js +2 -2
  428. package/dist/collection/components/bs-toast/bs-toast.js +1 -1
  429. package/dist/collection/components/bs-toggle-button/bs-toggle-button.cmp.test.js +47 -0
  430. package/dist/collection/components/bs-toggle-button/bs-toggle-button.css +125 -0
  431. package/dist/collection/components/bs-toggle-button/bs-toggle-button.js +234 -0
  432. package/dist/collection/components/bs-toggle-button/bs-toggle-button.stories.js +22 -0
  433. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.cmp.test.js +69 -0
  434. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.css +43 -0
  435. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.js +264 -0
  436. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.stories.js +42 -0
  437. package/dist/collection/components/bs-toolbar/bs-toolbar.cmp.test.js +144 -0
  438. package/dist/collection/components/bs-toolbar/bs-toolbar.css +82 -0
  439. package/dist/collection/components/bs-toolbar/bs-toolbar.js +345 -0
  440. package/dist/collection/components/bs-toolbar/bs-toolbar.stories.js +49 -0
  441. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  442. package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.js +1 -1
  443. package/dist/collection/components/bs-tree/bs-tree.js +1 -1
  444. package/dist/collection/components/bs-tree-item/bs-tree-item.js +2 -2
  445. package/dist/collection/components/bs-tree-item/bs-tree-item.stories.js +6 -4
  446. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.js +1 -1
  447. package/dist/collection/components/disabled-aria.cmp.test.js +19 -0
  448. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +25 -0
  449. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.css +2 -2
  450. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +2 -2
  451. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.js +58 -0
  452. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.css +10 -2
  453. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +63 -4
  454. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.js +42 -9
  455. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.css +44 -37
  456. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +2 -2
  457. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.js +22 -0
  458. package/dist/collection/index.js +1 -0
  459. package/dist/collection/test/helpers/block-link-navigation.js +13 -0
  460. package/dist/collection/test/helpers/contrast.js +57 -0
  461. package/dist/components/bs-accordion-group.js +1 -1
  462. package/dist/components/bs-accordion.js +1 -1
  463. package/dist/components/bs-ai-disclaimer.js +1 -1
  464. package/dist/components/bs-ai-greeting.js +1 -1
  465. package/dist/components/bs-ai-thinking.js +1 -1
  466. package/dist/components/bs-app-recent-item.js +1 -1
  467. package/dist/components/bs-app-shell.js +1 -1
  468. package/dist/components/bs-app-switcher.js +1 -1
  469. package/dist/components/bs-app-tile.js +1 -1
  470. package/dist/components/bs-attachment-list.js +1 -1
  471. package/dist/components/bs-attachment.js +1 -1
  472. package/dist/components/bs-avatar.js +1 -1
  473. package/dist/components/bs-badge.js +1 -1
  474. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  475. package/dist/components/bs-breadcrumb.js +1 -1
  476. package/dist/components/bs-breadcrumbs.js +1 -1
  477. package/dist/components/bs-button-skeleton.js +1 -1
  478. package/dist/components/bs-button.js +1 -1
  479. package/dist/components/bs-card.js +1 -1
  480. package/dist/components/bs-carousel.js +1 -1
  481. package/dist/components/bs-chatbot-feedback.js +1 -1
  482. package/dist/components/bs-chatbot-header.js +1 -1
  483. package/dist/components/bs-chatbot-response-action.js +1 -1
  484. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  485. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  486. package/dist/components/bs-checkbox-group.d.ts +11 -0
  487. package/dist/components/bs-checkbox-group.js +1 -0
  488. package/dist/components/bs-checkbox-skeleton.js +1 -1
  489. package/dist/components/bs-checkbox.js +1 -1
  490. package/dist/components/bs-chip-filter.js +1 -1
  491. package/dist/components/bs-chip-informative.js +1 -1
  492. package/dist/components/bs-chip-input.js +1 -1
  493. package/dist/components/bs-citation-preview.js +1 -1
  494. package/dist/components/bs-code-block.d.ts +11 -0
  495. package/dist/components/bs-code-block.js +1 -0
  496. package/dist/components/bs-command-palette.js +1 -1
  497. package/dist/components/bs-compact-menu-block.js +1 -1
  498. package/dist/components/bs-company-switcher.js +1 -1
  499. package/dist/components/bs-composer-status-banner.js +1 -1
  500. package/dist/components/bs-composer.js +1 -1
  501. package/dist/components/bs-container.js +1 -1
  502. package/dist/components/bs-cookie-consent.js +1 -1
  503. package/dist/components/bs-data-table.js +1 -1
  504. package/dist/components/bs-datepicker.js +1 -1
  505. package/dist/components/bs-description-item.d.ts +11 -0
  506. package/dist/components/bs-description-item.js +1 -0
  507. package/dist/components/bs-description-list.d.ts +11 -0
  508. package/dist/components/bs-description-list.js +1 -0
  509. package/dist/components/bs-dialog.js +1 -1
  510. package/dist/components/bs-divider.js +1 -1
  511. package/dist/components/bs-dropdown.d.ts +11 -0
  512. package/dist/components/bs-dropdown.js +1 -0
  513. package/dist/components/bs-empty-state.js +1 -1
  514. package/dist/components/bs-error-page.js +1 -1
  515. package/dist/components/bs-file-upload-item.js +1 -1
  516. package/dist/components/bs-file-upload.js +1 -1
  517. package/dist/components/bs-global-search.js +1 -1
  518. package/dist/components/bs-grid.js +1 -1
  519. package/dist/components/bs-heading.d.ts +11 -0
  520. package/dist/components/bs-heading.js +1 -0
  521. package/dist/components/bs-icon-button.js +1 -1
  522. package/dist/components/bs-icon-tile.js +1 -1
  523. package/dist/components/bs-icon.d.ts +11 -0
  524. package/dist/components/bs-icon.js +1 -0
  525. package/dist/components/bs-inline-tab.js +1 -1
  526. package/dist/components/bs-input.js +1 -1
  527. package/dist/components/bs-key-caps.js +1 -1
  528. package/dist/components/bs-key.js +1 -1
  529. package/dist/components/bs-keyboard-shortcuts.js +1 -1
  530. package/dist/components/bs-link.d.ts +11 -0
  531. package/dist/components/bs-link.js +1 -0
  532. package/dist/components/bs-list-item.js +1 -1
  533. package/dist/components/bs-list.js +1 -1
  534. package/dist/components/bs-logo.js +1 -1
  535. package/dist/components/bs-mega-menu.js +1 -1
  536. package/dist/components/bs-menu-block.js +1 -1
  537. package/dist/components/bs-menu-item.js +1 -1
  538. package/dist/components/bs-menu.js +1 -1
  539. package/dist/components/bs-message-list.js +1 -1
  540. package/dist/components/bs-message.js +1 -1
  541. package/dist/components/bs-navigation-drawer-item.js +1 -1
  542. package/dist/components/bs-navigation-drawer.js +1 -1
  543. package/dist/components/bs-navigation-header.js +1 -1
  544. package/dist/components/bs-onboarding-checklist.js +1 -1
  545. package/dist/components/bs-page-header.js +1 -1
  546. package/dist/components/bs-pagination.js +1 -1
  547. package/dist/components/bs-popover.js +1 -1
  548. package/dist/components/bs-presence.js +1 -1
  549. package/dist/components/bs-product-tour.js +1 -1
  550. package/dist/components/bs-progress-linear.js +1 -1
  551. package/dist/components/bs-progress.js +1 -1
  552. package/dist/components/bs-qr-code.js +1 -1
  553. package/dist/components/bs-radio-group.d.ts +11 -0
  554. package/dist/components/bs-radio-group.js +1 -0
  555. package/dist/components/bs-radio.js +1 -1
  556. package/dist/components/bs-ripple.js +1 -1
  557. package/dist/components/bs-search-item.js +1 -1
  558. package/dist/components/bs-select.d.ts +11 -0
  559. package/dist/components/bs-select.js +1 -0
  560. package/dist/components/bs-session-timeout.js +1 -1
  561. package/dist/components/bs-shortcut-row.js +1 -1
  562. package/dist/components/bs-side-panel.js +1 -1
  563. package/dist/components/bs-skeleton.js +1 -1
  564. package/dist/components/bs-skip-link.d.ts +11 -0
  565. package/dist/components/bs-skip-link.js +1 -0
  566. package/dist/components/bs-slider.js +1 -1
  567. package/dist/components/bs-snackbar.js +1 -1
  568. package/dist/components/bs-source-link.js +1 -1
  569. package/dist/components/bs-spinner.js +1 -1
  570. package/dist/components/bs-split-pane.js +1 -1
  571. package/dist/components/bs-stack.js +1 -1
  572. package/dist/components/bs-stat.d.ts +11 -0
  573. package/dist/components/bs-stat.js +1 -0
  574. package/dist/components/bs-stepper-step.js +1 -1
  575. package/dist/components/bs-stepper.js +1 -1
  576. package/dist/components/bs-switch.js +1 -1
  577. package/dist/components/bs-tab.js +1 -1
  578. package/dist/components/bs-table-of-contents.d.ts +11 -0
  579. package/dist/components/bs-table-of-contents.js +1 -0
  580. package/dist/components/bs-tabs.js +1 -1
  581. package/dist/components/bs-tag.d.ts +11 -0
  582. package/dist/components/bs-tag.js +1 -0
  583. package/dist/components/bs-text.d.ts +11 -0
  584. package/dist/components/bs-text.js +1 -0
  585. package/dist/components/bs-timepicker.js +1 -1
  586. package/dist/components/bs-toast.js +1 -1
  587. package/dist/components/bs-toggle-button-group.d.ts +11 -0
  588. package/dist/components/bs-toggle-button-group.js +1 -0
  589. package/dist/components/bs-toggle-button.d.ts +11 -0
  590. package/dist/components/bs-toggle-button.js +1 -0
  591. package/dist/components/bs-toolbar.d.ts +11 -0
  592. package/dist/components/bs-toolbar.js +1 -0
  593. package/dist/components/bs-tooltip-trigger.js +1 -1
  594. package/dist/components/bs-tooltip.js +1 -1
  595. package/dist/components/bs-tree-item.js +1 -1
  596. package/dist/components/bs-tree.js +1 -1
  597. package/dist/components/bs-whats-new-entry.js +1 -1
  598. package/dist/components/bs-whats-new.js +1 -1
  599. package/dist/components/index.js +1 -1
  600. package/dist/components/p-B5yjDh8h.js +1 -0
  601. package/dist/components/p-B81aicKA.js +1 -0
  602. package/dist/components/{p-CFR3Q0io.js → p-BB1HiIxJ.js} +1 -1
  603. package/dist/components/p-BLJL4BVY.js +1 -0
  604. package/dist/components/{p-D5eN9Lfa.js → p-BR7C-aKy.js} +1 -1
  605. package/dist/components/{p-D3PuUD8Z.js → p-Ba8J2kHD.js} +1 -1
  606. package/dist/components/{p-DF2FcJPs.js → p-C3YETziz.js} +1 -1
  607. package/dist/components/p-CALH_mHQ.js +1 -0
  608. package/dist/components/{p-DcD5eV_Z.js → p-CKTbatgt.js} +1 -1
  609. package/dist/components/{p-lPTgyF9v.js → p-CL99S8-7.js} +1 -1
  610. package/dist/components/{p-Dj393s3S.js → p-CZfbB-t_.js} +1 -1
  611. package/dist/components/p-CcAX4o5o.js +1 -0
  612. package/dist/components/{p-6Rr9bjVN.js → p-Cso2DKAz.js} +1 -1
  613. package/dist/components/{p-CVQycAap.js → p-CxNNy2m6.js} +1 -1
  614. package/dist/components/{p-CHZE_FrW.js → p-Cz38kNDe.js} +1 -1
  615. package/dist/components/{p-Y5FyLR8G.js → p-D4W5LcEW.js} +1 -1
  616. package/dist/components/{p--Tyv3LIl.js → p-DARbgzSz.js} +1 -1
  617. package/dist/components/p-DHZ_DStJ.js +1 -0
  618. package/dist/components/{p-BQ4rSQDm.js → p-DK1uv2fu.js} +1 -1
  619. package/dist/components/{p-DLnZG_G9.js → p-DL9HtG41.js} +1 -1
  620. package/dist/components/{p-Cr8cHmpM.js → p-DLNoxNuW.js} +1 -1
  621. package/dist/components/{p-4yShCgRb.js → p-DMp5CvEJ.js} +1 -1
  622. package/dist/components/p-DO4sVZCh.js +1 -0
  623. package/dist/components/{p-DDgzEg1C.js → p-DOW-YekD.js} +1 -1
  624. package/dist/components/p-DUV80kt-.js +1 -0
  625. package/dist/components/{p-BTPdjnXT.js → p-DVqoLSEW.js} +1 -1
  626. package/dist/components/{p-DtkTnaOp.js → p-DaKBSL2O.js} +1 -1
  627. package/dist/components/{p-ZfE38vXZ.js → p-Dlp2c-Ii.js} +1 -1
  628. package/dist/components/{p-XZXdZpt4.js → p-DnagAPBF.js} +1 -1
  629. package/dist/components/p-Dt3b6VYT.js +1 -0
  630. package/dist/components/{p-BWRkbt0f.js → p-KiyJJwzr.js} +1 -1
  631. package/dist/components/p-Vo0zbGRB.js +1 -0
  632. package/dist/components/p-_zxYDrzi.js +1 -0
  633. package/dist/components/p-abyVFrPp.js +1 -0
  634. package/dist/components/p-mxDA3wKn.js +1 -0
  635. package/dist/components/p-wd9-vGpQ.js +1 -0
  636. package/dist/components/p-wscU7FUD.js +1 -0
  637. package/dist/esm/brandsync-wc.js +3 -3
  638. package/dist/esm/bs-accordion-group.entry.js +2 -2
  639. package/dist/esm/bs-accordion.entry.js +2 -2
  640. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  641. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  642. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  643. package/dist/esm/bs-app-recent-item_3.entry.js +5 -5
  644. package/dist/esm/bs-app-shell.entry.js +2 -2
  645. package/dist/esm/bs-app-switcher.entry.js +1 -1
  646. package/dist/esm/bs-attachment-list.entry.js +2 -2
  647. package/dist/esm/bs-attachment.entry.js +2 -2
  648. package/dist/esm/bs-avatar.entry.js +3 -10
  649. package/dist/esm/bs-badge.entry.js +2 -2
  650. package/dist/esm/bs-breadcrumb-overflow.entry.js +1 -1
  651. package/dist/esm/bs-breadcrumb.entry.js +3 -3
  652. package/dist/esm/bs-breadcrumbs.entry.js +10 -2
  653. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  654. package/dist/esm/bs-button_2.entry.js +17 -4
  655. package/dist/esm/bs-card.entry.js +44 -3
  656. package/dist/esm/bs-carousel.entry.js +2 -2
  657. package/dist/esm/bs-chatbot-feedback.entry.js +3 -7
  658. package/dist/esm/bs-chatbot-header.entry.js +3 -7
  659. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  660. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  661. package/dist/esm/bs-chatbot-suggestion-button.entry.js +3 -3
  662. package/dist/esm/bs-checkbox-group.entry.js +78 -0
  663. package/dist/esm/bs-checkbox-skeleton.entry.js +2 -2
  664. package/dist/esm/bs-checkbox.entry.js +1 -1
  665. package/dist/esm/bs-chip-filter.entry.js +2 -2
  666. package/dist/esm/bs-chip-informative.entry.js +2 -2
  667. package/dist/esm/bs-chip-input.entry.js +2 -2
  668. package/dist/esm/bs-citation-preview.entry.js +2 -2
  669. package/dist/esm/bs-code-block.entry.js +73 -0
  670. package/dist/esm/bs-command-palette.entry.js +2 -2
  671. package/dist/esm/bs-compact-menu-block_2.entry.js +5 -5
  672. package/dist/esm/bs-company-switcher.entry.js +3 -3
  673. package/dist/esm/bs-composer-status-banner.entry.js +2 -2
  674. package/dist/esm/bs-composer.entry.js +6 -4
  675. package/dist/esm/bs-container.entry.js +2 -2
  676. package/dist/esm/bs-cookie-consent.entry.js +1 -1
  677. package/dist/esm/bs-data-table.entry.js +8 -5
  678. package/dist/esm/bs-datepicker.entry.js +2 -2
  679. package/dist/esm/bs-description-item.entry.js +21 -0
  680. package/dist/esm/bs-description-list.entry.js +38 -0
  681. package/dist/esm/bs-dialog.entry.js +1 -1
  682. package/dist/esm/bs-divider.entry.js +2 -2
  683. package/dist/esm/bs-dropdown.entry.js +94 -0
  684. package/dist/esm/bs-empty-state.entry.js +7 -3
  685. package/dist/esm/bs-error-page.entry.js +2 -2
  686. package/dist/esm/bs-file-upload-item.entry.js +2 -2
  687. package/dist/esm/bs-file-upload.entry.js +2 -2
  688. package/dist/esm/bs-global-search.entry.js +3 -3
  689. package/dist/esm/bs-grid.entry.js +3 -3
  690. package/dist/esm/bs-heading.entry.js +26 -0
  691. package/dist/esm/bs-icon-button.entry.js +10 -3
  692. package/dist/esm/bs-icon-tile.entry.js +3 -3
  693. package/dist/esm/bs-icon.entry.js +33 -0
  694. package/dist/esm/bs-inline-tab.entry.js +3 -3
  695. package/dist/esm/bs-input_4.entry.js +789 -0
  696. package/dist/esm/bs-key-caps.entry.js +2 -2
  697. package/dist/esm/bs-key.entry.js +2 -2
  698. package/dist/esm/bs-keyboard-shortcuts.entry.js +3 -3
  699. package/dist/esm/bs-link.entry.js +50 -0
  700. package/dist/esm/bs-list-item.entry.js +66 -0
  701. package/dist/esm/bs-list.entry.js +9 -3
  702. package/dist/esm/bs-logo.entry.js +1 -1
  703. package/dist/esm/bs-mega-menu.entry.js +2 -2
  704. package/dist/esm/bs-message-list.entry.js +2 -2
  705. package/dist/esm/bs-message.entry.js +2 -2
  706. package/dist/esm/bs-navigation-drawer-item.entry.js +26 -5
  707. package/dist/esm/bs-navigation-drawer.entry.js +4 -4
  708. package/dist/esm/bs-navigation-header.entry.js +4 -4
  709. package/dist/esm/bs-onboarding-checklist.entry.js +1 -1
  710. package/dist/esm/bs-page-header.entry.js +2 -2
  711. package/dist/esm/bs-pagination.entry.js +2 -2
  712. package/dist/esm/bs-popover.entry.js +221 -0
  713. package/dist/esm/bs-presence.entry.js +2 -2
  714. package/dist/esm/bs-product-tour.entry.js +1 -1
  715. package/dist/esm/bs-progress-linear.entry.js +4 -4
  716. package/dist/esm/bs-progress.entry.js +3 -3
  717. package/dist/esm/bs-qr-code.entry.js +2 -2
  718. package/dist/esm/bs-radio-group.entry.js +88 -0
  719. package/dist/esm/bs-radio.entry.js +6 -2
  720. package/dist/esm/bs-search-item.entry.js +2 -2
  721. package/dist/esm/bs-select.entry.js +232 -0
  722. package/dist/esm/bs-session-timeout.entry.js +2 -2
  723. package/dist/esm/bs-shortcut-row.entry.js +2 -2
  724. package/dist/esm/bs-side-panel.entry.js +1 -1
  725. package/dist/esm/bs-skip-link.entry.js +50 -0
  726. package/dist/esm/bs-slider.entry.js +3 -3
  727. package/dist/esm/bs-snackbar.entry.js +3 -3
  728. package/dist/esm/bs-source-link.entry.js +4 -4
  729. package/dist/esm/bs-split-pane.entry.js +2 -2
  730. package/dist/esm/bs-stack.entry.js +2 -2
  731. package/dist/esm/bs-stat.entry.js +51 -0
  732. package/dist/esm/bs-stepper-step.entry.js +2 -2
  733. package/dist/esm/bs-stepper.entry.js +2 -2
  734. package/dist/esm/bs-switch.entry.js +2 -2
  735. package/dist/esm/bs-tab_3.entry.js +16 -9
  736. package/dist/esm/bs-table-of-contents.entry.js +169 -0
  737. package/dist/esm/bs-tag.entry.js +49 -0
  738. package/dist/esm/bs-text.entry.js +22 -0
  739. package/dist/esm/bs-timepicker.entry.js +3 -3
  740. package/dist/esm/bs-toast.entry.js +2 -2
  741. package/dist/esm/bs-toggle-button-group.entry.js +106 -0
  742. package/dist/esm/bs-toggle-button.entry.js +55 -0
  743. package/dist/esm/bs-toolbar.entry.js +193 -0
  744. package/dist/esm/bs-tooltip-trigger.entry.js +2 -2
  745. package/dist/esm/bs-tooltip.entry.js +2 -2
  746. package/dist/esm/bs-tree-item.entry.js +3 -3
  747. package/dist/esm/bs-tree.entry.js +2 -2
  748. package/dist/esm/bs-whats-new.entry.js +1 -1
  749. package/dist/esm/icon-registry-Vo0zbGRB.js +60 -0
  750. package/dist/esm/{index-D3SkQJpw.js → index-wz7B473u.js} +1 -1
  751. package/dist/esm/index.js +2 -0
  752. package/dist/esm/loader.js +3 -3
  753. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.d.ts +9 -0
  754. package/dist/types/components/bs-button/bs-button/bs-button.d.ts +22 -6
  755. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +7 -0
  756. package/dist/types/components/bs-card/bs-card.d.ts +35 -0
  757. package/dist/types/components/bs-card/bs-card.stories.d.ts +3 -0
  758. package/dist/types/components/bs-carousel/bs-carousel.d.ts +1 -1
  759. package/dist/types/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.d.ts +3 -0
  760. package/dist/types/components/bs-checkbox-group/bs-checkbox-group.cmp.test.d.ts +1 -0
  761. package/dist/types/components/bs-checkbox-group/bs-checkbox-group.d.ts +48 -0
  762. package/dist/types/components/bs-checkbox-group/bs-checkbox-group.stories.d.ts +15 -0
  763. package/dist/types/components/bs-code-block/bs-code-block.cmp.test.d.ts +1 -0
  764. package/dist/types/components/bs-code-block/bs-code-block.d.ts +68 -0
  765. package/dist/types/components/bs-code-block/bs-code-block.stories.d.ts +18 -0
  766. package/dist/types/components/bs-data-table/bs-data-table.d.ts +11 -0
  767. package/dist/types/components/bs-description-item/bs-description-item.cmp.test.d.ts +1 -0
  768. package/dist/types/components/bs-description-item/bs-description-item.d.ts +34 -0
  769. package/dist/types/components/bs-description-list/bs-description-list.cmp.test.d.ts +1 -0
  770. package/dist/types/components/bs-description-list/bs-description-list.d.ts +33 -0
  771. package/dist/types/components/bs-description-list/bs-description-list.stories.d.ts +11 -0
  772. package/dist/types/components/bs-dropdown/bs-dropdown.cmp.test.d.ts +1 -0
  773. package/dist/types/components/bs-dropdown/bs-dropdown.d.ts +51 -0
  774. package/dist/types/components/bs-dropdown/bs-dropdown.stories.d.ts +12 -0
  775. package/dist/types/components/bs-empty-state/bs-empty-state.d.ts +6 -0
  776. package/dist/types/components/bs-empty-state/bs-empty-state.stories.d.ts +3 -0
  777. package/dist/types/components/bs-heading/bs-heading.cmp.test.d.ts +1 -0
  778. package/dist/types/components/bs-heading/bs-heading.d.ts +34 -0
  779. package/dist/types/components/bs-heading/bs-heading.stories.d.ts +15 -0
  780. package/dist/types/components/bs-icon/bs-icon.cmp.test.d.ts +1 -0
  781. package/dist/types/components/bs-icon/bs-icon.d.ts +39 -0
  782. package/dist/types/components/bs-icon/bs-icon.stories.d.ts +16 -0
  783. package/dist/types/components/bs-icon/icon-registry.d.ts +16 -0
  784. package/dist/types/components/bs-input/bs-input.d.ts +83 -12
  785. package/dist/types/components/bs-input/bs-input.stories.d.ts +3 -1
  786. package/dist/types/components/bs-link/bs-link.cmp.test.d.ts +1 -0
  787. package/dist/types/components/bs-link/bs-link.d.ts +48 -0
  788. package/dist/types/components/bs-link/bs-link.stories.d.ts +19 -0
  789. package/dist/types/components/bs-list/bs-list.d.ts +6 -0
  790. package/dist/types/components/bs-list/bs-list.stories.d.ts +4 -0
  791. package/dist/types/components/bs-list-item/bs-list-item.d.ts +3 -0
  792. package/dist/types/components/bs-popover/bs-popover.d.ts +9 -1
  793. package/dist/types/components/bs-radio/bs-radio.d.ts +4 -0
  794. package/dist/types/components/bs-radio-group/bs-radio-group.cmp.test.d.ts +1 -0
  795. package/dist/types/components/bs-radio-group/bs-radio-group.d.ts +57 -0
  796. package/dist/types/components/bs-radio-group/bs-radio-group.stories.d.ts +16 -0
  797. package/dist/types/components/bs-select/bs-select.cmp.test.d.ts +1 -0
  798. package/dist/types/components/bs-select/bs-select.d.ts +85 -0
  799. package/dist/types/components/bs-select/bs-select.stories.d.ts +19 -0
  800. package/dist/types/components/bs-skip-link/bs-skip-link.cmp.test.d.ts +1 -0
  801. package/dist/types/components/bs-skip-link/bs-skip-link.d.ts +40 -0
  802. package/dist/types/components/bs-skip-link/bs-skip-link.stories.d.ts +10 -0
  803. package/dist/types/components/bs-stat/bs-stat.cmp.test.d.ts +1 -0
  804. package/dist/types/components/bs-stat/bs-stat.d.ts +56 -0
  805. package/dist/types/components/bs-stat/bs-stat.stories.d.ts +16 -0
  806. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.d.ts +0 -1
  807. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +5 -3
  808. package/dist/types/components/bs-table-of-contents/bs-table-of-contents.cmp.test.d.ts +1 -0
  809. package/dist/types/components/bs-table-of-contents/bs-table-of-contents.d.ts +96 -0
  810. package/dist/types/components/bs-table-of-contents/bs-table-of-contents.stories.d.ts +13 -0
  811. package/dist/types/components/bs-tag/bs-tag.cmp.test.d.ts +1 -0
  812. package/dist/types/components/bs-tag/bs-tag.d.ts +49 -0
  813. package/dist/types/components/bs-tag/bs-tag.stories.d.ts +16 -0
  814. package/dist/types/components/bs-text/bs-text.cmp.test.d.ts +1 -0
  815. package/dist/types/components/bs-text/bs-text.d.ts +31 -0
  816. package/dist/types/components/bs-text/bs-text.stories.d.ts +14 -0
  817. package/dist/types/components/bs-toggle-button/bs-toggle-button.cmp.test.d.ts +1 -0
  818. package/dist/types/components/bs-toggle-button/bs-toggle-button.d.ts +48 -0
  819. package/dist/types/components/bs-toggle-button/bs-toggle-button.stories.d.ts +13 -0
  820. package/dist/types/components/bs-toggle-button-group/bs-toggle-button-group.cmp.test.d.ts +1 -0
  821. package/dist/types/components/bs-toggle-button-group/bs-toggle-button-group.d.ts +42 -0
  822. package/dist/types/components/bs-toggle-button-group/bs-toggle-button-group.stories.d.ts +13 -0
  823. package/dist/types/components/bs-toolbar/bs-toolbar.cmp.test.d.ts +1 -0
  824. package/dist/types/components/bs-toolbar/bs-toolbar.d.ts +88 -0
  825. package/dist/types/components/bs-toolbar/bs-toolbar.stories.d.ts +13 -0
  826. package/dist/types/components/disabled-aria.cmp.test.d.ts +1 -0
  827. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.d.ts +11 -1
  828. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.d.ts +3 -0
  829. package/dist/types/components.d.ts +3107 -88
  830. package/dist/types/index.d.ts +1 -0
  831. package/dist/types/test/helpers/block-link-navigation.d.ts +8 -0
  832. package/dist/types/test/helpers/contrast.d.ts +5 -0
  833. package/package.json +6 -1
  834. package/reference.d.ts +63 -9
  835. package/reference.json +670 -17
  836. package/dist/brandsync-wc/p-08649f52.entry.js +0 -1
  837. package/dist/brandsync-wc/p-1580c56c.entry.js +0 -1
  838. package/dist/brandsync-wc/p-171fa239.entry.js +0 -1
  839. package/dist/brandsync-wc/p-197ac73f.entry.js +0 -1
  840. package/dist/brandsync-wc/p-1e33bc10.entry.js +0 -1
  841. package/dist/brandsync-wc/p-270b2cb0.entry.js +0 -1
  842. package/dist/brandsync-wc/p-28c38959.entry.js +0 -1
  843. package/dist/brandsync-wc/p-2a8b2ac9.entry.js +0 -1
  844. package/dist/brandsync-wc/p-2a967b45.entry.js +0 -1
  845. package/dist/brandsync-wc/p-2b3d0bd4.entry.js +0 -1
  846. package/dist/brandsync-wc/p-30ff0659.entry.js +0 -1
  847. package/dist/brandsync-wc/p-3627e0c6.entry.js +0 -1
  848. package/dist/brandsync-wc/p-38a2210a.entry.js +0 -1
  849. package/dist/brandsync-wc/p-3b212a8a.entry.js +0 -1
  850. package/dist/brandsync-wc/p-4dfd4715.entry.js +0 -1
  851. package/dist/brandsync-wc/p-6afacd47.entry.js +0 -1
  852. package/dist/brandsync-wc/p-6f32a08e.entry.js +0 -1
  853. package/dist/brandsync-wc/p-776b677f.entry.js +0 -1
  854. package/dist/brandsync-wc/p-D3SkQJpw.js +0 -3
  855. package/dist/brandsync-wc/p-ab301e9d.entry.js +0 -1
  856. package/dist/brandsync-wc/p-d15e48eb.entry.js +0 -1
  857. package/dist/brandsync-wc/p-e1d30e31.entry.js +0 -1
  858. package/dist/brandsync-wc/p-e776d145.entry.js +0 -1
  859. package/dist/brandsync-wc/p-e7c80f48.entry.js +0 -1
  860. package/dist/brandsync-wc/p-eb680cff.entry.js +0 -1
  861. package/dist/brandsync-wc/p-f3b60029.entry.js +0 -1
  862. package/dist/brandsync-wc/p-f4628861.entry.js +0 -1
  863. package/dist/brandsync-wc/p-f5e6fdf8.entry.js +0 -1
  864. package/dist/brandsync-wc/p-f93127e1.entry.js +0 -1
  865. package/dist/cjs/bs-input_3.cjs.entry.js +0 -461
  866. package/dist/cjs/bs-list-item_2.cjs.entry.js +0 -261
  867. package/dist/cjs/bs-spinner.cjs.entry.js +0 -24
  868. package/dist/components/p-B2gx7SZk.js +0 -1
  869. package/dist/components/p-BHzj13sd.js +0 -1
  870. package/dist/components/p-BIxcCDgl.js +0 -1
  871. package/dist/components/p-BfCah-Ij.js +0 -1
  872. package/dist/components/p-BpkPo4ay.js +0 -1
  873. package/dist/components/p-CvSewXZF.js +0 -1
  874. package/dist/components/p-DXbcyEgd.js +0 -1
  875. package/dist/components/p-DXwatzvM.js +0 -1
  876. package/dist/components/p-DsBToIYE.js +0 -1
  877. package/dist/components/p-EGNLb4cQ.js +0 -1
  878. package/dist/components/p-Jik5UkAe.js +0 -1
  879. package/dist/components/p-syO0ipbw.js +0 -1
  880. package/dist/components/p-up01gvHY.js +0 -1
  881. package/dist/esm/bs-input_3.entry.js +0 -457
  882. package/dist/esm/bs-list-item_2.entry.js +0 -258
  883. package/dist/esm/bs-spinner.entry.js +0 -22
@@ -19,6 +19,7 @@ import { BsButtonSize as BsButtonSize1, BsButtonVariant as BsButtonVariant1 } fr
19
19
  import { BsCardSurface } from "./components/bs-card/bs-card";
20
20
  import { BsCarouselTracker } from "./components/bs-carousel/bs-carousel";
21
21
  import { BsCheckboxSize } from "./components/bs-checkbox/bs-checkbox";
22
+ import { BsCheckboxGroupOrientation } from "./components/bs-checkbox-group/bs-checkbox-group";
22
23
  import { BsCheckboxSize as BsCheckboxSize1 } from "./components/bs-checkbox/bs-checkbox";
23
24
  import { BsChipFilterSize } from "./components/bs-chip/bs-chip-filter/bs-chip-filter";
24
25
  import { BsChipInformativeColor, BsChipInformativeSize } from "./components/bs-chip/bs-chip-informative/bs-chip-informative";
@@ -33,15 +34,19 @@ import { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs
33
34
  import { BsDatepickerChange } from "./components/bs-datepicker/bs-datepicker";
34
35
  import { BsDialogSize } from "./components/bs-dialog/bs-dialog";
35
36
  import { BsDividerInset, BsDividerOrientation, BsDividerVariant } from "./components/bs-divider/bs-divider";
37
+ import { BsDropdownPlacement } from "./components/bs-dropdown/bs-dropdown";
36
38
  import { BsIconTileIntent } from "./components/bs-icon-tile/bs-icon-tile";
37
39
  import { BsErrorPageType } from "./components/bs-error-page/bs-error-page";
38
40
  import { BsFileUploadDirection } from "./components/bs-file-upload/bs-file-upload";
39
41
  import { BsFileUploadItemState } from "./components/bs-file-upload-item/bs-file-upload-item";
40
42
  import { BsGlobalSearchSelectDetail, BsGlobalSearchStatus } from "./components/bs-global-search/bs-global-search";
41
43
  import { BsGridAlign } from "./components/bs-grid/bs-grid";
44
+ import { BsHeadingAs, BsHeadingLevel, BsHeadingSize, BsHeadingTone } from "./components/bs-heading/bs-heading";
45
+ import { BsIconSize, BsIconTone } from "./components/bs-icon/bs-icon";
42
46
  import { BsIconButtonSize, BsIconButtonVariant } from "./components/bs-button/bs-icon-button/bs-icon-button";
43
47
  import { BsIconTileIntent as BsIconTileIntent1, BsIconTileSize } from "./components/bs-icon-tile/bs-icon-tile";
44
48
  import { BsShortcutGroup } from "./components/bs-keyboard-shortcuts/bs-keyboard-shortcuts";
49
+ import { BsLinkVariant } from "./components/bs-link/bs-link";
45
50
  import { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
46
51
  import { BsMegaMenuColumn, BsMegaMenuFeatured, BsMegaMenuItem, BsMegaMenuType } from "./components/bs-mega-menu/bs-mega-menu";
47
52
  import { BsMessageRole, BsMessageStatus } from "./components/bs-message/bs-message";
@@ -53,6 +58,8 @@ import { BsProductTourDirection, BsProductTourType } from "./components/bs-produ
53
58
  import { BsProgressSize, BsProgressStrokeWidth, BsProgressType } from "./components/bs-progress/bs-progress";
54
59
  import { BsProgressLinearSize, BsProgressLinearType } from "./components/bs-progress-linear/bs-progress-linear";
55
60
  import { BsQrCodeSize, BsQrCodeState, BsQrCodeType } from "./components/bs-qr-code/bs-qr-code";
61
+ import { BsRadioGroupOrientation } from "./components/bs-radio-group/bs-radio-group";
62
+ import { BsSelectOption } from "./components/bs-select/bs-select";
56
63
  import { BsSessionTimeoutAlternative, BsSessionTimeoutType } from "./components/bs-session-timeout/bs-session-timeout";
57
64
  import { BsSidePanelSide } from "./components/bs-side-panel/bs-side-panel";
58
65
  import { BsSkeletonVariant } from "./components/bs-skeleton/bs-skeleton";
@@ -61,13 +68,20 @@ import { BsSnackbarVariant } from "./components/bs-snackbar/bs-snackbar";
61
68
  import { BsSpinnerSize } from "./components/bs-spinner/bs-spinner";
62
69
  import { BsSplitPaneOrientation } from "./components/bs-split-pane/bs-split-pane";
63
70
  import { BsStackAlign, BsStackDirection, BsStackJustify } from "./components/bs-stack/bs-stack";
71
+ import { BsStatTrend, BsStatTrendIntent } from "./components/bs-stat/bs-stat";
72
+ import { BsCardSurface as BsCardSurface1 } from "./components/bs-card/bs-card";
64
73
  import { BsStepperDirection } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
65
74
  import { BsStepperDirection as BsStepperDirection1, BsStepperStepComputedState } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
66
75
  import { BsSwitchSize } from "./components/bs-switch/bs-switch";
67
76
  import { BsTabIconPosition } from "./components/bs-tab/bs-tab/bs-tab";
77
+ import { BsTocItem } from "./components/bs-table-of-contents/bs-table-of-contents";
68
78
  import { BsTabsOrientation, BsTabsType } from "./components/bs-tab/bs-tabs/bs-tabs";
79
+ import { BsTagColor, BsTagSize } from "./components/bs-tag/bs-tag";
80
+ import { BsTextAs, BsTextTone, BsTextVariant } from "./components/bs-text/bs-text";
69
81
  import { BsTimepickerChange } from "./components/bs-timepicker/bs-timepicker";
70
82
  import { BsToastState } from "./components/bs-toast/bs-toast";
83
+ import { BsToggleButtonMode } from "./components/bs-toggle-button/bs-toggle-button";
84
+ import { BsToolbarOrientation } from "./components/bs-toolbar/bs-toolbar";
71
85
  import { BsTooltipTriggerPlacement } from "./components/bs-tooltip-trigger/bs-tooltip-trigger";
72
86
  import { BsWhatsNewFilter, BsWhatsNewItem, BsWhatsNewType } from "./components/bs-whats-new/bs-whats-new";
73
87
  import { BsWhatsNewEntryTagColor } from "./components/bs-whats-new-entry/bs-whats-new-entry";
@@ -86,6 +100,7 @@ export { BsButtonSize as BsButtonSize1, BsButtonVariant as BsButtonVariant1 } fr
86
100
  export { BsCardSurface } from "./components/bs-card/bs-card";
87
101
  export { BsCarouselTracker } from "./components/bs-carousel/bs-carousel";
88
102
  export { BsCheckboxSize } from "./components/bs-checkbox/bs-checkbox";
103
+ export { BsCheckboxGroupOrientation } from "./components/bs-checkbox-group/bs-checkbox-group";
89
104
  export { BsCheckboxSize as BsCheckboxSize1 } from "./components/bs-checkbox/bs-checkbox";
90
105
  export { BsChipFilterSize } from "./components/bs-chip/bs-chip-filter/bs-chip-filter";
91
106
  export { BsChipInformativeColor, BsChipInformativeSize } from "./components/bs-chip/bs-chip-informative/bs-chip-informative";
@@ -100,15 +115,19 @@ export { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs
100
115
  export { BsDatepickerChange } from "./components/bs-datepicker/bs-datepicker";
101
116
  export { BsDialogSize } from "./components/bs-dialog/bs-dialog";
102
117
  export { BsDividerInset, BsDividerOrientation, BsDividerVariant } from "./components/bs-divider/bs-divider";
118
+ export { BsDropdownPlacement } from "./components/bs-dropdown/bs-dropdown";
103
119
  export { BsIconTileIntent } from "./components/bs-icon-tile/bs-icon-tile";
104
120
  export { BsErrorPageType } from "./components/bs-error-page/bs-error-page";
105
121
  export { BsFileUploadDirection } from "./components/bs-file-upload/bs-file-upload";
106
122
  export { BsFileUploadItemState } from "./components/bs-file-upload-item/bs-file-upload-item";
107
123
  export { BsGlobalSearchSelectDetail, BsGlobalSearchStatus } from "./components/bs-global-search/bs-global-search";
108
124
  export { BsGridAlign } from "./components/bs-grid/bs-grid";
125
+ export { BsHeadingAs, BsHeadingLevel, BsHeadingSize, BsHeadingTone } from "./components/bs-heading/bs-heading";
126
+ export { BsIconSize, BsIconTone } from "./components/bs-icon/bs-icon";
109
127
  export { BsIconButtonSize, BsIconButtonVariant } from "./components/bs-button/bs-icon-button/bs-icon-button";
110
128
  export { BsIconTileIntent as BsIconTileIntent1, BsIconTileSize } from "./components/bs-icon-tile/bs-icon-tile";
111
129
  export { BsShortcutGroup } from "./components/bs-keyboard-shortcuts/bs-keyboard-shortcuts";
130
+ export { BsLinkVariant } from "./components/bs-link/bs-link";
112
131
  export { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
113
132
  export { BsMegaMenuColumn, BsMegaMenuFeatured, BsMegaMenuItem, BsMegaMenuType } from "./components/bs-mega-menu/bs-mega-menu";
114
133
  export { BsMessageRole, BsMessageStatus } from "./components/bs-message/bs-message";
@@ -120,6 +139,8 @@ export { BsProductTourDirection, BsProductTourType } from "./components/bs-produ
120
139
  export { BsProgressSize, BsProgressStrokeWidth, BsProgressType } from "./components/bs-progress/bs-progress";
121
140
  export { BsProgressLinearSize, BsProgressLinearType } from "./components/bs-progress-linear/bs-progress-linear";
122
141
  export { BsQrCodeSize, BsQrCodeState, BsQrCodeType } from "./components/bs-qr-code/bs-qr-code";
142
+ export { BsRadioGroupOrientation } from "./components/bs-radio-group/bs-radio-group";
143
+ export { BsSelectOption } from "./components/bs-select/bs-select";
123
144
  export { BsSessionTimeoutAlternative, BsSessionTimeoutType } from "./components/bs-session-timeout/bs-session-timeout";
124
145
  export { BsSidePanelSide } from "./components/bs-side-panel/bs-side-panel";
125
146
  export { BsSkeletonVariant } from "./components/bs-skeleton/bs-skeleton";
@@ -128,13 +149,20 @@ export { BsSnackbarVariant } from "./components/bs-snackbar/bs-snackbar";
128
149
  export { BsSpinnerSize } from "./components/bs-spinner/bs-spinner";
129
150
  export { BsSplitPaneOrientation } from "./components/bs-split-pane/bs-split-pane";
130
151
  export { BsStackAlign, BsStackDirection, BsStackJustify } from "./components/bs-stack/bs-stack";
152
+ export { BsStatTrend, BsStatTrendIntent } from "./components/bs-stat/bs-stat";
153
+ export { BsCardSurface as BsCardSurface1 } from "./components/bs-card/bs-card";
131
154
  export { BsStepperDirection } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
132
155
  export { BsStepperDirection as BsStepperDirection1, BsStepperStepComputedState } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
133
156
  export { BsSwitchSize } from "./components/bs-switch/bs-switch";
134
157
  export { BsTabIconPosition } from "./components/bs-tab/bs-tab/bs-tab";
158
+ export { BsTocItem } from "./components/bs-table-of-contents/bs-table-of-contents";
135
159
  export { BsTabsOrientation, BsTabsType } from "./components/bs-tab/bs-tabs/bs-tabs";
160
+ export { BsTagColor, BsTagSize } from "./components/bs-tag/bs-tag";
161
+ export { BsTextAs, BsTextTone, BsTextVariant } from "./components/bs-text/bs-text";
136
162
  export { BsTimepickerChange } from "./components/bs-timepicker/bs-timepicker";
137
163
  export { BsToastState } from "./components/bs-toast/bs-toast";
164
+ export { BsToggleButtonMode } from "./components/bs-toggle-button/bs-toggle-button";
165
+ export { BsToolbarOrientation } from "./components/bs-toolbar/bs-toolbar";
138
166
  export { BsTooltipTriggerPlacement } from "./components/bs-tooltip-trigger/bs-tooltip-trigger";
139
167
  export { BsWhatsNewFilter, BsWhatsNewItem, BsWhatsNewType } from "./components/bs-whats-new/bs-whats-new";
140
168
  export { BsWhatsNewEntryTagColor } from "./components/bs-whats-new-entry/bs-whats-new-entry";
@@ -855,19 +883,37 @@ export namespace Components {
855
883
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
856
884
  * it for actions that actually delete/revoke/undo something.
857
885
  * @prop --bs-button-radius - Corner radius. Aliased to `--bs-border-radius-100` by default.
858
- * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-300`.
886
+ * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-150` (12px).
887
+ * @prop --bs-button-padding-x-md - Left/right padding at `size="md"`. Aliased to `--bs-spacing-150` (12px).
888
+ * @prop --bs-button-padding-x-lg - Left/right padding at `size="lg"`. Aliased to `--bs-spacing-150` (12px).
859
889
  * @prop --bs-button-width - Width of the button. `auto` by default (fits its content); set `100%` for a full-width button, e.g. `bs-button { --bs-button-width: 100%; }`.
860
890
  * @prop --bs-button-subtle-color - Label/icon colour, `variant="subtle"`. Aliased to `--bs-color-neutral-default`; set it to `var(--bs-text-action)` for a blue text button.
861
- * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
862
- * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
863
- * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
891
+ * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-400` (32px).
892
+ * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-550` (44px).
893
+ * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-600` (48px).
894
+ * @prop --bs-button-outlined-color - Label/icon colour, `variant="outlined"`, default. Aliased to `--bs-color-primary-default`.
864
895
  * @prop --bs-button-neutral-border - Border color, `variant="neutral"`, default/disabled. Aliased to `--bs-border-neutral-container`.
865
896
  * @prop --bs-button-neutral-border-hover - Border color, `variant="neutral"`, hover. Aliased to `--bs-border-neutral-container-hover`.
866
897
  * @prop --bs-button-neutral-border-pressed - Border color, `variant="neutral"`, pressed. Aliased to `--bs-border-neutral-container-pressed`.
867
- * @prop --bs-button-padding-x-icon-side - Horizontal padding on an edge that's adjacent to a leading/trailing icon (tighter than the plain text-only edge). Aliased to `--bs-spacing-150`.
868
- * @prop --bs-button-padding-x-label-side - Horizontal padding on the opposite edge, when an icon on the other side needs compensating extra space to keep the button optically balanced. Aliased to `--bs-spacing-250`.
898
+ * @prop --bs-button-padding-x-icon-side - Horizontal padding on an edge that's adjacent to a leading/trailing icon (now equal to the text-only edge). Aliased to `--bs-spacing-150`.
899
+ * @prop --bs-button-padding-x-label-side - Horizontal padding on the opposite edge, when an icon on the other side needs compensating extra space to keep the button optically balanced. Aliased to `--bs-spacing-150` (no compensation by default).
869
900
  */
870
901
  interface BsButton {
902
+ /**
903
+ * Forwarded to the inner `<button>` as `aria-controls`. Note an id only resolves inside this component's shadow tree, so it can't point at an element in the page's light DOM.
904
+ * @default null
905
+ */
906
+ "ariaControls": string | null;
907
+ /**
908
+ * Forwarded to the inner `<button>` as `aria-expanded`, for disclosure/menu buttons.
909
+ * @default null
910
+ */
911
+ "ariaExpanded": 'true' | 'false' | null;
912
+ /**
913
+ * Forwarded to the inner `<button>` as `aria-haspopup`.
914
+ * @default null
915
+ */
916
+ "ariaHasPopup": 'true' | 'false' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | null;
871
917
  /**
872
918
  * Accessible name for the button. Required for icon-only usage (no visible label text via the default slot) so screen readers still announce what the button does. Stencil reflects this camelCase prop to the `aria-label` HTML attribute automatically.
873
919
  * @default null
@@ -878,6 +924,10 @@ export namespace Components {
878
924
  * @default false
879
925
  */
880
926
  "disabled": boolean;
927
+ /**
928
+ * Makes this a toggle button: sets `aria-pressed` on the inner `<button>` to `true`/`false`. Leave it unset (the default) for a plain action button, which then has no `aria-pressed` at all. The component does not toggle itself; the owner flips this on click.
929
+ */
930
+ "pressed"?: boolean;
881
931
  /**
882
932
  * Sizing scale.
883
933
  * @default 'md'
@@ -933,11 +983,37 @@ export namespace Components {
933
983
  * - For a dismissible/transient message — use a modal or a dedicated notification component.
934
984
  */
935
985
  interface BsCard {
986
+ /**
987
+ * Makes the whole card a link to this URL (a real `<a>`). Takes precedence over `selectable`.
988
+ */
989
+ "href"?: string;
990
+ /**
991
+ * Accessible name for the clickable card, used instead of the `header` slot text. Set it when there is no `header` content, or when the header text is not a good name on its own.
992
+ */
993
+ "label"?: string;
994
+ /**
995
+ * Link `rel`, only used with `href`.
996
+ */
997
+ "rel"?: string;
998
+ /**
999
+ * Makes the whole card a toggle (a real `<button aria-pressed>`). Ignored when `href` is set.
1000
+ * @default false
1001
+ */
1002
+ "selectable": boolean;
1003
+ /**
1004
+ * Whether a `selectable` card is selected. Mutable and reflected; toggled by the user.
1005
+ * @default false
1006
+ */
1007
+ "selected": boolean;
936
1008
  /**
937
1009
  * Maps to the brandsync-tokens `--bs-paper-bg-*` set — Brandsync's tokens don't have a dedicated "card" component yet, so this reuses the existing Paper surface tokens.
938
1010
  * @default 'raised'
939
1011
  */
940
1012
  "surface": BsCardSurface;
1013
+ /**
1014
+ * Link `target`, only used with `href`. With `_blank`, `rel` defaults to `noopener noreferrer`.
1015
+ */
1016
+ "target"?: string;
941
1017
  }
942
1018
  /**
943
1019
  * A carousel that shows a page of slides at a time, with a tracker (dots or numbered blocks) and
@@ -1354,6 +1430,9 @@ export namespace Components {
1354
1430
  * `--bs-color-primary-container-pressed`.
1355
1431
  * @prop --bs-chatbot-suggestion-button-bg-focus - Background when focused. Aliased to
1356
1432
  * `--bs-color-primary-container-hover` (same as hover).
1433
+ * @prop --bs-chatbot-suggestion-button-bg-disabled - Background when disabled. Aliased to `--bs-surface-action-disabled`.
1434
+ * @prop --bs-chatbot-suggestion-button-text-disabled - Text color when disabled. Aliased to `--bs-text-on-disabled`.
1435
+ * @prop --bs-chatbot-suggestion-button-border-color-disabled - Border color when disabled. Aliased to `--bs-border-neutral-disabled`.
1357
1436
  * @prop --bs-chatbot-suggestion-button-text-default - Text color in the default state. Aliased to
1358
1437
  * `--bs-text-action`.
1359
1438
  * @prop --bs-chatbot-suggestion-button-text-hover - Text color on hover, pressed, and focus.
@@ -1425,6 +1504,45 @@ export namespace Components {
1425
1504
  */
1426
1505
  "value": string;
1427
1506
  }
1507
+ /**
1508
+ * A labelled group of `bs-checkbox`es: a `<fieldset>` with a `<legend>`, helper or error text, and
1509
+ * a single `value` array of the checked boxes' values.
1510
+ * Composed from: `bs-checkbox` (slotted by you).
1511
+ * ## When to use
1512
+ * - A set of related, independent options where any number may be chosen ("Notify me by ...").
1513
+ * ## When not to use
1514
+ * - Exactly one choice: use `bs-radio-group`.
1515
+ * - A single yes/no: use one `bs-checkbox`, or `bs-switch` for an immediate setting.
1516
+ */
1517
+ interface BsCheckboxGroup {
1518
+ /**
1519
+ * Helper text under the options. Replaced by `error` while that is set.
1520
+ */
1521
+ "description"?: string;
1522
+ /**
1523
+ * Error message. Sets `aria-invalid`, replaces the helper text, and puts every checkbox in its error style.
1524
+ */
1525
+ "error"?: string;
1526
+ /**
1527
+ * Legend: the visible group label, also its accessible name.
1528
+ */
1529
+ "label"?: string;
1530
+ /**
1531
+ * Layout of the checkboxes.
1532
+ * @default 'vertical'
1533
+ */
1534
+ "orientation": BsCheckboxGroupOrientation;
1535
+ /**
1536
+ * Marks the group as required: shows an asterisk after the label and sets `aria-required`.
1537
+ * @default false
1538
+ */
1539
+ "required": boolean;
1540
+ /**
1541
+ * `value`s of the checked checkboxes. An array, so set it as a JS property, not an attribute. Setting it checks the matching boxes and unchecks the rest.
1542
+ * @default []
1543
+ */
1544
+ "value": string[];
1545
+ }
1428
1546
  /**
1429
1547
  * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
1430
1548
  * known yet (e.g. still being fetched from an API). Renders a small square (matching the
@@ -1596,6 +1714,71 @@ export namespace Components {
1596
1714
  */
1597
1715
  "sourceName"?: string;
1598
1716
  }
1717
+ /**
1718
+ * A block of code with an optional filename header and a Copy button, or (with `inline`) styled
1719
+ * inline code. Dependency-free: it does no syntax highlighting itself. Pass plain text with `code`,
1720
+ * or slot pre-highlighted markup (e.g. the output of Shiki or Prism: spans coloured with your own
1721
+ * CSS) as the default slot.
1722
+ * Follows light and dark mode through the surface/text tokens. Long lines scroll horizontally (the
1723
+ * scroll area is keyboard focusable) or, with `wrap`, break onto the next line.
1724
+ * Copying announces the `copiedLabel` text through a polite live region, and the button label
1725
+ * changes to match for a few seconds.
1726
+ * Slotted content: keep it flush against the tags (`<bs-code-block><span>..</span></bs-code-block>`),
1727
+ * since whitespace in a `<pre>`-style block is kept. The line count for `lineNumbers` and the text
1728
+ * that is copied are read from the slotted text.
1729
+ * Composed from: `bs-card` (the surface), `bs-button` and `bs-icon` (the Copy button).
1730
+ * ## When to use
1731
+ * - Showing a snippet, command or config the reader may want to copy.
1732
+ * - `inline` for a short code term inside a sentence.
1733
+ * ## When not to use
1734
+ * - Long files that need folding, search or editing: link to the source instead.
1735
+ * - Pre-formatted prose or tables: use ordinary text and table markup.
1736
+ */
1737
+ interface BsCodeBlock {
1738
+ /**
1739
+ * Plain-text code. When set it is shown (escaped) instead of the default slot, and is what Copy copies.
1740
+ */
1741
+ "code"?: string;
1742
+ /**
1743
+ * Label of the Copy button after copying, and the text announced to assistive tech.
1744
+ * @default 'Copied'
1745
+ */
1746
+ "copiedLabel": string;
1747
+ /**
1748
+ * Label of the Copy button.
1749
+ * @default 'Copy'
1750
+ */
1751
+ "copyLabel": string;
1752
+ /**
1753
+ * Name shown at the left of the header, e.g. `app.config.ts` or `Terminal`. Also names the code region for assistive tech.
1754
+ */
1755
+ "filename"?: string;
1756
+ /**
1757
+ * Remove the Copy button.
1758
+ * @default false
1759
+ */
1760
+ "hideCopy": boolean;
1761
+ /**
1762
+ * Render as inline code (a styled `<code>` inside a sentence): no header, no Copy button, no scrolling.
1763
+ * @default false
1764
+ */
1765
+ "inline": boolean;
1766
+ /**
1767
+ * Show a line number gutter. Line numbers need unwrapped lines, so `wrap` is ignored while this is set.
1768
+ * @default false
1769
+ */
1770
+ "lineNumbers": boolean;
1771
+ /**
1772
+ * Accessible name of the code region when there is no `filename`.
1773
+ * @default 'Code'
1774
+ */
1775
+ "regionLabel": string;
1776
+ /**
1777
+ * Wrap long lines instead of scrolling horizontally.
1778
+ * @default false
1779
+ */
1780
+ "wrap": boolean;
1781
+ }
1599
1782
  /**
1600
1783
  * A Ctrl+K command palette: a modal with a search field, grouped commands, navigation and records, a
1601
1784
  * no-results view and a keyboard-hint footer. The data, the filtering, the command registry and the
@@ -2253,6 +2436,12 @@ export namespace Components {
2253
2436
  * ## When not to use
2254
2437
  * - A handful of unrelated key/value pairs — a simple list or card is lighter-weight.
2255
2438
  * - Deeply nested/hierarchical data — this component renders one flat row per record.
2439
+ * ## Rich cells
2440
+ * Without a `cellRenderer`, each cell is a named slot, `cell-{row.id}-{column.key}`, whose fallback
2441
+ * content is the plain-text value. Slot an element into it to put app-owned content (a framework
2442
+ * component, a router link, a badge) in the cell, e.g.
2443
+ * `<a slot="cell-7-name" href="/people/7">Ada</a>`. The slotted element lives in the light DOM, so
2444
+ * it keeps your framework, router and CSP; nothing is parsed as HTML.
2256
2445
  */
2257
2446
  interface BsDataTable {
2258
2447
  /**
@@ -2287,6 +2476,11 @@ export namespace Components {
2287
2476
  * @default 'asc'
2288
2477
  */
2289
2478
  "sortDirection": 'asc' | 'desc';
2479
+ /**
2480
+ * Alternates the row background (even rows use `--bs-data-table-stripe-bg`) so wide tables are easier to scan. Follows dark mode through the token. Row hover still wins.
2481
+ * @default false
2482
+ */
2483
+ "striped": boolean;
2290
2484
  }
2291
2485
  /**
2292
2486
  * An inline calendar for picking a single date, or a start/end date range. Matches the Figma
@@ -2382,6 +2576,68 @@ export namespace Components {
2382
2576
  */
2383
2577
  "yearLabel": string;
2384
2578
  }
2579
+ /**
2580
+ * One term and its detail inside a `bs-description-list` (a label/value pair such as "Owner: Sam Lee").
2581
+ * ## When to use
2582
+ * - As a child of `bs-description-list`, one per key/value pair.
2583
+ * ## When not to use
2584
+ * - Rows of records with media and actions -- use `bs-list-item`.
2585
+ * - Many pairs compared across several records -- use `bs-data-table`.
2586
+ * Each item renders its own `<dl>` containing one `<div>` group with a real `<dt>` and `<dd>`. (A `dl` cannot
2587
+ * span the shadow boundary between a list and its items, so the grouping lives here.)
2588
+ * @prop --bs-description-item-gap - Gap between term and detail when stacked. Aliased to `--bs-spacing-25`.
2589
+ * @prop --bs-description-item-term-width - Width of the term column when `layout="horizontal"`. `12rem`.
2590
+ * @prop --bs-description-item-column-gap - Gap between the term and detail columns when horizontal. Aliased to `--bs-spacing-200`.
2591
+ * @prop --bs-description-item-padding-y - Vertical padding. Aliased to `--bs-spacing-100`.
2592
+ * @prop --bs-description-item-term-color - Aliased to `--bs-text-secondary`.
2593
+ * @prop --bs-description-item-description-color - Aliased to `--bs-text-default`.
2594
+ */
2595
+ interface BsDescriptionItem {
2596
+ /**
2597
+ * The detail (value). The default slot overrides it.
2598
+ */
2599
+ "description"?: string;
2600
+ /**
2601
+ * Set by the parent `bs-description-list`: `stacked` (term above detail) or `horizontal` (side by side).
2602
+ * @default 'stacked'
2603
+ */
2604
+ "layout": 'stacked' | 'horizontal';
2605
+ /**
2606
+ * The term (label).
2607
+ */
2608
+ "term"?: string;
2609
+ }
2610
+ /**
2611
+ * A key/value list of `bs-description-item` pairs (term and detail), for record summaries, settings read-outs
2612
+ * and metadata panels. Terms and details use real `dt`/`dd` semantics.
2613
+ * ## When to use
2614
+ * - A read-only summary of one record: "Owner", "Created", "Status" with their values.
2615
+ * ## When not to use
2616
+ * - A list of records with media and actions -- use `bs-list`.
2617
+ * - Editable fields -- use form components.
2618
+ * - Several records compared across columns -- use `bs-data-table`.
2619
+ * Built from `bs-description-item` children (light DOM; the list never moves nodes). Each item holds its own
2620
+ * `dl`; the list sets the layout on them and draws dividers.
2621
+ * @prop --bs-description-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
2622
+ * @prop --bs-description-list-gap - Gap between items. `0`.
2623
+ */
2624
+ interface BsDescriptionList {
2625
+ /**
2626
+ * Accessible name of the group.
2627
+ * @default null
2628
+ */
2629
+ "ariaLabel": string | null;
2630
+ /**
2631
+ * Draws a 1px separator between items.
2632
+ * @default false
2633
+ */
2634
+ "dividers": boolean;
2635
+ /**
2636
+ * `stacked` puts each term above its detail; `horizontal` puts them side by side in two columns.
2637
+ * @default 'stacked'
2638
+ */
2639
+ "layout": 'stacked' | 'horizontal';
2640
+ }
2385
2641
  /**
2386
2642
  * An overlay dialog that interrupts the current flow for a focused task or confirmation.
2387
2643
  * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
@@ -2454,6 +2710,33 @@ export namespace Components {
2454
2710
  */
2455
2711
  "variant": BsDividerVariant;
2456
2712
  }
2713
+ /**
2714
+ * A menu trigger: a button (slot `trigger`) that opens a `bs-menu` of `bs-menu-item`s in an anchored,
2715
+ * viewport-aware popup, with the menu keyboard pattern and focus management built in.
2716
+ * Opens on click, Enter, Space (via the trigger button) and ArrowDown. On open focus moves to the
2717
+ * first enabled menu item; Up/Down/Home/End move between items (handled by `bs-menu`). The dropdown
2718
+ * closes on outside click, Escape (focus returns to the trigger), Tab, and after an item is activated.
2719
+ * The trigger gets `aria-haspopup="menu"` and `aria-expanded` kept in sync.
2720
+ * Composed from `bs-popover` (anchor positioning, flipping, outside-click and Escape dismissal, open
2721
+ * motion), `bs-menu` and `bs-menu-item` (slotted by you), and a `bs-button` / `bs-icon-button` trigger.
2722
+ * ## When to use
2723
+ * - A header or toolbar action that reveals a short list of commands ("More", "Account", "Sort by").
2724
+ * ## When not to use
2725
+ * - Free-form popup content such as forms or arbitrary panels (use `bs-popover`).
2726
+ * - Choosing a value for a form field (use `bs-select`).
2727
+ */
2728
+ interface BsDropdown {
2729
+ /**
2730
+ * Whether the menu is shown.
2731
+ * @default false
2732
+ */
2733
+ "open": boolean;
2734
+ /**
2735
+ * Where the menu sits relative to the trigger; flips to stay in the viewport.
2736
+ * @default 'bottom-start'
2737
+ */
2738
+ "placement": BsDropdownPlacement;
2739
+ }
2457
2740
  /**
2458
2741
  * A centered "nothing to show" block: an icon tile, a heading, a description and an optional action.
2459
2742
  * Used for empty lists, "no results" and error states inside a panel, card or page section.
@@ -2468,6 +2751,7 @@ export namespace Components {
2468
2751
  * @prop --bs-empty-state-padding-y - Vertical padding. Aliased to `--bs-spacing-700` (56px).
2469
2752
  * @prop --bs-empty-state-padding-x - Horizontal padding. Aliased to `--bs-spacing-300` (24px).
2470
2753
  * @prop --bs-empty-state-gap - Gap between tile, heading, description and action. Aliased to `--bs-spacing-150`.
2754
+ * @prop --bs-empty-state-heading-size - Aliased to `--bs-font-size-xl` (`--bs-font-size-3xl` at `size="page"`).
2471
2755
  * @prop --bs-empty-state-heading-color - Aliased to `--bs-text-default`.
2472
2756
  * @prop --bs-empty-state-description-color - Aliased to `--bs-text-secondary`.
2473
2757
  */
@@ -2490,6 +2774,11 @@ export namespace Components {
2490
2774
  * @default 'default'
2491
2775
  */
2492
2776
  "intent": BsIconTileIntent;
2777
+ /**
2778
+ * `panel` (default) fits inside a card, table or section. `page` fills a whole view: more padding, a larger heading and a minimum height.
2779
+ * @default 'panel'
2780
+ */
2781
+ "size": 'panel' | 'page';
2493
2782
  }
2494
2783
  /**
2495
2784
  * A full-block page for when the user can't get to what they asked for: page not found (404), a server
@@ -2848,6 +3137,74 @@ export namespace Components {
2848
3137
  */
2849
3138
  "rowGap"?: string;
2850
3139
  }
3140
+ /**
3141
+ * A heading whose rendered element and visual style are chosen separately: `level` (or `as`) picks
3142
+ * the element for the document outline, `size` picks the look. Sizes map to the typography tokens
3143
+ * (`--bs-font-size-*`, `--bs-font-weight-*`, `--bs-line-height-*`, `--bs-typography-font-family-heading`).
3144
+ * Default sizes by level: 1 = 40px, 2 = 32px, 3 = 24px, 4 = 20px, 5 = 18px, 6 = 16px; `display` is 48px.
3145
+ * Composed from: nothing (leaf).
3146
+ * ## When to use
3147
+ * - Any page or section title. Keep levels in order (no jumping from 1 to 4); change `size`, not `level`, to restyle.
3148
+ * ## When not to use
3149
+ * - Body copy, captions and labels: use `bs-text`.
3150
+ * - To make text big without it being a heading: use `bs-text` with `as="p"`.
3151
+ */
3152
+ interface BsHeading {
3153
+ /**
3154
+ * Overrides the rendered element, e.g. `as="p"` for a heading-looking line that is not part of the outline. When set, `level` only drives the default size.
3155
+ */
3156
+ "as"?: BsHeadingAs;
3157
+ /**
3158
+ * Heading level 1-6: chooses the element (`h1`-`h6`) and, unless `size` is set, the visual size.
3159
+ * @default 2
3160
+ */
3161
+ "level": BsHeadingLevel;
3162
+ /**
3163
+ * Visual size, independent of the element: `display` or `1`-`6` (the default sizes of levels 1-6). Defaults to `level`.
3164
+ */
3165
+ "size"?: BsHeadingSize;
3166
+ /**
3167
+ * Text colour from the text tokens. `inherit` uses the surrounding colour.
3168
+ * @default 'default'
3169
+ */
3170
+ "tone": BsHeadingTone;
3171
+ }
3172
+ /**
3173
+ * A sized, coloured icon. Renders inline SVG from a named registry (`name`), or any SVG you slot in.
3174
+ * Built-in names: `menu`, `arrow-right`, `arrow-left`, `check`, `close`, `chevron-down`,
3175
+ * `external-link`, `copy`, `search`, plus Phosphor glyphs `user`, `star`, `star-fill`, `x`,
3176
+ * `paper-plane-right`, `note-pencil`, `clock-counter-clockwise`, `arrows-out-simple` (256x256 filled). Add more with `registerIcons({ name: '<path d="..."/>' })`
3177
+ * (exported from the package entry): each value is the inner markup of a 24x24, `currentColor`
3178
+ * stroke icon, or pass `{ viewBox, body }` for a filled glyph on another grid.
3179
+ * Decorative by default (`aria-hidden`). Set `label` when the icon alone conveys meaning; it is then
3180
+ * exposed as an image with that name. An icon inside a button never needs `label`: name the button.
3181
+ * Composed from: nothing (leaf). Used by `bs-code-block`.
3182
+ * ## When to use
3183
+ * - A glyph beside text or inside a button, sized and coloured from tokens.
3184
+ * ## When not to use
3185
+ * - As a control by itself: wrap it in `bs-icon-button`.
3186
+ * - For a tinted status square: use `bs-icon-tile`.
3187
+ */
3188
+ interface BsIcon {
3189
+ /**
3190
+ * Accessible name. When set the icon is exposed as an image with this name; when empty it is decorative and hidden from assistive tech.
3191
+ */
3192
+ "label"?: string;
3193
+ /**
3194
+ * Registered icon name (see the component description for the built-in set).
3195
+ */
3196
+ "name"?: string;
3197
+ /**
3198
+ * Size: `xs` 12px, `sm` 16px, `md` 24px, `lg` 32px, `xl` 48px.
3199
+ * @default 'md'
3200
+ */
3201
+ "size": BsIconSize;
3202
+ /**
3203
+ * Colour from the icon tokens. `inherit` uses the surrounding text colour (`currentColor`).
3204
+ * @default 'default'
3205
+ */
3206
+ "tone": BsIconTone;
3207
+ }
2851
3208
  /**
2852
3209
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
2853
3210
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -2867,6 +3224,21 @@ export namespace Components {
2867
3224
  * accessible name.
2868
3225
  */
2869
3226
  interface BsIconButton {
3227
+ /**
3228
+ * Forwarded to the inner `<button>` as `aria-controls`. Note an id only resolves inside this component's shadow tree, so it can't point at an element in the page's light DOM.
3229
+ * @default null
3230
+ */
3231
+ "ariaControls": string | null;
3232
+ /**
3233
+ * Forwarded to the inner `<button>` as `aria-expanded`, for disclosure/menu buttons.
3234
+ * @default null
3235
+ */
3236
+ "ariaExpanded": 'true' | 'false' | null;
3237
+ /**
3238
+ * Forwarded to the inner `<button>` as `aria-haspopup`.
3239
+ * @default null
3240
+ */
3241
+ "ariaHasPopup": 'true' | 'false' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | null;
2870
3242
  /**
2871
3243
  * Accessible name for the button. Required -- this component is always icon-only, so there's no visible label text for screen readers to fall back on. Stencil reflects this camelCase prop to the `aria-label` HTML attribute automatically.
2872
3244
  * @default null
@@ -2979,7 +3351,9 @@ export namespace Components {
2979
3351
  * range of related "field" shapes (number stepper, password reveal, date, dropdown trigger,
2980
3352
  * select, textarea, chip input, initials, country, and pin) via the `type` prop, since they all
2981
3353
  * share the same label/description/error/icon-slot chrome.
2982
- * Built from: `bs-menu`/`bs-menu-item` (`type="dropdown"`) and `bs-chip-informative` + `bs-icon-button` (`type="chip"`).
3354
+ * Built from: `bs-menu`/`bs-menu-item` (`type="dropdown"`), `bs-chip-informative` + `bs-icon-button` (`type="chip"`),
3355
+ * and `bs-icon-button` + `bs-spinner` (`type="combobox"` clear button / loading indicator; its listbox is a
3356
+ * hand-built `role="listbox"` because `bs-menu` is `role="menu"` and cannot host `option`s).
2983
3357
  * ## When to use
2984
3358
  * - Collecting a single line of free-text, email, password, or numeric input.
2985
3359
  * - Any of the other supported `type`s (search, date, dropdown, select, textarea, chip, initials,
@@ -2992,16 +3366,31 @@ export namespace Components {
2992
3366
  * options list at all (freeform chip entry).
2993
3367
  */
2994
3368
  interface BsInput {
3369
+ /**
3370
+ * Accessible name for the control, used only when no visible `label` is set (e.g. a search field with no visible label). Passed to the inner native control, because an `aria-label` on the `<bs-input>` host cannot name an element inside its shadow root.
3371
+ * @default null
3372
+ */
3373
+ "ariaLabel": string | null;
2995
3374
  /**
2996
3375
  * Current chips for `type="chip"`. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
2997
3376
  * @default []
2998
3377
  */
2999
3378
  "chips": string[];
3379
+ /**
3380
+ * `type="combobox"`: accessible name of the clear button.
3381
+ * @default 'Clear'
3382
+ */
3383
+ "clearLabel": string;
3000
3384
  /**
3001
3385
  * Current selected country code for `type="country"`.
3002
3386
  * @default ''
3003
3387
  */
3004
3388
  "country": string;
3389
+ /**
3390
+ * `type="country"`: accessible name of the country picker (its visible content is just the flag).
3391
+ * @default 'Country'
3392
+ */
3393
+ "countryLabel": string;
3005
3394
  /**
3006
3395
  * Country select options for `type="country"`. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
3007
3396
  * @default []
@@ -3018,6 +3407,11 @@ export namespace Components {
3018
3407
  */
3019
3408
  "disabled": boolean;
3020
3409
  "error"?: string;
3410
+ /**
3411
+ * `type="combobox"`: when true (default) `options` are filtered client-side by whether the label contains the typed text. Set false when you supply already-filtered results yourself (e.g. from a server) in response to `bsInput`.
3412
+ * @default true
3413
+ */
3414
+ "filterOptions": boolean;
3021
3415
  /**
3022
3416
  * Accessible name of the password toggle while the password is visible.
3023
3417
  * @default 'Hide password'
@@ -3039,6 +3433,16 @@ export namespace Components {
3039
3433
  * @default 4
3040
3434
  */
3041
3435
  "length": number;
3436
+ /**
3437
+ * `type="combobox"`: shows a loading indicator and, while no options match, a loading message in the popup instead of "no results". Use while fetching `options` asynchronously.
3438
+ * @default false
3439
+ */
3440
+ "loading": boolean;
3441
+ /**
3442
+ * `type="combobox"`: text of the popup row shown while `loading` and nothing matches.
3443
+ * @default 'Loading...'
3444
+ */
3445
+ "loadingLabel": string;
3042
3446
  /**
3043
3447
  * Maximum value for `type="number"`'s stepper buttons.
3044
3448
  */
@@ -3052,12 +3456,22 @@ export namespace Components {
3052
3456
  */
3053
3457
  "name"?: string;
3054
3458
  /**
3055
- * Whether the `type="dropdown"` trigger is open. Reflects to an attribute so consumers can style an open state via CSS. When `options` is non-empty, this also controls whether the `bs-menu` of `bs-menu-item`s is rendered below the field.
3459
+ * `type="combobox"`: text of the popup row shown when no option matches.
3460
+ * @default 'No results'
3461
+ */
3462
+ "noResultsLabel": string;
3463
+ /**
3464
+ * Whether the `type="dropdown"` / `type="combobox"` popup is open. Reflects to an attribute so consumers can style an open state via CSS. When `options` is non-empty, this also controls whether the `bs-menu` of `bs-menu-item`s is rendered below the field.
3056
3465
  * @default false
3057
3466
  */
3058
3467
  "open": boolean;
3059
3468
  /**
3060
- * Options for `type="select"` (rendered as native `<option>`s) and `type="dropdown"` (rendered as a `bs-menu` of `bs-menu-item`s when `open`). Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
3469
+ * `type="date"`: accessible name of the default calendar button that opens the native picker.
3470
+ * @default 'Open date picker'
3471
+ */
3472
+ "openPickerLabel": string;
3473
+ /**
3474
+ * Options for `type="select"` (rendered as `role="option"` rows of an in-shadow listbox) and `type="dropdown"` (rendered as a `bs-menu` of `bs-menu-item`s when `open`). Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
3061
3475
  * @default []
3062
3476
  */
3063
3477
  "options": { label: string; value: string }[];
@@ -3082,6 +3496,11 @@ export namespace Components {
3082
3496
  * @default 1
3083
3497
  */
3084
3498
  "step": number;
3499
+ /**
3500
+ * `type="initials"`: accessible name of the title picker (its visible text is just the title).
3501
+ * @default 'Title'
3502
+ */
3503
+ "titleLabel": string;
3085
3504
  /**
3086
3505
  * Title select options for `type="initials"` (e.g. `['Mrs.', 'Mr.', 'Dr.']`). Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
3087
3506
  * @default []
@@ -3102,7 +3521,8 @@ export namespace Components {
3102
3521
  | 'chip'
3103
3522
  | 'initials'
3104
3523
  | 'country'
3105
- | 'pin';
3524
+ | 'pin'
3525
+ | 'combobox';
3106
3526
  /**
3107
3527
  * Current value. Native `input`/`change` events don't cross the Shadow DOM boundary, so this component re-dispatches them as `bsInput`/`bsChange` custom events instead. Mutable so the `number` type's stepper buttons can update it directly.
3108
3528
  * @default ''
@@ -3254,6 +3674,56 @@ export namespace Components {
3254
3674
  */
3255
3675
  "singleKeyLabel": string;
3256
3676
  }
3677
+ /**
3678
+ * A navigation link: either text (inline within a sentence, or standalone with a 44px target) or a
3679
+ * link styled as a primary button. Always renders a real `<a href>`.
3680
+ * Built from: hand-built `<a>` (leaf). `bs-button` renders a `<button>` and has no `href`; nesting a
3681
+ * button in an anchor is invalid HTML, so the `button` variant reuses the primary button's colour
3682
+ * tokens instead. Known gap: add `href` support to `bs-button` and compose it here.
3683
+ * ## When to use
3684
+ * - Navigating to another page or an external resource.
3685
+ * ## When not to use
3686
+ * - Triggering an action on the current page (use `bs-button`).
3687
+ */
3688
+ interface BsLink {
3689
+ /**
3690
+ * Accessible name override (needed on the host, as `aria-label` does not cross the shadow boundary).
3691
+ * @default null
3692
+ */
3693
+ "ariaLabel": string | null;
3694
+ /**
3695
+ * Marks the link as the current page (`aria-current="page"`).
3696
+ * @default false
3697
+ */
3698
+ "current": boolean;
3699
+ /**
3700
+ * Shows the external-link icon (always shown for `target="_blank"`).
3701
+ * @default false
3702
+ */
3703
+ "external": boolean;
3704
+ /**
3705
+ * Visually hidden suffix announced for links that open in a new tab.
3706
+ * @default '(opens in a new tab)'
3707
+ */
3708
+ "externalLabel": string;
3709
+ /**
3710
+ * Destination.
3711
+ */
3712
+ "href"?: string;
3713
+ /**
3714
+ * Link relationship. Defaults to `noopener noreferrer` when `target="_blank"`.
3715
+ */
3716
+ "rel"?: string;
3717
+ /**
3718
+ * Browsing context (e.g. `_blank`). `_blank` implies the external icon.
3719
+ */
3720
+ "target"?: string;
3721
+ /**
3722
+ * `inline` sits in running text; `standalone` has a 44px minimum touch target; `button` is styled as a primary button (also 44px).
3723
+ * @default 'inline'
3724
+ */
3725
+ "variant": BsLinkVariant;
3726
+ }
3257
3727
  /**
3258
3728
  * A vertical list of `bs-list-item` rows, optionally single-select.
3259
3729
  * ## When to use
@@ -3263,6 +3733,9 @@ export namespace Components {
3263
3733
  * - A popup list of actions -- use `bs-menu`.
3264
3734
  * - Navigation between app sections -- use `bs-navigation-drawer`.
3265
3735
  * - Multi-column, sortable or paged data -- use `bs-data-table`.
3736
+ * `variant` switches between a plain list, a bulleted list and a numbered list; `dividers` gives a divided
3737
+ * list. The list keeps real list semantics in every variant (`role="list"` with `listitem` rows); the bullet
3738
+ * or number is drawn by the row and hidden from assistive technology, which announces position itself.
3266
3739
  * Built from `bs-list-item` children (light DOM; the list never moves nodes).
3267
3740
  * @prop --bs-list-gap - Gap between rows. Defaults to `0`.
3268
3741
  * @prop --bs-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
@@ -3288,6 +3761,11 @@ export namespace Components {
3288
3761
  * @default null
3289
3762
  */
3290
3763
  "value": string | null;
3764
+ /**
3765
+ * `plain` (default), `bulleted` (a bullet before each row) or `numbered` (1., 2., 3., ...). Ignored when `selectable`.
3766
+ * @default 'plain'
3767
+ */
3768
+ "variant": 'plain' | 'bulleted' | 'numbered';
3291
3769
  }
3292
3770
  /**
3293
3771
  * A single row of a list: optional leading media (avatar, icon, image), a label, a description and
@@ -3347,6 +3825,11 @@ export namespace Components {
3347
3825
  * @default null
3348
3826
  */
3349
3827
  "label": string | null;
3828
+ /**
3829
+ * Set by the parent `bs-list` for `bulleted` / `numbered` variants: the visual marker. Hidden from assistive technology. Do not set by hand.
3830
+ * @default null
3831
+ */
3832
+ "marker": string | null;
3350
3833
  /**
3351
3834
  * Marks the row as selected. Managed by the parent `bs-list` when it is `selectable`.
3352
3835
  * @default false
@@ -3805,6 +4288,10 @@ export namespace Components {
3805
4288
  * @default false
3806
4289
  */
3807
4290
  "expanded": boolean;
4291
+ /**
4292
+ * Makes a leaf item a real link: renders an `<a part="item" href>` instead of the `<button>`, so open-in-new-tab, copy link address, middle-click and the status-bar URL work. Ignored when `expandable` (groups stay buttons). `bsSelect` still fires on a plain click and is **cancelable**: call `event.preventDefault()` to stop the navigation and route it yourself (an SPA router). Ctrl/cmd/shift/alt-clicks and middle-clicks are left to the browser and do not emit `bsSelect`.
4293
+ */
4294
+ "href"?: string;
3808
4295
  /**
3809
4296
  * Marks this as a child row nested under an `expandable` parent (via `slot="children"`) -- deepens the left indent and stops reserving `icon` slot space entirely (Figma's nested rows never have icons).
3810
4297
  * @default false
@@ -3815,6 +4302,10 @@ export namespace Components {
3815
4302
  * @default false
3816
4303
  */
3817
4304
  "selected": boolean;
4305
+ /**
4306
+ * `target` of the link, when `href` is set.
4307
+ */
4308
+ "target"?: string;
3818
4309
  }
3819
4310
  /**
3820
4311
  * The top-level navigation bar for a page: the BrandSync logo plus two consumer-provided slots
@@ -4486,6 +4977,11 @@ export namespace Components {
4486
4977
  * - An on/off setting that takes effect immediately (no explicit form submission) -- use `bs-switch`.
4487
4978
  */
4488
4979
  interface BsRadio {
4980
+ /**
4981
+ * Accessible name for the radio, set as `aria-label` on the native input. Use it when the radio has no slotted label text (an icon-only choice) or its visible label lives elsewhere. Same as `bs-checkbox` / `bs-switch`.
4982
+ * @default null
4983
+ */
4984
+ "ariaLabel": string | null;
4489
4985
  /**
4490
4986
  * Whether the radio is checked. Mutable so clicking the label/input sets it directly.
4491
4987
  * @default false
@@ -4506,22 +5002,73 @@ export namespace Components {
4506
5002
  "value": string;
4507
5003
  }
4508
5004
  /**
4509
- * A touch-ripple effect: on pointer press, a circle grows from the press point and fades out.
4510
- * It is a building block for pressable components (`bs-button`, `bs-icon-button`, ...), not something
4511
- * to place on a page by itself. Put it inside a positioned, pressable parent; it fills that parent,
4512
- * follows its corner radius, and listens for `pointerdown` on it. Pointer-events pass through, so the
4513
- * parent still receives every click.
4514
- * The motion uses the shared duration and easing tokens. Under `prefers-reduced-motion: reduce` those
4515
- * durations are `0ms`, and the ripple does not play at all.
5005
+ * A labelled group of `bs-radio`s: a visible label, helper or error text, an accessible
5006
+ * `role="radiogroup"`, and a single `value` for the whole set.
5007
+ * The group gives its radios one shared `name` (its own `name`, or a generated one) so they behave
5008
+ * as one native-style group: arrow keys move the selection (wrapping), only the checked radio is in
5009
+ * the tab order, and checking one unchecks the others. It keeps at most one radio checked (the
5010
+ * first one wins if several start checked).
5011
+ * Composed from: `bs-radio` (slotted by you).
4516
5012
  * ## When to use
4517
- * - Inside a pressable `bs-*` component, to give press feedback.
5013
+ * - A set of 2-5 mutually exclusive options that should all stay visible, with a shared label.
4518
5014
  * ## When not to use
4519
- * - As a hover or focus indicator. Those are colour changes on the parent.
4520
- * - On non-interactive surfaces.
4521
- * Set the custom properties on the `bs-ripple` element itself. Inside another component that means `::part(ripple)`,
4522
- * e.g. `bs-button::part(ripple) { --bs-ripple-color: white; }`.
4523
- * @prop --bs-ripple-color - Ripple colour. `currentColor` by default, so it follows the parent's text colour and works on every variant.
4524
- * @prop --bs-ripple-opacity - Starting opacity of the ripple. No opacity token fits, so the default is `0.24`.
5015
+ * - Independent yes/no choices: use `bs-checkbox-group`.
5016
+ * - Many options: use a select or `bs-menu`.
5017
+ */
5018
+ interface BsRadioGroup {
5019
+ /**
5020
+ * Helper text under the options. Replaced by `error` while that is set.
5021
+ */
5022
+ "description"?: string;
5023
+ /**
5024
+ * Error message. Sets `aria-invalid`, replaces the helper text and is announced with the group.
5025
+ */
5026
+ "error"?: string;
5027
+ /**
5028
+ * Visible group label, also the accessible name of the group.
5029
+ */
5030
+ "label"?: string;
5031
+ /**
5032
+ * `name` given to every radio in the group. Defaults to a generated, unique name.
5033
+ */
5034
+ "name"?: string;
5035
+ /**
5036
+ * Layout of the radios.
5037
+ * @default 'vertical'
5038
+ */
5039
+ "orientation": BsRadioGroupOrientation;
5040
+ /**
5041
+ * Marks the group as required: sets `aria-required` and shows an asterisk after the label.
5042
+ * @default false
5043
+ */
5044
+ "required": boolean;
5045
+ /**
5046
+ * Check the first enabled radio when none is checked, so a choice is always made. Off by default so a form can start empty.
5047
+ * @default false
5048
+ */
5049
+ "selectFirst": boolean;
5050
+ /**
5051
+ * `value` of the checked radio. Setting it checks the matching radio (and unchecks the rest).
5052
+ */
5053
+ "value"?: string;
5054
+ }
5055
+ /**
5056
+ * A touch-ripple effect: on pointer press, a circle grows from the press point and fades out.
5057
+ * It is a building block for pressable components (`bs-button`, `bs-icon-button`, ...), not something
5058
+ * to place on a page by itself. Put it inside a positioned, pressable parent; it fills that parent,
5059
+ * follows its corner radius, and listens for `pointerdown` on it. Pointer-events pass through, so the
5060
+ * parent still receives every click.
5061
+ * The motion uses the shared duration and easing tokens. Under `prefers-reduced-motion: reduce` those
5062
+ * durations are `0ms`, and the ripple does not play at all.
5063
+ * ## When to use
5064
+ * - Inside a pressable `bs-*` component, to give press feedback.
5065
+ * ## When not to use
5066
+ * - As a hover or focus indicator. Those are colour changes on the parent.
5067
+ * - On non-interactive surfaces.
5068
+ * Set the custom properties on the `bs-ripple` element itself. Inside another component that means `::part(ripple)`,
5069
+ * e.g. `bs-button::part(ripple) { --bs-ripple-color: white; }`.
5070
+ * @prop --bs-ripple-color - Ripple colour. `currentColor` by default, so it follows the parent's text colour and works on every variant.
5071
+ * @prop --bs-ripple-opacity - Starting opacity of the ripple. No opacity token fits, so the default is `0.24`.
4525
5072
  * @prop --bs-ripple-duration - Length of the ripple. Aliased to `--bs-duration-slower`.
4526
5073
  * @prop --bs-ripple-easing - Curve of the ripple. Aliased to `--bs-easing-decelerate`.
4527
5074
  */
@@ -4590,6 +5137,74 @@ export namespace Components {
4590
5137
  */
4591
5138
  "value"?: string;
4592
5139
  }
5140
+ /**
5141
+ * A single-choice select: a field-shaped combobox that opens a scrollable listbox of options. Same
5142
+ * label / helper text / error chrome as `bs-input`.
5143
+ * Follows the WAI-ARIA select-only combobox pattern: focus stays on the combobox and the
5144
+ * highlighted option is exposed through `aria-activedescendant`.
5145
+ * Built from: the field/label/description/error styling language of `bs-input` (same `--bs-input-*`
5146
+ * tokens). The listbox rows are hand-built leaf elements: `bs-menu-item` is a `role="menuitem"`
5147
+ * button and `bs-popover` moves focus into its popup, neither of which fits the combobox/listbox
5148
+ * pattern where focus must stay on the field.
5149
+ * ## When to use
5150
+ * - Choosing exactly one value from a known list of roughly 4-15 options.
5151
+ * ## When not to use
5152
+ * - 2-3 options that should all be visible (use radios or `bs-toggle-button-group`).
5153
+ * - Very long or searchable lists (use `bs-input type="dropdown"` or a search pattern).
5154
+ */
5155
+ interface BsSelect {
5156
+ /**
5157
+ * Accessible name when there is no visible `label`.
5158
+ * @default null
5159
+ */
5160
+ "ariaLabel": string | null;
5161
+ /**
5162
+ * Helper text below the field (replaced by `error` when set).
5163
+ */
5164
+ "description"?: string;
5165
+ /**
5166
+ * Disables the select.
5167
+ * @default false
5168
+ */
5169
+ "disabled": boolean;
5170
+ /**
5171
+ * Error message; puts the field in its error state.
5172
+ */
5173
+ "error"?: string;
5174
+ /**
5175
+ * Visible label.
5176
+ */
5177
+ "label"?: string;
5178
+ /**
5179
+ * Name the value is submitted under in a surrounding `<form>`.
5180
+ */
5181
+ "name"?: string;
5182
+ /**
5183
+ * Whether the listbox is open.
5184
+ * @default false
5185
+ */
5186
+ "open": boolean;
5187
+ /**
5188
+ * The options. Must be set as a JS property, not an attribute.
5189
+ * @default []
5190
+ */
5191
+ "options": BsSelectOption[];
5192
+ /**
5193
+ * Text shown while no option is selected.
5194
+ * @default 'Select'
5195
+ */
5196
+ "placeholder": string;
5197
+ /**
5198
+ * Marks the field required (native form validation + asterisk).
5199
+ * @default false
5200
+ */
5201
+ "required": boolean;
5202
+ /**
5203
+ * The selected option's `value`.
5204
+ * @default ''
5205
+ */
5206
+ "value": string;
5207
+ }
4593
5208
  /**
4594
5209
  * The three moments around an expiring session, as one card. Matches the Figma "Session timeout"
4595
5210
  * component's three types:
@@ -4848,6 +5463,28 @@ export namespace Components {
4848
5463
  */
4849
5464
  "width"?: string;
4850
5465
  }
5466
+ /**
5467
+ * A "skip to main content" link: invisible until it receives keyboard focus, then shown at the top
5468
+ * of the page. Activating it moves focus to the element its `href` points at, so keyboard and
5469
+ * screen-reader users can bypass repeated navigation (WCAG 2.4.1 Bypass Blocks).
5470
+ * Place it as the very first focusable element on the page. Renders a real `<a>`; the focus move is
5471
+ * done explicitly (the target gets a temporary `tabindex="-1"` when it is not natively focusable),
5472
+ * because a fragment navigation alone does not reliably move focus in every browser.
5473
+ * ## When to use
5474
+ * - Once per page, before the header/navigation, pointing at the `<main>` landmark.
5475
+ * - Additionally before large repeated blocks (e.g. a long sidebar) pointing past them.
5476
+ * ## When not to use
5477
+ * - As a general in-page link -- use a plain link or `bs-table-of-contents`.
5478
+ * - When the page has no repeated blocks before its main content.
5479
+ * Composition: a leaf element (a single anchor); no existing `bs-*` component renders a link.
5480
+ */
5481
+ interface BsSkipLink {
5482
+ /**
5483
+ * Target to skip to: a fragment (`#main-content`) naming an element id in the same document or shadow tree, or any URL (then the browser just navigates). Point it at an element that exists -- if the id is not found, activating the link does nothing beyond the native fragment jump.
5484
+ * @default '#main-content'
5485
+ */
5486
+ "href": string;
5487
+ }
4851
5488
  /**
4852
5489
  * A slider for picking a single numeric value (`type="default"`), a value snapped to evenly
4853
5490
  * spaced ticks (`type="segmented"`), or a min/max pair (`type="range"`) from within a bounded
@@ -5164,6 +5801,61 @@ export namespace Components {
5164
5801
  */
5165
5802
  "wrap": boolean;
5166
5803
  }
5804
+ /**
5805
+ * A key figure: a label, a large value and an optional trend (up, down or flat) with a change figure.
5806
+ * ## When to use
5807
+ * - Dashboard KPIs and summary numbers ("Active users 1,284, up 12%").
5808
+ * ## When not to use
5809
+ * - A time series or comparison of many values -- use a chart.
5810
+ * - A progress toward a goal -- use `bs-progress` / `bs-progress-linear`.
5811
+ * - A count on another element -- use `bs-badge`.
5812
+ * **Built from:** `bs-card` (the surface).
5813
+ * The trend is never conveyed by colour or arrow alone: a visually hidden prefix ("Increase of") is
5814
+ * rendered before the change figure. Whether up is good depends on the metric, so the colour comes from
5815
+ * `trendIntent` (default: up is positive, down is negative; set `negative` for e.g. churn going up).
5816
+ */
5817
+ interface BsStat {
5818
+ /**
5819
+ * What the number measures.
5820
+ */
5821
+ "label": string;
5822
+ /**
5823
+ * Surface of the underlying `bs-card`.
5824
+ * @default 'raised'
5825
+ */
5826
+ "surface": BsCardSurface1;
5827
+ /**
5828
+ * Direction of change. Omit to hide the trend.
5829
+ */
5830
+ "trend"?: BsStatTrend;
5831
+ /**
5832
+ * Visually hidden prefix for `trend="down"`.
5833
+ * @default 'Decrease of'
5834
+ */
5835
+ "trendDownLabel": string;
5836
+ /**
5837
+ * Colour of the trend. Defaults from `trend`: up is positive, down is negative, neutral is neutral.
5838
+ */
5839
+ "trendIntent"?: BsStatTrendIntent;
5840
+ /**
5841
+ * Visually hidden text for `trend="neutral"`.
5842
+ * @default 'No change'
5843
+ */
5844
+ "trendNeutralLabel": string;
5845
+ /**
5846
+ * Visually hidden prefix for `trend="up"`.
5847
+ * @default 'Increase of'
5848
+ */
5849
+ "trendUpLabel": string;
5850
+ /**
5851
+ * The change figure shown next to the arrow (e.g. "12%").
5852
+ */
5853
+ "trendValue"?: string;
5854
+ /**
5855
+ * The figure itself, already formatted (e.g. "1,284" or "98.2%").
5856
+ */
5857
+ "value": string;
5858
+ }
5167
5859
  /**
5168
5860
  * A sequence of named steps showing overall progress through a multi-step flow (e.g. a checkout,
5169
5861
  * an onboarding wizard) -- each step reads as enabled (not yet reached), current, done, error, or
@@ -5345,6 +6037,63 @@ export namespace Components {
5345
6037
  */
5346
6038
  "value"?: string;
5347
6039
  }
6040
+ /**
6041
+ * An "On this page" navigation: a nested list of in-page links with a scroll spy that marks the
6042
+ * section currently in view (`aria-current="location"`), optionally sticky beside long content.
6043
+ * Give it entries in either of two ways:
6044
+ * - **`items` property** (a JS array, `{ label, href, children? }`) -- the data-driven way.
6045
+ * - **Slotted anchors** -- `<a href="#intro">Intro</a>`, optionally inside nested `<ul>`/`<li>` or with
6046
+ * `data-level="2"` for sub-sections. The component reads them and renders its own styled links (the
6047
+ * slotted markup is not displayed; it is the no-JavaScript fallback). Used when `items` is empty.
6048
+ * The scroll spy uses an `IntersectionObserver` on the elements the links point at. The current section
6049
+ * is the first one (in link order) that intersects the top band of the viewport defined by `rootMargin`;
6050
+ * when none does (between two sections) the previous one stays current. Observers are disconnected when
6051
+ * the element is removed from the DOM and re-created when it is re-attached.
6052
+ * Link targets are looked up by id in the same document (or shadow tree) as the component. Links whose
6053
+ * target does not exist are still shown but never become current.
6054
+ * ## When to use
6055
+ * - Long single-page content (documentation, policies, settings pages) with several headed sections.
6056
+ * ## When not to use
6057
+ * - Navigating between pages -- use `bs-navigation-drawer` or `bs-breadcrumbs`.
6058
+ * - Switching between panels of content that are not all on the page -- use `bs-tabs`.
6059
+ * Composition: leaf element (a nav landmark with anchors); no existing `bs-*` component renders links.
6060
+ */
6061
+ interface BsTableOfContents {
6062
+ /**
6063
+ * The `href` (`#id`) of the current section. Reflected; follows the scroll spy and clicks, and can be set to force a section.
6064
+ */
6065
+ "current"?: string;
6066
+ /**
6067
+ * Hides the visible title; the landmark keeps its accessible name.
6068
+ * @default false
6069
+ */
6070
+ "hideTitle": boolean;
6071
+ /**
6072
+ * Entries as a JS array (set as a property, not an attribute). Takes precedence over slotted anchors.
6073
+ * @default []
6074
+ */
6075
+ "items": BsTocItem[];
6076
+ /**
6077
+ * Accessible name of the `nav` landmark, and the visible title text.
6078
+ * @default 'On this page'
6079
+ */
6080
+ "label": string;
6081
+ /**
6082
+ * `rootMargin` of the spy's `IntersectionObserver`: shrinks the viewport to the band in which a section counts as "current". The default is the top 40% of the viewport. Raise the top value (e.g. `-64px 0px -60% 0px`) when a fixed header covers the top of the page.
6083
+ * @default '0px 0px -60% 0px'
6084
+ */
6085
+ "rootMargin": string;
6086
+ /**
6087
+ * Turns the scroll spy on or off. Off: `current` only changes when a link is clicked or it is set.
6088
+ * @default true
6089
+ */
6090
+ "scrollSpy": boolean;
6091
+ /**
6092
+ * Sticks the table of contents to the top of its scroll container (`position: sticky`) so it stays in view beside long content. Offset with `--bs-toc-sticky-top`.
6093
+ * @default false
6094
+ */
6095
+ "sticky": boolean;
6096
+ }
5348
6097
  /**
5349
6098
  * A tab-group wrapper: owns `role="tablist"` and coordinates selection across its slotted
5350
6099
  * `<bs-tab>` or `<bs-inline-tab>` children, so consumers no longer have to hand-roll this.
@@ -5378,6 +6127,78 @@ export namespace Components {
5378
6127
  */
5379
6128
  "value"?: string;
5380
6129
  }
6130
+ /**
6131
+ * A small label that categorises or annotates an item (a topic, a keyword, a status of a record). It can be
6132
+ * neutral or coloured, optionally removable, and optionally a link.
6133
+ * ## When to use
6134
+ * - Metadata on a record: topics, categories, keywords, owners.
6135
+ * - A removable tag in a list of applied values you edit one by one (`removable`).
6136
+ * - A tag that leads to a filtered view or detail page (`href`).
6137
+ * ## When not to use
6138
+ * - A pure count or notification marker -- use `bs-badge`.
6139
+ * - A read-only status pill with a leading icon -- use `bs-chip-informative`.
6140
+ * - Toggling a filter on and off -- use `bs-chip-filter`; entering free text values -- use `bs-chip-input`.
6141
+ * **Built from:** `bs-icon-button` (the remove control, `size="xs"`).
6142
+ */
6143
+ interface BsTag {
6144
+ /**
6145
+ * Semantic colour. `neutral` is the default.
6146
+ * @default 'neutral'
6147
+ */
6148
+ "color": BsTagColor;
6149
+ /**
6150
+ * Turns the label into a link to this URL.
6151
+ */
6152
+ "href"?: string;
6153
+ /**
6154
+ * Shows a remove button that emits `bsRemove`. The consumer removes the tag.
6155
+ * @default false
6156
+ */
6157
+ "removable": boolean;
6158
+ /**
6159
+ * Prefix of the remove button's accessible name ("Remove {label}").
6160
+ * @default 'Remove'
6161
+ */
6162
+ "removeLabel": string;
6163
+ /**
6164
+ * Sizing scale.
6165
+ * @default 'md'
6166
+ */
6167
+ "size": BsTagSize;
6168
+ /**
6169
+ * Link target, only used with `href`.
6170
+ */
6171
+ "target"?: string;
6172
+ }
6173
+ /**
6174
+ * Body and caption text mapped to the typography tokens, with the element (`as`) chosen separately
6175
+ * from the look (`variant`) and the colour (`tone`).
6176
+ * Variants: `lead` 18px, `body` 16px, `small` 14px, `caption` 12px (`--bs-font-size-*`,
6177
+ * `--bs-typography-font-family-body`).
6178
+ * Composed from: nothing (leaf).
6179
+ * ## When to use
6180
+ * - Paragraphs, helper copy, captions and inline spans that should follow the type scale and theme.
6181
+ * ## When not to use
6182
+ * - Headings: use `bs-heading` so the document outline is right.
6183
+ * - Code: use `bs-code-block`.
6184
+ */
6185
+ interface BsText {
6186
+ /**
6187
+ * The rendered element. `span` (and `small`, `strong`, `em`, `label`) make the host inline.
6188
+ * @default 'p'
6189
+ */
6190
+ "as": BsTextAs;
6191
+ /**
6192
+ * Text colour from the text tokens. `inherit` uses the surrounding colour.
6193
+ * @default 'default'
6194
+ */
6195
+ "tone": BsTextTone;
6196
+ /**
6197
+ * Visual style.
6198
+ * @default 'body'
6199
+ */
6200
+ "variant": BsTextVariant;
6201
+ }
5381
6202
  /**
5382
6203
  * An inline time picker: hour and minute spinners (up/down carets, or the arrow keys on the value),
5383
6204
  * an AM/PM dropdown in 12-hour mode, a 24h switch, and Cancel/Confirm buttons. Matches the Figma
@@ -5481,6 +6302,131 @@ export namespace Components {
5481
6302
  */
5482
6303
  "state": BsToastState;
5483
6304
  }
6305
+ /**
6306
+ * A button that is either pressed or not. Standalone it is a toggle (`aria-pressed`); inside a
6307
+ * `bs-toggle-button-group` the group sets its `mode` (`toggle` for multiple choice, `radio` for
6308
+ * single choice, which switches the semantics to `role="radio"` + `aria-checked`).
6309
+ * Built from: hand-built `<button>` (the segment shape and pressed state differ from `bs-button`) plus
6310
+ * `bs-ripple`.
6311
+ * ## When to use
6312
+ * - A two-state option such as "Bold", or a segment of a `bs-toggle-button-group`.
6313
+ * ## When not to use
6314
+ * - Triggering an action (use `bs-button`) or an on/off setting that applies immediately (use `bs-switch`).
6315
+ */
6316
+ interface BsToggleButton {
6317
+ /**
6318
+ * Accessible name; required for an icon-only button.
6319
+ * @default null
6320
+ */
6321
+ "ariaLabel": string | null;
6322
+ /**
6323
+ * Disables the button.
6324
+ * @default false
6325
+ */
6326
+ "disabled": boolean;
6327
+ /**
6328
+ * Semantics. Normally set by the parent group.
6329
+ * @default 'toggle'
6330
+ */
6331
+ "mode": BsToggleButtonMode;
6332
+ /**
6333
+ * Whether the button is pressed/selected.
6334
+ * @default false
6335
+ */
6336
+ "pressed": boolean;
6337
+ /**
6338
+ * Roving tabindex, set by the parent group (`false` = `tabindex="-1"`). Standalone: always tabbable.
6339
+ * @default true
6340
+ */
6341
+ "tabbable": boolean;
6342
+ /**
6343
+ * Identifies the segment inside a group's `value`/`values`.
6344
+ */
6345
+ "value"?: string;
6346
+ }
6347
+ /**
6348
+ * A segmented control: a row of `bs-toggle-button` segments with single or multiple choice.
6349
+ * Single choice (default) uses radio semantics (`role="radiogroup"` / `role="radio"`) and arrow keys
6350
+ * move focus AND selection. Multiple choice (`multiple`) uses `role="group"` with `aria-pressed`
6351
+ * toggle buttons; arrow keys move focus only, Space/Enter toggles. Focus is roving in both modes
6352
+ * (one tab stop).
6353
+ * Built from: `bs-toggle-button`.
6354
+ * ## When to use
6355
+ * - 2-5 short, related options that should all stay visible (view mode, alignment, filters).
6356
+ * ## When not to use
6357
+ * - Long lists (use `bs-select`) or page-level navigation (use `bs-tabs`).
6358
+ */
6359
+ interface BsToggleButtonGroup {
6360
+ /**
6361
+ * Accessible name of the group. Required.
6362
+ * @default null
6363
+ */
6364
+ "ariaLabel": string | null;
6365
+ /**
6366
+ * Disables every segment.
6367
+ * @default false
6368
+ */
6369
+ "disabled": boolean;
6370
+ /**
6371
+ * Allow several pressed segments.
6372
+ * @default false
6373
+ */
6374
+ "multiple": boolean;
6375
+ /**
6376
+ * Selected segment `value` (single choice).
6377
+ */
6378
+ "value"?: string;
6379
+ /**
6380
+ * Selected segment values (multiple choice). Set as a JS property.
6381
+ * @default []
6382
+ */
6383
+ "values": string[];
6384
+ }
6385
+ /**
6386
+ * A bar of related controls (buttons, toggles, selects) with a left and a right group, grouped
6387
+ * separators, a single tab stop and arrow-key navigation between the controls (WAI-ARIA toolbar
6388
+ * pattern). Optionally, controls that do not fit collapse into a "more" menu.
6389
+ * Keyboard: the toolbar is ONE tab stop. Left/Right arrows (Up/Down when `orientation="vertical"`,
6390
+ * mirrored in RTL) move focus between the controls and wrap; Home/End jump to the first/last. The
6391
+ * control last focused is the one Tab returns to. Disabled controls are skipped.
6392
+ * Direct children of the `left`/`right` slots are the toolbar's controls. A slotted `bs-divider` is a
6393
+ * separator: the toolbar sets its `orientation` perpendicular to its own and skips it when navigating.
6394
+ * ## When to use
6395
+ * - Several related actions that act on the same content (a text editor's formatting row, a table's
6396
+ * bulk actions, a viewer's zoom controls).
6397
+ * ## When not to use
6398
+ * - Navigating between pages or sections -- use `bs-tabs`, `bs-navigation-header` or a nav.
6399
+ * - A single action or a form's submit row -- place the `bs-button`s directly.
6400
+ * - A menu of actions that opens on demand -- use `bs-popover` with `bs-menu`.
6401
+ * ## Overflow
6402
+ * With `overflow` set (horizontal only), controls from the end of the bar that do not fit are hidden and
6403
+ * listed in a `bs-menu` behind a "more" button; choosing an entry activates the original control. An
6404
+ * entry's text is the control's `data-label`, else its `aria-label`, else its text content, else `title`:
6405
+ * give icon-only controls one of these.
6406
+ * Composition: built from `bs-icon-button`, `bs-popover`, `bs-menu` and `bs-menu-item` (overflow) and
6407
+ * expects `bs-button`, `bs-icon-button`, `bs-divider` etc. as slotted content.
6408
+ */
6409
+ interface BsToolbar {
6410
+ /**
6411
+ * Accessible name of the toolbar (`aria-label`). Required for a good experience, and essential when a page has more than one toolbar -- say what it controls ("Text formatting").
6412
+ */
6413
+ "label"?: string;
6414
+ /**
6415
+ * Direction of the bar. Sets `aria-orientation`, switches which arrow keys navigate, and sets the orientation of slotted `bs-divider`s to the perpendicular one.
6416
+ * @default 'horizontal'
6417
+ */
6418
+ "orientation": BsToolbarOrientation;
6419
+ /**
6420
+ * Collapse controls that do not fit into a "more" menu (see Overflow in the description). Horizontal toolbars only; ignored when `orientation="vertical"`.
6421
+ * @default false
6422
+ */
6423
+ "overflow": boolean;
6424
+ /**
6425
+ * Accessible name and tooltip of the overflow button.
6426
+ * @default 'More actions'
6427
+ */
6428
+ "overflowLabel": string;
6429
+ }
5484
6430
  /**
5485
6431
  * A dark tooltip bubble with a pointer arrow, used to surface a short hint of extra information
5486
6432
  * next to a trigger element.
@@ -5842,6 +6788,14 @@ export interface BsBreadcrumbOverflowCustomEvent<T> extends CustomEvent<T> {
5842
6788
  detail: T;
5843
6789
  target: HTMLBsBreadcrumbOverflowElement;
5844
6790
  }
6791
+ export interface BsBreadcrumbsCustomEvent<T> extends CustomEvent<T> {
6792
+ detail: T;
6793
+ target: HTMLBsBreadcrumbsElement;
6794
+ }
6795
+ export interface BsCardCustomEvent<T> extends CustomEvent<T> {
6796
+ detail: T;
6797
+ target: HTMLBsCardElement;
6798
+ }
5845
6799
  export interface BsCarouselCustomEvent<T> extends CustomEvent<T> {
5846
6800
  detail: T;
5847
6801
  target: HTMLBsCarouselElement;
@@ -5870,6 +6824,10 @@ export interface BsCheckboxCustomEvent<T> extends CustomEvent<T> {
5870
6824
  detail: T;
5871
6825
  target: HTMLBsCheckboxElement;
5872
6826
  }
6827
+ export interface BsCheckboxGroupCustomEvent<T> extends CustomEvent<T> {
6828
+ detail: T;
6829
+ target: HTMLBsCheckboxGroupElement;
6830
+ }
5873
6831
  export interface BsChipFilterCustomEvent<T> extends CustomEvent<T> {
5874
6832
  detail: T;
5875
6833
  target: HTMLBsChipFilterElement;
@@ -5882,6 +6840,10 @@ export interface BsCitationPreviewCustomEvent<T> extends CustomEvent<T> {
5882
6840
  detail: T;
5883
6841
  target: HTMLBsCitationPreviewElement;
5884
6842
  }
6843
+ export interface BsCodeBlockCustomEvent<T> extends CustomEvent<T> {
6844
+ detail: T;
6845
+ target: HTMLBsCodeBlockElement;
6846
+ }
5885
6847
  export interface BsCommandPaletteCustomEvent<T> extends CustomEvent<T> {
5886
6848
  detail: T;
5887
6849
  target: HTMLBsCommandPaletteElement;
@@ -5914,6 +6876,10 @@ export interface BsDialogCustomEvent<T> extends CustomEvent<T> {
5914
6876
  detail: T;
5915
6877
  target: HTMLBsDialogElement;
5916
6878
  }
6879
+ export interface BsDropdownCustomEvent<T> extends CustomEvent<T> {
6880
+ detail: T;
6881
+ target: HTMLBsDropdownElement;
6882
+ }
5917
6883
  export interface BsErrorPageCustomEvent<T> extends CustomEvent<T> {
5918
6884
  detail: T;
5919
6885
  target: HTMLBsErrorPageElement;
@@ -5942,6 +6908,10 @@ export interface BsKeyboardShortcutsCustomEvent<T> extends CustomEvent<T> {
5942
6908
  detail: T;
5943
6909
  target: HTMLBsKeyboardShortcutsElement;
5944
6910
  }
6911
+ export interface BsLinkCustomEvent<T> extends CustomEvent<T> {
6912
+ detail: T;
6913
+ target: HTMLBsLinkElement;
6914
+ }
5945
6915
  export interface BsListCustomEvent<T> extends CustomEvent<T> {
5946
6916
  detail: T;
5947
6917
  target: HTMLBsListElement;
@@ -6002,10 +6972,18 @@ export interface BsRadioCustomEvent<T> extends CustomEvent<T> {
6002
6972
  detail: T;
6003
6973
  target: HTMLBsRadioElement;
6004
6974
  }
6975
+ export interface BsRadioGroupCustomEvent<T> extends CustomEvent<T> {
6976
+ detail: T;
6977
+ target: HTMLBsRadioGroupElement;
6978
+ }
6005
6979
  export interface BsSearchItemCustomEvent<T> extends CustomEvent<T> {
6006
6980
  detail: T;
6007
6981
  target: HTMLBsSearchItemElement;
6008
6982
  }
6983
+ export interface BsSelectCustomEvent<T> extends CustomEvent<T> {
6984
+ detail: T;
6985
+ target: HTMLBsSelectElement;
6986
+ }
6009
6987
  export interface BsSessionTimeoutCustomEvent<T> extends CustomEvent<T> {
6010
6988
  detail: T;
6011
6989
  target: HTMLBsSessionTimeoutElement;
@@ -6014,6 +6992,10 @@ export interface BsSidePanelCustomEvent<T> extends CustomEvent<T> {
6014
6992
  detail: T;
6015
6993
  target: HTMLBsSidePanelElement;
6016
6994
  }
6995
+ export interface BsSkipLinkCustomEvent<T> extends CustomEvent<T> {
6996
+ detail: T;
6997
+ target: HTMLBsSkipLinkElement;
6998
+ }
6017
6999
  export interface BsSliderCustomEvent<T> extends CustomEvent<T> {
6018
7000
  detail: T;
6019
7001
  target: HTMLBsSliderElement;
@@ -6038,10 +7020,18 @@ export interface BsTabCustomEvent<T> extends CustomEvent<T> {
6038
7020
  detail: T;
6039
7021
  target: HTMLBsTabElement;
6040
7022
  }
7023
+ export interface BsTableOfContentsCustomEvent<T> extends CustomEvent<T> {
7024
+ detail: T;
7025
+ target: HTMLBsTableOfContentsElement;
7026
+ }
6041
7027
  export interface BsTabsCustomEvent<T> extends CustomEvent<T> {
6042
7028
  detail: T;
6043
7029
  target: HTMLBsTabsElement;
6044
7030
  }
7031
+ export interface BsTagCustomEvent<T> extends CustomEvent<T> {
7032
+ detail: T;
7033
+ target: HTMLBsTagElement;
7034
+ }
6045
7035
  export interface BsTimepickerCustomEvent<T> extends CustomEvent<T> {
6046
7036
  detail: T;
6047
7037
  target: HTMLBsTimepickerElement;
@@ -6050,6 +7040,14 @@ export interface BsToastCustomEvent<T> extends CustomEvent<T> {
6050
7040
  detail: T;
6051
7041
  target: HTMLBsToastElement;
6052
7042
  }
7043
+ export interface BsToggleButtonCustomEvent<T> extends CustomEvent<T> {
7044
+ detail: T;
7045
+ target: HTMLBsToggleButtonElement;
7046
+ }
7047
+ export interface BsToggleButtonGroupCustomEvent<T> extends CustomEvent<T> {
7048
+ detail: T;
7049
+ target: HTMLBsToggleButtonGroupElement;
7050
+ }
6053
7051
  export interface BsTreeCustomEvent<T> extends CustomEvent<T> {
6054
7052
  detail: T;
6055
7053
  target: HTMLBsTreeElement;
@@ -6524,6 +7522,9 @@ declare global {
6524
7522
  prototype: HTMLBsBreadcrumbOverflowElement;
6525
7523
  new (): HTMLBsBreadcrumbOverflowElement;
6526
7524
  };
7525
+ interface HTMLBsBreadcrumbsElementEventMap {
7526
+ "bsNavigate": { href: string };
7527
+ }
6527
7528
  /**
6528
7529
  * A breadcrumb trail container: a real `<nav>` landmark wrapping an `<ol>`, meant to be populated
6529
7530
  * with slotted `<bs-breadcrumb>` (and, where the consumer wants a collapsed-items disclosure,
@@ -6542,6 +7543,14 @@ declare global {
6542
7543
  * - A flat set of unrelated pages with no hierarchy -- breadcrumbs imply ancestry, not just history.
6543
7544
  */
6544
7545
  interface HTMLBsBreadcrumbsElement extends Components.BsBreadcrumbs, HTMLStencilElement {
7546
+ addEventListener<K extends keyof HTMLBsBreadcrumbsElementEventMap>(type: K, listener: (this: HTMLBsBreadcrumbsElement, ev: BsBreadcrumbsCustomEvent<HTMLBsBreadcrumbsElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
7547
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7548
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7549
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7550
+ removeEventListener<K extends keyof HTMLBsBreadcrumbsElementEventMap>(type: K, listener: (this: HTMLBsBreadcrumbsElement, ev: BsBreadcrumbsCustomEvent<HTMLBsBreadcrumbsElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
7551
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7552
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7553
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6545
7554
  }
6546
7555
  var HTMLBsBreadcrumbsElement: {
6547
7556
  prototype: HTMLBsBreadcrumbsElement;
@@ -6563,17 +7572,20 @@ declare global {
6563
7572
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
6564
7573
  * it for actions that actually delete/revoke/undo something.
6565
7574
  * @prop --bs-button-radius - Corner radius. Aliased to `--bs-border-radius-100` by default.
6566
- * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-300`.
7575
+ * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-150` (12px).
7576
+ * @prop --bs-button-padding-x-md - Left/right padding at `size="md"`. Aliased to `--bs-spacing-150` (12px).
7577
+ * @prop --bs-button-padding-x-lg - Left/right padding at `size="lg"`. Aliased to `--bs-spacing-150` (12px).
6567
7578
  * @prop --bs-button-width - Width of the button. `auto` by default (fits its content); set `100%` for a full-width button, e.g. `bs-button { --bs-button-width: 100%; }`.
6568
7579
  * @prop --bs-button-subtle-color - Label/icon colour, `variant="subtle"`. Aliased to `--bs-color-neutral-default`; set it to `var(--bs-text-action)` for a blue text button.
6569
- * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
6570
- * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
6571
- * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
7580
+ * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-400` (32px).
7581
+ * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-550` (44px).
7582
+ * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-600` (48px).
7583
+ * @prop --bs-button-outlined-color - Label/icon colour, `variant="outlined"`, default. Aliased to `--bs-color-primary-default`.
6572
7584
  * @prop --bs-button-neutral-border - Border color, `variant="neutral"`, default/disabled. Aliased to `--bs-border-neutral-container`.
6573
7585
  * @prop --bs-button-neutral-border-hover - Border color, `variant="neutral"`, hover. Aliased to `--bs-border-neutral-container-hover`.
6574
7586
  * @prop --bs-button-neutral-border-pressed - Border color, `variant="neutral"`, pressed. Aliased to `--bs-border-neutral-container-pressed`.
6575
- * @prop --bs-button-padding-x-icon-side - Horizontal padding on an edge that's adjacent to a leading/trailing icon (tighter than the plain text-only edge). Aliased to `--bs-spacing-150`.
6576
- * @prop --bs-button-padding-x-label-side - Horizontal padding on the opposite edge, when an icon on the other side needs compensating extra space to keep the button optically balanced. Aliased to `--bs-spacing-250`.
7587
+ * @prop --bs-button-padding-x-icon-side - Horizontal padding on an edge that's adjacent to a leading/trailing icon (now equal to the text-only edge). Aliased to `--bs-spacing-150`.
7588
+ * @prop --bs-button-padding-x-label-side - Horizontal padding on the opposite edge, when an icon on the other side needs compensating extra space to keep the button optically balanced. Aliased to `--bs-spacing-150` (no compensation by default).
6577
7589
  */
6578
7590
  interface HTMLBsButtonElement extends Components.BsButton, HTMLStencilElement {
6579
7591
  }
@@ -6604,6 +7616,10 @@ declare global {
6604
7616
  prototype: HTMLBsButtonSkeletonElement;
6605
7617
  new (): HTMLBsButtonSkeletonElement;
6606
7618
  };
7619
+ interface HTMLBsCardElementEventMap {
7620
+ "bsChange": boolean;
7621
+ "bsNavigate": { href: string };
7622
+ }
6607
7623
  /**
6608
7624
  * A bounded surface for grouping related content — a summary, a form section, a list item.
6609
7625
  * ## When to use
@@ -6614,6 +7630,14 @@ declare global {
6614
7630
  * - For a dismissible/transient message — use a modal or a dedicated notification component.
6615
7631
  */
6616
7632
  interface HTMLBsCardElement extends Components.BsCard, HTMLStencilElement {
7633
+ addEventListener<K extends keyof HTMLBsCardElementEventMap>(type: K, listener: (this: HTMLBsCardElement, ev: BsCardCustomEvent<HTMLBsCardElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
7634
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7635
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7636
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7637
+ removeEventListener<K extends keyof HTMLBsCardElementEventMap>(type: K, listener: (this: HTMLBsCardElement, ev: BsCardCustomEvent<HTMLBsCardElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
7638
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7639
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7640
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6617
7641
  }
6618
7642
  var HTMLBsCardElement: {
6619
7643
  prototype: HTMLBsCardElement;
@@ -6885,6 +7909,9 @@ declare global {
6885
7909
  * `--bs-color-primary-container-pressed`.
6886
7910
  * @prop --bs-chatbot-suggestion-button-bg-focus - Background when focused. Aliased to
6887
7911
  * `--bs-color-primary-container-hover` (same as hover).
7912
+ * @prop --bs-chatbot-suggestion-button-bg-disabled - Background when disabled. Aliased to `--bs-surface-action-disabled`.
7913
+ * @prop --bs-chatbot-suggestion-button-text-disabled - Text color when disabled. Aliased to `--bs-text-on-disabled`.
7914
+ * @prop --bs-chatbot-suggestion-button-border-color-disabled - Border color when disabled. Aliased to `--bs-border-neutral-disabled`.
6888
7915
  * @prop --bs-chatbot-suggestion-button-text-default - Text color in the default state. Aliased to
6889
7916
  * `--bs-text-action`.
6890
7917
  * @prop --bs-chatbot-suggestion-button-text-hover - Text color on hover, pressed, and focus.
@@ -6934,6 +7961,33 @@ declare global {
6934
7961
  prototype: HTMLBsCheckboxElement;
6935
7962
  new (): HTMLBsCheckboxElement;
6936
7963
  };
7964
+ interface HTMLBsCheckboxGroupElementEventMap {
7965
+ "bsChange": string[];
7966
+ }
7967
+ /**
7968
+ * A labelled group of `bs-checkbox`es: a `<fieldset>` with a `<legend>`, helper or error text, and
7969
+ * a single `value` array of the checked boxes' values.
7970
+ * Composed from: `bs-checkbox` (slotted by you).
7971
+ * ## When to use
7972
+ * - A set of related, independent options where any number may be chosen ("Notify me by ...").
7973
+ * ## When not to use
7974
+ * - Exactly one choice: use `bs-radio-group`.
7975
+ * - A single yes/no: use one `bs-checkbox`, or `bs-switch` for an immediate setting.
7976
+ */
7977
+ interface HTMLBsCheckboxGroupElement extends Components.BsCheckboxGroup, HTMLStencilElement {
7978
+ addEventListener<K extends keyof HTMLBsCheckboxGroupElementEventMap>(type: K, listener: (this: HTMLBsCheckboxGroupElement, ev: BsCheckboxGroupCustomEvent<HTMLBsCheckboxGroupElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
7979
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7980
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7981
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7982
+ removeEventListener<K extends keyof HTMLBsCheckboxGroupElementEventMap>(type: K, listener: (this: HTMLBsCheckboxGroupElement, ev: BsCheckboxGroupCustomEvent<HTMLBsCheckboxGroupElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
7983
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7984
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7985
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7986
+ }
7987
+ var HTMLBsCheckboxGroupElement: {
7988
+ prototype: HTMLBsCheckboxGroupElement;
7989
+ new (): HTMLBsCheckboxGroupElement;
7990
+ };
6937
7991
  /**
6938
7992
  * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
6939
7993
  * known yet (e.g. still being fetched from an API). Renders a small square (matching the
@@ -7072,6 +8126,43 @@ declare global {
7072
8126
  prototype: HTMLBsCitationPreviewElement;
7073
8127
  new (): HTMLBsCitationPreviewElement;
7074
8128
  };
8129
+ interface HTMLBsCodeBlockElementEventMap {
8130
+ "bsCopy": string;
8131
+ }
8132
+ /**
8133
+ * A block of code with an optional filename header and a Copy button, or (with `inline`) styled
8134
+ * inline code. Dependency-free: it does no syntax highlighting itself. Pass plain text with `code`,
8135
+ * or slot pre-highlighted markup (e.g. the output of Shiki or Prism: spans coloured with your own
8136
+ * CSS) as the default slot.
8137
+ * Follows light and dark mode through the surface/text tokens. Long lines scroll horizontally (the
8138
+ * scroll area is keyboard focusable) or, with `wrap`, break onto the next line.
8139
+ * Copying announces the `copiedLabel` text through a polite live region, and the button label
8140
+ * changes to match for a few seconds.
8141
+ * Slotted content: keep it flush against the tags (`<bs-code-block><span>..</span></bs-code-block>`),
8142
+ * since whitespace in a `<pre>`-style block is kept. The line count for `lineNumbers` and the text
8143
+ * that is copied are read from the slotted text.
8144
+ * Composed from: `bs-card` (the surface), `bs-button` and `bs-icon` (the Copy button).
8145
+ * ## When to use
8146
+ * - Showing a snippet, command or config the reader may want to copy.
8147
+ * - `inline` for a short code term inside a sentence.
8148
+ * ## When not to use
8149
+ * - Long files that need folding, search or editing: link to the source instead.
8150
+ * - Pre-formatted prose or tables: use ordinary text and table markup.
8151
+ */
8152
+ interface HTMLBsCodeBlockElement extends Components.BsCodeBlock, HTMLStencilElement {
8153
+ addEventListener<K extends keyof HTMLBsCodeBlockElementEventMap>(type: K, listener: (this: HTMLBsCodeBlockElement, ev: BsCodeBlockCustomEvent<HTMLBsCodeBlockElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
8154
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8155
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8156
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8157
+ removeEventListener<K extends keyof HTMLBsCodeBlockElementEventMap>(type: K, listener: (this: HTMLBsCodeBlockElement, ev: BsCodeBlockCustomEvent<HTMLBsCodeBlockElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
8158
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8159
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8160
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8161
+ }
8162
+ var HTMLBsCodeBlockElement: {
8163
+ prototype: HTMLBsCodeBlockElement;
8164
+ new (): HTMLBsCodeBlockElement;
8165
+ };
7075
8166
  interface HTMLBsCommandPaletteElementEventMap {
7076
8167
  "bsInput": BsCommandPaletteInputDetail;
7077
8168
  "bsSelect": BsCommandPaletteSelectDetail;
@@ -7413,6 +8504,12 @@ declare global {
7413
8504
  * ## When not to use
7414
8505
  * - A handful of unrelated key/value pairs — a simple list or card is lighter-weight.
7415
8506
  * - Deeply nested/hierarchical data — this component renders one flat row per record.
8507
+ * ## Rich cells
8508
+ * Without a `cellRenderer`, each cell is a named slot, `cell-{row.id}-{column.key}`, whose fallback
8509
+ * content is the plain-text value. Slot an element into it to put app-owned content (a framework
8510
+ * component, a router link, a badge) in the cell, e.g.
8511
+ * `<a slot="cell-7-name" href="/people/7">Ada</a>`. The slotted element lives in the light DOM, so
8512
+ * it keeps your framework, router and CSP; nothing is parsed as HTML.
7416
8513
  */
7417
8514
  interface HTMLBsDataTableElement extends Components.BsDataTable, HTMLStencilElement {
7418
8515
  addEventListener<K extends keyof HTMLBsDataTableElementEventMap>(type: K, listener: (this: HTMLBsDataTableElement, ev: BsDataTableCustomEvent<HTMLBsDataTableElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
@@ -7465,6 +8562,48 @@ declare global {
7465
8562
  prototype: HTMLBsDatepickerElement;
7466
8563
  new (): HTMLBsDatepickerElement;
7467
8564
  };
8565
+ /**
8566
+ * One term and its detail inside a `bs-description-list` (a label/value pair such as "Owner: Sam Lee").
8567
+ * ## When to use
8568
+ * - As a child of `bs-description-list`, one per key/value pair.
8569
+ * ## When not to use
8570
+ * - Rows of records with media and actions -- use `bs-list-item`.
8571
+ * - Many pairs compared across several records -- use `bs-data-table`.
8572
+ * Each item renders its own `<dl>` containing one `<div>` group with a real `<dt>` and `<dd>`. (A `dl` cannot
8573
+ * span the shadow boundary between a list and its items, so the grouping lives here.)
8574
+ * @prop --bs-description-item-gap - Gap between term and detail when stacked. Aliased to `--bs-spacing-25`.
8575
+ * @prop --bs-description-item-term-width - Width of the term column when `layout="horizontal"`. `12rem`.
8576
+ * @prop --bs-description-item-column-gap - Gap between the term and detail columns when horizontal. Aliased to `--bs-spacing-200`.
8577
+ * @prop --bs-description-item-padding-y - Vertical padding. Aliased to `--bs-spacing-100`.
8578
+ * @prop --bs-description-item-term-color - Aliased to `--bs-text-secondary`.
8579
+ * @prop --bs-description-item-description-color - Aliased to `--bs-text-default`.
8580
+ */
8581
+ interface HTMLBsDescriptionItemElement extends Components.BsDescriptionItem, HTMLStencilElement {
8582
+ }
8583
+ var HTMLBsDescriptionItemElement: {
8584
+ prototype: HTMLBsDescriptionItemElement;
8585
+ new (): HTMLBsDescriptionItemElement;
8586
+ };
8587
+ /**
8588
+ * A key/value list of `bs-description-item` pairs (term and detail), for record summaries, settings read-outs
8589
+ * and metadata panels. Terms and details use real `dt`/`dd` semantics.
8590
+ * ## When to use
8591
+ * - A read-only summary of one record: "Owner", "Created", "Status" with their values.
8592
+ * ## When not to use
8593
+ * - A list of records with media and actions -- use `bs-list`.
8594
+ * - Editable fields -- use form components.
8595
+ * - Several records compared across columns -- use `bs-data-table`.
8596
+ * Built from `bs-description-item` children (light DOM; the list never moves nodes). Each item holds its own
8597
+ * `dl`; the list sets the layout on them and draws dividers.
8598
+ * @prop --bs-description-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
8599
+ * @prop --bs-description-list-gap - Gap between items. `0`.
8600
+ */
8601
+ interface HTMLBsDescriptionListElement extends Components.BsDescriptionList, HTMLStencilElement {
8602
+ }
8603
+ var HTMLBsDescriptionListElement: {
8604
+ prototype: HTMLBsDescriptionListElement;
8605
+ new (): HTMLBsDescriptionListElement;
8606
+ };
7468
8607
  interface HTMLBsDialogElementEventMap {
7469
8608
  "bsClose": void;
7470
8609
  }
@@ -7516,6 +8655,39 @@ declare global {
7516
8655
  prototype: HTMLBsDividerElement;
7517
8656
  new (): HTMLBsDividerElement;
7518
8657
  };
8658
+ interface HTMLBsDropdownElementEventMap {
8659
+ "bsOpen": void;
8660
+ "bsClose": void;
8661
+ }
8662
+ /**
8663
+ * A menu trigger: a button (slot `trigger`) that opens a `bs-menu` of `bs-menu-item`s in an anchored,
8664
+ * viewport-aware popup, with the menu keyboard pattern and focus management built in.
8665
+ * Opens on click, Enter, Space (via the trigger button) and ArrowDown. On open focus moves to the
8666
+ * first enabled menu item; Up/Down/Home/End move between items (handled by `bs-menu`). The dropdown
8667
+ * closes on outside click, Escape (focus returns to the trigger), Tab, and after an item is activated.
8668
+ * The trigger gets `aria-haspopup="menu"` and `aria-expanded` kept in sync.
8669
+ * Composed from `bs-popover` (anchor positioning, flipping, outside-click and Escape dismissal, open
8670
+ * motion), `bs-menu` and `bs-menu-item` (slotted by you), and a `bs-button` / `bs-icon-button` trigger.
8671
+ * ## When to use
8672
+ * - A header or toolbar action that reveals a short list of commands ("More", "Account", "Sort by").
8673
+ * ## When not to use
8674
+ * - Free-form popup content such as forms or arbitrary panels (use `bs-popover`).
8675
+ * - Choosing a value for a form field (use `bs-select`).
8676
+ */
8677
+ interface HTMLBsDropdownElement extends Components.BsDropdown, HTMLStencilElement {
8678
+ addEventListener<K extends keyof HTMLBsDropdownElementEventMap>(type: K, listener: (this: HTMLBsDropdownElement, ev: BsDropdownCustomEvent<HTMLBsDropdownElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
8679
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8680
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
8681
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8682
+ removeEventListener<K extends keyof HTMLBsDropdownElementEventMap>(type: K, listener: (this: HTMLBsDropdownElement, ev: BsDropdownCustomEvent<HTMLBsDropdownElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
8683
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8684
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
8685
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8686
+ }
8687
+ var HTMLBsDropdownElement: {
8688
+ prototype: HTMLBsDropdownElement;
8689
+ new (): HTMLBsDropdownElement;
8690
+ };
7519
8691
  /**
7520
8692
  * A centered "nothing to show" block: an icon tile, a heading, a description and an optional action.
7521
8693
  * Used for empty lists, "no results" and error states inside a panel, card or page section.
@@ -7530,6 +8702,7 @@ declare global {
7530
8702
  * @prop --bs-empty-state-padding-y - Vertical padding. Aliased to `--bs-spacing-700` (56px).
7531
8703
  * @prop --bs-empty-state-padding-x - Horizontal padding. Aliased to `--bs-spacing-300` (24px).
7532
8704
  * @prop --bs-empty-state-gap - Gap between tile, heading, description and action. Aliased to `--bs-spacing-150`.
8705
+ * @prop --bs-empty-state-heading-size - Aliased to `--bs-font-size-xl` (`--bs-font-size-3xl` at `size="page"`).
7533
8706
  * @prop --bs-empty-state-heading-color - Aliased to `--bs-text-default`.
7534
8707
  * @prop --bs-empty-state-description-color - Aliased to `--bs-text-secondary`.
7535
8708
  */
@@ -7707,6 +8880,46 @@ declare global {
7707
8880
  prototype: HTMLBsGridElement;
7708
8881
  new (): HTMLBsGridElement;
7709
8882
  };
8883
+ /**
8884
+ * A heading whose rendered element and visual style are chosen separately: `level` (or `as`) picks
8885
+ * the element for the document outline, `size` picks the look. Sizes map to the typography tokens
8886
+ * (`--bs-font-size-*`, `--bs-font-weight-*`, `--bs-line-height-*`, `--bs-typography-font-family-heading`).
8887
+ * Default sizes by level: 1 = 40px, 2 = 32px, 3 = 24px, 4 = 20px, 5 = 18px, 6 = 16px; `display` is 48px.
8888
+ * Composed from: nothing (leaf).
8889
+ * ## When to use
8890
+ * - Any page or section title. Keep levels in order (no jumping from 1 to 4); change `size`, not `level`, to restyle.
8891
+ * ## When not to use
8892
+ * - Body copy, captions and labels: use `bs-text`.
8893
+ * - To make text big without it being a heading: use `bs-text` with `as="p"`.
8894
+ */
8895
+ interface HTMLBsHeadingElement extends Components.BsHeading, HTMLStencilElement {
8896
+ }
8897
+ var HTMLBsHeadingElement: {
8898
+ prototype: HTMLBsHeadingElement;
8899
+ new (): HTMLBsHeadingElement;
8900
+ };
8901
+ /**
8902
+ * A sized, coloured icon. Renders inline SVG from a named registry (`name`), or any SVG you slot in.
8903
+ * Built-in names: `menu`, `arrow-right`, `arrow-left`, `check`, `close`, `chevron-down`,
8904
+ * `external-link`, `copy`, `search`, plus Phosphor glyphs `user`, `star`, `star-fill`, `x`,
8905
+ * `paper-plane-right`, `note-pencil`, `clock-counter-clockwise`, `arrows-out-simple` (256x256 filled). Add more with `registerIcons({ name: '<path d="..."/>' })`
8906
+ * (exported from the package entry): each value is the inner markup of a 24x24, `currentColor`
8907
+ * stroke icon, or pass `{ viewBox, body }` for a filled glyph on another grid.
8908
+ * Decorative by default (`aria-hidden`). Set `label` when the icon alone conveys meaning; it is then
8909
+ * exposed as an image with that name. An icon inside a button never needs `label`: name the button.
8910
+ * Composed from: nothing (leaf). Used by `bs-code-block`.
8911
+ * ## When to use
8912
+ * - A glyph beside text or inside a button, sized and coloured from tokens.
8913
+ * ## When not to use
8914
+ * - As a control by itself: wrap it in `bs-icon-button`.
8915
+ * - For a tinted status square: use `bs-icon-tile`.
8916
+ */
8917
+ interface HTMLBsIconElement extends Components.BsIcon, HTMLStencilElement {
8918
+ }
8919
+ var HTMLBsIconElement: {
8920
+ prototype: HTMLBsIconElement;
8921
+ new (): HTMLBsIconElement;
8922
+ };
7710
8923
  /**
7711
8924
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
7712
8925
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -7794,6 +9007,7 @@ declare global {
7794
9007
  "bsInput": string;
7795
9008
  "bsChange": string;
7796
9009
  "bsOpen": boolean;
9010
+ "bsOptionSelect": { label: string; value: string };
7797
9011
  "bsChipAdd": string;
7798
9012
  "bsChipRemove": string;
7799
9013
  "bsTitleChange": string;
@@ -7804,7 +9018,9 @@ declare global {
7804
9018
  * range of related "field" shapes (number stepper, password reveal, date, dropdown trigger,
7805
9019
  * select, textarea, chip input, initials, country, and pin) via the `type` prop, since they all
7806
9020
  * share the same label/description/error/icon-slot chrome.
7807
- * Built from: `bs-menu`/`bs-menu-item` (`type="dropdown"`) and `bs-chip-informative` + `bs-icon-button` (`type="chip"`).
9021
+ * Built from: `bs-menu`/`bs-menu-item` (`type="dropdown"`), `bs-chip-informative` + `bs-icon-button` (`type="chip"`),
9022
+ * and `bs-icon-button` + `bs-spinner` (`type="combobox"` clear button / loading indicator; its listbox is a
9023
+ * hand-built `role="listbox"` because `bs-menu` is `role="menu"` and cannot host `option`s).
7808
9024
  * ## When to use
7809
9025
  * - Collecting a single line of free-text, email, password, or numeric input.
7810
9026
  * - Any of the other supported `type`s (search, date, dropdown, select, textarea, chip, initials,
@@ -7913,6 +9129,34 @@ declare global {
7913
9129
  prototype: HTMLBsKeyboardShortcutsElement;
7914
9130
  new (): HTMLBsKeyboardShortcutsElement;
7915
9131
  };
9132
+ interface HTMLBsLinkElementEventMap {
9133
+ "bsNavigate": { href: string };
9134
+ }
9135
+ /**
9136
+ * A navigation link: either text (inline within a sentence, or standalone with a 44px target) or a
9137
+ * link styled as a primary button. Always renders a real `<a href>`.
9138
+ * Built from: hand-built `<a>` (leaf). `bs-button` renders a `<button>` and has no `href`; nesting a
9139
+ * button in an anchor is invalid HTML, so the `button` variant reuses the primary button's colour
9140
+ * tokens instead. Known gap: add `href` support to `bs-button` and compose it here.
9141
+ * ## When to use
9142
+ * - Navigating to another page or an external resource.
9143
+ * ## When not to use
9144
+ * - Triggering an action on the current page (use `bs-button`).
9145
+ */
9146
+ interface HTMLBsLinkElement extends Components.BsLink, HTMLStencilElement {
9147
+ addEventListener<K extends keyof HTMLBsLinkElementEventMap>(type: K, listener: (this: HTMLBsLinkElement, ev: BsLinkCustomEvent<HTMLBsLinkElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
9148
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9149
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9150
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9151
+ removeEventListener<K extends keyof HTMLBsLinkElementEventMap>(type: K, listener: (this: HTMLBsLinkElement, ev: BsLinkCustomEvent<HTMLBsLinkElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
9152
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9153
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9154
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9155
+ }
9156
+ var HTMLBsLinkElement: {
9157
+ prototype: HTMLBsLinkElement;
9158
+ new (): HTMLBsLinkElement;
9159
+ };
7916
9160
  interface HTMLBsListElementEventMap {
7917
9161
  "bsChange": string | null;
7918
9162
  }
@@ -7925,6 +9169,9 @@ declare global {
7925
9169
  * - A popup list of actions -- use `bs-menu`.
7926
9170
  * - Navigation between app sections -- use `bs-navigation-drawer`.
7927
9171
  * - Multi-column, sortable or paged data -- use `bs-data-table`.
9172
+ * `variant` switches between a plain list, a bulleted list and a numbered list; `dividers` gives a divided
9173
+ * list. The list keeps real list semantics in every variant (`role="list"` with `listitem` rows); the bullet
9174
+ * or number is drawn by the row and hidden from assistive technology, which announces position itself.
7928
9175
  * Built from `bs-list-item` children (light DOM; the list never moves nodes).
7929
9176
  * @prop --bs-list-gap - Gap between rows. Defaults to `0`.
7930
9177
  * @prop --bs-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
@@ -8720,6 +9967,37 @@ declare global {
8720
9967
  prototype: HTMLBsRadioElement;
8721
9968
  new (): HTMLBsRadioElement;
8722
9969
  };
9970
+ interface HTMLBsRadioGroupElementEventMap {
9971
+ "bsChange": string;
9972
+ }
9973
+ /**
9974
+ * A labelled group of `bs-radio`s: a visible label, helper or error text, an accessible
9975
+ * `role="radiogroup"`, and a single `value` for the whole set.
9976
+ * The group gives its radios one shared `name` (its own `name`, or a generated one) so they behave
9977
+ * as one native-style group: arrow keys move the selection (wrapping), only the checked radio is in
9978
+ * the tab order, and checking one unchecks the others. It keeps at most one radio checked (the
9979
+ * first one wins if several start checked).
9980
+ * Composed from: `bs-radio` (slotted by you).
9981
+ * ## When to use
9982
+ * - A set of 2-5 mutually exclusive options that should all stay visible, with a shared label.
9983
+ * ## When not to use
9984
+ * - Independent yes/no choices: use `bs-checkbox-group`.
9985
+ * - Many options: use a select or `bs-menu`.
9986
+ */
9987
+ interface HTMLBsRadioGroupElement extends Components.BsRadioGroup, HTMLStencilElement {
9988
+ addEventListener<K extends keyof HTMLBsRadioGroupElementEventMap>(type: K, listener: (this: HTMLBsRadioGroupElement, ev: BsRadioGroupCustomEvent<HTMLBsRadioGroupElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
9989
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9990
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9991
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9992
+ removeEventListener<K extends keyof HTMLBsRadioGroupElementEventMap>(type: K, listener: (this: HTMLBsRadioGroupElement, ev: BsRadioGroupCustomEvent<HTMLBsRadioGroupElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
9993
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9994
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9995
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9996
+ }
9997
+ var HTMLBsRadioGroupElement: {
9998
+ prototype: HTMLBsRadioGroupElement;
9999
+ new (): HTMLBsRadioGroupElement;
10000
+ };
8723
10001
  /**
8724
10002
  * A touch-ripple effect: on pointer press, a circle grows from the press point and fades out.
8725
10003
  * It is a building block for pressable components (`bs-button`, `bs-icon-button`, ...), not something
@@ -8787,6 +10065,38 @@ declare global {
8787
10065
  prototype: HTMLBsSearchItemElement;
8788
10066
  new (): HTMLBsSearchItemElement;
8789
10067
  };
10068
+ interface HTMLBsSelectElementEventMap {
10069
+ "bsChange": string;
10070
+ }
10071
+ /**
10072
+ * A single-choice select: a field-shaped combobox that opens a scrollable listbox of options. Same
10073
+ * label / helper text / error chrome as `bs-input`.
10074
+ * Follows the WAI-ARIA select-only combobox pattern: focus stays on the combobox and the
10075
+ * highlighted option is exposed through `aria-activedescendant`.
10076
+ * Built from: the field/label/description/error styling language of `bs-input` (same `--bs-input-*`
10077
+ * tokens). The listbox rows are hand-built leaf elements: `bs-menu-item` is a `role="menuitem"`
10078
+ * button and `bs-popover` moves focus into its popup, neither of which fits the combobox/listbox
10079
+ * pattern where focus must stay on the field.
10080
+ * ## When to use
10081
+ * - Choosing exactly one value from a known list of roughly 4-15 options.
10082
+ * ## When not to use
10083
+ * - 2-3 options that should all be visible (use radios or `bs-toggle-button-group`).
10084
+ * - Very long or searchable lists (use `bs-input type="dropdown"` or a search pattern).
10085
+ */
10086
+ interface HTMLBsSelectElement extends Components.BsSelect, HTMLStencilElement {
10087
+ addEventListener<K extends keyof HTMLBsSelectElementEventMap>(type: K, listener: (this: HTMLBsSelectElement, ev: BsSelectCustomEvent<HTMLBsSelectElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
10088
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10089
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10090
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10091
+ removeEventListener<K extends keyof HTMLBsSelectElementEventMap>(type: K, listener: (this: HTMLBsSelectElement, ev: BsSelectCustomEvent<HTMLBsSelectElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
10092
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10093
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10094
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10095
+ }
10096
+ var HTMLBsSelectElement: {
10097
+ prototype: HTMLBsSelectElement;
10098
+ new (): HTMLBsSelectElement;
10099
+ };
8790
10100
  interface HTMLBsSessionTimeoutElementEventMap {
8791
10101
  "bsPrimary": { password?: string } | void;
8792
10102
  "bsSecondary": void;
@@ -8917,6 +10227,38 @@ declare global {
8917
10227
  prototype: HTMLBsSkeletonElement;
8918
10228
  new (): HTMLBsSkeletonElement;
8919
10229
  };
10230
+ interface HTMLBsSkipLinkElementEventMap {
10231
+ "bsSkip": { href: string; target: HTMLElement | null };
10232
+ }
10233
+ /**
10234
+ * A "skip to main content" link: invisible until it receives keyboard focus, then shown at the top
10235
+ * of the page. Activating it moves focus to the element its `href` points at, so keyboard and
10236
+ * screen-reader users can bypass repeated navigation (WCAG 2.4.1 Bypass Blocks).
10237
+ * Place it as the very first focusable element on the page. Renders a real `<a>`; the focus move is
10238
+ * done explicitly (the target gets a temporary `tabindex="-1"` when it is not natively focusable),
10239
+ * because a fragment navigation alone does not reliably move focus in every browser.
10240
+ * ## When to use
10241
+ * - Once per page, before the header/navigation, pointing at the `<main>` landmark.
10242
+ * - Additionally before large repeated blocks (e.g. a long sidebar) pointing past them.
10243
+ * ## When not to use
10244
+ * - As a general in-page link -- use a plain link or `bs-table-of-contents`.
10245
+ * - When the page has no repeated blocks before its main content.
10246
+ * Composition: a leaf element (a single anchor); no existing `bs-*` component renders a link.
10247
+ */
10248
+ interface HTMLBsSkipLinkElement extends Components.BsSkipLink, HTMLStencilElement {
10249
+ addEventListener<K extends keyof HTMLBsSkipLinkElementEventMap>(type: K, listener: (this: HTMLBsSkipLinkElement, ev: BsSkipLinkCustomEvent<HTMLBsSkipLinkElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
10250
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10251
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10252
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10253
+ removeEventListener<K extends keyof HTMLBsSkipLinkElementEventMap>(type: K, listener: (this: HTMLBsSkipLinkElement, ev: BsSkipLinkCustomEvent<HTMLBsSkipLinkElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
10254
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10255
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10256
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10257
+ }
10258
+ var HTMLBsSkipLinkElement: {
10259
+ prototype: HTMLBsSkipLinkElement;
10260
+ new (): HTMLBsSkipLinkElement;
10261
+ };
8920
10262
  interface HTMLBsSliderElementEventMap {
8921
10263
  "bsChange": number;
8922
10264
  "bsRangeChange": { start: number; end: number };
@@ -9119,6 +10461,25 @@ declare global {
9119
10461
  prototype: HTMLBsStackElement;
9120
10462
  new (): HTMLBsStackElement;
9121
10463
  };
10464
+ /**
10465
+ * A key figure: a label, a large value and an optional trend (up, down or flat) with a change figure.
10466
+ * ## When to use
10467
+ * - Dashboard KPIs and summary numbers ("Active users 1,284, up 12%").
10468
+ * ## When not to use
10469
+ * - A time series or comparison of many values -- use a chart.
10470
+ * - A progress toward a goal -- use `bs-progress` / `bs-progress-linear`.
10471
+ * - A count on another element -- use `bs-badge`.
10472
+ * **Built from:** `bs-card` (the surface).
10473
+ * The trend is never conveyed by colour or arrow alone: a visually hidden prefix ("Increase of") is
10474
+ * rendered before the change figure. Whether up is good depends on the metric, so the colour comes from
10475
+ * `trendIntent` (default: up is positive, down is negative; set `negative` for e.g. churn going up).
10476
+ */
10477
+ interface HTMLBsStatElement extends Components.BsStat, HTMLStencilElement {
10478
+ }
10479
+ var HTMLBsStatElement: {
10480
+ prototype: HTMLBsStatElement;
10481
+ new (): HTMLBsStatElement;
10482
+ };
9122
10483
  /**
9123
10484
  * A sequence of named steps showing overall progress through a multi-step flow (e.g. a checkout,
9124
10485
  * an onboarding wizard) -- each step reads as enabled (not yet reached), current, done, error, or
@@ -9232,6 +10593,45 @@ declare global {
9232
10593
  prototype: HTMLBsTabElement;
9233
10594
  new (): HTMLBsTabElement;
9234
10595
  };
10596
+ interface HTMLBsTableOfContentsElementEventMap {
10597
+ "bsNavigate": { href: string };
10598
+ "bsChange": string;
10599
+ }
10600
+ /**
10601
+ * An "On this page" navigation: a nested list of in-page links with a scroll spy that marks the
10602
+ * section currently in view (`aria-current="location"`), optionally sticky beside long content.
10603
+ * Give it entries in either of two ways:
10604
+ * - **`items` property** (a JS array, `{ label, href, children? }`) -- the data-driven way.
10605
+ * - **Slotted anchors** -- `<a href="#intro">Intro</a>`, optionally inside nested `<ul>`/`<li>` or with
10606
+ * `data-level="2"` for sub-sections. The component reads them and renders its own styled links (the
10607
+ * slotted markup is not displayed; it is the no-JavaScript fallback). Used when `items` is empty.
10608
+ * The scroll spy uses an `IntersectionObserver` on the elements the links point at. The current section
10609
+ * is the first one (in link order) that intersects the top band of the viewport defined by `rootMargin`;
10610
+ * when none does (between two sections) the previous one stays current. Observers are disconnected when
10611
+ * the element is removed from the DOM and re-created when it is re-attached.
10612
+ * Link targets are looked up by id in the same document (or shadow tree) as the component. Links whose
10613
+ * target does not exist are still shown but never become current.
10614
+ * ## When to use
10615
+ * - Long single-page content (documentation, policies, settings pages) with several headed sections.
10616
+ * ## When not to use
10617
+ * - Navigating between pages -- use `bs-navigation-drawer` or `bs-breadcrumbs`.
10618
+ * - Switching between panels of content that are not all on the page -- use `bs-tabs`.
10619
+ * Composition: leaf element (a nav landmark with anchors); no existing `bs-*` component renders links.
10620
+ */
10621
+ interface HTMLBsTableOfContentsElement extends Components.BsTableOfContents, HTMLStencilElement {
10622
+ addEventListener<K extends keyof HTMLBsTableOfContentsElementEventMap>(type: K, listener: (this: HTMLBsTableOfContentsElement, ev: BsTableOfContentsCustomEvent<HTMLBsTableOfContentsElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
10623
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10624
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10625
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10626
+ removeEventListener<K extends keyof HTMLBsTableOfContentsElementEventMap>(type: K, listener: (this: HTMLBsTableOfContentsElement, ev: BsTableOfContentsCustomEvent<HTMLBsTableOfContentsElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
10627
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10628
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10629
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10630
+ }
10631
+ var HTMLBsTableOfContentsElement: {
10632
+ prototype: HTMLBsTableOfContentsElement;
10633
+ new (): HTMLBsTableOfContentsElement;
10634
+ };
9235
10635
  interface HTMLBsTabsElementEventMap {
9236
10636
  "bsChange": { value: string };
9237
10637
  }
@@ -9252,19 +10652,67 @@ declare global {
9252
10652
  * - For a single, standalone tab button not participating in a group -- use `bs-tab`/`bs-inline-tab`
9253
10653
  * directly.
9254
10654
  */
9255
- interface HTMLBsTabsElement extends Components.BsTabs, HTMLStencilElement {
9256
- addEventListener<K extends keyof HTMLBsTabsElementEventMap>(type: K, listener: (this: HTMLBsTabsElement, ev: BsTabsCustomEvent<HTMLBsTabsElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
10655
+ interface HTMLBsTabsElement extends Components.BsTabs, HTMLStencilElement {
10656
+ addEventListener<K extends keyof HTMLBsTabsElementEventMap>(type: K, listener: (this: HTMLBsTabsElement, ev: BsTabsCustomEvent<HTMLBsTabsElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
10657
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10658
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10659
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10660
+ removeEventListener<K extends keyof HTMLBsTabsElementEventMap>(type: K, listener: (this: HTMLBsTabsElement, ev: BsTabsCustomEvent<HTMLBsTabsElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
10661
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10662
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10663
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10664
+ }
10665
+ var HTMLBsTabsElement: {
10666
+ prototype: HTMLBsTabsElement;
10667
+ new (): HTMLBsTabsElement;
10668
+ };
10669
+ interface HTMLBsTagElementEventMap {
10670
+ "bsRemove": void;
10671
+ }
10672
+ /**
10673
+ * A small label that categorises or annotates an item (a topic, a keyword, a status of a record). It can be
10674
+ * neutral or coloured, optionally removable, and optionally a link.
10675
+ * ## When to use
10676
+ * - Metadata on a record: topics, categories, keywords, owners.
10677
+ * - A removable tag in a list of applied values you edit one by one (`removable`).
10678
+ * - A tag that leads to a filtered view or detail page (`href`).
10679
+ * ## When not to use
10680
+ * - A pure count or notification marker -- use `bs-badge`.
10681
+ * - A read-only status pill with a leading icon -- use `bs-chip-informative`.
10682
+ * - Toggling a filter on and off -- use `bs-chip-filter`; entering free text values -- use `bs-chip-input`.
10683
+ * **Built from:** `bs-icon-button` (the remove control, `size="xs"`).
10684
+ */
10685
+ interface HTMLBsTagElement extends Components.BsTag, HTMLStencilElement {
10686
+ addEventListener<K extends keyof HTMLBsTagElementEventMap>(type: K, listener: (this: HTMLBsTagElement, ev: BsTagCustomEvent<HTMLBsTagElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
9257
10687
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9258
10688
  addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
9259
10689
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9260
- removeEventListener<K extends keyof HTMLBsTabsElementEventMap>(type: K, listener: (this: HTMLBsTabsElement, ev: BsTabsCustomEvent<HTMLBsTabsElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
10690
+ removeEventListener<K extends keyof HTMLBsTagElementEventMap>(type: K, listener: (this: HTMLBsTagElement, ev: BsTagCustomEvent<HTMLBsTagElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
9261
10691
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9262
10692
  removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
9263
10693
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9264
10694
  }
9265
- var HTMLBsTabsElement: {
9266
- prototype: HTMLBsTabsElement;
9267
- new (): HTMLBsTabsElement;
10695
+ var HTMLBsTagElement: {
10696
+ prototype: HTMLBsTagElement;
10697
+ new (): HTMLBsTagElement;
10698
+ };
10699
+ /**
10700
+ * Body and caption text mapped to the typography tokens, with the element (`as`) chosen separately
10701
+ * from the look (`variant`) and the colour (`tone`).
10702
+ * Variants: `lead` 18px, `body` 16px, `small` 14px, `caption` 12px (`--bs-font-size-*`,
10703
+ * `--bs-typography-font-family-body`).
10704
+ * Composed from: nothing (leaf).
10705
+ * ## When to use
10706
+ * - Paragraphs, helper copy, captions and inline spans that should follow the type scale and theme.
10707
+ * ## When not to use
10708
+ * - Headings: use `bs-heading` so the document outline is right.
10709
+ * - Code: use `bs-code-block`.
10710
+ */
10711
+ interface HTMLBsTextElement extends Components.BsText, HTMLStencilElement {
10712
+ }
10713
+ var HTMLBsTextElement: {
10714
+ prototype: HTMLBsTextElement;
10715
+ new (): HTMLBsTextElement;
9268
10716
  };
9269
10717
  interface HTMLBsTimepickerElementEventMap {
9270
10718
  "bsChange": BsTimepickerChange;
@@ -9327,6 +10775,93 @@ declare global {
9327
10775
  prototype: HTMLBsToastElement;
9328
10776
  new (): HTMLBsToastElement;
9329
10777
  };
10778
+ interface HTMLBsToggleButtonElementEventMap {
10779
+ "bsChange": boolean;
10780
+ }
10781
+ /**
10782
+ * A button that is either pressed or not. Standalone it is a toggle (`aria-pressed`); inside a
10783
+ * `bs-toggle-button-group` the group sets its `mode` (`toggle` for multiple choice, `radio` for
10784
+ * single choice, which switches the semantics to `role="radio"` + `aria-checked`).
10785
+ * Built from: hand-built `<button>` (the segment shape and pressed state differ from `bs-button`) plus
10786
+ * `bs-ripple`.
10787
+ * ## When to use
10788
+ * - A two-state option such as "Bold", or a segment of a `bs-toggle-button-group`.
10789
+ * ## When not to use
10790
+ * - Triggering an action (use `bs-button`) or an on/off setting that applies immediately (use `bs-switch`).
10791
+ */
10792
+ interface HTMLBsToggleButtonElement extends Components.BsToggleButton, HTMLStencilElement {
10793
+ addEventListener<K extends keyof HTMLBsToggleButtonElementEventMap>(type: K, listener: (this: HTMLBsToggleButtonElement, ev: BsToggleButtonCustomEvent<HTMLBsToggleButtonElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
10794
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10795
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10796
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10797
+ removeEventListener<K extends keyof HTMLBsToggleButtonElementEventMap>(type: K, listener: (this: HTMLBsToggleButtonElement, ev: BsToggleButtonCustomEvent<HTMLBsToggleButtonElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
10798
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10799
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10800
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10801
+ }
10802
+ var HTMLBsToggleButtonElement: {
10803
+ prototype: HTMLBsToggleButtonElement;
10804
+ new (): HTMLBsToggleButtonElement;
10805
+ };
10806
+ interface HTMLBsToggleButtonGroupElementEventMap {
10807
+ "bsChange": string | string[];
10808
+ }
10809
+ /**
10810
+ * A segmented control: a row of `bs-toggle-button` segments with single or multiple choice.
10811
+ * Single choice (default) uses radio semantics (`role="radiogroup"` / `role="radio"`) and arrow keys
10812
+ * move focus AND selection. Multiple choice (`multiple`) uses `role="group"` with `aria-pressed`
10813
+ * toggle buttons; arrow keys move focus only, Space/Enter toggles. Focus is roving in both modes
10814
+ * (one tab stop).
10815
+ * Built from: `bs-toggle-button`.
10816
+ * ## When to use
10817
+ * - 2-5 short, related options that should all stay visible (view mode, alignment, filters).
10818
+ * ## When not to use
10819
+ * - Long lists (use `bs-select`) or page-level navigation (use `bs-tabs`).
10820
+ */
10821
+ interface HTMLBsToggleButtonGroupElement extends Components.BsToggleButtonGroup, HTMLStencilElement {
10822
+ addEventListener<K extends keyof HTMLBsToggleButtonGroupElementEventMap>(type: K, listener: (this: HTMLBsToggleButtonGroupElement, ev: BsToggleButtonGroupCustomEvent<HTMLBsToggleButtonGroupElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
10823
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10824
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
10825
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
10826
+ removeEventListener<K extends keyof HTMLBsToggleButtonGroupElementEventMap>(type: K, listener: (this: HTMLBsToggleButtonGroupElement, ev: BsToggleButtonGroupCustomEvent<HTMLBsToggleButtonGroupElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
10827
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10828
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
10829
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
10830
+ }
10831
+ var HTMLBsToggleButtonGroupElement: {
10832
+ prototype: HTMLBsToggleButtonGroupElement;
10833
+ new (): HTMLBsToggleButtonGroupElement;
10834
+ };
10835
+ /**
10836
+ * A bar of related controls (buttons, toggles, selects) with a left and a right group, grouped
10837
+ * separators, a single tab stop and arrow-key navigation between the controls (WAI-ARIA toolbar
10838
+ * pattern). Optionally, controls that do not fit collapse into a "more" menu.
10839
+ * Keyboard: the toolbar is ONE tab stop. Left/Right arrows (Up/Down when `orientation="vertical"`,
10840
+ * mirrored in RTL) move focus between the controls and wrap; Home/End jump to the first/last. The
10841
+ * control last focused is the one Tab returns to. Disabled controls are skipped.
10842
+ * Direct children of the `left`/`right` slots are the toolbar's controls. A slotted `bs-divider` is a
10843
+ * separator: the toolbar sets its `orientation` perpendicular to its own and skips it when navigating.
10844
+ * ## When to use
10845
+ * - Several related actions that act on the same content (a text editor's formatting row, a table's
10846
+ * bulk actions, a viewer's zoom controls).
10847
+ * ## When not to use
10848
+ * - Navigating between pages or sections -- use `bs-tabs`, `bs-navigation-header` or a nav.
10849
+ * - A single action or a form's submit row -- place the `bs-button`s directly.
10850
+ * - A menu of actions that opens on demand -- use `bs-popover` with `bs-menu`.
10851
+ * ## Overflow
10852
+ * With `overflow` set (horizontal only), controls from the end of the bar that do not fit are hidden and
10853
+ * listed in a `bs-menu` behind a "more" button; choosing an entry activates the original control. An
10854
+ * entry's text is the control's `data-label`, else its `aria-label`, else its text content, else `title`:
10855
+ * give icon-only controls one of these.
10856
+ * Composition: built from `bs-icon-button`, `bs-popover`, `bs-menu` and `bs-menu-item` (overflow) and
10857
+ * expects `bs-button`, `bs-icon-button`, `bs-divider` etc. as slotted content.
10858
+ */
10859
+ interface HTMLBsToolbarElement extends Components.BsToolbar, HTMLStencilElement {
10860
+ }
10861
+ var HTMLBsToolbarElement: {
10862
+ prototype: HTMLBsToolbarElement;
10863
+ new (): HTMLBsToolbarElement;
10864
+ };
9330
10865
  /**
9331
10866
  * A dark tooltip bubble with a pointer arrow, used to surface a short hint of extra information
9332
10867
  * next to a trigger element.
@@ -9533,11 +11068,13 @@ declare global {
9533
11068
  "bs-chatbot-sources-drawer": HTMLBsChatbotSourcesDrawerElement;
9534
11069
  "bs-chatbot-suggestion-button": HTMLBsChatbotSuggestionButtonElement;
9535
11070
  "bs-checkbox": HTMLBsCheckboxElement;
11071
+ "bs-checkbox-group": HTMLBsCheckboxGroupElement;
9536
11072
  "bs-checkbox-skeleton": HTMLBsCheckboxSkeletonElement;
9537
11073
  "bs-chip-filter": HTMLBsChipFilterElement;
9538
11074
  "bs-chip-informative": HTMLBsChipInformativeElement;
9539
11075
  "bs-chip-input": HTMLBsChipInputElement;
9540
11076
  "bs-citation-preview": HTMLBsCitationPreviewElement;
11077
+ "bs-code-block": HTMLBsCodeBlockElement;
9541
11078
  "bs-command-palette": HTMLBsCommandPaletteElement;
9542
11079
  "bs-compact-menu-block": HTMLBsCompactMenuBlockElement;
9543
11080
  "bs-company-switcher": HTMLBsCompanySwitcherElement;
@@ -9547,14 +11084,19 @@ declare global {
9547
11084
  "bs-cookie-consent": HTMLBsCookieConsentElement;
9548
11085
  "bs-data-table": HTMLBsDataTableElement;
9549
11086
  "bs-datepicker": HTMLBsDatepickerElement;
11087
+ "bs-description-item": HTMLBsDescriptionItemElement;
11088
+ "bs-description-list": HTMLBsDescriptionListElement;
9550
11089
  "bs-dialog": HTMLBsDialogElement;
9551
11090
  "bs-divider": HTMLBsDividerElement;
11091
+ "bs-dropdown": HTMLBsDropdownElement;
9552
11092
  "bs-empty-state": HTMLBsEmptyStateElement;
9553
11093
  "bs-error-page": HTMLBsErrorPageElement;
9554
11094
  "bs-file-upload": HTMLBsFileUploadElement;
9555
11095
  "bs-file-upload-item": HTMLBsFileUploadItemElement;
9556
11096
  "bs-global-search": HTMLBsGlobalSearchElement;
9557
11097
  "bs-grid": HTMLBsGridElement;
11098
+ "bs-heading": HTMLBsHeadingElement;
11099
+ "bs-icon": HTMLBsIconElement;
9558
11100
  "bs-icon-button": HTMLBsIconButtonElement;
9559
11101
  "bs-icon-tile": HTMLBsIconTileElement;
9560
11102
  "bs-inline-tab": HTMLBsInlineTabElement;
@@ -9562,6 +11104,7 @@ declare global {
9562
11104
  "bs-key": HTMLBsKeyElement;
9563
11105
  "bs-key-caps": HTMLBsKeyCapsElement;
9564
11106
  "bs-keyboard-shortcuts": HTMLBsKeyboardShortcutsElement;
11107
+ "bs-link": HTMLBsLinkElement;
9565
11108
  "bs-list": HTMLBsListElement;
9566
11109
  "bs-list-item": HTMLBsListItemElement;
9567
11110
  "bs-logo": HTMLBsLogoElement;
@@ -9584,25 +11127,35 @@ declare global {
9584
11127
  "bs-progress-linear": HTMLBsProgressLinearElement;
9585
11128
  "bs-qr-code": HTMLBsQrCodeElement;
9586
11129
  "bs-radio": HTMLBsRadioElement;
11130
+ "bs-radio-group": HTMLBsRadioGroupElement;
9587
11131
  "bs-ripple": HTMLBsRippleElement;
9588
11132
  "bs-search-item": HTMLBsSearchItemElement;
11133
+ "bs-select": HTMLBsSelectElement;
9589
11134
  "bs-session-timeout": HTMLBsSessionTimeoutElement;
9590
11135
  "bs-shortcut-row": HTMLBsShortcutRowElement;
9591
11136
  "bs-side-panel": HTMLBsSidePanelElement;
9592
11137
  "bs-skeleton": HTMLBsSkeletonElement;
11138
+ "bs-skip-link": HTMLBsSkipLinkElement;
9593
11139
  "bs-slider": HTMLBsSliderElement;
9594
11140
  "bs-snackbar": HTMLBsSnackbarElement;
9595
11141
  "bs-source-link": HTMLBsSourceLinkElement;
9596
11142
  "bs-spinner": HTMLBsSpinnerElement;
9597
11143
  "bs-split-pane": HTMLBsSplitPaneElement;
9598
11144
  "bs-stack": HTMLBsStackElement;
11145
+ "bs-stat": HTMLBsStatElement;
9599
11146
  "bs-stepper": HTMLBsStepperElement;
9600
11147
  "bs-stepper-step": HTMLBsStepperStepElement;
9601
11148
  "bs-switch": HTMLBsSwitchElement;
9602
11149
  "bs-tab": HTMLBsTabElement;
11150
+ "bs-table-of-contents": HTMLBsTableOfContentsElement;
9603
11151
  "bs-tabs": HTMLBsTabsElement;
11152
+ "bs-tag": HTMLBsTagElement;
11153
+ "bs-text": HTMLBsTextElement;
9604
11154
  "bs-timepicker": HTMLBsTimepickerElement;
9605
11155
  "bs-toast": HTMLBsToastElement;
11156
+ "bs-toggle-button": HTMLBsToggleButtonElement;
11157
+ "bs-toggle-button-group": HTMLBsToggleButtonGroupElement;
11158
+ "bs-toolbar": HTMLBsToolbarElement;
9606
11159
  "bs-tooltip": HTMLBsTooltipElement;
9607
11160
  "bs-tooltip-trigger": HTMLBsTooltipTriggerElement;
9608
11161
  "bs-tree": HTMLBsTreeElement;
@@ -10351,6 +11904,10 @@ declare namespace LocalJSX {
10351
11904
  * @default 'Breadcrumb'
10352
11905
  */
10353
11906
  "label"?: string;
11907
+ /**
11908
+ * Fires when a crumb's link (or one in a `bs-breadcrumb-overflow` popup) is clicked, before the browser navigates. **Cancelable**: call `event.preventDefault()` to route it yourself. Detail is `{ href }`. This is the child's own event bubbling up; it is declared here (and never emitted from here) so the framework wrappers expose `onBsNavigate` / `(bsNavigate)` / `@bs-navigate` on `<bs-breadcrumbs>`. `event.target` is the crumb that was clicked.
11909
+ */
11910
+ "onBsNavigate"?: (event: BsBreadcrumbsCustomEvent<{ href: string }>) => void;
10354
11911
  /**
10355
11912
  * Size variant, propagated as a JS property to every slotted `bs-breadcrumb`/ `bs-breadcrumb-overflow` child -- this container has no visual sizing of its own (font/spacing live on the item components, see `bs-breadcrumb.tsx`'s identical `size` prop), so propagation is the only way setting `size` here reaches every crumb. CSS custom properties can't carry an enum that switches rules on their own, which is why this is pushed via JS property instead of CSS inheritance -- same reasoning as `bs-tabs` setting `selected` directly on its slotted `bs-tab`/`bs-inline-tab` children. Re-propagated on `size` changes and whenever the slotted children change (e.g. a crumb added later).
10356
11913
  * @default 'md'
@@ -10373,19 +11930,37 @@ declare namespace LocalJSX {
10373
11930
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
10374
11931
  * it for actions that actually delete/revoke/undo something.
10375
11932
  * @prop --bs-button-radius - Corner radius. Aliased to `--bs-border-radius-100` by default.
10376
- * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-300`.
11933
+ * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-150` (12px).
11934
+ * @prop --bs-button-padding-x-md - Left/right padding at `size="md"`. Aliased to `--bs-spacing-150` (12px).
11935
+ * @prop --bs-button-padding-x-lg - Left/right padding at `size="lg"`. Aliased to `--bs-spacing-150` (12px).
10377
11936
  * @prop --bs-button-width - Width of the button. `auto` by default (fits its content); set `100%` for a full-width button, e.g. `bs-button { --bs-button-width: 100%; }`.
10378
11937
  * @prop --bs-button-subtle-color - Label/icon colour, `variant="subtle"`. Aliased to `--bs-color-neutral-default`; set it to `var(--bs-text-action)` for a blue text button.
10379
- * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
10380
- * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
10381
- * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
11938
+ * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-400` (32px).
11939
+ * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-550` (44px).
11940
+ * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-600` (48px).
11941
+ * @prop --bs-button-outlined-color - Label/icon colour, `variant="outlined"`, default. Aliased to `--bs-color-primary-default`.
10382
11942
  * @prop --bs-button-neutral-border - Border color, `variant="neutral"`, default/disabled. Aliased to `--bs-border-neutral-container`.
10383
11943
  * @prop --bs-button-neutral-border-hover - Border color, `variant="neutral"`, hover. Aliased to `--bs-border-neutral-container-hover`.
10384
11944
  * @prop --bs-button-neutral-border-pressed - Border color, `variant="neutral"`, pressed. Aliased to `--bs-border-neutral-container-pressed`.
10385
- * @prop --bs-button-padding-x-icon-side - Horizontal padding on an edge that's adjacent to a leading/trailing icon (tighter than the plain text-only edge). Aliased to `--bs-spacing-150`.
10386
- * @prop --bs-button-padding-x-label-side - Horizontal padding on the opposite edge, when an icon on the other side needs compensating extra space to keep the button optically balanced. Aliased to `--bs-spacing-250`.
11945
+ * @prop --bs-button-padding-x-icon-side - Horizontal padding on an edge that's adjacent to a leading/trailing icon (now equal to the text-only edge). Aliased to `--bs-spacing-150`.
11946
+ * @prop --bs-button-padding-x-label-side - Horizontal padding on the opposite edge, when an icon on the other side needs compensating extra space to keep the button optically balanced. Aliased to `--bs-spacing-150` (no compensation by default).
10387
11947
  */
10388
11948
  interface BsButton {
11949
+ /**
11950
+ * Forwarded to the inner `<button>` as `aria-controls`. Note an id only resolves inside this component's shadow tree, so it can't point at an element in the page's light DOM.
11951
+ * @default null
11952
+ */
11953
+ "ariaControls"?: string | null;
11954
+ /**
11955
+ * Forwarded to the inner `<button>` as `aria-expanded`, for disclosure/menu buttons.
11956
+ * @default null
11957
+ */
11958
+ "ariaExpanded"?: 'true' | 'false' | null;
11959
+ /**
11960
+ * Forwarded to the inner `<button>` as `aria-haspopup`.
11961
+ * @default null
11962
+ */
11963
+ "ariaHasPopup"?: 'true' | 'false' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | null;
10389
11964
  /**
10390
11965
  * Accessible name for the button. Required for icon-only usage (no visible label text via the default slot) so screen readers still announce what the button does. Stencil reflects this camelCase prop to the `aria-label` HTML attribute automatically.
10391
11966
  * @default null
@@ -10404,6 +11979,10 @@ declare namespace LocalJSX {
10404
11979
  * The name of the element, used when submitting an HTML form.
10405
11980
  */
10406
11981
  "name"?: string;
11982
+ /**
11983
+ * Makes this a toggle button: sets `aria-pressed` on the inner `<button>` to `true`/`false`. Leave it unset (the default) for a plain action button, which then has no `aria-pressed` at all. The component does not toggle itself; the owner flips this on click.
11984
+ */
11985
+ "pressed"?: boolean;
10407
11986
  /**
10408
11987
  * Sizing scale.
10409
11988
  * @default 'md'
@@ -10459,11 +12038,45 @@ declare namespace LocalJSX {
10459
12038
  * - For a dismissible/transient message — use a modal or a dedicated notification component.
10460
12039
  */
10461
12040
  interface BsCard {
12041
+ /**
12042
+ * Makes the whole card a link to this URL (a real `<a>`). Takes precedence over `selectable`.
12043
+ */
12044
+ "href"?: string;
12045
+ /**
12046
+ * Accessible name for the clickable card, used instead of the `header` slot text. Set it when there is no `header` content, or when the header text is not a good name on its own.
12047
+ */
12048
+ "label"?: string;
12049
+ /**
12050
+ * Fires when a `selectable` card is toggled by the user, with the new `selected` value.
12051
+ */
12052
+ "onBsChange"?: (event: BsCardCustomEvent<boolean>) => void;
12053
+ /**
12054
+ * Fires when a link card (`href`) is clicked, before the browser navigates. **Cancelable**: `preventDefault()` stops the navigation so you can route it yourself. Detail is `{ href }`. Modified clicks (ctrl/cmd/shift/alt, middle button) are left to the browser.
12055
+ */
12056
+ "onBsNavigate"?: (event: BsCardCustomEvent<{ href: string }>) => void;
12057
+ /**
12058
+ * Link `rel`, only used with `href`.
12059
+ */
12060
+ "rel"?: string;
12061
+ /**
12062
+ * Makes the whole card a toggle (a real `<button aria-pressed>`). Ignored when `href` is set.
12063
+ * @default false
12064
+ */
12065
+ "selectable"?: boolean;
12066
+ /**
12067
+ * Whether a `selectable` card is selected. Mutable and reflected; toggled by the user.
12068
+ * @default false
12069
+ */
12070
+ "selected"?: boolean;
10462
12071
  /**
10463
12072
  * Maps to the brandsync-tokens `--bs-paper-bg-*` set — Brandsync's tokens don't have a dedicated "card" component yet, so this reuses the existing Paper surface tokens.
10464
12073
  * @default 'raised'
10465
12074
  */
10466
12075
  "surface"?: BsCardSurface;
12076
+ /**
12077
+ * Link `target`, only used with `href`. With `_blank`, `rel` defaults to `noopener noreferrer`.
12078
+ */
12079
+ "target"?: string;
10467
12080
  }
10468
12081
  /**
10469
12082
  * A carousel that shows a page of slides at a time, with a tracker (dots or numbered blocks) and
@@ -10952,6 +12565,9 @@ declare namespace LocalJSX {
10952
12565
  * `--bs-color-primary-container-pressed`.
10953
12566
  * @prop --bs-chatbot-suggestion-button-bg-focus - Background when focused. Aliased to
10954
12567
  * `--bs-color-primary-container-hover` (same as hover).
12568
+ * @prop --bs-chatbot-suggestion-button-bg-disabled - Background when disabled. Aliased to `--bs-surface-action-disabled`.
12569
+ * @prop --bs-chatbot-suggestion-button-text-disabled - Text color when disabled. Aliased to `--bs-text-on-disabled`.
12570
+ * @prop --bs-chatbot-suggestion-button-border-color-disabled - Border color when disabled. Aliased to `--bs-border-neutral-disabled`.
10955
12571
  * @prop --bs-chatbot-suggestion-button-text-default - Text color in the default state. Aliased to
10956
12572
  * `--bs-text-action`.
10957
12573
  * @prop --bs-chatbot-suggestion-button-text-hover - Text color on hover, pressed, and focus.
@@ -11035,6 +12651,49 @@ declare namespace LocalJSX {
11035
12651
  */
11036
12652
  "value"?: string;
11037
12653
  }
12654
+ /**
12655
+ * A labelled group of `bs-checkbox`es: a `<fieldset>` with a `<legend>`, helper or error text, and
12656
+ * a single `value` array of the checked boxes' values.
12657
+ * Composed from: `bs-checkbox` (slotted by you).
12658
+ * ## When to use
12659
+ * - A set of related, independent options where any number may be chosen ("Notify me by ...").
12660
+ * ## When not to use
12661
+ * - Exactly one choice: use `bs-radio-group`.
12662
+ * - A single yes/no: use one `bs-checkbox`, or `bs-switch` for an immediate setting.
12663
+ */
12664
+ interface BsCheckboxGroup {
12665
+ /**
12666
+ * Helper text under the options. Replaced by `error` while that is set.
12667
+ */
12668
+ "description"?: string;
12669
+ /**
12670
+ * Error message. Sets `aria-invalid`, replaces the helper text, and puts every checkbox in its error style.
12671
+ */
12672
+ "error"?: string;
12673
+ /**
12674
+ * Legend: the visible group label, also its accessible name.
12675
+ */
12676
+ "label"?: string;
12677
+ /**
12678
+ * Emitted with the new array of checked `value`s when the user toggles a checkbox. Replaces the checkboxes' own `bsChange`, which does not reach listeners outside the group.
12679
+ */
12680
+ "onBsChange"?: (event: BsCheckboxGroupCustomEvent<string[]>) => void;
12681
+ /**
12682
+ * Layout of the checkboxes.
12683
+ * @default 'vertical'
12684
+ */
12685
+ "orientation"?: BsCheckboxGroupOrientation;
12686
+ /**
12687
+ * Marks the group as required: shows an asterisk after the label and sets `aria-required`.
12688
+ * @default false
12689
+ */
12690
+ "required"?: boolean;
12691
+ /**
12692
+ * `value`s of the checked checkboxes. An array, so set it as a JS property, not an attribute. Setting it checks the matching boxes and unchecks the rest.
12693
+ * @default []
12694
+ */
12695
+ "value"?: string[];
12696
+ }
11038
12697
  /**
11039
12698
  * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
11040
12699
  * known yet (e.g. still being fetched from an API). Renders a small square (matching the
@@ -11222,6 +12881,75 @@ declare namespace LocalJSX {
11222
12881
  */
11223
12882
  "sourceName"?: string;
11224
12883
  }
12884
+ /**
12885
+ * A block of code with an optional filename header and a Copy button, or (with `inline`) styled
12886
+ * inline code. Dependency-free: it does no syntax highlighting itself. Pass plain text with `code`,
12887
+ * or slot pre-highlighted markup (e.g. the output of Shiki or Prism: spans coloured with your own
12888
+ * CSS) as the default slot.
12889
+ * Follows light and dark mode through the surface/text tokens. Long lines scroll horizontally (the
12890
+ * scroll area is keyboard focusable) or, with `wrap`, break onto the next line.
12891
+ * Copying announces the `copiedLabel` text through a polite live region, and the button label
12892
+ * changes to match for a few seconds.
12893
+ * Slotted content: keep it flush against the tags (`<bs-code-block><span>..</span></bs-code-block>`),
12894
+ * since whitespace in a `<pre>`-style block is kept. The line count for `lineNumbers` and the text
12895
+ * that is copied are read from the slotted text.
12896
+ * Composed from: `bs-card` (the surface), `bs-button` and `bs-icon` (the Copy button).
12897
+ * ## When to use
12898
+ * - Showing a snippet, command or config the reader may want to copy.
12899
+ * - `inline` for a short code term inside a sentence.
12900
+ * ## When not to use
12901
+ * - Long files that need folding, search or editing: link to the source instead.
12902
+ * - Pre-formatted prose or tables: use ordinary text and table markup.
12903
+ */
12904
+ interface BsCodeBlock {
12905
+ /**
12906
+ * Plain-text code. When set it is shown (escaped) instead of the default slot, and is what Copy copies.
12907
+ */
12908
+ "code"?: string;
12909
+ /**
12910
+ * Label of the Copy button after copying, and the text announced to assistive tech.
12911
+ * @default 'Copied'
12912
+ */
12913
+ "copiedLabel"?: string;
12914
+ /**
12915
+ * Label of the Copy button.
12916
+ * @default 'Copy'
12917
+ */
12918
+ "copyLabel"?: string;
12919
+ /**
12920
+ * Name shown at the left of the header, e.g. `app.config.ts` or `Terminal`. Also names the code region for assistive tech.
12921
+ */
12922
+ "filename"?: string;
12923
+ /**
12924
+ * Remove the Copy button.
12925
+ * @default false
12926
+ */
12927
+ "hideCopy"?: boolean;
12928
+ /**
12929
+ * Render as inline code (a styled `<code>` inside a sentence): no header, no Copy button, no scrolling.
12930
+ * @default false
12931
+ */
12932
+ "inline"?: boolean;
12933
+ /**
12934
+ * Show a line number gutter. Line numbers need unwrapped lines, so `wrap` is ignored while this is set.
12935
+ * @default false
12936
+ */
12937
+ "lineNumbers"?: boolean;
12938
+ /**
12939
+ * Emitted with the copied text after it was written to the clipboard.
12940
+ */
12941
+ "onBsCopy"?: (event: BsCodeBlockCustomEvent<string>) => void;
12942
+ /**
12943
+ * Accessible name of the code region when there is no `filename`.
12944
+ * @default 'Code'
12945
+ */
12946
+ "regionLabel"?: string;
12947
+ /**
12948
+ * Wrap long lines instead of scrolling horizontally.
12949
+ * @default false
12950
+ */
12951
+ "wrap"?: boolean;
12952
+ }
11225
12953
  /**
11226
12954
  * A Ctrl+K command palette: a modal with a search field, grouped commands, navigation and records, a
11227
12955
  * no-results view and a keyboard-hint footer. The data, the filtering, the command registry and the
@@ -11967,6 +13695,12 @@ declare namespace LocalJSX {
11967
13695
  * ## When not to use
11968
13696
  * - A handful of unrelated key/value pairs — a simple list or card is lighter-weight.
11969
13697
  * - Deeply nested/hierarchical data — this component renders one flat row per record.
13698
+ * ## Rich cells
13699
+ * Without a `cellRenderer`, each cell is a named slot, `cell-{row.id}-{column.key}`, whose fallback
13700
+ * content is the plain-text value. Slot an element into it to put app-owned content (a framework
13701
+ * component, a router link, a badge) in the cell, e.g.
13702
+ * `<a slot="cell-7-name" href="/people/7">Ada</a>`. The slotted element lives in the light DOM, so
13703
+ * it keeps your framework, router and CSP; nothing is parsed as HTML.
11970
13704
  */
11971
13705
  interface BsDataTable {
11972
13706
  /**
@@ -11999,6 +13733,11 @@ declare namespace LocalJSX {
11999
13733
  * @default 'asc'
12000
13734
  */
12001
13735
  "sortDirection"?: 'asc' | 'desc';
13736
+ /**
13737
+ * Alternates the row background (even rows use `--bs-data-table-stripe-bg`) so wide tables are easier to scan. Follows dark mode through the token. Row hover still wins.
13738
+ * @default false
13739
+ */
13740
+ "striped"?: boolean;
12002
13741
  }
12003
13742
  /**
12004
13743
  * An inline calendar for picking a single date, or a start/end date range. Matches the Figma
@@ -12106,6 +13845,68 @@ declare namespace LocalJSX {
12106
13845
  */
12107
13846
  "yearLabel"?: string;
12108
13847
  }
13848
+ /**
13849
+ * One term and its detail inside a `bs-description-list` (a label/value pair such as "Owner: Sam Lee").
13850
+ * ## When to use
13851
+ * - As a child of `bs-description-list`, one per key/value pair.
13852
+ * ## When not to use
13853
+ * - Rows of records with media and actions -- use `bs-list-item`.
13854
+ * - Many pairs compared across several records -- use `bs-data-table`.
13855
+ * Each item renders its own `<dl>` containing one `<div>` group with a real `<dt>` and `<dd>`. (A `dl` cannot
13856
+ * span the shadow boundary between a list and its items, so the grouping lives here.)
13857
+ * @prop --bs-description-item-gap - Gap between term and detail when stacked. Aliased to `--bs-spacing-25`.
13858
+ * @prop --bs-description-item-term-width - Width of the term column when `layout="horizontal"`. `12rem`.
13859
+ * @prop --bs-description-item-column-gap - Gap between the term and detail columns when horizontal. Aliased to `--bs-spacing-200`.
13860
+ * @prop --bs-description-item-padding-y - Vertical padding. Aliased to `--bs-spacing-100`.
13861
+ * @prop --bs-description-item-term-color - Aliased to `--bs-text-secondary`.
13862
+ * @prop --bs-description-item-description-color - Aliased to `--bs-text-default`.
13863
+ */
13864
+ interface BsDescriptionItem {
13865
+ /**
13866
+ * The detail (value). The default slot overrides it.
13867
+ */
13868
+ "description"?: string;
13869
+ /**
13870
+ * Set by the parent `bs-description-list`: `stacked` (term above detail) or `horizontal` (side by side).
13871
+ * @default 'stacked'
13872
+ */
13873
+ "layout"?: 'stacked' | 'horizontal';
13874
+ /**
13875
+ * The term (label).
13876
+ */
13877
+ "term"?: string;
13878
+ }
13879
+ /**
13880
+ * A key/value list of `bs-description-item` pairs (term and detail), for record summaries, settings read-outs
13881
+ * and metadata panels. Terms and details use real `dt`/`dd` semantics.
13882
+ * ## When to use
13883
+ * - A read-only summary of one record: "Owner", "Created", "Status" with their values.
13884
+ * ## When not to use
13885
+ * - A list of records with media and actions -- use `bs-list`.
13886
+ * - Editable fields -- use form components.
13887
+ * - Several records compared across columns -- use `bs-data-table`.
13888
+ * Built from `bs-description-item` children (light DOM; the list never moves nodes). Each item holds its own
13889
+ * `dl`; the list sets the layout on them and draws dividers.
13890
+ * @prop --bs-description-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
13891
+ * @prop --bs-description-list-gap - Gap between items. `0`.
13892
+ */
13893
+ interface BsDescriptionList {
13894
+ /**
13895
+ * Accessible name of the group.
13896
+ * @default null
13897
+ */
13898
+ "ariaLabel"?: string | null;
13899
+ /**
13900
+ * Draws a 1px separator between items.
13901
+ * @default false
13902
+ */
13903
+ "dividers"?: boolean;
13904
+ /**
13905
+ * `stacked` puts each term above its detail; `horizontal` puts them side by side in two columns.
13906
+ * @default 'stacked'
13907
+ */
13908
+ "layout"?: 'stacked' | 'horizontal';
13909
+ }
12109
13910
  /**
12110
13911
  * An overlay dialog that interrupts the current flow for a focused task or confirmation.
12111
13912
  * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
@@ -12179,6 +13980,41 @@ declare namespace LocalJSX {
12179
13980
  */
12180
13981
  "variant"?: BsDividerVariant;
12181
13982
  }
13983
+ /**
13984
+ * A menu trigger: a button (slot `trigger`) that opens a `bs-menu` of `bs-menu-item`s in an anchored,
13985
+ * viewport-aware popup, with the menu keyboard pattern and focus management built in.
13986
+ * Opens on click, Enter, Space (via the trigger button) and ArrowDown. On open focus moves to the
13987
+ * first enabled menu item; Up/Down/Home/End move between items (handled by `bs-menu`). The dropdown
13988
+ * closes on outside click, Escape (focus returns to the trigger), Tab, and after an item is activated.
13989
+ * The trigger gets `aria-haspopup="menu"` and `aria-expanded` kept in sync.
13990
+ * Composed from `bs-popover` (anchor positioning, flipping, outside-click and Escape dismissal, open
13991
+ * motion), `bs-menu` and `bs-menu-item` (slotted by you), and a `bs-button` / `bs-icon-button` trigger.
13992
+ * ## When to use
13993
+ * - A header or toolbar action that reveals a short list of commands ("More", "Account", "Sort by").
13994
+ * ## When not to use
13995
+ * - Free-form popup content such as forms or arbitrary panels (use `bs-popover`).
13996
+ * - Choosing a value for a form field (use `bs-select`).
13997
+ */
13998
+ interface BsDropdown {
13999
+ /**
14000
+ * Emitted after the menu closes (outside click, Escape, Tab, item activation or `open = false`).
14001
+ */
14002
+ "onBsClose"?: (event: BsDropdownCustomEvent<void>) => void;
14003
+ /**
14004
+ * Emitted after the menu opens.
14005
+ */
14006
+ "onBsOpen"?: (event: BsDropdownCustomEvent<void>) => void;
14007
+ /**
14008
+ * Whether the menu is shown.
14009
+ * @default false
14010
+ */
14011
+ "open"?: boolean;
14012
+ /**
14013
+ * Where the menu sits relative to the trigger; flips to stay in the viewport.
14014
+ * @default 'bottom-start'
14015
+ */
14016
+ "placement"?: BsDropdownPlacement;
14017
+ }
12182
14018
  /**
12183
14019
  * A centered "nothing to show" block: an icon tile, a heading, a description and an optional action.
12184
14020
  * Used for empty lists, "no results" and error states inside a panel, card or page section.
@@ -12193,6 +14029,7 @@ declare namespace LocalJSX {
12193
14029
  * @prop --bs-empty-state-padding-y - Vertical padding. Aliased to `--bs-spacing-700` (56px).
12194
14030
  * @prop --bs-empty-state-padding-x - Horizontal padding. Aliased to `--bs-spacing-300` (24px).
12195
14031
  * @prop --bs-empty-state-gap - Gap between tile, heading, description and action. Aliased to `--bs-spacing-150`.
14032
+ * @prop --bs-empty-state-heading-size - Aliased to `--bs-font-size-xl` (`--bs-font-size-3xl` at `size="page"`).
12196
14033
  * @prop --bs-empty-state-heading-color - Aliased to `--bs-text-default`.
12197
14034
  * @prop --bs-empty-state-description-color - Aliased to `--bs-text-secondary`.
12198
14035
  */
@@ -12215,6 +14052,11 @@ declare namespace LocalJSX {
12215
14052
  * @default 'default'
12216
14053
  */
12217
14054
  "intent"?: BsIconTileIntent;
14055
+ /**
14056
+ * `panel` (default) fits inside a card, table or section. `page` fills a whole view: more padding, a larger heading and a minimum height.
14057
+ * @default 'panel'
14058
+ */
14059
+ "size"?: 'panel' | 'page';
12218
14060
  }
12219
14061
  /**
12220
14062
  * A full-block page for when the user can't get to what they asked for: page not found (404), a server
@@ -12629,6 +14471,74 @@ declare namespace LocalJSX {
12629
14471
  */
12630
14472
  "rowGap"?: string;
12631
14473
  }
14474
+ /**
14475
+ * A heading whose rendered element and visual style are chosen separately: `level` (or `as`) picks
14476
+ * the element for the document outline, `size` picks the look. Sizes map to the typography tokens
14477
+ * (`--bs-font-size-*`, `--bs-font-weight-*`, `--bs-line-height-*`, `--bs-typography-font-family-heading`).
14478
+ * Default sizes by level: 1 = 40px, 2 = 32px, 3 = 24px, 4 = 20px, 5 = 18px, 6 = 16px; `display` is 48px.
14479
+ * Composed from: nothing (leaf).
14480
+ * ## When to use
14481
+ * - Any page or section title. Keep levels in order (no jumping from 1 to 4); change `size`, not `level`, to restyle.
14482
+ * ## When not to use
14483
+ * - Body copy, captions and labels: use `bs-text`.
14484
+ * - To make text big without it being a heading: use `bs-text` with `as="p"`.
14485
+ */
14486
+ interface BsHeading {
14487
+ /**
14488
+ * Overrides the rendered element, e.g. `as="p"` for a heading-looking line that is not part of the outline. When set, `level` only drives the default size.
14489
+ */
14490
+ "as"?: BsHeadingAs;
14491
+ /**
14492
+ * Heading level 1-6: chooses the element (`h1`-`h6`) and, unless `size` is set, the visual size.
14493
+ * @default 2
14494
+ */
14495
+ "level"?: BsHeadingLevel;
14496
+ /**
14497
+ * Visual size, independent of the element: `display` or `1`-`6` (the default sizes of levels 1-6). Defaults to `level`.
14498
+ */
14499
+ "size"?: BsHeadingSize;
14500
+ /**
14501
+ * Text colour from the text tokens. `inherit` uses the surrounding colour.
14502
+ * @default 'default'
14503
+ */
14504
+ "tone"?: BsHeadingTone;
14505
+ }
14506
+ /**
14507
+ * A sized, coloured icon. Renders inline SVG from a named registry (`name`), or any SVG you slot in.
14508
+ * Built-in names: `menu`, `arrow-right`, `arrow-left`, `check`, `close`, `chevron-down`,
14509
+ * `external-link`, `copy`, `search`, plus Phosphor glyphs `user`, `star`, `star-fill`, `x`,
14510
+ * `paper-plane-right`, `note-pencil`, `clock-counter-clockwise`, `arrows-out-simple` (256x256 filled). Add more with `registerIcons({ name: '<path d="..."/>' })`
14511
+ * (exported from the package entry): each value is the inner markup of a 24x24, `currentColor`
14512
+ * stroke icon, or pass `{ viewBox, body }` for a filled glyph on another grid.
14513
+ * Decorative by default (`aria-hidden`). Set `label` when the icon alone conveys meaning; it is then
14514
+ * exposed as an image with that name. An icon inside a button never needs `label`: name the button.
14515
+ * Composed from: nothing (leaf). Used by `bs-code-block`.
14516
+ * ## When to use
14517
+ * - A glyph beside text or inside a button, sized and coloured from tokens.
14518
+ * ## When not to use
14519
+ * - As a control by itself: wrap it in `bs-icon-button`.
14520
+ * - For a tinted status square: use `bs-icon-tile`.
14521
+ */
14522
+ interface BsIcon {
14523
+ /**
14524
+ * Accessible name. When set the icon is exposed as an image with this name; when empty it is decorative and hidden from assistive tech.
14525
+ */
14526
+ "label"?: string;
14527
+ /**
14528
+ * Registered icon name (see the component description for the built-in set).
14529
+ */
14530
+ "name"?: string;
14531
+ /**
14532
+ * Size: `xs` 12px, `sm` 16px, `md` 24px, `lg` 32px, `xl` 48px.
14533
+ * @default 'md'
14534
+ */
14535
+ "size"?: BsIconSize;
14536
+ /**
14537
+ * Colour from the icon tokens. `inherit` uses the surrounding text colour (`currentColor`).
14538
+ * @default 'default'
14539
+ */
14540
+ "tone"?: BsIconTone;
14541
+ }
12632
14542
  /**
12633
14543
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
12634
14544
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -12648,6 +14558,21 @@ declare namespace LocalJSX {
12648
14558
  * accessible name.
12649
14559
  */
12650
14560
  interface BsIconButton {
14561
+ /**
14562
+ * Forwarded to the inner `<button>` as `aria-controls`. Note an id only resolves inside this component's shadow tree, so it can't point at an element in the page's light DOM.
14563
+ * @default null
14564
+ */
14565
+ "ariaControls"?: string | null;
14566
+ /**
14567
+ * Forwarded to the inner `<button>` as `aria-expanded`, for disclosure/menu buttons.
14568
+ * @default null
14569
+ */
14570
+ "ariaExpanded"?: 'true' | 'false' | null;
14571
+ /**
14572
+ * Forwarded to the inner `<button>` as `aria-haspopup`.
14573
+ * @default null
14574
+ */
14575
+ "ariaHasPopup"?: 'true' | 'false' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | null;
12651
14576
  /**
12652
14577
  * Accessible name for the button. Required -- this component is always icon-only, so there's no visible label text for screen readers to fall back on. Stencil reflects this camelCase prop to the `aria-label` HTML attribute automatically.
12653
14578
  * @default null
@@ -12772,7 +14697,9 @@ declare namespace LocalJSX {
12772
14697
  * range of related "field" shapes (number stepper, password reveal, date, dropdown trigger,
12773
14698
  * select, textarea, chip input, initials, country, and pin) via the `type` prop, since they all
12774
14699
  * share the same label/description/error/icon-slot chrome.
12775
- * Built from: `bs-menu`/`bs-menu-item` (`type="dropdown"`) and `bs-chip-informative` + `bs-icon-button` (`type="chip"`).
14700
+ * Built from: `bs-menu`/`bs-menu-item` (`type="dropdown"`), `bs-chip-informative` + `bs-icon-button` (`type="chip"`),
14701
+ * and `bs-icon-button` + `bs-spinner` (`type="combobox"` clear button / loading indicator; its listbox is a
14702
+ * hand-built `role="listbox"` because `bs-menu` is `role="menu"` and cannot host `option`s).
12776
14703
  * ## When to use
12777
14704
  * - Collecting a single line of free-text, email, password, or numeric input.
12778
14705
  * - Any of the other supported `type`s (search, date, dropdown, select, textarea, chip, initials,
@@ -12785,16 +14712,31 @@ declare namespace LocalJSX {
12785
14712
  * options list at all (freeform chip entry).
12786
14713
  */
12787
14714
  interface BsInput {
14715
+ /**
14716
+ * Accessible name for the control, used only when no visible `label` is set (e.g. a search field with no visible label). Passed to the inner native control, because an `aria-label` on the `<bs-input>` host cannot name an element inside its shadow root.
14717
+ * @default null
14718
+ */
14719
+ "ariaLabel"?: string | null;
12788
14720
  /**
12789
14721
  * Current chips for `type="chip"`. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
12790
14722
  * @default []
12791
14723
  */
12792
14724
  "chips"?: string[];
14725
+ /**
14726
+ * `type="combobox"`: accessible name of the clear button.
14727
+ * @default 'Clear'
14728
+ */
14729
+ "clearLabel"?: string;
12793
14730
  /**
12794
14731
  * Current selected country code for `type="country"`.
12795
14732
  * @default ''
12796
14733
  */
12797
14734
  "country"?: string;
14735
+ /**
14736
+ * `type="country"`: accessible name of the country picker (its visible content is just the flag).
14737
+ * @default 'Country'
14738
+ */
14739
+ "countryLabel"?: string;
12798
14740
  /**
12799
14741
  * Country select options for `type="country"`. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
12800
14742
  * @default []
@@ -12811,6 +14753,11 @@ declare namespace LocalJSX {
12811
14753
  */
12812
14754
  "disabled"?: boolean;
12813
14755
  "error"?: string;
14756
+ /**
14757
+ * `type="combobox"`: when true (default) `options` are filtered client-side by whether the label contains the typed text. Set false when you supply already-filtered results yourself (e.g. from a server) in response to `bsInput`.
14758
+ * @default true
14759
+ */
14760
+ "filterOptions"?: boolean;
12814
14761
  /**
12815
14762
  * The `id` of a `<form>` element to associate this element with.
12816
14763
  */
@@ -12836,6 +14783,16 @@ declare namespace LocalJSX {
12836
14783
  * @default 4
12837
14784
  */
12838
14785
  "length"?: number;
14786
+ /**
14787
+ * `type="combobox"`: shows a loading indicator and, while no options match, a loading message in the popup instead of "no results". Use while fetching `options` asynchronously.
14788
+ * @default false
14789
+ */
14790
+ "loading"?: boolean;
14791
+ /**
14792
+ * `type="combobox"`: text of the popup row shown while `loading` and nothing matches.
14793
+ * @default 'Loading...'
14794
+ */
14795
+ "loadingLabel"?: string;
12839
14796
  /**
12840
14797
  * Maximum value for `type="number"`'s stepper buttons.
12841
14798
  */
@@ -12848,17 +14805,19 @@ declare namespace LocalJSX {
12848
14805
  * The `name` the value is submitted under in a surrounding `<form>`'s `FormData`.
12849
14806
  */
12850
14807
  "name"?: string;
12851
- "onBsChange"?: (event: BsInputCustomEvent<string>) => void;
12852
14808
  /**
12853
- * Emitted when a chip is committed (Enter pressed in the draft input) for `type="chip"`.
14809
+ * `type="combobox"`: text of the popup row shown when no option matches.
14810
+ * @default 'No results'
12854
14811
  */
14812
+ "noResultsLabel"?: string;
14813
+ "onBsChange"?: (event: BsInputCustomEvent<string>) => void;
12855
14814
  "onBsChipAdd"?: (event: BsInputCustomEvent<string>) => void;
12856
14815
  /**
12857
14816
  * Emitted when a chip's remove button is clicked for `type="chip"`.
12858
14817
  */
12859
14818
  "onBsChipRemove"?: (event: BsInputCustomEvent<string>) => void;
12860
14819
  /**
12861
- * Emitted when the country `<select>` changes for `type="country"`.
14820
+ * Emitted when a country is chosen from the picker for `type="country"`.
12862
14821
  */
12863
14822
  "onBsCountryChange"?: (event: BsInputCustomEvent<string>) => void;
12864
14823
  "onBsInput"?: (event: BsInputCustomEvent<string>) => void;
@@ -12867,16 +14826,25 @@ declare namespace LocalJSX {
12867
14826
  */
12868
14827
  "onBsOpen"?: (event: BsInputCustomEvent<boolean>) => void;
12869
14828
  /**
12870
- * Emitted when the title `<select>` changes for `type="initials"`.
14829
+ * Emitted when an option is chosen for `type="combobox"` (click or Enter), with the option's `{ label, value }`. `value` of the component itself becomes the option's label (the text shown).
14830
+ */
14831
+ "onBsOptionSelect"?: (event: BsInputCustomEvent<{ label: string; value: string }>) => void;
14832
+ /**
14833
+ * Emitted when a title is chosen from the picker for `type="initials"`.
12871
14834
  */
12872
14835
  "onBsTitleChange"?: (event: BsInputCustomEvent<string>) => void;
12873
14836
  /**
12874
- * Whether the `type="dropdown"` trigger is open. Reflects to an attribute so consumers can style an open state via CSS. When `options` is non-empty, this also controls whether the `bs-menu` of `bs-menu-item`s is rendered below the field.
14837
+ * Whether the `type="dropdown"` / `type="combobox"` popup is open. Reflects to an attribute so consumers can style an open state via CSS. When `options` is non-empty, this also controls whether the `bs-menu` of `bs-menu-item`s is rendered below the field.
12875
14838
  * @default false
12876
14839
  */
12877
14840
  "open"?: boolean;
12878
14841
  /**
12879
- * Options for `type="select"` (rendered as native `<option>`s) and `type="dropdown"` (rendered as a `bs-menu` of `bs-menu-item`s when `open`). Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
14842
+ * `type="date"`: accessible name of the default calendar button that opens the native picker.
14843
+ * @default 'Open date picker'
14844
+ */
14845
+ "openPickerLabel"?: string;
14846
+ /**
14847
+ * Options for `type="select"` (rendered as `role="option"` rows of an in-shadow listbox) and `type="dropdown"` (rendered as a `bs-menu` of `bs-menu-item`s when `open`). Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
12880
14848
  * @default []
12881
14849
  */
12882
14850
  "options"?: { label: string; value: string }[];
@@ -12901,6 +14869,11 @@ declare namespace LocalJSX {
12901
14869
  * @default 1
12902
14870
  */
12903
14871
  "step"?: number;
14872
+ /**
14873
+ * `type="initials"`: accessible name of the title picker (its visible text is just the title).
14874
+ * @default 'Title'
14875
+ */
14876
+ "titleLabel"?: string;
12904
14877
  /**
12905
14878
  * Title select options for `type="initials"` (e.g. `['Mrs.', 'Mr.', 'Dr.']`). Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
12906
14879
  * @default []
@@ -12921,7 +14894,8 @@ declare namespace LocalJSX {
12921
14894
  | 'chip'
12922
14895
  | 'initials'
12923
14896
  | 'country'
12924
- | 'pin';
14897
+ | 'pin'
14898
+ | 'combobox';
12925
14899
  /**
12926
14900
  * Current value. Native `input`/`change` events don't cross the Shadow DOM boundary, so this component re-dispatches them as `bsInput`/`bsChange` custom events instead. Mutable so the `number` type's stepper buttons can update it directly.
12927
14901
  * @default ''
@@ -13085,6 +15059,60 @@ declare namespace LocalJSX {
13085
15059
  */
13086
15060
  "singleKeyLabel"?: string;
13087
15061
  }
15062
+ /**
15063
+ * A navigation link: either text (inline within a sentence, or standalone with a 44px target) or a
15064
+ * link styled as a primary button. Always renders a real `<a href>`.
15065
+ * Built from: hand-built `<a>` (leaf). `bs-button` renders a `<button>` and has no `href`; nesting a
15066
+ * button in an anchor is invalid HTML, so the `button` variant reuses the primary button's colour
15067
+ * tokens instead. Known gap: add `href` support to `bs-button` and compose it here.
15068
+ * ## When to use
15069
+ * - Navigating to another page or an external resource.
15070
+ * ## When not to use
15071
+ * - Triggering an action on the current page (use `bs-button`).
15072
+ */
15073
+ interface BsLink {
15074
+ /**
15075
+ * Accessible name override (needed on the host, as `aria-label` does not cross the shadow boundary).
15076
+ * @default null
15077
+ */
15078
+ "ariaLabel"?: string | null;
15079
+ /**
15080
+ * Marks the link as the current page (`aria-current="page"`).
15081
+ * @default false
15082
+ */
15083
+ "current"?: boolean;
15084
+ /**
15085
+ * Shows the external-link icon (always shown for `target="_blank"`).
15086
+ * @default false
15087
+ */
15088
+ "external"?: boolean;
15089
+ /**
15090
+ * Visually hidden suffix announced for links that open in a new tab.
15091
+ * @default '(opens in a new tab)'
15092
+ */
15093
+ "externalLabel"?: string;
15094
+ /**
15095
+ * Destination.
15096
+ */
15097
+ "href"?: string;
15098
+ /**
15099
+ * Fires on a plain primary click before the browser navigates. **Cancelable**: call `preventDefault()` to route it yourself (SPA router). Detail is `{ href }`. Ctrl/cmd/shift/alt and middle clicks are left to the browser. Bubbles and is composed.
15100
+ */
15101
+ "onBsNavigate"?: (event: BsLinkCustomEvent<{ href: string }>) => void;
15102
+ /**
15103
+ * Link relationship. Defaults to `noopener noreferrer` when `target="_blank"`.
15104
+ */
15105
+ "rel"?: string;
15106
+ /**
15107
+ * Browsing context (e.g. `_blank`). `_blank` implies the external icon.
15108
+ */
15109
+ "target"?: string;
15110
+ /**
15111
+ * `inline` sits in running text; `standalone` has a 44px minimum touch target; `button` is styled as a primary button (also 44px).
15112
+ * @default 'inline'
15113
+ */
15114
+ "variant"?: BsLinkVariant;
15115
+ }
13088
15116
  /**
13089
15117
  * A vertical list of `bs-list-item` rows, optionally single-select.
13090
15118
  * ## When to use
@@ -13094,6 +15122,9 @@ declare namespace LocalJSX {
13094
15122
  * - A popup list of actions -- use `bs-menu`.
13095
15123
  * - Navigation between app sections -- use `bs-navigation-drawer`.
13096
15124
  * - Multi-column, sortable or paged data -- use `bs-data-table`.
15125
+ * `variant` switches between a plain list, a bulleted list and a numbered list; `dividers` gives a divided
15126
+ * list. The list keeps real list semantics in every variant (`role="list"` with `listitem` rows); the bullet
15127
+ * or number is drawn by the row and hidden from assistive technology, which announces position itself.
13097
15128
  * Built from `bs-list-item` children (light DOM; the list never moves nodes).
13098
15129
  * @prop --bs-list-gap - Gap between rows. Defaults to `0`.
13099
15130
  * @prop --bs-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
@@ -13123,6 +15154,11 @@ declare namespace LocalJSX {
13123
15154
  * @default null
13124
15155
  */
13125
15156
  "value"?: string | null;
15157
+ /**
15158
+ * `plain` (default), `bulleted` (a bullet before each row) or `numbered` (1., 2., 3., ...). Ignored when `selectable`.
15159
+ * @default 'plain'
15160
+ */
15161
+ "variant"?: 'plain' | 'bulleted' | 'numbered';
13126
15162
  }
13127
15163
  /**
13128
15164
  * A single row of a list: optional leading media (avatar, icon, image), a label, a description and
@@ -13182,6 +15218,11 @@ declare namespace LocalJSX {
13182
15218
  * @default null
13183
15219
  */
13184
15220
  "label"?: string | null;
15221
+ /**
15222
+ * Set by the parent `bs-list` for `bulleted` / `numbered` variants: the visual marker. Hidden from assistive technology. Do not set by hand.
15223
+ * @default null
15224
+ */
15225
+ "marker"?: string | null;
13185
15226
  /**
13186
15227
  * Fires on click / Enter / Space when the row is interactive and not disabled. Payload is `value`.
13187
15228
  */
@@ -13668,13 +15709,17 @@ declare namespace LocalJSX {
13668
15709
  * @default false
13669
15710
  */
13670
15711
  "expanded"?: boolean;
15712
+ /**
15713
+ * Makes a leaf item a real link: renders an `<a part="item" href>` instead of the `<button>`, so open-in-new-tab, copy link address, middle-click and the status-bar URL work. Ignored when `expandable` (groups stay buttons). `bsSelect` still fires on a plain click and is **cancelable**: call `event.preventDefault()` to stop the navigation and route it yourself (an SPA router). Ctrl/cmd/shift/alt-clicks and middle-clicks are left to the browser and do not emit `bsSelect`.
15714
+ */
15715
+ "href"?: string;
13671
15716
  /**
13672
15717
  * Marks this as a child row nested under an `expandable` parent (via `slot="children"`) -- deepens the left indent and stops reserving `icon` slot space entirely (Figma's nested rows never have icons).
13673
15718
  * @default false
13674
15719
  */
13675
15720
  "nested"?: boolean;
13676
15721
  /**
13677
- * Fires on click, only when `expandable` is false. See the class doc above.
15722
+ * Fires on click, only when `expandable` is false. Cancelable when `href` is set (see `href`). See the class doc above.
13678
15723
  */
13679
15724
  "onBsSelect"?: (event: BsNavigationDrawerItemCustomEvent<void>) => void;
13680
15725
  /**
@@ -13686,6 +15731,10 @@ declare namespace LocalJSX {
13686
15731
  * @default false
13687
15732
  */
13688
15733
  "selected"?: boolean;
15734
+ /**
15735
+ * `target` of the link, when `href` is set.
15736
+ */
15737
+ "target"?: string;
13689
15738
  }
13690
15739
  /**
13691
15740
  * The top-level navigation bar for a page: the BrandSync logo plus two consumer-provided slots
@@ -14433,6 +16482,11 @@ declare namespace LocalJSX {
14433
16482
  * - An on/off setting that takes effect immediately (no explicit form submission) -- use `bs-switch`.
14434
16483
  */
14435
16484
  interface BsRadio {
16485
+ /**
16486
+ * Accessible name for the radio, set as `aria-label` on the native input. Use it when the radio has no slotted label text (an icon-only choice) or its visible label lives elsewhere. Same as `bs-checkbox` / `bs-switch`.
16487
+ * @default null
16488
+ */
16489
+ "ariaLabel"?: string | null;
14436
16490
  /**
14437
16491
  * Whether the radio is checked. Mutable so clicking the label/input sets it directly.
14438
16492
  * @default false
@@ -14460,6 +16514,61 @@ declare namespace LocalJSX {
14460
16514
  */
14461
16515
  "value"?: string;
14462
16516
  }
16517
+ /**
16518
+ * A labelled group of `bs-radio`s: a visible label, helper or error text, an accessible
16519
+ * `role="radiogroup"`, and a single `value` for the whole set.
16520
+ * The group gives its radios one shared `name` (its own `name`, or a generated one) so they behave
16521
+ * as one native-style group: arrow keys move the selection (wrapping), only the checked radio is in
16522
+ * the tab order, and checking one unchecks the others. It keeps at most one radio checked (the
16523
+ * first one wins if several start checked).
16524
+ * Composed from: `bs-radio` (slotted by you).
16525
+ * ## When to use
16526
+ * - A set of 2-5 mutually exclusive options that should all stay visible, with a shared label.
16527
+ * ## When not to use
16528
+ * - Independent yes/no choices: use `bs-checkbox-group`.
16529
+ * - Many options: use a select or `bs-menu`.
16530
+ */
16531
+ interface BsRadioGroup {
16532
+ /**
16533
+ * Helper text under the options. Replaced by `error` while that is set.
16534
+ */
16535
+ "description"?: string;
16536
+ /**
16537
+ * Error message. Sets `aria-invalid`, replaces the helper text and is announced with the group.
16538
+ */
16539
+ "error"?: string;
16540
+ /**
16541
+ * Visible group label, also the accessible name of the group.
16542
+ */
16543
+ "label"?: string;
16544
+ /**
16545
+ * `name` given to every radio in the group. Defaults to a generated, unique name.
16546
+ */
16547
+ "name"?: string;
16548
+ /**
16549
+ * Emitted with the new `value` when the user checks a radio. Replaces the radios' own `bsChange`, which does not reach listeners outside the group.
16550
+ */
16551
+ "onBsChange"?: (event: BsRadioGroupCustomEvent<string>) => void;
16552
+ /**
16553
+ * Layout of the radios.
16554
+ * @default 'vertical'
16555
+ */
16556
+ "orientation"?: BsRadioGroupOrientation;
16557
+ /**
16558
+ * Marks the group as required: sets `aria-required` and shows an asterisk after the label.
16559
+ * @default false
16560
+ */
16561
+ "required"?: boolean;
16562
+ /**
16563
+ * Check the first enabled radio when none is checked, so a choice is always made. Off by default so a form can start empty.
16564
+ * @default false
16565
+ */
16566
+ "selectFirst"?: boolean;
16567
+ /**
16568
+ * `value` of the checked radio. Setting it checks the matching radio (and unchecks the rest).
16569
+ */
16570
+ "value"?: string;
16571
+ }
14463
16572
  /**
14464
16573
  * A touch-ripple effect: on pointer press, a circle grows from the press point and fades out.
14465
16574
  * It is a building block for pressable components (`bs-button`, `bs-icon-button`, ...), not something
@@ -14549,6 +16658,82 @@ declare namespace LocalJSX {
14549
16658
  */
14550
16659
  "value"?: string;
14551
16660
  }
16661
+ /**
16662
+ * A single-choice select: a field-shaped combobox that opens a scrollable listbox of options. Same
16663
+ * label / helper text / error chrome as `bs-input`.
16664
+ * Follows the WAI-ARIA select-only combobox pattern: focus stays on the combobox and the
16665
+ * highlighted option is exposed through `aria-activedescendant`.
16666
+ * Built from: the field/label/description/error styling language of `bs-input` (same `--bs-input-*`
16667
+ * tokens). The listbox rows are hand-built leaf elements: `bs-menu-item` is a `role="menuitem"`
16668
+ * button and `bs-popover` moves focus into its popup, neither of which fits the combobox/listbox
16669
+ * pattern where focus must stay on the field.
16670
+ * ## When to use
16671
+ * - Choosing exactly one value from a known list of roughly 4-15 options.
16672
+ * ## When not to use
16673
+ * - 2-3 options that should all be visible (use radios or `bs-toggle-button-group`).
16674
+ * - Very long or searchable lists (use `bs-input type="dropdown"` or a search pattern).
16675
+ */
16676
+ interface BsSelect {
16677
+ /**
16678
+ * Accessible name when there is no visible `label`.
16679
+ * @default null
16680
+ */
16681
+ "ariaLabel"?: string | null;
16682
+ /**
16683
+ * Helper text below the field (replaced by `error` when set).
16684
+ */
16685
+ "description"?: string;
16686
+ /**
16687
+ * Disables the select.
16688
+ * @default false
16689
+ */
16690
+ "disabled"?: boolean;
16691
+ /**
16692
+ * Error message; puts the field in its error state.
16693
+ */
16694
+ "error"?: string;
16695
+ /**
16696
+ * The `id` of a `<form>` element to associate this element with.
16697
+ */
16698
+ "form"?: string;
16699
+ /**
16700
+ * Visible label.
16701
+ */
16702
+ "label"?: string;
16703
+ /**
16704
+ * Name the value is submitted under in a surrounding `<form>`.
16705
+ */
16706
+ "name"?: string;
16707
+ /**
16708
+ * Emitted when the user picks an option, with the new value.
16709
+ */
16710
+ "onBsChange"?: (event: BsSelectCustomEvent<string>) => void;
16711
+ /**
16712
+ * Whether the listbox is open.
16713
+ * @default false
16714
+ */
16715
+ "open"?: boolean;
16716
+ /**
16717
+ * The options. Must be set as a JS property, not an attribute.
16718
+ * @default []
16719
+ */
16720
+ "options"?: BsSelectOption[];
16721
+ /**
16722
+ * Text shown while no option is selected.
16723
+ * @default 'Select'
16724
+ */
16725
+ "placeholder"?: string;
16726
+ /**
16727
+ * Marks the field required (native form validation + asterisk).
16728
+ * @default false
16729
+ */
16730
+ "required"?: boolean;
16731
+ /**
16732
+ * The selected option's `value`.
16733
+ * @default ''
16734
+ */
16735
+ "value"?: string;
16736
+ }
14552
16737
  /**
14553
16738
  * The three moments around an expiring session, as one card. Matches the Figma "Session timeout"
14554
16739
  * component's three types:
@@ -14831,6 +17016,32 @@ declare namespace LocalJSX {
14831
17016
  */
14832
17017
  "width"?: string;
14833
17018
  }
17019
+ /**
17020
+ * A "skip to main content" link: invisible until it receives keyboard focus, then shown at the top
17021
+ * of the page. Activating it moves focus to the element its `href` points at, so keyboard and
17022
+ * screen-reader users can bypass repeated navigation (WCAG 2.4.1 Bypass Blocks).
17023
+ * Place it as the very first focusable element on the page. Renders a real `<a>`; the focus move is
17024
+ * done explicitly (the target gets a temporary `tabindex="-1"` when it is not natively focusable),
17025
+ * because a fragment navigation alone does not reliably move focus in every browser.
17026
+ * ## When to use
17027
+ * - Once per page, before the header/navigation, pointing at the `<main>` landmark.
17028
+ * - Additionally before large repeated blocks (e.g. a long sidebar) pointing past them.
17029
+ * ## When not to use
17030
+ * - As a general in-page link -- use a plain link or `bs-table-of-contents`.
17031
+ * - When the page has no repeated blocks before its main content.
17032
+ * Composition: a leaf element (a single anchor); no existing `bs-*` component renders a link.
17033
+ */
17034
+ interface BsSkipLink {
17035
+ /**
17036
+ * Target to skip to: a fragment (`#main-content`) naming an element id in the same document or shadow tree, or any URL (then the browser just navigates). Point it at an element that exists -- if the id is not found, activating the link does nothing beyond the native fragment jump.
17037
+ * @default '#main-content'
17038
+ */
17039
+ "href"?: string;
17040
+ /**
17041
+ * Fires when the link is activated, before focus moves. **Cancelable**: `preventDefault()` stops both the focus move and the native navigation so you can handle it yourself. Detail is `{ href, target }` (`target` is the resolved element or `null`). Bubbles and is composed.
17042
+ */
17043
+ "onBsSkip"?: (event: BsSkipLinkCustomEvent<{ href: string; target: HTMLElement | null }>) => void;
17044
+ }
14834
17045
  /**
14835
17046
  * A slider for picking a single numeric value (`type="default"`), a value snapped to evenly
14836
17047
  * spaced ticks (`type="segmented"`), or a min/max pair (`type="range"`) from within a bounded
@@ -15175,6 +17386,61 @@ declare namespace LocalJSX {
15175
17386
  */
15176
17387
  "wrap"?: boolean;
15177
17388
  }
17389
+ /**
17390
+ * A key figure: a label, a large value and an optional trend (up, down or flat) with a change figure.
17391
+ * ## When to use
17392
+ * - Dashboard KPIs and summary numbers ("Active users 1,284, up 12%").
17393
+ * ## When not to use
17394
+ * - A time series or comparison of many values -- use a chart.
17395
+ * - A progress toward a goal -- use `bs-progress` / `bs-progress-linear`.
17396
+ * - A count on another element -- use `bs-badge`.
17397
+ * **Built from:** `bs-card` (the surface).
17398
+ * The trend is never conveyed by colour or arrow alone: a visually hidden prefix ("Increase of") is
17399
+ * rendered before the change figure. Whether up is good depends on the metric, so the colour comes from
17400
+ * `trendIntent` (default: up is positive, down is negative; set `negative` for e.g. churn going up).
17401
+ */
17402
+ interface BsStat {
17403
+ /**
17404
+ * What the number measures.
17405
+ */
17406
+ "label": string;
17407
+ /**
17408
+ * Surface of the underlying `bs-card`.
17409
+ * @default 'raised'
17410
+ */
17411
+ "surface"?: BsCardSurface1;
17412
+ /**
17413
+ * Direction of change. Omit to hide the trend.
17414
+ */
17415
+ "trend"?: BsStatTrend;
17416
+ /**
17417
+ * Visually hidden prefix for `trend="down"`.
17418
+ * @default 'Decrease of'
17419
+ */
17420
+ "trendDownLabel"?: string;
17421
+ /**
17422
+ * Colour of the trend. Defaults from `trend`: up is positive, down is negative, neutral is neutral.
17423
+ */
17424
+ "trendIntent"?: BsStatTrendIntent;
17425
+ /**
17426
+ * Visually hidden text for `trend="neutral"`.
17427
+ * @default 'No change'
17428
+ */
17429
+ "trendNeutralLabel"?: string;
17430
+ /**
17431
+ * Visually hidden prefix for `trend="up"`.
17432
+ * @default 'Increase of'
17433
+ */
17434
+ "trendUpLabel"?: string;
17435
+ /**
17436
+ * The change figure shown next to the arrow (e.g. "12%").
17437
+ */
17438
+ "trendValue"?: string;
17439
+ /**
17440
+ * The figure itself, already formatted (e.g. "1,284" or "98.2%").
17441
+ */
17442
+ "value": string;
17443
+ }
15178
17444
  /**
15179
17445
  * A sequence of named steps showing overall progress through a multi-step flow (e.g. a checkout,
15180
17446
  * an onboarding wizard) -- each step reads as enabled (not yet reached), current, done, error, or
@@ -15364,46 +17630,187 @@ declare namespace LocalJSX {
15364
17630
  */
15365
17631
  "tabbable"?: boolean;
15366
17632
  /**
15367
- * Identifies this tab within a parent `bs-tabs`: the group's `value` is the selected tab's `value`, and `bsChange` reports it. Optional -- a tab without one is identified by its zero-based position in the group (`"0"`, `"1"`...).
17633
+ * Identifies this tab within a parent `bs-tabs`: the group's `value` is the selected tab's `value`, and `bsChange` reports it. Optional -- a tab without one is identified by its zero-based position in the group (`"0"`, `"1"`...).
17634
+ */
17635
+ "value"?: string;
17636
+ }
17637
+ /**
17638
+ * An "On this page" navigation: a nested list of in-page links with a scroll spy that marks the
17639
+ * section currently in view (`aria-current="location"`), optionally sticky beside long content.
17640
+ * Give it entries in either of two ways:
17641
+ * - **`items` property** (a JS array, `{ label, href, children? }`) -- the data-driven way.
17642
+ * - **Slotted anchors** -- `<a href="#intro">Intro</a>`, optionally inside nested `<ul>`/`<li>` or with
17643
+ * `data-level="2"` for sub-sections. The component reads them and renders its own styled links (the
17644
+ * slotted markup is not displayed; it is the no-JavaScript fallback). Used when `items` is empty.
17645
+ * The scroll spy uses an `IntersectionObserver` on the elements the links point at. The current section
17646
+ * is the first one (in link order) that intersects the top band of the viewport defined by `rootMargin`;
17647
+ * when none does (between two sections) the previous one stays current. Observers are disconnected when
17648
+ * the element is removed from the DOM and re-created when it is re-attached.
17649
+ * Link targets are looked up by id in the same document (or shadow tree) as the component. Links whose
17650
+ * target does not exist are still shown but never become current.
17651
+ * ## When to use
17652
+ * - Long single-page content (documentation, policies, settings pages) with several headed sections.
17653
+ * ## When not to use
17654
+ * - Navigating between pages -- use `bs-navigation-drawer` or `bs-breadcrumbs`.
17655
+ * - Switching between panels of content that are not all on the page -- use `bs-tabs`.
17656
+ * Composition: leaf element (a nav landmark with anchors); no existing `bs-*` component renders links.
17657
+ */
17658
+ interface BsTableOfContents {
17659
+ /**
17660
+ * The `href` (`#id`) of the current section. Reflected; follows the scroll spy and clicks, and can be set to force a section.
17661
+ */
17662
+ "current"?: string;
17663
+ /**
17664
+ * Hides the visible title; the landmark keeps its accessible name.
17665
+ * @default false
17666
+ */
17667
+ "hideTitle"?: boolean;
17668
+ /**
17669
+ * Entries as a JS array (set as a property, not an attribute). Takes precedence over slotted anchors.
17670
+ * @default []
17671
+ */
17672
+ "items"?: BsTocItem[];
17673
+ /**
17674
+ * Accessible name of the `nav` landmark, and the visible title text.
17675
+ * @default 'On this page'
17676
+ */
17677
+ "label"?: string;
17678
+ /**
17679
+ * Fires when the current section changes (scroll spy or click), with its `href`.
17680
+ */
17681
+ "onBsChange"?: (event: BsTableOfContentsCustomEvent<string>) => void;
17682
+ /**
17683
+ * Fires when a link is clicked, before navigation. **Cancelable**: `preventDefault()` stops the browser jump so you can scroll/route yourself. Detail is `{ href }`. Modified clicks are ignored.
17684
+ */
17685
+ "onBsNavigate"?: (event: BsTableOfContentsCustomEvent<{ href: string }>) => void;
17686
+ /**
17687
+ * `rootMargin` of the spy's `IntersectionObserver`: shrinks the viewport to the band in which a section counts as "current". The default is the top 40% of the viewport. Raise the top value (e.g. `-64px 0px -60% 0px`) when a fixed header covers the top of the page.
17688
+ * @default '0px 0px -60% 0px'
17689
+ */
17690
+ "rootMargin"?: string;
17691
+ /**
17692
+ * Turns the scroll spy on or off. Off: `current` only changes when a link is clicked or it is set.
17693
+ * @default true
17694
+ */
17695
+ "scrollSpy"?: boolean;
17696
+ /**
17697
+ * Sticks the table of contents to the top of its scroll container (`position: sticky`) so it stays in view beside long content. Offset with `--bs-toc-sticky-top`.
17698
+ * @default false
17699
+ */
17700
+ "sticky"?: boolean;
17701
+ }
17702
+ /**
17703
+ * A tab-group wrapper: owns `role="tablist"` and coordinates selection across its slotted
17704
+ * `<bs-tab>` or `<bs-inline-tab>` children, so consumers no longer have to hand-roll this.
17705
+ * `bs-tab.mdx`/`bs-inline-tab.mdx` previously documented this coordination -- listening for
17706
+ * `bsSelect` and setting `selected`/`false` on siblings, plus supplying `role="tablist"` on
17707
+ * whatever element groups the tabs -- as a "Known gap"/manual consumer responsibility. This
17708
+ * component is that wrapper: it renders the `role="tablist"` element and listens for `bsSelect`
17709
+ * itself. Using `<bs-tab>`/`<bs-inline-tab>` standalone, outside a `<bs-tabs>` wrapper, still means
17710
+ * `selected` doesn't self-toggle -- a consumer doing that would still need to coordinate `selected`
17711
+ * manually -- but that's no longer the first recommended path.
17712
+ * ## When to use
17713
+ * - Wrapping a set of `<bs-tab>` (underline style) or `<bs-inline-tab>` (pill style) elements that
17714
+ * should behave as a single-selection tab bar.
17715
+ * ## When not to use
17716
+ * - For a single, standalone tab button not participating in a group -- use `bs-tab`/`bs-inline-tab`
17717
+ * directly.
17718
+ */
17719
+ interface BsTabs {
17720
+ /**
17721
+ * Fires when the **selection changes** (click, or arrow/Home/End), with the new `value`. It does not fire when the already-selected tab is clicked again, nor when `value` is set programmatically. To react to every activation, including a click on the already-selected tab (e.g. to sync a URL), listen for `bsSelect` on the tab itself (it bubbles, so one listener on `<bs-tabs>` covers all tabs); it fires on every click.
17722
+ */
17723
+ "onBsChange"?: (event: BsTabsCustomEvent<{ value: string }>) => void;
17724
+ /**
17725
+ * Layout direction of the tab bar itself. Sets `aria-orientation` on the internal wrapper and switches `flex-direction`.
17726
+ * @default 'horizontal'
17727
+ */
17728
+ "orientation"?: BsTabsOrientation;
17729
+ /**
17730
+ * Which tab-button family this group wraps. Governs the wrapper's own visual treatment (gap-only for `bs-tab`, a filled pill bar for `bs-inline-tab`). Not reflected as an attribute -- nothing external needs to target it via CSS attribute selector, it only drives internal class names.
17731
+ * @default 'bs-tab'
17732
+ */
17733
+ "type"?: BsTabsType;
17734
+ /**
17735
+ * The selected tab's `value`. Mutable and reflected: it follows the user's selection, and setting it from outside (attribute or property) selects the matching tab -- without emitting `bsChange`, which only fires for user-driven changes. A tab's value is its own `value` prop, or, for a tab without one, its zero-based position in the group as a string (`"0"`, `"1"`...). If unset, it is read from whichever tab is already `selected` once the group loads.
17736
+ */
17737
+ "value"?: string;
17738
+ }
17739
+ /**
17740
+ * A small label that categorises or annotates an item (a topic, a keyword, a status of a record). It can be
17741
+ * neutral or coloured, optionally removable, and optionally a link.
17742
+ * ## When to use
17743
+ * - Metadata on a record: topics, categories, keywords, owners.
17744
+ * - A removable tag in a list of applied values you edit one by one (`removable`).
17745
+ * - A tag that leads to a filtered view or detail page (`href`).
17746
+ * ## When not to use
17747
+ * - A pure count or notification marker -- use `bs-badge`.
17748
+ * - A read-only status pill with a leading icon -- use `bs-chip-informative`.
17749
+ * - Toggling a filter on and off -- use `bs-chip-filter`; entering free text values -- use `bs-chip-input`.
17750
+ * **Built from:** `bs-icon-button` (the remove control, `size="xs"`).
17751
+ */
17752
+ interface BsTag {
17753
+ /**
17754
+ * Semantic colour. `neutral` is the default.
17755
+ * @default 'neutral'
17756
+ */
17757
+ "color"?: BsTagColor;
17758
+ /**
17759
+ * Turns the label into a link to this URL.
17760
+ */
17761
+ "href"?: string;
17762
+ /**
17763
+ * Fires when the remove button is activated. No payload; the consumer removes the element.
17764
+ */
17765
+ "onBsRemove"?: (event: BsTagCustomEvent<void>) => void;
17766
+ /**
17767
+ * Shows a remove button that emits `bsRemove`. The consumer removes the tag.
17768
+ * @default false
17769
+ */
17770
+ "removable"?: boolean;
17771
+ /**
17772
+ * Prefix of the remove button's accessible name ("Remove {label}").
17773
+ * @default 'Remove'
17774
+ */
17775
+ "removeLabel"?: string;
17776
+ /**
17777
+ * Sizing scale.
17778
+ * @default 'md'
17779
+ */
17780
+ "size"?: BsTagSize;
17781
+ /**
17782
+ * Link target, only used with `href`.
15368
17783
  */
15369
- "value"?: string;
17784
+ "target"?: string;
15370
17785
  }
15371
17786
  /**
15372
- * A tab-group wrapper: owns `role="tablist"` and coordinates selection across its slotted
15373
- * `<bs-tab>` or `<bs-inline-tab>` children, so consumers no longer have to hand-roll this.
15374
- * `bs-tab.mdx`/`bs-inline-tab.mdx` previously documented this coordination -- listening for
15375
- * `bsSelect` and setting `selected`/`false` on siblings, plus supplying `role="tablist"` on
15376
- * whatever element groups the tabs -- as a "Known gap"/manual consumer responsibility. This
15377
- * component is that wrapper: it renders the `role="tablist"` element and listens for `bsSelect`
15378
- * itself. Using `<bs-tab>`/`<bs-inline-tab>` standalone, outside a `<bs-tabs>` wrapper, still means
15379
- * `selected` doesn't self-toggle -- a consumer doing that would still need to coordinate `selected`
15380
- * manually -- but that's no longer the first recommended path.
17787
+ * Body and caption text mapped to the typography tokens, with the element (`as`) chosen separately
17788
+ * from the look (`variant`) and the colour (`tone`).
17789
+ * Variants: `lead` 18px, `body` 16px, `small` 14px, `caption` 12px (`--bs-font-size-*`,
17790
+ * `--bs-typography-font-family-body`).
17791
+ * Composed from: nothing (leaf).
15381
17792
  * ## When to use
15382
- * - Wrapping a set of `<bs-tab>` (underline style) or `<bs-inline-tab>` (pill style) elements that
15383
- * should behave as a single-selection tab bar.
17793
+ * - Paragraphs, helper copy, captions and inline spans that should follow the type scale and theme.
15384
17794
  * ## When not to use
15385
- * - For a single, standalone tab button not participating in a group -- use `bs-tab`/`bs-inline-tab`
15386
- * directly.
17795
+ * - Headings: use `bs-heading` so the document outline is right.
17796
+ * - Code: use `bs-code-block`.
15387
17797
  */
15388
- interface BsTabs {
15389
- /**
15390
- * Fires when the user selects a different tab (click, or arrow/Home/End), with the new `value`. Does not fire when `value` is set programmatically. `bsSelect` on the individual tab still fires as before.
15391
- */
15392
- "onBsChange"?: (event: BsTabsCustomEvent<{ value: string }>) => void;
17798
+ interface BsText {
15393
17799
  /**
15394
- * Layout direction of the tab bar itself. Sets `aria-orientation` on the internal wrapper and switches `flex-direction`.
15395
- * @default 'horizontal'
17800
+ * The rendered element. `span` (and `small`, `strong`, `em`, `label`) make the host inline.
17801
+ * @default 'p'
15396
17802
  */
15397
- "orientation"?: BsTabsOrientation;
17803
+ "as"?: BsTextAs;
15398
17804
  /**
15399
- * Which tab-button family this group wraps. Governs the wrapper's own visual treatment (gap-only for `bs-tab`, a filled pill bar for `bs-inline-tab`). Not reflected as an attribute -- nothing external needs to target it via CSS attribute selector, it only drives internal class names.
15400
- * @default 'bs-tab'
17805
+ * Text colour from the text tokens. `inherit` uses the surrounding colour.
17806
+ * @default 'default'
15401
17807
  */
15402
- "type"?: BsTabsType;
17808
+ "tone"?: BsTextTone;
15403
17809
  /**
15404
- * The selected tab's `value`. Mutable and reflected: it follows the user's selection, and setting it from outside (attribute or property) selects the matching tab -- without emitting `bsChange`, which only fires for user-driven changes. A tab's value is its own `value` prop, or, for a tab without one, its zero-based position in the group as a string (`"0"`, `"1"`...). If unset, it is read from whichever tab is already `selected` once the group loads.
17810
+ * Visual style.
17811
+ * @default 'body'
15405
17812
  */
15406
- "value"?: string;
17813
+ "variant"?: BsTextVariant;
15407
17814
  }
15408
17815
  /**
15409
17816
  * An inline time picker: hour and minute spinners (up/down carets, or the arrow keys on the value),
@@ -15528,6 +17935,139 @@ declare namespace LocalJSX {
15528
17935
  */
15529
17936
  "state"?: BsToastState;
15530
17937
  }
17938
+ /**
17939
+ * A button that is either pressed or not. Standalone it is a toggle (`aria-pressed`); inside a
17940
+ * `bs-toggle-button-group` the group sets its `mode` (`toggle` for multiple choice, `radio` for
17941
+ * single choice, which switches the semantics to `role="radio"` + `aria-checked`).
17942
+ * Built from: hand-built `<button>` (the segment shape and pressed state differ from `bs-button`) plus
17943
+ * `bs-ripple`.
17944
+ * ## When to use
17945
+ * - A two-state option such as "Bold", or a segment of a `bs-toggle-button-group`.
17946
+ * ## When not to use
17947
+ * - Triggering an action (use `bs-button`) or an on/off setting that applies immediately (use `bs-switch`).
17948
+ */
17949
+ interface BsToggleButton {
17950
+ /**
17951
+ * Accessible name; required for an icon-only button.
17952
+ * @default null
17953
+ */
17954
+ "ariaLabel"?: string | null;
17955
+ /**
17956
+ * Disables the button.
17957
+ * @default false
17958
+ */
17959
+ "disabled"?: boolean;
17960
+ /**
17961
+ * Semantics. Normally set by the parent group.
17962
+ * @default 'toggle'
17963
+ */
17964
+ "mode"?: BsToggleButtonMode;
17965
+ /**
17966
+ * Emitted on user interaction with the new `pressed` value. A radio-mode button that is already pressed does not emit. Bubbles, so a group can coordinate its segments.
17967
+ */
17968
+ "onBsChange"?: (event: BsToggleButtonCustomEvent<boolean>) => void;
17969
+ /**
17970
+ * Whether the button is pressed/selected.
17971
+ * @default false
17972
+ */
17973
+ "pressed"?: boolean;
17974
+ /**
17975
+ * Roving tabindex, set by the parent group (`false` = `tabindex="-1"`). Standalone: always tabbable.
17976
+ * @default true
17977
+ */
17978
+ "tabbable"?: boolean;
17979
+ /**
17980
+ * Identifies the segment inside a group's `value`/`values`.
17981
+ */
17982
+ "value"?: string;
17983
+ }
17984
+ /**
17985
+ * A segmented control: a row of `bs-toggle-button` segments with single or multiple choice.
17986
+ * Single choice (default) uses radio semantics (`role="radiogroup"` / `role="radio"`) and arrow keys
17987
+ * move focus AND selection. Multiple choice (`multiple`) uses `role="group"` with `aria-pressed`
17988
+ * toggle buttons; arrow keys move focus only, Space/Enter toggles. Focus is roving in both modes
17989
+ * (one tab stop).
17990
+ * Built from: `bs-toggle-button`.
17991
+ * ## When to use
17992
+ * - 2-5 short, related options that should all stay visible (view mode, alignment, filters).
17993
+ * ## When not to use
17994
+ * - Long lists (use `bs-select`) or page-level navigation (use `bs-tabs`).
17995
+ */
17996
+ interface BsToggleButtonGroup {
17997
+ /**
17998
+ * Accessible name of the group. Required.
17999
+ * @default null
18000
+ */
18001
+ "ariaLabel"?: string | null;
18002
+ /**
18003
+ * Disables every segment.
18004
+ * @default false
18005
+ */
18006
+ "disabled"?: boolean;
18007
+ /**
18008
+ * Allow several pressed segments.
18009
+ * @default false
18010
+ */
18011
+ "multiple"?: boolean;
18012
+ /**
18013
+ * Emitted when the user changes the selection: the new `value` (single) or `values` (multiple).
18014
+ */
18015
+ "onBsChange"?: (event: BsToggleButtonGroupCustomEvent<string | string[]>) => void;
18016
+ /**
18017
+ * Selected segment `value` (single choice).
18018
+ */
18019
+ "value"?: string;
18020
+ /**
18021
+ * Selected segment values (multiple choice). Set as a JS property.
18022
+ * @default []
18023
+ */
18024
+ "values"?: string[];
18025
+ }
18026
+ /**
18027
+ * A bar of related controls (buttons, toggles, selects) with a left and a right group, grouped
18028
+ * separators, a single tab stop and arrow-key navigation between the controls (WAI-ARIA toolbar
18029
+ * pattern). Optionally, controls that do not fit collapse into a "more" menu.
18030
+ * Keyboard: the toolbar is ONE tab stop. Left/Right arrows (Up/Down when `orientation="vertical"`,
18031
+ * mirrored in RTL) move focus between the controls and wrap; Home/End jump to the first/last. The
18032
+ * control last focused is the one Tab returns to. Disabled controls are skipped.
18033
+ * Direct children of the `left`/`right` slots are the toolbar's controls. A slotted `bs-divider` is a
18034
+ * separator: the toolbar sets its `orientation` perpendicular to its own and skips it when navigating.
18035
+ * ## When to use
18036
+ * - Several related actions that act on the same content (a text editor's formatting row, a table's
18037
+ * bulk actions, a viewer's zoom controls).
18038
+ * ## When not to use
18039
+ * - Navigating between pages or sections -- use `bs-tabs`, `bs-navigation-header` or a nav.
18040
+ * - A single action or a form's submit row -- place the `bs-button`s directly.
18041
+ * - A menu of actions that opens on demand -- use `bs-popover` with `bs-menu`.
18042
+ * ## Overflow
18043
+ * With `overflow` set (horizontal only), controls from the end of the bar that do not fit are hidden and
18044
+ * listed in a `bs-menu` behind a "more" button; choosing an entry activates the original control. An
18045
+ * entry's text is the control's `data-label`, else its `aria-label`, else its text content, else `title`:
18046
+ * give icon-only controls one of these.
18047
+ * Composition: built from `bs-icon-button`, `bs-popover`, `bs-menu` and `bs-menu-item` (overflow) and
18048
+ * expects `bs-button`, `bs-icon-button`, `bs-divider` etc. as slotted content.
18049
+ */
18050
+ interface BsToolbar {
18051
+ /**
18052
+ * Accessible name of the toolbar (`aria-label`). Required for a good experience, and essential when a page has more than one toolbar -- say what it controls ("Text formatting").
18053
+ */
18054
+ "label"?: string;
18055
+ /**
18056
+ * Direction of the bar. Sets `aria-orientation`, switches which arrow keys navigate, and sets the orientation of slotted `bs-divider`s to the perpendicular one.
18057
+ * @default 'horizontal'
18058
+ */
18059
+ "orientation"?: BsToolbarOrientation;
18060
+ /**
18061
+ * Collapse controls that do not fit into a "more" menu (see Overflow in the description). Horizontal toolbars only; ignored when `orientation="vertical"`.
18062
+ * @default false
18063
+ */
18064
+ "overflow"?: boolean;
18065
+ /**
18066
+ * Accessible name and tooltip of the overflow button.
18067
+ * @default 'More actions'
18068
+ */
18069
+ "overflowLabel"?: string;
18070
+ }
15531
18071
  /**
15532
18072
  * A dark tooltip bubble with a pointer arrow, used to surface a short hint of extra information
15533
18073
  * next to a trigger element.
@@ -16005,6 +18545,10 @@ declare namespace LocalJSX {
16005
18545
  "disabled": boolean;
16006
18546
  "type": 'button' | 'submit' | 'reset';
16007
18547
  "ariaLabel": string | null;
18548
+ "pressed": boolean;
18549
+ "ariaExpanded": 'true' | 'false' | null;
18550
+ "ariaControls": string | null;
18551
+ "ariaHasPopup": 'true' | 'false' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | null;
16008
18552
  }
16009
18553
  interface BsButtonSkeletonAttributes {
16010
18554
  "size": BsButtonSize;
@@ -16012,6 +18556,12 @@ declare namespace LocalJSX {
16012
18556
  }
16013
18557
  interface BsCardAttributes {
16014
18558
  "surface": BsCardSurface;
18559
+ "href": string;
18560
+ "target": string;
18561
+ "rel": string;
18562
+ "selectable": boolean;
18563
+ "selected": boolean;
18564
+ "label": string;
16015
18565
  }
16016
18566
  interface BsCarouselAttributes {
16017
18567
  "tracker": BsCarouselTracker;
@@ -16087,6 +18637,13 @@ declare namespace LocalJSX {
16087
18637
  "error": boolean;
16088
18638
  "ariaLabel": string | null;
16089
18639
  }
18640
+ interface BsCheckboxGroupAttributes {
18641
+ "label": string;
18642
+ "description": string;
18643
+ "error": string;
18644
+ "orientation": BsCheckboxGroupOrientation;
18645
+ "required": boolean;
18646
+ }
16090
18647
  interface BsCheckboxSkeletonAttributes {
16091
18648
  "size": BsCheckboxSize;
16092
18649
  "loadingLabel": string;
@@ -16115,6 +18672,17 @@ declare namespace LocalJSX {
16115
18672
  "page": string;
16116
18673
  "href": string;
16117
18674
  }
18675
+ interface BsCodeBlockAttributes {
18676
+ "code": string;
18677
+ "filename": string;
18678
+ "lineNumbers": boolean;
18679
+ "wrap": boolean;
18680
+ "inline": boolean;
18681
+ "hideCopy": boolean;
18682
+ "copyLabel": string;
18683
+ "copiedLabel": string;
18684
+ "regionLabel": string;
18685
+ }
16118
18686
  interface BsCommandPaletteAttributes {
16119
18687
  "value": string;
16120
18688
  "open": boolean;
@@ -16218,6 +18786,7 @@ declare namespace LocalJSX {
16218
18786
  "sortDirection": 'asc' | 'desc';
16219
18787
  "selectAllLabel": string;
16220
18788
  "selectable": boolean;
18789
+ "striped": boolean;
16221
18790
  }
16222
18791
  interface BsDatepickerAttributes {
16223
18792
  "name": string;
@@ -16236,6 +18805,16 @@ declare namespace LocalJSX {
16236
18805
  "previousLabel": string;
16237
18806
  "nextLabel": string;
16238
18807
  }
18808
+ interface BsDescriptionItemAttributes {
18809
+ "term": string;
18810
+ "description": string;
18811
+ "layout": 'stacked' | 'horizontal';
18812
+ }
18813
+ interface BsDescriptionListAttributes {
18814
+ "layout": 'stacked' | 'horizontal';
18815
+ "dividers": boolean;
18816
+ "ariaLabel": string | null;
18817
+ }
16239
18818
  interface BsDialogAttributes {
16240
18819
  "open": boolean;
16241
18820
  "heading": string;
@@ -16249,11 +18828,16 @@ declare namespace LocalJSX {
16249
18828
  "inset": BsDividerInset;
16250
18829
  "decorative": boolean;
16251
18830
  }
18831
+ interface BsDropdownAttributes {
18832
+ "open": boolean;
18833
+ "placement": BsDropdownPlacement;
18834
+ }
16252
18835
  interface BsEmptyStateAttributes {
16253
18836
  "heading": string;
16254
18837
  "description": string;
16255
18838
  "intent": BsIconTileIntent;
16256
18839
  "headingLevel": 2 | 3 | 4 | 5 | 6;
18840
+ "size": 'panel' | 'page';
16257
18841
  }
16258
18842
  interface BsErrorPageAttributes {
16259
18843
  "type": BsErrorPageType;
@@ -16321,12 +18905,27 @@ declare namespace LocalJSX {
16321
18905
  "minColumnWidth": string;
16322
18906
  "align": BsGridAlign;
16323
18907
  }
18908
+ interface BsHeadingAttributes {
18909
+ "level": BsHeadingLevel;
18910
+ "as": BsHeadingAs;
18911
+ "size": BsHeadingSize;
18912
+ "tone": BsHeadingTone;
18913
+ }
18914
+ interface BsIconAttributes {
18915
+ "name": string;
18916
+ "size": BsIconSize;
18917
+ "tone": BsIconTone;
18918
+ "label": string;
18919
+ }
16324
18920
  interface BsIconButtonAttributes {
16325
18921
  "variant": BsIconButtonVariant;
16326
18922
  "size": BsIconButtonSize;
16327
18923
  "disabled": boolean;
16328
18924
  "type": 'button' | 'submit' | 'reset';
16329
18925
  "ariaLabel": string | null;
18926
+ "ariaExpanded": 'true' | 'false' | null;
18927
+ "ariaControls": string | null;
18928
+ "ariaHasPopup": 'true' | 'false' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | null;
16330
18929
  "pressed": boolean;
16331
18930
  }
16332
18931
  interface BsIconTileAttributes {
@@ -16360,8 +18959,10 @@ declare namespace LocalJSX {
16360
18959
  | 'chip'
16361
18960
  | 'initials'
16362
18961
  | 'country'
16363
- | 'pin';
18962
+ | 'pin'
18963
+ | 'combobox';
16364
18964
  "label": string;
18965
+ "ariaLabel": string | null;
16365
18966
  "placeholder": string;
16366
18967
  "description": string;
16367
18968
  "error": string;
@@ -16372,8 +18973,16 @@ declare namespace LocalJSX {
16372
18973
  "max": number;
16373
18974
  "rows": number;
16374
18975
  "initialsTitle": string;
18976
+ "titleLabel": string;
16375
18977
  "country": string;
18978
+ "countryLabel": string;
16376
18979
  "length": number;
18980
+ "loading": boolean;
18981
+ "filterOptions": boolean;
18982
+ "noResultsLabel": string;
18983
+ "loadingLabel": string;
18984
+ "clearLabel": string;
18985
+ "openPickerLabel": string;
16377
18986
  "open": boolean;
16378
18987
  }
16379
18988
  interface BsKeyAttributes {
@@ -16399,9 +19008,20 @@ declare namespace LocalJSX {
16399
19008
  "footerPrefix": string;
16400
19009
  "noResultsText": string;
16401
19010
  }
19011
+ interface BsLinkAttributes {
19012
+ "href": string;
19013
+ "target": string;
19014
+ "rel": string;
19015
+ "variant": BsLinkVariant;
19016
+ "external": boolean;
19017
+ "externalLabel": string;
19018
+ "current": boolean;
19019
+ "ariaLabel": string | null;
19020
+ }
16402
19021
  interface BsListAttributes {
16403
19022
  "selectable": boolean;
16404
19023
  "value": string | null;
19024
+ "variant": 'plain' | 'bulleted' | 'numbered';
16405
19025
  "dividers": boolean;
16406
19026
  "ariaLabel": string | null;
16407
19027
  }
@@ -16415,6 +19035,7 @@ declare namespace LocalJSX {
16415
19035
  "value": string | null;
16416
19036
  "interactive": boolean;
16417
19037
  "selectionRole": 'listitem' | 'option' | null;
19038
+ "marker": string | null;
16418
19039
  }
16419
19040
  interface BsLogoAttributes {
16420
19041
  "variant": BsLogoVariant;
@@ -16467,6 +19088,8 @@ declare namespace LocalJSX {
16467
19088
  "nested": boolean;
16468
19089
  "ariaLabel": string | null;
16469
19090
  "collapsed": boolean;
19091
+ "href": string;
19092
+ "target": string;
16470
19093
  }
16471
19094
  interface BsNavigationHeaderAttributes {
16472
19095
  "alignment": BsNavigationHeaderAlignment;
@@ -16580,9 +19203,20 @@ declare namespace LocalJSX {
16580
19203
  interface BsRadioAttributes {
16581
19204
  "name": string;
16582
19205
  "value": string;
19206
+ "ariaLabel": string | null;
16583
19207
  "checked": boolean;
16584
19208
  "disabled": boolean;
16585
19209
  }
19210
+ interface BsRadioGroupAttributes {
19211
+ "label": string;
19212
+ "description": string;
19213
+ "error": string;
19214
+ "orientation": BsRadioGroupOrientation;
19215
+ "name": string;
19216
+ "value": string;
19217
+ "required": boolean;
19218
+ "selectFirst": boolean;
19219
+ }
16586
19220
  interface BsRippleAttributes {
16587
19221
  "centered": boolean;
16588
19222
  "disabled": boolean;
@@ -16595,6 +19229,18 @@ declare namespace LocalJSX {
16595
19229
  "trailing": string;
16596
19230
  "selectionRole": 'option' | null;
16597
19231
  }
19232
+ interface BsSelectAttributes {
19233
+ "name": string;
19234
+ "value": string;
19235
+ "label": string;
19236
+ "ariaLabel": string | null;
19237
+ "placeholder": string;
19238
+ "description": string;
19239
+ "error": string;
19240
+ "disabled": boolean;
19241
+ "required": boolean;
19242
+ "open": boolean;
19243
+ }
16598
19244
  interface BsSessionTimeoutAttributes {
16599
19245
  "type": BsSessionTimeoutType;
16600
19246
  "heading": string;
@@ -16639,6 +19285,9 @@ declare namespace LocalJSX {
16639
19285
  "animated": boolean;
16640
19286
  "label": string;
16641
19287
  }
19288
+ interface BsSkipLinkAttributes {
19289
+ "href": string;
19290
+ }
16642
19291
  interface BsSliderAttributes {
16643
19292
  "type": BsSliderType;
16644
19293
  "name": string;
@@ -16689,6 +19338,17 @@ declare namespace LocalJSX {
16689
19338
  "wrap": boolean;
16690
19339
  "divider": boolean;
16691
19340
  }
19341
+ interface BsStatAttributes {
19342
+ "label": string;
19343
+ "value": string;
19344
+ "trend": BsStatTrend;
19345
+ "trendValue": string;
19346
+ "trendIntent": BsStatTrendIntent;
19347
+ "trendUpLabel": string;
19348
+ "trendDownLabel": string;
19349
+ "trendNeutralLabel": string;
19350
+ "surface": BsCardSurface;
19351
+ }
16692
19352
  interface BsStepperAttributes {
16693
19353
  "currentStep": number;
16694
19354
  "direction": BsStepperDirection;
@@ -16719,11 +19379,32 @@ declare namespace LocalJSX {
16719
19379
  "value": string;
16720
19380
  "tabbable": boolean;
16721
19381
  }
19382
+ interface BsTableOfContentsAttributes {
19383
+ "label": string;
19384
+ "hideTitle": boolean;
19385
+ "current": string;
19386
+ "scrollSpy": boolean;
19387
+ "rootMargin": string;
19388
+ "sticky": boolean;
19389
+ }
16722
19390
  interface BsTabsAttributes {
16723
19391
  "type": BsTabsType;
16724
19392
  "orientation": BsTabsOrientation;
16725
19393
  "value": string;
16726
19394
  }
19395
+ interface BsTagAttributes {
19396
+ "color": BsTagColor;
19397
+ "size": BsTagSize;
19398
+ "removable": boolean;
19399
+ "href": string;
19400
+ "target": string;
19401
+ "removeLabel": string;
19402
+ }
19403
+ interface BsTextAttributes {
19404
+ "as": BsTextAs;
19405
+ "variant": BsTextVariant;
19406
+ "tone": BsTextTone;
19407
+ }
16727
19408
  interface BsTimepickerAttributes {
16728
19409
  "name": string;
16729
19410
  "value": string;
@@ -16743,6 +19424,26 @@ declare namespace LocalJSX {
16743
19424
  "state": BsToastState;
16744
19425
  "dismissLabel": string;
16745
19426
  }
19427
+ interface BsToggleButtonAttributes {
19428
+ "value": string;
19429
+ "pressed": boolean;
19430
+ "disabled": boolean;
19431
+ "mode": BsToggleButtonMode;
19432
+ "tabbable": boolean;
19433
+ "ariaLabel": string | null;
19434
+ }
19435
+ interface BsToggleButtonGroupAttributes {
19436
+ "value": string;
19437
+ "multiple": boolean;
19438
+ "disabled": boolean;
19439
+ "ariaLabel": string | null;
19440
+ }
19441
+ interface BsToolbarAttributes {
19442
+ "label": string;
19443
+ "orientation": BsToolbarOrientation;
19444
+ "overflow": boolean;
19445
+ "overflowLabel": string;
19446
+ }
16746
19447
  interface BsTooltipAttributes {
16747
19448
  "placement": 'top';
16748
19449
  }
@@ -16827,11 +19528,13 @@ declare namespace LocalJSX {
16827
19528
  "bs-chatbot-sources-drawer": Omit<BsChatbotSourcesDrawer, keyof BsChatbotSourcesDrawerAttributes> & { [K in keyof BsChatbotSourcesDrawer & keyof BsChatbotSourcesDrawerAttributes]?: BsChatbotSourcesDrawer[K] } & { [K in keyof BsChatbotSourcesDrawer & keyof BsChatbotSourcesDrawerAttributes as `attr:${K}`]?: BsChatbotSourcesDrawerAttributes[K] } & { [K in keyof BsChatbotSourcesDrawer & keyof BsChatbotSourcesDrawerAttributes as `prop:${K}`]?: BsChatbotSourcesDrawer[K] };
16828
19529
  "bs-chatbot-suggestion-button": Omit<BsChatbotSuggestionButton, keyof BsChatbotSuggestionButtonAttributes> & { [K in keyof BsChatbotSuggestionButton & keyof BsChatbotSuggestionButtonAttributes]?: BsChatbotSuggestionButton[K] } & { [K in keyof BsChatbotSuggestionButton & keyof BsChatbotSuggestionButtonAttributes as `attr:${K}`]?: BsChatbotSuggestionButtonAttributes[K] } & { [K in keyof BsChatbotSuggestionButton & keyof BsChatbotSuggestionButtonAttributes as `prop:${K}`]?: BsChatbotSuggestionButton[K] };
16829
19530
  "bs-checkbox": Omit<BsCheckbox, keyof BsCheckboxAttributes> & { [K in keyof BsCheckbox & keyof BsCheckboxAttributes]?: BsCheckbox[K] } & { [K in keyof BsCheckbox & keyof BsCheckboxAttributes as `attr:${K}`]?: BsCheckboxAttributes[K] } & { [K in keyof BsCheckbox & keyof BsCheckboxAttributes as `prop:${K}`]?: BsCheckbox[K] };
19531
+ "bs-checkbox-group": Omit<BsCheckboxGroup, keyof BsCheckboxGroupAttributes> & { [K in keyof BsCheckboxGroup & keyof BsCheckboxGroupAttributes]?: BsCheckboxGroup[K] } & { [K in keyof BsCheckboxGroup & keyof BsCheckboxGroupAttributes as `attr:${K}`]?: BsCheckboxGroupAttributes[K] } & { [K in keyof BsCheckboxGroup & keyof BsCheckboxGroupAttributes as `prop:${K}`]?: BsCheckboxGroup[K] };
16830
19532
  "bs-checkbox-skeleton": Omit<BsCheckboxSkeleton, keyof BsCheckboxSkeletonAttributes> & { [K in keyof BsCheckboxSkeleton & keyof BsCheckboxSkeletonAttributes]?: BsCheckboxSkeleton[K] } & { [K in keyof BsCheckboxSkeleton & keyof BsCheckboxSkeletonAttributes as `attr:${K}`]?: BsCheckboxSkeletonAttributes[K] } & { [K in keyof BsCheckboxSkeleton & keyof BsCheckboxSkeletonAttributes as `prop:${K}`]?: BsCheckboxSkeleton[K] };
16831
19533
  "bs-chip-filter": Omit<BsChipFilter, keyof BsChipFilterAttributes> & { [K in keyof BsChipFilter & keyof BsChipFilterAttributes]?: BsChipFilter[K] } & { [K in keyof BsChipFilter & keyof BsChipFilterAttributes as `attr:${K}`]?: BsChipFilterAttributes[K] } & { [K in keyof BsChipFilter & keyof BsChipFilterAttributes as `prop:${K}`]?: BsChipFilter[K] };
16832
19534
  "bs-chip-informative": Omit<BsChipInformative, keyof BsChipInformativeAttributes> & { [K in keyof BsChipInformative & keyof BsChipInformativeAttributes]?: BsChipInformative[K] } & { [K in keyof BsChipInformative & keyof BsChipInformativeAttributes as `attr:${K}`]?: BsChipInformativeAttributes[K] } & { [K in keyof BsChipInformative & keyof BsChipInformativeAttributes as `prop:${K}`]?: BsChipInformative[K] };
16833
19535
  "bs-chip-input": Omit<BsChipInput, keyof BsChipInputAttributes> & { [K in keyof BsChipInput & keyof BsChipInputAttributes]?: BsChipInput[K] } & { [K in keyof BsChipInput & keyof BsChipInputAttributes as `attr:${K}`]?: BsChipInputAttributes[K] } & { [K in keyof BsChipInput & keyof BsChipInputAttributes as `prop:${K}`]?: BsChipInput[K] };
16834
19536
  "bs-citation-preview": Omit<BsCitationPreview, keyof BsCitationPreviewAttributes> & { [K in keyof BsCitationPreview & keyof BsCitationPreviewAttributes]?: BsCitationPreview[K] } & { [K in keyof BsCitationPreview & keyof BsCitationPreviewAttributes as `attr:${K}`]?: BsCitationPreviewAttributes[K] } & { [K in keyof BsCitationPreview & keyof BsCitationPreviewAttributes as `prop:${K}`]?: BsCitationPreview[K] };
19537
+ "bs-code-block": Omit<BsCodeBlock, keyof BsCodeBlockAttributes> & { [K in keyof BsCodeBlock & keyof BsCodeBlockAttributes]?: BsCodeBlock[K] } & { [K in keyof BsCodeBlock & keyof BsCodeBlockAttributes as `attr:${K}`]?: BsCodeBlockAttributes[K] } & { [K in keyof BsCodeBlock & keyof BsCodeBlockAttributes as `prop:${K}`]?: BsCodeBlock[K] };
16835
19538
  "bs-command-palette": Omit<BsCommandPalette, keyof BsCommandPaletteAttributes> & { [K in keyof BsCommandPalette & keyof BsCommandPaletteAttributes]?: BsCommandPalette[K] } & { [K in keyof BsCommandPalette & keyof BsCommandPaletteAttributes as `attr:${K}`]?: BsCommandPaletteAttributes[K] } & { [K in keyof BsCommandPalette & keyof BsCommandPaletteAttributes as `prop:${K}`]?: BsCommandPalette[K] };
16836
19539
  "bs-compact-menu-block": Omit<BsCompactMenuBlock, keyof BsCompactMenuBlockAttributes> & { [K in keyof BsCompactMenuBlock & keyof BsCompactMenuBlockAttributes]?: BsCompactMenuBlock[K] } & { [K in keyof BsCompactMenuBlock & keyof BsCompactMenuBlockAttributes as `attr:${K}`]?: BsCompactMenuBlockAttributes[K] } & { [K in keyof BsCompactMenuBlock & keyof BsCompactMenuBlockAttributes as `prop:${K}`]?: BsCompactMenuBlock[K] } & OneOf<"name", BsCompactMenuBlock["name"], BsCompactMenuBlockAttributes["name"]>;
16837
19540
  "bs-company-switcher": Omit<BsCompanySwitcher, keyof BsCompanySwitcherAttributes> & { [K in keyof BsCompanySwitcher & keyof BsCompanySwitcherAttributes]?: BsCompanySwitcher[K] } & { [K in keyof BsCompanySwitcher & keyof BsCompanySwitcherAttributes as `attr:${K}`]?: BsCompanySwitcherAttributes[K] } & { [K in keyof BsCompanySwitcher & keyof BsCompanySwitcherAttributes as `prop:${K}`]?: BsCompanySwitcher[K] };
@@ -16841,14 +19544,19 @@ declare namespace LocalJSX {
16841
19544
  "bs-cookie-consent": Omit<BsCookieConsent, keyof BsCookieConsentAttributes> & { [K in keyof BsCookieConsent & keyof BsCookieConsentAttributes]?: BsCookieConsent[K] } & { [K in keyof BsCookieConsent & keyof BsCookieConsentAttributes as `attr:${K}`]?: BsCookieConsentAttributes[K] } & { [K in keyof BsCookieConsent & keyof BsCookieConsentAttributes as `prop:${K}`]?: BsCookieConsent[K] };
16842
19545
  "bs-data-table": Omit<BsDataTable, keyof BsDataTableAttributes> & { [K in keyof BsDataTable & keyof BsDataTableAttributes]?: BsDataTable[K] } & { [K in keyof BsDataTable & keyof BsDataTableAttributes as `attr:${K}`]?: BsDataTableAttributes[K] } & { [K in keyof BsDataTable & keyof BsDataTableAttributes as `prop:${K}`]?: BsDataTable[K] };
16843
19546
  "bs-datepicker": Omit<BsDatepicker, keyof BsDatepickerAttributes> & { [K in keyof BsDatepicker & keyof BsDatepickerAttributes]?: BsDatepicker[K] } & { [K in keyof BsDatepicker & keyof BsDatepickerAttributes as `attr:${K}`]?: BsDatepickerAttributes[K] } & { [K in keyof BsDatepicker & keyof BsDatepickerAttributes as `prop:${K}`]?: BsDatepicker[K] };
19547
+ "bs-description-item": Omit<BsDescriptionItem, keyof BsDescriptionItemAttributes> & { [K in keyof BsDescriptionItem & keyof BsDescriptionItemAttributes]?: BsDescriptionItem[K] } & { [K in keyof BsDescriptionItem & keyof BsDescriptionItemAttributes as `attr:${K}`]?: BsDescriptionItemAttributes[K] } & { [K in keyof BsDescriptionItem & keyof BsDescriptionItemAttributes as `prop:${K}`]?: BsDescriptionItem[K] };
19548
+ "bs-description-list": Omit<BsDescriptionList, keyof BsDescriptionListAttributes> & { [K in keyof BsDescriptionList & keyof BsDescriptionListAttributes]?: BsDescriptionList[K] } & { [K in keyof BsDescriptionList & keyof BsDescriptionListAttributes as `attr:${K}`]?: BsDescriptionListAttributes[K] } & { [K in keyof BsDescriptionList & keyof BsDescriptionListAttributes as `prop:${K}`]?: BsDescriptionList[K] };
16844
19549
  "bs-dialog": Omit<BsDialog, keyof BsDialogAttributes> & { [K in keyof BsDialog & keyof BsDialogAttributes]?: BsDialog[K] } & { [K in keyof BsDialog & keyof BsDialogAttributes as `attr:${K}`]?: BsDialogAttributes[K] } & { [K in keyof BsDialog & keyof BsDialogAttributes as `prop:${K}`]?: BsDialog[K] };
16845
19550
  "bs-divider": Omit<BsDivider, keyof BsDividerAttributes> & { [K in keyof BsDivider & keyof BsDividerAttributes]?: BsDivider[K] } & { [K in keyof BsDivider & keyof BsDividerAttributes as `attr:${K}`]?: BsDividerAttributes[K] } & { [K in keyof BsDivider & keyof BsDividerAttributes as `prop:${K}`]?: BsDivider[K] };
19551
+ "bs-dropdown": Omit<BsDropdown, keyof BsDropdownAttributes> & { [K in keyof BsDropdown & keyof BsDropdownAttributes]?: BsDropdown[K] } & { [K in keyof BsDropdown & keyof BsDropdownAttributes as `attr:${K}`]?: BsDropdownAttributes[K] } & { [K in keyof BsDropdown & keyof BsDropdownAttributes as `prop:${K}`]?: BsDropdown[K] };
16846
19552
  "bs-empty-state": Omit<BsEmptyState, keyof BsEmptyStateAttributes> & { [K in keyof BsEmptyState & keyof BsEmptyStateAttributes]?: BsEmptyState[K] } & { [K in keyof BsEmptyState & keyof BsEmptyStateAttributes as `attr:${K}`]?: BsEmptyStateAttributes[K] } & { [K in keyof BsEmptyState & keyof BsEmptyStateAttributes as `prop:${K}`]?: BsEmptyState[K] };
16847
19553
  "bs-error-page": Omit<BsErrorPage, keyof BsErrorPageAttributes> & { [K in keyof BsErrorPage & keyof BsErrorPageAttributes]?: BsErrorPage[K] } & { [K in keyof BsErrorPage & keyof BsErrorPageAttributes as `attr:${K}`]?: BsErrorPageAttributes[K] } & { [K in keyof BsErrorPage & keyof BsErrorPageAttributes as `prop:${K}`]?: BsErrorPage[K] };
16848
19554
  "bs-file-upload": Omit<BsFileUpload, keyof BsFileUploadAttributes> & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes]?: BsFileUpload[K] } & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes as `attr:${K}`]?: BsFileUploadAttributes[K] } & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes as `prop:${K}`]?: BsFileUpload[K] };
16849
19555
  "bs-file-upload-item": Omit<BsFileUploadItem, keyof BsFileUploadItemAttributes> & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes]?: BsFileUploadItem[K] } & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes as `attr:${K}`]?: BsFileUploadItemAttributes[K] } & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes as `prop:${K}`]?: BsFileUploadItem[K] };
16850
19556
  "bs-global-search": Omit<BsGlobalSearch, keyof BsGlobalSearchAttributes> & { [K in keyof BsGlobalSearch & keyof BsGlobalSearchAttributes]?: BsGlobalSearch[K] } & { [K in keyof BsGlobalSearch & keyof BsGlobalSearchAttributes as `attr:${K}`]?: BsGlobalSearchAttributes[K] } & { [K in keyof BsGlobalSearch & keyof BsGlobalSearchAttributes as `prop:${K}`]?: BsGlobalSearch[K] };
16851
19557
  "bs-grid": Omit<BsGrid, keyof BsGridAttributes> & { [K in keyof BsGrid & keyof BsGridAttributes]?: BsGrid[K] } & { [K in keyof BsGrid & keyof BsGridAttributes as `attr:${K}`]?: BsGridAttributes[K] } & { [K in keyof BsGrid & keyof BsGridAttributes as `prop:${K}`]?: BsGrid[K] };
19558
+ "bs-heading": Omit<BsHeading, keyof BsHeadingAttributes> & { [K in keyof BsHeading & keyof BsHeadingAttributes]?: BsHeading[K] } & { [K in keyof BsHeading & keyof BsHeadingAttributes as `attr:${K}`]?: BsHeadingAttributes[K] } & { [K in keyof BsHeading & keyof BsHeadingAttributes as `prop:${K}`]?: BsHeading[K] };
19559
+ "bs-icon": Omit<BsIcon, keyof BsIconAttributes> & { [K in keyof BsIcon & keyof BsIconAttributes]?: BsIcon[K] } & { [K in keyof BsIcon & keyof BsIconAttributes as `attr:${K}`]?: BsIconAttributes[K] } & { [K in keyof BsIcon & keyof BsIconAttributes as `prop:${K}`]?: BsIcon[K] };
16852
19560
  "bs-icon-button": Omit<BsIconButton, keyof BsIconButtonAttributes> & { [K in keyof BsIconButton & keyof BsIconButtonAttributes]?: BsIconButton[K] } & { [K in keyof BsIconButton & keyof BsIconButtonAttributes as `attr:${K}`]?: BsIconButtonAttributes[K] } & { [K in keyof BsIconButton & keyof BsIconButtonAttributes as `prop:${K}`]?: BsIconButton[K] };
16853
19561
  "bs-icon-tile": Omit<BsIconTile, keyof BsIconTileAttributes> & { [K in keyof BsIconTile & keyof BsIconTileAttributes]?: BsIconTile[K] } & { [K in keyof BsIconTile & keyof BsIconTileAttributes as `attr:${K}`]?: BsIconTileAttributes[K] } & { [K in keyof BsIconTile & keyof BsIconTileAttributes as `prop:${K}`]?: BsIconTile[K] };
16854
19562
  "bs-inline-tab": Omit<BsInlineTab, keyof BsInlineTabAttributes> & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes]?: BsInlineTab[K] } & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes as `attr:${K}`]?: BsInlineTabAttributes[K] } & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes as `prop:${K}`]?: BsInlineTab[K] };
@@ -16856,6 +19564,7 @@ declare namespace LocalJSX {
16856
19564
  "bs-key": Omit<BsKey, keyof BsKeyAttributes> & { [K in keyof BsKey & keyof BsKeyAttributes]?: BsKey[K] } & { [K in keyof BsKey & keyof BsKeyAttributes as `attr:${K}`]?: BsKeyAttributes[K] } & { [K in keyof BsKey & keyof BsKeyAttributes as `prop:${K}`]?: BsKey[K] };
16857
19565
  "bs-key-caps": Omit<BsKeyCaps, keyof BsKeyCapsAttributes> & { [K in keyof BsKeyCaps & keyof BsKeyCapsAttributes]?: BsKeyCaps[K] } & { [K in keyof BsKeyCaps & keyof BsKeyCapsAttributes as `attr:${K}`]?: BsKeyCapsAttributes[K] } & { [K in keyof BsKeyCaps & keyof BsKeyCapsAttributes as `prop:${K}`]?: BsKeyCaps[K] };
16858
19566
  "bs-keyboard-shortcuts": Omit<BsKeyboardShortcuts, keyof BsKeyboardShortcutsAttributes> & { [K in keyof BsKeyboardShortcuts & keyof BsKeyboardShortcutsAttributes]?: BsKeyboardShortcuts[K] } & { [K in keyof BsKeyboardShortcuts & keyof BsKeyboardShortcutsAttributes as `attr:${K}`]?: BsKeyboardShortcutsAttributes[K] } & { [K in keyof BsKeyboardShortcuts & keyof BsKeyboardShortcutsAttributes as `prop:${K}`]?: BsKeyboardShortcuts[K] };
19567
+ "bs-link": Omit<BsLink, keyof BsLinkAttributes> & { [K in keyof BsLink & keyof BsLinkAttributes]?: BsLink[K] } & { [K in keyof BsLink & keyof BsLinkAttributes as `attr:${K}`]?: BsLinkAttributes[K] } & { [K in keyof BsLink & keyof BsLinkAttributes as `prop:${K}`]?: BsLink[K] };
16859
19568
  "bs-list": Omit<BsList, keyof BsListAttributes> & { [K in keyof BsList & keyof BsListAttributes]?: BsList[K] } & { [K in keyof BsList & keyof BsListAttributes as `attr:${K}`]?: BsListAttributes[K] } & { [K in keyof BsList & keyof BsListAttributes as `prop:${K}`]?: BsList[K] };
16860
19569
  "bs-list-item": Omit<BsListItem, keyof BsListItemAttributes> & { [K in keyof BsListItem & keyof BsListItemAttributes]?: BsListItem[K] } & { [K in keyof BsListItem & keyof BsListItemAttributes as `attr:${K}`]?: BsListItemAttributes[K] } & { [K in keyof BsListItem & keyof BsListItemAttributes as `prop:${K}`]?: BsListItem[K] };
16861
19570
  "bs-logo": Omit<BsLogo, keyof BsLogoAttributes> & { [K in keyof BsLogo & keyof BsLogoAttributes]?: BsLogo[K] } & { [K in keyof BsLogo & keyof BsLogoAttributes as `attr:${K}`]?: BsLogoAttributes[K] } & { [K in keyof BsLogo & keyof BsLogoAttributes as `prop:${K}`]?: BsLogo[K] };
@@ -16878,25 +19587,35 @@ declare namespace LocalJSX {
16878
19587
  "bs-progress-linear": Omit<BsProgressLinear, keyof BsProgressLinearAttributes> & { [K in keyof BsProgressLinear & keyof BsProgressLinearAttributes]?: BsProgressLinear[K] } & { [K in keyof BsProgressLinear & keyof BsProgressLinearAttributes as `attr:${K}`]?: BsProgressLinearAttributes[K] } & { [K in keyof BsProgressLinear & keyof BsProgressLinearAttributes as `prop:${K}`]?: BsProgressLinear[K] };
16879
19588
  "bs-qr-code": Omit<BsQrCode, keyof BsQrCodeAttributes> & { [K in keyof BsQrCode & keyof BsQrCodeAttributes]?: BsQrCode[K] } & { [K in keyof BsQrCode & keyof BsQrCodeAttributes as `attr:${K}`]?: BsQrCodeAttributes[K] } & { [K in keyof BsQrCode & keyof BsQrCodeAttributes as `prop:${K}`]?: BsQrCode[K] };
16880
19589
  "bs-radio": Omit<BsRadio, keyof BsRadioAttributes> & { [K in keyof BsRadio & keyof BsRadioAttributes]?: BsRadio[K] } & { [K in keyof BsRadio & keyof BsRadioAttributes as `attr:${K}`]?: BsRadioAttributes[K] } & { [K in keyof BsRadio & keyof BsRadioAttributes as `prop:${K}`]?: BsRadio[K] };
19590
+ "bs-radio-group": Omit<BsRadioGroup, keyof BsRadioGroupAttributes> & { [K in keyof BsRadioGroup & keyof BsRadioGroupAttributes]?: BsRadioGroup[K] } & { [K in keyof BsRadioGroup & keyof BsRadioGroupAttributes as `attr:${K}`]?: BsRadioGroupAttributes[K] } & { [K in keyof BsRadioGroup & keyof BsRadioGroupAttributes as `prop:${K}`]?: BsRadioGroup[K] };
16881
19591
  "bs-ripple": Omit<BsRipple, keyof BsRippleAttributes> & { [K in keyof BsRipple & keyof BsRippleAttributes]?: BsRipple[K] } & { [K in keyof BsRipple & keyof BsRippleAttributes as `attr:${K}`]?: BsRippleAttributes[K] } & { [K in keyof BsRipple & keyof BsRippleAttributes as `prop:${K}`]?: BsRipple[K] };
16882
19592
  "bs-search-item": Omit<BsSearchItem, keyof BsSearchItemAttributes> & { [K in keyof BsSearchItem & keyof BsSearchItemAttributes]?: BsSearchItem[K] } & { [K in keyof BsSearchItem & keyof BsSearchItemAttributes as `attr:${K}`]?: BsSearchItemAttributes[K] } & { [K in keyof BsSearchItem & keyof BsSearchItemAttributes as `prop:${K}`]?: BsSearchItem[K] };
19593
+ "bs-select": Omit<BsSelect, keyof BsSelectAttributes> & { [K in keyof BsSelect & keyof BsSelectAttributes]?: BsSelect[K] } & { [K in keyof BsSelect & keyof BsSelectAttributes as `attr:${K}`]?: BsSelectAttributes[K] } & { [K in keyof BsSelect & keyof BsSelectAttributes as `prop:${K}`]?: BsSelect[K] };
16883
19594
  "bs-session-timeout": Omit<BsSessionTimeout, keyof BsSessionTimeoutAttributes> & { [K in keyof BsSessionTimeout & keyof BsSessionTimeoutAttributes]?: BsSessionTimeout[K] } & { [K in keyof BsSessionTimeout & keyof BsSessionTimeoutAttributes as `attr:${K}`]?: BsSessionTimeoutAttributes[K] } & { [K in keyof BsSessionTimeout & keyof BsSessionTimeoutAttributes as `prop:${K}`]?: BsSessionTimeout[K] };
16884
19595
  "bs-shortcut-row": Omit<BsShortcutRow, keyof BsShortcutRowAttributes> & { [K in keyof BsShortcutRow & keyof BsShortcutRowAttributes]?: BsShortcutRow[K] } & { [K in keyof BsShortcutRow & keyof BsShortcutRowAttributes as `attr:${K}`]?: BsShortcutRowAttributes[K] } & { [K in keyof BsShortcutRow & keyof BsShortcutRowAttributes as `prop:${K}`]?: BsShortcutRow[K] };
16885
19596
  "bs-side-panel": Omit<BsSidePanel, keyof BsSidePanelAttributes> & { [K in keyof BsSidePanel & keyof BsSidePanelAttributes]?: BsSidePanel[K] } & { [K in keyof BsSidePanel & keyof BsSidePanelAttributes as `attr:${K}`]?: BsSidePanelAttributes[K] } & { [K in keyof BsSidePanel & keyof BsSidePanelAttributes as `prop:${K}`]?: BsSidePanel[K] };
16886
19597
  "bs-skeleton": Omit<BsSkeleton, keyof BsSkeletonAttributes> & { [K in keyof BsSkeleton & keyof BsSkeletonAttributes]?: BsSkeleton[K] } & { [K in keyof BsSkeleton & keyof BsSkeletonAttributes as `attr:${K}`]?: BsSkeletonAttributes[K] } & { [K in keyof BsSkeleton & keyof BsSkeletonAttributes as `prop:${K}`]?: BsSkeleton[K] };
19598
+ "bs-skip-link": Omit<BsSkipLink, keyof BsSkipLinkAttributes> & { [K in keyof BsSkipLink & keyof BsSkipLinkAttributes]?: BsSkipLink[K] } & { [K in keyof BsSkipLink & keyof BsSkipLinkAttributes as `attr:${K}`]?: BsSkipLinkAttributes[K] } & { [K in keyof BsSkipLink & keyof BsSkipLinkAttributes as `prop:${K}`]?: BsSkipLink[K] };
16887
19599
  "bs-slider": Omit<BsSlider, keyof BsSliderAttributes> & { [K in keyof BsSlider & keyof BsSliderAttributes]?: BsSlider[K] } & { [K in keyof BsSlider & keyof BsSliderAttributes as `attr:${K}`]?: BsSliderAttributes[K] } & { [K in keyof BsSlider & keyof BsSliderAttributes as `prop:${K}`]?: BsSlider[K] };
16888
19600
  "bs-snackbar": Omit<BsSnackbar, keyof BsSnackbarAttributes> & { [K in keyof BsSnackbar & keyof BsSnackbarAttributes]?: BsSnackbar[K] } & { [K in keyof BsSnackbar & keyof BsSnackbarAttributes as `attr:${K}`]?: BsSnackbarAttributes[K] } & { [K in keyof BsSnackbar & keyof BsSnackbarAttributes as `prop:${K}`]?: BsSnackbar[K] };
16889
19601
  "bs-source-link": Omit<BsSourceLink, keyof BsSourceLinkAttributes> & { [K in keyof BsSourceLink & keyof BsSourceLinkAttributes]?: BsSourceLink[K] } & { [K in keyof BsSourceLink & keyof BsSourceLinkAttributes as `attr:${K}`]?: BsSourceLinkAttributes[K] } & { [K in keyof BsSourceLink & keyof BsSourceLinkAttributes as `prop:${K}`]?: BsSourceLink[K] };
16890
19602
  "bs-spinner": Omit<BsSpinner, keyof BsSpinnerAttributes> & { [K in keyof BsSpinner & keyof BsSpinnerAttributes]?: BsSpinner[K] } & { [K in keyof BsSpinner & keyof BsSpinnerAttributes as `attr:${K}`]?: BsSpinnerAttributes[K] } & { [K in keyof BsSpinner & keyof BsSpinnerAttributes as `prop:${K}`]?: BsSpinner[K] };
16891
19603
  "bs-split-pane": Omit<BsSplitPane, keyof BsSplitPaneAttributes> & { [K in keyof BsSplitPane & keyof BsSplitPaneAttributes]?: BsSplitPane[K] } & { [K in keyof BsSplitPane & keyof BsSplitPaneAttributes as `attr:${K}`]?: BsSplitPaneAttributes[K] } & { [K in keyof BsSplitPane & keyof BsSplitPaneAttributes as `prop:${K}`]?: BsSplitPane[K] };
16892
19604
  "bs-stack": Omit<BsStack, keyof BsStackAttributes> & { [K in keyof BsStack & keyof BsStackAttributes]?: BsStack[K] } & { [K in keyof BsStack & keyof BsStackAttributes as `attr:${K}`]?: BsStackAttributes[K] } & { [K in keyof BsStack & keyof BsStackAttributes as `prop:${K}`]?: BsStack[K] };
19605
+ "bs-stat": Omit<BsStat, keyof BsStatAttributes> & { [K in keyof BsStat & keyof BsStatAttributes]?: BsStat[K] } & { [K in keyof BsStat & keyof BsStatAttributes as `attr:${K}`]?: BsStatAttributes[K] } & { [K in keyof BsStat & keyof BsStatAttributes as `prop:${K}`]?: BsStat[K] } & OneOf<"label", BsStat["label"], BsStatAttributes["label"]> & OneOf<"value", BsStat["value"], BsStatAttributes["value"]>;
16893
19606
  "bs-stepper": Omit<BsStepper, keyof BsStepperAttributes> & { [K in keyof BsStepper & keyof BsStepperAttributes]?: BsStepper[K] } & { [K in keyof BsStepper & keyof BsStepperAttributes as `attr:${K}`]?: BsStepperAttributes[K] } & { [K in keyof BsStepper & keyof BsStepperAttributes as `prop:${K}`]?: BsStepper[K] };
16894
19607
  "bs-stepper-step": Omit<BsStepperStep, keyof BsStepperStepAttributes> & { [K in keyof BsStepperStep & keyof BsStepperStepAttributes]?: BsStepperStep[K] } & { [K in keyof BsStepperStep & keyof BsStepperStepAttributes as `attr:${K}`]?: BsStepperStepAttributes[K] } & { [K in keyof BsStepperStep & keyof BsStepperStepAttributes as `prop:${K}`]?: BsStepperStep[K] };
16895
19608
  "bs-switch": Omit<BsSwitch, keyof BsSwitchAttributes> & { [K in keyof BsSwitch & keyof BsSwitchAttributes]?: BsSwitch[K] } & { [K in keyof BsSwitch & keyof BsSwitchAttributes as `attr:${K}`]?: BsSwitchAttributes[K] } & { [K in keyof BsSwitch & keyof BsSwitchAttributes as `prop:${K}`]?: BsSwitch[K] };
16896
19609
  "bs-tab": Omit<BsTab, keyof BsTabAttributes> & { [K in keyof BsTab & keyof BsTabAttributes]?: BsTab[K] } & { [K in keyof BsTab & keyof BsTabAttributes as `attr:${K}`]?: BsTabAttributes[K] } & { [K in keyof BsTab & keyof BsTabAttributes as `prop:${K}`]?: BsTab[K] };
19610
+ "bs-table-of-contents": Omit<BsTableOfContents, keyof BsTableOfContentsAttributes> & { [K in keyof BsTableOfContents & keyof BsTableOfContentsAttributes]?: BsTableOfContents[K] } & { [K in keyof BsTableOfContents & keyof BsTableOfContentsAttributes as `attr:${K}`]?: BsTableOfContentsAttributes[K] } & { [K in keyof BsTableOfContents & keyof BsTableOfContentsAttributes as `prop:${K}`]?: BsTableOfContents[K] };
16897
19611
  "bs-tabs": Omit<BsTabs, keyof BsTabsAttributes> & { [K in keyof BsTabs & keyof BsTabsAttributes]?: BsTabs[K] } & { [K in keyof BsTabs & keyof BsTabsAttributes as `attr:${K}`]?: BsTabsAttributes[K] } & { [K in keyof BsTabs & keyof BsTabsAttributes as `prop:${K}`]?: BsTabs[K] };
19612
+ "bs-tag": Omit<BsTag, keyof BsTagAttributes> & { [K in keyof BsTag & keyof BsTagAttributes]?: BsTag[K] } & { [K in keyof BsTag & keyof BsTagAttributes as `attr:${K}`]?: BsTagAttributes[K] } & { [K in keyof BsTag & keyof BsTagAttributes as `prop:${K}`]?: BsTag[K] };
19613
+ "bs-text": Omit<BsText, keyof BsTextAttributes> & { [K in keyof BsText & keyof BsTextAttributes]?: BsText[K] } & { [K in keyof BsText & keyof BsTextAttributes as `attr:${K}`]?: BsTextAttributes[K] } & { [K in keyof BsText & keyof BsTextAttributes as `prop:${K}`]?: BsText[K] };
16898
19614
  "bs-timepicker": Omit<BsTimepicker, keyof BsTimepickerAttributes> & { [K in keyof BsTimepicker & keyof BsTimepickerAttributes]?: BsTimepicker[K] } & { [K in keyof BsTimepicker & keyof BsTimepickerAttributes as `attr:${K}`]?: BsTimepickerAttributes[K] } & { [K in keyof BsTimepicker & keyof BsTimepickerAttributes as `prop:${K}`]?: BsTimepicker[K] };
16899
19615
  "bs-toast": Omit<BsToast, keyof BsToastAttributes> & { [K in keyof BsToast & keyof BsToastAttributes]?: BsToast[K] } & { [K in keyof BsToast & keyof BsToastAttributes as `attr:${K}`]?: BsToastAttributes[K] } & { [K in keyof BsToast & keyof BsToastAttributes as `prop:${K}`]?: BsToast[K] };
19616
+ "bs-toggle-button": Omit<BsToggleButton, keyof BsToggleButtonAttributes> & { [K in keyof BsToggleButton & keyof BsToggleButtonAttributes]?: BsToggleButton[K] } & { [K in keyof BsToggleButton & keyof BsToggleButtonAttributes as `attr:${K}`]?: BsToggleButtonAttributes[K] } & { [K in keyof BsToggleButton & keyof BsToggleButtonAttributes as `prop:${K}`]?: BsToggleButton[K] };
19617
+ "bs-toggle-button-group": Omit<BsToggleButtonGroup, keyof BsToggleButtonGroupAttributes> & { [K in keyof BsToggleButtonGroup & keyof BsToggleButtonGroupAttributes]?: BsToggleButtonGroup[K] } & { [K in keyof BsToggleButtonGroup & keyof BsToggleButtonGroupAttributes as `attr:${K}`]?: BsToggleButtonGroupAttributes[K] } & { [K in keyof BsToggleButtonGroup & keyof BsToggleButtonGroupAttributes as `prop:${K}`]?: BsToggleButtonGroup[K] };
19618
+ "bs-toolbar": Omit<BsToolbar, keyof BsToolbarAttributes> & { [K in keyof BsToolbar & keyof BsToolbarAttributes]?: BsToolbar[K] } & { [K in keyof BsToolbar & keyof BsToolbarAttributes as `attr:${K}`]?: BsToolbarAttributes[K] } & { [K in keyof BsToolbar & keyof BsToolbarAttributes as `prop:${K}`]?: BsToolbar[K] };
16900
19619
  "bs-tooltip": Omit<BsTooltip, keyof BsTooltipAttributes> & { [K in keyof BsTooltip & keyof BsTooltipAttributes]?: BsTooltip[K] } & { [K in keyof BsTooltip & keyof BsTooltipAttributes as `attr:${K}`]?: BsTooltipAttributes[K] } & { [K in keyof BsTooltip & keyof BsTooltipAttributes as `prop:${K}`]?: BsTooltip[K] };
16901
19620
  "bs-tooltip-trigger": Omit<BsTooltipTrigger, keyof BsTooltipTriggerAttributes> & { [K in keyof BsTooltipTrigger & keyof BsTooltipTriggerAttributes]?: BsTooltipTrigger[K] } & { [K in keyof BsTooltipTrigger & keyof BsTooltipTriggerAttributes as `attr:${K}`]?: BsTooltipTriggerAttributes[K] } & { [K in keyof BsTooltipTrigger & keyof BsTooltipTriggerAttributes as `prop:${K}`]?: BsTooltipTrigger[K] };
16902
19621
  "bs-tree": Omit<BsTree, keyof BsTreeAttributes> & { [K in keyof BsTree & keyof BsTreeAttributes]?: BsTree[K] } & { [K in keyof BsTree & keyof BsTreeAttributes as `attr:${K}`]?: BsTreeAttributes[K] } & { [K in keyof BsTree & keyof BsTreeAttributes as `prop:${K}`]?: BsTree[K] };
@@ -17264,17 +19983,20 @@ declare module "@stencil/core" {
17264
19983
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
17265
19984
  * it for actions that actually delete/revoke/undo something.
17266
19985
  * @prop --bs-button-radius - Corner radius. Aliased to `--bs-border-radius-100` by default.
17267
- * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-300`.
19986
+ * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-150` (12px).
19987
+ * @prop --bs-button-padding-x-md - Left/right padding at `size="md"`. Aliased to `--bs-spacing-150` (12px).
19988
+ * @prop --bs-button-padding-x-lg - Left/right padding at `size="lg"`. Aliased to `--bs-spacing-150` (12px).
17268
19989
  * @prop --bs-button-width - Width of the button. `auto` by default (fits its content); set `100%` for a full-width button, e.g. `bs-button { --bs-button-width: 100%; }`.
17269
19990
  * @prop --bs-button-subtle-color - Label/icon colour, `variant="subtle"`. Aliased to `--bs-color-neutral-default`; set it to `var(--bs-text-action)` for a blue text button.
17270
- * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
17271
- * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
17272
- * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
19991
+ * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-400` (32px).
19992
+ * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-550` (44px).
19993
+ * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-600` (48px).
19994
+ * @prop --bs-button-outlined-color - Label/icon colour, `variant="outlined"`, default. Aliased to `--bs-color-primary-default`.
17273
19995
  * @prop --bs-button-neutral-border - Border color, `variant="neutral"`, default/disabled. Aliased to `--bs-border-neutral-container`.
17274
19996
  * @prop --bs-button-neutral-border-hover - Border color, `variant="neutral"`, hover. Aliased to `--bs-border-neutral-container-hover`.
17275
19997
  * @prop --bs-button-neutral-border-pressed - Border color, `variant="neutral"`, pressed. Aliased to `--bs-border-neutral-container-pressed`.
17276
- * @prop --bs-button-padding-x-icon-side - Horizontal padding on an edge that's adjacent to a leading/trailing icon (tighter than the plain text-only edge). Aliased to `--bs-spacing-150`.
17277
- * @prop --bs-button-padding-x-label-side - Horizontal padding on the opposite edge, when an icon on the other side needs compensating extra space to keep the button optically balanced. Aliased to `--bs-spacing-250`.
19998
+ * @prop --bs-button-padding-x-icon-side - Horizontal padding on an edge that's adjacent to a leading/trailing icon (now equal to the text-only edge). Aliased to `--bs-spacing-150`.
19999
+ * @prop --bs-button-padding-x-label-side - Horizontal padding on the opposite edge, when an icon on the other side needs compensating extra space to keep the button optically balanced. Aliased to `--bs-spacing-150` (no compensation by default).
17278
20000
  */
17279
20001
  "bs-button": LocalJSX.IntrinsicElements["bs-button"] & JSXBase.HTMLAttributes<HTMLBsButtonElement>;
17280
20002
  /**
@@ -17475,6 +20197,9 @@ declare module "@stencil/core" {
17475
20197
  * `--bs-color-primary-container-pressed`.
17476
20198
  * @prop --bs-chatbot-suggestion-button-bg-focus - Background when focused. Aliased to
17477
20199
  * `--bs-color-primary-container-hover` (same as hover).
20200
+ * @prop --bs-chatbot-suggestion-button-bg-disabled - Background when disabled. Aliased to `--bs-surface-action-disabled`.
20201
+ * @prop --bs-chatbot-suggestion-button-text-disabled - Text color when disabled. Aliased to `--bs-text-on-disabled`.
20202
+ * @prop --bs-chatbot-suggestion-button-border-color-disabled - Border color when disabled. Aliased to `--bs-border-neutral-disabled`.
17478
20203
  * @prop --bs-chatbot-suggestion-button-text-default - Text color in the default state. Aliased to
17479
20204
  * `--bs-text-action`.
17480
20205
  * @prop --bs-chatbot-suggestion-button-text-hover - Text color on hover, pressed, and focus.
@@ -17495,6 +20220,17 @@ declare module "@stencil/core" {
17495
20220
  * - An on/off setting that takes effect immediately (no explicit form submission) -- use `bs-switch`.
17496
20221
  */
17497
20222
  "bs-checkbox": LocalJSX.IntrinsicElements["bs-checkbox"] & JSXBase.HTMLAttributes<HTMLBsCheckboxElement>;
20223
+ /**
20224
+ * A labelled group of `bs-checkbox`es: a `<fieldset>` with a `<legend>`, helper or error text, and
20225
+ * a single `value` array of the checked boxes' values.
20226
+ * Composed from: `bs-checkbox` (slotted by you).
20227
+ * ## When to use
20228
+ * - A set of related, independent options where any number may be chosen ("Notify me by ...").
20229
+ * ## When not to use
20230
+ * - Exactly one choice: use `bs-radio-group`.
20231
+ * - A single yes/no: use one `bs-checkbox`, or `bs-switch` for an immediate setting.
20232
+ */
20233
+ "bs-checkbox-group": LocalJSX.IntrinsicElements["bs-checkbox-group"] & JSXBase.HTMLAttributes<HTMLBsCheckboxGroupElement>;
17498
20234
  /**
17499
20235
  * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
17500
20236
  * known yet (e.g. still being fetched from an API). Renders a small square (matching the
@@ -17574,6 +20310,27 @@ declare module "@stencil/core" {
17574
20310
  * @prop --bs-citation-preview-page-color - Page label color. Aliased to `--bs-text-secondary`.
17575
20311
  */
17576
20312
  "bs-citation-preview": LocalJSX.IntrinsicElements["bs-citation-preview"] & JSXBase.HTMLAttributes<HTMLBsCitationPreviewElement>;
20313
+ /**
20314
+ * A block of code with an optional filename header and a Copy button, or (with `inline`) styled
20315
+ * inline code. Dependency-free: it does no syntax highlighting itself. Pass plain text with `code`,
20316
+ * or slot pre-highlighted markup (e.g. the output of Shiki or Prism: spans coloured with your own
20317
+ * CSS) as the default slot.
20318
+ * Follows light and dark mode through the surface/text tokens. Long lines scroll horizontally (the
20319
+ * scroll area is keyboard focusable) or, with `wrap`, break onto the next line.
20320
+ * Copying announces the `copiedLabel` text through a polite live region, and the button label
20321
+ * changes to match for a few seconds.
20322
+ * Slotted content: keep it flush against the tags (`<bs-code-block><span>..</span></bs-code-block>`),
20323
+ * since whitespace in a `<pre>`-style block is kept. The line count for `lineNumbers` and the text
20324
+ * that is copied are read from the slotted text.
20325
+ * Composed from: `bs-card` (the surface), `bs-button` and `bs-icon` (the Copy button).
20326
+ * ## When to use
20327
+ * - Showing a snippet, command or config the reader may want to copy.
20328
+ * - `inline` for a short code term inside a sentence.
20329
+ * ## When not to use
20330
+ * - Long files that need folding, search or editing: link to the source instead.
20331
+ * - Pre-formatted prose or tables: use ordinary text and table markup.
20332
+ */
20333
+ "bs-code-block": LocalJSX.IntrinsicElements["bs-code-block"] & JSXBase.HTMLAttributes<HTMLBsCodeBlockElement>;
17577
20334
  /**
17578
20335
  * A Ctrl+K command palette: a modal with a search field, grouped commands, navigation and records, a
17579
20336
  * no-results view and a keyboard-hint footer. The data, the filtering, the command registry and the
@@ -17802,6 +20559,12 @@ declare module "@stencil/core" {
17802
20559
  * ## When not to use
17803
20560
  * - A handful of unrelated key/value pairs — a simple list or card is lighter-weight.
17804
20561
  * - Deeply nested/hierarchical data — this component renders one flat row per record.
20562
+ * ## Rich cells
20563
+ * Without a `cellRenderer`, each cell is a named slot, `cell-{row.id}-{column.key}`, whose fallback
20564
+ * content is the plain-text value. Slot an element into it to put app-owned content (a framework
20565
+ * component, a router link, a badge) in the cell, e.g.
20566
+ * `<a slot="cell-7-name" href="/people/7">Ada</a>`. The slotted element lives in the light DOM, so
20567
+ * it keeps your framework, router and CSP; nothing is parsed as HTML.
17805
20568
  */
17806
20569
  "bs-data-table": LocalJSX.IntrinsicElements["bs-data-table"] & JSXBase.HTMLAttributes<HTMLBsDataTableElement>;
17807
20570
  /**
@@ -17825,6 +20588,38 @@ declare module "@stencil/core" {
17825
20588
  * month (with Shift, by year), Enter/Space select the focused day.
17826
20589
  */
17827
20590
  "bs-datepicker": LocalJSX.IntrinsicElements["bs-datepicker"] & JSXBase.HTMLAttributes<HTMLBsDatepickerElement>;
20591
+ /**
20592
+ * One term and its detail inside a `bs-description-list` (a label/value pair such as "Owner: Sam Lee").
20593
+ * ## When to use
20594
+ * - As a child of `bs-description-list`, one per key/value pair.
20595
+ * ## When not to use
20596
+ * - Rows of records with media and actions -- use `bs-list-item`.
20597
+ * - Many pairs compared across several records -- use `bs-data-table`.
20598
+ * Each item renders its own `<dl>` containing one `<div>` group with a real `<dt>` and `<dd>`. (A `dl` cannot
20599
+ * span the shadow boundary between a list and its items, so the grouping lives here.)
20600
+ * @prop --bs-description-item-gap - Gap between term and detail when stacked. Aliased to `--bs-spacing-25`.
20601
+ * @prop --bs-description-item-term-width - Width of the term column when `layout="horizontal"`. `12rem`.
20602
+ * @prop --bs-description-item-column-gap - Gap between the term and detail columns when horizontal. Aliased to `--bs-spacing-200`.
20603
+ * @prop --bs-description-item-padding-y - Vertical padding. Aliased to `--bs-spacing-100`.
20604
+ * @prop --bs-description-item-term-color - Aliased to `--bs-text-secondary`.
20605
+ * @prop --bs-description-item-description-color - Aliased to `--bs-text-default`.
20606
+ */
20607
+ "bs-description-item": LocalJSX.IntrinsicElements["bs-description-item"] & JSXBase.HTMLAttributes<HTMLBsDescriptionItemElement>;
20608
+ /**
20609
+ * A key/value list of `bs-description-item` pairs (term and detail), for record summaries, settings read-outs
20610
+ * and metadata panels. Terms and details use real `dt`/`dd` semantics.
20611
+ * ## When to use
20612
+ * - A read-only summary of one record: "Owner", "Created", "Status" with their values.
20613
+ * ## When not to use
20614
+ * - A list of records with media and actions -- use `bs-list`.
20615
+ * - Editable fields -- use form components.
20616
+ * - Several records compared across columns -- use `bs-data-table`.
20617
+ * Built from `bs-description-item` children (light DOM; the list never moves nodes). Each item holds its own
20618
+ * `dl`; the list sets the layout on them and draws dividers.
20619
+ * @prop --bs-description-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
20620
+ * @prop --bs-description-list-gap - Gap between items. `0`.
20621
+ */
20622
+ "bs-description-list": LocalJSX.IntrinsicElements["bs-description-list"] & JSXBase.HTMLAttributes<HTMLBsDescriptionListElement>;
17828
20623
  /**
17829
20624
  * An overlay dialog that interrupts the current flow for a focused task or confirmation.
17830
20625
  * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
@@ -17855,6 +20650,22 @@ declare module "@stencil/core" {
17855
20650
  * @prop --bs-divider-inset - Indent applied by `inset`. Aliased to `--bs-spacing-300`.
17856
20651
  */
17857
20652
  "bs-divider": LocalJSX.IntrinsicElements["bs-divider"] & JSXBase.HTMLAttributes<HTMLBsDividerElement>;
20653
+ /**
20654
+ * A menu trigger: a button (slot `trigger`) that opens a `bs-menu` of `bs-menu-item`s in an anchored,
20655
+ * viewport-aware popup, with the menu keyboard pattern and focus management built in.
20656
+ * Opens on click, Enter, Space (via the trigger button) and ArrowDown. On open focus moves to the
20657
+ * first enabled menu item; Up/Down/Home/End move between items (handled by `bs-menu`). The dropdown
20658
+ * closes on outside click, Escape (focus returns to the trigger), Tab, and after an item is activated.
20659
+ * The trigger gets `aria-haspopup="menu"` and `aria-expanded` kept in sync.
20660
+ * Composed from `bs-popover` (anchor positioning, flipping, outside-click and Escape dismissal, open
20661
+ * motion), `bs-menu` and `bs-menu-item` (slotted by you), and a `bs-button` / `bs-icon-button` trigger.
20662
+ * ## When to use
20663
+ * - A header or toolbar action that reveals a short list of commands ("More", "Account", "Sort by").
20664
+ * ## When not to use
20665
+ * - Free-form popup content such as forms or arbitrary panels (use `bs-popover`).
20666
+ * - Choosing a value for a form field (use `bs-select`).
20667
+ */
20668
+ "bs-dropdown": LocalJSX.IntrinsicElements["bs-dropdown"] & JSXBase.HTMLAttributes<HTMLBsDropdownElement>;
17858
20669
  /**
17859
20670
  * A centered "nothing to show" block: an icon tile, a heading, a description and an optional action.
17860
20671
  * Used for empty lists, "no results" and error states inside a panel, card or page section.
@@ -17869,6 +20680,7 @@ declare module "@stencil/core" {
17869
20680
  * @prop --bs-empty-state-padding-y - Vertical padding. Aliased to `--bs-spacing-700` (56px).
17870
20681
  * @prop --bs-empty-state-padding-x - Horizontal padding. Aliased to `--bs-spacing-300` (24px).
17871
20682
  * @prop --bs-empty-state-gap - Gap between tile, heading, description and action. Aliased to `--bs-spacing-150`.
20683
+ * @prop --bs-empty-state-heading-size - Aliased to `--bs-font-size-xl` (`--bs-font-size-3xl` at `size="page"`).
17872
20684
  * @prop --bs-empty-state-heading-color - Aliased to `--bs-text-default`.
17873
20685
  * @prop --bs-empty-state-description-color - Aliased to `--bs-text-secondary`.
17874
20686
  */
@@ -17962,6 +20774,36 @@ declare module "@stencil/core" {
17962
20774
  * @prop --bs-grid-column-gap - Column gap. Overrides `--bs-grid-gap` and the `columnGap` prop's token.
17963
20775
  */
17964
20776
  "bs-grid": LocalJSX.IntrinsicElements["bs-grid"] & JSXBase.HTMLAttributes<HTMLBsGridElement>;
20777
+ /**
20778
+ * A heading whose rendered element and visual style are chosen separately: `level` (or `as`) picks
20779
+ * the element for the document outline, `size` picks the look. Sizes map to the typography tokens
20780
+ * (`--bs-font-size-*`, `--bs-font-weight-*`, `--bs-line-height-*`, `--bs-typography-font-family-heading`).
20781
+ * Default sizes by level: 1 = 40px, 2 = 32px, 3 = 24px, 4 = 20px, 5 = 18px, 6 = 16px; `display` is 48px.
20782
+ * Composed from: nothing (leaf).
20783
+ * ## When to use
20784
+ * - Any page or section title. Keep levels in order (no jumping from 1 to 4); change `size`, not `level`, to restyle.
20785
+ * ## When not to use
20786
+ * - Body copy, captions and labels: use `bs-text`.
20787
+ * - To make text big without it being a heading: use `bs-text` with `as="p"`.
20788
+ */
20789
+ "bs-heading": LocalJSX.IntrinsicElements["bs-heading"] & JSXBase.HTMLAttributes<HTMLBsHeadingElement>;
20790
+ /**
20791
+ * A sized, coloured icon. Renders inline SVG from a named registry (`name`), or any SVG you slot in.
20792
+ * Built-in names: `menu`, `arrow-right`, `arrow-left`, `check`, `close`, `chevron-down`,
20793
+ * `external-link`, `copy`, `search`, plus Phosphor glyphs `user`, `star`, `star-fill`, `x`,
20794
+ * `paper-plane-right`, `note-pencil`, `clock-counter-clockwise`, `arrows-out-simple` (256x256 filled). Add more with `registerIcons({ name: '<path d="..."/>' })`
20795
+ * (exported from the package entry): each value is the inner markup of a 24x24, `currentColor`
20796
+ * stroke icon, or pass `{ viewBox, body }` for a filled glyph on another grid.
20797
+ * Decorative by default (`aria-hidden`). Set `label` when the icon alone conveys meaning; it is then
20798
+ * exposed as an image with that name. An icon inside a button never needs `label`: name the button.
20799
+ * Composed from: nothing (leaf). Used by `bs-code-block`.
20800
+ * ## When to use
20801
+ * - A glyph beside text or inside a button, sized and coloured from tokens.
20802
+ * ## When not to use
20803
+ * - As a control by itself: wrap it in `bs-icon-button`.
20804
+ * - For a tinted status square: use `bs-icon-tile`.
20805
+ */
20806
+ "bs-icon": LocalJSX.IntrinsicElements["bs-icon"] & JSXBase.HTMLAttributes<HTMLBsIconElement>;
17965
20807
  /**
17966
20808
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
17967
20809
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -18024,7 +20866,9 @@ declare module "@stencil/core" {
18024
20866
  * range of related "field" shapes (number stepper, password reveal, date, dropdown trigger,
18025
20867
  * select, textarea, chip input, initials, country, and pin) via the `type` prop, since they all
18026
20868
  * share the same label/description/error/icon-slot chrome.
18027
- * Built from: `bs-menu`/`bs-menu-item` (`type="dropdown"`) and `bs-chip-informative` + `bs-icon-button` (`type="chip"`).
20869
+ * Built from: `bs-menu`/`bs-menu-item` (`type="dropdown"`), `bs-chip-informative` + `bs-icon-button` (`type="chip"`),
20870
+ * and `bs-icon-button` + `bs-spinner` (`type="combobox"` clear button / loading indicator; its listbox is a
20871
+ * hand-built `role="listbox"` because `bs-menu` is `role="menu"` and cannot host `option`s).
18028
20872
  * ## When to use
18029
20873
  * - Collecting a single line of free-text, email, password, or numeric input.
18030
20874
  * - Any of the other supported `type`s (search, date, dropdown, select, textarea, chip, initials,
@@ -18092,6 +20936,18 @@ declare module "@stencil/core" {
18092
20936
  * @prop --bs-keyboard-shortcuts-color-secondary - Titles, captions, footer. Aliased to `--bs-text-secondary`.
18093
20937
  */
18094
20938
  "bs-keyboard-shortcuts": LocalJSX.IntrinsicElements["bs-keyboard-shortcuts"] & JSXBase.HTMLAttributes<HTMLBsKeyboardShortcutsElement>;
20939
+ /**
20940
+ * A navigation link: either text (inline within a sentence, or standalone with a 44px target) or a
20941
+ * link styled as a primary button. Always renders a real `<a href>`.
20942
+ * Built from: hand-built `<a>` (leaf). `bs-button` renders a `<button>` and has no `href`; nesting a
20943
+ * button in an anchor is invalid HTML, so the `button` variant reuses the primary button's colour
20944
+ * tokens instead. Known gap: add `href` support to `bs-button` and compose it here.
20945
+ * ## When to use
20946
+ * - Navigating to another page or an external resource.
20947
+ * ## When not to use
20948
+ * - Triggering an action on the current page (use `bs-button`).
20949
+ */
20950
+ "bs-link": LocalJSX.IntrinsicElements["bs-link"] & JSXBase.HTMLAttributes<HTMLBsLinkElement>;
18095
20951
  /**
18096
20952
  * A vertical list of `bs-list-item` rows, optionally single-select.
18097
20953
  * ## When to use
@@ -18101,6 +20957,9 @@ declare module "@stencil/core" {
18101
20957
  * - A popup list of actions -- use `bs-menu`.
18102
20958
  * - Navigation between app sections -- use `bs-navigation-drawer`.
18103
20959
  * - Multi-column, sortable or paged data -- use `bs-data-table`.
20960
+ * `variant` switches between a plain list, a bulleted list and a numbered list; `dividers` gives a divided
20961
+ * list. The list keeps real list semantics in every variant (`role="list"` with `listitem` rows); the bullet
20962
+ * or number is drawn by the row and hidden from assistive technology, which announces position itself.
18104
20963
  * Built from `bs-list-item` children (light DOM; the list never moves nodes).
18105
20964
  * @prop --bs-list-gap - Gap between rows. Defaults to `0`.
18106
20965
  * @prop --bs-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
@@ -18608,6 +21467,21 @@ declare module "@stencil/core" {
18608
21467
  * - An on/off setting that takes effect immediately (no explicit form submission) -- use `bs-switch`.
18609
21468
  */
18610
21469
  "bs-radio": LocalJSX.IntrinsicElements["bs-radio"] & JSXBase.HTMLAttributes<HTMLBsRadioElement>;
21470
+ /**
21471
+ * A labelled group of `bs-radio`s: a visible label, helper or error text, an accessible
21472
+ * `role="radiogroup"`, and a single `value` for the whole set.
21473
+ * The group gives its radios one shared `name` (its own `name`, or a generated one) so they behave
21474
+ * as one native-style group: arrow keys move the selection (wrapping), only the checked radio is in
21475
+ * the tab order, and checking one unchecks the others. It keeps at most one radio checked (the
21476
+ * first one wins if several start checked).
21477
+ * Composed from: `bs-radio` (slotted by you).
21478
+ * ## When to use
21479
+ * - A set of 2-5 mutually exclusive options that should all stay visible, with a shared label.
21480
+ * ## When not to use
21481
+ * - Independent yes/no choices: use `bs-checkbox-group`.
21482
+ * - Many options: use a select or `bs-menu`.
21483
+ */
21484
+ "bs-radio-group": LocalJSX.IntrinsicElements["bs-radio-group"] & JSXBase.HTMLAttributes<HTMLBsRadioGroupElement>;
18611
21485
  /**
18612
21486
  * A touch-ripple effect: on pointer press, a circle grows from the press point and fades out.
18613
21487
  * It is a building block for pressable components (`bs-button`, `bs-icon-button`, ...), not something
@@ -18654,6 +21528,22 @@ declare module "@stencil/core" {
18654
21528
  * @prop --bs-search-item-icon-color - Aliased to `--bs-icon-default`.
18655
21529
  */
18656
21530
  "bs-search-item": LocalJSX.IntrinsicElements["bs-search-item"] & JSXBase.HTMLAttributes<HTMLBsSearchItemElement>;
21531
+ /**
21532
+ * A single-choice select: a field-shaped combobox that opens a scrollable listbox of options. Same
21533
+ * label / helper text / error chrome as `bs-input`.
21534
+ * Follows the WAI-ARIA select-only combobox pattern: focus stays on the combobox and the
21535
+ * highlighted option is exposed through `aria-activedescendant`.
21536
+ * Built from: the field/label/description/error styling language of `bs-input` (same `--bs-input-*`
21537
+ * tokens). The listbox rows are hand-built leaf elements: `bs-menu-item` is a `role="menuitem"`
21538
+ * button and `bs-popover` moves focus into its popup, neither of which fits the combobox/listbox
21539
+ * pattern where focus must stay on the field.
21540
+ * ## When to use
21541
+ * - Choosing exactly one value from a known list of roughly 4-15 options.
21542
+ * ## When not to use
21543
+ * - 2-3 options that should all be visible (use radios or `bs-toggle-button-group`).
21544
+ * - Very long or searchable lists (use `bs-input type="dropdown"` or a search pattern).
21545
+ */
21546
+ "bs-select": LocalJSX.IntrinsicElements["bs-select"] & JSXBase.HTMLAttributes<HTMLBsSelectElement>;
18657
21547
  /**
18658
21548
  * The three moments around an expiring session, as one card. Matches the Figma "Session timeout"
18659
21549
  * component's three types:
@@ -18738,6 +21628,22 @@ declare module "@stencil/core" {
18738
21628
  * @prop --bs-skeleton-duration - Pulse duration. Defaults to `1.5s`.
18739
21629
  */
18740
21630
  "bs-skeleton": LocalJSX.IntrinsicElements["bs-skeleton"] & JSXBase.HTMLAttributes<HTMLBsSkeletonElement>;
21631
+ /**
21632
+ * A "skip to main content" link: invisible until it receives keyboard focus, then shown at the top
21633
+ * of the page. Activating it moves focus to the element its `href` points at, so keyboard and
21634
+ * screen-reader users can bypass repeated navigation (WCAG 2.4.1 Bypass Blocks).
21635
+ * Place it as the very first focusable element on the page. Renders a real `<a>`; the focus move is
21636
+ * done explicitly (the target gets a temporary `tabindex="-1"` when it is not natively focusable),
21637
+ * because a fragment navigation alone does not reliably move focus in every browser.
21638
+ * ## When to use
21639
+ * - Once per page, before the header/navigation, pointing at the `<main>` landmark.
21640
+ * - Additionally before large repeated blocks (e.g. a long sidebar) pointing past them.
21641
+ * ## When not to use
21642
+ * - As a general in-page link -- use a plain link or `bs-table-of-contents`.
21643
+ * - When the page has no repeated blocks before its main content.
21644
+ * Composition: a leaf element (a single anchor); no existing `bs-*` component renders a link.
21645
+ */
21646
+ "bs-skip-link": LocalJSX.IntrinsicElements["bs-skip-link"] & JSXBase.HTMLAttributes<HTMLBsSkipLinkElement>;
18741
21647
  /**
18742
21648
  * A slider for picking a single numeric value (`type="default"`), a value snapped to evenly
18743
21649
  * spaced ticks (`type="segmented"`), or a min/max pair (`type="range"`) from within a bounded
@@ -18863,6 +21769,20 @@ declare module "@stencil/core" {
18863
21769
  * @prop --bs-stack-gap - Space between items. Defaults from the `gap` prop (`--bs-spacing-<gap>`); may be overridden directly.
18864
21770
  */
18865
21771
  "bs-stack": LocalJSX.IntrinsicElements["bs-stack"] & JSXBase.HTMLAttributes<HTMLBsStackElement>;
21772
+ /**
21773
+ * A key figure: a label, a large value and an optional trend (up, down or flat) with a change figure.
21774
+ * ## When to use
21775
+ * - Dashboard KPIs and summary numbers ("Active users 1,284, up 12%").
21776
+ * ## When not to use
21777
+ * - A time series or comparison of many values -- use a chart.
21778
+ * - A progress toward a goal -- use `bs-progress` / `bs-progress-linear`.
21779
+ * - A count on another element -- use `bs-badge`.
21780
+ * **Built from:** `bs-card` (the surface).
21781
+ * The trend is never conveyed by colour or arrow alone: a visually hidden prefix ("Increase of") is
21782
+ * rendered before the change figure. Whether up is good depends on the metric, so the colour comes from
21783
+ * `trendIntent` (default: up is positive, down is negative; set `negative` for e.g. churn going up).
21784
+ */
21785
+ "bs-stat": LocalJSX.IntrinsicElements["bs-stat"] & JSXBase.HTMLAttributes<HTMLBsStatElement>;
18866
21786
  /**
18867
21787
  * A sequence of named steps showing overall progress through a multi-step flow (e.g. a checkout,
18868
21788
  * an onboarding wizard) -- each step reads as enabled (not yet reached), current, done, error, or
@@ -18934,6 +21854,28 @@ declare module "@stencil/core" {
18934
21854
  * `role="tabpanel"` on the corresponding content panels.
18935
21855
  */
18936
21856
  "bs-tab": LocalJSX.IntrinsicElements["bs-tab"] & JSXBase.HTMLAttributes<HTMLBsTabElement>;
21857
+ /**
21858
+ * An "On this page" navigation: a nested list of in-page links with a scroll spy that marks the
21859
+ * section currently in view (`aria-current="location"`), optionally sticky beside long content.
21860
+ * Give it entries in either of two ways:
21861
+ * - **`items` property** (a JS array, `{ label, href, children? }`) -- the data-driven way.
21862
+ * - **Slotted anchors** -- `<a href="#intro">Intro</a>`, optionally inside nested `<ul>`/`<li>` or with
21863
+ * `data-level="2"` for sub-sections. The component reads them and renders its own styled links (the
21864
+ * slotted markup is not displayed; it is the no-JavaScript fallback). Used when `items` is empty.
21865
+ * The scroll spy uses an `IntersectionObserver` on the elements the links point at. The current section
21866
+ * is the first one (in link order) that intersects the top band of the viewport defined by `rootMargin`;
21867
+ * when none does (between two sections) the previous one stays current. Observers are disconnected when
21868
+ * the element is removed from the DOM and re-created when it is re-attached.
21869
+ * Link targets are looked up by id in the same document (or shadow tree) as the component. Links whose
21870
+ * target does not exist are still shown but never become current.
21871
+ * ## When to use
21872
+ * - Long single-page content (documentation, policies, settings pages) with several headed sections.
21873
+ * ## When not to use
21874
+ * - Navigating between pages -- use `bs-navigation-drawer` or `bs-breadcrumbs`.
21875
+ * - Switching between panels of content that are not all on the page -- use `bs-tabs`.
21876
+ * Composition: leaf element (a nav landmark with anchors); no existing `bs-*` component renders links.
21877
+ */
21878
+ "bs-table-of-contents": LocalJSX.IntrinsicElements["bs-table-of-contents"] & JSXBase.HTMLAttributes<HTMLBsTableOfContentsElement>;
18937
21879
  /**
18938
21880
  * A tab-group wrapper: owns `role="tablist"` and coordinates selection across its slotted
18939
21881
  * `<bs-tab>` or `<bs-inline-tab>` children, so consumers no longer have to hand-roll this.
@@ -18952,6 +21894,33 @@ declare module "@stencil/core" {
18952
21894
  * directly.
18953
21895
  */
18954
21896
  "bs-tabs": LocalJSX.IntrinsicElements["bs-tabs"] & JSXBase.HTMLAttributes<HTMLBsTabsElement>;
21897
+ /**
21898
+ * A small label that categorises or annotates an item (a topic, a keyword, a status of a record). It can be
21899
+ * neutral or coloured, optionally removable, and optionally a link.
21900
+ * ## When to use
21901
+ * - Metadata on a record: topics, categories, keywords, owners.
21902
+ * - A removable tag in a list of applied values you edit one by one (`removable`).
21903
+ * - A tag that leads to a filtered view or detail page (`href`).
21904
+ * ## When not to use
21905
+ * - A pure count or notification marker -- use `bs-badge`.
21906
+ * - A read-only status pill with a leading icon -- use `bs-chip-informative`.
21907
+ * - Toggling a filter on and off -- use `bs-chip-filter`; entering free text values -- use `bs-chip-input`.
21908
+ * **Built from:** `bs-icon-button` (the remove control, `size="xs"`).
21909
+ */
21910
+ "bs-tag": LocalJSX.IntrinsicElements["bs-tag"] & JSXBase.HTMLAttributes<HTMLBsTagElement>;
21911
+ /**
21912
+ * Body and caption text mapped to the typography tokens, with the element (`as`) chosen separately
21913
+ * from the look (`variant`) and the colour (`tone`).
21914
+ * Variants: `lead` 18px, `body` 16px, `small` 14px, `caption` 12px (`--bs-font-size-*`,
21915
+ * `--bs-typography-font-family-body`).
21916
+ * Composed from: nothing (leaf).
21917
+ * ## When to use
21918
+ * - Paragraphs, helper copy, captions and inline spans that should follow the type scale and theme.
21919
+ * ## When not to use
21920
+ * - Headings: use `bs-heading` so the document outline is right.
21921
+ * - Code: use `bs-code-block`.
21922
+ */
21923
+ "bs-text": LocalJSX.IntrinsicElements["bs-text"] & JSXBase.HTMLAttributes<HTMLBsTextElement>;
18955
21924
  /**
18956
21925
  * An inline time picker: hour and minute spinners (up/down carets, or the arrow keys on the value),
18957
21926
  * an AM/PM dropdown in 12-hour mode, a 24h switch, and Cancel/Confirm buttons. Matches the Figma
@@ -18980,6 +21949,56 @@ declare module "@stencil/core" {
18980
21949
  * auto-dismiss timing at all (it's a static visual spec), so this deliberately doesn't invent one.
18981
21950
  */
18982
21951
  "bs-toast": LocalJSX.IntrinsicElements["bs-toast"] & JSXBase.HTMLAttributes<HTMLBsToastElement>;
21952
+ /**
21953
+ * A button that is either pressed or not. Standalone it is a toggle (`aria-pressed`); inside a
21954
+ * `bs-toggle-button-group` the group sets its `mode` (`toggle` for multiple choice, `radio` for
21955
+ * single choice, which switches the semantics to `role="radio"` + `aria-checked`).
21956
+ * Built from: hand-built `<button>` (the segment shape and pressed state differ from `bs-button`) plus
21957
+ * `bs-ripple`.
21958
+ * ## When to use
21959
+ * - A two-state option such as "Bold", or a segment of a `bs-toggle-button-group`.
21960
+ * ## When not to use
21961
+ * - Triggering an action (use `bs-button`) or an on/off setting that applies immediately (use `bs-switch`).
21962
+ */
21963
+ "bs-toggle-button": LocalJSX.IntrinsicElements["bs-toggle-button"] & JSXBase.HTMLAttributes<HTMLBsToggleButtonElement>;
21964
+ /**
21965
+ * A segmented control: a row of `bs-toggle-button` segments with single or multiple choice.
21966
+ * Single choice (default) uses radio semantics (`role="radiogroup"` / `role="radio"`) and arrow keys
21967
+ * move focus AND selection. Multiple choice (`multiple`) uses `role="group"` with `aria-pressed`
21968
+ * toggle buttons; arrow keys move focus only, Space/Enter toggles. Focus is roving in both modes
21969
+ * (one tab stop).
21970
+ * Built from: `bs-toggle-button`.
21971
+ * ## When to use
21972
+ * - 2-5 short, related options that should all stay visible (view mode, alignment, filters).
21973
+ * ## When not to use
21974
+ * - Long lists (use `bs-select`) or page-level navigation (use `bs-tabs`).
21975
+ */
21976
+ "bs-toggle-button-group": LocalJSX.IntrinsicElements["bs-toggle-button-group"] & JSXBase.HTMLAttributes<HTMLBsToggleButtonGroupElement>;
21977
+ /**
21978
+ * A bar of related controls (buttons, toggles, selects) with a left and a right group, grouped
21979
+ * separators, a single tab stop and arrow-key navigation between the controls (WAI-ARIA toolbar
21980
+ * pattern). Optionally, controls that do not fit collapse into a "more" menu.
21981
+ * Keyboard: the toolbar is ONE tab stop. Left/Right arrows (Up/Down when `orientation="vertical"`,
21982
+ * mirrored in RTL) move focus between the controls and wrap; Home/End jump to the first/last. The
21983
+ * control last focused is the one Tab returns to. Disabled controls are skipped.
21984
+ * Direct children of the `left`/`right` slots are the toolbar's controls. A slotted `bs-divider` is a
21985
+ * separator: the toolbar sets its `orientation` perpendicular to its own and skips it when navigating.
21986
+ * ## When to use
21987
+ * - Several related actions that act on the same content (a text editor's formatting row, a table's
21988
+ * bulk actions, a viewer's zoom controls).
21989
+ * ## When not to use
21990
+ * - Navigating between pages or sections -- use `bs-tabs`, `bs-navigation-header` or a nav.
21991
+ * - A single action or a form's submit row -- place the `bs-button`s directly.
21992
+ * - A menu of actions that opens on demand -- use `bs-popover` with `bs-menu`.
21993
+ * ## Overflow
21994
+ * With `overflow` set (horizontal only), controls from the end of the bar that do not fit are hidden and
21995
+ * listed in a `bs-menu` behind a "more" button; choosing an entry activates the original control. An
21996
+ * entry's text is the control's `data-label`, else its `aria-label`, else its text content, else `title`:
21997
+ * give icon-only controls one of these.
21998
+ * Composition: built from `bs-icon-button`, `bs-popover`, `bs-menu` and `bs-menu-item` (overflow) and
21999
+ * expects `bs-button`, `bs-icon-button`, `bs-divider` etc. as slotted content.
22000
+ */
22001
+ "bs-toolbar": LocalJSX.IntrinsicElements["bs-toolbar"] & JSXBase.HTMLAttributes<HTMLBsToolbarElement>;
18983
22002
  /**
18984
22003
  * A dark tooltip bubble with a pointer arrow, used to surface a short hint of extra information
18985
22004
  * next to a trigger element.