@brandsync/wc 0.0.12 → 0.1.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 (310) hide show
  1. package/custom-elements.json +1672 -226
  2. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  3. package/dist/brandsync-wc/p-00bb9bda.entry.js +1 -0
  4. package/dist/brandsync-wc/{p-64e2a7d7.entry.js → p-0847f5c0.entry.js} +1 -1
  5. package/dist/brandsync-wc/p-0ba35c3b.entry.js +1 -0
  6. package/dist/brandsync-wc/{p-2a65aabb.entry.js → p-0f3cb0c4.entry.js} +1 -1
  7. package/dist/brandsync-wc/{p-72a33f88.entry.js → p-10f6f3cd.entry.js} +1 -1
  8. package/dist/brandsync-wc/{p-88a0abee.entry.js → p-111974df.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-ef8522b5.entry.js → p-11f3fceb.entry.js} +1 -1
  10. package/dist/brandsync-wc/p-171fed0c.entry.js +1 -0
  11. package/dist/brandsync-wc/{p-57fdbb76.entry.js → p-18813680.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-f04db1b0.entry.js → p-1b7c9928.entry.js} +1 -1
  13. package/dist/brandsync-wc/p-1ce7dd64.entry.js +1 -0
  14. package/dist/brandsync-wc/p-2063a6d6.entry.js +1 -0
  15. package/dist/brandsync-wc/{p-1900f6ce.entry.js → p-20c24179.entry.js} +1 -1
  16. package/dist/brandsync-wc/{p-6e854e92.entry.js → p-321ed4d3.entry.js} +1 -1
  17. package/dist/brandsync-wc/{p-0eee5477.entry.js → p-38aad266.entry.js} +1 -1
  18. package/dist/brandsync-wc/{p-1c6fa697.entry.js → p-43e37883.entry.js} +1 -1
  19. package/dist/brandsync-wc/{p-8049f9f2.entry.js → p-55a8d4b5.entry.js} +1 -1
  20. package/dist/brandsync-wc/p-59ac2495.entry.js +1 -0
  21. package/dist/brandsync-wc/p-5ae9e60e.entry.js +1 -0
  22. package/dist/brandsync-wc/{p-8b662ee3.entry.js → p-6b469b2d.entry.js} +1 -1
  23. package/dist/brandsync-wc/{p-56c66448.entry.js → p-6d85fba4.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-20dbc6a1.entry.js → p-73217b90.entry.js} +1 -1
  26. package/dist/brandsync-wc/p-752c04c8.entry.js +1 -0
  27. package/dist/brandsync-wc/{p-12ec9e92.entry.js → p-79af762c.entry.js} +1 -1
  28. package/dist/brandsync-wc/p-81d49240.entry.js +1 -0
  29. package/dist/brandsync-wc/{p-3b31f7c7.entry.js → p-91551e7b.entry.js} +1 -1
  30. package/dist/brandsync-wc/p-917a5bbc.entry.js +1 -0
  31. package/dist/brandsync-wc/{p-dd09d335.entry.js → p-9876e83c.entry.js} +1 -1
  32. package/dist/brandsync-wc/{p-c320b6b4.entry.js → p-9bcd99aa.entry.js} +1 -1
  33. package/dist/brandsync-wc/{p-d4e3ca77.entry.js → p-9c4768aa.entry.js} +1 -1
  34. package/dist/brandsync-wc/{p-DST5-cTx.js → p-Do3l4of3.js} +2 -2
  35. package/dist/brandsync-wc/{p-0fa017ce.entry.js → p-aa43d478.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-a5b15061.entry.js → p-c3079ad7.entry.js} +1 -1
  37. package/dist/brandsync-wc/{p-23457a21.entry.js → p-c3c383dc.entry.js} +1 -1
  38. package/dist/brandsync-wc/{p-b24a980b.entry.js → p-cc79e75f.entry.js} +1 -1
  39. package/dist/brandsync-wc/p-ce7fc368.entry.js +1 -0
  40. package/dist/brandsync-wc/{p-2c51d738.entry.js → p-d3265e70.entry.js} +1 -1
  41. package/dist/brandsync-wc/p-d55bbcec.entry.js +1 -0
  42. package/dist/brandsync-wc/{p-1adc59be.entry.js → p-e93e944b.entry.js} +1 -1
  43. package/dist/brandsync-wc/{p-aba300a9.entry.js → p-eb04c578.entry.js} +1 -1
  44. package/dist/brandsync-wc/p-f0ae2740.entry.js +1 -0
  45. package/dist/brandsync-wc/p-f4f22015.entry.js +1 -0
  46. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  47. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +2 -2
  48. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  49. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  50. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  51. package/dist/cjs/bs-attachment.cjs.entry.js +1 -1
  52. package/dist/cjs/bs-avatar.cjs.entry.js +60 -0
  53. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  54. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +56 -0
  55. package/dist/cjs/bs-breadcrumb.cjs.entry.js +33 -0
  56. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +49 -0
  57. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  58. package/dist/cjs/bs-button.cjs.entry.js +2 -2
  59. package/dist/cjs/bs-card.cjs.entry.js +10 -3
  60. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
  61. package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
  62. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  63. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  64. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
  65. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +20 -0
  66. package/dist/cjs/bs-checkbox.cjs.entry.js +2 -2
  67. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +2 -2
  68. package/dist/cjs/bs-composer.cjs.entry.js +2 -2
  69. package/dist/cjs/bs-data-table.cjs.entry.js +3 -3
  70. package/dist/cjs/bs-dialog.cjs.entry.js +110 -0
  71. package/dist/cjs/bs-icon-button.cjs.entry.js +2 -2
  72. package/dist/cjs/bs-inline-tab.cjs.entry.js +2 -2
  73. package/dist/cjs/bs-input.cjs.entry.js +24 -12
  74. package/dist/cjs/bs-logo.cjs.entry.js +1 -1
  75. package/dist/cjs/{bs-menu_2.cjs.entry.js → bs-menu-item.cjs.entry.js} +2 -15
  76. package/dist/cjs/bs-menu.cjs.entry.js +17 -0
  77. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +3 -3
  78. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +8 -2
  79. package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
  80. package/dist/cjs/bs-pagination.cjs.entry.js +85 -0
  81. package/dist/cjs/bs-radio.cjs.entry.js +2 -2
  82. package/dist/cjs/bs-slider.cjs.entry.js +2 -2
  83. package/dist/cjs/bs-snackbar.cjs.entry.js +41 -0
  84. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  85. package/dist/cjs/bs-switch.cjs.entry.js +2 -2
  86. package/dist/cjs/bs-tab.cjs.entry.js +2 -2
  87. package/dist/cjs/bs-tabs.cjs.entry.js +2 -2
  88. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  89. package/dist/cjs/{index-B3sdhEGk.js → index-DHVw-IPK.js} +1 -0
  90. package/dist/cjs/loader.cjs.js +2 -2
  91. package/dist/collection/collection-manifest.json +8 -1
  92. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  93. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  94. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  95. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  96. package/dist/collection/components/bs-avatar/bs-avatar.cmp.test.js +54 -0
  97. package/dist/collection/components/bs-avatar/bs-avatar.css +197 -0
  98. package/dist/collection/components/bs-avatar/bs-avatar.js +251 -0
  99. package/dist/collection/components/bs-avatar/bs-avatar.stories.js +67 -0
  100. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.js +62 -0
  101. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.css +93 -0
  102. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +130 -0
  103. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.js +118 -0
  104. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.css +125 -0
  105. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +192 -0
  106. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.cmp.test.js +58 -0
  107. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.css +18 -0
  108. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +129 -0
  109. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.stories.js +84 -0
  110. package/dist/collection/components/bs-button/bs-button/bs-button.js +1 -1
  111. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +1 -1
  112. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  113. package/dist/collection/components/bs-card/bs-card.cmp.test.js +19 -0
  114. package/dist/collection/components/bs-card/bs-card.css +37 -5
  115. package/dist/collection/components/bs-card/bs-card.js +18 -2
  116. package/dist/collection/components/bs-card/bs-card.stories.js +17 -1
  117. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  118. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  119. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  120. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.css +1 -1
  121. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  122. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  123. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.cmp.test.js +23 -0
  124. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.css +64 -0
  125. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +81 -0
  126. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.stories.js +25 -0
  127. package/dist/collection/components/bs-checkbox/bs-checkbox.js +1 -1
  128. package/dist/collection/components/bs-checkbox/bs-checkbox.stories.js +12 -0
  129. package/dist/collection/components/bs-composer/bs-composer.js +1 -1
  130. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -1
  131. package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
  132. package/dist/collection/components/{bs-modal/bs-modal.cmp.test.js → bs-dialog/bs-dialog.cmp.test.js} +63 -19
  133. package/dist/collection/components/bs-dialog/bs-dialog.css +130 -0
  134. package/dist/collection/components/bs-dialog/bs-dialog.js +273 -0
  135. package/dist/collection/components/bs-dialog/bs-dialog.stories.js +115 -0
  136. package/dist/collection/components/bs-input/bs-input.cmp.test.js +20 -0
  137. package/dist/collection/components/bs-input/bs-input.css +80 -2
  138. package/dist/collection/components/bs-input/bs-input.js +28 -10
  139. package/dist/collection/components/bs-input/bs-input.stories.js +14 -11
  140. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  141. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  142. package/dist/collection/components/bs-pagination/bs-pagination.cmp.test.js +102 -0
  143. package/dist/collection/components/bs-pagination/bs-pagination.css +120 -0
  144. package/dist/collection/components/bs-pagination/bs-pagination.js +233 -0
  145. package/dist/collection/components/bs-pagination/bs-pagination.stories.js +43 -0
  146. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  147. package/dist/collection/components/bs-slider/bs-slider.js +1 -1
  148. package/dist/collection/components/bs-snackbar/bs-snackbar.cmp.test.js +77 -0
  149. package/dist/collection/components/bs-snackbar/bs-snackbar.css +321 -0
  150. package/dist/collection/components/bs-snackbar/bs-snackbar.js +172 -0
  151. package/dist/collection/components/bs-snackbar/bs-snackbar.stories.js +59 -0
  152. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  153. package/dist/collection/components/bs-switch/bs-switch.js +1 -1
  154. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  155. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
  156. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +1 -1
  157. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  158. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +12 -0
  159. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +34 -6
  160. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.js +74 -2
  161. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.css +5 -5
  162. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  163. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +1 -1
  164. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.js +258 -1
  165. package/dist/components/bs-ai-disclaimer.js +1 -1
  166. package/dist/components/bs-ai-greeting.js +1 -1
  167. package/dist/components/bs-ai-thinking.js +1 -1
  168. package/dist/components/bs-attachment-list.js +1 -1
  169. package/dist/components/bs-attachment.js +1 -1
  170. package/dist/components/{bs-modal.d.ts → bs-avatar.d.ts} +4 -4
  171. package/dist/components/bs-avatar.js +1 -0
  172. package/dist/components/bs-badge.js +1 -1
  173. package/dist/components/bs-breadcrumb-overflow.d.ts +11 -0
  174. package/dist/components/bs-breadcrumb-overflow.js +1 -0
  175. package/dist/components/bs-breadcrumb.d.ts +11 -0
  176. package/dist/components/bs-breadcrumb.js +1 -0
  177. package/dist/components/bs-breadcrumbs.d.ts +11 -0
  178. package/dist/components/bs-breadcrumbs.js +1 -0
  179. package/dist/components/bs-button-skeleton.js +1 -1
  180. package/dist/components/bs-button.js +1 -1
  181. package/dist/components/bs-card.js +1 -1
  182. package/dist/components/bs-chatbot-feedback.js +1 -1
  183. package/dist/components/bs-chatbot-header.js +1 -1
  184. package/dist/components/bs-chatbot-response-action.js +1 -1
  185. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  186. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  187. package/dist/components/bs-checkbox-skeleton.d.ts +11 -0
  188. package/dist/components/bs-checkbox-skeleton.js +1 -0
  189. package/dist/components/bs-checkbox.js +1 -1
  190. package/dist/components/bs-composer-status-banner.js +1 -1
  191. package/dist/components/bs-composer.js +1 -1
  192. package/dist/components/bs-data-table.js +1 -1
  193. package/dist/components/bs-dialog.d.ts +11 -0
  194. package/dist/components/bs-dialog.js +1 -0
  195. package/dist/components/bs-icon-button.js +1 -1
  196. package/dist/components/bs-inline-tab.js +1 -1
  197. package/dist/components/bs-input.js +1 -1
  198. package/dist/components/bs-logo.js +1 -1
  199. package/dist/components/bs-menu-item.js +1 -1
  200. package/dist/components/bs-menu.js +1 -1
  201. package/dist/components/bs-navigation-drawer-item.js +1 -1
  202. package/dist/components/bs-navigation-drawer.js +1 -1
  203. package/dist/components/bs-navigation-header.js +1 -1
  204. package/dist/components/bs-pagination.d.ts +11 -0
  205. package/dist/components/bs-pagination.js +1 -0
  206. package/dist/components/bs-radio.js +1 -1
  207. package/dist/components/bs-slider.js +1 -1
  208. package/dist/components/bs-snackbar.d.ts +11 -0
  209. package/dist/components/bs-snackbar.js +1 -0
  210. package/dist/components/bs-source-link.js +1 -1
  211. package/dist/components/bs-switch.js +1 -1
  212. package/dist/components/bs-tab.js +1 -1
  213. package/dist/components/bs-tabs.js +1 -1
  214. package/dist/components/bs-tooltip.js +1 -1
  215. package/dist/components/index.js +1 -1
  216. package/dist/components/{p-BAOJc0V0.js → p-BFcVSpES.js} +1 -1
  217. package/dist/components/{p-Be1Pfcnm.js → p-BJZYe7M4.js} +1 -1
  218. package/dist/components/{p-CaWqTQBZ.js → p-BKaZWFE1.js} +1 -1
  219. package/dist/components/{p-DivZLd6i.js → p-BtX5URLk.js} +1 -1
  220. package/dist/components/{p-BqYyMGrB.js → p-CgaPcyEJ.js} +1 -1
  221. package/dist/components/{p-xfx69LQx.js → p-qK1XlpTA.js} +1 -1
  222. package/dist/esm/brandsync-wc.js +3 -3
  223. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  224. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  225. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  226. package/dist/esm/bs-attachment-list.entry.js +2 -2
  227. package/dist/esm/bs-attachment.entry.js +1 -1
  228. package/dist/esm/bs-avatar.entry.js +58 -0
  229. package/dist/esm/bs-badge.entry.js +1 -1
  230. package/dist/esm/bs-breadcrumb-overflow.entry.js +54 -0
  231. package/dist/esm/bs-breadcrumb.entry.js +31 -0
  232. package/dist/esm/bs-breadcrumbs.entry.js +47 -0
  233. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  234. package/dist/esm/bs-button.entry.js +2 -2
  235. package/dist/esm/bs-card.entry.js +10 -3
  236. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  237. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  238. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  239. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  240. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  241. package/dist/esm/bs-checkbox-skeleton.entry.js +18 -0
  242. package/dist/esm/bs-checkbox.entry.js +2 -2
  243. package/dist/esm/bs-composer-status-banner.entry.js +2 -2
  244. package/dist/esm/bs-composer.entry.js +2 -2
  245. package/dist/esm/bs-data-table.entry.js +3 -3
  246. package/dist/esm/bs-dialog.entry.js +108 -0
  247. package/dist/esm/bs-icon-button.entry.js +2 -2
  248. package/dist/esm/bs-inline-tab.entry.js +2 -2
  249. package/dist/esm/bs-input.entry.js +24 -12
  250. package/dist/esm/bs-logo.entry.js +1 -1
  251. package/dist/esm/{bs-menu_2.entry.js → bs-menu-item.entry.js} +3 -15
  252. package/dist/esm/bs-menu.entry.js +15 -0
  253. package/dist/esm/bs-navigation-drawer-item.entry.js +3 -3
  254. package/dist/esm/bs-navigation-drawer.entry.js +8 -2
  255. package/dist/esm/bs-navigation-header.entry.js +2 -2
  256. package/dist/esm/bs-pagination.entry.js +83 -0
  257. package/dist/esm/bs-radio.entry.js +2 -2
  258. package/dist/esm/bs-slider.entry.js +2 -2
  259. package/dist/esm/bs-snackbar.entry.js +39 -0
  260. package/dist/esm/bs-source-link.entry.js +3 -3
  261. package/dist/esm/bs-switch.entry.js +2 -2
  262. package/dist/esm/bs-tab.entry.js +2 -2
  263. package/dist/esm/bs-tabs.entry.js +2 -2
  264. package/dist/esm/bs-tooltip.entry.js +2 -2
  265. package/dist/esm/{index-DST5-cTx.js → index-Do3l4of3.js} +1 -1
  266. package/dist/esm/loader.js +3 -3
  267. package/dist/types/components/bs-avatar/bs-avatar.d.ts +67 -0
  268. package/dist/types/components/bs-avatar/bs-avatar.stories.d.ts +20 -0
  269. package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.d.ts +1 -0
  270. package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.d.ts +44 -0
  271. package/dist/types/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.d.ts +1 -0
  272. package/dist/types/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.d.ts +69 -0
  273. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.cmp.test.d.ts +1 -0
  274. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.d.ts +45 -0
  275. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.stories.d.ts +14 -0
  276. package/dist/types/components/bs-card/bs-card.d.ts +10 -1
  277. package/dist/types/components/bs-card/bs-card.stories.d.ts +1 -0
  278. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.cmp.test.d.ts +1 -0
  279. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.d.ts +36 -0
  280. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.stories.d.ts +10 -0
  281. package/dist/types/components/bs-checkbox/bs-checkbox.stories.d.ts +1 -0
  282. package/dist/types/components/bs-dialog/bs-dialog.cmp.test.d.ts +1 -0
  283. package/dist/types/components/bs-dialog/bs-dialog.d.ts +74 -0
  284. package/dist/types/components/{bs-modal/bs-modal.stories.d.ts → bs-dialog/bs-dialog.stories.d.ts} +5 -3
  285. package/dist/types/components/bs-input/bs-input.d.ts +8 -1
  286. package/dist/types/components/bs-pagination/bs-pagination.cmp.test.d.ts +1 -0
  287. package/dist/types/components/bs-pagination/bs-pagination.d.ts +51 -0
  288. package/dist/types/components/bs-pagination/bs-pagination.stories.d.ts +14 -0
  289. package/dist/types/components/bs-snackbar/bs-snackbar.cmp.test.d.ts +1 -0
  290. package/dist/types/components/bs-snackbar/bs-snackbar.d.ts +51 -0
  291. package/dist/types/components/bs-snackbar/bs-snackbar.stories.d.ts +16 -0
  292. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.d.ts +13 -5
  293. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.d.ts +3 -0
  294. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.d.ts +4 -0
  295. package/dist/types/components.d.ts +1109 -104
  296. package/package.json +1 -1
  297. package/dist/brandsync-wc/p-09aa03d1.entry.js +0 -1
  298. package/dist/brandsync-wc/p-1cf715aa.entry.js +0 -1
  299. package/dist/brandsync-wc/p-266f5dde.entry.js +0 -1
  300. package/dist/brandsync-wc/p-8ded1eb6.entry.js +0 -1
  301. package/dist/brandsync-wc/p-b289450a.entry.js +0 -1
  302. package/dist/brandsync-wc/p-b8a2f882.entry.js +0 -1
  303. package/dist/cjs/bs-modal.cjs.entry.js +0 -69
  304. package/dist/collection/components/bs-modal/bs-modal.css +0 -66
  305. package/dist/collection/components/bs-modal/bs-modal.js +0 -198
  306. package/dist/collection/components/bs-modal/bs-modal.stories.js +0 -38
  307. package/dist/components/bs-modal.js +0 -1
  308. package/dist/esm/bs-modal.entry.js +0 -67
  309. package/dist/types/components/bs-modal/bs-modal.d.ts +0 -45
  310. /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,48 @@
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";
22
28
  import { BsSwitchSize } from "./components/bs-switch/bs-switch";
23
29
  import { BsTabIconPosition } from "./components/bs-tab/bs-tab/bs-tab";
24
30
  import { BsTabsOrientation, BsTabsType } from "./components/bs-tab/bs-tabs/bs-tabs";
25
31
  export { BsAttachmentType } from "./components/bs-attachment/bs-attachment";
32
+ export { BsAvatarSize, BsAvatarType } from "./components/bs-avatar/bs-avatar";
26
33
  export { BsBadgeVariant } from "./components/bs-badge/bs-badge";
34
+ export { BsBreadcrumbSize } from "./components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb";
35
+ export { BsBreadcrumbOverflowItem } from "./components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow";
36
+ export { BsBreadcrumbSize as BsBreadcrumbSize1 } from "./components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb";
27
37
  export { BsButtonSize, BsButtonVariant } from "./components/bs-button/bs-button/bs-button";
28
38
  export { BsButtonSize as BsButtonSize1 } from "./components/bs-button/bs-button/bs-button";
29
39
  export { BsCardSurface } from "./components/bs-card/bs-card";
30
40
  export { BsCheckboxSize } from "./components/bs-checkbox/bs-checkbox";
41
+ export { BsCheckboxSize as BsCheckboxSize1 } from "./components/bs-checkbox/bs-checkbox";
31
42
  export { BsComposerState, BsComposerVariant } from "./components/bs-composer/bs-composer";
32
43
  export { BsComposerStatusBannerType } from "./components/bs-composer-status-banner/bs-composer-status-banner";
33
44
  export { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs-data-table";
45
+ export { BsDialogSize } from "./components/bs-dialog/bs-dialog";
34
46
  export { BsIconButtonSize, BsIconButtonVariant } from "./components/bs-button/bs-icon-button/bs-icon-button";
35
47
  export { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
36
- export { BsModalSize } from "./components/bs-modal/bs-modal";
37
48
  export { BsNavigationHeaderAlignment } from "./components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header";
38
49
  export { BsSliderType } from "./components/bs-slider/bs-slider";
50
+ export { BsSnackbarVariant } from "./components/bs-snackbar/bs-snackbar";
39
51
  export { BsSwitchSize } from "./components/bs-switch/bs-switch";
40
52
  export { BsTabIconPosition } from "./components/bs-tab/bs-tab/bs-tab";
41
53
  export { BsTabsOrientation, BsTabsType } from "./components/bs-tab/bs-tabs/bs-tabs";
@@ -206,6 +218,62 @@ export namespace Components {
206
218
  */
207
219
  "ariaLabel": string | null;
208
220
  }
221
+ /**
222
+ * A circular representation of a person or entity -- a photo, initials, or (as a fallback when
223
+ * neither is available) a generic user-silhouette icon.
224
+ * ## When to use
225
+ * - Representing a specific user or account: in a header, a comment, a member list, etc.
226
+ * - `type="initials"` when a photo isn't available but a name is (e.g. "Sam Lee" -> "SL").
227
+ * - `type="icon"` (the default) as the generic fallback when neither a photo nor a name/initials
228
+ * is available yet.
229
+ * ## When not to use
230
+ * - A company/brand logo -- use `bs-logo` instead.
231
+ * This component is decorative/informational by default, not an interactive control -- it renders
232
+ * a plain `<span>`/`<img>`, not a `<button>`. Figma's own component set includes hover/focused/
233
+ * pressed states (e.g. for an account-switcher trigger use case), which this implements as real
234
+ * `:hover`/`:focus-visible`/`:active` CSS on the host itself -- so wrapping this in your own
235
+ * `<button>`, or setting `tabindex` and a click handler on the `<bs-avatar>` element directly, gets
236
+ * the matching visual treatment for free with no extra wiring. Left genuinely non-interactive
237
+ * (no implicit role/tabindex of its own) so it doesn't misrepresent a purely decorative avatar
238
+ * (e.g. next to a comment) as a control when it isn't one.
239
+ */
240
+ interface BsAvatar {
241
+ /**
242
+ * `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.
243
+ * @default null
244
+ */
245
+ "alt": string | null;
246
+ /**
247
+ * `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.
248
+ * @default null
249
+ */
250
+ "ariaLabel": string | null;
251
+ /**
252
+ * 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.
253
+ * @default false
254
+ */
255
+ "disabled": boolean;
256
+ /**
257
+ * `type="initials"` only: the initials text to display (e.g. `"SL"` for "Sam Lee"). Ignored for `icon`/`image`.
258
+ * @default null
259
+ */
260
+ "initials": string | null;
261
+ /**
262
+ * Sizing scale -- `xs` (24px) through `xxl` (128px), matching Figma's own six-step scale.
263
+ * @default 'md'
264
+ */
265
+ "size": BsAvatarSize;
266
+ /**
267
+ * `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`.
268
+ * @default null
269
+ */
270
+ "src": string | null;
271
+ /**
272
+ * What to render inside the circle. `icon` (default) is the generic fallback for when neither a photo nor initials are available yet.
273
+ * @default 'icon'
274
+ */
275
+ "type": BsAvatarType;
276
+ }
209
277
  /**
210
278
  * A small status or category pill, usually paired with a label or list item.
211
279
  * ## When to use
@@ -222,6 +290,109 @@ export namespace Components {
222
290
  */
223
291
  "variant": BsBadgeVariant;
224
292
  }
293
+ /**
294
+ * A single crumb within a `<bs-breadcrumbs>` trail: a leading separator icon plus either a link,
295
+ * plain text, or the current-page label, depending on `current`/`href`.
296
+ * Rendering follows the W3C ARIA Authoring Practices breadcrumb pattern
297
+ * (https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/): the current page is marked
298
+ * `aria-current="page"` and is never a link -- this holds even when `href` is also set, unlike
299
+ * Carbon Design System's `cds-breadcrumb-item`, which allows a link on the current item.
300
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
301
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
302
+ * accessibility tree needs this explicit role to preserve the list's semantics.
303
+ * ## When to use
304
+ * - As one crumb inside a `<bs-breadcrumbs>` trail.
305
+ * ## When not to use
306
+ * - Standalone, outside a `<bs-breadcrumbs>` wrapper -- its `<ol>`/`<nav>` context and
307
+ * first-child-aware separator hiding depend on that parent structure.
308
+ */
309
+ interface BsBreadcrumb {
310
+ /**
311
+ * 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]`.
312
+ * @default false
313
+ */
314
+ "current": boolean;
315
+ /**
316
+ * 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).
317
+ */
318
+ "href"?: string;
319
+ /**
320
+ * 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"]`.
321
+ * @default 'md'
322
+ */
323
+ "size": BsBreadcrumbSize;
324
+ }
325
+ /**
326
+ * A manually-placed collapsed-items disclosure for a `<bs-breadcrumbs>` trail: a leading separator
327
+ * plus an icon-only ellipsis button that reveals a `bs-menu` popup listing every hidden crumb.
328
+ * `items` is JS-property-only -- must be set as a JS property (`el.items = [...]`), not an HTML
329
+ * attribute, since attributes can only carry strings. See CONVENTIONS.md.
330
+ * Unlike an earlier `bs-breadcrumbs`-owned automatic `maxItems` collapse, this component does no
331
+ * collapsing logic itself -- the consumer decides which crumbs to hide and places this element
332
+ * wherever they want the disclosure, exactly matching Carbon Design System's own approach (Carbon
333
+ * doesn't auto-collapse breadcrumbs either; a consumer there manually decides what's visible).
334
+ * Hidden items with an `href` render as real `<a href>` rows inside the popup, not `bs-menu-item`
335
+ * (which renders a `<button>`) -- this matters because consuming apps commonly use client-side
336
+ * routers that intercept clicks on real `<a>` tags to do `preventDefault` + push-state navigation.
337
+ * Rendering hidden links any other way (e.g. `window.location`) would silently break client-side
338
+ * routing for hidden crumbs while working fine for visible ones. Hidden items without an `href`
339
+ * render as plain non-interactive text, matching how `bs-breadcrumb` itself handles link vs.
340
+ * no-link crumbs.
341
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
342
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
343
+ * accessibility tree needs this explicit role to preserve the list's semantics.
344
+ * ## When to use
345
+ * - Inside a `<bs-breadcrumbs>` trail, wherever the consumer wants an interactive disclosure for
346
+ * crumbs they've chosen not to render directly.
347
+ * ## When not to use
348
+ * - As an automatic collapsing mechanism -- there is none; the consumer decides what's hidden.
349
+ */
350
+ interface BsBreadcrumbOverflow {
351
+ /**
352
+ * 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.
353
+ * @default []
354
+ */
355
+ "items": BsBreadcrumbOverflowItem[];
356
+ /**
357
+ * Accessible name (`aria-label`) for the icon-only ellipsis trigger button.
358
+ * @default 'Show hidden breadcrumbs'
359
+ */
360
+ "overflowLabel": string;
361
+ /**
362
+ * 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"]`.
363
+ * @default 'md'
364
+ */
365
+ "size": BsBreadcrumbSize1;
366
+ }
367
+ /**
368
+ * A breadcrumb trail container: a real `<nav>` landmark wrapping an `<ol>`, meant to be populated
369
+ * with slotted `<bs-breadcrumb>` (and, where the consumer wants a collapsed-items disclosure,
370
+ * `<bs-breadcrumb-overflow>`) children -- same composition-over-configuration architecture as
371
+ * Carbon Design System's `cds-breadcrumb`/`cds-breadcrumb-item`/`cds-breadcrumb-link`.
372
+ * This component is intentionally thin: it owns only the `<nav>` landmark and list semantics.
373
+ * Unlike an earlier `items`-array-driven design, there is no automatic collapsing here -- exactly
374
+ * like Carbon, the consumer decides what's visible and manually places a `<bs-breadcrumb-overflow>`
375
+ * wherever they want a collapsed-items disclosure. See `bs-breadcrumbs.mdx` for the consolidated
376
+ * docs covering all three components in this feature area.
377
+ * ## When to use
378
+ * - Showing a user's current location within a hierarchical page structure, with a path back to
379
+ * its ancestors.
380
+ * ## When not to use
381
+ * - Primary in-app navigation -- use `bs-navigation-drawer`/`bs-navigation-header` instead.
382
+ * - A flat set of unrelated pages with no hierarchy -- breadcrumbs imply ancestry, not just history.
383
+ */
384
+ interface BsBreadcrumbs {
385
+ /**
386
+ * Accessible name for the `<nav>` landmark, via `aria-label`. Same pattern as `bs-navigation-drawer`'s `heading` prop.
387
+ * @default 'Breadcrumb'
388
+ */
389
+ "label": string;
390
+ /**
391
+ * 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).
392
+ * @default 'md'
393
+ */
394
+ "size": BsBreadcrumbSize1;
395
+ }
225
396
  /**
226
397
  * A clickable action element for the single most important action in a given context.
227
398
  * ## When to use
@@ -574,6 +745,36 @@ export namespace Components {
574
745
  */
575
746
  "size": BsCheckboxSize;
576
747
  }
748
+ /**
749
+ * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
750
+ * known yet (e.g. still being fetched from an API). Renders a small square (matching the
751
+ * checkbox's own box) beside a text-bar placeholder (standing in for the label), both pulsing
752
+ * together, sized to match `bs-checkbox`'s `sm`/`md`/`lg` box dimensions so layout doesn't shift
753
+ * once the real checkbox renders.
754
+ * ## When to use
755
+ * - In place of a `bs-checkbox` whose label/checked state depends on data that hasn't loaded yet.
756
+ * ## When not to use
757
+ * - While a checkbox's own change handler is running (e.g. a save request in flight) -- render the
758
+ * real `bs-checkbox` itself; this component is not a saving-in-progress spinner.
759
+ * @prop --bs-checkbox-skeleton-size-sm - Box width/height at `size="sm"`. Aliased to
760
+ * `--bs-spacing-200`, mirroring `bs-checkbox`'s own `--bs-checkbox-size-sm` -- not read directly
761
+ * from it, since these are two separate shadow roots.
762
+ * @prop --bs-checkbox-skeleton-size-md - Box width/height at `size="md"`. Aliased to
763
+ * `--bs-spacing-250`.
764
+ * @prop --bs-checkbox-skeleton-size-lg - Box width/height at `size="lg"`. Aliased to
765
+ * `--bs-spacing-300`.
766
+ * @prop --bs-checkbox-skeleton-gap - Gap between the box and label placeholders. Aliased to
767
+ * `--bs-spacing-100`, mirroring `bs-checkbox`'s own `--bs-checkbox-gap`.
768
+ * @prop --bs-checkbox-skeleton-label-width - Width of the label placeholder bar. Defaults to
769
+ * `96px`.
770
+ */
771
+ interface BsCheckboxSkeleton {
772
+ /**
773
+ * Sizing scale, matching the `bs-checkbox` size it stands in for. Defaults to `lg`, the same (unusual) default `bs-checkbox` itself uses.
774
+ * @default 'lg'
775
+ */
776
+ "size": BsCheckboxSize1;
777
+ }
577
778
  /**
578
779
  * A chat composer input for Genie AI-style conversational interfaces: a text field
579
780
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -764,6 +965,40 @@ export namespace Components {
764
965
  */
765
966
  "sortDirection": 'asc' | 'desc';
766
967
  }
968
+ /**
969
+ * An overlay dialog that interrupts the current flow for a focused task or confirmation.
970
+ * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
971
+ * ## When to use
972
+ * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
973
+ * - A short, focused task that doesn't warrant navigating to a new page.
974
+ * ## When not to use
975
+ * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
976
+ * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
977
+ * dialog that just gets taller and taller.
978
+ * Two additional slots cover the Figma "Dialog" component's other states: `image` (a hero image
979
+ * across the top, close button floats over it instead of sitting in the header row) and `icon`
980
+ * (only rendered when `centered` is set, e.g. a success checkmark above a centered heading). The
981
+ * close button "floats" (absolute-positioned, top-right of the dialog, with its own background)
982
+ * whenever `centered` is true or the `image` slot has content -- otherwise it's the plain inline
983
+ * button in the header row next to the heading, same as before this addition.
984
+ */
985
+ interface BsDialog {
986
+ /**
987
+ * 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]`.
988
+ * @default false
989
+ */
990
+ "centered": boolean;
991
+ "heading"?: string;
992
+ /**
993
+ * 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.
994
+ * @default false
995
+ */
996
+ "open": boolean;
997
+ /**
998
+ * @default 'md'
999
+ */
1000
+ "size": BsDialogSize;
1001
+ }
767
1002
  /**
768
1003
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
769
1004
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -1050,36 +1285,14 @@ export namespace Components {
1050
1285
  */
1051
1286
  "disabled": boolean;
1052
1287
  }
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
1288
  /**
1077
1289
  * A left-side persistent navigation sidebar: the BrandSync logo, a "Main Menu" title with a
1078
1290
  * collapse toggle, a reserved slot for a search field, and a scrollable list of nav items.
1079
1291
  * ## When to use
1080
1292
  * - The primary in-app navigation, shown alongside `bs-navigation-header` (typically that
1081
1293
  * header's `with-navigation-drawer` alignment, which omits its own logo since this component
1082
- * already renders one).
1294
+ * already renders one -- or the reverse pairing, this drawer's own `showLogo={false}` alongside
1295
+ * a header that keeps its logo instead, see that prop's own docs).
1083
1296
  * ## When not to use
1084
1297
  * - The top navigation bar itself -- use `bs-navigation-header` instead.
1085
1298
  * This component renders a real `<nav>` landmark (no explicit `role` needed -- `<nav>` already
@@ -1127,6 +1340,11 @@ export namespace Components {
1127
1340
  * @default 'auto'
1128
1341
  */
1129
1342
  "logoBackground": 'auto' | 'light' | 'dark';
1343
+ /**
1344
+ * 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.
1345
+ * @default true
1346
+ */
1347
+ "showLogo": boolean;
1130
1348
  }
1131
1349
  /**
1132
1350
  * A single row within a `bs-navigation-drawer`'s item list -- either a plain leaf nav item, or an
@@ -1233,6 +1451,48 @@ export namespace Components {
1233
1451
  */
1234
1452
  "skipToContentLabel": string;
1235
1453
  }
1454
+ /**
1455
+ * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
1456
+ * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
1457
+ * numbered pagination); its other type ("jumper" -- a rows-per-page dropdown plus a page-jump
1458
+ * input) is a structurally different composite widget and isn't covered by this component.
1459
+ * `totalPages`/`currentPage` drive everything -- this computes which page numbers to show and
1460
+ * where to collapse into `...` itself, the consumer never builds the button list by hand.
1461
+ * ## When to use
1462
+ * - Paging through a large, ordered result set (a table, a search results list) where jumping
1463
+ * directly to a specific page number is useful.
1464
+ * ## When not to use
1465
+ * - Infinite-scroll or "load more" patterns -- those don't have a fixed, addressable page number.
1466
+ * - A huge page count where users realistically only ever go forward/back one page at a time --
1467
+ * plain prev/next controls (no numbers) are simpler there.
1468
+ */
1469
+ interface BsPagination {
1470
+ /**
1471
+ * 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).
1472
+ * @default 1
1473
+ */
1474
+ "currentPage": number;
1475
+ /**
1476
+ * Accessible name for the next-page button.
1477
+ * @default 'Next page'
1478
+ */
1479
+ "nextLabel": string;
1480
+ /**
1481
+ * Accessible name for the previous-page button.
1482
+ * @default 'Previous page'
1483
+ */
1484
+ "previousLabel": string;
1485
+ /**
1486
+ * 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`).
1487
+ * @default 1
1488
+ */
1489
+ "siblingCount": number;
1490
+ /**
1491
+ * Total number of pages. Must be a positive integer -- there's always at least one page.
1492
+ * @default 1
1493
+ */
1494
+ "totalPages": number;
1495
+ }
1236
1496
  /**
1237
1497
  * A single radio button with its label, for one mutually-exclusive choice within a group.
1238
1498
  * ## When to use
@@ -1338,6 +1598,41 @@ export namespace Components {
1338
1598
  */
1339
1599
  "valueStart"?: number;
1340
1600
  }
1601
+ /**
1602
+ * A transient status bar for confirming the result of an action (e.g. "Files uploaded
1603
+ * successfully.") -- an icon (or loading spinner), a message, an optional action, and a close
1604
+ * button.
1605
+ * This component only renders the bar itself -- it doesn't manage its own visibility, timing, or
1606
+ * stacking. A consumer (typically a small "toast manager" utility) creates one per message and
1607
+ * removes it from the DOM again, whether on a timer or on `bsDismiss`. Figma's spec doesn't show
1608
+ * auto-dismiss timing at all (it's a static visual spec), so this deliberately doesn't invent one.
1609
+ * The icon is always the same checkmark glyph across every `variant`, just recolored -- matching
1610
+ * the Figma spec exactly, even though a checkmark for `variant="error"` reads a little oddly
1611
+ * semantically. Worth revisiting with severity-specific icons (warning triangle, error circle,
1612
+ * etc.) if the design updates to specify them.
1613
+ * ## When to use
1614
+ * - Confirming the outcome of an action that just happened (save succeeded, upload failed) without
1615
+ * interrupting the user's flow.
1616
+ * ## When not to use
1617
+ * - For a response that requires the user to make a decision before continuing -- use `bs-dialog`.
1618
+ * - For persistent, always-visible status -- a snackbar is inherently transient.
1619
+ */
1620
+ interface BsSnackbar {
1621
+ /**
1622
+ * 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.
1623
+ */
1624
+ "actionLabel"?: string;
1625
+ /**
1626
+ * 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.
1627
+ * @default false
1628
+ */
1629
+ "loading": boolean;
1630
+ /**
1631
+ * 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.
1632
+ * @default 'default'
1633
+ */
1634
+ "variant": BsSnackbarVariant;
1635
+ }
1341
1636
  /**
1342
1637
  * A single citation row inside `bs-chatbot-sources-drawer` -- a file icon + filename on the first
1343
1638
  * line, the originating system and version on the second, and a trailing "open" arrow.
@@ -1563,6 +1858,10 @@ export interface BsDataTableCustomEvent<T> extends CustomEvent<T> {
1563
1858
  detail: T;
1564
1859
  target: HTMLBsDataTableElement;
1565
1860
  }
1861
+ export interface BsDialogCustomEvent<T> extends CustomEvent<T> {
1862
+ detail: T;
1863
+ target: HTMLBsDialogElement;
1864
+ }
1566
1865
  export interface BsInlineTabCustomEvent<T> extends CustomEvent<T> {
1567
1866
  detail: T;
1568
1867
  target: HTMLBsInlineTabElement;
@@ -1575,10 +1874,6 @@ export interface BsMenuItemCustomEvent<T> extends CustomEvent<T> {
1575
1874
  detail: T;
1576
1875
  target: HTMLBsMenuItemElement;
1577
1876
  }
1578
- export interface BsModalCustomEvent<T> extends CustomEvent<T> {
1579
- detail: T;
1580
- target: HTMLBsModalElement;
1581
- }
1582
1877
  export interface BsNavigationDrawerCustomEvent<T> extends CustomEvent<T> {
1583
1878
  detail: T;
1584
1879
  target: HTMLBsNavigationDrawerElement;
@@ -1587,6 +1882,10 @@ export interface BsNavigationDrawerItemCustomEvent<T> extends CustomEvent<T> {
1587
1882
  detail: T;
1588
1883
  target: HTMLBsNavigationDrawerItemElement;
1589
1884
  }
1885
+ export interface BsPaginationCustomEvent<T> extends CustomEvent<T> {
1886
+ detail: T;
1887
+ target: HTMLBsPaginationElement;
1888
+ }
1590
1889
  export interface BsRadioCustomEvent<T> extends CustomEvent<T> {
1591
1890
  detail: T;
1592
1891
  target: HTMLBsRadioElement;
@@ -1595,6 +1894,10 @@ export interface BsSliderCustomEvent<T> extends CustomEvent<T> {
1595
1894
  detail: T;
1596
1895
  target: HTMLBsSliderElement;
1597
1896
  }
1897
+ export interface BsSnackbarCustomEvent<T> extends CustomEvent<T> {
1898
+ detail: T;
1899
+ target: HTMLBsSnackbarElement;
1900
+ }
1598
1901
  export interface BsSourceLinkCustomEvent<T> extends CustomEvent<T> {
1599
1902
  detail: T;
1600
1903
  target: HTMLBsSourceLinkElement;
@@ -1757,6 +2060,31 @@ declare global {
1757
2060
  prototype: HTMLBsAttachmentListElement;
1758
2061
  new (): HTMLBsAttachmentListElement;
1759
2062
  };
2063
+ /**
2064
+ * A circular representation of a person or entity -- a photo, initials, or (as a fallback when
2065
+ * neither is available) a generic user-silhouette icon.
2066
+ * ## When to use
2067
+ * - Representing a specific user or account: in a header, a comment, a member list, etc.
2068
+ * - `type="initials"` when a photo isn't available but a name is (e.g. "Sam Lee" -> "SL").
2069
+ * - `type="icon"` (the default) as the generic fallback when neither a photo nor a name/initials
2070
+ * is available yet.
2071
+ * ## When not to use
2072
+ * - A company/brand logo -- use `bs-logo` instead.
2073
+ * This component is decorative/informational by default, not an interactive control -- it renders
2074
+ * a plain `<span>`/`<img>`, not a `<button>`. Figma's own component set includes hover/focused/
2075
+ * pressed states (e.g. for an account-switcher trigger use case), which this implements as real
2076
+ * `:hover`/`:focus-visible`/`:active` CSS on the host itself -- so wrapping this in your own
2077
+ * `<button>`, or setting `tabindex` and a click handler on the `<bs-avatar>` element directly, gets
2078
+ * the matching visual treatment for free with no extra wiring. Left genuinely non-interactive
2079
+ * (no implicit role/tabindex of its own) so it doesn't misrepresent a purely decorative avatar
2080
+ * (e.g. next to a comment) as a control when it isn't one.
2081
+ */
2082
+ interface HTMLBsAvatarElement extends Components.BsAvatar, HTMLStencilElement {
2083
+ }
2084
+ var HTMLBsAvatarElement: {
2085
+ prototype: HTMLBsAvatarElement;
2086
+ new (): HTMLBsAvatarElement;
2087
+ };
1760
2088
  /**
1761
2089
  * A small status or category pill, usually paired with a label or list item.
1762
2090
  * ## When to use
@@ -1772,6 +2100,82 @@ declare global {
1772
2100
  prototype: HTMLBsBadgeElement;
1773
2101
  new (): HTMLBsBadgeElement;
1774
2102
  };
2103
+ /**
2104
+ * A single crumb within a `<bs-breadcrumbs>` trail: a leading separator icon plus either a link,
2105
+ * plain text, or the current-page label, depending on `current`/`href`.
2106
+ * Rendering follows the W3C ARIA Authoring Practices breadcrumb pattern
2107
+ * (https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/): the current page is marked
2108
+ * `aria-current="page"` and is never a link -- this holds even when `href` is also set, unlike
2109
+ * Carbon Design System's `cds-breadcrumb-item`, which allows a link on the current item.
2110
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
2111
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
2112
+ * accessibility tree needs this explicit role to preserve the list's semantics.
2113
+ * ## When to use
2114
+ * - As one crumb inside a `<bs-breadcrumbs>` trail.
2115
+ * ## When not to use
2116
+ * - Standalone, outside a `<bs-breadcrumbs>` wrapper -- its `<ol>`/`<nav>` context and
2117
+ * first-child-aware separator hiding depend on that parent structure.
2118
+ */
2119
+ interface HTMLBsBreadcrumbElement extends Components.BsBreadcrumb, HTMLStencilElement {
2120
+ }
2121
+ var HTMLBsBreadcrumbElement: {
2122
+ prototype: HTMLBsBreadcrumbElement;
2123
+ new (): HTMLBsBreadcrumbElement;
2124
+ };
2125
+ /**
2126
+ * A manually-placed collapsed-items disclosure for a `<bs-breadcrumbs>` trail: a leading separator
2127
+ * plus an icon-only ellipsis button that reveals a `bs-menu` popup listing every hidden crumb.
2128
+ * `items` is JS-property-only -- must be set as a JS property (`el.items = [...]`), not an HTML
2129
+ * attribute, since attributes can only carry strings. See CONVENTIONS.md.
2130
+ * Unlike an earlier `bs-breadcrumbs`-owned automatic `maxItems` collapse, this component does no
2131
+ * collapsing logic itself -- the consumer decides which crumbs to hide and places this element
2132
+ * wherever they want the disclosure, exactly matching Carbon Design System's own approach (Carbon
2133
+ * doesn't auto-collapse breadcrumbs either; a consumer there manually decides what's visible).
2134
+ * Hidden items with an `href` render as real `<a href>` rows inside the popup, not `bs-menu-item`
2135
+ * (which renders a `<button>`) -- this matters because consuming apps commonly use client-side
2136
+ * routers that intercept clicks on real `<a>` tags to do `preventDefault` + push-state navigation.
2137
+ * Rendering hidden links any other way (e.g. `window.location`) would silently break client-side
2138
+ * routing for hidden crumbs while working fine for visible ones. Hidden items without an `href`
2139
+ * render as plain non-interactive text, matching how `bs-breadcrumb` itself handles link vs.
2140
+ * no-link crumbs.
2141
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
2142
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
2143
+ * accessibility tree needs this explicit role to preserve the list's semantics.
2144
+ * ## When to use
2145
+ * - Inside a `<bs-breadcrumbs>` trail, wherever the consumer wants an interactive disclosure for
2146
+ * crumbs they've chosen not to render directly.
2147
+ * ## When not to use
2148
+ * - As an automatic collapsing mechanism -- there is none; the consumer decides what's hidden.
2149
+ */
2150
+ interface HTMLBsBreadcrumbOverflowElement extends Components.BsBreadcrumbOverflow, HTMLStencilElement {
2151
+ }
2152
+ var HTMLBsBreadcrumbOverflowElement: {
2153
+ prototype: HTMLBsBreadcrumbOverflowElement;
2154
+ new (): HTMLBsBreadcrumbOverflowElement;
2155
+ };
2156
+ /**
2157
+ * A breadcrumb trail container: a real `<nav>` landmark wrapping an `<ol>`, meant to be populated
2158
+ * with slotted `<bs-breadcrumb>` (and, where the consumer wants a collapsed-items disclosure,
2159
+ * `<bs-breadcrumb-overflow>`) children -- same composition-over-configuration architecture as
2160
+ * Carbon Design System's `cds-breadcrumb`/`cds-breadcrumb-item`/`cds-breadcrumb-link`.
2161
+ * This component is intentionally thin: it owns only the `<nav>` landmark and list semantics.
2162
+ * Unlike an earlier `items`-array-driven design, there is no automatic collapsing here -- exactly
2163
+ * like Carbon, the consumer decides what's visible and manually places a `<bs-breadcrumb-overflow>`
2164
+ * wherever they want a collapsed-items disclosure. See `bs-breadcrumbs.mdx` for the consolidated
2165
+ * docs covering all three components in this feature area.
2166
+ * ## When to use
2167
+ * - Showing a user's current location within a hierarchical page structure, with a path back to
2168
+ * its ancestors.
2169
+ * ## When not to use
2170
+ * - Primary in-app navigation -- use `bs-navigation-drawer`/`bs-navigation-header` instead.
2171
+ * - A flat set of unrelated pages with no hierarchy -- breadcrumbs imply ancestry, not just history.
2172
+ */
2173
+ interface HTMLBsBreadcrumbsElement extends Components.BsBreadcrumbs, HTMLStencilElement {
2174
+ }
2175
+ var HTMLBsBreadcrumbsElement: {
2176
+ prototype: HTMLBsBreadcrumbsElement;
2177
+ new (): HTMLBsBreadcrumbsElement;
2178
+ };
1775
2179
  /**
1776
2180
  * A clickable action element for the single most important action in a given context.
1777
2181
  * ## When to use
@@ -2117,6 +2521,35 @@ declare global {
2117
2521
  prototype: HTMLBsCheckboxElement;
2118
2522
  new (): HTMLBsCheckboxElement;
2119
2523
  };
2524
+ /**
2525
+ * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
2526
+ * known yet (e.g. still being fetched from an API). Renders a small square (matching the
2527
+ * checkbox's own box) beside a text-bar placeholder (standing in for the label), both pulsing
2528
+ * together, sized to match `bs-checkbox`'s `sm`/`md`/`lg` box dimensions so layout doesn't shift
2529
+ * once the real checkbox renders.
2530
+ * ## When to use
2531
+ * - In place of a `bs-checkbox` whose label/checked state depends on data that hasn't loaded yet.
2532
+ * ## When not to use
2533
+ * - While a checkbox's own change handler is running (e.g. a save request in flight) -- render the
2534
+ * real `bs-checkbox` itself; this component is not a saving-in-progress spinner.
2535
+ * @prop --bs-checkbox-skeleton-size-sm - Box width/height at `size="sm"`. Aliased to
2536
+ * `--bs-spacing-200`, mirroring `bs-checkbox`'s own `--bs-checkbox-size-sm` -- not read directly
2537
+ * from it, since these are two separate shadow roots.
2538
+ * @prop --bs-checkbox-skeleton-size-md - Box width/height at `size="md"`. Aliased to
2539
+ * `--bs-spacing-250`.
2540
+ * @prop --bs-checkbox-skeleton-size-lg - Box width/height at `size="lg"`. Aliased to
2541
+ * `--bs-spacing-300`.
2542
+ * @prop --bs-checkbox-skeleton-gap - Gap between the box and label placeholders. Aliased to
2543
+ * `--bs-spacing-100`, mirroring `bs-checkbox`'s own `--bs-checkbox-gap`.
2544
+ * @prop --bs-checkbox-skeleton-label-width - Width of the label placeholder bar. Defaults to
2545
+ * `96px`.
2546
+ */
2547
+ interface HTMLBsCheckboxSkeletonElement extends Components.BsCheckboxSkeleton, HTMLStencilElement {
2548
+ }
2549
+ var HTMLBsCheckboxSkeletonElement: {
2550
+ prototype: HTMLBsCheckboxSkeletonElement;
2551
+ new (): HTMLBsCheckboxSkeletonElement;
2552
+ };
2120
2553
  interface HTMLBsComposerElementEventMap {
2121
2554
  "bsInput": string;
2122
2555
  "bsSubmit": void;
@@ -2282,6 +2715,40 @@ declare global {
2282
2715
  prototype: HTMLBsDataTableElement;
2283
2716
  new (): HTMLBsDataTableElement;
2284
2717
  };
2718
+ interface HTMLBsDialogElementEventMap {
2719
+ "bsClose": void;
2720
+ }
2721
+ /**
2722
+ * An overlay dialog that interrupts the current flow for a focused task or confirmation.
2723
+ * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
2724
+ * ## When to use
2725
+ * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
2726
+ * - A short, focused task that doesn't warrant navigating to a new page.
2727
+ * ## When not to use
2728
+ * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
2729
+ * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
2730
+ * dialog that just gets taller and taller.
2731
+ * Two additional slots cover the Figma "Dialog" component's other states: `image` (a hero image
2732
+ * across the top, close button floats over it instead of sitting in the header row) and `icon`
2733
+ * (only rendered when `centered` is set, e.g. a success checkmark above a centered heading). The
2734
+ * close button "floats" (absolute-positioned, top-right of the dialog, with its own background)
2735
+ * whenever `centered` is true or the `image` slot has content -- otherwise it's the plain inline
2736
+ * button in the header row next to the heading, same as before this addition.
2737
+ */
2738
+ interface HTMLBsDialogElement extends Components.BsDialog, HTMLStencilElement {
2739
+ addEventListener<K extends keyof HTMLBsDialogElementEventMap>(type: K, listener: (this: HTMLBsDialogElement, ev: BsDialogCustomEvent<HTMLBsDialogElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2740
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2741
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2742
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2743
+ removeEventListener<K extends keyof HTMLBsDialogElementEventMap>(type: K, listener: (this: HTMLBsDialogElement, ev: BsDialogCustomEvent<HTMLBsDialogElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2744
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2745
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2746
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2747
+ }
2748
+ var HTMLBsDialogElement: {
2749
+ prototype: HTMLBsDialogElement;
2750
+ new (): HTMLBsDialogElement;
2751
+ };
2285
2752
  /**
2286
2753
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
2287
2754
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -2474,34 +2941,6 @@ declare global {
2474
2941
  prototype: HTMLBsMenuItemElement;
2475
2942
  new (): HTMLBsMenuItemElement;
2476
2943
  };
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
2944
  interface HTMLBsNavigationDrawerElementEventMap {
2506
2945
  "bsCollapse": boolean;
2507
2946
  "bsSearchClick": void;
@@ -2512,7 +2951,8 @@ declare global {
2512
2951
  * ## When to use
2513
2952
  * - The primary in-app navigation, shown alongside `bs-navigation-header` (typically that
2514
2953
  * header's `with-navigation-drawer` alignment, which omits its own logo since this component
2515
- * already renders one).
2954
+ * already renders one -- or the reverse pairing, this drawer's own `showLogo={false}` alongside
2955
+ * a header that keeps its logo instead, see that prop's own docs).
2516
2956
  * ## When not to use
2517
2957
  * - The top navigation bar itself -- use `bs-navigation-header` instead.
2518
2958
  * This component renders a real `<nav>` landmark (no explicit `role` needed -- `<nav>` already
@@ -2623,6 +3063,38 @@ declare global {
2623
3063
  prototype: HTMLBsNavigationHeaderElement;
2624
3064
  new (): HTMLBsNavigationHeaderElement;
2625
3065
  };
3066
+ interface HTMLBsPaginationElementEventMap {
3067
+ "bsPageChange": number;
3068
+ }
3069
+ /**
3070
+ * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
3071
+ * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
3072
+ * numbered pagination); its other type ("jumper" -- a rows-per-page dropdown plus a page-jump
3073
+ * input) is a structurally different composite widget and isn't covered by this component.
3074
+ * `totalPages`/`currentPage` drive everything -- this computes which page numbers to show and
3075
+ * where to collapse into `...` itself, the consumer never builds the button list by hand.
3076
+ * ## When to use
3077
+ * - Paging through a large, ordered result set (a table, a search results list) where jumping
3078
+ * directly to a specific page number is useful.
3079
+ * ## When not to use
3080
+ * - Infinite-scroll or "load more" patterns -- those don't have a fixed, addressable page number.
3081
+ * - A huge page count where users realistically only ever go forward/back one page at a time --
3082
+ * plain prev/next controls (no numbers) are simpler there.
3083
+ */
3084
+ interface HTMLBsPaginationElement extends Components.BsPagination, HTMLStencilElement {
3085
+ addEventListener<K extends keyof HTMLBsPaginationElementEventMap>(type: K, listener: (this: HTMLBsPaginationElement, ev: BsPaginationCustomEvent<HTMLBsPaginationElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3086
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3087
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3088
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3089
+ removeEventListener<K extends keyof HTMLBsPaginationElementEventMap>(type: K, listener: (this: HTMLBsPaginationElement, ev: BsPaginationCustomEvent<HTMLBsPaginationElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3090
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3091
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3092
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3093
+ }
3094
+ var HTMLBsPaginationElement: {
3095
+ prototype: HTMLBsPaginationElement;
3096
+ new (): HTMLBsPaginationElement;
3097
+ };
2626
3098
  interface HTMLBsRadioElementEventMap {
2627
3099
  "bsChange": string;
2628
3100
  }
@@ -2683,6 +3155,43 @@ declare global {
2683
3155
  prototype: HTMLBsSliderElement;
2684
3156
  new (): HTMLBsSliderElement;
2685
3157
  };
3158
+ interface HTMLBsSnackbarElementEventMap {
3159
+ "bsAction": void;
3160
+ "bsDismiss": void;
3161
+ }
3162
+ /**
3163
+ * A transient status bar for confirming the result of an action (e.g. "Files uploaded
3164
+ * successfully.") -- an icon (or loading spinner), a message, an optional action, and a close
3165
+ * button.
3166
+ * This component only renders the bar itself -- it doesn't manage its own visibility, timing, or
3167
+ * stacking. A consumer (typically a small "toast manager" utility) creates one per message and
3168
+ * removes it from the DOM again, whether on a timer or on `bsDismiss`. Figma's spec doesn't show
3169
+ * auto-dismiss timing at all (it's a static visual spec), so this deliberately doesn't invent one.
3170
+ * The icon is always the same checkmark glyph across every `variant`, just recolored -- matching
3171
+ * the Figma spec exactly, even though a checkmark for `variant="error"` reads a little oddly
3172
+ * semantically. Worth revisiting with severity-specific icons (warning triangle, error circle,
3173
+ * etc.) if the design updates to specify them.
3174
+ * ## When to use
3175
+ * - Confirming the outcome of an action that just happened (save succeeded, upload failed) without
3176
+ * interrupting the user's flow.
3177
+ * ## When not to use
3178
+ * - For a response that requires the user to make a decision before continuing -- use `bs-dialog`.
3179
+ * - For persistent, always-visible status -- a snackbar is inherently transient.
3180
+ */
3181
+ interface HTMLBsSnackbarElement extends Components.BsSnackbar, HTMLStencilElement {
3182
+ addEventListener<K extends keyof HTMLBsSnackbarElementEventMap>(type: K, listener: (this: HTMLBsSnackbarElement, ev: BsSnackbarCustomEvent<HTMLBsSnackbarElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3183
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3184
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3185
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3186
+ removeEventListener<K extends keyof HTMLBsSnackbarElementEventMap>(type: K, listener: (this: HTMLBsSnackbarElement, ev: BsSnackbarCustomEvent<HTMLBsSnackbarElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3187
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3188
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3189
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3190
+ }
3191
+ var HTMLBsSnackbarElement: {
3192
+ prototype: HTMLBsSnackbarElement;
3193
+ new (): HTMLBsSnackbarElement;
3194
+ };
2686
3195
  interface HTMLBsSourceLinkElementEventMap {
2687
3196
  "bsOpen": void;
2688
3197
  }
@@ -2849,7 +3358,11 @@ declare global {
2849
3358
  "bs-ai-thinking": HTMLBsAiThinkingElement;
2850
3359
  "bs-attachment": HTMLBsAttachmentElement;
2851
3360
  "bs-attachment-list": HTMLBsAttachmentListElement;
3361
+ "bs-avatar": HTMLBsAvatarElement;
2852
3362
  "bs-badge": HTMLBsBadgeElement;
3363
+ "bs-breadcrumb": HTMLBsBreadcrumbElement;
3364
+ "bs-breadcrumb-overflow": HTMLBsBreadcrumbOverflowElement;
3365
+ "bs-breadcrumbs": HTMLBsBreadcrumbsElement;
2853
3366
  "bs-button": HTMLBsButtonElement;
2854
3367
  "bs-button-skeleton": HTMLBsButtonSkeletonElement;
2855
3368
  "bs-card": HTMLBsCardElement;
@@ -2859,21 +3372,24 @@ declare global {
2859
3372
  "bs-chatbot-sources-drawer": HTMLBsChatbotSourcesDrawerElement;
2860
3373
  "bs-chatbot-suggestion-button": HTMLBsChatbotSuggestionButtonElement;
2861
3374
  "bs-checkbox": HTMLBsCheckboxElement;
3375
+ "bs-checkbox-skeleton": HTMLBsCheckboxSkeletonElement;
2862
3376
  "bs-composer": HTMLBsComposerElement;
2863
3377
  "bs-composer-status-banner": HTMLBsComposerStatusBannerElement;
2864
3378
  "bs-data-table": HTMLBsDataTableElement;
3379
+ "bs-dialog": HTMLBsDialogElement;
2865
3380
  "bs-icon-button": HTMLBsIconButtonElement;
2866
3381
  "bs-inline-tab": HTMLBsInlineTabElement;
2867
3382
  "bs-input": HTMLBsInputElement;
2868
3383
  "bs-logo": HTMLBsLogoElement;
2869
3384
  "bs-menu": HTMLBsMenuElement;
2870
3385
  "bs-menu-item": HTMLBsMenuItemElement;
2871
- "bs-modal": HTMLBsModalElement;
2872
3386
  "bs-navigation-drawer": HTMLBsNavigationDrawerElement;
2873
3387
  "bs-navigation-drawer-item": HTMLBsNavigationDrawerItemElement;
2874
3388
  "bs-navigation-header": HTMLBsNavigationHeaderElement;
3389
+ "bs-pagination": HTMLBsPaginationElement;
2875
3390
  "bs-radio": HTMLBsRadioElement;
2876
3391
  "bs-slider": HTMLBsSliderElement;
3392
+ "bs-snackbar": HTMLBsSnackbarElement;
2877
3393
  "bs-source-link": HTMLBsSourceLinkElement;
2878
3394
  "bs-switch": HTMLBsSwitchElement;
2879
3395
  "bs-tab": HTMLBsTabElement;
@@ -3052,6 +3568,62 @@ declare namespace LocalJSX {
3052
3568
  */
3053
3569
  "ariaLabel"?: string | null;
3054
3570
  }
3571
+ /**
3572
+ * A circular representation of a person or entity -- a photo, initials, or (as a fallback when
3573
+ * neither is available) a generic user-silhouette icon.
3574
+ * ## When to use
3575
+ * - Representing a specific user or account: in a header, a comment, a member list, etc.
3576
+ * - `type="initials"` when a photo isn't available but a name is (e.g. "Sam Lee" -> "SL").
3577
+ * - `type="icon"` (the default) as the generic fallback when neither a photo nor a name/initials
3578
+ * is available yet.
3579
+ * ## When not to use
3580
+ * - A company/brand logo -- use `bs-logo` instead.
3581
+ * This component is decorative/informational by default, not an interactive control -- it renders
3582
+ * a plain `<span>`/`<img>`, not a `<button>`. Figma's own component set includes hover/focused/
3583
+ * pressed states (e.g. for an account-switcher trigger use case), which this implements as real
3584
+ * `:hover`/`:focus-visible`/`:active` CSS on the host itself -- so wrapping this in your own
3585
+ * `<button>`, or setting `tabindex` and a click handler on the `<bs-avatar>` element directly, gets
3586
+ * the matching visual treatment for free with no extra wiring. Left genuinely non-interactive
3587
+ * (no implicit role/tabindex of its own) so it doesn't misrepresent a purely decorative avatar
3588
+ * (e.g. next to a comment) as a control when it isn't one.
3589
+ */
3590
+ interface BsAvatar {
3591
+ /**
3592
+ * `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.
3593
+ * @default null
3594
+ */
3595
+ "alt"?: string | null;
3596
+ /**
3597
+ * `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.
3598
+ * @default null
3599
+ */
3600
+ "ariaLabel"?: string | null;
3601
+ /**
3602
+ * 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.
3603
+ * @default false
3604
+ */
3605
+ "disabled"?: boolean;
3606
+ /**
3607
+ * `type="initials"` only: the initials text to display (e.g. `"SL"` for "Sam Lee"). Ignored for `icon`/`image`.
3608
+ * @default null
3609
+ */
3610
+ "initials"?: string | null;
3611
+ /**
3612
+ * Sizing scale -- `xs` (24px) through `xxl` (128px), matching Figma's own six-step scale.
3613
+ * @default 'md'
3614
+ */
3615
+ "size"?: BsAvatarSize;
3616
+ /**
3617
+ * `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`.
3618
+ * @default null
3619
+ */
3620
+ "src"?: string | null;
3621
+ /**
3622
+ * What to render inside the circle. `icon` (default) is the generic fallback for when neither a photo nor initials are available yet.
3623
+ * @default 'icon'
3624
+ */
3625
+ "type"?: BsAvatarType;
3626
+ }
3055
3627
  /**
3056
3628
  * A small status or category pill, usually paired with a label or list item.
3057
3629
  * ## When to use
@@ -3068,6 +3640,109 @@ declare namespace LocalJSX {
3068
3640
  */
3069
3641
  "variant"?: BsBadgeVariant;
3070
3642
  }
3643
+ /**
3644
+ * A single crumb within a `<bs-breadcrumbs>` trail: a leading separator icon plus either a link,
3645
+ * plain text, or the current-page label, depending on `current`/`href`.
3646
+ * Rendering follows the W3C ARIA Authoring Practices breadcrumb pattern
3647
+ * (https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/): the current page is marked
3648
+ * `aria-current="page"` and is never a link -- this holds even when `href` is also set, unlike
3649
+ * Carbon Design System's `cds-breadcrumb-item`, which allows a link on the current item.
3650
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
3651
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
3652
+ * accessibility tree needs this explicit role to preserve the list's semantics.
3653
+ * ## When to use
3654
+ * - As one crumb inside a `<bs-breadcrumbs>` trail.
3655
+ * ## When not to use
3656
+ * - Standalone, outside a `<bs-breadcrumbs>` wrapper -- its `<ol>`/`<nav>` context and
3657
+ * first-child-aware separator hiding depend on that parent structure.
3658
+ */
3659
+ interface BsBreadcrumb {
3660
+ /**
3661
+ * 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]`.
3662
+ * @default false
3663
+ */
3664
+ "current"?: boolean;
3665
+ /**
3666
+ * 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).
3667
+ */
3668
+ "href"?: string;
3669
+ /**
3670
+ * 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"]`.
3671
+ * @default 'md'
3672
+ */
3673
+ "size"?: BsBreadcrumbSize;
3674
+ }
3675
+ /**
3676
+ * A manually-placed collapsed-items disclosure for a `<bs-breadcrumbs>` trail: a leading separator
3677
+ * plus an icon-only ellipsis button that reveals a `bs-menu` popup listing every hidden crumb.
3678
+ * `items` is JS-property-only -- must be set as a JS property (`el.items = [...]`), not an HTML
3679
+ * attribute, since attributes can only carry strings. See CONVENTIONS.md.
3680
+ * Unlike an earlier `bs-breadcrumbs`-owned automatic `maxItems` collapse, this component does no
3681
+ * collapsing logic itself -- the consumer decides which crumbs to hide and places this element
3682
+ * wherever they want the disclosure, exactly matching Carbon Design System's own approach (Carbon
3683
+ * doesn't auto-collapse breadcrumbs either; a consumer there manually decides what's visible).
3684
+ * Hidden items with an `href` render as real `<a href>` rows inside the popup, not `bs-menu-item`
3685
+ * (which renders a `<button>`) -- this matters because consuming apps commonly use client-side
3686
+ * routers that intercept clicks on real `<a>` tags to do `preventDefault` + push-state navigation.
3687
+ * Rendering hidden links any other way (e.g. `window.location`) would silently break client-side
3688
+ * routing for hidden crumbs while working fine for visible ones. Hidden items without an `href`
3689
+ * render as plain non-interactive text, matching how `bs-breadcrumb` itself handles link vs.
3690
+ * no-link crumbs.
3691
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
3692
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
3693
+ * accessibility tree needs this explicit role to preserve the list's semantics.
3694
+ * ## When to use
3695
+ * - Inside a `<bs-breadcrumbs>` trail, wherever the consumer wants an interactive disclosure for
3696
+ * crumbs they've chosen not to render directly.
3697
+ * ## When not to use
3698
+ * - As an automatic collapsing mechanism -- there is none; the consumer decides what's hidden.
3699
+ */
3700
+ interface BsBreadcrumbOverflow {
3701
+ /**
3702
+ * 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.
3703
+ * @default []
3704
+ */
3705
+ "items"?: BsBreadcrumbOverflowItem[];
3706
+ /**
3707
+ * Accessible name (`aria-label`) for the icon-only ellipsis trigger button.
3708
+ * @default 'Show hidden breadcrumbs'
3709
+ */
3710
+ "overflowLabel"?: string;
3711
+ /**
3712
+ * 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"]`.
3713
+ * @default 'md'
3714
+ */
3715
+ "size"?: BsBreadcrumbSize1;
3716
+ }
3717
+ /**
3718
+ * A breadcrumb trail container: a real `<nav>` landmark wrapping an `<ol>`, meant to be populated
3719
+ * with slotted `<bs-breadcrumb>` (and, where the consumer wants a collapsed-items disclosure,
3720
+ * `<bs-breadcrumb-overflow>`) children -- same composition-over-configuration architecture as
3721
+ * Carbon Design System's `cds-breadcrumb`/`cds-breadcrumb-item`/`cds-breadcrumb-link`.
3722
+ * This component is intentionally thin: it owns only the `<nav>` landmark and list semantics.
3723
+ * Unlike an earlier `items`-array-driven design, there is no automatic collapsing here -- exactly
3724
+ * like Carbon, the consumer decides what's visible and manually places a `<bs-breadcrumb-overflow>`
3725
+ * wherever they want a collapsed-items disclosure. See `bs-breadcrumbs.mdx` for the consolidated
3726
+ * docs covering all three components in this feature area.
3727
+ * ## When to use
3728
+ * - Showing a user's current location within a hierarchical page structure, with a path back to
3729
+ * its ancestors.
3730
+ * ## When not to use
3731
+ * - Primary in-app navigation -- use `bs-navigation-drawer`/`bs-navigation-header` instead.
3732
+ * - A flat set of unrelated pages with no hierarchy -- breadcrumbs imply ancestry, not just history.
3733
+ */
3734
+ interface BsBreadcrumbs {
3735
+ /**
3736
+ * Accessible name for the `<nav>` landmark, via `aria-label`. Same pattern as `bs-navigation-drawer`'s `heading` prop.
3737
+ * @default 'Breadcrumb'
3738
+ */
3739
+ "label"?: string;
3740
+ /**
3741
+ * 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).
3742
+ * @default 'md'
3743
+ */
3744
+ "size"?: BsBreadcrumbSize1;
3745
+ }
3071
3746
  /**
3072
3747
  * A clickable action element for the single most important action in a given context.
3073
3748
  * ## When to use
@@ -3492,6 +4167,36 @@ declare namespace LocalJSX {
3492
4167
  */
3493
4168
  "size"?: BsCheckboxSize;
3494
4169
  }
4170
+ /**
4171
+ * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
4172
+ * known yet (e.g. still being fetched from an API). Renders a small square (matching the
4173
+ * checkbox's own box) beside a text-bar placeholder (standing in for the label), both pulsing
4174
+ * together, sized to match `bs-checkbox`'s `sm`/`md`/`lg` box dimensions so layout doesn't shift
4175
+ * once the real checkbox renders.
4176
+ * ## When to use
4177
+ * - In place of a `bs-checkbox` whose label/checked state depends on data that hasn't loaded yet.
4178
+ * ## When not to use
4179
+ * - While a checkbox's own change handler is running (e.g. a save request in flight) -- render the
4180
+ * real `bs-checkbox` itself; this component is not a saving-in-progress spinner.
4181
+ * @prop --bs-checkbox-skeleton-size-sm - Box width/height at `size="sm"`. Aliased to
4182
+ * `--bs-spacing-200`, mirroring `bs-checkbox`'s own `--bs-checkbox-size-sm` -- not read directly
4183
+ * from it, since these are two separate shadow roots.
4184
+ * @prop --bs-checkbox-skeleton-size-md - Box width/height at `size="md"`. Aliased to
4185
+ * `--bs-spacing-250`.
4186
+ * @prop --bs-checkbox-skeleton-size-lg - Box width/height at `size="lg"`. Aliased to
4187
+ * `--bs-spacing-300`.
4188
+ * @prop --bs-checkbox-skeleton-gap - Gap between the box and label placeholders. Aliased to
4189
+ * `--bs-spacing-100`, mirroring `bs-checkbox`'s own `--bs-checkbox-gap`.
4190
+ * @prop --bs-checkbox-skeleton-label-width - Width of the label placeholder bar. Defaults to
4191
+ * `96px`.
4192
+ */
4193
+ interface BsCheckboxSkeleton {
4194
+ /**
4195
+ * Sizing scale, matching the `bs-checkbox` size it stands in for. Defaults to `lg`, the same (unusual) default `bs-checkbox` itself uses.
4196
+ * @default 'lg'
4197
+ */
4198
+ "size"?: BsCheckboxSize1;
4199
+ }
3495
4200
  /**
3496
4201
  * A chat composer input for Genie AI-style conversational interfaces: a text field
3497
4202
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -3716,6 +4421,41 @@ declare namespace LocalJSX {
3716
4421
  */
3717
4422
  "sortDirection"?: 'asc' | 'desc';
3718
4423
  }
4424
+ /**
4425
+ * An overlay dialog that interrupts the current flow for a focused task or confirmation.
4426
+ * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
4427
+ * ## When to use
4428
+ * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
4429
+ * - A short, focused task that doesn't warrant navigating to a new page.
4430
+ * ## When not to use
4431
+ * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
4432
+ * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
4433
+ * dialog that just gets taller and taller.
4434
+ * Two additional slots cover the Figma "Dialog" component's other states: `image` (a hero image
4435
+ * across the top, close button floats over it instead of sitting in the header row) and `icon`
4436
+ * (only rendered when `centered` is set, e.g. a success checkmark above a centered heading). The
4437
+ * close button "floats" (absolute-positioned, top-right of the dialog, with its own background)
4438
+ * whenever `centered` is true or the `image` slot has content -- otherwise it's the plain inline
4439
+ * button in the header row next to the heading, same as before this addition.
4440
+ */
4441
+ interface BsDialog {
4442
+ /**
4443
+ * 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]`.
4444
+ * @default false
4445
+ */
4446
+ "centered"?: boolean;
4447
+ "heading"?: string;
4448
+ "onBsClose"?: (event: BsDialogCustomEvent<void>) => void;
4449
+ /**
4450
+ * 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.
4451
+ * @default false
4452
+ */
4453
+ "open"?: boolean;
4454
+ /**
4455
+ * @default 'md'
4456
+ */
4457
+ "size"?: BsDialogSize;
4458
+ }
3719
4459
  /**
3720
4460
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
3721
4461
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -4032,37 +4772,14 @@ declare namespace LocalJSX {
4032
4772
  */
4033
4773
  "onBsSelect"?: (event: BsMenuItemCustomEvent<void>) => void;
4034
4774
  }
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
4775
  /**
4060
4776
  * A left-side persistent navigation sidebar: the BrandSync logo, a "Main Menu" title with a
4061
4777
  * collapse toggle, a reserved slot for a search field, and a scrollable list of nav items.
4062
4778
  * ## When to use
4063
4779
  * - The primary in-app navigation, shown alongside `bs-navigation-header` (typically that
4064
4780
  * header's `with-navigation-drawer` alignment, which omits its own logo since this component
4065
- * already renders one).
4781
+ * already renders one -- or the reverse pairing, this drawer's own `showLogo={false}` alongside
4782
+ * a header that keeps its logo instead, see that prop's own docs).
4066
4783
  * ## When not to use
4067
4784
  * - The top navigation bar itself -- use `bs-navigation-header` instead.
4068
4785
  * This component renders a real `<nav>` landmark (no explicit `role` needed -- `<nav>` already
@@ -4118,6 +4835,11 @@ declare namespace LocalJSX {
4118
4835
  * 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
4836
  */
4120
4837
  "onBsSearchClick"?: (event: BsNavigationDrawerCustomEvent<void>) => void;
4838
+ /**
4839
+ * 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.
4840
+ * @default true
4841
+ */
4842
+ "showLogo"?: boolean;
4121
4843
  }
4122
4844
  /**
4123
4845
  * A single row within a `bs-navigation-drawer`'s item list -- either a plain leaf nav item, or an
@@ -4232,6 +4954,52 @@ declare namespace LocalJSX {
4232
4954
  */
4233
4955
  "skipToContentLabel"?: string;
4234
4956
  }
4957
+ /**
4958
+ * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
4959
+ * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
4960
+ * numbered pagination); its other type ("jumper" -- a rows-per-page dropdown plus a page-jump
4961
+ * input) is a structurally different composite widget and isn't covered by this component.
4962
+ * `totalPages`/`currentPage` drive everything -- this computes which page numbers to show and
4963
+ * where to collapse into `...` itself, the consumer never builds the button list by hand.
4964
+ * ## When to use
4965
+ * - Paging through a large, ordered result set (a table, a search results list) where jumping
4966
+ * directly to a specific page number is useful.
4967
+ * ## When not to use
4968
+ * - Infinite-scroll or "load more" patterns -- those don't have a fixed, addressable page number.
4969
+ * - A huge page count where users realistically only ever go forward/back one page at a time --
4970
+ * plain prev/next controls (no numbers) are simpler there.
4971
+ */
4972
+ interface BsPagination {
4973
+ /**
4974
+ * 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).
4975
+ * @default 1
4976
+ */
4977
+ "currentPage"?: number;
4978
+ /**
4979
+ * Accessible name for the next-page button.
4980
+ * @default 'Next page'
4981
+ */
4982
+ "nextLabel"?: string;
4983
+ /**
4984
+ * 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.
4985
+ */
4986
+ "onBsPageChange"?: (event: BsPaginationCustomEvent<number>) => void;
4987
+ /**
4988
+ * Accessible name for the previous-page button.
4989
+ * @default 'Previous page'
4990
+ */
4991
+ "previousLabel"?: string;
4992
+ /**
4993
+ * 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`).
4994
+ * @default 1
4995
+ */
4996
+ "siblingCount"?: number;
4997
+ /**
4998
+ * Total number of pages. Must be a positive integer -- there's always at least one page.
4999
+ * @default 1
5000
+ */
5001
+ "totalPages"?: number;
5002
+ }
4235
5003
  /**
4236
5004
  * A single radio button with its label, for one mutually-exclusive choice within a group.
4237
5005
  * ## When to use
@@ -4349,6 +5117,49 @@ declare namespace LocalJSX {
4349
5117
  */
4350
5118
  "valueStart"?: number;
4351
5119
  }
5120
+ /**
5121
+ * A transient status bar for confirming the result of an action (e.g. "Files uploaded
5122
+ * successfully.") -- an icon (or loading spinner), a message, an optional action, and a close
5123
+ * button.
5124
+ * This component only renders the bar itself -- it doesn't manage its own visibility, timing, or
5125
+ * stacking. A consumer (typically a small "toast manager" utility) creates one per message and
5126
+ * removes it from the DOM again, whether on a timer or on `bsDismiss`. Figma's spec doesn't show
5127
+ * auto-dismiss timing at all (it's a static visual spec), so this deliberately doesn't invent one.
5128
+ * The icon is always the same checkmark glyph across every `variant`, just recolored -- matching
5129
+ * the Figma spec exactly, even though a checkmark for `variant="error"` reads a little oddly
5130
+ * semantically. Worth revisiting with severity-specific icons (warning triangle, error circle,
5131
+ * etc.) if the design updates to specify them.
5132
+ * ## When to use
5133
+ * - Confirming the outcome of an action that just happened (save succeeded, upload failed) without
5134
+ * interrupting the user's flow.
5135
+ * ## When not to use
5136
+ * - For a response that requires the user to make a decision before continuing -- use `bs-dialog`.
5137
+ * - For persistent, always-visible status -- a snackbar is inherently transient.
5138
+ */
5139
+ interface BsSnackbar {
5140
+ /**
5141
+ * 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.
5142
+ */
5143
+ "actionLabel"?: string;
5144
+ /**
5145
+ * 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.
5146
+ * @default false
5147
+ */
5148
+ "loading"?: boolean;
5149
+ /**
5150
+ * Fires when the action button is clicked. Ignored/never fires if `actionLabel` isn't set.
5151
+ */
5152
+ "onBsAction"?: (event: BsSnackbarCustomEvent<void>) => void;
5153
+ /**
5154
+ * 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.
5155
+ */
5156
+ "onBsDismiss"?: (event: BsSnackbarCustomEvent<void>) => void;
5157
+ /**
5158
+ * 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.
5159
+ * @default 'default'
5160
+ */
5161
+ "variant"?: BsSnackbarVariant;
5162
+ }
4352
5163
  /**
4353
5164
  * A single citation row inside `bs-chatbot-sources-drawer` -- a file icon + filename on the first
4354
5165
  * line, the originating system and version on the second, and a trailing "open" arrow.
@@ -4564,9 +5375,31 @@ declare namespace LocalJSX {
4564
5375
  interface BsAttachmentListAttributes {
4565
5376
  "ariaLabel": string | null;
4566
5377
  }
5378
+ interface BsAvatarAttributes {
5379
+ "type": BsAvatarType;
5380
+ "size": BsAvatarSize;
5381
+ "initials": string | null;
5382
+ "src": string | null;
5383
+ "alt": string | null;
5384
+ "ariaLabel": string | null;
5385
+ "disabled": boolean;
5386
+ }
4567
5387
  interface BsBadgeAttributes {
4568
5388
  "variant": BsBadgeVariant;
4569
5389
  }
5390
+ interface BsBreadcrumbAttributes {
5391
+ "href": string;
5392
+ "current": boolean;
5393
+ "size": BsBreadcrumbSize;
5394
+ }
5395
+ interface BsBreadcrumbOverflowAttributes {
5396
+ "overflowLabel": string;
5397
+ "size": BsBreadcrumbSize;
5398
+ }
5399
+ interface BsBreadcrumbsAttributes {
5400
+ "label": string;
5401
+ "size": BsBreadcrumbSize;
5402
+ }
4570
5403
  interface BsButtonAttributes {
4571
5404
  "variant": BsButtonVariant;
4572
5405
  "size": BsButtonSize;
@@ -4610,6 +5443,9 @@ declare namespace LocalJSX {
4610
5443
  "error": boolean;
4611
5444
  "ariaLabel": string | null;
4612
5445
  }
5446
+ interface BsCheckboxSkeletonAttributes {
5447
+ "size": BsCheckboxSize;
5448
+ }
4613
5449
  interface BsComposerAttributes {
4614
5450
  "variant": BsComposerVariant;
4615
5451
  "placeholder": string;
@@ -4630,6 +5466,12 @@ declare namespace LocalJSX {
4630
5466
  "sortDirection": 'asc' | 'desc';
4631
5467
  "selectable": boolean;
4632
5468
  }
5469
+ interface BsDialogAttributes {
5470
+ "open": boolean;
5471
+ "heading": string;
5472
+ "size": BsDialogSize;
5473
+ "centered": boolean;
5474
+ }
4633
5475
  interface BsIconButtonAttributes {
4634
5476
  "variant": BsIconButtonVariant;
4635
5477
  "size": BsIconButtonSize;
@@ -4681,16 +5523,12 @@ declare namespace LocalJSX {
4681
5523
  interface BsMenuItemAttributes {
4682
5524
  "disabled": boolean;
4683
5525
  }
4684
- interface BsModalAttributes {
4685
- "open": boolean;
4686
- "heading": string;
4687
- "size": BsModalSize;
4688
- }
4689
5526
  interface BsNavigationDrawerAttributes {
4690
5527
  "heading": string;
4691
5528
  "collapsible": boolean;
4692
5529
  "collapsed": boolean;
4693
5530
  "logoBackground": 'auto' | 'light' | 'dark';
5531
+ "showLogo": boolean;
4694
5532
  }
4695
5533
  interface BsNavigationDrawerItemAttributes {
4696
5534
  "selected": boolean;
@@ -4707,6 +5545,13 @@ declare namespace LocalJSX {
4707
5545
  "skipToContentLabel": string;
4708
5546
  "logoBackground": 'auto' | 'light' | 'dark';
4709
5547
  }
5548
+ interface BsPaginationAttributes {
5549
+ "totalPages": number;
5550
+ "currentPage": number;
5551
+ "siblingCount": number;
5552
+ "previousLabel": string;
5553
+ "nextLabel": string;
5554
+ }
4710
5555
  interface BsRadioAttributes {
4711
5556
  "name": string;
4712
5557
  "value": string;
@@ -4727,6 +5572,11 @@ declare namespace LocalJSX {
4727
5572
  "disabled": boolean;
4728
5573
  "ariaLabel": string | null;
4729
5574
  }
5575
+ interface BsSnackbarAttributes {
5576
+ "variant": BsSnackbarVariant;
5577
+ "loading": boolean;
5578
+ "actionLabel": string;
5579
+ }
4730
5580
  interface BsSourceLinkAttributes {
4731
5581
  "fileName": string;
4732
5582
  "sourceName": string;
@@ -4760,7 +5610,11 @@ declare namespace LocalJSX {
4760
5610
  "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
5611
  "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
5612
  "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] };
5613
+ "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
5614
  "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] };
5615
+ "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] };
5616
+ "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] };
5617
+ "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
5618
  "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
5619
  "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
5620
  "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,21 +5624,24 @@ declare namespace LocalJSX {
4770
5624
  "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
5625
  "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
5626
  "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] };
5627
+ "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
5628
  "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
5629
  "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
5630
  "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] };
5631
+ "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
5632
  "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
5633
  "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
5634
  "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
5635
  "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
5636
  "bs-menu": BsMenu;
4781
5637
  "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
5638
  "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
5639
  "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
5640
  "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] };
5641
+ "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
5642
  "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
5643
  "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] };
5644
+ "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
5645
  "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] };
4789
5646
  "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
5647
  "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] };
@@ -4909,6 +5766,26 @@ declare module "@stencil/core" {
4909
5766
  * hover/focus once the row is scrollable. Aliased to `--bs-neutral-300`.
4910
5767
  */
4911
5768
  "bs-attachment-list": LocalJSX.IntrinsicElements["bs-attachment-list"] & JSXBase.HTMLAttributes<HTMLBsAttachmentListElement>;
5769
+ /**
5770
+ * A circular representation of a person or entity -- a photo, initials, or (as a fallback when
5771
+ * neither is available) a generic user-silhouette icon.
5772
+ * ## When to use
5773
+ * - Representing a specific user or account: in a header, a comment, a member list, etc.
5774
+ * - `type="initials"` when a photo isn't available but a name is (e.g. "Sam Lee" -> "SL").
5775
+ * - `type="icon"` (the default) as the generic fallback when neither a photo nor a name/initials
5776
+ * is available yet.
5777
+ * ## When not to use
5778
+ * - A company/brand logo -- use `bs-logo` instead.
5779
+ * This component is decorative/informational by default, not an interactive control -- it renders
5780
+ * a plain `<span>`/`<img>`, not a `<button>`. Figma's own component set includes hover/focused/
5781
+ * pressed states (e.g. for an account-switcher trigger use case), which this implements as real
5782
+ * `:hover`/`:focus-visible`/`:active` CSS on the host itself -- so wrapping this in your own
5783
+ * `<button>`, or setting `tabindex` and a click handler on the `<bs-avatar>` element directly, gets
5784
+ * the matching visual treatment for free with no extra wiring. Left genuinely non-interactive
5785
+ * (no implicit role/tabindex of its own) so it doesn't misrepresent a purely decorative avatar
5786
+ * (e.g. next to a comment) as a control when it isn't one.
5787
+ */
5788
+ "bs-avatar": LocalJSX.IntrinsicElements["bs-avatar"] & JSXBase.HTMLAttributes<HTMLBsAvatarElement>;
4912
5789
  /**
4913
5790
  * A small status or category pill, usually paired with a label or list item.
4914
5791
  * ## When to use
@@ -4919,6 +5796,67 @@ declare module "@stencil/core" {
4919
5796
  * - For long text — badges are sized for one or two words.
4920
5797
  */
4921
5798
  "bs-badge": LocalJSX.IntrinsicElements["bs-badge"] & JSXBase.HTMLAttributes<HTMLBsBadgeElement>;
5799
+ /**
5800
+ * A single crumb within a `<bs-breadcrumbs>` trail: a leading separator icon plus either a link,
5801
+ * plain text, or the current-page label, depending on `current`/`href`.
5802
+ * Rendering follows the W3C ARIA Authoring Practices breadcrumb pattern
5803
+ * (https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/): the current page is marked
5804
+ * `aria-current="page"` and is never a link -- this holds even when `href` is also set, unlike
5805
+ * Carbon Design System's `cds-breadcrumb-item`, which allows a link on the current item.
5806
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
5807
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
5808
+ * accessibility tree needs this explicit role to preserve the list's semantics.
5809
+ * ## When to use
5810
+ * - As one crumb inside a `<bs-breadcrumbs>` trail.
5811
+ * ## When not to use
5812
+ * - Standalone, outside a `<bs-breadcrumbs>` wrapper -- its `<ol>`/`<nav>` context and
5813
+ * first-child-aware separator hiding depend on that parent structure.
5814
+ */
5815
+ "bs-breadcrumb": LocalJSX.IntrinsicElements["bs-breadcrumb"] & JSXBase.HTMLAttributes<HTMLBsBreadcrumbElement>;
5816
+ /**
5817
+ * A manually-placed collapsed-items disclosure for a `<bs-breadcrumbs>` trail: a leading separator
5818
+ * plus an icon-only ellipsis button that reveals a `bs-menu` popup listing every hidden crumb.
5819
+ * `items` is JS-property-only -- must be set as a JS property (`el.items = [...]`), not an HTML
5820
+ * attribute, since attributes can only carry strings. See CONVENTIONS.md.
5821
+ * Unlike an earlier `bs-breadcrumbs`-owned automatic `maxItems` collapse, this component does no
5822
+ * collapsing logic itself -- the consumer decides which crumbs to hide and places this element
5823
+ * wherever they want the disclosure, exactly matching Carbon Design System's own approach (Carbon
5824
+ * doesn't auto-collapse breadcrumbs either; a consumer there manually decides what's visible).
5825
+ * Hidden items with an `href` render as real `<a href>` rows inside the popup, not `bs-menu-item`
5826
+ * (which renders a `<button>`) -- this matters because consuming apps commonly use client-side
5827
+ * routers that intercept clicks on real `<a>` tags to do `preventDefault` + push-state navigation.
5828
+ * Rendering hidden links any other way (e.g. `window.location`) would silently break client-side
5829
+ * routing for hidden crumbs while working fine for visible ones. Hidden items without an `href`
5830
+ * render as plain non-interactive text, matching how `bs-breadcrumb` itself handles link vs.
5831
+ * no-link crumbs.
5832
+ * Sets `role="listitem"` on the host, mirroring Carbon's own `CDSBreadcrumbItem.connectedCallback()`
5833
+ * -- since this is a custom-element child of a real `<ol>` rather than a real `<li>`, the
5834
+ * accessibility tree needs this explicit role to preserve the list's semantics.
5835
+ * ## When to use
5836
+ * - Inside a `<bs-breadcrumbs>` trail, wherever the consumer wants an interactive disclosure for
5837
+ * crumbs they've chosen not to render directly.
5838
+ * ## When not to use
5839
+ * - As an automatic collapsing mechanism -- there is none; the consumer decides what's hidden.
5840
+ */
5841
+ "bs-breadcrumb-overflow": LocalJSX.IntrinsicElements["bs-breadcrumb-overflow"] & JSXBase.HTMLAttributes<HTMLBsBreadcrumbOverflowElement>;
5842
+ /**
5843
+ * A breadcrumb trail container: a real `<nav>` landmark wrapping an `<ol>`, meant to be populated
5844
+ * with slotted `<bs-breadcrumb>` (and, where the consumer wants a collapsed-items disclosure,
5845
+ * `<bs-breadcrumb-overflow>`) children -- same composition-over-configuration architecture as
5846
+ * Carbon Design System's `cds-breadcrumb`/`cds-breadcrumb-item`/`cds-breadcrumb-link`.
5847
+ * This component is intentionally thin: it owns only the `<nav>` landmark and list semantics.
5848
+ * Unlike an earlier `items`-array-driven design, there is no automatic collapsing here -- exactly
5849
+ * like Carbon, the consumer decides what's visible and manually places a `<bs-breadcrumb-overflow>`
5850
+ * wherever they want a collapsed-items disclosure. See `bs-breadcrumbs.mdx` for the consolidated
5851
+ * docs covering all three components in this feature area.
5852
+ * ## When to use
5853
+ * - Showing a user's current location within a hierarchical page structure, with a path back to
5854
+ * its ancestors.
5855
+ * ## When not to use
5856
+ * - Primary in-app navigation -- use `bs-navigation-drawer`/`bs-navigation-header` instead.
5857
+ * - A flat set of unrelated pages with no hierarchy -- breadcrumbs imply ancestry, not just history.
5858
+ */
5859
+ "bs-breadcrumbs": LocalJSX.IntrinsicElements["bs-breadcrumbs"] & JSXBase.HTMLAttributes<HTMLBsBreadcrumbsElement>;
4922
5860
  /**
4923
5861
  * A clickable action element for the single most important action in a given context.
4924
5862
  * ## When to use
@@ -5141,6 +6079,30 @@ declare module "@stencil/core" {
5141
6079
  * - An on/off setting that takes effect immediately (no explicit form submission) -- use `bs-switch`.
5142
6080
  */
5143
6081
  "bs-checkbox": LocalJSX.IntrinsicElements["bs-checkbox"] & JSXBase.HTMLAttributes<HTMLBsCheckboxElement>;
6082
+ /**
6083
+ * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
6084
+ * known yet (e.g. still being fetched from an API). Renders a small square (matching the
6085
+ * checkbox's own box) beside a text-bar placeholder (standing in for the label), both pulsing
6086
+ * together, sized to match `bs-checkbox`'s `sm`/`md`/`lg` box dimensions so layout doesn't shift
6087
+ * once the real checkbox renders.
6088
+ * ## When to use
6089
+ * - In place of a `bs-checkbox` whose label/checked state depends on data that hasn't loaded yet.
6090
+ * ## When not to use
6091
+ * - While a checkbox's own change handler is running (e.g. a save request in flight) -- render the
6092
+ * real `bs-checkbox` itself; this component is not a saving-in-progress spinner.
6093
+ * @prop --bs-checkbox-skeleton-size-sm - Box width/height at `size="sm"`. Aliased to
6094
+ * `--bs-spacing-200`, mirroring `bs-checkbox`'s own `--bs-checkbox-size-sm` -- not read directly
6095
+ * from it, since these are two separate shadow roots.
6096
+ * @prop --bs-checkbox-skeleton-size-md - Box width/height at `size="md"`. Aliased to
6097
+ * `--bs-spacing-250`.
6098
+ * @prop --bs-checkbox-skeleton-size-lg - Box width/height at `size="lg"`. Aliased to
6099
+ * `--bs-spacing-300`.
6100
+ * @prop --bs-checkbox-skeleton-gap - Gap between the box and label placeholders. Aliased to
6101
+ * `--bs-spacing-100`, mirroring `bs-checkbox`'s own `--bs-checkbox-gap`.
6102
+ * @prop --bs-checkbox-skeleton-label-width - Width of the label placeholder bar. Defaults to
6103
+ * `96px`.
6104
+ */
6105
+ "bs-checkbox-skeleton": LocalJSX.IntrinsicElements["bs-checkbox-skeleton"] & JSXBase.HTMLAttributes<HTMLBsCheckboxSkeletonElement>;
5144
6106
  /**
5145
6107
  * A chat composer input for Genie AI-style conversational interfaces: a text field
5146
6108
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -5251,6 +6213,24 @@ declare module "@stencil/core" {
5251
6213
  * - Deeply nested/hierarchical data — this component renders one flat row per record.
5252
6214
  */
5253
6215
  "bs-data-table": LocalJSX.IntrinsicElements["bs-data-table"] & JSXBase.HTMLAttributes<HTMLBsDataTableElement>;
6216
+ /**
6217
+ * An overlay dialog that interrupts the current flow for a focused task or confirmation.
6218
+ * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
6219
+ * ## When to use
6220
+ * - Confirming a consequential action (e.g. "Confirm booking") before it takes effect.
6221
+ * - A short, focused task that doesn't warrant navigating to a new page.
6222
+ * ## When not to use
6223
+ * - For non-blocking status messages — use a toast/notification instead of interrupting the user.
6224
+ * - For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a
6225
+ * dialog that just gets taller and taller.
6226
+ * Two additional slots cover the Figma "Dialog" component's other states: `image` (a hero image
6227
+ * across the top, close button floats over it instead of sitting in the header row) and `icon`
6228
+ * (only rendered when `centered` is set, e.g. a success checkmark above a centered heading). The
6229
+ * close button "floats" (absolute-positioned, top-right of the dialog, with its own background)
6230
+ * whenever `centered` is true or the `image` slot has content -- otherwise it's the plain inline
6231
+ * button in the header row next to the heading, same as before this addition.
6232
+ */
6233
+ "bs-dialog": LocalJSX.IntrinsicElements["bs-dialog"] & JSXBase.HTMLAttributes<HTMLBsDialogElement>;
5254
6234
  /**
5255
6235
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
5256
6236
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -5374,25 +6354,14 @@ declare module "@stencil/core" {
5374
6354
  * @prop --bs-menu-item-line-height - Aliased to `--bs-line-height-body-md`.
5375
6355
  */
5376
6356
  "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
6357
  /**
5390
6358
  * A left-side persistent navigation sidebar: the BrandSync logo, a "Main Menu" title with a
5391
6359
  * collapse toggle, a reserved slot for a search field, and a scrollable list of nav items.
5392
6360
  * ## When to use
5393
6361
  * - The primary in-app navigation, shown alongside `bs-navigation-header` (typically that
5394
6362
  * header's `with-navigation-drawer` alignment, which omits its own logo since this component
5395
- * already renders one).
6363
+ * already renders one -- or the reverse pairing, this drawer's own `showLogo={false}` alongside
6364
+ * a header that keeps its logo instead, see that prop's own docs).
5396
6365
  * ## When not to use
5397
6366
  * - The top navigation bar itself -- use `bs-navigation-header` instead.
5398
6367
  * This component renders a real `<nav>` landmark (no explicit `role` needed -- `<nav>` already
@@ -5468,6 +6437,22 @@ declare module "@stencil/core" {
5468
6437
  * `right` slot content pushed to the far right.
5469
6438
  */
5470
6439
  "bs-navigation-header": LocalJSX.IntrinsicElements["bs-navigation-header"] & JSXBase.HTMLAttributes<HTMLBsNavigationHeaderElement>;
6440
+ /**
6441
+ * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
6442
+ * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
6443
+ * numbered pagination); its other type ("jumper" -- a rows-per-page dropdown plus a page-jump
6444
+ * input) is a structurally different composite widget and isn't covered by this component.
6445
+ * `totalPages`/`currentPage` drive everything -- this computes which page numbers to show and
6446
+ * where to collapse into `...` itself, the consumer never builds the button list by hand.
6447
+ * ## When to use
6448
+ * - Paging through a large, ordered result set (a table, a search results list) where jumping
6449
+ * directly to a specific page number is useful.
6450
+ * ## When not to use
6451
+ * - Infinite-scroll or "load more" patterns -- those don't have a fixed, addressable page number.
6452
+ * - A huge page count where users realistically only ever go forward/back one page at a time --
6453
+ * plain prev/next controls (no numbers) are simpler there.
6454
+ */
6455
+ "bs-pagination": LocalJSX.IntrinsicElements["bs-pagination"] & JSXBase.HTMLAttributes<HTMLBsPaginationElement>;
5471
6456
  /**
5472
6457
  * A single radio button with its label, for one mutually-exclusive choice within a group.
5473
6458
  * ## When to use
@@ -5495,6 +6480,26 @@ declare module "@stencil/core" {
5495
6480
  * - A small, fixed set of mutually exclusive choices -- use a radio group instead.
5496
6481
  */
5497
6482
  "bs-slider": LocalJSX.IntrinsicElements["bs-slider"] & JSXBase.HTMLAttributes<HTMLBsSliderElement>;
6483
+ /**
6484
+ * A transient status bar for confirming the result of an action (e.g. "Files uploaded
6485
+ * successfully.") -- an icon (or loading spinner), a message, an optional action, and a close
6486
+ * button.
6487
+ * This component only renders the bar itself -- it doesn't manage its own visibility, timing, or
6488
+ * stacking. A consumer (typically a small "toast manager" utility) creates one per message and
6489
+ * removes it from the DOM again, whether on a timer or on `bsDismiss`. Figma's spec doesn't show
6490
+ * auto-dismiss timing at all (it's a static visual spec), so this deliberately doesn't invent one.
6491
+ * The icon is always the same checkmark glyph across every `variant`, just recolored -- matching
6492
+ * the Figma spec exactly, even though a checkmark for `variant="error"` reads a little oddly
6493
+ * semantically. Worth revisiting with severity-specific icons (warning triangle, error circle,
6494
+ * etc.) if the design updates to specify them.
6495
+ * ## When to use
6496
+ * - Confirming the outcome of an action that just happened (save succeeded, upload failed) without
6497
+ * interrupting the user's flow.
6498
+ * ## When not to use
6499
+ * - For a response that requires the user to make a decision before continuing -- use `bs-dialog`.
6500
+ * - For persistent, always-visible status -- a snackbar is inherently transient.
6501
+ */
6502
+ "bs-snackbar": LocalJSX.IntrinsicElements["bs-snackbar"] & JSXBase.HTMLAttributes<HTMLBsSnackbarElement>;
5498
6503
  /**
5499
6504
  * A single citation row inside `bs-chatbot-sources-drawer` -- a file icon + filename on the first
5500
6505
  * line, the originating system and version on the second, and a trailing "open" arrow.