@brandsync/wc 0.0.12 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/custom-elements.json +4969 -3104
  2. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  3. package/dist/brandsync-wc/p-0ba35c3b.entry.js +1 -0
  4. package/dist/brandsync-wc/{p-72a33f88.entry.js → p-10f6f3cd.entry.js} +1 -1
  5. package/dist/brandsync-wc/{p-2c51d738.entry.js → p-16c960b5.entry.js} +1 -1
  6. package/dist/brandsync-wc/p-17a695af.entry.js +1 -0
  7. package/dist/brandsync-wc/{p-6e854e92.entry.js → p-196cfcf0.entry.js} +1 -1
  8. package/dist/brandsync-wc/p-1fcc9f47.entry.js +1 -0
  9. package/dist/brandsync-wc/p-27cce165.entry.js +1 -0
  10. package/dist/brandsync-wc/p-37365a51.entry.js +1 -0
  11. package/dist/brandsync-wc/{p-0eee5477.entry.js → p-38aad266.entry.js} +1 -1
  12. package/dist/brandsync-wc/p-3efb76dd.entry.js +1 -0
  13. package/dist/brandsync-wc/{p-1c6fa697.entry.js → p-43e37883.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-1900f6ce.entry.js → p-45016a37.entry.js} +1 -1
  15. package/dist/brandsync-wc/{p-8b662ee3.entry.js → p-48000949.entry.js} +1 -1
  16. package/dist/brandsync-wc/{p-ef8522b5.entry.js → p-4ec24ccb.entry.js} +1 -1
  17. package/dist/brandsync-wc/p-4f8459ae.entry.js +1 -0
  18. package/dist/brandsync-wc/{p-8049f9f2.entry.js → p-55a8d4b5.entry.js} +1 -1
  19. package/dist/brandsync-wc/p-59ac2495.entry.js +1 -0
  20. package/dist/brandsync-wc/p-5ae9e60e.entry.js +1 -0
  21. package/dist/brandsync-wc/p-613ff380.entry.js +1 -0
  22. package/dist/brandsync-wc/{p-57fdbb76.entry.js → p-63167373.entry.js} +1 -1
  23. package/dist/brandsync-wc/{p-20dbc6a1.entry.js → p-69c5bc2e.entry.js} +1 -1
  24. package/dist/brandsync-wc/{p-46ddc8e1.entry.js → p-6e95eb36.entry.js} +1 -1
  25. package/dist/brandsync-wc/p-752c04c8.entry.js +1 -0
  26. package/dist/brandsync-wc/p-7e544766.entry.js +1 -0
  27. package/dist/brandsync-wc/p-917a5bbc.entry.js +1 -0
  28. package/dist/brandsync-wc/{p-c320b6b4.entry.js → p-9bcd99aa.entry.js} +1 -1
  29. package/dist/brandsync-wc/{p-12ec9e92.entry.js → p-9f1e4a91.entry.js} +1 -1
  30. package/dist/brandsync-wc/{p-DST5-cTx.js → p-Do3l4of3.js} +2 -2
  31. package/dist/brandsync-wc/{p-0fa017ce.entry.js → p-aa43d478.entry.js} +1 -1
  32. package/dist/brandsync-wc/{p-dd09d335.entry.js → p-ab8de9b6.entry.js} +1 -1
  33. package/dist/brandsync-wc/p-b18e4845.entry.js +1 -0
  34. package/dist/brandsync-wc/{p-88a0abee.entry.js → p-b5cbe30b.entry.js} +1 -1
  35. package/dist/brandsync-wc/{p-3b31f7c7.entry.js → p-baa4e2e0.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-d4e3ca77.entry.js → p-c04cf1bb.entry.js} +1 -1
  37. package/dist/brandsync-wc/{p-a5b15061.entry.js → p-c3079ad7.entry.js} +1 -1
  38. package/dist/brandsync-wc/{p-23457a21.entry.js → p-c3c383dc.entry.js} +1 -1
  39. package/dist/brandsync-wc/p-c90f5a74.entry.js +1 -0
  40. package/dist/brandsync-wc/{p-b24a980b.entry.js → p-cc79e75f.entry.js} +1 -1
  41. package/dist/brandsync-wc/p-ce7fc368.entry.js +1 -0
  42. package/dist/brandsync-wc/{p-1adc59be.entry.js → p-d037b619.entry.js} +1 -1
  43. package/dist/brandsync-wc/{p-2a65aabb.entry.js → p-d22990c0.entry.js} +1 -1
  44. package/dist/brandsync-wc/{p-56c66448.entry.js → p-e231e4cf.entry.js} +1 -1
  45. package/dist/brandsync-wc/{p-64e2a7d7.entry.js → p-e2a37bda.entry.js} +1 -1
  46. package/dist/brandsync-wc/{p-aba300a9.entry.js → p-e3ce0c8c.entry.js} +1 -1
  47. package/dist/brandsync-wc/p-f0ae2740.entry.js +1 -0
  48. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  49. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +2 -2
  50. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  51. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  52. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  53. package/dist/cjs/bs-attachment.cjs.entry.js +1 -1
  54. package/dist/cjs/bs-avatar.cjs.entry.js +60 -0
  55. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  56. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +56 -0
  57. package/dist/cjs/bs-breadcrumb.cjs.entry.js +33 -0
  58. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +49 -0
  59. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  60. package/dist/cjs/bs-button.cjs.entry.js +2 -2
  61. package/dist/cjs/bs-card.cjs.entry.js +10 -3
  62. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
  63. package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
  64. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  65. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  66. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
  67. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +20 -0
  68. package/dist/cjs/bs-checkbox.cjs.entry.js +2 -2
  69. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +2 -2
  70. package/dist/cjs/bs-composer.cjs.entry.js +2 -2
  71. package/dist/cjs/bs-data-table.cjs.entry.js +3 -3
  72. package/dist/cjs/bs-dialog.cjs.entry.js +110 -0
  73. package/dist/cjs/bs-icon-button.cjs.entry.js +2 -2
  74. package/dist/cjs/bs-inline-tab.cjs.entry.js +2 -2
  75. package/dist/cjs/bs-input.cjs.entry.js +24 -12
  76. package/dist/cjs/bs-logo.cjs.entry.js +1 -1
  77. package/dist/cjs/{bs-menu_2.cjs.entry.js → bs-menu-item.cjs.entry.js} +2 -15
  78. package/dist/cjs/bs-menu.cjs.entry.js +17 -0
  79. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +3 -3
  80. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +8 -2
  81. package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
  82. package/dist/cjs/bs-pagination.cjs.entry.js +85 -0
  83. package/dist/cjs/bs-radio.cjs.entry.js +2 -2
  84. package/dist/cjs/bs-slider.cjs.entry.js +2 -2
  85. package/dist/cjs/bs-snackbar.cjs.entry.js +41 -0
  86. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  87. package/dist/cjs/bs-stepper-step.cjs.entry.js +44 -0
  88. package/dist/cjs/bs-stepper.cjs.entry.js +62 -0
  89. package/dist/cjs/bs-switch.cjs.entry.js +2 -2
  90. package/dist/cjs/bs-tab.cjs.entry.js +2 -2
  91. package/dist/cjs/bs-tabs.cjs.entry.js +2 -2
  92. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  93. package/dist/cjs/{index-B3sdhEGk.js → index-DHVw-IPK.js} +1 -0
  94. package/dist/cjs/loader.cjs.js +2 -2
  95. package/dist/collection/collection-manifest.json +10 -1
  96. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  97. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  98. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  99. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  100. package/dist/collection/components/bs-avatar/bs-avatar.cmp.test.js +54 -0
  101. package/dist/collection/components/bs-avatar/bs-avatar.css +197 -0
  102. package/dist/collection/components/bs-avatar/bs-avatar.js +251 -0
  103. package/dist/collection/components/bs-avatar/bs-avatar.stories.js +67 -0
  104. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.js +62 -0
  105. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.css +93 -0
  106. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +130 -0
  107. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.js +118 -0
  108. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.css +125 -0
  109. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +192 -0
  110. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.cmp.test.js +58 -0
  111. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.css +18 -0
  112. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +129 -0
  113. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.stories.js +84 -0
  114. package/dist/collection/components/bs-button/bs-button/bs-button.js +1 -1
  115. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +1 -1
  116. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  117. package/dist/collection/components/bs-card/bs-card.cmp.test.js +19 -0
  118. package/dist/collection/components/bs-card/bs-card.css +37 -5
  119. package/dist/collection/components/bs-card/bs-card.js +18 -2
  120. package/dist/collection/components/bs-card/bs-card.stories.js +17 -1
  121. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  122. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  123. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  124. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.css +1 -1
  125. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  126. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  127. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.cmp.test.js +23 -0
  128. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.css +64 -0
  129. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +81 -0
  130. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.stories.js +25 -0
  131. package/dist/collection/components/bs-checkbox/bs-checkbox.js +1 -1
  132. package/dist/collection/components/bs-checkbox/bs-checkbox.stories.js +12 -0
  133. package/dist/collection/components/bs-composer/bs-composer.js +1 -1
  134. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -1
  135. package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
  136. package/dist/collection/components/{bs-modal/bs-modal.cmp.test.js → bs-dialog/bs-dialog.cmp.test.js} +63 -19
  137. package/dist/collection/components/bs-dialog/bs-dialog.css +130 -0
  138. package/dist/collection/components/bs-dialog/bs-dialog.js +273 -0
  139. package/dist/collection/components/bs-dialog/bs-dialog.stories.js +115 -0
  140. package/dist/collection/components/bs-input/bs-input.cmp.test.js +20 -0
  141. package/dist/collection/components/bs-input/bs-input.css +80 -2
  142. package/dist/collection/components/bs-input/bs-input.js +28 -10
  143. package/dist/collection/components/bs-input/bs-input.stories.js +14 -11
  144. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  145. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  146. package/dist/collection/components/bs-pagination/bs-pagination.cmp.test.js +102 -0
  147. package/dist/collection/components/bs-pagination/bs-pagination.css +120 -0
  148. package/dist/collection/components/bs-pagination/bs-pagination.js +233 -0
  149. package/dist/collection/components/bs-pagination/bs-pagination.stories.js +43 -0
  150. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  151. package/dist/collection/components/bs-slider/bs-slider.js +1 -1
  152. package/dist/collection/components/bs-snackbar/bs-snackbar.cmp.test.js +77 -0
  153. package/dist/collection/components/bs-snackbar/bs-snackbar.css +321 -0
  154. package/dist/collection/components/bs-snackbar/bs-snackbar.js +172 -0
  155. package/dist/collection/components/bs-snackbar/bs-snackbar.stories.js +59 -0
  156. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  157. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.cmp.test.js +42 -0
  158. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.css +29 -0
  159. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +162 -0
  160. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.stories.js +59 -0
  161. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.cmp.test.js +73 -0
  162. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.css +258 -0
  163. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +231 -0
  164. package/dist/collection/components/bs-switch/bs-switch.js +1 -1
  165. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  166. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
  167. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +1 -1
  168. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  169. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +12 -0
  170. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +34 -6
  171. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.js +74 -2
  172. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.css +5 -5
  173. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  174. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +1 -1
  175. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.js +258 -1
  176. package/dist/components/bs-ai-disclaimer.js +1 -1
  177. package/dist/components/bs-ai-greeting.js +1 -1
  178. package/dist/components/bs-ai-thinking.js +1 -1
  179. package/dist/components/bs-attachment-list.js +1 -1
  180. package/dist/components/bs-attachment.js +1 -1
  181. package/dist/components/{bs-modal.d.ts → bs-avatar.d.ts} +4 -4
  182. package/dist/components/bs-avatar.js +1 -0
  183. package/dist/components/bs-badge.js +1 -1
  184. package/dist/components/bs-breadcrumb-overflow.d.ts +11 -0
  185. package/dist/components/bs-breadcrumb-overflow.js +1 -0
  186. package/dist/components/bs-breadcrumb.d.ts +11 -0
  187. package/dist/components/bs-breadcrumb.js +1 -0
  188. package/dist/components/bs-breadcrumbs.d.ts +11 -0
  189. package/dist/components/bs-breadcrumbs.js +1 -0
  190. package/dist/components/bs-button-skeleton.js +1 -1
  191. package/dist/components/bs-button.js +1 -1
  192. package/dist/components/bs-card.js +1 -1
  193. package/dist/components/bs-chatbot-feedback.js +1 -1
  194. package/dist/components/bs-chatbot-header.js +1 -1
  195. package/dist/components/bs-chatbot-response-action.js +1 -1
  196. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  197. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  198. package/dist/components/bs-checkbox-skeleton.d.ts +11 -0
  199. package/dist/components/bs-checkbox-skeleton.js +1 -0
  200. package/dist/components/bs-checkbox.js +1 -1
  201. package/dist/components/bs-composer-status-banner.js +1 -1
  202. package/dist/components/bs-composer.js +1 -1
  203. package/dist/components/bs-data-table.js +1 -1
  204. package/dist/components/bs-dialog.d.ts +11 -0
  205. package/dist/components/bs-dialog.js +1 -0
  206. package/dist/components/bs-icon-button.js +1 -1
  207. package/dist/components/bs-inline-tab.js +1 -1
  208. package/dist/components/bs-input.js +1 -1
  209. package/dist/components/bs-logo.js +1 -1
  210. package/dist/components/bs-menu-item.js +1 -1
  211. package/dist/components/bs-menu.js +1 -1
  212. package/dist/components/bs-navigation-drawer-item.js +1 -1
  213. package/dist/components/bs-navigation-drawer.js +1 -1
  214. package/dist/components/bs-navigation-header.js +1 -1
  215. package/dist/components/bs-pagination.d.ts +11 -0
  216. package/dist/components/bs-pagination.js +1 -0
  217. package/dist/components/bs-radio.js +1 -1
  218. package/dist/components/bs-slider.js +1 -1
  219. package/dist/components/bs-snackbar.d.ts +11 -0
  220. package/dist/components/bs-snackbar.js +1 -0
  221. package/dist/components/bs-source-link.js +1 -1
  222. package/dist/components/bs-stepper-step.d.ts +11 -0
  223. package/dist/components/bs-stepper-step.js +1 -0
  224. package/dist/components/bs-stepper.d.ts +11 -0
  225. package/dist/components/bs-stepper.js +1 -0
  226. package/dist/components/bs-switch.js +1 -1
  227. package/dist/components/bs-tab.js +1 -1
  228. package/dist/components/bs-tabs.js +1 -1
  229. package/dist/components/bs-tooltip.js +1 -1
  230. package/dist/components/index.js +1 -1
  231. package/dist/components/{p-BAOJc0V0.js → p-BFcVSpES.js} +1 -1
  232. package/dist/components/{p-Be1Pfcnm.js → p-BJZYe7M4.js} +1 -1
  233. package/dist/components/{p-CaWqTQBZ.js → p-BKaZWFE1.js} +1 -1
  234. package/dist/components/{p-DivZLd6i.js → p-Bs7nEbqK.js} +1 -1
  235. package/dist/components/{p-BqYyMGrB.js → p-CPSCOLIf.js} +1 -1
  236. package/dist/components/{p-xfx69LQx.js → p-CUa8zihb.js} +1 -1
  237. package/dist/esm/brandsync-wc.js +3 -3
  238. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  239. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  240. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  241. package/dist/esm/bs-attachment-list.entry.js +2 -2
  242. package/dist/esm/bs-attachment.entry.js +1 -1
  243. package/dist/esm/bs-avatar.entry.js +58 -0
  244. package/dist/esm/bs-badge.entry.js +1 -1
  245. package/dist/esm/bs-breadcrumb-overflow.entry.js +54 -0
  246. package/dist/esm/bs-breadcrumb.entry.js +31 -0
  247. package/dist/esm/bs-breadcrumbs.entry.js +47 -0
  248. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  249. package/dist/esm/bs-button.entry.js +2 -2
  250. package/dist/esm/bs-card.entry.js +10 -3
  251. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  252. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  253. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  254. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  255. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  256. package/dist/esm/bs-checkbox-skeleton.entry.js +18 -0
  257. package/dist/esm/bs-checkbox.entry.js +2 -2
  258. package/dist/esm/bs-composer-status-banner.entry.js +2 -2
  259. package/dist/esm/bs-composer.entry.js +2 -2
  260. package/dist/esm/bs-data-table.entry.js +3 -3
  261. package/dist/esm/bs-dialog.entry.js +108 -0
  262. package/dist/esm/bs-icon-button.entry.js +2 -2
  263. package/dist/esm/bs-inline-tab.entry.js +2 -2
  264. package/dist/esm/bs-input.entry.js +24 -12
  265. package/dist/esm/bs-logo.entry.js +1 -1
  266. package/dist/esm/{bs-menu_2.entry.js → bs-menu-item.entry.js} +3 -15
  267. package/dist/esm/bs-menu.entry.js +15 -0
  268. package/dist/esm/bs-navigation-drawer-item.entry.js +3 -3
  269. package/dist/esm/bs-navigation-drawer.entry.js +8 -2
  270. package/dist/esm/bs-navigation-header.entry.js +2 -2
  271. package/dist/esm/bs-pagination.entry.js +83 -0
  272. package/dist/esm/bs-radio.entry.js +2 -2
  273. package/dist/esm/bs-slider.entry.js +2 -2
  274. package/dist/esm/bs-snackbar.entry.js +39 -0
  275. package/dist/esm/bs-source-link.entry.js +3 -3
  276. package/dist/esm/bs-stepper-step.entry.js +42 -0
  277. package/dist/esm/bs-stepper.entry.js +60 -0
  278. package/dist/esm/bs-switch.entry.js +2 -2
  279. package/dist/esm/bs-tab.entry.js +2 -2
  280. package/dist/esm/bs-tabs.entry.js +2 -2
  281. package/dist/esm/bs-tooltip.entry.js +2 -2
  282. package/dist/esm/{index-DST5-cTx.js → index-Do3l4of3.js} +1 -1
  283. package/dist/esm/loader.js +3 -3
  284. package/dist/types/components/bs-avatar/bs-avatar.d.ts +67 -0
  285. package/dist/types/components/bs-avatar/bs-avatar.stories.d.ts +20 -0
  286. package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.d.ts +1 -0
  287. package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.d.ts +44 -0
  288. package/dist/types/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.d.ts +1 -0
  289. package/dist/types/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.d.ts +69 -0
  290. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.cmp.test.d.ts +1 -0
  291. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.d.ts +45 -0
  292. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.stories.d.ts +14 -0
  293. package/dist/types/components/bs-card/bs-card.d.ts +10 -1
  294. package/dist/types/components/bs-card/bs-card.stories.d.ts +1 -0
  295. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.cmp.test.d.ts +1 -0
  296. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.d.ts +36 -0
  297. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.stories.d.ts +10 -0
  298. package/dist/types/components/bs-checkbox/bs-checkbox.stories.d.ts +1 -0
  299. package/dist/types/components/bs-dialog/bs-dialog.cmp.test.d.ts +1 -0
  300. package/dist/types/components/bs-dialog/bs-dialog.d.ts +74 -0
  301. package/dist/types/components/{bs-modal/bs-modal.stories.d.ts → bs-dialog/bs-dialog.stories.d.ts} +5 -3
  302. package/dist/types/components/bs-input/bs-input.d.ts +8 -1
  303. package/dist/types/components/bs-pagination/bs-pagination.cmp.test.d.ts +1 -0
  304. package/dist/types/components/bs-pagination/bs-pagination.d.ts +51 -0
  305. package/dist/types/components/bs-pagination/bs-pagination.stories.d.ts +14 -0
  306. package/dist/types/components/bs-snackbar/bs-snackbar.cmp.test.d.ts +1 -0
  307. package/dist/types/components/bs-snackbar/bs-snackbar.d.ts +51 -0
  308. package/dist/types/components/bs-snackbar/bs-snackbar.stories.d.ts +16 -0
  309. package/dist/types/components/bs-stepper/bs-stepper/bs-stepper.cmp.test.d.ts +1 -0
  310. package/dist/types/components/bs-stepper/bs-stepper/bs-stepper.d.ts +48 -0
  311. package/dist/types/components/bs-stepper/bs-stepper/bs-stepper.stories.d.ts +14 -0
  312. package/dist/types/components/bs-stepper/bs-stepper-step/bs-stepper-step.cmp.test.d.ts +1 -0
  313. package/dist/types/components/bs-stepper/bs-stepper-step/bs-stepper-step.d.ts +55 -0
  314. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.d.ts +13 -5
  315. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.d.ts +3 -0
  316. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.d.ts +4 -0
  317. package/dist/types/components.d.ts +1431 -128
  318. package/package.json +1 -1
  319. package/dist/brandsync-wc/p-09aa03d1.entry.js +0 -1
  320. package/dist/brandsync-wc/p-1cf715aa.entry.js +0 -1
  321. package/dist/brandsync-wc/p-266f5dde.entry.js +0 -1
  322. package/dist/brandsync-wc/p-8ded1eb6.entry.js +0 -1
  323. package/dist/brandsync-wc/p-b289450a.entry.js +0 -1
  324. package/dist/brandsync-wc/p-b8a2f882.entry.js +0 -1
  325. package/dist/brandsync-wc/p-f04db1b0.entry.js +0 -1
  326. package/dist/cjs/bs-modal.cjs.entry.js +0 -69
  327. package/dist/collection/components/bs-modal/bs-modal.css +0 -66
  328. package/dist/collection/components/bs-modal/bs-modal.js +0 -198
  329. package/dist/collection/components/bs-modal/bs-modal.stories.js +0 -38
  330. package/dist/components/bs-modal.js +0 -1
  331. package/dist/esm/bs-modal.entry.js +0 -67
  332. package/dist/types/components/bs-modal/bs-modal.d.ts +0 -45
  333. /package/dist/types/components/{bs-modal/bs-modal.cmp.test.d.ts → bs-avatar/bs-avatar.cmp.test.d.ts} +0 -0
@@ -6,36 +6,52 @@
6
6
  */
7
7
  import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
8
  import { BsAttachmentType } from "./components/bs-attachment/bs-attachment";
9
+ import { BsAvatarSize, BsAvatarType } from "./components/bs-avatar/bs-avatar";
9
10
  import { BsBadgeVariant } from "./components/bs-badge/bs-badge";
11
+ import { BsBreadcrumbSize } from "./components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb";
12
+ import { BsBreadcrumbOverflowItem } from "./components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow";
13
+ import { BsBreadcrumbSize as BsBreadcrumbSize1 } from "./components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb";
10
14
  import { BsButtonSize, BsButtonVariant } from "./components/bs-button/bs-button/bs-button";
11
15
  import { BsButtonSize as BsButtonSize1 } from "./components/bs-button/bs-button/bs-button";
12
16
  import { BsCardSurface } from "./components/bs-card/bs-card";
13
17
  import { BsCheckboxSize } from "./components/bs-checkbox/bs-checkbox";
18
+ import { BsCheckboxSize as BsCheckboxSize1 } from "./components/bs-checkbox/bs-checkbox";
14
19
  import { BsComposerState, BsComposerVariant } from "./components/bs-composer/bs-composer";
15
20
  import { BsComposerStatusBannerType } from "./components/bs-composer-status-banner/bs-composer-status-banner";
16
21
  import { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs-data-table";
22
+ import { BsDialogSize } from "./components/bs-dialog/bs-dialog";
17
23
  import { BsIconButtonSize, BsIconButtonVariant } from "./components/bs-button/bs-icon-button/bs-icon-button";
18
24
  import { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
19
- import { BsModalSize } from "./components/bs-modal/bs-modal";
20
25
  import { BsNavigationHeaderAlignment } from "./components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header";
21
26
  import { BsSliderType } from "./components/bs-slider/bs-slider";
27
+ import { BsSnackbarVariant } from "./components/bs-snackbar/bs-snackbar";
28
+ import { BsStepperDirection } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
29
+ import { BsStepperDirection as BsStepperDirection1, BsStepperStepComputedState } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
22
30
  import { BsSwitchSize } from "./components/bs-switch/bs-switch";
23
31
  import { BsTabIconPosition } from "./components/bs-tab/bs-tab/bs-tab";
24
32
  import { BsTabsOrientation, BsTabsType } from "./components/bs-tab/bs-tabs/bs-tabs";
25
33
  export { BsAttachmentType } from "./components/bs-attachment/bs-attachment";
34
+ export { BsAvatarSize, BsAvatarType } from "./components/bs-avatar/bs-avatar";
26
35
  export { BsBadgeVariant } from "./components/bs-badge/bs-badge";
36
+ export { BsBreadcrumbSize } from "./components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb";
37
+ export { BsBreadcrumbOverflowItem } from "./components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow";
38
+ export { BsBreadcrumbSize as BsBreadcrumbSize1 } from "./components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb";
27
39
  export { BsButtonSize, BsButtonVariant } from "./components/bs-button/bs-button/bs-button";
28
40
  export { BsButtonSize as BsButtonSize1 } from "./components/bs-button/bs-button/bs-button";
29
41
  export { BsCardSurface } from "./components/bs-card/bs-card";
30
42
  export { BsCheckboxSize } from "./components/bs-checkbox/bs-checkbox";
43
+ export { BsCheckboxSize as BsCheckboxSize1 } from "./components/bs-checkbox/bs-checkbox";
31
44
  export { BsComposerState, BsComposerVariant } from "./components/bs-composer/bs-composer";
32
45
  export { BsComposerStatusBannerType } from "./components/bs-composer-status-banner/bs-composer-status-banner";
33
46
  export { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs-data-table";
47
+ export { BsDialogSize } from "./components/bs-dialog/bs-dialog";
34
48
  export { BsIconButtonSize, BsIconButtonVariant } from "./components/bs-button/bs-icon-button/bs-icon-button";
35
49
  export { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
36
- export { BsModalSize } from "./components/bs-modal/bs-modal";
37
50
  export { BsNavigationHeaderAlignment } from "./components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header";
38
51
  export { BsSliderType } from "./components/bs-slider/bs-slider";
52
+ export { BsSnackbarVariant } from "./components/bs-snackbar/bs-snackbar";
53
+ export { BsStepperDirection } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
54
+ export { BsStepperDirection as BsStepperDirection1, BsStepperStepComputedState } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
39
55
  export { BsSwitchSize } from "./components/bs-switch/bs-switch";
40
56
  export { BsTabIconPosition } from "./components/bs-tab/bs-tab/bs-tab";
41
57
  export { BsTabsOrientation, BsTabsType } from "./components/bs-tab/bs-tabs/bs-tabs";
@@ -206,6 +222,62 @@ export namespace Components {
206
222
  */
207
223
  "ariaLabel": string | null;
208
224
  }
225
+ /**
226
+ * A circular representation of a person or entity -- a photo, initials, or (as a fallback when
227
+ * neither is available) a generic user-silhouette icon.
228
+ * ## When to use
229
+ * - Representing a specific user or account: in a header, a comment, a member list, etc.
230
+ * - `type="initials"` when a photo isn't available but a name is (e.g. "Sam Lee" -> "SL").
231
+ * - `type="icon"` (the default) as the generic fallback when neither a photo nor a name/initials
232
+ * is available yet.
233
+ * ## When not to use
234
+ * - A company/brand logo -- use `bs-logo` instead.
235
+ * This component is decorative/informational by default, not an interactive control -- it renders
236
+ * a plain `<span>`/`<img>`, not a `<button>`. Figma's own component set includes hover/focused/
237
+ * pressed states (e.g. for an account-switcher trigger use case), which this implements as real
238
+ * `:hover`/`:focus-visible`/`:active` CSS on the host itself -- so wrapping this in your own
239
+ * `<button>`, or setting `tabindex` and a click handler on the `<bs-avatar>` element directly, gets
240
+ * the matching visual treatment for free with no extra wiring. Left genuinely non-interactive
241
+ * (no implicit role/tabindex of its own) so it doesn't misrepresent a purely decorative avatar
242
+ * (e.g. next to a comment) as a control when it isn't one.
243
+ */
244
+ interface BsAvatar {
245
+ /**
246
+ * `type="image"` only: accessible alt text for the photo, set directly on the real `<img>` this renders -- a person's photo is meaningful content, not decorative, so pass something real (e.g. their name). Falls back to `alt=""` (decorative to assistive tech) when unset, rather than omitting the attribute entirely, but don't rely on that fallback. Ignored for `icon`/`initials` -- see `ariaLabel` for those instead.
247
+ * @default null
248
+ */
249
+ "alt": string | null;
250
+ /**
251
+ * `type="icon"`/`"initials"` only: accessible name for the avatar, set as `aria-label` on the `role="img"` wrapper this renders (neither is a real `<img>`, so there's no native `alt` to set). Setting a plain `aria-label` attribute on the `<bs-avatar>` host does NOT work for this -- that attribute stays on the light-DOM host and never crosses into the shadow DOM, so the actual `role="img"` element stays nameless. Same pattern as `bs-checkbox`'s identical `ariaLabel` prop. Ignored for `image` -- see `alt` for that instead.
252
+ * @default null
253
+ */
254
+ "ariaLabel": string | null;
255
+ /**
256
+ * Applies the disabled treatment (50% opacity) and suppresses the hover/focus/pressed CSS states -- this doesn't set a native `disabled` attribute (this component renders no native form control), it's purely a visual/interaction-state flag for when a consuming app has wrapped this in its own disabled control. Reflected so the `:host([disabled])` CSS selector that drives all of the above still matches when a consumer sets the JS property directly (`el.disabled = true`) rather than the HTML attribute.
257
+ * @default false
258
+ */
259
+ "disabled": boolean;
260
+ /**
261
+ * `type="initials"` only: the initials text to display (e.g. `"SL"` for "Sam Lee"). Ignored for `icon`/`image`.
262
+ * @default null
263
+ */
264
+ "initials": string | null;
265
+ /**
266
+ * Sizing scale -- `xs` (24px) through `xxl` (128px), matching Figma's own six-step scale.
267
+ * @default 'md'
268
+ */
269
+ "size": BsAvatarSize;
270
+ /**
271
+ * `type="image"` only: the photo URL. This component does not fetch it itself -- network calls, loading/error states, and caching are the consuming app's responsibility, same convention as `bs-logo`'s own `src` prop. Ignored for `icon`/`initials`.
272
+ * @default null
273
+ */
274
+ "src": string | null;
275
+ /**
276
+ * What to render inside the circle. `icon` (default) is the generic fallback for when neither a photo nor initials are available yet.
277
+ * @default 'icon'
278
+ */
279
+ "type": BsAvatarType;
280
+ }
209
281
  /**
210
282
  * A small status or category pill, usually paired with a label or list item.
211
283
  * ## When to use
@@ -222,6 +294,109 @@ export namespace Components {
222
294
  */
223
295
  "variant": BsBadgeVariant;
224
296
  }
297
+ /**
298
+ * A single crumb within a `<bs-breadcrumbs>` trail: a leading separator icon plus either a link,
299
+ * plain text, or the current-page label, depending on `current`/`href`.
300
+ * Rendering follows the W3C ARIA Authoring Practices breadcrumb pattern
301
+ * (https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/): the current page is marked
302
+ * `aria-current="page"` and is never a link -- this holds even when `href` is also set, unlike
303
+ * Carbon Design System's `cds-breadcrumb-item`, which allows a link on the current item.
304
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
305
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
306
+ * accessibility tree needs this explicit role to preserve the list's semantics.
307
+ * ## When to use
308
+ * - As one crumb inside a `<bs-breadcrumbs>` trail.
309
+ * ## When not to use
310
+ * - Standalone, outside a `<bs-breadcrumbs>` wrapper -- its `<ol>`/`<nav>` context and
311
+ * first-child-aware separator hiding depend on that parent structure.
312
+ */
313
+ interface BsBreadcrumb {
314
+ /**
315
+ * Whether this crumb is the current page. Renders as plain (non-link) text marked `aria-current="page"`, reflected as an attribute so consumers/CSS can target `bs-breadcrumb[current]`.
316
+ * @default false
317
+ */
318
+ "current": boolean;
319
+ /**
320
+ * Destination for a non-current crumb. Ignored when `current` is true -- the current page is never a link, even if `href` is set (see the class JSDoc).
321
+ */
322
+ "href"?: string;
323
+ /**
324
+ * Size variant. Normally set automatically by a parent `<bs-breadcrumbs size="...">` -- the container propagates its own `size` as a JS property to every slotted `bs-breadcrumb`/ `bs-breadcrumb-overflow` child (see `bs-breadcrumbs.tsx`'s `propagateSize`), since CSS custom properties can't carry an enum that switches rules on their own. Can also be set directly on a standalone crumb. `sm` scales down font-size/line-height only -- the separator icon's pixel size is unchanged, since Figma didn't specify a `sm` icon size and guessing one risked drifting off-brand. Reflected so consumers/CSS can target `bs-breadcrumb[size="sm"]`.
325
+ * @default 'md'
326
+ */
327
+ "size": BsBreadcrumbSize;
328
+ }
329
+ /**
330
+ * A manually-placed collapsed-items disclosure for a `<bs-breadcrumbs>` trail: a leading separator
331
+ * plus an icon-only ellipsis button that reveals a `bs-menu` popup listing every hidden crumb.
332
+ * `items` is JS-property-only -- must be set as a JS property (`el.items = [...]`), not an HTML
333
+ * attribute, since attributes can only carry strings. See CONVENTIONS.md.
334
+ * Unlike an earlier `bs-breadcrumbs`-owned automatic `maxItems` collapse, this component does no
335
+ * collapsing logic itself -- the consumer decides which crumbs to hide and places this element
336
+ * wherever they want the disclosure, exactly matching Carbon Design System's own approach (Carbon
337
+ * doesn't auto-collapse breadcrumbs either; a consumer there manually decides what's visible).
338
+ * Hidden items with an `href` render as real `<a href>` rows inside the popup, not `bs-menu-item`
339
+ * (which renders a `<button>`) -- this matters because consuming apps commonly use client-side
340
+ * routers that intercept clicks on real `<a>` tags to do `preventDefault` + push-state navigation.
341
+ * Rendering hidden links any other way (e.g. `window.location`) would silently break client-side
342
+ * routing for hidden crumbs while working fine for visible ones. Hidden items without an `href`
343
+ * render as plain non-interactive text, matching how `bs-breadcrumb` itself handles link vs.
344
+ * no-link crumbs.
345
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
346
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
347
+ * accessibility tree needs this explicit role to preserve the list's semantics.
348
+ * ## When to use
349
+ * - Inside a `<bs-breadcrumbs>` trail, wherever the consumer wants an interactive disclosure for
350
+ * crumbs they've chosen not to render directly.
351
+ * ## When not to use
352
+ * - As an automatic collapsing mechanism -- there is none; the consumer decides what's hidden.
353
+ */
354
+ interface BsBreadcrumbOverflow {
355
+ /**
356
+ * Array prop -- must be set as a JS property (`el.items = [...]`), not an HTML attribute, since attributes can only carry strings. See CONVENTIONS.md. The hidden crumbs reachable via this disclosure -- no collapsing logic here, the consumer decides what goes in this list.
357
+ * @default []
358
+ */
359
+ "items": BsBreadcrumbOverflowItem[];
360
+ /**
361
+ * Accessible name (`aria-label`) for the icon-only ellipsis trigger button.
362
+ * @default 'Show hidden breadcrumbs'
363
+ */
364
+ "overflowLabel": string;
365
+ /**
366
+ * Size variant. Normally set automatically by a parent `<bs-breadcrumbs size="...">` -- see `bs-breadcrumb`'s identical `size` prop doc comment for why this is propagated as a JS property rather than inherited via CSS. Scales the popup rows' font-size/line-height only; the separator/ellipsis icons' pixel sizes are unchanged. Reflected so consumers/CSS can target `bs-breadcrumb-overflow[size="sm"]`.
367
+ * @default 'md'
368
+ */
369
+ "size": BsBreadcrumbSize1;
370
+ }
371
+ /**
372
+ * A breadcrumb trail container: a real `<nav>` landmark wrapping an `<ol>`, meant to be populated
373
+ * with slotted `<bs-breadcrumb>` (and, where the consumer wants a collapsed-items disclosure,
374
+ * `<bs-breadcrumb-overflow>`) children -- same composition-over-configuration architecture as
375
+ * Carbon Design System's `cds-breadcrumb`/`cds-breadcrumb-item`/`cds-breadcrumb-link`.
376
+ * This component is intentionally thin: it owns only the `<nav>` landmark and list semantics.
377
+ * Unlike an earlier `items`-array-driven design, there is no automatic collapsing here -- exactly
378
+ * like Carbon, the consumer decides what's visible and manually places a `<bs-breadcrumb-overflow>`
379
+ * wherever they want a collapsed-items disclosure. See `bs-breadcrumbs.mdx` for the consolidated
380
+ * docs covering all three components in this feature area.
381
+ * ## When to use
382
+ * - Showing a user's current location within a hierarchical page structure, with a path back to
383
+ * its ancestors.
384
+ * ## When not to use
385
+ * - Primary in-app navigation -- use `bs-navigation-drawer`/`bs-navigation-header` instead.
386
+ * - A flat set of unrelated pages with no hierarchy -- breadcrumbs imply ancestry, not just history.
387
+ */
388
+ interface BsBreadcrumbs {
389
+ /**
390
+ * Accessible name for the `<nav>` landmark, via `aria-label`. Same pattern as `bs-navigation-drawer`'s `heading` prop.
391
+ * @default 'Breadcrumb'
392
+ */
393
+ "label": string;
394
+ /**
395
+ * 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).
396
+ * @default 'md'
397
+ */
398
+ "size": BsBreadcrumbSize1;
399
+ }
225
400
  /**
226
401
  * A clickable action element for the single most important action in a given context.
227
402
  * ## When to use
@@ -574,6 +749,36 @@ export namespace Components {
574
749
  */
575
750
  "size": BsCheckboxSize;
576
751
  }
752
+ /**
753
+ * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
754
+ * known yet (e.g. still being fetched from an API). Renders a small square (matching the
755
+ * checkbox's own box) beside a text-bar placeholder (standing in for the label), both pulsing
756
+ * together, sized to match `bs-checkbox`'s `sm`/`md`/`lg` box dimensions so layout doesn't shift
757
+ * once the real checkbox renders.
758
+ * ## When to use
759
+ * - In place of a `bs-checkbox` whose label/checked state depends on data that hasn't loaded yet.
760
+ * ## When not to use
761
+ * - While a checkbox's own change handler is running (e.g. a save request in flight) -- render the
762
+ * real `bs-checkbox` itself; this component is not a saving-in-progress spinner.
763
+ * @prop --bs-checkbox-skeleton-size-sm - Box width/height at `size="sm"`. Aliased to
764
+ * `--bs-spacing-200`, mirroring `bs-checkbox`'s own `--bs-checkbox-size-sm` -- not read directly
765
+ * from it, since these are two separate shadow roots.
766
+ * @prop --bs-checkbox-skeleton-size-md - Box width/height at `size="md"`. Aliased to
767
+ * `--bs-spacing-250`.
768
+ * @prop --bs-checkbox-skeleton-size-lg - Box width/height at `size="lg"`. Aliased to
769
+ * `--bs-spacing-300`.
770
+ * @prop --bs-checkbox-skeleton-gap - Gap between the box and label placeholders. Aliased to
771
+ * `--bs-spacing-100`, mirroring `bs-checkbox`'s own `--bs-checkbox-gap`.
772
+ * @prop --bs-checkbox-skeleton-label-width - Width of the label placeholder bar. Defaults to
773
+ * `96px`.
774
+ */
775
+ interface BsCheckboxSkeleton {
776
+ /**
777
+ * Sizing scale, matching the `bs-checkbox` size it stands in for. Defaults to `lg`, the same (unusual) default `bs-checkbox` itself uses.
778
+ * @default 'lg'
779
+ */
780
+ "size": BsCheckboxSize1;
781
+ }
577
782
  /**
578
783
  * A chat composer input for Genie AI-style conversational interfaces: a text field
579
784
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -764,6 +969,40 @@ export namespace Components {
764
969
  */
765
970
  "sortDirection": 'asc' | 'desc';
766
971
  }
972
+ /**
973
+ * An overlay dialog that interrupts the current flow for a focused task or confirmation.
974
+ * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
975
+ * ## When to use
976
+ * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
977
+ * - A short, focused task that doesn't warrant navigating to a new page.
978
+ * ## When not to use
979
+ * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
980
+ * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
981
+ * dialog that just gets taller and taller.
982
+ * Two additional slots cover the Figma "Dialog" component's other states: `image` (a hero image
983
+ * across the top, close button floats over it instead of sitting in the header row) and `icon`
984
+ * (only rendered when `centered` is set, e.g. a success checkmark above a centered heading). The
985
+ * close button "floats" (absolute-positioned, top-right of the dialog, with its own background)
986
+ * whenever `centered` is true or the `image` slot has content -- otherwise it's the plain inline
987
+ * button in the header row next to the heading, same as before this addition.
988
+ */
989
+ interface BsDialog {
990
+ /**
991
+ * Switches to the Figma "Icon Centered" layout: heading/body text centered, the `icon` slot rendered above the heading, and the close button floating top-right of the dialog instead of inline in the header row. Doesn't hide a slotted `image` if one is also provided -- Figma's spec doesn't show the two combined, so this is unspecified rather than actively blocked. Reflected so consumers/CSS can target `bs-dialog[centered]`.
992
+ * @default false
993
+ */
994
+ "centered": boolean;
995
+ "heading"?: string;
996
+ /**
997
+ * Mutable + reflected so the component can close itself (backdrop click, Escape, close button) the same way a native `<dialog>` does, while still emitting `bsClose` for the consumer to react to.
998
+ * @default false
999
+ */
1000
+ "open": boolean;
1001
+ /**
1002
+ * @default 'md'
1003
+ */
1004
+ "size": BsDialogSize;
1005
+ }
767
1006
  /**
768
1007
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
769
1008
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -1050,36 +1289,14 @@ export namespace Components {
1050
1289
  */
1051
1290
  "disabled": boolean;
1052
1291
  }
1053
- /**
1054
- * An overlay dialog that interrupts the current flow for a focused task or confirmation.
1055
- * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
1056
- * ## When to use
1057
- * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
1058
- * - A short, focused task that doesn't warrant navigating to a new page.
1059
- * ## When not to use
1060
- * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
1061
- * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
1062
- * modal that just gets taller and taller.
1063
- */
1064
- interface BsModal {
1065
- "heading"?: string;
1066
- /**
1067
- * Mutable + reflected so the component can close itself (backdrop click, Escape, close button) the same way a native `<dialog>` does, while still emitting `bsClose` for the consumer to react to.
1068
- * @default false
1069
- */
1070
- "open": boolean;
1071
- /**
1072
- * @default 'md'
1073
- */
1074
- "size": BsModalSize;
1075
- }
1076
1292
  /**
1077
1293
  * A left-side persistent navigation sidebar: the BrandSync logo, a "Main Menu" title with a
1078
1294
  * collapse toggle, a reserved slot for a search field, and a scrollable list of nav items.
1079
1295
  * ## When to use
1080
1296
  * - The primary in-app navigation, shown alongside `bs-navigation-header` (typically that
1081
1297
  * header's `with-navigation-drawer` alignment, which omits its own logo since this component
1082
- * already renders one).
1298
+ * already renders one -- or the reverse pairing, this drawer's own `showLogo={false}` alongside
1299
+ * a header that keeps its logo instead, see that prop's own docs).
1083
1300
  * ## When not to use
1084
1301
  * - The top navigation bar itself -- use `bs-navigation-header` instead.
1085
1302
  * This component renders a real `<nav>` landmark (no explicit `role` needed -- `<nav>` already
@@ -1127,6 +1344,11 @@ export namespace Components {
1127
1344
  * @default 'auto'
1128
1345
  */
1129
1346
  "logoBackground": 'auto' | 'light' | 'dark';
1347
+ /**
1348
+ * Whether to render the BrandSync logo at all. Defaults to `true`. This drawer is normally the one that owns the logo when paired with a `bs-navigation-header` (that header's own `with-navigation-drawer` alignment omits its logo for exactly this reason) -- but the reverse pairing works too: a header that keeps its own logo (`alignment="default"`) paired with this drawer set to `showLogo={false}`, so the brand mark only ever appears once.
1349
+ * @default true
1350
+ */
1351
+ "showLogo": boolean;
1130
1352
  }
1131
1353
  /**
1132
1354
  * A single row within a `bs-navigation-drawer`'s item list -- either a plain leaf nav item, or an
@@ -1233,6 +1455,48 @@ export namespace Components {
1233
1455
  */
1234
1456
  "skipToContentLabel": string;
1235
1457
  }
1458
+ /**
1459
+ * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
1460
+ * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
1461
+ * numbered pagination); its other type ("jumper" -- a rows-per-page dropdown plus a page-jump
1462
+ * input) is a structurally different composite widget and isn't covered by this component.
1463
+ * `totalPages`/`currentPage` drive everything -- this computes which page numbers to show and
1464
+ * where to collapse into `...` itself, the consumer never builds the button list by hand.
1465
+ * ## When to use
1466
+ * - Paging through a large, ordered result set (a table, a search results list) where jumping
1467
+ * directly to a specific page number is useful.
1468
+ * ## When not to use
1469
+ * - Infinite-scroll or "load more" patterns -- those don't have a fixed, addressable page number.
1470
+ * - A huge page count where users realistically only ever go forward/back one page at a time --
1471
+ * plain prev/next controls (no numbers) are simpler there.
1472
+ */
1473
+ interface BsPagination {
1474
+ /**
1475
+ * The active page (1-indexed). Mutable + reflected so clicking a page button updates it directly, the same way `bs-modal`'s `open` self-manages, while `bsPageChange` still fires for the consumer to react to (e.g. fetching that page's data).
1476
+ * @default 1
1477
+ */
1478
+ "currentPage": number;
1479
+ /**
1480
+ * Accessible name for the next-page button.
1481
+ * @default 'Next page'
1482
+ */
1483
+ "nextLabel": string;
1484
+ /**
1485
+ * Accessible name for the previous-page button.
1486
+ * @default 'Previous page'
1487
+ */
1488
+ "previousLabel": string;
1489
+ /**
1490
+ * How many page numbers to show on each side of the current page before collapsing the rest into `...`. `1` (the default) reproduces the Figma spec's example exactly (page 1 of 12 shows `1 2 3 ... 12`).
1491
+ * @default 1
1492
+ */
1493
+ "siblingCount": number;
1494
+ /**
1495
+ * Total number of pages. Must be a positive integer -- there's always at least one page.
1496
+ * @default 1
1497
+ */
1498
+ "totalPages": number;
1499
+ }
1236
1500
  /**
1237
1501
  * A single radio button with its label, for one mutually-exclusive choice within a group.
1238
1502
  * ## When to use
@@ -1338,6 +1602,41 @@ export namespace Components {
1338
1602
  */
1339
1603
  "valueStart"?: number;
1340
1604
  }
1605
+ /**
1606
+ * A transient status bar for confirming the result of an action (e.g. "Files uploaded
1607
+ * successfully.") -- an icon (or loading spinner), a message, an optional action, and a close
1608
+ * button.
1609
+ * This component only renders the bar itself -- it doesn't manage its own visibility, timing, or
1610
+ * stacking. A consumer (typically a small "toast manager" utility) creates one per message and
1611
+ * removes it from the DOM again, whether on a timer or on `bsDismiss`. Figma's spec doesn't show
1612
+ * auto-dismiss timing at all (it's a static visual spec), so this deliberately doesn't invent one.
1613
+ * The icon is always the same checkmark glyph across every `variant`, just recolored -- matching
1614
+ * the Figma spec exactly, even though a checkmark for `variant="error"` reads a little oddly
1615
+ * semantically. Worth revisiting with severity-specific icons (warning triangle, error circle,
1616
+ * etc.) if the design updates to specify them.
1617
+ * ## When to use
1618
+ * - Confirming the outcome of an action that just happened (save succeeded, upload failed) without
1619
+ * interrupting the user's flow.
1620
+ * ## When not to use
1621
+ * - For a response that requires the user to make a decision before continuing -- use `bs-dialog`.
1622
+ * - For persistent, always-visible status -- a snackbar is inherently transient.
1623
+ */
1624
+ interface BsSnackbar {
1625
+ /**
1626
+ * Label for the optional action button (e.g. "Undo", "Retry"). Omit this prop entirely to render no action button at all -- its presence, not a boolean flag, is what shows it.
1627
+ */
1628
+ "actionLabel"?: string;
1629
+ /**
1630
+ * Replaces the checkmark icon with a spinning loading indicator, for a message describing in-progress work (e.g. "Uploading files...") rather than a completed result.
1631
+ * @default false
1632
+ */
1633
+ "loading": boolean;
1634
+ /**
1635
+ * Color/semantic variant. `default` is the neutral (dark, inverse-surface) bar Figma shows as the baseline; `info`/`warning`/`success`/`error` use their matching container/text tokens.
1636
+ * @default 'default'
1637
+ */
1638
+ "variant": BsSnackbarVariant;
1639
+ }
1341
1640
  /**
1342
1641
  * A single citation row inside `bs-chatbot-sources-drawer` -- a file icon + filename on the first
1343
1642
  * line, the originating system and version on the second, and a trailing "open" arrow.
@@ -1387,6 +1686,98 @@ export namespace Components {
1387
1686
  */
1388
1687
  "version"?: string;
1389
1688
  }
1689
+ /**
1690
+ * A sequence of named steps showing overall progress through a multi-step flow (e.g. a checkout,
1691
+ * an onboarding wizard) -- each step reads as enabled (not yet reached), current, done, error, or
1692
+ * disabled, connected by a rail between them.
1693
+ * This container is intentionally thin: it renders a `<slot>` for `<bs-stepper-step>` children and
1694
+ * propagates `currentStep`/`direction`/`showDescription` down to them as JS properties whenever any
1695
+ * of those change or the slotted children themselves change -- the same "container pushes state
1696
+ * onto its slotted children" pattern `bs-tabs` uses for `selected` and `bs-breadcrumbs` uses for
1697
+ * `size`. Each step computes its own `enabled`/`current`/`done` state from its position among its
1698
+ * siblings relative to `currentStep`, unless that step's own `error`/`disabled` prop overrides it.
1699
+ * This is a static status display, not an interactive control -- Figma's spec shows no
1700
+ * hover/pressed treatment on any step, so nothing here is clickable.
1701
+ * ## When to use
1702
+ * - Showing where the user is in a fixed, ordered, multi-step flow.
1703
+ * ## When not to use
1704
+ * - A flow whose steps aren't fixed/known in advance -- a stepper implies the full sequence is
1705
+ * already known.
1706
+ * - As a substitute for actual in-page navigation between steps -- pair this with real controls
1707
+ * (Next/Back buttons) elsewhere in the flow, this component only displays status.
1708
+ */
1709
+ interface BsStepper {
1710
+ /**
1711
+ * 0-indexed: which step is current. Every step before this index reads as "done" (unless that step's own `error`/`disabled` overrides it), every step after reads as "enabled".
1712
+ * @default 0
1713
+ */
1714
+ "currentStep": number;
1715
+ /**
1716
+ * `horizontal` (icon above name/description, connected by a horizontal rail) or `vertical` (icon beside name/description, connected by a vertical rail). Propagated to every slotted `bs-stepper-step`, and reflected as an attribute so this container's own `:host` CSS can switch its `flex-direction` to match -- a bare `<slot>` with no wrapping element (see `render()`) means the slotted steps' flex-row/column layout comes directly from `:host` here, not from any wrapper div.
1717
+ * @default 'horizontal'
1718
+ */
1719
+ "direction": BsStepperDirection;
1720
+ /**
1721
+ * Whether each step's description renders at all. Propagated to every slotted `bs-stepper-step`.
1722
+ * @default true
1723
+ */
1724
+ "showDescription": boolean;
1725
+ }
1726
+ /**
1727
+ * A single step within a `<bs-stepper>` sequence: an icon/indicator plus a name and optional
1728
+ * description, connected to the next step by a trailing rail.
1729
+ * `computedState` is set automatically by the parent `<bs-stepper>` based on this step's position
1730
+ * relative to its `currentStep` (before it = "done", at it = "current", after it = "enabled") --
1731
+ * same "container pushes state onto its slotted children" pattern `bs-tabs` uses for `selected`
1732
+ * and `bs-breadcrumbs` uses for `size`. This step's own `error`/`disabled` props, when set directly
1733
+ * by the consumer, override that computed value -- e.g. a step before `currentStep` would normally
1734
+ * read as "done", but `error` on that step wins regardless.
1735
+ * The trailing rail is owned by this component, not the container: `:host(:last-child)` hides it
1736
+ * on whichever step is visually last, mirroring `bs-breadcrumb`'s own `:host(:first-child)` rule
1737
+ * for its leading separator (same technique, opposite end -- see that component for why pure DOM
1738
+ * position, not CSS `:last-of-type`, is what actually needs checking here too).
1739
+ * ## When to use
1740
+ * - As a child of `<bs-stepper>`, one per step in the sequence.
1741
+ * ## When not to use
1742
+ * - Standalone, outside a `<bs-stepper>` wrapper -- `computedState`/`direction`/`showDescription`
1743
+ * depend on that parent propagating them; alone, this defaults to `enabled`/`horizontal`/`true`.
1744
+ */
1745
+ interface BsStepperStep {
1746
+ /**
1747
+ * Set automatically by the parent `<bs-stepper>` from this step's position relative to its `currentStep` -- see the class doc above. Can be set directly for a standalone step.
1748
+ * @default 'enabled'
1749
+ */
1750
+ "computedState": BsStepperStepComputedState;
1751
+ /**
1752
+ * Optional supporting text below the name. Only rendered when `showDescription` (propagated from the parent `<bs-stepper>`) is also true.
1753
+ */
1754
+ "description"?: string;
1755
+ /**
1756
+ * Set automatically by the parent `<bs-stepper>`, propagated to every slotted step.
1757
+ * @default 'horizontal'
1758
+ */
1759
+ "direction": BsStepperDirection1;
1760
+ /**
1761
+ * Shows the disabled treatment for this step, regardless of its `computedState`. Takes priority over `error` if both are somehow set.
1762
+ * @default false
1763
+ */
1764
+ "disabled": boolean;
1765
+ /**
1766
+ * Shows the error treatment for this step, regardless of its `computedState`.
1767
+ * @default false
1768
+ */
1769
+ "error": boolean;
1770
+ /**
1771
+ * This step's name/title.
1772
+ * @default ''
1773
+ */
1774
+ "name": string;
1775
+ /**
1776
+ * Set automatically by the parent `<bs-stepper>`, propagated to every slotted step.
1777
+ * @default true
1778
+ */
1779
+ "showDescription": boolean;
1780
+ }
1390
1781
  /**
1391
1782
  * A toggle switch for an on/off setting that takes effect immediately (no explicit form
1392
1783
  * submission required).
@@ -1563,6 +1954,10 @@ export interface BsDataTableCustomEvent<T> extends CustomEvent<T> {
1563
1954
  detail: T;
1564
1955
  target: HTMLBsDataTableElement;
1565
1956
  }
1957
+ export interface BsDialogCustomEvent<T> extends CustomEvent<T> {
1958
+ detail: T;
1959
+ target: HTMLBsDialogElement;
1960
+ }
1566
1961
  export interface BsInlineTabCustomEvent<T> extends CustomEvent<T> {
1567
1962
  detail: T;
1568
1963
  target: HTMLBsInlineTabElement;
@@ -1575,10 +1970,6 @@ export interface BsMenuItemCustomEvent<T> extends CustomEvent<T> {
1575
1970
  detail: T;
1576
1971
  target: HTMLBsMenuItemElement;
1577
1972
  }
1578
- export interface BsModalCustomEvent<T> extends CustomEvent<T> {
1579
- detail: T;
1580
- target: HTMLBsModalElement;
1581
- }
1582
1973
  export interface BsNavigationDrawerCustomEvent<T> extends CustomEvent<T> {
1583
1974
  detail: T;
1584
1975
  target: HTMLBsNavigationDrawerElement;
@@ -1587,6 +1978,10 @@ export interface BsNavigationDrawerItemCustomEvent<T> extends CustomEvent<T> {
1587
1978
  detail: T;
1588
1979
  target: HTMLBsNavigationDrawerItemElement;
1589
1980
  }
1981
+ export interface BsPaginationCustomEvent<T> extends CustomEvent<T> {
1982
+ detail: T;
1983
+ target: HTMLBsPaginationElement;
1984
+ }
1590
1985
  export interface BsRadioCustomEvent<T> extends CustomEvent<T> {
1591
1986
  detail: T;
1592
1987
  target: HTMLBsRadioElement;
@@ -1595,6 +1990,10 @@ export interface BsSliderCustomEvent<T> extends CustomEvent<T> {
1595
1990
  detail: T;
1596
1991
  target: HTMLBsSliderElement;
1597
1992
  }
1993
+ export interface BsSnackbarCustomEvent<T> extends CustomEvent<T> {
1994
+ detail: T;
1995
+ target: HTMLBsSnackbarElement;
1996
+ }
1598
1997
  export interface BsSourceLinkCustomEvent<T> extends CustomEvent<T> {
1599
1998
  detail: T;
1600
1999
  target: HTMLBsSourceLinkElement;
@@ -1757,6 +2156,31 @@ declare global {
1757
2156
  prototype: HTMLBsAttachmentListElement;
1758
2157
  new (): HTMLBsAttachmentListElement;
1759
2158
  };
2159
+ /**
2160
+ * A circular representation of a person or entity -- a photo, initials, or (as a fallback when
2161
+ * neither is available) a generic user-silhouette icon.
2162
+ * ## When to use
2163
+ * - Representing a specific user or account: in a header, a comment, a member list, etc.
2164
+ * - `type="initials"` when a photo isn't available but a name is (e.g. "Sam Lee" -> "SL").
2165
+ * - `type="icon"` (the default) as the generic fallback when neither a photo nor a name/initials
2166
+ * is available yet.
2167
+ * ## When not to use
2168
+ * - A company/brand logo -- use `bs-logo` instead.
2169
+ * This component is decorative/informational by default, not an interactive control -- it renders
2170
+ * a plain `<span>`/`<img>`, not a `<button>`. Figma's own component set includes hover/focused/
2171
+ * pressed states (e.g. for an account-switcher trigger use case), which this implements as real
2172
+ * `:hover`/`:focus-visible`/`:active` CSS on the host itself -- so wrapping this in your own
2173
+ * `<button>`, or setting `tabindex` and a click handler on the `<bs-avatar>` element directly, gets
2174
+ * the matching visual treatment for free with no extra wiring. Left genuinely non-interactive
2175
+ * (no implicit role/tabindex of its own) so it doesn't misrepresent a purely decorative avatar
2176
+ * (e.g. next to a comment) as a control when it isn't one.
2177
+ */
2178
+ interface HTMLBsAvatarElement extends Components.BsAvatar, HTMLStencilElement {
2179
+ }
2180
+ var HTMLBsAvatarElement: {
2181
+ prototype: HTMLBsAvatarElement;
2182
+ new (): HTMLBsAvatarElement;
2183
+ };
1760
2184
  /**
1761
2185
  * A small status or category pill, usually paired with a label or list item.
1762
2186
  * ## When to use
@@ -1772,6 +2196,82 @@ declare global {
1772
2196
  prototype: HTMLBsBadgeElement;
1773
2197
  new (): HTMLBsBadgeElement;
1774
2198
  };
2199
+ /**
2200
+ * A single crumb within a `<bs-breadcrumbs>` trail: a leading separator icon plus either a link,
2201
+ * plain text, or the current-page label, depending on `current`/`href`.
2202
+ * Rendering follows the W3C ARIA Authoring Practices breadcrumb pattern
2203
+ * (https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/): the current page is marked
2204
+ * `aria-current="page"` and is never a link -- this holds even when `href` is also set, unlike
2205
+ * Carbon Design System's `cds-breadcrumb-item`, which allows a link on the current item.
2206
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
2207
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
2208
+ * accessibility tree needs this explicit role to preserve the list's semantics.
2209
+ * ## When to use
2210
+ * - As one crumb inside a `<bs-breadcrumbs>` trail.
2211
+ * ## When not to use
2212
+ * - Standalone, outside a `<bs-breadcrumbs>` wrapper -- its `<ol>`/`<nav>` context and
2213
+ * first-child-aware separator hiding depend on that parent structure.
2214
+ */
2215
+ interface HTMLBsBreadcrumbElement extends Components.BsBreadcrumb, HTMLStencilElement {
2216
+ }
2217
+ var HTMLBsBreadcrumbElement: {
2218
+ prototype: HTMLBsBreadcrumbElement;
2219
+ new (): HTMLBsBreadcrumbElement;
2220
+ };
2221
+ /**
2222
+ * A manually-placed collapsed-items disclosure for a `<bs-breadcrumbs>` trail: a leading separator
2223
+ * plus an icon-only ellipsis button that reveals a `bs-menu` popup listing every hidden crumb.
2224
+ * `items` is JS-property-only -- must be set as a JS property (`el.items = [...]`), not an HTML
2225
+ * attribute, since attributes can only carry strings. See CONVENTIONS.md.
2226
+ * Unlike an earlier `bs-breadcrumbs`-owned automatic `maxItems` collapse, this component does no
2227
+ * collapsing logic itself -- the consumer decides which crumbs to hide and places this element
2228
+ * wherever they want the disclosure, exactly matching Carbon Design System's own approach (Carbon
2229
+ * doesn't auto-collapse breadcrumbs either; a consumer there manually decides what's visible).
2230
+ * Hidden items with an `href` render as real `<a href>` rows inside the popup, not `bs-menu-item`
2231
+ * (which renders a `<button>`) -- this matters because consuming apps commonly use client-side
2232
+ * routers that intercept clicks on real `<a>` tags to do `preventDefault` + push-state navigation.
2233
+ * Rendering hidden links any other way (e.g. `window.location`) would silently break client-side
2234
+ * routing for hidden crumbs while working fine for visible ones. Hidden items without an `href`
2235
+ * render as plain non-interactive text, matching how `bs-breadcrumb` itself handles link vs.
2236
+ * no-link crumbs.
2237
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
2238
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
2239
+ * accessibility tree needs this explicit role to preserve the list's semantics.
2240
+ * ## When to use
2241
+ * - Inside a `<bs-breadcrumbs>` trail, wherever the consumer wants an interactive disclosure for
2242
+ * crumbs they've chosen not to render directly.
2243
+ * ## When not to use
2244
+ * - As an automatic collapsing mechanism -- there is none; the consumer decides what's hidden.
2245
+ */
2246
+ interface HTMLBsBreadcrumbOverflowElement extends Components.BsBreadcrumbOverflow, HTMLStencilElement {
2247
+ }
2248
+ var HTMLBsBreadcrumbOverflowElement: {
2249
+ prototype: HTMLBsBreadcrumbOverflowElement;
2250
+ new (): HTMLBsBreadcrumbOverflowElement;
2251
+ };
2252
+ /**
2253
+ * A breadcrumb trail container: a real `<nav>` landmark wrapping an `<ol>`, meant to be populated
2254
+ * with slotted `<bs-breadcrumb>` (and, where the consumer wants a collapsed-items disclosure,
2255
+ * `<bs-breadcrumb-overflow>`) children -- same composition-over-configuration architecture as
2256
+ * Carbon Design System's `cds-breadcrumb`/`cds-breadcrumb-item`/`cds-breadcrumb-link`.
2257
+ * This component is intentionally thin: it owns only the `<nav>` landmark and list semantics.
2258
+ * Unlike an earlier `items`-array-driven design, there is no automatic collapsing here -- exactly
2259
+ * like Carbon, the consumer decides what's visible and manually places a `<bs-breadcrumb-overflow>`
2260
+ * wherever they want a collapsed-items disclosure. See `bs-breadcrumbs.mdx` for the consolidated
2261
+ * docs covering all three components in this feature area.
2262
+ * ## When to use
2263
+ * - Showing a user's current location within a hierarchical page structure, with a path back to
2264
+ * its ancestors.
2265
+ * ## When not to use
2266
+ * - Primary in-app navigation -- use `bs-navigation-drawer`/`bs-navigation-header` instead.
2267
+ * - A flat set of unrelated pages with no hierarchy -- breadcrumbs imply ancestry, not just history.
2268
+ */
2269
+ interface HTMLBsBreadcrumbsElement extends Components.BsBreadcrumbs, HTMLStencilElement {
2270
+ }
2271
+ var HTMLBsBreadcrumbsElement: {
2272
+ prototype: HTMLBsBreadcrumbsElement;
2273
+ new (): HTMLBsBreadcrumbsElement;
2274
+ };
1775
2275
  /**
1776
2276
  * A clickable action element for the single most important action in a given context.
1777
2277
  * ## When to use
@@ -2117,6 +2617,35 @@ declare global {
2117
2617
  prototype: HTMLBsCheckboxElement;
2118
2618
  new (): HTMLBsCheckboxElement;
2119
2619
  };
2620
+ /**
2621
+ * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
2622
+ * known yet (e.g. still being fetched from an API). Renders a small square (matching the
2623
+ * checkbox's own box) beside a text-bar placeholder (standing in for the label), both pulsing
2624
+ * together, sized to match `bs-checkbox`'s `sm`/`md`/`lg` box dimensions so layout doesn't shift
2625
+ * once the real checkbox renders.
2626
+ * ## When to use
2627
+ * - In place of a `bs-checkbox` whose label/checked state depends on data that hasn't loaded yet.
2628
+ * ## When not to use
2629
+ * - While a checkbox's own change handler is running (e.g. a save request in flight) -- render the
2630
+ * real `bs-checkbox` itself; this component is not a saving-in-progress spinner.
2631
+ * @prop --bs-checkbox-skeleton-size-sm - Box width/height at `size="sm"`. Aliased to
2632
+ * `--bs-spacing-200`, mirroring `bs-checkbox`'s own `--bs-checkbox-size-sm` -- not read directly
2633
+ * from it, since these are two separate shadow roots.
2634
+ * @prop --bs-checkbox-skeleton-size-md - Box width/height at `size="md"`. Aliased to
2635
+ * `--bs-spacing-250`.
2636
+ * @prop --bs-checkbox-skeleton-size-lg - Box width/height at `size="lg"`. Aliased to
2637
+ * `--bs-spacing-300`.
2638
+ * @prop --bs-checkbox-skeleton-gap - Gap between the box and label placeholders. Aliased to
2639
+ * `--bs-spacing-100`, mirroring `bs-checkbox`'s own `--bs-checkbox-gap`.
2640
+ * @prop --bs-checkbox-skeleton-label-width - Width of the label placeholder bar. Defaults to
2641
+ * `96px`.
2642
+ */
2643
+ interface HTMLBsCheckboxSkeletonElement extends Components.BsCheckboxSkeleton, HTMLStencilElement {
2644
+ }
2645
+ var HTMLBsCheckboxSkeletonElement: {
2646
+ prototype: HTMLBsCheckboxSkeletonElement;
2647
+ new (): HTMLBsCheckboxSkeletonElement;
2648
+ };
2120
2649
  interface HTMLBsComposerElementEventMap {
2121
2650
  "bsInput": string;
2122
2651
  "bsSubmit": void;
@@ -2282,6 +2811,40 @@ declare global {
2282
2811
  prototype: HTMLBsDataTableElement;
2283
2812
  new (): HTMLBsDataTableElement;
2284
2813
  };
2814
+ interface HTMLBsDialogElementEventMap {
2815
+ "bsClose": void;
2816
+ }
2817
+ /**
2818
+ * An overlay dialog that interrupts the current flow for a focused task or confirmation.
2819
+ * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
2820
+ * ## When to use
2821
+ * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
2822
+ * - A short, focused task that doesn't warrant navigating to a new page.
2823
+ * ## When not to use
2824
+ * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
2825
+ * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
2826
+ * dialog that just gets taller and taller.
2827
+ * Two additional slots cover the Figma "Dialog" component's other states: `image` (a hero image
2828
+ * across the top, close button floats over it instead of sitting in the header row) and `icon`
2829
+ * (only rendered when `centered` is set, e.g. a success checkmark above a centered heading). The
2830
+ * close button "floats" (absolute-positioned, top-right of the dialog, with its own background)
2831
+ * whenever `centered` is true or the `image` slot has content -- otherwise it's the plain inline
2832
+ * button in the header row next to the heading, same as before this addition.
2833
+ */
2834
+ interface HTMLBsDialogElement extends Components.BsDialog, HTMLStencilElement {
2835
+ addEventListener<K extends keyof HTMLBsDialogElementEventMap>(type: K, listener: (this: HTMLBsDialogElement, ev: BsDialogCustomEvent<HTMLBsDialogElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2836
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2837
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2838
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2839
+ removeEventListener<K extends keyof HTMLBsDialogElementEventMap>(type: K, listener: (this: HTMLBsDialogElement, ev: BsDialogCustomEvent<HTMLBsDialogElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2840
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2841
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2842
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2843
+ }
2844
+ var HTMLBsDialogElement: {
2845
+ prototype: HTMLBsDialogElement;
2846
+ new (): HTMLBsDialogElement;
2847
+ };
2285
2848
  /**
2286
2849
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
2287
2850
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -2474,34 +3037,6 @@ declare global {
2474
3037
  prototype: HTMLBsMenuItemElement;
2475
3038
  new (): HTMLBsMenuItemElement;
2476
3039
  };
2477
- interface HTMLBsModalElementEventMap {
2478
- "bsClose": void;
2479
- }
2480
- /**
2481
- * An overlay dialog that interrupts the current flow for a focused task or confirmation.
2482
- * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
2483
- * ## When to use
2484
- * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
2485
- * - A short, focused task that doesn't warrant navigating to a new page.
2486
- * ## When not to use
2487
- * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
2488
- * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
2489
- * modal that just gets taller and taller.
2490
- */
2491
- interface HTMLBsModalElement extends Components.BsModal, HTMLStencilElement {
2492
- addEventListener<K extends keyof HTMLBsModalElementEventMap>(type: K, listener: (this: HTMLBsModalElement, ev: BsModalCustomEvent<HTMLBsModalElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2493
- addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2494
- addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2495
- addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2496
- removeEventListener<K extends keyof HTMLBsModalElementEventMap>(type: K, listener: (this: HTMLBsModalElement, ev: BsModalCustomEvent<HTMLBsModalElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2497
- removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2498
- removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2499
- removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2500
- }
2501
- var HTMLBsModalElement: {
2502
- prototype: HTMLBsModalElement;
2503
- new (): HTMLBsModalElement;
2504
- };
2505
3040
  interface HTMLBsNavigationDrawerElementEventMap {
2506
3041
  "bsCollapse": boolean;
2507
3042
  "bsSearchClick": void;
@@ -2512,7 +3047,8 @@ declare global {
2512
3047
  * ## When to use
2513
3048
  * - The primary in-app navigation, shown alongside `bs-navigation-header` (typically that
2514
3049
  * header's `with-navigation-drawer` alignment, which omits its own logo since this component
2515
- * already renders one).
3050
+ * already renders one -- or the reverse pairing, this drawer's own `showLogo={false}` alongside
3051
+ * a header that keeps its logo instead, see that prop's own docs).
2516
3052
  * ## When not to use
2517
3053
  * - The top navigation bar itself -- use `bs-navigation-header` instead.
2518
3054
  * This component renders a real `<nav>` landmark (no explicit `role` needed -- `<nav>` already
@@ -2623,6 +3159,38 @@ declare global {
2623
3159
  prototype: HTMLBsNavigationHeaderElement;
2624
3160
  new (): HTMLBsNavigationHeaderElement;
2625
3161
  };
3162
+ interface HTMLBsPaginationElementEventMap {
3163
+ "bsPageChange": number;
3164
+ }
3165
+ /**
3166
+ * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
3167
+ * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
3168
+ * numbered pagination); its other type ("jumper" -- a rows-per-page dropdown plus a page-jump
3169
+ * input) is a structurally different composite widget and isn't covered by this component.
3170
+ * `totalPages`/`currentPage` drive everything -- this computes which page numbers to show and
3171
+ * where to collapse into `...` itself, the consumer never builds the button list by hand.
3172
+ * ## When to use
3173
+ * - Paging through a large, ordered result set (a table, a search results list) where jumping
3174
+ * directly to a specific page number is useful.
3175
+ * ## When not to use
3176
+ * - Infinite-scroll or "load more" patterns -- those don't have a fixed, addressable page number.
3177
+ * - A huge page count where users realistically only ever go forward/back one page at a time --
3178
+ * plain prev/next controls (no numbers) are simpler there.
3179
+ */
3180
+ interface HTMLBsPaginationElement extends Components.BsPagination, HTMLStencilElement {
3181
+ addEventListener<K extends keyof HTMLBsPaginationElementEventMap>(type: K, listener: (this: HTMLBsPaginationElement, ev: BsPaginationCustomEvent<HTMLBsPaginationElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3182
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3183
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3184
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3185
+ removeEventListener<K extends keyof HTMLBsPaginationElementEventMap>(type: K, listener: (this: HTMLBsPaginationElement, ev: BsPaginationCustomEvent<HTMLBsPaginationElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3186
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3187
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3188
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3189
+ }
3190
+ var HTMLBsPaginationElement: {
3191
+ prototype: HTMLBsPaginationElement;
3192
+ new (): HTMLBsPaginationElement;
3193
+ };
2626
3194
  interface HTMLBsRadioElementEventMap {
2627
3195
  "bsChange": string;
2628
3196
  }
@@ -2683,6 +3251,43 @@ declare global {
2683
3251
  prototype: HTMLBsSliderElement;
2684
3252
  new (): HTMLBsSliderElement;
2685
3253
  };
3254
+ interface HTMLBsSnackbarElementEventMap {
3255
+ "bsAction": void;
3256
+ "bsDismiss": void;
3257
+ }
3258
+ /**
3259
+ * A transient status bar for confirming the result of an action (e.g. "Files uploaded
3260
+ * successfully.") -- an icon (or loading spinner), a message, an optional action, and a close
3261
+ * button.
3262
+ * This component only renders the bar itself -- it doesn't manage its own visibility, timing, or
3263
+ * stacking. A consumer (typically a small "toast manager" utility) creates one per message and
3264
+ * removes it from the DOM again, whether on a timer or on `bsDismiss`. Figma's spec doesn't show
3265
+ * auto-dismiss timing at all (it's a static visual spec), so this deliberately doesn't invent one.
3266
+ * The icon is always the same checkmark glyph across every `variant`, just recolored -- matching
3267
+ * the Figma spec exactly, even though a checkmark for `variant="error"` reads a little oddly
3268
+ * semantically. Worth revisiting with severity-specific icons (warning triangle, error circle,
3269
+ * etc.) if the design updates to specify them.
3270
+ * ## When to use
3271
+ * - Confirming the outcome of an action that just happened (save succeeded, upload failed) without
3272
+ * interrupting the user's flow.
3273
+ * ## When not to use
3274
+ * - For a response that requires the user to make a decision before continuing -- use `bs-dialog`.
3275
+ * - For persistent, always-visible status -- a snackbar is inherently transient.
3276
+ */
3277
+ interface HTMLBsSnackbarElement extends Components.BsSnackbar, HTMLStencilElement {
3278
+ addEventListener<K extends keyof HTMLBsSnackbarElementEventMap>(type: K, listener: (this: HTMLBsSnackbarElement, ev: BsSnackbarCustomEvent<HTMLBsSnackbarElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3279
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3280
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3281
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3282
+ removeEventListener<K extends keyof HTMLBsSnackbarElementEventMap>(type: K, listener: (this: HTMLBsSnackbarElement, ev: BsSnackbarCustomEvent<HTMLBsSnackbarElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3283
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3284
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3285
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3286
+ }
3287
+ var HTMLBsSnackbarElement: {
3288
+ prototype: HTMLBsSnackbarElement;
3289
+ new (): HTMLBsSnackbarElement;
3290
+ };
2686
3291
  interface HTMLBsSourceLinkElementEventMap {
2687
3292
  "bsOpen": void;
2688
3293
  }
@@ -2725,6 +3330,57 @@ declare global {
2725
3330
  prototype: HTMLBsSourceLinkElement;
2726
3331
  new (): HTMLBsSourceLinkElement;
2727
3332
  };
3333
+ /**
3334
+ * A sequence of named steps showing overall progress through a multi-step flow (e.g. a checkout,
3335
+ * an onboarding wizard) -- each step reads as enabled (not yet reached), current, done, error, or
3336
+ * disabled, connected by a rail between them.
3337
+ * This container is intentionally thin: it renders a `<slot>` for `<bs-stepper-step>` children and
3338
+ * propagates `currentStep`/`direction`/`showDescription` down to them as JS properties whenever any
3339
+ * of those change or the slotted children themselves change -- the same "container pushes state
3340
+ * onto its slotted children" pattern `bs-tabs` uses for `selected` and `bs-breadcrumbs` uses for
3341
+ * `size`. Each step computes its own `enabled`/`current`/`done` state from its position among its
3342
+ * siblings relative to `currentStep`, unless that step's own `error`/`disabled` prop overrides it.
3343
+ * This is a static status display, not an interactive control -- Figma's spec shows no
3344
+ * hover/pressed treatment on any step, so nothing here is clickable.
3345
+ * ## When to use
3346
+ * - Showing where the user is in a fixed, ordered, multi-step flow.
3347
+ * ## When not to use
3348
+ * - A flow whose steps aren't fixed/known in advance -- a stepper implies the full sequence is
3349
+ * already known.
3350
+ * - As a substitute for actual in-page navigation between steps -- pair this with real controls
3351
+ * (Next/Back buttons) elsewhere in the flow, this component only displays status.
3352
+ */
3353
+ interface HTMLBsStepperElement extends Components.BsStepper, HTMLStencilElement {
3354
+ }
3355
+ var HTMLBsStepperElement: {
3356
+ prototype: HTMLBsStepperElement;
3357
+ new (): HTMLBsStepperElement;
3358
+ };
3359
+ /**
3360
+ * A single step within a `<bs-stepper>` sequence: an icon/indicator plus a name and optional
3361
+ * description, connected to the next step by a trailing rail.
3362
+ * `computedState` is set automatically by the parent `<bs-stepper>` based on this step's position
3363
+ * relative to its `currentStep` (before it = "done", at it = "current", after it = "enabled") --
3364
+ * same "container pushes state onto its slotted children" pattern `bs-tabs` uses for `selected`
3365
+ * and `bs-breadcrumbs` uses for `size`. This step's own `error`/`disabled` props, when set directly
3366
+ * by the consumer, override that computed value -- e.g. a step before `currentStep` would normally
3367
+ * read as "done", but `error` on that step wins regardless.
3368
+ * The trailing rail is owned by this component, not the container: `:host(:last-child)` hides it
3369
+ * on whichever step is visually last, mirroring `bs-breadcrumb`'s own `:host(:first-child)` rule
3370
+ * for its leading separator (same technique, opposite end -- see that component for why pure DOM
3371
+ * position, not CSS `:last-of-type`, is what actually needs checking here too).
3372
+ * ## When to use
3373
+ * - As a child of `<bs-stepper>`, one per step in the sequence.
3374
+ * ## When not to use
3375
+ * - Standalone, outside a `<bs-stepper>` wrapper -- `computedState`/`direction`/`showDescription`
3376
+ * depend on that parent propagating them; alone, this defaults to `enabled`/`horizontal`/`true`.
3377
+ */
3378
+ interface HTMLBsStepperStepElement extends Components.BsStepperStep, HTMLStencilElement {
3379
+ }
3380
+ var HTMLBsStepperStepElement: {
3381
+ prototype: HTMLBsStepperStepElement;
3382
+ new (): HTMLBsStepperStepElement;
3383
+ };
2728
3384
  interface HTMLBsSwitchElementEventMap {
2729
3385
  "bsChange": boolean;
2730
3386
  }
@@ -2849,7 +3505,11 @@ declare global {
2849
3505
  "bs-ai-thinking": HTMLBsAiThinkingElement;
2850
3506
  "bs-attachment": HTMLBsAttachmentElement;
2851
3507
  "bs-attachment-list": HTMLBsAttachmentListElement;
3508
+ "bs-avatar": HTMLBsAvatarElement;
2852
3509
  "bs-badge": HTMLBsBadgeElement;
3510
+ "bs-breadcrumb": HTMLBsBreadcrumbElement;
3511
+ "bs-breadcrumb-overflow": HTMLBsBreadcrumbOverflowElement;
3512
+ "bs-breadcrumbs": HTMLBsBreadcrumbsElement;
2853
3513
  "bs-button": HTMLBsButtonElement;
2854
3514
  "bs-button-skeleton": HTMLBsButtonSkeletonElement;
2855
3515
  "bs-card": HTMLBsCardElement;
@@ -2859,22 +3519,27 @@ declare global {
2859
3519
  "bs-chatbot-sources-drawer": HTMLBsChatbotSourcesDrawerElement;
2860
3520
  "bs-chatbot-suggestion-button": HTMLBsChatbotSuggestionButtonElement;
2861
3521
  "bs-checkbox": HTMLBsCheckboxElement;
3522
+ "bs-checkbox-skeleton": HTMLBsCheckboxSkeletonElement;
2862
3523
  "bs-composer": HTMLBsComposerElement;
2863
3524
  "bs-composer-status-banner": HTMLBsComposerStatusBannerElement;
2864
3525
  "bs-data-table": HTMLBsDataTableElement;
3526
+ "bs-dialog": HTMLBsDialogElement;
2865
3527
  "bs-icon-button": HTMLBsIconButtonElement;
2866
3528
  "bs-inline-tab": HTMLBsInlineTabElement;
2867
3529
  "bs-input": HTMLBsInputElement;
2868
3530
  "bs-logo": HTMLBsLogoElement;
2869
3531
  "bs-menu": HTMLBsMenuElement;
2870
3532
  "bs-menu-item": HTMLBsMenuItemElement;
2871
- "bs-modal": HTMLBsModalElement;
2872
3533
  "bs-navigation-drawer": HTMLBsNavigationDrawerElement;
2873
3534
  "bs-navigation-drawer-item": HTMLBsNavigationDrawerItemElement;
2874
3535
  "bs-navigation-header": HTMLBsNavigationHeaderElement;
3536
+ "bs-pagination": HTMLBsPaginationElement;
2875
3537
  "bs-radio": HTMLBsRadioElement;
2876
3538
  "bs-slider": HTMLBsSliderElement;
3539
+ "bs-snackbar": HTMLBsSnackbarElement;
2877
3540
  "bs-source-link": HTMLBsSourceLinkElement;
3541
+ "bs-stepper": HTMLBsStepperElement;
3542
+ "bs-stepper-step": HTMLBsStepperStepElement;
2878
3543
  "bs-switch": HTMLBsSwitchElement;
2879
3544
  "bs-tab": HTMLBsTabElement;
2880
3545
  "bs-tabs": HTMLBsTabsElement;
@@ -3033,40 +3698,199 @@ declare namespace LocalJSX {
3033
3698
  * lay out in a single row and scroll horizontally instead of wrapping/overflowing once there
3034
3699
  * are more than fit the available width.
3035
3700
  * ## When not to use
3036
- * - A single attachment on its own — just render `bs-attachment` directly, this wrapper's
3037
- * scroll/fade affordance only matters once there's more content than fits.
3038
- * @prop --bs-attachment-list-gap - Gap between attachments. Matches the 10px Figma spec (not tied
3039
- * to the `--bs-spacing-*` scale, which only has 8px/12px neighbors).
3040
- * @prop --bs-attachment-list-padding - Padding around the row. Aliased to `--bs-spacing-150`.
3041
- * @prop --bs-attachment-list-fade-color - Color the right-edge fade blends into. Aliased to
3042
- * `--bs-static-white`.
3043
- * @prop --bs-attachment-list-fade-width - Width of the right-edge fade overlay. Aliased to
3044
- * `--bs-spacing-800`.
3045
- * @prop --bs-attachment-list-scrollbar-thumb - Color of the scrollbar thumb that appears on
3046
- * hover/focus once the row is scrollable. Aliased to `--bs-neutral-300`.
3701
+ * - A single attachment on its own — just render `bs-attachment` directly, this wrapper's
3702
+ * scroll/fade affordance only matters once there's more content than fits.
3703
+ * @prop --bs-attachment-list-gap - Gap between attachments. Matches the 10px Figma spec (not tied
3704
+ * to the `--bs-spacing-*` scale, which only has 8px/12px neighbors).
3705
+ * @prop --bs-attachment-list-padding - Padding around the row. Aliased to `--bs-spacing-150`.
3706
+ * @prop --bs-attachment-list-fade-color - Color the right-edge fade blends into. Aliased to
3707
+ * `--bs-static-white`.
3708
+ * @prop --bs-attachment-list-fade-width - Width of the right-edge fade overlay. Aliased to
3709
+ * `--bs-spacing-800`.
3710
+ * @prop --bs-attachment-list-scrollbar-thumb - Color of the scrollbar thumb that appears on
3711
+ * hover/focus once the row is scrollable. Aliased to `--bs-neutral-300`.
3712
+ */
3713
+ interface BsAttachmentList {
3714
+ /**
3715
+ * Accessible name for the scrollable region.
3716
+ * @default 'Attachments'
3717
+ */
3718
+ "ariaLabel"?: string | null;
3719
+ }
3720
+ /**
3721
+ * A circular representation of a person or entity -- a photo, initials, or (as a fallback when
3722
+ * neither is available) a generic user-silhouette icon.
3723
+ * ## When to use
3724
+ * - Representing a specific user or account: in a header, a comment, a member list, etc.
3725
+ * - `type="initials"` when a photo isn't available but a name is (e.g. "Sam Lee" -> "SL").
3726
+ * - `type="icon"` (the default) as the generic fallback when neither a photo nor a name/initials
3727
+ * is available yet.
3728
+ * ## When not to use
3729
+ * - A company/brand logo -- use `bs-logo` instead.
3730
+ * This component is decorative/informational by default, not an interactive control -- it renders
3731
+ * a plain `<span>`/`<img>`, not a `<button>`. Figma's own component set includes hover/focused/
3732
+ * pressed states (e.g. for an account-switcher trigger use case), which this implements as real
3733
+ * `:hover`/`:focus-visible`/`:active` CSS on the host itself -- so wrapping this in your own
3734
+ * `<button>`, or setting `tabindex` and a click handler on the `<bs-avatar>` element directly, gets
3735
+ * the matching visual treatment for free with no extra wiring. Left genuinely non-interactive
3736
+ * (no implicit role/tabindex of its own) so it doesn't misrepresent a purely decorative avatar
3737
+ * (e.g. next to a comment) as a control when it isn't one.
3738
+ */
3739
+ interface BsAvatar {
3740
+ /**
3741
+ * `type="image"` only: accessible alt text for the photo, set directly on the real `<img>` this renders -- a person's photo is meaningful content, not decorative, so pass something real (e.g. their name). Falls back to `alt=""` (decorative to assistive tech) when unset, rather than omitting the attribute entirely, but don't rely on that fallback. Ignored for `icon`/`initials` -- see `ariaLabel` for those instead.
3742
+ * @default null
3743
+ */
3744
+ "alt"?: string | null;
3745
+ /**
3746
+ * `type="icon"`/`"initials"` only: accessible name for the avatar, set as `aria-label` on the `role="img"` wrapper this renders (neither is a real `<img>`, so there's no native `alt` to set). Setting a plain `aria-label` attribute on the `<bs-avatar>` host does NOT work for this -- that attribute stays on the light-DOM host and never crosses into the shadow DOM, so the actual `role="img"` element stays nameless. Same pattern as `bs-checkbox`'s identical `ariaLabel` prop. Ignored for `image` -- see `alt` for that instead.
3747
+ * @default null
3748
+ */
3749
+ "ariaLabel"?: string | null;
3750
+ /**
3751
+ * Applies the disabled treatment (50% opacity) and suppresses the hover/focus/pressed CSS states -- this doesn't set a native `disabled` attribute (this component renders no native form control), it's purely a visual/interaction-state flag for when a consuming app has wrapped this in its own disabled control. Reflected so the `:host([disabled])` CSS selector that drives all of the above still matches when a consumer sets the JS property directly (`el.disabled = true`) rather than the HTML attribute.
3752
+ * @default false
3753
+ */
3754
+ "disabled"?: boolean;
3755
+ /**
3756
+ * `type="initials"` only: the initials text to display (e.g. `"SL"` for "Sam Lee"). Ignored for `icon`/`image`.
3757
+ * @default null
3758
+ */
3759
+ "initials"?: string | null;
3760
+ /**
3761
+ * Sizing scale -- `xs` (24px) through `xxl` (128px), matching Figma's own six-step scale.
3762
+ * @default 'md'
3763
+ */
3764
+ "size"?: BsAvatarSize;
3765
+ /**
3766
+ * `type="image"` only: the photo URL. This component does not fetch it itself -- network calls, loading/error states, and caching are the consuming app's responsibility, same convention as `bs-logo`'s own `src` prop. Ignored for `icon`/`initials`.
3767
+ * @default null
3768
+ */
3769
+ "src"?: string | null;
3770
+ /**
3771
+ * What to render inside the circle. `icon` (default) is the generic fallback for when neither a photo nor initials are available yet.
3772
+ * @default 'icon'
3773
+ */
3774
+ "type"?: BsAvatarType;
3775
+ }
3776
+ /**
3777
+ * A small status or category pill, usually paired with a label or list item.
3778
+ * ## When to use
3779
+ * - Communicating a short, fixed status (e.g. "Active", "On leave") or category label.
3780
+ * ## When not to use
3781
+ * - As an interactive/clickable element — a badge is a label, not a control. Use a button
3782
+ * or chip component if it needs to be clickable.
3783
+ * - For long text — badges are sized for one or two words.
3784
+ */
3785
+ interface BsBadge {
3786
+ /**
3787
+ * Maps directly to the brandsync-tokens `--bs-badge-bg-*` / `--bs-badge-text-*` sets.
3788
+ * @default 'default'
3789
+ */
3790
+ "variant"?: BsBadgeVariant;
3791
+ }
3792
+ /**
3793
+ * A single crumb within a `<bs-breadcrumbs>` trail: a leading separator icon plus either a link,
3794
+ * plain text, or the current-page label, depending on `current`/`href`.
3795
+ * Rendering follows the W3C ARIA Authoring Practices breadcrumb pattern
3796
+ * (https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/): the current page is marked
3797
+ * `aria-current="page"` and is never a link -- this holds even when `href` is also set, unlike
3798
+ * Carbon Design System's `cds-breadcrumb-item`, which allows a link on the current item.
3799
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
3800
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
3801
+ * accessibility tree needs this explicit role to preserve the list's semantics.
3802
+ * ## When to use
3803
+ * - As one crumb inside a `<bs-breadcrumbs>` trail.
3804
+ * ## When not to use
3805
+ * - Standalone, outside a `<bs-breadcrumbs>` wrapper -- its `<ol>`/`<nav>` context and
3806
+ * first-child-aware separator hiding depend on that parent structure.
3807
+ */
3808
+ interface BsBreadcrumb {
3809
+ /**
3810
+ * Whether this crumb is the current page. Renders as plain (non-link) text marked `aria-current="page"`, reflected as an attribute so consumers/CSS can target `bs-breadcrumb[current]`.
3811
+ * @default false
3812
+ */
3813
+ "current"?: boolean;
3814
+ /**
3815
+ * Destination for a non-current crumb. Ignored when `current` is true -- the current page is never a link, even if `href` is set (see the class JSDoc).
3816
+ */
3817
+ "href"?: string;
3818
+ /**
3819
+ * Size variant. Normally set automatically by a parent `<bs-breadcrumbs size="...">` -- the container propagates its own `size` as a JS property to every slotted `bs-breadcrumb`/ `bs-breadcrumb-overflow` child (see `bs-breadcrumbs.tsx`'s `propagateSize`), since CSS custom properties can't carry an enum that switches rules on their own. Can also be set directly on a standalone crumb. `sm` scales down font-size/line-height only -- the separator icon's pixel size is unchanged, since Figma didn't specify a `sm` icon size and guessing one risked drifting off-brand. Reflected so consumers/CSS can target `bs-breadcrumb[size="sm"]`.
3820
+ * @default 'md'
3821
+ */
3822
+ "size"?: BsBreadcrumbSize;
3823
+ }
3824
+ /**
3825
+ * A manually-placed collapsed-items disclosure for a `<bs-breadcrumbs>` trail: a leading separator
3826
+ * plus an icon-only ellipsis button that reveals a `bs-menu` popup listing every hidden crumb.
3827
+ * `items` is JS-property-only -- must be set as a JS property (`el.items = [...]`), not an HTML
3828
+ * attribute, since attributes can only carry strings. See CONVENTIONS.md.
3829
+ * Unlike an earlier `bs-breadcrumbs`-owned automatic `maxItems` collapse, this component does no
3830
+ * collapsing logic itself -- the consumer decides which crumbs to hide and places this element
3831
+ * wherever they want the disclosure, exactly matching Carbon Design System's own approach (Carbon
3832
+ * doesn't auto-collapse breadcrumbs either; a consumer there manually decides what's visible).
3833
+ * Hidden items with an `href` render as real `<a href>` rows inside the popup, not `bs-menu-item`
3834
+ * (which renders a `<button>`) -- this matters because consuming apps commonly use client-side
3835
+ * routers that intercept clicks on real `<a>` tags to do `preventDefault` + push-state navigation.
3836
+ * Rendering hidden links any other way (e.g. `window.location`) would silently break client-side
3837
+ * routing for hidden crumbs while working fine for visible ones. Hidden items without an `href`
3838
+ * render as plain non-interactive text, matching how `bs-breadcrumb` itself handles link vs.
3839
+ * no-link crumbs.
3840
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
3841
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
3842
+ * accessibility tree needs this explicit role to preserve the list's semantics.
3843
+ * ## When to use
3844
+ * - Inside a `<bs-breadcrumbs>` trail, wherever the consumer wants an interactive disclosure for
3845
+ * crumbs they've chosen not to render directly.
3846
+ * ## When not to use
3847
+ * - As an automatic collapsing mechanism -- there is none; the consumer decides what's hidden.
3047
3848
  */
3048
- interface BsAttachmentList {
3849
+ interface BsBreadcrumbOverflow {
3049
3850
  /**
3050
- * Accessible name for the scrollable region.
3051
- * @default 'Attachments'
3851
+ * Array prop -- must be set as a JS property (`el.items = [...]`), not an HTML attribute, since attributes can only carry strings. See CONVENTIONS.md. The hidden crumbs reachable via this disclosure -- no collapsing logic here, the consumer decides what goes in this list.
3852
+ * @default []
3052
3853
  */
3053
- "ariaLabel"?: string | null;
3854
+ "items"?: BsBreadcrumbOverflowItem[];
3855
+ /**
3856
+ * Accessible name (`aria-label`) for the icon-only ellipsis trigger button.
3857
+ * @default 'Show hidden breadcrumbs'
3858
+ */
3859
+ "overflowLabel"?: string;
3860
+ /**
3861
+ * Size variant. Normally set automatically by a parent `<bs-breadcrumbs size="...">` -- see `bs-breadcrumb`'s identical `size` prop doc comment for why this is propagated as a JS property rather than inherited via CSS. Scales the popup rows' font-size/line-height only; the separator/ellipsis icons' pixel sizes are unchanged. Reflected so consumers/CSS can target `bs-breadcrumb-overflow[size="sm"]`.
3862
+ * @default 'md'
3863
+ */
3864
+ "size"?: BsBreadcrumbSize1;
3054
3865
  }
3055
3866
  /**
3056
- * A small status or category pill, usually paired with a label or list item.
3867
+ * A breadcrumb trail container: a real `<nav>` landmark wrapping an `<ol>`, meant to be populated
3868
+ * with slotted `<bs-breadcrumb>` (and, where the consumer wants a collapsed-items disclosure,
3869
+ * `<bs-breadcrumb-overflow>`) children -- same composition-over-configuration architecture as
3870
+ * Carbon Design System's `cds-breadcrumb`/`cds-breadcrumb-item`/`cds-breadcrumb-link`.
3871
+ * This component is intentionally thin: it owns only the `<nav>` landmark and list semantics.
3872
+ * Unlike an earlier `items`-array-driven design, there is no automatic collapsing here -- exactly
3873
+ * like Carbon, the consumer decides what's visible and manually places a `<bs-breadcrumb-overflow>`
3874
+ * wherever they want a collapsed-items disclosure. See `bs-breadcrumbs.mdx` for the consolidated
3875
+ * docs covering all three components in this feature area.
3057
3876
  * ## When to use
3058
- * - Communicating a short, fixed status (e.g. "Active", "On leave") or category label.
3877
+ * - Showing a user's current location within a hierarchical page structure, with a path back to
3878
+ * its ancestors.
3059
3879
  * ## When not to use
3060
- * - As an interactive/clickable element — a badge is a label, not a control. Use a button
3061
- * or chip component if it needs to be clickable.
3062
- * - For long text — badges are sized for one or two words.
3880
+ * - Primary in-app navigation -- use `bs-navigation-drawer`/`bs-navigation-header` instead.
3881
+ * - A flat set of unrelated pages with no hierarchy -- breadcrumbs imply ancestry, not just history.
3063
3882
  */
3064
- interface BsBadge {
3883
+ interface BsBreadcrumbs {
3065
3884
  /**
3066
- * Maps directly to the brandsync-tokens `--bs-badge-bg-*` / `--bs-badge-text-*` sets.
3067
- * @default 'default'
3885
+ * Accessible name for the `<nav>` landmark, via `aria-label`. Same pattern as `bs-navigation-drawer`'s `heading` prop.
3886
+ * @default 'Breadcrumb'
3068
3887
  */
3069
- "variant"?: BsBadgeVariant;
3888
+ "label"?: string;
3889
+ /**
3890
+ * 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).
3891
+ * @default 'md'
3892
+ */
3893
+ "size"?: BsBreadcrumbSize1;
3070
3894
  }
3071
3895
  /**
3072
3896
  * A clickable action element for the single most important action in a given context.
@@ -3492,6 +4316,36 @@ declare namespace LocalJSX {
3492
4316
  */
3493
4317
  "size"?: BsCheckboxSize;
3494
4318
  }
4319
+ /**
4320
+ * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
4321
+ * known yet (e.g. still being fetched from an API). Renders a small square (matching the
4322
+ * checkbox's own box) beside a text-bar placeholder (standing in for the label), both pulsing
4323
+ * together, sized to match `bs-checkbox`'s `sm`/`md`/`lg` box dimensions so layout doesn't shift
4324
+ * once the real checkbox renders.
4325
+ * ## When to use
4326
+ * - In place of a `bs-checkbox` whose label/checked state depends on data that hasn't loaded yet.
4327
+ * ## When not to use
4328
+ * - While a checkbox's own change handler is running (e.g. a save request in flight) -- render the
4329
+ * real `bs-checkbox` itself; this component is not a saving-in-progress spinner.
4330
+ * @prop --bs-checkbox-skeleton-size-sm - Box width/height at `size="sm"`. Aliased to
4331
+ * `--bs-spacing-200`, mirroring `bs-checkbox`'s own `--bs-checkbox-size-sm` -- not read directly
4332
+ * from it, since these are two separate shadow roots.
4333
+ * @prop --bs-checkbox-skeleton-size-md - Box width/height at `size="md"`. Aliased to
4334
+ * `--bs-spacing-250`.
4335
+ * @prop --bs-checkbox-skeleton-size-lg - Box width/height at `size="lg"`. Aliased to
4336
+ * `--bs-spacing-300`.
4337
+ * @prop --bs-checkbox-skeleton-gap - Gap between the box and label placeholders. Aliased to
4338
+ * `--bs-spacing-100`, mirroring `bs-checkbox`'s own `--bs-checkbox-gap`.
4339
+ * @prop --bs-checkbox-skeleton-label-width - Width of the label placeholder bar. Defaults to
4340
+ * `96px`.
4341
+ */
4342
+ interface BsCheckboxSkeleton {
4343
+ /**
4344
+ * Sizing scale, matching the `bs-checkbox` size it stands in for. Defaults to `lg`, the same (unusual) default `bs-checkbox` itself uses.
4345
+ * @default 'lg'
4346
+ */
4347
+ "size"?: BsCheckboxSize1;
4348
+ }
3495
4349
  /**
3496
4350
  * A chat composer input for Genie AI-style conversational interfaces: a text field
3497
4351
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -3716,6 +4570,41 @@ declare namespace LocalJSX {
3716
4570
  */
3717
4571
  "sortDirection"?: 'asc' | 'desc';
3718
4572
  }
4573
+ /**
4574
+ * An overlay dialog that interrupts the current flow for a focused task or confirmation.
4575
+ * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
4576
+ * ## When to use
4577
+ * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
4578
+ * - A short, focused task that doesn't warrant navigating to a new page.
4579
+ * ## When not to use
4580
+ * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
4581
+ * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
4582
+ * dialog that just gets taller and taller.
4583
+ * Two additional slots cover the Figma "Dialog" component's other states: `image` (a hero image
4584
+ * across the top, close button floats over it instead of sitting in the header row) and `icon`
4585
+ * (only rendered when `centered` is set, e.g. a success checkmark above a centered heading). The
4586
+ * close button "floats" (absolute-positioned, top-right of the dialog, with its own background)
4587
+ * whenever `centered` is true or the `image` slot has content -- otherwise it's the plain inline
4588
+ * button in the header row next to the heading, same as before this addition.
4589
+ */
4590
+ interface BsDialog {
4591
+ /**
4592
+ * Switches to the Figma "Icon Centered" layout: heading/body text centered, the `icon` slot rendered above the heading, and the close button floating top-right of the dialog instead of inline in the header row. Doesn't hide a slotted `image` if one is also provided -- Figma's spec doesn't show the two combined, so this is unspecified rather than actively blocked. Reflected so consumers/CSS can target `bs-dialog[centered]`.
4593
+ * @default false
4594
+ */
4595
+ "centered"?: boolean;
4596
+ "heading"?: string;
4597
+ "onBsClose"?: (event: BsDialogCustomEvent<void>) => void;
4598
+ /**
4599
+ * Mutable + reflected so the component can close itself (backdrop click, Escape, close button) the same way a native `<dialog>` does, while still emitting `bsClose` for the consumer to react to.
4600
+ * @default false
4601
+ */
4602
+ "open"?: boolean;
4603
+ /**
4604
+ * @default 'md'
4605
+ */
4606
+ "size"?: BsDialogSize;
4607
+ }
3719
4608
  /**
3720
4609
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
3721
4610
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -4032,37 +4921,14 @@ declare namespace LocalJSX {
4032
4921
  */
4033
4922
  "onBsSelect"?: (event: BsMenuItemCustomEvent<void>) => void;
4034
4923
  }
4035
- /**
4036
- * An overlay dialog that interrupts the current flow for a focused task or confirmation.
4037
- * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
4038
- * ## When to use
4039
- * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
4040
- * - A short, focused task that doesn't warrant navigating to a new page.
4041
- * ## When not to use
4042
- * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
4043
- * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
4044
- * modal that just gets taller and taller.
4045
- */
4046
- interface BsModal {
4047
- "heading"?: string;
4048
- "onBsClose"?: (event: BsModalCustomEvent<void>) => void;
4049
- /**
4050
- * Mutable + reflected so the component can close itself (backdrop click, Escape, close button) the same way a native `<dialog>` does, while still emitting `bsClose` for the consumer to react to.
4051
- * @default false
4052
- */
4053
- "open"?: boolean;
4054
- /**
4055
- * @default 'md'
4056
- */
4057
- "size"?: BsModalSize;
4058
- }
4059
4924
  /**
4060
4925
  * A left-side persistent navigation sidebar: the BrandSync logo, a "Main Menu" title with a
4061
4926
  * collapse toggle, a reserved slot for a search field, and a scrollable list of nav items.
4062
4927
  * ## When to use
4063
4928
  * - The primary in-app navigation, shown alongside `bs-navigation-header` (typically that
4064
4929
  * header's `with-navigation-drawer` alignment, which omits its own logo since this component
4065
- * already renders one).
4930
+ * already renders one -- or the reverse pairing, this drawer's own `showLogo={false}` alongside
4931
+ * a header that keeps its logo instead, see that prop's own docs).
4066
4932
  * ## When not to use
4067
4933
  * - The top navigation bar itself -- use `bs-navigation-header` instead.
4068
4934
  * This component renders a real `<nav>` landmark (no explicit `role` needed -- `<nav>` already
@@ -4118,6 +4984,11 @@ declare namespace LocalJSX {
4118
4984
  * Fires when the compact search-trigger button (shown instead of the `search` slot while `collapsed`) is clicked -- e.g. to open a full search overlay. This component has no visibility into what the `search` slot actually contains, so it can't drive a real search itself once shrunk to icon size.
4119
4985
  */
4120
4986
  "onBsSearchClick"?: (event: BsNavigationDrawerCustomEvent<void>) => void;
4987
+ /**
4988
+ * Whether to render the BrandSync logo at all. Defaults to `true`. This drawer is normally the one that owns the logo when paired with a `bs-navigation-header` (that header's own `with-navigation-drawer` alignment omits its logo for exactly this reason) -- but the reverse pairing works too: a header that keeps its own logo (`alignment="default"`) paired with this drawer set to `showLogo={false}`, so the brand mark only ever appears once.
4989
+ * @default true
4990
+ */
4991
+ "showLogo"?: boolean;
4121
4992
  }
4122
4993
  /**
4123
4994
  * A single row within a `bs-navigation-drawer`'s item list -- either a plain leaf nav item, or an
@@ -4232,6 +5103,52 @@ declare namespace LocalJSX {
4232
5103
  */
4233
5104
  "skipToContentLabel"?: string;
4234
5105
  }
5106
+ /**
5107
+ * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
5108
+ * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
5109
+ * numbered pagination); its other type ("jumper" -- a rows-per-page dropdown plus a page-jump
5110
+ * input) is a structurally different composite widget and isn't covered by this component.
5111
+ * `totalPages`/`currentPage` drive everything -- this computes which page numbers to show and
5112
+ * where to collapse into `...` itself, the consumer never builds the button list by hand.
5113
+ * ## When to use
5114
+ * - Paging through a large, ordered result set (a table, a search results list) where jumping
5115
+ * directly to a specific page number is useful.
5116
+ * ## When not to use
5117
+ * - Infinite-scroll or "load more" patterns -- those don't have a fixed, addressable page number.
5118
+ * - A huge page count where users realistically only ever go forward/back one page at a time --
5119
+ * plain prev/next controls (no numbers) are simpler there.
5120
+ */
5121
+ interface BsPagination {
5122
+ /**
5123
+ * The active page (1-indexed). Mutable + reflected so clicking a page button updates it directly, the same way `bs-modal`'s `open` self-manages, while `bsPageChange` still fires for the consumer to react to (e.g. fetching that page's data).
5124
+ * @default 1
5125
+ */
5126
+ "currentPage"?: number;
5127
+ /**
5128
+ * Accessible name for the next-page button.
5129
+ * @default 'Next page'
5130
+ */
5131
+ "nextLabel"?: string;
5132
+ /**
5133
+ * Fires whenever the active page changes as a result of the user clicking a page/prev/next button -- not when `currentPage` is set programmatically from outside.
5134
+ */
5135
+ "onBsPageChange"?: (event: BsPaginationCustomEvent<number>) => void;
5136
+ /**
5137
+ * Accessible name for the previous-page button.
5138
+ * @default 'Previous page'
5139
+ */
5140
+ "previousLabel"?: string;
5141
+ /**
5142
+ * How many page numbers to show on each side of the current page before collapsing the rest into `...`. `1` (the default) reproduces the Figma spec's example exactly (page 1 of 12 shows `1 2 3 ... 12`).
5143
+ * @default 1
5144
+ */
5145
+ "siblingCount"?: number;
5146
+ /**
5147
+ * Total number of pages. Must be a positive integer -- there's always at least one page.
5148
+ * @default 1
5149
+ */
5150
+ "totalPages"?: number;
5151
+ }
4235
5152
  /**
4236
5153
  * A single radio button with its label, for one mutually-exclusive choice within a group.
4237
5154
  * ## When to use
@@ -4349,6 +5266,49 @@ declare namespace LocalJSX {
4349
5266
  */
4350
5267
  "valueStart"?: number;
4351
5268
  }
5269
+ /**
5270
+ * A transient status bar for confirming the result of an action (e.g. "Files uploaded
5271
+ * successfully.") -- an icon (or loading spinner), a message, an optional action, and a close
5272
+ * button.
5273
+ * This component only renders the bar itself -- it doesn't manage its own visibility, timing, or
5274
+ * stacking. A consumer (typically a small "toast manager" utility) creates one per message and
5275
+ * removes it from the DOM again, whether on a timer or on `bsDismiss`. Figma's spec doesn't show
5276
+ * auto-dismiss timing at all (it's a static visual spec), so this deliberately doesn't invent one.
5277
+ * The icon is always the same checkmark glyph across every `variant`, just recolored -- matching
5278
+ * the Figma spec exactly, even though a checkmark for `variant="error"` reads a little oddly
5279
+ * semantically. Worth revisiting with severity-specific icons (warning triangle, error circle,
5280
+ * etc.) if the design updates to specify them.
5281
+ * ## When to use
5282
+ * - Confirming the outcome of an action that just happened (save succeeded, upload failed) without
5283
+ * interrupting the user's flow.
5284
+ * ## When not to use
5285
+ * - For a response that requires the user to make a decision before continuing -- use `bs-dialog`.
5286
+ * - For persistent, always-visible status -- a snackbar is inherently transient.
5287
+ */
5288
+ interface BsSnackbar {
5289
+ /**
5290
+ * Label for the optional action button (e.g. "Undo", "Retry"). Omit this prop entirely to render no action button at all -- its presence, not a boolean flag, is what shows it.
5291
+ */
5292
+ "actionLabel"?: string;
5293
+ /**
5294
+ * Replaces the checkmark icon with a spinning loading indicator, for a message describing in-progress work (e.g. "Uploading files...") rather than a completed result.
5295
+ * @default false
5296
+ */
5297
+ "loading"?: boolean;
5298
+ /**
5299
+ * Fires when the action button is clicked. Ignored/never fires if `actionLabel` isn't set.
5300
+ */
5301
+ "onBsAction"?: (event: BsSnackbarCustomEvent<void>) => void;
5302
+ /**
5303
+ * Fires when the close button is clicked. This component doesn't remove itself from the DOM -- the consumer is expected to do that (or hide it) in response to this event.
5304
+ */
5305
+ "onBsDismiss"?: (event: BsSnackbarCustomEvent<void>) => void;
5306
+ /**
5307
+ * Color/semantic variant. `default` is the neutral (dark, inverse-surface) bar Figma shows as the baseline; `info`/`warning`/`success`/`error` use their matching container/text tokens.
5308
+ * @default 'default'
5309
+ */
5310
+ "variant"?: BsSnackbarVariant;
5311
+ }
4352
5312
  /**
4353
5313
  * A single citation row inside `bs-chatbot-sources-drawer` -- a file icon + filename on the first
4354
5314
  * line, the originating system and version on the second, and a trailing "open" arrow.
@@ -4402,6 +5362,98 @@ declare namespace LocalJSX {
4402
5362
  */
4403
5363
  "version"?: string;
4404
5364
  }
5365
+ /**
5366
+ * A sequence of named steps showing overall progress through a multi-step flow (e.g. a checkout,
5367
+ * an onboarding wizard) -- each step reads as enabled (not yet reached), current, done, error, or
5368
+ * disabled, connected by a rail between them.
5369
+ * This container is intentionally thin: it renders a `<slot>` for `<bs-stepper-step>` children and
5370
+ * propagates `currentStep`/`direction`/`showDescription` down to them as JS properties whenever any
5371
+ * of those change or the slotted children themselves change -- the same "container pushes state
5372
+ * onto its slotted children" pattern `bs-tabs` uses for `selected` and `bs-breadcrumbs` uses for
5373
+ * `size`. Each step computes its own `enabled`/`current`/`done` state from its position among its
5374
+ * siblings relative to `currentStep`, unless that step's own `error`/`disabled` prop overrides it.
5375
+ * This is a static status display, not an interactive control -- Figma's spec shows no
5376
+ * hover/pressed treatment on any step, so nothing here is clickable.
5377
+ * ## When to use
5378
+ * - Showing where the user is in a fixed, ordered, multi-step flow.
5379
+ * ## When not to use
5380
+ * - A flow whose steps aren't fixed/known in advance -- a stepper implies the full sequence is
5381
+ * already known.
5382
+ * - As a substitute for actual in-page navigation between steps -- pair this with real controls
5383
+ * (Next/Back buttons) elsewhere in the flow, this component only displays status.
5384
+ */
5385
+ interface BsStepper {
5386
+ /**
5387
+ * 0-indexed: which step is current. Every step before this index reads as "done" (unless that step's own `error`/`disabled` overrides it), every step after reads as "enabled".
5388
+ * @default 0
5389
+ */
5390
+ "currentStep"?: number;
5391
+ /**
5392
+ * `horizontal` (icon above name/description, connected by a horizontal rail) or `vertical` (icon beside name/description, connected by a vertical rail). Propagated to every slotted `bs-stepper-step`, and reflected as an attribute so this container's own `:host` CSS can switch its `flex-direction` to match -- a bare `<slot>` with no wrapping element (see `render()`) means the slotted steps' flex-row/column layout comes directly from `:host` here, not from any wrapper div.
5393
+ * @default 'horizontal'
5394
+ */
5395
+ "direction"?: BsStepperDirection;
5396
+ /**
5397
+ * Whether each step's description renders at all. Propagated to every slotted `bs-stepper-step`.
5398
+ * @default true
5399
+ */
5400
+ "showDescription"?: boolean;
5401
+ }
5402
+ /**
5403
+ * A single step within a `<bs-stepper>` sequence: an icon/indicator plus a name and optional
5404
+ * description, connected to the next step by a trailing rail.
5405
+ * `computedState` is set automatically by the parent `<bs-stepper>` based on this step's position
5406
+ * relative to its `currentStep` (before it = "done", at it = "current", after it = "enabled") --
5407
+ * same "container pushes state onto its slotted children" pattern `bs-tabs` uses for `selected`
5408
+ * and `bs-breadcrumbs` uses for `size`. This step's own `error`/`disabled` props, when set directly
5409
+ * by the consumer, override that computed value -- e.g. a step before `currentStep` would normally
5410
+ * read as "done", but `error` on that step wins regardless.
5411
+ * The trailing rail is owned by this component, not the container: `:host(:last-child)` hides it
5412
+ * on whichever step is visually last, mirroring `bs-breadcrumb`'s own `:host(:first-child)` rule
5413
+ * for its leading separator (same technique, opposite end -- see that component for why pure DOM
5414
+ * position, not CSS `:last-of-type`, is what actually needs checking here too).
5415
+ * ## When to use
5416
+ * - As a child of `<bs-stepper>`, one per step in the sequence.
5417
+ * ## When not to use
5418
+ * - Standalone, outside a `<bs-stepper>` wrapper -- `computedState`/`direction`/`showDescription`
5419
+ * depend on that parent propagating them; alone, this defaults to `enabled`/`horizontal`/`true`.
5420
+ */
5421
+ interface BsStepperStep {
5422
+ /**
5423
+ * Set automatically by the parent `<bs-stepper>` from this step's position relative to its `currentStep` -- see the class doc above. Can be set directly for a standalone step.
5424
+ * @default 'enabled'
5425
+ */
5426
+ "computedState"?: BsStepperStepComputedState;
5427
+ /**
5428
+ * Optional supporting text below the name. Only rendered when `showDescription` (propagated from the parent `<bs-stepper>`) is also true.
5429
+ */
5430
+ "description"?: string;
5431
+ /**
5432
+ * Set automatically by the parent `<bs-stepper>`, propagated to every slotted step.
5433
+ * @default 'horizontal'
5434
+ */
5435
+ "direction"?: BsStepperDirection1;
5436
+ /**
5437
+ * Shows the disabled treatment for this step, regardless of its `computedState`. Takes priority over `error` if both are somehow set.
5438
+ * @default false
5439
+ */
5440
+ "disabled"?: boolean;
5441
+ /**
5442
+ * Shows the error treatment for this step, regardless of its `computedState`.
5443
+ * @default false
5444
+ */
5445
+ "error"?: boolean;
5446
+ /**
5447
+ * This step's name/title.
5448
+ * @default ''
5449
+ */
5450
+ "name"?: string;
5451
+ /**
5452
+ * Set automatically by the parent `<bs-stepper>`, propagated to every slotted step.
5453
+ * @default true
5454
+ */
5455
+ "showDescription"?: boolean;
5456
+ }
4405
5457
  /**
4406
5458
  * A toggle switch for an on/off setting that takes effect immediately (no explicit form
4407
5459
  * submission required).
@@ -4564,9 +5616,31 @@ declare namespace LocalJSX {
4564
5616
  interface BsAttachmentListAttributes {
4565
5617
  "ariaLabel": string | null;
4566
5618
  }
5619
+ interface BsAvatarAttributes {
5620
+ "type": BsAvatarType;
5621
+ "size": BsAvatarSize;
5622
+ "initials": string | null;
5623
+ "src": string | null;
5624
+ "alt": string | null;
5625
+ "ariaLabel": string | null;
5626
+ "disabled": boolean;
5627
+ }
4567
5628
  interface BsBadgeAttributes {
4568
5629
  "variant": BsBadgeVariant;
4569
5630
  }
5631
+ interface BsBreadcrumbAttributes {
5632
+ "href": string;
5633
+ "current": boolean;
5634
+ "size": BsBreadcrumbSize;
5635
+ }
5636
+ interface BsBreadcrumbOverflowAttributes {
5637
+ "overflowLabel": string;
5638
+ "size": BsBreadcrumbSize;
5639
+ }
5640
+ interface BsBreadcrumbsAttributes {
5641
+ "label": string;
5642
+ "size": BsBreadcrumbSize;
5643
+ }
4570
5644
  interface BsButtonAttributes {
4571
5645
  "variant": BsButtonVariant;
4572
5646
  "size": BsButtonSize;
@@ -4610,6 +5684,9 @@ declare namespace LocalJSX {
4610
5684
  "error": boolean;
4611
5685
  "ariaLabel": string | null;
4612
5686
  }
5687
+ interface BsCheckboxSkeletonAttributes {
5688
+ "size": BsCheckboxSize;
5689
+ }
4613
5690
  interface BsComposerAttributes {
4614
5691
  "variant": BsComposerVariant;
4615
5692
  "placeholder": string;
@@ -4630,6 +5707,12 @@ declare namespace LocalJSX {
4630
5707
  "sortDirection": 'asc' | 'desc';
4631
5708
  "selectable": boolean;
4632
5709
  }
5710
+ interface BsDialogAttributes {
5711
+ "open": boolean;
5712
+ "heading": string;
5713
+ "size": BsDialogSize;
5714
+ "centered": boolean;
5715
+ }
4633
5716
  interface BsIconButtonAttributes {
4634
5717
  "variant": BsIconButtonVariant;
4635
5718
  "size": BsIconButtonSize;
@@ -4681,16 +5764,12 @@ declare namespace LocalJSX {
4681
5764
  interface BsMenuItemAttributes {
4682
5765
  "disabled": boolean;
4683
5766
  }
4684
- interface BsModalAttributes {
4685
- "open": boolean;
4686
- "heading": string;
4687
- "size": BsModalSize;
4688
- }
4689
5767
  interface BsNavigationDrawerAttributes {
4690
5768
  "heading": string;
4691
5769
  "collapsible": boolean;
4692
5770
  "collapsed": boolean;
4693
5771
  "logoBackground": 'auto' | 'light' | 'dark';
5772
+ "showLogo": boolean;
4694
5773
  }
4695
5774
  interface BsNavigationDrawerItemAttributes {
4696
5775
  "selected": boolean;
@@ -4707,6 +5786,13 @@ declare namespace LocalJSX {
4707
5786
  "skipToContentLabel": string;
4708
5787
  "logoBackground": 'auto' | 'light' | 'dark';
4709
5788
  }
5789
+ interface BsPaginationAttributes {
5790
+ "totalPages": number;
5791
+ "currentPage": number;
5792
+ "siblingCount": number;
5793
+ "previousLabel": string;
5794
+ "nextLabel": string;
5795
+ }
4710
5796
  interface BsRadioAttributes {
4711
5797
  "name": string;
4712
5798
  "value": string;
@@ -4727,6 +5813,11 @@ declare namespace LocalJSX {
4727
5813
  "disabled": boolean;
4728
5814
  "ariaLabel": string | null;
4729
5815
  }
5816
+ interface BsSnackbarAttributes {
5817
+ "variant": BsSnackbarVariant;
5818
+ "loading": boolean;
5819
+ "actionLabel": string;
5820
+ }
4730
5821
  interface BsSourceLinkAttributes {
4731
5822
  "fileName": string;
4732
5823
  "sourceName": string;
@@ -4734,6 +5825,20 @@ declare namespace LocalJSX {
4734
5825
  "href": string;
4735
5826
  "target": string;
4736
5827
  }
5828
+ interface BsStepperAttributes {
5829
+ "currentStep": number;
5830
+ "direction": BsStepperDirection;
5831
+ "showDescription": boolean;
5832
+ }
5833
+ interface BsStepperStepAttributes {
5834
+ "name": string;
5835
+ "description": string;
5836
+ "error": boolean;
5837
+ "disabled": boolean;
5838
+ "computedState": BsStepperStepComputedState;
5839
+ "direction": BsStepperDirection;
5840
+ "showDescription": boolean;
5841
+ }
4737
5842
  interface BsSwitchAttributes {
4738
5843
  "size": BsSwitchSize;
4739
5844
  "checked": boolean;
@@ -4760,7 +5865,11 @@ declare namespace LocalJSX {
4760
5865
  "bs-ai-thinking": Omit<BsAiThinking, keyof BsAiThinkingAttributes> & { [K in keyof BsAiThinking & keyof BsAiThinkingAttributes]?: BsAiThinking[K] } & { [K in keyof BsAiThinking & keyof BsAiThinkingAttributes as `attr:${K}`]?: BsAiThinkingAttributes[K] } & { [K in keyof BsAiThinking & keyof BsAiThinkingAttributes as `prop:${K}`]?: BsAiThinking[K] };
4761
5866
  "bs-attachment": Omit<BsAttachment, keyof BsAttachmentAttributes> & { [K in keyof BsAttachment & keyof BsAttachmentAttributes]?: BsAttachment[K] } & { [K in keyof BsAttachment & keyof BsAttachmentAttributes as `attr:${K}`]?: BsAttachmentAttributes[K] } & { [K in keyof BsAttachment & keyof BsAttachmentAttributes as `prop:${K}`]?: BsAttachment[K] };
4762
5867
  "bs-attachment-list": Omit<BsAttachmentList, keyof BsAttachmentListAttributes> & { [K in keyof BsAttachmentList & keyof BsAttachmentListAttributes]?: BsAttachmentList[K] } & { [K in keyof BsAttachmentList & keyof BsAttachmentListAttributes as `attr:${K}`]?: BsAttachmentListAttributes[K] } & { [K in keyof BsAttachmentList & keyof BsAttachmentListAttributes as `prop:${K}`]?: BsAttachmentList[K] };
5868
+ "bs-avatar": Omit<BsAvatar, keyof BsAvatarAttributes> & { [K in keyof BsAvatar & keyof BsAvatarAttributes]?: BsAvatar[K] } & { [K in keyof BsAvatar & keyof BsAvatarAttributes as `attr:${K}`]?: BsAvatarAttributes[K] } & { [K in keyof BsAvatar & keyof BsAvatarAttributes as `prop:${K}`]?: BsAvatar[K] };
4763
5869
  "bs-badge": Omit<BsBadge, keyof BsBadgeAttributes> & { [K in keyof BsBadge & keyof BsBadgeAttributes]?: BsBadge[K] } & { [K in keyof BsBadge & keyof BsBadgeAttributes as `attr:${K}`]?: BsBadgeAttributes[K] } & { [K in keyof BsBadge & keyof BsBadgeAttributes as `prop:${K}`]?: BsBadge[K] };
5870
+ "bs-breadcrumb": Omit<BsBreadcrumb, keyof BsBreadcrumbAttributes> & { [K in keyof BsBreadcrumb & keyof BsBreadcrumbAttributes]?: BsBreadcrumb[K] } & { [K in keyof BsBreadcrumb & keyof BsBreadcrumbAttributes as `attr:${K}`]?: BsBreadcrumbAttributes[K] } & { [K in keyof BsBreadcrumb & keyof BsBreadcrumbAttributes as `prop:${K}`]?: BsBreadcrumb[K] };
5871
+ "bs-breadcrumb-overflow": Omit<BsBreadcrumbOverflow, keyof BsBreadcrumbOverflowAttributes> & { [K in keyof BsBreadcrumbOverflow & keyof BsBreadcrumbOverflowAttributes]?: BsBreadcrumbOverflow[K] } & { [K in keyof BsBreadcrumbOverflow & keyof BsBreadcrumbOverflowAttributes as `attr:${K}`]?: BsBreadcrumbOverflowAttributes[K] } & { [K in keyof BsBreadcrumbOverflow & keyof BsBreadcrumbOverflowAttributes as `prop:${K}`]?: BsBreadcrumbOverflow[K] };
5872
+ "bs-breadcrumbs": Omit<BsBreadcrumbs, keyof BsBreadcrumbsAttributes> & { [K in keyof BsBreadcrumbs & keyof BsBreadcrumbsAttributes]?: BsBreadcrumbs[K] } & { [K in keyof BsBreadcrumbs & keyof BsBreadcrumbsAttributes as `attr:${K}`]?: BsBreadcrumbsAttributes[K] } & { [K in keyof BsBreadcrumbs & keyof BsBreadcrumbsAttributes as `prop:${K}`]?: BsBreadcrumbs[K] };
4764
5873
  "bs-button": Omit<BsButton, keyof BsButtonAttributes> & { [K in keyof BsButton & keyof BsButtonAttributes]?: BsButton[K] } & { [K in keyof BsButton & keyof BsButtonAttributes as `attr:${K}`]?: BsButtonAttributes[K] } & { [K in keyof BsButton & keyof BsButtonAttributes as `prop:${K}`]?: BsButton[K] };
4765
5874
  "bs-button-skeleton": Omit<BsButtonSkeleton, keyof BsButtonSkeletonAttributes> & { [K in keyof BsButtonSkeleton & keyof BsButtonSkeletonAttributes]?: BsButtonSkeleton[K] } & { [K in keyof BsButtonSkeleton & keyof BsButtonSkeletonAttributes as `attr:${K}`]?: BsButtonSkeletonAttributes[K] } & { [K in keyof BsButtonSkeleton & keyof BsButtonSkeletonAttributes as `prop:${K}`]?: BsButtonSkeleton[K] };
4766
5875
  "bs-card": Omit<BsCard, keyof BsCardAttributes> & { [K in keyof BsCard & keyof BsCardAttributes]?: BsCard[K] } & { [K in keyof BsCard & keyof BsCardAttributes as `attr:${K}`]?: BsCardAttributes[K] } & { [K in keyof BsCard & keyof BsCardAttributes as `prop:${K}`]?: BsCard[K] };
@@ -4770,22 +5879,27 @@ declare namespace LocalJSX {
4770
5879
  "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] };
4771
5880
  "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] };
4772
5881
  "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] };
5882
+ "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] };
4773
5883
  "bs-composer": Omit<BsComposer, keyof BsComposerAttributes> & { [K in keyof BsComposer & keyof BsComposerAttributes]?: BsComposer[K] } & { [K in keyof BsComposer & keyof BsComposerAttributes as `attr:${K}`]?: BsComposerAttributes[K] } & { [K in keyof BsComposer & keyof BsComposerAttributes as `prop:${K}`]?: BsComposer[K] };
4774
5884
  "bs-composer-status-banner": Omit<BsComposerStatusBanner, keyof BsComposerStatusBannerAttributes> & { [K in keyof BsComposerStatusBanner & keyof BsComposerStatusBannerAttributes]?: BsComposerStatusBanner[K] } & { [K in keyof BsComposerStatusBanner & keyof BsComposerStatusBannerAttributes as `attr:${K}`]?: BsComposerStatusBannerAttributes[K] } & { [K in keyof BsComposerStatusBanner & keyof BsComposerStatusBannerAttributes as `prop:${K}`]?: BsComposerStatusBanner[K] };
4775
5885
  "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] };
5886
+ "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] };
4776
5887
  "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] };
4777
5888
  "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] };
4778
5889
  "bs-input": Omit<BsInput, keyof BsInputAttributes> & { [K in keyof BsInput & keyof BsInputAttributes]?: BsInput[K] } & { [K in keyof BsInput & keyof BsInputAttributes as `attr:${K}`]?: BsInputAttributes[K] } & { [K in keyof BsInput & keyof BsInputAttributes as `prop:${K}`]?: BsInput[K] };
4779
5890
  "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] };
4780
5891
  "bs-menu": BsMenu;
4781
5892
  "bs-menu-item": Omit<BsMenuItem, keyof BsMenuItemAttributes> & { [K in keyof BsMenuItem & keyof BsMenuItemAttributes]?: BsMenuItem[K] } & { [K in keyof BsMenuItem & keyof BsMenuItemAttributes as `attr:${K}`]?: BsMenuItemAttributes[K] } & { [K in keyof BsMenuItem & keyof BsMenuItemAttributes as `prop:${K}`]?: BsMenuItem[K] };
4782
- "bs-modal": Omit<BsModal, keyof BsModalAttributes> & { [K in keyof BsModal & keyof BsModalAttributes]?: BsModal[K] } & { [K in keyof BsModal & keyof BsModalAttributes as `attr:${K}`]?: BsModalAttributes[K] } & { [K in keyof BsModal & keyof BsModalAttributes as `prop:${K}`]?: BsModal[K] };
4783
5893
  "bs-navigation-drawer": Omit<BsNavigationDrawer, keyof BsNavigationDrawerAttributes> & { [K in keyof BsNavigationDrawer & keyof BsNavigationDrawerAttributes]?: BsNavigationDrawer[K] } & { [K in keyof BsNavigationDrawer & keyof BsNavigationDrawerAttributes as `attr:${K}`]?: BsNavigationDrawerAttributes[K] } & { [K in keyof BsNavigationDrawer & keyof BsNavigationDrawerAttributes as `prop:${K}`]?: BsNavigationDrawer[K] };
4784
5894
  "bs-navigation-drawer-item": Omit<BsNavigationDrawerItem, keyof BsNavigationDrawerItemAttributes> & { [K in keyof BsNavigationDrawerItem & keyof BsNavigationDrawerItemAttributes]?: BsNavigationDrawerItem[K] } & { [K in keyof BsNavigationDrawerItem & keyof BsNavigationDrawerItemAttributes as `attr:${K}`]?: BsNavigationDrawerItemAttributes[K] } & { [K in keyof BsNavigationDrawerItem & keyof BsNavigationDrawerItemAttributes as `prop:${K}`]?: BsNavigationDrawerItem[K] };
4785
5895
  "bs-navigation-header": Omit<BsNavigationHeader, keyof BsNavigationHeaderAttributes> & { [K in keyof BsNavigationHeader & keyof BsNavigationHeaderAttributes]?: BsNavigationHeader[K] } & { [K in keyof BsNavigationHeader & keyof BsNavigationHeaderAttributes as `attr:${K}`]?: BsNavigationHeaderAttributes[K] } & { [K in keyof BsNavigationHeader & keyof BsNavigationHeaderAttributes as `prop:${K}`]?: BsNavigationHeader[K] };
5896
+ "bs-pagination": Omit<BsPagination, keyof BsPaginationAttributes> & { [K in keyof BsPagination & keyof BsPaginationAttributes]?: BsPagination[K] } & { [K in keyof BsPagination & keyof BsPaginationAttributes as `attr:${K}`]?: BsPaginationAttributes[K] } & { [K in keyof BsPagination & keyof BsPaginationAttributes as `prop:${K}`]?: BsPagination[K] };
4786
5897
  "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] };
4787
5898
  "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] };
5899
+ "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] };
4788
5900
  "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] };
5901
+ "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] };
5902
+ "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] };
4789
5903
  "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] };
4790
5904
  "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] };
4791
5905
  "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] };
@@ -4909,6 +6023,26 @@ declare module "@stencil/core" {
4909
6023
  * hover/focus once the row is scrollable. Aliased to `--bs-neutral-300`.
4910
6024
  */
4911
6025
  "bs-attachment-list": LocalJSX.IntrinsicElements["bs-attachment-list"] & JSXBase.HTMLAttributes<HTMLBsAttachmentListElement>;
6026
+ /**
6027
+ * A circular representation of a person or entity -- a photo, initials, or (as a fallback when
6028
+ * neither is available) a generic user-silhouette icon.
6029
+ * ## When to use
6030
+ * - Representing a specific user or account: in a header, a comment, a member list, etc.
6031
+ * - `type="initials"` when a photo isn't available but a name is (e.g. "Sam Lee" -> "SL").
6032
+ * - `type="icon"` (the default) as the generic fallback when neither a photo nor a name/initials
6033
+ * is available yet.
6034
+ * ## When not to use
6035
+ * - A company/brand logo -- use `bs-logo` instead.
6036
+ * This component is decorative/informational by default, not an interactive control -- it renders
6037
+ * a plain `<span>`/`<img>`, not a `<button>`. Figma's own component set includes hover/focused/
6038
+ * pressed states (e.g. for an account-switcher trigger use case), which this implements as real
6039
+ * `:hover`/`:focus-visible`/`:active` CSS on the host itself -- so wrapping this in your own
6040
+ * `<button>`, or setting `tabindex` and a click handler on the `<bs-avatar>` element directly, gets
6041
+ * the matching visual treatment for free with no extra wiring. Left genuinely non-interactive
6042
+ * (no implicit role/tabindex of its own) so it doesn't misrepresent a purely decorative avatar
6043
+ * (e.g. next to a comment) as a control when it isn't one.
6044
+ */
6045
+ "bs-avatar": LocalJSX.IntrinsicElements["bs-avatar"] & JSXBase.HTMLAttributes<HTMLBsAvatarElement>;
4912
6046
  /**
4913
6047
  * A small status or category pill, usually paired with a label or list item.
4914
6048
  * ## When to use
@@ -4919,6 +6053,67 @@ declare module "@stencil/core" {
4919
6053
  * - For long text — badges are sized for one or two words.
4920
6054
  */
4921
6055
  "bs-badge": LocalJSX.IntrinsicElements["bs-badge"] & JSXBase.HTMLAttributes<HTMLBsBadgeElement>;
6056
+ /**
6057
+ * A single crumb within a `<bs-breadcrumbs>` trail: a leading separator icon plus either a link,
6058
+ * plain text, or the current-page label, depending on `current`/`href`.
6059
+ * Rendering follows the W3C ARIA Authoring Practices breadcrumb pattern
6060
+ * (https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/): the current page is marked
6061
+ * `aria-current="page"` and is never a link -- this holds even when `href` is also set, unlike
6062
+ * Carbon Design System's `cds-breadcrumb-item`, which allows a link on the current item.
6063
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
6064
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
6065
+ * accessibility tree needs this explicit role to preserve the list's semantics.
6066
+ * ## When to use
6067
+ * - As one crumb inside a `<bs-breadcrumbs>` trail.
6068
+ * ## When not to use
6069
+ * - Standalone, outside a `<bs-breadcrumbs>` wrapper -- its `<ol>`/`<nav>` context and
6070
+ * first-child-aware separator hiding depend on that parent structure.
6071
+ */
6072
+ "bs-breadcrumb": LocalJSX.IntrinsicElements["bs-breadcrumb"] & JSXBase.HTMLAttributes<HTMLBsBreadcrumbElement>;
6073
+ /**
6074
+ * A manually-placed collapsed-items disclosure for a `<bs-breadcrumbs>` trail: a leading separator
6075
+ * plus an icon-only ellipsis button that reveals a `bs-menu` popup listing every hidden crumb.
6076
+ * `items` is JS-property-only -- must be set as a JS property (`el.items = [...]`), not an HTML
6077
+ * attribute, since attributes can only carry strings. See CONVENTIONS.md.
6078
+ * Unlike an earlier `bs-breadcrumbs`-owned automatic `maxItems` collapse, this component does no
6079
+ * collapsing logic itself -- the consumer decides which crumbs to hide and places this element
6080
+ * wherever they want the disclosure, exactly matching Carbon Design System's own approach (Carbon
6081
+ * doesn't auto-collapse breadcrumbs either; a consumer there manually decides what's visible).
6082
+ * Hidden items with an `href` render as real `<a href>` rows inside the popup, not `bs-menu-item`
6083
+ * (which renders a `<button>`) -- this matters because consuming apps commonly use client-side
6084
+ * routers that intercept clicks on real `<a>` tags to do `preventDefault` + push-state navigation.
6085
+ * Rendering hidden links any other way (e.g. `window.location`) would silently break client-side
6086
+ * routing for hidden crumbs while working fine for visible ones. Hidden items without an `href`
6087
+ * render as plain non-interactive text, matching how `bs-breadcrumb` itself handles link vs.
6088
+ * no-link crumbs.
6089
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
6090
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
6091
+ * accessibility tree needs this explicit role to preserve the list's semantics.
6092
+ * ## When to use
6093
+ * - Inside a `<bs-breadcrumbs>` trail, wherever the consumer wants an interactive disclosure for
6094
+ * crumbs they've chosen not to render directly.
6095
+ * ## When not to use
6096
+ * - As an automatic collapsing mechanism -- there is none; the consumer decides what's hidden.
6097
+ */
6098
+ "bs-breadcrumb-overflow": LocalJSX.IntrinsicElements["bs-breadcrumb-overflow"] & JSXBase.HTMLAttributes<HTMLBsBreadcrumbOverflowElement>;
6099
+ /**
6100
+ * A breadcrumb trail container: a real `<nav>` landmark wrapping an `<ol>`, meant to be populated
6101
+ * with slotted `<bs-breadcrumb>` (and, where the consumer wants a collapsed-items disclosure,
6102
+ * `<bs-breadcrumb-overflow>`) children -- same composition-over-configuration architecture as
6103
+ * Carbon Design System's `cds-breadcrumb`/`cds-breadcrumb-item`/`cds-breadcrumb-link`.
6104
+ * This component is intentionally thin: it owns only the `<nav>` landmark and list semantics.
6105
+ * Unlike an earlier `items`-array-driven design, there is no automatic collapsing here -- exactly
6106
+ * like Carbon, the consumer decides what's visible and manually places a `<bs-breadcrumb-overflow>`
6107
+ * wherever they want a collapsed-items disclosure. See `bs-breadcrumbs.mdx` for the consolidated
6108
+ * docs covering all three components in this feature area.
6109
+ * ## When to use
6110
+ * - Showing a user's current location within a hierarchical page structure, with a path back to
6111
+ * its ancestors.
6112
+ * ## When not to use
6113
+ * - Primary in-app navigation -- use `bs-navigation-drawer`/`bs-navigation-header` instead.
6114
+ * - A flat set of unrelated pages with no hierarchy -- breadcrumbs imply ancestry, not just history.
6115
+ */
6116
+ "bs-breadcrumbs": LocalJSX.IntrinsicElements["bs-breadcrumbs"] & JSXBase.HTMLAttributes<HTMLBsBreadcrumbsElement>;
4922
6117
  /**
4923
6118
  * A clickable action element for the single most important action in a given context.
4924
6119
  * ## When to use
@@ -5141,6 +6336,30 @@ declare module "@stencil/core" {
5141
6336
  * - An on/off setting that takes effect immediately (no explicit form submission) -- use `bs-switch`.
5142
6337
  */
5143
6338
  "bs-checkbox": LocalJSX.IntrinsicElements["bs-checkbox"] & JSXBase.HTMLAttributes<HTMLBsCheckboxElement>;
6339
+ /**
6340
+ * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
6341
+ * known yet (e.g. still being fetched from an API). Renders a small square (matching the
6342
+ * checkbox's own box) beside a text-bar placeholder (standing in for the label), both pulsing
6343
+ * together, sized to match `bs-checkbox`'s `sm`/`md`/`lg` box dimensions so layout doesn't shift
6344
+ * once the real checkbox renders.
6345
+ * ## When to use
6346
+ * - In place of a `bs-checkbox` whose label/checked state depends on data that hasn't loaded yet.
6347
+ * ## When not to use
6348
+ * - While a checkbox's own change handler is running (e.g. a save request in flight) -- render the
6349
+ * real `bs-checkbox` itself; this component is not a saving-in-progress spinner.
6350
+ * @prop --bs-checkbox-skeleton-size-sm - Box width/height at `size="sm"`. Aliased to
6351
+ * `--bs-spacing-200`, mirroring `bs-checkbox`'s own `--bs-checkbox-size-sm` -- not read directly
6352
+ * from it, since these are two separate shadow roots.
6353
+ * @prop --bs-checkbox-skeleton-size-md - Box width/height at `size="md"`. Aliased to
6354
+ * `--bs-spacing-250`.
6355
+ * @prop --bs-checkbox-skeleton-size-lg - Box width/height at `size="lg"`. Aliased to
6356
+ * `--bs-spacing-300`.
6357
+ * @prop --bs-checkbox-skeleton-gap - Gap between the box and label placeholders. Aliased to
6358
+ * `--bs-spacing-100`, mirroring `bs-checkbox`'s own `--bs-checkbox-gap`.
6359
+ * @prop --bs-checkbox-skeleton-label-width - Width of the label placeholder bar. Defaults to
6360
+ * `96px`.
6361
+ */
6362
+ "bs-checkbox-skeleton": LocalJSX.IntrinsicElements["bs-checkbox-skeleton"] & JSXBase.HTMLAttributes<HTMLBsCheckboxSkeletonElement>;
5144
6363
  /**
5145
6364
  * A chat composer input for Genie AI-style conversational interfaces: a text field
5146
6365
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -5251,6 +6470,24 @@ declare module "@stencil/core" {
5251
6470
  * - Deeply nested/hierarchical data — this component renders one flat row per record.
5252
6471
  */
5253
6472
  "bs-data-table": LocalJSX.IntrinsicElements["bs-data-table"] & JSXBase.HTMLAttributes<HTMLBsDataTableElement>;
6473
+ /**
6474
+ * An overlay dialog that interrupts the current flow for a focused task or confirmation.
6475
+ * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
6476
+ * ## When to use
6477
+ * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
6478
+ * - A short, focused task that doesn't warrant navigating to a new page.
6479
+ * ## When not to use
6480
+ * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
6481
+ * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
6482
+ * dialog that just gets taller and taller.
6483
+ * Two additional slots cover the Figma "Dialog" component's other states: `image` (a hero image
6484
+ * across the top, close button floats over it instead of sitting in the header row) and `icon`
6485
+ * (only rendered when `centered` is set, e.g. a success checkmark above a centered heading). The
6486
+ * close button "floats" (absolute-positioned, top-right of the dialog, with its own background)
6487
+ * whenever `centered` is true or the `image` slot has content -- otherwise it's the plain inline
6488
+ * button in the header row next to the heading, same as before this addition.
6489
+ */
6490
+ "bs-dialog": LocalJSX.IntrinsicElements["bs-dialog"] & JSXBase.HTMLAttributes<HTMLBsDialogElement>;
5254
6491
  /**
5255
6492
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
5256
6493
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -5374,25 +6611,14 @@ declare module "@stencil/core" {
5374
6611
  * @prop --bs-menu-item-line-height - Aliased to `--bs-line-height-body-md`.
5375
6612
  */
5376
6613
  "bs-menu-item": LocalJSX.IntrinsicElements["bs-menu-item"] & JSXBase.HTMLAttributes<HTMLBsMenuItemElement>;
5377
- /**
5378
- * An overlay dialog that interrupts the current flow for a focused task or confirmation.
5379
- * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
5380
- * ## When to use
5381
- * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
5382
- * - A short, focused task that doesn't warrant navigating to a new page.
5383
- * ## When not to use
5384
- * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
5385
- * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
5386
- * modal that just gets taller and taller.
5387
- */
5388
- "bs-modal": LocalJSX.IntrinsicElements["bs-modal"] & JSXBase.HTMLAttributes<HTMLBsModalElement>;
5389
6614
  /**
5390
6615
  * A left-side persistent navigation sidebar: the BrandSync logo, a "Main Menu" title with a
5391
6616
  * collapse toggle, a reserved slot for a search field, and a scrollable list of nav items.
5392
6617
  * ## When to use
5393
6618
  * - The primary in-app navigation, shown alongside `bs-navigation-header` (typically that
5394
6619
  * header's `with-navigation-drawer` alignment, which omits its own logo since this component
5395
- * already renders one).
6620
+ * already renders one -- or the reverse pairing, this drawer's own `showLogo={false}` alongside
6621
+ * a header that keeps its logo instead, see that prop's own docs).
5396
6622
  * ## When not to use
5397
6623
  * - The top navigation bar itself -- use `bs-navigation-header` instead.
5398
6624
  * This component renders a real `<nav>` landmark (no explicit `role` needed -- `<nav>` already
@@ -5468,6 +6694,22 @@ declare module "@stencil/core" {
5468
6694
  * `right` slot content pushed to the far right.
5469
6695
  */
5470
6696
  "bs-navigation-header": LocalJSX.IntrinsicElements["bs-navigation-header"] & JSXBase.HTMLAttributes<HTMLBsNavigationHeaderElement>;
6697
+ /**
6698
+ * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
6699
+ * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
6700
+ * numbered pagination); its other type ("jumper" -- a rows-per-page dropdown plus a page-jump
6701
+ * input) is a structurally different composite widget and isn't covered by this component.
6702
+ * `totalPages`/`currentPage` drive everything -- this computes which page numbers to show and
6703
+ * where to collapse into `...` itself, the consumer never builds the button list by hand.
6704
+ * ## When to use
6705
+ * - Paging through a large, ordered result set (a table, a search results list) where jumping
6706
+ * directly to a specific page number is useful.
6707
+ * ## When not to use
6708
+ * - Infinite-scroll or "load more" patterns -- those don't have a fixed, addressable page number.
6709
+ * - A huge page count where users realistically only ever go forward/back one page at a time --
6710
+ * plain prev/next controls (no numbers) are simpler there.
6711
+ */
6712
+ "bs-pagination": LocalJSX.IntrinsicElements["bs-pagination"] & JSXBase.HTMLAttributes<HTMLBsPaginationElement>;
5471
6713
  /**
5472
6714
  * A single radio button with its label, for one mutually-exclusive choice within a group.
5473
6715
  * ## When to use
@@ -5495,6 +6737,26 @@ declare module "@stencil/core" {
5495
6737
  * - A small, fixed set of mutually exclusive choices -- use a radio group instead.
5496
6738
  */
5497
6739
  "bs-slider": LocalJSX.IntrinsicElements["bs-slider"] & JSXBase.HTMLAttributes<HTMLBsSliderElement>;
6740
+ /**
6741
+ * A transient status bar for confirming the result of an action (e.g. "Files uploaded
6742
+ * successfully.") -- an icon (or loading spinner), a message, an optional action, and a close
6743
+ * button.
6744
+ * This component only renders the bar itself -- it doesn't manage its own visibility, timing, or
6745
+ * stacking. A consumer (typically a small "toast manager" utility) creates one per message and
6746
+ * removes it from the DOM again, whether on a timer or on `bsDismiss`. Figma's spec doesn't show
6747
+ * auto-dismiss timing at all (it's a static visual spec), so this deliberately doesn't invent one.
6748
+ * The icon is always the same checkmark glyph across every `variant`, just recolored -- matching
6749
+ * the Figma spec exactly, even though a checkmark for `variant="error"` reads a little oddly
6750
+ * semantically. Worth revisiting with severity-specific icons (warning triangle, error circle,
6751
+ * etc.) if the design updates to specify them.
6752
+ * ## When to use
6753
+ * - Confirming the outcome of an action that just happened (save succeeded, upload failed) without
6754
+ * interrupting the user's flow.
6755
+ * ## When not to use
6756
+ * - For a response that requires the user to make a decision before continuing -- use `bs-dialog`.
6757
+ * - For persistent, always-visible status -- a snackbar is inherently transient.
6758
+ */
6759
+ "bs-snackbar": LocalJSX.IntrinsicElements["bs-snackbar"] & JSXBase.HTMLAttributes<HTMLBsSnackbarElement>;
5498
6760
  /**
5499
6761
  * A single citation row inside `bs-chatbot-sources-drawer` -- a file icon + filename on the first
5500
6762
  * line, the originating system and version on the second, and a trailing "open" arrow.
@@ -5521,6 +6783,47 @@ declare module "@stencil/core" {
5521
6783
  * `--bs-text-secondary`.
5522
6784
  */
5523
6785
  "bs-source-link": LocalJSX.IntrinsicElements["bs-source-link"] & JSXBase.HTMLAttributes<HTMLBsSourceLinkElement>;
6786
+ /**
6787
+ * A sequence of named steps showing overall progress through a multi-step flow (e.g. a checkout,
6788
+ * an onboarding wizard) -- each step reads as enabled (not yet reached), current, done, error, or
6789
+ * disabled, connected by a rail between them.
6790
+ * This container is intentionally thin: it renders a `<slot>` for `<bs-stepper-step>` children and
6791
+ * propagates `currentStep`/`direction`/`showDescription` down to them as JS properties whenever any
6792
+ * of those change or the slotted children themselves change -- the same "container pushes state
6793
+ * onto its slotted children" pattern `bs-tabs` uses for `selected` and `bs-breadcrumbs` uses for
6794
+ * `size`. Each step computes its own `enabled`/`current`/`done` state from its position among its
6795
+ * siblings relative to `currentStep`, unless that step's own `error`/`disabled` prop overrides it.
6796
+ * This is a static status display, not an interactive control -- Figma's spec shows no
6797
+ * hover/pressed treatment on any step, so nothing here is clickable.
6798
+ * ## When to use
6799
+ * - Showing where the user is in a fixed, ordered, multi-step flow.
6800
+ * ## When not to use
6801
+ * - A flow whose steps aren't fixed/known in advance -- a stepper implies the full sequence is
6802
+ * already known.
6803
+ * - As a substitute for actual in-page navigation between steps -- pair this with real controls
6804
+ * (Next/Back buttons) elsewhere in the flow, this component only displays status.
6805
+ */
6806
+ "bs-stepper": LocalJSX.IntrinsicElements["bs-stepper"] & JSXBase.HTMLAttributes<HTMLBsStepperElement>;
6807
+ /**
6808
+ * A single step within a `<bs-stepper>` sequence: an icon/indicator plus a name and optional
6809
+ * description, connected to the next step by a trailing rail.
6810
+ * `computedState` is set automatically by the parent `<bs-stepper>` based on this step's position
6811
+ * relative to its `currentStep` (before it = "done", at it = "current", after it = "enabled") --
6812
+ * same "container pushes state onto its slotted children" pattern `bs-tabs` uses for `selected`
6813
+ * and `bs-breadcrumbs` uses for `size`. This step's own `error`/`disabled` props, when set directly
6814
+ * by the consumer, override that computed value -- e.g. a step before `currentStep` would normally
6815
+ * read as "done", but `error` on that step wins regardless.
6816
+ * The trailing rail is owned by this component, not the container: `:host(:last-child)` hides it
6817
+ * on whichever step is visually last, mirroring `bs-breadcrumb`'s own `:host(:first-child)` rule
6818
+ * for its leading separator (same technique, opposite end -- see that component for why pure DOM
6819
+ * position, not CSS `:last-of-type`, is what actually needs checking here too).
6820
+ * ## When to use
6821
+ * - As a child of `<bs-stepper>`, one per step in the sequence.
6822
+ * ## When not to use
6823
+ * - Standalone, outside a `<bs-stepper>` wrapper -- `computedState`/`direction`/`showDescription`
6824
+ * depend on that parent propagating them; alone, this defaults to `enabled`/`horizontal`/`true`.
6825
+ */
6826
+ "bs-stepper-step": LocalJSX.IntrinsicElements["bs-stepper-step"] & JSXBase.HTMLAttributes<HTMLBsStepperStepElement>;
5524
6827
  /**
5525
6828
  * A toggle switch for an on/off setting that takes effect immediately (no explicit form
5526
6829
  * submission required).