@brandsync/wc 1.6.0 → 1.8.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 (376) hide show
  1. package/custom-elements.json +1302 -90
  2. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  3. package/dist/brandsync-wc/{p-387ed85f.entry.js → p-002d258d.entry.js} +1 -1
  4. package/dist/brandsync-wc/{p-e35249c4.entry.js → p-03b08508.entry.js} +1 -1
  5. package/dist/brandsync-wc/{p-db46376b.entry.js → p-051d3064.entry.js} +1 -1
  6. package/dist/brandsync-wc/{p-c054f493.entry.js → p-05c7de28.entry.js} +1 -1
  7. package/dist/brandsync-wc/{p-639946e7.entry.js → p-062cfa34.entry.js} +1 -1
  8. package/dist/brandsync-wc/p-0e39b9cc.entry.js +1 -0
  9. package/dist/brandsync-wc/{p-9fb8848c.entry.js → p-114d2fd8.entry.js} +1 -1
  10. package/dist/brandsync-wc/{p-ef68f29b.entry.js → p-153da845.entry.js} +1 -1
  11. package/dist/brandsync-wc/{p-6754dfa9.entry.js → p-1c0db4d6.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-4a1a5d6e.entry.js → p-1f7208cb.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-43617f2e.entry.js → p-235ae012.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-2700a63e.entry.js → p-275072dd.entry.js} +1 -1
  15. package/dist/brandsync-wc/p-2891d40b.entry.js +1 -0
  16. package/dist/brandsync-wc/p-29027559.entry.js +1 -0
  17. package/dist/brandsync-wc/p-2e7a1082.entry.js +1 -0
  18. package/dist/brandsync-wc/{p-604553a0.entry.js → p-3176d1d3.entry.js} +1 -1
  19. package/dist/brandsync-wc/p-33e44094.entry.js +1 -0
  20. package/dist/brandsync-wc/p-360452c2.entry.js +1 -0
  21. package/dist/brandsync-wc/p-3ec74d35.entry.js +1 -0
  22. package/dist/brandsync-wc/p-4574a707.entry.js +1 -0
  23. package/dist/brandsync-wc/p-4e5dcaff.entry.js +1 -0
  24. package/dist/brandsync-wc/p-612cf79c.entry.js +1 -0
  25. package/dist/brandsync-wc/p-61c1a2a3.entry.js +1 -0
  26. package/dist/brandsync-wc/{p-11224cab.entry.js → p-6331de9c.entry.js} +1 -1
  27. package/dist/brandsync-wc/{p-d03eba2b.entry.js → p-652d4068.entry.js} +1 -1
  28. package/dist/brandsync-wc/{p-a603a13a.entry.js → p-6bf2f116.entry.js} +1 -1
  29. package/dist/brandsync-wc/{p-9b72cc12.entry.js → p-70f64b25.entry.js} +1 -1
  30. package/dist/brandsync-wc/{p-44bfdd4b.entry.js → p-7b00dd36.entry.js} +1 -1
  31. package/dist/brandsync-wc/p-7c94e6ae.entry.js +1 -0
  32. package/dist/brandsync-wc/p-835a8dc7.entry.js +1 -0
  33. package/dist/brandsync-wc/{p-0aca5f0e.entry.js → p-8ee0153b.entry.js} +1 -1
  34. package/dist/brandsync-wc/{p-bb77098b.entry.js → p-9f65f998.entry.js} +1 -1
  35. package/dist/brandsync-wc/p-9f8852a0.entry.js +1 -0
  36. package/dist/brandsync-wc/{p-DuyFft7h.js → p-AgoOSYvW.js} +2 -2
  37. package/dist/brandsync-wc/{p-a8e2a2b2.entry.js → p-a09e157f.entry.js} +1 -1
  38. package/dist/brandsync-wc/p-a0d5a620.entry.js +1 -0
  39. package/dist/brandsync-wc/{p-525504c2.entry.js → p-a5feaad4.entry.js} +1 -1
  40. package/dist/brandsync-wc/{p-cbaa19ab.entry.js → p-a92eec48.entry.js} +1 -1
  41. package/dist/brandsync-wc/{p-57e1dc35.entry.js → p-ae978c9a.entry.js} +1 -1
  42. package/dist/brandsync-wc/{p-f2ce9a1f.entry.js → p-bbcc47b0.entry.js} +1 -1
  43. package/dist/brandsync-wc/{p-fcd4ec60.entry.js → p-bc69a96c.entry.js} +1 -1
  44. package/dist/brandsync-wc/{p-80cf96ff.entry.js → p-be2c1740.entry.js} +1 -1
  45. package/dist/brandsync-wc/p-bf53ad52.entry.js +1 -0
  46. package/dist/brandsync-wc/p-c10d2529.entry.js +1 -0
  47. package/dist/brandsync-wc/{p-abda1d69.entry.js → p-c4de155c.entry.js} +1 -1
  48. package/dist/brandsync-wc/p-c7f4c114.entry.js +1 -0
  49. package/dist/brandsync-wc/{p-52d5f6a9.entry.js → p-cfcf3f0a.entry.js} +1 -1
  50. package/dist/brandsync-wc/p-de7c946d.entry.js +1 -0
  51. package/dist/brandsync-wc/{p-a8cdf449.entry.js → p-e9b43754.entry.js} +1 -1
  52. package/dist/brandsync-wc/{p-c5011746.entry.js → p-ee7da23d.entry.js} +1 -1
  53. package/dist/brandsync-wc/{p-4bff9b4b.entry.js → p-f006d962.entry.js} +1 -1
  54. package/dist/brandsync-wc/p-f074f94e.entry.js +1 -0
  55. package/dist/brandsync-wc/p-f7d47c17.entry.js +1 -0
  56. package/dist/brandsync-wc/{p-7609221f.entry.js → p-fc58c663.entry.js} +1 -1
  57. package/dist/brandsync-wc/{p-a3a4d541.entry.js → p-fddc7bd1.entry.js} +1 -1
  58. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  59. package/dist/cjs/bs-accordion.cjs.entry.js +2 -2
  60. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +2 -2
  61. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  62. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  63. package/dist/cjs/bs-attachment-list.cjs.entry.js +3 -3
  64. package/dist/cjs/bs-attachment.cjs.entry.js +2 -2
  65. package/dist/cjs/bs-avatar.cjs.entry.js +1 -1
  66. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  67. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +2 -2
  68. package/dist/cjs/bs-breadcrumb.cjs.entry.js +1 -1
  69. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +2 -2
  70. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  71. package/dist/cjs/bs-button.cjs.entry.js +23 -4
  72. package/dist/cjs/bs-card.cjs.entry.js +2 -2
  73. package/dist/cjs/bs-carousel.cjs.entry.js +196 -0
  74. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +3 -3
  75. package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
  76. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +3 -3
  77. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  78. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
  79. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +2 -2
  80. package/dist/cjs/bs-checkbox.cjs.entry.js +48 -3
  81. package/dist/cjs/bs-chip-filter.cjs.entry.js +3 -3
  82. package/dist/cjs/bs-chip-informative.cjs.entry.js +3 -3
  83. package/dist/cjs/bs-chip-input.cjs.entry.js +3 -3
  84. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +2 -2
  85. package/dist/cjs/bs-composer.cjs.entry.js +2 -2
  86. package/dist/cjs/bs-data-table.cjs.entry.js +4 -4
  87. package/dist/cjs/bs-dialog.cjs.entry.js +2 -2
  88. package/dist/cjs/bs-file-upload-item.cjs.entry.js +85 -0
  89. package/dist/cjs/bs-file-upload.cjs.entry.js +110 -0
  90. package/dist/cjs/bs-icon-button.cjs.entry.js +22 -3
  91. package/dist/cjs/bs-inline-tab.cjs.entry.js +7 -3
  92. package/dist/cjs/bs-input.cjs.entry.js +69 -5
  93. package/dist/cjs/bs-logo.cjs.entry.js +1 -1
  94. package/dist/cjs/bs-menu-item.cjs.entry.js +2 -2
  95. package/dist/cjs/bs-menu.cjs.entry.js +25 -3
  96. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +2 -2
  97. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +2 -2
  98. package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
  99. package/dist/cjs/bs-pagination.cjs.entry.js +2 -2
  100. package/dist/cjs/bs-progress-linear.cjs.entry.js +8 -3
  101. package/dist/cjs/bs-progress.cjs.entry.js +8 -3
  102. package/dist/cjs/bs-radio.cjs.entry.js +81 -12
  103. package/dist/cjs/bs-slider.cjs.entry.js +54 -2
  104. package/dist/cjs/bs-snackbar.cjs.entry.js +2 -2
  105. package/dist/cjs/bs-source-link.cjs.entry.js +4 -4
  106. package/dist/cjs/bs-stepper-step.cjs.entry.js +3 -3
  107. package/dist/cjs/bs-stepper.cjs.entry.js +3 -2
  108. package/dist/cjs/bs-switch.cjs.entry.js +36 -3
  109. package/dist/cjs/bs-tab.cjs.entry.js +7 -3
  110. package/dist/cjs/bs-tabs.cjs.entry.js +51 -2
  111. package/dist/cjs/bs-toast.cjs.entry.js +2 -2
  112. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  113. package/dist/cjs/{index-D7e6DfLV.js → index-kk9YXF2S.js} +43 -5
  114. package/dist/cjs/loader.cjs.js +2 -2
  115. package/dist/collection/collection-manifest.json +3 -0
  116. package/dist/collection/components/bs-a11y.cmp.test.js +54 -0
  117. package/dist/collection/components/bs-accordion/bs-accordion.cmp.test.js +5 -0
  118. package/dist/collection/components/bs-accordion/bs-accordion.css +5 -5
  119. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  120. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  121. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  122. package/dist/collection/components/bs-attachment/bs-attachment.css +1 -1
  123. package/dist/collection/components/bs-attachment-list/bs-attachment-list.css +1 -1
  124. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  125. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.css +1 -1
  126. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -1
  127. package/dist/collection/components/bs-button/bs-button/bs-button.css +17 -10
  128. package/dist/collection/components/bs-button/bs-button/bs-button.js +16 -3
  129. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +16 -3
  130. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  131. package/dist/collection/components/bs-card/bs-card.css +4 -0
  132. package/dist/collection/components/bs-carousel/bs-carousel.cmp.test.js +198 -0
  133. package/dist/collection/components/bs-carousel/bs-carousel.css +107 -0
  134. package/dist/collection/components/bs-carousel/bs-carousel.js +531 -0
  135. package/dist/collection/components/bs-carousel/bs-carousel.stories.js +68 -0
  136. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.css +1 -1
  137. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  138. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  139. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.css +3 -3
  140. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  141. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  142. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  143. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
  144. package/dist/collection/components/bs-checkbox/bs-checkbox.css +8 -1
  145. package/dist/collection/components/bs-checkbox/bs-checkbox.js +100 -2
  146. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.css +4 -4
  147. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.js +1 -1
  148. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.css +4 -4
  149. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.js +1 -1
  150. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.css +5 -5
  151. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +1 -1
  152. package/dist/collection/components/bs-composer/bs-composer.js +1 -1
  153. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -1
  154. package/dist/collection/components/bs-data-table/bs-data-table.css +1 -1
  155. package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
  156. package/dist/collection/components/bs-dialog/bs-dialog.css +5 -1
  157. package/dist/collection/components/bs-file-upload/bs-file-upload.cmp.test.js +119 -0
  158. package/dist/collection/components/bs-file-upload/bs-file-upload.css +139 -0
  159. package/dist/collection/components/bs-file-upload/bs-file-upload.js +342 -0
  160. package/dist/collection/components/bs-file-upload/bs-file-upload.stories.js +116 -0
  161. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.cmp.test.js +115 -0
  162. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.css +154 -0
  163. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +329 -0
  164. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.stories.js +54 -0
  165. package/dist/collection/components/bs-form-association.cmp.test.js +172 -0
  166. package/dist/collection/components/bs-input/bs-input.css +10 -4
  167. package/dist/collection/components/bs-input/bs-input.js +82 -4
  168. package/dist/collection/components/bs-keyboard-nav.cmp.test.js +100 -0
  169. package/dist/collection/components/bs-menu/bs-menu.css +4 -0
  170. package/dist/collection/components/bs-menu/bs-menu.js +33 -1
  171. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  172. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  173. package/dist/collection/components/bs-progress/bs-progress.js +27 -2
  174. package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +27 -2
  175. package/dist/collection/components/bs-radio/bs-radio.cmp.test.js +4 -10
  176. package/dist/collection/components/bs-radio/bs-radio.css +7 -1
  177. package/dist/collection/components/bs-radio/bs-radio.js +92 -14
  178. package/dist/collection/components/bs-radio/bs-radio.stories.js +1 -10
  179. package/dist/collection/components/bs-slider/bs-slider.js +68 -2
  180. package/dist/collection/components/bs-snackbar/bs-snackbar.js +1 -1
  181. package/dist/collection/components/bs-source-link/bs-source-link.css +2 -2
  182. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  183. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +3 -2
  184. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.css +3 -3
  185. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
  186. package/dist/collection/components/bs-switch/bs-switch.css +10 -1
  187. package/dist/collection/components/bs-switch/bs-switch.js +69 -2
  188. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.css +2 -2
  189. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +24 -1
  190. package/dist/collection/components/bs-tab/bs-tab/bs-tab.css +2 -2
  191. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +24 -1
  192. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +57 -1
  193. package/dist/collection/components/bs-toast/bs-toast.js +1 -1
  194. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  195. package/dist/collection/components/forms/forms.stories.js +63 -0
  196. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +1 -1
  197. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  198. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +1 -1
  199. package/dist/collection/test/helpers/conventions.js +46 -0
  200. package/dist/collection/test/helpers/conventions.unit.test.js +38 -0
  201. package/dist/components/bs-accordion.js +1 -1
  202. package/dist/components/bs-ai-disclaimer.js +1 -1
  203. package/dist/components/bs-ai-greeting.js +1 -1
  204. package/dist/components/bs-ai-thinking.js +1 -1
  205. package/dist/components/bs-attachment-list.js +1 -1
  206. package/dist/components/bs-attachment.js +1 -1
  207. package/dist/components/bs-avatar.js +1 -1
  208. package/dist/components/bs-badge.js +1 -1
  209. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  210. package/dist/components/bs-breadcrumb.js +1 -1
  211. package/dist/components/bs-breadcrumbs.js +1 -1
  212. package/dist/components/bs-button-skeleton.js +1 -1
  213. package/dist/components/bs-button.js +1 -1
  214. package/dist/components/bs-card.js +1 -1
  215. package/dist/components/bs-carousel.d.ts +11 -0
  216. package/dist/components/bs-carousel.js +1 -0
  217. package/dist/components/bs-chatbot-feedback.js +1 -1
  218. package/dist/components/bs-chatbot-header.js +1 -1
  219. package/dist/components/bs-chatbot-response-action.js +1 -1
  220. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  221. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  222. package/dist/components/bs-checkbox-skeleton.js +1 -1
  223. package/dist/components/bs-checkbox.js +1 -1
  224. package/dist/components/bs-chip-filter.js +1 -1
  225. package/dist/components/bs-chip-informative.js +1 -1
  226. package/dist/components/bs-chip-input.js +1 -1
  227. package/dist/components/bs-composer-status-banner.js +1 -1
  228. package/dist/components/bs-composer.js +1 -1
  229. package/dist/components/bs-data-table.js +1 -1
  230. package/dist/components/bs-dialog.js +1 -1
  231. package/dist/components/bs-file-upload-item.d.ts +11 -0
  232. package/dist/components/bs-file-upload-item.js +1 -0
  233. package/dist/components/bs-file-upload.d.ts +11 -0
  234. package/dist/components/bs-file-upload.js +1 -0
  235. package/dist/components/bs-icon-button.js +1 -1
  236. package/dist/components/bs-inline-tab.js +1 -1
  237. package/dist/components/bs-input.js +1 -1
  238. package/dist/components/bs-logo.js +1 -1
  239. package/dist/components/bs-menu-item.js +1 -1
  240. package/dist/components/bs-menu.js +1 -1
  241. package/dist/components/bs-navigation-drawer-item.js +1 -1
  242. package/dist/components/bs-navigation-drawer.js +1 -1
  243. package/dist/components/bs-navigation-header.js +1 -1
  244. package/dist/components/bs-pagination.js +1 -1
  245. package/dist/components/bs-progress-linear.js +1 -1
  246. package/dist/components/bs-progress.js +1 -1
  247. package/dist/components/bs-radio.js +1 -1
  248. package/dist/components/bs-slider.js +1 -1
  249. package/dist/components/bs-snackbar.js +1 -1
  250. package/dist/components/bs-source-link.js +1 -1
  251. package/dist/components/bs-stepper-step.js +1 -1
  252. package/dist/components/bs-stepper.js +1 -1
  253. package/dist/components/bs-switch.js +1 -1
  254. package/dist/components/bs-tab.js +1 -1
  255. package/dist/components/bs-tabs.js +1 -1
  256. package/dist/components/bs-toast.js +1 -1
  257. package/dist/components/bs-tooltip.js +1 -1
  258. package/dist/components/index.js +1 -1
  259. package/dist/components/{p-B8eut73c.js → p-BA3c9Rom.js} +1 -1
  260. package/dist/components/{p-DIezWdNu.js → p-BfEyD6Ku.js} +1 -1
  261. package/dist/components/p-BkHYJIyj.js +1 -0
  262. package/dist/components/p-Buly0d5G.js +1 -0
  263. package/dist/components/p-CpUHnsq9.js +1 -0
  264. package/dist/components/p-EtXc94lJ.js +1 -0
  265. package/dist/components/{p-mnGJPH85.js → p-JYlmcxBn.js} +1 -1
  266. package/dist/components/{p-BhvV55-6.js → p-R2MlkUzD.js} +1 -1
  267. package/dist/components/p-wei0Ija2.js +1 -0
  268. package/dist/esm/brandsync-wc.js +3 -3
  269. package/dist/esm/bs-accordion.entry.js +2 -2
  270. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  271. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  272. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  273. package/dist/esm/bs-attachment-list.entry.js +3 -3
  274. package/dist/esm/bs-attachment.entry.js +2 -2
  275. package/dist/esm/bs-avatar.entry.js +1 -1
  276. package/dist/esm/bs-badge.entry.js +1 -1
  277. package/dist/esm/bs-breadcrumb-overflow.entry.js +2 -2
  278. package/dist/esm/bs-breadcrumb.entry.js +1 -1
  279. package/dist/esm/bs-breadcrumbs.entry.js +2 -2
  280. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  281. package/dist/esm/bs-button.entry.js +23 -4
  282. package/dist/esm/bs-card.entry.js +2 -2
  283. package/dist/esm/bs-carousel.entry.js +194 -0
  284. package/dist/esm/bs-chatbot-feedback.entry.js +3 -3
  285. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  286. package/dist/esm/bs-chatbot-response-action.entry.js +3 -3
  287. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  288. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  289. package/dist/esm/bs-checkbox-skeleton.entry.js +2 -2
  290. package/dist/esm/bs-checkbox.entry.js +48 -3
  291. package/dist/esm/bs-chip-filter.entry.js +3 -3
  292. package/dist/esm/bs-chip-informative.entry.js +3 -3
  293. package/dist/esm/bs-chip-input.entry.js +3 -3
  294. package/dist/esm/bs-composer-status-banner.entry.js +2 -2
  295. package/dist/esm/bs-composer.entry.js +2 -2
  296. package/dist/esm/bs-data-table.entry.js +4 -4
  297. package/dist/esm/bs-dialog.entry.js +2 -2
  298. package/dist/esm/bs-file-upload-item.entry.js +83 -0
  299. package/dist/esm/bs-file-upload.entry.js +108 -0
  300. package/dist/esm/bs-icon-button.entry.js +22 -3
  301. package/dist/esm/bs-inline-tab.entry.js +7 -3
  302. package/dist/esm/bs-input.entry.js +69 -5
  303. package/dist/esm/bs-logo.entry.js +1 -1
  304. package/dist/esm/bs-menu-item.entry.js +2 -2
  305. package/dist/esm/bs-menu.entry.js +25 -3
  306. package/dist/esm/bs-navigation-drawer-item.entry.js +2 -2
  307. package/dist/esm/bs-navigation-drawer.entry.js +2 -2
  308. package/dist/esm/bs-navigation-header.entry.js +2 -2
  309. package/dist/esm/bs-pagination.entry.js +2 -2
  310. package/dist/esm/bs-progress-linear.entry.js +8 -3
  311. package/dist/esm/bs-progress.entry.js +8 -3
  312. package/dist/esm/bs-radio.entry.js +81 -12
  313. package/dist/esm/bs-slider.entry.js +54 -2
  314. package/dist/esm/bs-snackbar.entry.js +2 -2
  315. package/dist/esm/bs-source-link.entry.js +4 -4
  316. package/dist/esm/bs-stepper-step.entry.js +3 -3
  317. package/dist/esm/bs-stepper.entry.js +3 -2
  318. package/dist/esm/bs-switch.entry.js +36 -3
  319. package/dist/esm/bs-tab.entry.js +7 -3
  320. package/dist/esm/bs-tabs.entry.js +51 -2
  321. package/dist/esm/bs-toast.entry.js +2 -2
  322. package/dist/esm/bs-tooltip.entry.js +2 -2
  323. package/dist/esm/{index-DuyFft7h.js → index-AgoOSYvW.js} +43 -5
  324. package/dist/esm/loader.js +3 -3
  325. package/dist/types/components/bs-a11y.cmp.test.d.ts +1 -0
  326. package/dist/types/components/bs-button/bs-button/bs-button.d.ts +4 -1
  327. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +4 -1
  328. package/dist/types/components/bs-carousel/bs-carousel.cmp.test.d.ts +1 -0
  329. package/dist/types/components/bs-carousel/bs-carousel.d.ts +101 -0
  330. package/dist/types/components/bs-carousel/bs-carousel.stories.d.ts +17 -0
  331. package/dist/types/components/bs-checkbox/bs-checkbox.d.ts +12 -0
  332. package/dist/types/components/bs-file-upload/bs-file-upload.cmp.test.d.ts +1 -0
  333. package/dist/types/components/bs-file-upload/bs-file-upload.d.ts +59 -0
  334. package/dist/types/components/bs-file-upload/bs-file-upload.stories.d.ts +21 -0
  335. package/dist/types/components/bs-file-upload-item/bs-file-upload-item.cmp.test.d.ts +1 -0
  336. package/dist/types/components/bs-file-upload-item/bs-file-upload-item.d.ts +58 -0
  337. package/dist/types/components/bs-file-upload-item/bs-file-upload-item.stories.d.ts +18 -0
  338. package/dist/types/components/bs-form-association.cmp.test.d.ts +1 -0
  339. package/dist/types/components/bs-input/bs-input.d.ts +12 -0
  340. package/dist/types/components/bs-keyboard-nav.cmp.test.d.ts +1 -0
  341. package/dist/types/components/bs-menu/bs-menu.d.ts +4 -0
  342. package/dist/types/components/bs-progress/bs-progress.d.ts +5 -0
  343. package/dist/types/components/bs-progress-linear/bs-progress-linear.d.ts +5 -0
  344. package/dist/types/components/bs-radio/bs-radio.d.ts +23 -9
  345. package/dist/types/components/bs-slider/bs-slider.d.ts +9 -0
  346. package/dist/types/components/bs-switch/bs-switch.d.ts +10 -0
  347. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.d.ts +4 -0
  348. package/dist/types/components/bs-tab/bs-tab/bs-tab.d.ts +4 -0
  349. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +7 -0
  350. package/dist/types/components/forms/forms.stories.d.ts +6 -0
  351. package/dist/types/components.d.ts +735 -7
  352. package/dist/types/test/helpers/conventions.d.ts +21 -0
  353. package/dist/types/test/helpers/conventions.unit.test.d.ts +1 -0
  354. package/package.json +2 -1
  355. package/readme.md +14 -0
  356. package/dist/brandsync-wc/p-00f733ef.entry.js +0 -1
  357. package/dist/brandsync-wc/p-18c59979.entry.js +0 -1
  358. package/dist/brandsync-wc/p-3cb58df8.entry.js +0 -1
  359. package/dist/brandsync-wc/p-3ed5b215.entry.js +0 -1
  360. package/dist/brandsync-wc/p-413a1ee0.entry.js +0 -1
  361. package/dist/brandsync-wc/p-512dafc6.entry.js +0 -1
  362. package/dist/brandsync-wc/p-57609703.entry.js +0 -1
  363. package/dist/brandsync-wc/p-6bf8a5bd.entry.js +0 -1
  364. package/dist/brandsync-wc/p-6c769a1d.entry.js +0 -1
  365. package/dist/brandsync-wc/p-6d0c054b.entry.js +0 -1
  366. package/dist/brandsync-wc/p-7b9598d9.entry.js +0 -1
  367. package/dist/brandsync-wc/p-98021881.entry.js +0 -1
  368. package/dist/brandsync-wc/p-a96856fd.entry.js +0 -1
  369. package/dist/brandsync-wc/p-bb68e236.entry.js +0 -1
  370. package/dist/brandsync-wc/p-cfb49342.entry.js +0 -1
  371. package/dist/brandsync-wc/p-e2ac61c4.entry.js +0 -1
  372. package/dist/brandsync-wc/p-f714683d.entry.js +0 -1
  373. package/dist/brandsync-wc/p-fe778b6b.entry.js +0 -1
  374. package/dist/components/p-3gs695M6.js +0 -1
  375. package/dist/components/p-BaxFLlKS.js +0 -1
  376. package/dist/components/p-DKMMCLxx.js +0 -1
@@ -15,6 +15,7 @@ import { BsBreadcrumbSize as BsBreadcrumbSize1 } from "./components/bs-breadcrum
15
15
  import { BsButtonSize, BsButtonVariant } from "./components/bs-button/bs-button/bs-button";
16
16
  import { BsButtonSize as BsButtonSize1 } from "./components/bs-button/bs-button/bs-button";
17
17
  import { BsCardSurface } from "./components/bs-card/bs-card";
18
+ import { BsCarouselTracker } from "./components/bs-carousel/bs-carousel";
18
19
  import { BsCheckboxSize } from "./components/bs-checkbox/bs-checkbox";
19
20
  import { BsCheckboxSize as BsCheckboxSize1 } from "./components/bs-checkbox/bs-checkbox";
20
21
  import { BsChipFilterSize } from "./components/bs-chip/bs-chip-filter/bs-chip-filter";
@@ -24,6 +25,8 @@ import { BsComposerState, BsComposerVariant } from "./components/bs-composer/bs-
24
25
  import { BsComposerStatusBannerType } from "./components/bs-composer-status-banner/bs-composer-status-banner";
25
26
  import { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs-data-table";
26
27
  import { BsDialogSize } from "./components/bs-dialog/bs-dialog";
28
+ import { BsFileUploadDirection } from "./components/bs-file-upload/bs-file-upload";
29
+ import { BsFileUploadItemState } from "./components/bs-file-upload-item/bs-file-upload-item";
27
30
  import { BsIconButtonSize, BsIconButtonVariant } from "./components/bs-button/bs-icon-button/bs-icon-button";
28
31
  import { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
29
32
  import { BsNavigationHeaderAlignment } from "./components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header";
@@ -47,6 +50,7 @@ export { BsBreadcrumbSize as BsBreadcrumbSize1 } from "./components/bs-breadcrum
47
50
  export { BsButtonSize, BsButtonVariant } from "./components/bs-button/bs-button/bs-button";
48
51
  export { BsButtonSize as BsButtonSize1 } from "./components/bs-button/bs-button/bs-button";
49
52
  export { BsCardSurface } from "./components/bs-card/bs-card";
53
+ export { BsCarouselTracker } from "./components/bs-carousel/bs-carousel";
50
54
  export { BsCheckboxSize } from "./components/bs-checkbox/bs-checkbox";
51
55
  export { BsCheckboxSize as BsCheckboxSize1 } from "./components/bs-checkbox/bs-checkbox";
52
56
  export { BsChipFilterSize } from "./components/bs-chip/bs-chip-filter/bs-chip-filter";
@@ -56,6 +60,8 @@ export { BsComposerState, BsComposerVariant } from "./components/bs-composer/bs-
56
60
  export { BsComposerStatusBannerType } from "./components/bs-composer-status-banner/bs-composer-status-banner";
57
61
  export { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs-data-table";
58
62
  export { BsDialogSize } from "./components/bs-dialog/bs-dialog";
63
+ export { BsFileUploadDirection } from "./components/bs-file-upload/bs-file-upload";
64
+ export { BsFileUploadItemState } from "./components/bs-file-upload-item/bs-file-upload-item";
59
65
  export { BsIconButtonSize, BsIconButtonVariant } from "./components/bs-button/bs-icon-button/bs-icon-button";
60
66
  export { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
61
67
  export { BsNavigationHeaderAlignment } from "./components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header";
@@ -488,7 +494,7 @@ export namespace Components {
488
494
  */
489
495
  "size": BsButtonSize;
490
496
  /**
491
- * Native `<button>` type.
497
+ * Button type. `submit` submits the surrounding `<form>` (via `requestSubmit()`, so validation runs); `reset` resets it; `button` (default) does nothing on its own.
492
498
  * @default 'button'
493
499
  */
494
500
  "type": 'button' | 'submit' | 'reset';
@@ -538,6 +544,82 @@ export namespace Components {
538
544
  */
539
545
  "surface": BsCardSurface;
540
546
  }
547
+ /**
548
+ * A carousel that shows a page of slides at a time, with a tracker (dots or numbered blocks) and
549
+ * previous/next controls, and optional auto-advance with a Pause/Play button.
550
+ * Slides are the default slot's direct children (a `bs-card`, an image, anything). The carousel
551
+ * shows `slidesPerView` of them at once, so there are `ceil(slides / slidesPerView)` pages. It
552
+ * manages two things on those slide elements: the `hidden` attribute (off-page slides are hidden,
553
+ * so they leave the tab order and the accessibility tree) and, only when not already set,
554
+ * `role="group"`, `aria-roledescription="slide"` and an `aria-label` of "n of N".
555
+ * Composes `bs-pagination` (`tracker="numbers"`), `bs-icon-button` (previous/next for
556
+ * `tracker="dots"`) and `bs-button` (Pause/Play) rather than re-implementing them.
557
+ * ## When to use
558
+ * - Browsing a set of related items (cards, images, announcements) where only a few fit at once.
559
+ * - Rotating promotional or highlight content, where auto-advance with a Pause control is wanted.
560
+ * ## When not to use
561
+ * - Content users must see in full to complete a task -- hiding it behind paging hurts discovery;
562
+ * lay it out in a list or grid instead.
563
+ * - A strict sequence of steps -- use `bs-stepper`.
564
+ * - Paging through a large, addressable result set -- use `bs-pagination`.
565
+ */
566
+ interface BsCarousel {
567
+ /**
568
+ * Auto-advances to the next page every `interval` ms, looping from the last page to the first. Off by default. The Pause/Play button is only rendered when this is set. Auto-advance also stops while the pointer is over the carousel or focus is inside it, and starts paused for users who prefer reduced motion.
569
+ * @default false
570
+ */
571
+ "autoplay": boolean;
572
+ /**
573
+ * The visible page, 1-based (same convention as `bs-pagination`). Mutable so the carousel advances it itself (tracker, previous/next, autoplay). Clamped to the available pages.
574
+ * @default 1
575
+ */
576
+ "currentPage": number;
577
+ /**
578
+ * Milliseconds between auto-advances, when `autoplay` is set.
579
+ * @default 5000
580
+ */
581
+ "interval": number;
582
+ /**
583
+ * Accessible name of the carousel region (e.g. "Featured articles").
584
+ * @default 'Carousel'
585
+ */
586
+ "label": string;
587
+ /**
588
+ * Accessible name of the next button (`tracker="dots"`) -- override for localisation.
589
+ * @default 'Next slide'
590
+ */
591
+ "nextLabel": string;
592
+ /**
593
+ * Label of the Pause/Play button while auto-advance is running.
594
+ * @default 'Pause'
595
+ */
596
+ "pauseLabel": string;
597
+ /**
598
+ * Whether auto-advance is paused by the user (the Pause/Play button). Mutable and reflected so the state is visible to CSS and settable from outside. Only meaningful with `autoplay`.
599
+ * @default false
600
+ */
601
+ "paused": boolean;
602
+ /**
603
+ * Label of the Pause/Play button while auto-advance is paused.
604
+ * @default 'Play'
605
+ */
606
+ "playLabel": string;
607
+ /**
608
+ * Accessible name of the previous button (`tracker="dots"`) -- override for localisation.
609
+ * @default 'Previous slide'
610
+ */
611
+ "previousLabel": string;
612
+ /**
613
+ * How many slides are visible at once. The tracker counts pages: `ceil(slides / slidesPerView)`.
614
+ * @default 3
615
+ */
616
+ "slidesPerView": number;
617
+ /**
618
+ * Which tracker to show under the slides. `dots` is a compact dot row between previous/next buttons (the dots are an indicator, not buttons); `numbers` is a numbered `bs-pagination` where each page can be jumped to directly.
619
+ * @default 'dots'
620
+ */
621
+ "tracker": BsCarouselTracker;
622
+ }
541
623
  /**
542
624
  * A star-rating feedback card shown at the end of a Genie AI chat: a heading/subtitle, a 5-star
543
625
  * rating, an optional comment, and either "Submit feedback" + "Start new chat" (before
@@ -792,11 +874,25 @@ export namespace Components {
792
874
  * @default false
793
875
  */
794
876
  "indeterminate": boolean;
877
+ /**
878
+ * The `name` the value is submitted under in a surrounding `<form>`'s `FormData`.
879
+ */
880
+ "name"?: string;
881
+ /**
882
+ * Marks the checkbox as required: the surrounding form fails validation while unchecked.
883
+ * @default false
884
+ */
885
+ "required": boolean;
795
886
  /**
796
887
  * Sizing scale. Controls the box's width/height and border width; corner radius is constant across all sizes.
797
888
  * @default 'lg'
798
889
  */
799
890
  "size": BsCheckboxSize;
891
+ /**
892
+ * The value submitted when checked (native checkbox default: `"on"`).
893
+ * @default 'on'
894
+ */
895
+ "value": string;
800
896
  }
801
897
  /**
802
898
  * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
@@ -1152,6 +1248,111 @@ export namespace Components {
1152
1248
  */
1153
1249
  "size": BsDialogSize;
1154
1250
  }
1251
+ /**
1252
+ * A file dropzone: drag files onto it, or press "Browse file" to open the file picker. It reports
1253
+ * the chosen files and does nothing else -- the consuming app owns the upload itself and shows its
1254
+ * progress with `bs-file-upload-item`.
1255
+ * ## When to use
1256
+ * - Letting users add one or more files (documents, images) to upload.
1257
+ * ## When not to use
1258
+ * - Attaching files to a chat message -- see `bs-composer` / `bs-attachment`.
1259
+ * - A file input that must submit with a native `<form>`: this component is **not**
1260
+ * form-associated. Read the files from `bsFilesSelect` and submit them yourself.
1261
+ */
1262
+ interface BsFileUpload {
1263
+ /**
1264
+ * Which files are accepted, same syntax as the native `accept` attribute: comma-separated extensions (`.pdf`), MIME types (`image/png`) or wildcards (`image/*`). Applied to the picker and also to dropped files, which the browser does not filter.
1265
+ */
1266
+ "accept"?: string;
1267
+ /**
1268
+ * Label of the browse button. Override for localisation.
1269
+ * @default 'Browse file'
1270
+ */
1271
+ "buttonLabel": string;
1272
+ /**
1273
+ * Guidelines under the heading (e.g. "PDF or JPG, up to 8MB").
1274
+ */
1275
+ "description"?: string;
1276
+ /**
1277
+ * Layout: icon beside the text (`horizontal`) or stacked above it, centered (`vertical`).
1278
+ * @default 'horizontal'
1279
+ */
1280
+ "direction": BsFileUploadDirection;
1281
+ /**
1282
+ * Disables the browse button and ignores drops.
1283
+ * @default false
1284
+ */
1285
+ "disabled": boolean;
1286
+ /**
1287
+ * Whether a file is currently being dragged over the dropzone (the Figma "Drop" state). Set by the component during a drag; mutable and reflected so it can also be set to show the state statically.
1288
+ * @default false
1289
+ */
1290
+ "dragging": boolean;
1291
+ /**
1292
+ * Heading text (e.g. "Upload your documents").
1293
+ */
1294
+ "heading"?: string;
1295
+ /**
1296
+ * Allows selecting/dropping more than one file. Without it only the first file is taken.
1297
+ * @default false
1298
+ */
1299
+ "multiple": boolean;
1300
+ }
1301
+ /**
1302
+ * One file in an upload list: a thumbnail, the file name and size, a status line (a progress bar
1303
+ * while uploading, or a success / error message) and an action button (cancel while uploading or
1304
+ * after an error, remove once uploaded).
1305
+ * Presentational only -- the consuming app owns the upload and drives `state`, `progress` and
1306
+ * `message` from it. Pair with `bs-file-upload` (the dropzone that picks the files).
1307
+ * ## When to use
1308
+ * - Showing the status of each file the user has added, in a list under a `bs-file-upload`.
1309
+ * ## When not to use
1310
+ * - Attaching files to a chat message -- use `bs-attachment`.
1311
+ */
1312
+ interface BsFileUploadItem {
1313
+ /**
1314
+ * Accessible name of the cancel button (`loading`, `in-progress`, `error`).
1315
+ * @default 'Cancel upload'
1316
+ */
1317
+ "cancelLabel": string;
1318
+ /**
1319
+ * The file name.
1320
+ * @default ''
1321
+ */
1322
+ "fileName": string;
1323
+ /**
1324
+ * The file size, already formatted (e.g. "8MB").
1325
+ */
1326
+ "fileSize"?: string;
1327
+ /**
1328
+ * The status text. Defaults per state: "Loading..." (`loading`), "{progress}% uploaded" (`in-progress`), "Upload failed" (`error`), "File uploaded successfully" (`success`). Provide your own for localisation or a specific error.
1329
+ */
1330
+ "message"?: string;
1331
+ /**
1332
+ * Upload progress, 0-100. Only used when `state="in-progress"`.
1333
+ * @default 0
1334
+ */
1335
+ "progress": number;
1336
+ /**
1337
+ * Accessible name of the remove button (`success`).
1338
+ * @default 'Remove file'
1339
+ */
1340
+ "removeLabel": string;
1341
+ /**
1342
+ * Where the upload is. `loading` = working with no known percentage (indeterminate bar); `in-progress` = uploading with a known `progress`; `error` and `success` are final.
1343
+ * @default 'loading'
1344
+ */
1345
+ "state": BsFileUploadItemState;
1346
+ /**
1347
+ * Alt text for `thumbnailSrc`. Leave empty when the file name already says it all.
1348
+ * @default ''
1349
+ */
1350
+ "thumbnailAlt": string;
1351
+ /**
1352
+ * A preview image of the file. Shown instead of the placeholder icon when set.
1353
+ */
1354
+ "thumbnailSrc"?: string;
1355
+ }
1155
1356
  /**
1156
1357
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
1157
1358
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -1187,7 +1388,7 @@ export namespace Components {
1187
1388
  */
1188
1389
  "size": BsIconButtonSize;
1189
1390
  /**
1190
- * Native `<button>` type.
1391
+ * Button type. `submit` submits the surrounding `<form>` (via `requestSubmit()`, so validation runs); `reset` resets it; `button` (default) does nothing on its own.
1191
1392
  * @default 'button'
1192
1393
  */
1193
1394
  "type": 'button' | 'submit' | 'reset';
@@ -1235,6 +1436,10 @@ export namespace Components {
1235
1436
  * @default false
1236
1437
  */
1237
1438
  "selected": boolean;
1439
+ /**
1440
+ * Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the Tab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays a normal tab stop.
1441
+ */
1442
+ "tabbable"?: boolean;
1238
1443
  }
1239
1444
  /**
1240
1445
  * A single-line text field with an optional label, description, and error state. Also covers a
@@ -1293,6 +1498,10 @@ export namespace Components {
1293
1498
  * Minimum value for `type="number"`'s stepper buttons.
1294
1499
  */
1295
1500
  "min"?: number;
1501
+ /**
1502
+ * The `name` the value is submitted under in a surrounding `<form>`'s `FormData`.
1503
+ */
1504
+ "name"?: string;
1296
1505
  /**
1297
1506
  * Whether the `type="dropdown"` trigger is open. Reflects to an attribute so consumers can style an open state via CSS. When `options` is non-empty, this also controls whether the `bs-menu` of `bs-menu-item`s is rendered below the field.
1298
1507
  * @default false
@@ -1660,6 +1869,11 @@ export namespace Components {
1660
1869
  * weight of a ring.
1661
1870
  */
1662
1871
  interface BsProgress {
1872
+ /**
1873
+ * Accessible name for the progress bar (e.g. "Uploading report"). Required for assistive tech -- a `role="progressbar"` with no name is an axe-core `aria-progressbar-name` violation. Setting `aria-label` on the host doesn't reach the inner element across the shadow boundary, so this prop binds it directly -- same pattern as `bs-button`'s `ariaLabel`.
1874
+ * @default null
1875
+ */
1876
+ "ariaLabel": string | null;
1663
1877
  /**
1664
1878
  * Shows the `${value}%` label below the ring. Only takes effect for `type="determinate"` -- `indeterminate` never shows a label regardless of this prop, since there's no percentage to show. Defaults to `true`.
1665
1879
  * @default true
@@ -1701,6 +1915,11 @@ export namespace Components {
1701
1915
  * weight of a bar.
1702
1916
  */
1703
1917
  interface BsProgressLinear {
1918
+ /**
1919
+ * Accessible name for the progress bar (e.g. "Uploading report"). Required for assistive tech -- a `role="progressbar"` with no name is an axe-core `aria-progressbar-name` violation. Setting `aria-label` on the host doesn't reach the inner element across the shadow boundary, so this prop binds it directly -- same pattern as `bs-button`'s `ariaLabel`.
1920
+ * @default null
1921
+ */
1922
+ "ariaLabel": string | null;
1704
1923
  /**
1705
1924
  * Shows the slotted label below the bar. When `false`, or when no content is slotted, the label wrapper isn't rendered at all. Defaults to `true`.
1706
1925
  * @default true
@@ -1744,7 +1963,7 @@ export namespace Components {
1744
1963
  */
1745
1964
  "disabled": boolean;
1746
1965
  /**
1747
- * The native radio input's `name` attribute. Passed straight through to the native input inside. NOTE: because each `bs-radio` renders its own shadow root, native `<input type="radio">` mutual-exclusion grouping (which the HTML spec scopes to a single DOM tree) does NOT extend across separate `bs-radio` instances sharing the same `name` -- checking one will not natively uncheck another. Within a single instance this still behaves like a normal radio input. See bs-radio.mdx's Accessibility section for this known gap; consumers building a group currently need to manage mutual exclusivity themselves (e.g. via `bsChange`) until a `bs-radio-group` wrapper exists.
1966
+ * The native radio input's `name` attribute. Passed straight through to the native input inside. Also the group key: `bs-radio` elements sharing a `name` within the same root (document or shadow root) behave as one radio group -- checking one unchecks the others, arrow keys move between them, and only one is in the tab order. Native grouping can't cross each radio's own shadow root, so this component implements it itself.
1748
1967
  */
1749
1968
  "name": string;
1750
1969
  /**
@@ -1793,6 +2012,10 @@ export namespace Components {
1793
2012
  * @default 0
1794
2013
  */
1795
2014
  "min": number;
2015
+ /**
2016
+ * The `name` the value is submitted under in a surrounding `<form>`'s `FormData`. `type="range"` submits two entries under this name: the start value, then the end value.
2017
+ */
2018
+ "name"?: string;
1796
2019
  /**
1797
2020
  * Number of equal divisions marked by tick lines along the track, for `type="segmented"` only. The first tick (at the very start of the track) is rendered with `opacity: 0` to keep the tick spacing math consistent while not visually doubling up with the track's own start edge -- this matches the design spec, not a bug.
1798
2021
  * @default 10
@@ -2029,11 +2252,20 @@ export namespace Components {
2029
2252
  * @default false
2030
2253
  */
2031
2254
  "disabled": boolean;
2255
+ /**
2256
+ * The `name` the value is submitted under in a surrounding `<form>`'s `FormData`.
2257
+ */
2258
+ "name"?: string;
2032
2259
  /**
2033
2260
  * Sizing scale. Controls the track's width/height and the knob's diameter.
2034
2261
  * @default 'lg'
2035
2262
  */
2036
2263
  "size": BsSwitchSize;
2264
+ /**
2265
+ * The value submitted when on (native checkbox default: `"on"`).
2266
+ * @default 'on'
2267
+ */
2268
+ "value": string;
2037
2269
  }
2038
2270
  /**
2039
2271
  * A single tab button -- an optional icon plus a text label, rendered as a real `<button>` so it
@@ -2074,6 +2306,10 @@ export namespace Components {
2074
2306
  * @default false
2075
2307
  */
2076
2308
  "selected": boolean;
2309
+ /**
2310
+ * Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the Tab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays a normal tab stop.
2311
+ */
2312
+ "tabbable"?: boolean;
2077
2313
  }
2078
2314
  /**
2079
2315
  * A tab-group wrapper: owns `role="tablist"` and coordinates selection across its slotted
@@ -2162,6 +2398,10 @@ export interface BsAttachmentCustomEvent<T> extends CustomEvent<T> {
2162
2398
  detail: T;
2163
2399
  target: HTMLBsAttachmentElement;
2164
2400
  }
2401
+ export interface BsCarouselCustomEvent<T> extends CustomEvent<T> {
2402
+ detail: T;
2403
+ target: HTMLBsCarouselElement;
2404
+ }
2165
2405
  export interface BsChatbotFeedbackCustomEvent<T> extends CustomEvent<T> {
2166
2406
  detail: T;
2167
2407
  target: HTMLBsChatbotFeedbackElement;
@@ -2210,6 +2450,14 @@ export interface BsDialogCustomEvent<T> extends CustomEvent<T> {
2210
2450
  detail: T;
2211
2451
  target: HTMLBsDialogElement;
2212
2452
  }
2453
+ export interface BsFileUploadCustomEvent<T> extends CustomEvent<T> {
2454
+ detail: T;
2455
+ target: HTMLBsFileUploadElement;
2456
+ }
2457
+ export interface BsFileUploadItemCustomEvent<T> extends CustomEvent<T> {
2458
+ detail: T;
2459
+ target: HTMLBsFileUploadItemElement;
2460
+ }
2213
2461
  export interface BsInlineTabCustomEvent<T> extends CustomEvent<T> {
2214
2462
  detail: T;
2215
2463
  target: HTMLBsInlineTabElement;
@@ -2622,6 +2870,43 @@ declare global {
2622
2870
  prototype: HTMLBsCardElement;
2623
2871
  new (): HTMLBsCardElement;
2624
2872
  };
2873
+ interface HTMLBsCarouselElementEventMap {
2874
+ "bsPageChange": number;
2875
+ "bsPauseChange": boolean;
2876
+ }
2877
+ /**
2878
+ * A carousel that shows a page of slides at a time, with a tracker (dots or numbered blocks) and
2879
+ * previous/next controls, and optional auto-advance with a Pause/Play button.
2880
+ * Slides are the default slot's direct children (a `bs-card`, an image, anything). The carousel
2881
+ * shows `slidesPerView` of them at once, so there are `ceil(slides / slidesPerView)` pages. It
2882
+ * manages two things on those slide elements: the `hidden` attribute (off-page slides are hidden,
2883
+ * so they leave the tab order and the accessibility tree) and, only when not already set,
2884
+ * `role="group"`, `aria-roledescription="slide"` and an `aria-label` of "n of N".
2885
+ * Composes `bs-pagination` (`tracker="numbers"`), `bs-icon-button` (previous/next for
2886
+ * `tracker="dots"`) and `bs-button` (Pause/Play) rather than re-implementing them.
2887
+ * ## When to use
2888
+ * - Browsing a set of related items (cards, images, announcements) where only a few fit at once.
2889
+ * - Rotating promotional or highlight content, where auto-advance with a Pause control is wanted.
2890
+ * ## When not to use
2891
+ * - Content users must see in full to complete a task -- hiding it behind paging hurts discovery;
2892
+ * lay it out in a list or grid instead.
2893
+ * - A strict sequence of steps -- use `bs-stepper`.
2894
+ * - Paging through a large, addressable result set -- use `bs-pagination`.
2895
+ */
2896
+ interface HTMLBsCarouselElement extends Components.BsCarousel, HTMLStencilElement {
2897
+ addEventListener<K extends keyof HTMLBsCarouselElementEventMap>(type: K, listener: (this: HTMLBsCarouselElement, ev: BsCarouselCustomEvent<HTMLBsCarouselElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2898
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2899
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2900
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2901
+ removeEventListener<K extends keyof HTMLBsCarouselElementEventMap>(type: K, listener: (this: HTMLBsCarouselElement, ev: BsCarouselCustomEvent<HTMLBsCarouselElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2902
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2903
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2904
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2905
+ }
2906
+ var HTMLBsCarouselElement: {
2907
+ prototype: HTMLBsCarouselElement;
2908
+ new (): HTMLBsCarouselElement;
2909
+ };
2625
2910
  interface HTMLBsChatbotFeedbackElementEventMap {
2626
2911
  "bsRatingChange": number;
2627
2912
  "bsCommentInput": string;
@@ -3202,6 +3487,64 @@ declare global {
3202
3487
  prototype: HTMLBsDialogElement;
3203
3488
  new (): HTMLBsDialogElement;
3204
3489
  };
3490
+ interface HTMLBsFileUploadElementEventMap {
3491
+ "bsFilesSelect": File[];
3492
+ "bsFilesReject": File[];
3493
+ }
3494
+ /**
3495
+ * A file dropzone: drag files onto it, or press "Browse file" to open the file picker. It reports
3496
+ * the chosen files and does nothing else -- the consuming app owns the upload itself and shows its
3497
+ * progress with `bs-file-upload-item`.
3498
+ * ## When to use
3499
+ * - Letting users add one or more files (documents, images) to upload.
3500
+ * ## When not to use
3501
+ * - Attaching files to a chat message -- see `bs-composer` / `bs-attachment`.
3502
+ * - A file input that must submit with a native `<form>`: this component is **not**
3503
+ * form-associated. Read the files from `bsFilesSelect` and submit them yourself.
3504
+ */
3505
+ interface HTMLBsFileUploadElement extends Components.BsFileUpload, HTMLStencilElement {
3506
+ addEventListener<K extends keyof HTMLBsFileUploadElementEventMap>(type: K, listener: (this: HTMLBsFileUploadElement, ev: BsFileUploadCustomEvent<HTMLBsFileUploadElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3507
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3508
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3509
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3510
+ removeEventListener<K extends keyof HTMLBsFileUploadElementEventMap>(type: K, listener: (this: HTMLBsFileUploadElement, ev: BsFileUploadCustomEvent<HTMLBsFileUploadElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3511
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3512
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3513
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3514
+ }
3515
+ var HTMLBsFileUploadElement: {
3516
+ prototype: HTMLBsFileUploadElement;
3517
+ new (): HTMLBsFileUploadElement;
3518
+ };
3519
+ interface HTMLBsFileUploadItemElementEventMap {
3520
+ "bsCancel": void;
3521
+ "bsRemove": void;
3522
+ }
3523
+ /**
3524
+ * One file in an upload list: a thumbnail, the file name and size, a status line (a progress bar
3525
+ * while uploading, or a success / error message) and an action button (cancel while uploading or
3526
+ * after an error, remove once uploaded).
3527
+ * Presentational only -- the consuming app owns the upload and drives `state`, `progress` and
3528
+ * `message` from it. Pair with `bs-file-upload` (the dropzone that picks the files).
3529
+ * ## When to use
3530
+ * - Showing the status of each file the user has added, in a list under a `bs-file-upload`.
3531
+ * ## When not to use
3532
+ * - Attaching files to a chat message -- use `bs-attachment`.
3533
+ */
3534
+ interface HTMLBsFileUploadItemElement extends Components.BsFileUploadItem, HTMLStencilElement {
3535
+ addEventListener<K extends keyof HTMLBsFileUploadItemElementEventMap>(type: K, listener: (this: HTMLBsFileUploadItemElement, ev: BsFileUploadItemCustomEvent<HTMLBsFileUploadItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3536
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3537
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3538
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3539
+ removeEventListener<K extends keyof HTMLBsFileUploadItemElementEventMap>(type: K, listener: (this: HTMLBsFileUploadItemElement, ev: BsFileUploadItemCustomEvent<HTMLBsFileUploadItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3540
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3541
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3542
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3543
+ }
3544
+ var HTMLBsFileUploadItemElement: {
3545
+ prototype: HTMLBsFileUploadItemElement;
3546
+ new (): HTMLBsFileUploadItemElement;
3547
+ };
3205
3548
  /**
3206
3549
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
3207
3550
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -3935,6 +4278,7 @@ declare global {
3935
4278
  "bs-button": HTMLBsButtonElement;
3936
4279
  "bs-button-skeleton": HTMLBsButtonSkeletonElement;
3937
4280
  "bs-card": HTMLBsCardElement;
4281
+ "bs-carousel": HTMLBsCarouselElement;
3938
4282
  "bs-chatbot-feedback": HTMLBsChatbotFeedbackElement;
3939
4283
  "bs-chatbot-header": HTMLBsChatbotHeaderElement;
3940
4284
  "bs-chatbot-response-action": HTMLBsChatbotResponseActionElement;
@@ -3949,6 +4293,8 @@ declare global {
3949
4293
  "bs-composer-status-banner": HTMLBsComposerStatusBannerElement;
3950
4294
  "bs-data-table": HTMLBsDataTableElement;
3951
4295
  "bs-dialog": HTMLBsDialogElement;
4296
+ "bs-file-upload": HTMLBsFileUploadElement;
4297
+ "bs-file-upload-item": HTMLBsFileUploadItemElement;
3952
4298
  "bs-icon-button": HTMLBsIconButtonElement;
3953
4299
  "bs-inline-tab": HTMLBsInlineTabElement;
3954
4300
  "bs-input": HTMLBsInputElement;
@@ -4395,13 +4741,21 @@ declare namespace LocalJSX {
4395
4741
  * @default false
4396
4742
  */
4397
4743
  "disabled"?: boolean;
4744
+ /**
4745
+ * The `id` of a `<form>` element to associate this element with.
4746
+ */
4747
+ "form"?: string;
4748
+ /**
4749
+ * The name of the element, used when submitting an HTML form.
4750
+ */
4751
+ "name"?: string;
4398
4752
  /**
4399
4753
  * Sizing scale.
4400
4754
  * @default 'md'
4401
4755
  */
4402
4756
  "size"?: BsButtonSize;
4403
4757
  /**
4404
- * Native `<button>` type.
4758
+ * Button type. `submit` submits the surrounding `<form>` (via `requestSubmit()`, so validation runs); `reset` resets it; `button` (default) does nothing on its own.
4405
4759
  * @default 'button'
4406
4760
  */
4407
4761
  "type"?: 'button' | 'submit' | 'reset';
@@ -4451,6 +4805,90 @@ declare namespace LocalJSX {
4451
4805
  */
4452
4806
  "surface"?: BsCardSurface;
4453
4807
  }
4808
+ /**
4809
+ * A carousel that shows a page of slides at a time, with a tracker (dots or numbered blocks) and
4810
+ * previous/next controls, and optional auto-advance with a Pause/Play button.
4811
+ * Slides are the default slot's direct children (a `bs-card`, an image, anything). The carousel
4812
+ * shows `slidesPerView` of them at once, so there are `ceil(slides / slidesPerView)` pages. It
4813
+ * manages two things on those slide elements: the `hidden` attribute (off-page slides are hidden,
4814
+ * so they leave the tab order and the accessibility tree) and, only when not already set,
4815
+ * `role="group"`, `aria-roledescription="slide"` and an `aria-label` of "n of N".
4816
+ * Composes `bs-pagination` (`tracker="numbers"`), `bs-icon-button` (previous/next for
4817
+ * `tracker="dots"`) and `bs-button` (Pause/Play) rather than re-implementing them.
4818
+ * ## When to use
4819
+ * - Browsing a set of related items (cards, images, announcements) where only a few fit at once.
4820
+ * - Rotating promotional or highlight content, where auto-advance with a Pause control is wanted.
4821
+ * ## When not to use
4822
+ * - Content users must see in full to complete a task -- hiding it behind paging hurts discovery;
4823
+ * lay it out in a list or grid instead.
4824
+ * - A strict sequence of steps -- use `bs-stepper`.
4825
+ * - Paging through a large, addressable result set -- use `bs-pagination`.
4826
+ */
4827
+ interface BsCarousel {
4828
+ /**
4829
+ * Auto-advances to the next page every `interval` ms, looping from the last page to the first. Off by default. The Pause/Play button is only rendered when this is set. Auto-advance also stops while the pointer is over the carousel or focus is inside it, and starts paused for users who prefer reduced motion.
4830
+ * @default false
4831
+ */
4832
+ "autoplay"?: boolean;
4833
+ /**
4834
+ * The visible page, 1-based (same convention as `bs-pagination`). Mutable so the carousel advances it itself (tracker, previous/next, autoplay). Clamped to the available pages.
4835
+ * @default 1
4836
+ */
4837
+ "currentPage"?: number;
4838
+ /**
4839
+ * Milliseconds between auto-advances, when `autoplay` is set.
4840
+ * @default 5000
4841
+ */
4842
+ "interval"?: number;
4843
+ /**
4844
+ * Accessible name of the carousel region (e.g. "Featured articles").
4845
+ * @default 'Carousel'
4846
+ */
4847
+ "label"?: string;
4848
+ /**
4849
+ * Accessible name of the next button (`tracker="dots"`) -- override for localisation.
4850
+ * @default 'Next slide'
4851
+ */
4852
+ "nextLabel"?: string;
4853
+ /**
4854
+ * Fires after the visible page changes via the tracker, previous/next or autoplay, with the new 1-based page.
4855
+ */
4856
+ "onBsPageChange"?: (event: BsCarouselCustomEvent<number>) => void;
4857
+ /**
4858
+ * Fires when the user toggles the Pause/Play button, with the new `paused` value.
4859
+ */
4860
+ "onBsPauseChange"?: (event: BsCarouselCustomEvent<boolean>) => void;
4861
+ /**
4862
+ * Label of the Pause/Play button while auto-advance is running.
4863
+ * @default 'Pause'
4864
+ */
4865
+ "pauseLabel"?: string;
4866
+ /**
4867
+ * Whether auto-advance is paused by the user (the Pause/Play button). Mutable and reflected so the state is visible to CSS and settable from outside. Only meaningful with `autoplay`.
4868
+ * @default false
4869
+ */
4870
+ "paused"?: boolean;
4871
+ /**
4872
+ * Label of the Pause/Play button while auto-advance is paused.
4873
+ * @default 'Play'
4874
+ */
4875
+ "playLabel"?: string;
4876
+ /**
4877
+ * Accessible name of the previous button (`tracker="dots"`) -- override for localisation.
4878
+ * @default 'Previous slide'
4879
+ */
4880
+ "previousLabel"?: string;
4881
+ /**
4882
+ * How many slides are visible at once. The tracker counts pages: `ceil(slides / slidesPerView)`.
4883
+ * @default 3
4884
+ */
4885
+ "slidesPerView"?: number;
4886
+ /**
4887
+ * Which tracker to show under the slides. `dots` is a compact dot row between previous/next buttons (the dots are an indicator, not buttons); `numbers` is a numbered `bs-pagination` where each page can be jumped to directly.
4888
+ * @default 'dots'
4889
+ */
4890
+ "tracker"?: BsCarouselTracker;
4891
+ }
4454
4892
  /**
4455
4893
  * A star-rating feedback card shown at the end of a Genie AI chat: a heading/subtitle, a 5-star
4456
4894
  * rating, an optional comment, and either "Submit feedback" + "Start new chat" (before
@@ -4768,20 +5206,38 @@ declare namespace LocalJSX {
4768
5206
  * @default false
4769
5207
  */
4770
5208
  "error"?: boolean;
5209
+ /**
5210
+ * The `id` of a `<form>` element to associate this element with.
5211
+ */
5212
+ "form"?: string;
4771
5213
  /**
4772
5214
  * Whether the checkbox is in the indeterminate ("partially selected") state -- shows a minus icon instead of a check, and takes visual precedence over `checked`. Unlike `checked`, native checkboxes have no `indeterminate` HTML attribute; it can only be set as a JS property on the element. This `@Prop` still works as an attribute for the *host* (`<bs-checkbox>`) since that's this component's own reflected state, not the native control's -- the native `<input>` inside has its `.indeterminate` property set imperatively in `componentDidLoad`/`componentDidUpdate`.
4773
5215
  * @default false
4774
5216
  */
4775
5217
  "indeterminate"?: boolean;
5218
+ /**
5219
+ * The `name` the value is submitted under in a surrounding `<form>`'s `FormData`.
5220
+ */
5221
+ "name"?: string;
4776
5222
  /**
4777
5223
  * Emitted when the checked state changes via user interaction, with the new `checked` value.
4778
5224
  */
4779
5225
  "onBsChange"?: (event: BsCheckboxCustomEvent<boolean>) => void;
5226
+ /**
5227
+ * Marks the checkbox as required: the surrounding form fails validation while unchecked.
5228
+ * @default false
5229
+ */
5230
+ "required"?: boolean;
4780
5231
  /**
4781
5232
  * Sizing scale. Controls the box's width/height and border width; corner radius is constant across all sizes.
4782
5233
  * @default 'lg'
4783
5234
  */
4784
5235
  "size"?: BsCheckboxSize;
5236
+ /**
5237
+ * The value submitted when checked (native checkbox default: `"on"`).
5238
+ * @default 'on'
5239
+ */
5240
+ "value"?: string;
4785
5241
  }
4786
5242
  /**
4787
5243
  * A shape-matched loading placeholder for `bs-checkbox`, shown while the real label text isn't
@@ -5180,6 +5636,127 @@ declare namespace LocalJSX {
5180
5636
  */
5181
5637
  "size"?: BsDialogSize;
5182
5638
  }
5639
+ /**
5640
+ * A file dropzone: drag files onto it, or press "Browse file" to open the file picker. It reports
5641
+ * the chosen files and does nothing else -- the consuming app owns the upload itself and shows its
5642
+ * progress with `bs-file-upload-item`.
5643
+ * ## When to use
5644
+ * - Letting users add one or more files (documents, images) to upload.
5645
+ * ## When not to use
5646
+ * - Attaching files to a chat message -- see `bs-composer` / `bs-attachment`.
5647
+ * - A file input that must submit with a native `<form>`: this component is **not**
5648
+ * form-associated. Read the files from `bsFilesSelect` and submit them yourself.
5649
+ */
5650
+ interface BsFileUpload {
5651
+ /**
5652
+ * Which files are accepted, same syntax as the native `accept` attribute: comma-separated extensions (`.pdf`), MIME types (`image/png`) or wildcards (`image/*`). Applied to the picker and also to dropped files, which the browser does not filter.
5653
+ */
5654
+ "accept"?: string;
5655
+ /**
5656
+ * Label of the browse button. Override for localisation.
5657
+ * @default 'Browse file'
5658
+ */
5659
+ "buttonLabel"?: string;
5660
+ /**
5661
+ * Guidelines under the heading (e.g. "PDF or JPG, up to 8MB").
5662
+ */
5663
+ "description"?: string;
5664
+ /**
5665
+ * Layout: icon beside the text (`horizontal`) or stacked above it, centered (`vertical`).
5666
+ * @default 'horizontal'
5667
+ */
5668
+ "direction"?: BsFileUploadDirection;
5669
+ /**
5670
+ * Disables the browse button and ignores drops.
5671
+ * @default false
5672
+ */
5673
+ "disabled"?: boolean;
5674
+ /**
5675
+ * Whether a file is currently being dragged over the dropzone (the Figma "Drop" state). Set by the component during a drag; mutable and reflected so it can also be set to show the state statically.
5676
+ * @default false
5677
+ */
5678
+ "dragging"?: boolean;
5679
+ /**
5680
+ * Heading text (e.g. "Upload your documents").
5681
+ */
5682
+ "heading"?: string;
5683
+ /**
5684
+ * Allows selecting/dropping more than one file. Without it only the first file is taken.
5685
+ * @default false
5686
+ */
5687
+ "multiple"?: boolean;
5688
+ /**
5689
+ * Fires with files that were not taken: they didn't match `accept`, or were extra files dropped while `multiple` is off.
5690
+ */
5691
+ "onBsFilesReject"?: (event: BsFileUploadCustomEvent<File[]>) => void;
5692
+ /**
5693
+ * Fires with the accepted files, after the picker closes or files are dropped.
5694
+ */
5695
+ "onBsFilesSelect"?: (event: BsFileUploadCustomEvent<File[]>) => void;
5696
+ }
5697
+ /**
5698
+ * One file in an upload list: a thumbnail, the file name and size, a status line (a progress bar
5699
+ * while uploading, or a success / error message) and an action button (cancel while uploading or
5700
+ * after an error, remove once uploaded).
5701
+ * Presentational only -- the consuming app owns the upload and drives `state`, `progress` and
5702
+ * `message` from it. Pair with `bs-file-upload` (the dropzone that picks the files).
5703
+ * ## When to use
5704
+ * - Showing the status of each file the user has added, in a list under a `bs-file-upload`.
5705
+ * ## When not to use
5706
+ * - Attaching files to a chat message -- use `bs-attachment`.
5707
+ */
5708
+ interface BsFileUploadItem {
5709
+ /**
5710
+ * Accessible name of the cancel button (`loading`, `in-progress`, `error`).
5711
+ * @default 'Cancel upload'
5712
+ */
5713
+ "cancelLabel"?: string;
5714
+ /**
5715
+ * The file name.
5716
+ * @default ''
5717
+ */
5718
+ "fileName"?: string;
5719
+ /**
5720
+ * The file size, already formatted (e.g. "8MB").
5721
+ */
5722
+ "fileSize"?: string;
5723
+ /**
5724
+ * The status text. Defaults per state: "Loading..." (`loading`), "{progress}% uploaded" (`in-progress`), "Upload failed" (`error`), "File uploaded successfully" (`success`). Provide your own for localisation or a specific error.
5725
+ */
5726
+ "message"?: string;
5727
+ /**
5728
+ * Fires when the cancel button is clicked (`loading`, `in-progress`, `error`). The consumer stops the upload and removes the item.
5729
+ */
5730
+ "onBsCancel"?: (event: BsFileUploadItemCustomEvent<void>) => void;
5731
+ /**
5732
+ * Fires when the remove button is clicked (`success`). The consumer removes the file.
5733
+ */
5734
+ "onBsRemove"?: (event: BsFileUploadItemCustomEvent<void>) => void;
5735
+ /**
5736
+ * Upload progress, 0-100. Only used when `state="in-progress"`.
5737
+ * @default 0
5738
+ */
5739
+ "progress"?: number;
5740
+ /**
5741
+ * Accessible name of the remove button (`success`).
5742
+ * @default 'Remove file'
5743
+ */
5744
+ "removeLabel"?: string;
5745
+ /**
5746
+ * Where the upload is. `loading` = working with no known percentage (indeterminate bar); `in-progress` = uploading with a known `progress`; `error` and `success` are final.
5747
+ * @default 'loading'
5748
+ */
5749
+ "state"?: BsFileUploadItemState;
5750
+ /**
5751
+ * Alt text for `thumbnailSrc`. Leave empty when the file name already says it all.
5752
+ * @default ''
5753
+ */
5754
+ "thumbnailAlt"?: string;
5755
+ /**
5756
+ * A preview image of the file. Shown instead of the placeholder icon when set.
5757
+ */
5758
+ "thumbnailSrc"?: string;
5759
+ }
5183
5760
  /**
5184
5761
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
5185
5762
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.
@@ -5209,13 +5786,21 @@ declare namespace LocalJSX {
5209
5786
  * @default false
5210
5787
  */
5211
5788
  "disabled"?: boolean;
5789
+ /**
5790
+ * The `id` of a `<form>` element to associate this element with.
5791
+ */
5792
+ "form"?: string;
5793
+ /**
5794
+ * The name of the element, used when submitting an HTML form.
5795
+ */
5796
+ "name"?: string;
5212
5797
  /**
5213
5798
  * Sizing scale. `xs` (16px, an 8px icon) is a distinct, much smaller tier meant for compact chip/tag "remove" controls, not just a smaller toolbar button -- verified against a separate Figma redline (EG BrandSync UI Kit v1.5, node 20731:18427) from the one `sm`/`md`/`lg` were built against.
5214
5799
  * @default 'md'
5215
5800
  */
5216
5801
  "size"?: BsIconButtonSize;
5217
5802
  /**
5218
- * Native `<button>` type.
5803
+ * Button type. `submit` submits the surrounding `<form>` (via `requestSubmit()`, so validation runs); `reset` resets it; `button` (default) does nothing on its own.
5219
5804
  * @default 'button'
5220
5805
  */
5221
5806
  "type"?: 'button' | 'submit' | 'reset';
@@ -5267,6 +5852,10 @@ declare namespace LocalJSX {
5267
5852
  * @default false
5268
5853
  */
5269
5854
  "selected"?: boolean;
5855
+ /**
5856
+ * Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the Tab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays a normal tab stop.
5857
+ */
5858
+ "tabbable"?: boolean;
5270
5859
  }
5271
5860
  /**
5272
5861
  * A single-line text field with an optional label, description, and error state. Also covers a
@@ -5306,6 +5895,10 @@ declare namespace LocalJSX {
5306
5895
  */
5307
5896
  "disabled"?: boolean;
5308
5897
  "error"?: string;
5898
+ /**
5899
+ * The `id` of a `<form>` element to associate this element with.
5900
+ */
5901
+ "form"?: string;
5309
5902
  /**
5310
5903
  * Current selected title for `type="initials"`. Named `initialsTitle` rather than `title` -- `title` is a reserved standard HTML attribute (tooltip text) inherited by every element, and Stencil warns against shadowing it with a component `@Prop`.
5311
5904
  * @default ''
@@ -5325,6 +5918,10 @@ declare namespace LocalJSX {
5325
5918
  * Minimum value for `type="number"`'s stepper buttons.
5326
5919
  */
5327
5920
  "min"?: number;
5921
+ /**
5922
+ * The `name` the value is submitted under in a surrounding `<form>`'s `FormData`.
5923
+ */
5924
+ "name"?: string;
5328
5925
  "onBsChange"?: (event: BsInputCustomEvent<string>) => void;
5329
5926
  /**
5330
5927
  * Emitted when a chip is committed (Enter pressed in the draft input) for `type="chip"`.
@@ -5738,6 +6335,11 @@ declare namespace LocalJSX {
5738
6335
  * weight of a ring.
5739
6336
  */
5740
6337
  interface BsProgress {
6338
+ /**
6339
+ * Accessible name for the progress bar (e.g. "Uploading report"). Required for assistive tech -- a `role="progressbar"` with no name is an axe-core `aria-progressbar-name` violation. Setting `aria-label` on the host doesn't reach the inner element across the shadow boundary, so this prop binds it directly -- same pattern as `bs-button`'s `ariaLabel`.
6340
+ * @default null
6341
+ */
6342
+ "ariaLabel"?: string | null;
5741
6343
  /**
5742
6344
  * Shows the `${value}%` label below the ring. Only takes effect for `type="determinate"` -- `indeterminate` never shows a label regardless of this prop, since there's no percentage to show. Defaults to `true`.
5743
6345
  * @default true
@@ -5779,6 +6381,11 @@ declare namespace LocalJSX {
5779
6381
  * weight of a bar.
5780
6382
  */
5781
6383
  interface BsProgressLinear {
6384
+ /**
6385
+ * Accessible name for the progress bar (e.g. "Uploading report"). Required for assistive tech -- a `role="progressbar"` with no name is an axe-core `aria-progressbar-name` violation. Setting `aria-label` on the host doesn't reach the inner element across the shadow boundary, so this prop binds it directly -- same pattern as `bs-button`'s `ariaLabel`.
6386
+ * @default null
6387
+ */
6388
+ "ariaLabel"?: string | null;
5782
6389
  /**
5783
6390
  * Shows the slotted label below the bar. When `false`, or when no content is slotted, the label wrapper isn't rendered at all. Defaults to `true`.
5784
6391
  * @default true
@@ -5822,11 +6429,15 @@ declare namespace LocalJSX {
5822
6429
  */
5823
6430
  "disabled"?: boolean;
5824
6431
  /**
5825
- * The native radio input's `name` attribute. Passed straight through to the native input inside. NOTE: because each `bs-radio` renders its own shadow root, native `<input type="radio">` mutual-exclusion grouping (which the HTML spec scopes to a single DOM tree) does NOT extend across separate `bs-radio` instances sharing the same `name` -- checking one will not natively uncheck another. Within a single instance this still behaves like a normal radio input. See bs-radio.mdx's Accessibility section for this known gap; consumers building a group currently need to manage mutual exclusivity themselves (e.g. via `bsChange`) until a `bs-radio-group` wrapper exists.
6432
+ * The `id` of a `<form>` element to associate this element with.
6433
+ */
6434
+ "form"?: string;
6435
+ /**
6436
+ * The native radio input's `name` attribute. Passed straight through to the native input inside. Also the group key: `bs-radio` elements sharing a `name` within the same root (document or shadow root) behave as one radio group -- checking one unchecks the others, arrow keys move between them, and only one is in the tab order. Native grouping can't cross each radio's own shadow root, so this component implements it itself.
5826
6437
  */
5827
6438
  "name"?: string;
5828
6439
  /**
5829
- * Emitted with this radio's own `value` when it becomes checked via user interaction. Since native same-`name` grouping doesn't cross shadow-root boundaries (see the `name` prop's doc), a consumer wiring up a group of `bs-radio`s must itself set `checked = false` on the others in response to this event -- there's no automatic un-checking to rely on here.
6440
+ * Emitted with this radio's own `value` when it becomes checked via user interaction. Since native same-`name` grouping doesn't cross shadow-root boundaries (see the `name` prop's doc), a consumer wiring up a group of `bs-radio`s does not need to un-check the others itself.
5830
6441
  */
5831
6442
  "onBsChange"?: (event: BsRadioCustomEvent<string>) => void;
5832
6443
  /**
@@ -5860,6 +6471,10 @@ declare namespace LocalJSX {
5860
6471
  * @default false
5861
6472
  */
5862
6473
  "disabled"?: boolean;
6474
+ /**
6475
+ * The `id` of a `<form>` element to associate this element with.
6476
+ */
6477
+ "form"?: string;
5863
6478
  /**
5864
6479
  * Label text shown above the track when `showLabel` is set.
5865
6480
  * @default 'Label'
@@ -5875,6 +6490,10 @@ declare namespace LocalJSX {
5875
6490
  * @default 0
5876
6491
  */
5877
6492
  "min"?: number;
6493
+ /**
6494
+ * The `name` the value is submitted under in a surrounding `<form>`'s `FormData`. `type="range"` submits two entries under this name: the start value, then the end value.
6495
+ */
6496
+ "name"?: string;
5878
6497
  /**
5879
6498
  * Emitted when `value` changes via user interaction (dragging the thumb, or committing the value field), with the new value. Only fires for `type="default"`/`type="segmented"`.
5880
6499
  */
@@ -6131,6 +6750,14 @@ declare namespace LocalJSX {
6131
6750
  * @default false
6132
6751
  */
6133
6752
  "disabled"?: boolean;
6753
+ /**
6754
+ * The `id` of a `<form>` element to associate this element with.
6755
+ */
6756
+ "form"?: string;
6757
+ /**
6758
+ * The `name` the value is submitted under in a surrounding `<form>`'s `FormData`.
6759
+ */
6760
+ "name"?: string;
6134
6761
  /**
6135
6762
  * Emitted when the checked state changes via user interaction, with the new `checked` value.
6136
6763
  */
@@ -6140,6 +6767,11 @@ declare namespace LocalJSX {
6140
6767
  * @default 'lg'
6141
6768
  */
6142
6769
  "size"?: BsSwitchSize;
6770
+ /**
6771
+ * The value submitted when on (native checkbox default: `"on"`).
6772
+ * @default 'on'
6773
+ */
6774
+ "value"?: string;
6143
6775
  }
6144
6776
  /**
6145
6777
  * A single tab button -- an optional icon plus a text label, rendered as a real `<button>` so it
@@ -6184,6 +6816,10 @@ declare namespace LocalJSX {
6184
6816
  * @default false
6185
6817
  */
6186
6818
  "selected"?: boolean;
6819
+ /**
6820
+ * Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the Tab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays a normal tab stop.
6821
+ */
6822
+ "tabbable"?: boolean;
6187
6823
  }
6188
6824
  /**
6189
6825
  * A tab-group wrapper: owns `role="tablist"` and coordinates selection across its slotted
@@ -6331,6 +6967,19 @@ declare namespace LocalJSX {
6331
6967
  interface BsCardAttributes {
6332
6968
  "surface": BsCardSurface;
6333
6969
  }
6970
+ interface BsCarouselAttributes {
6971
+ "tracker": BsCarouselTracker;
6972
+ "slidesPerView": number;
6973
+ "currentPage": number;
6974
+ "autoplay": boolean;
6975
+ "interval": number;
6976
+ "paused": boolean;
6977
+ "label": string;
6978
+ "previousLabel": string;
6979
+ "nextLabel": string;
6980
+ "pauseLabel": string;
6981
+ "playLabel": string;
6982
+ }
6334
6983
  interface BsChatbotFeedbackAttributes {
6335
6984
  "rating": number;
6336
6985
  "submitted": boolean;
@@ -6354,6 +7003,9 @@ declare namespace LocalJSX {
6354
7003
  "disabled": boolean;
6355
7004
  }
6356
7005
  interface BsCheckboxAttributes {
7006
+ "name": string;
7007
+ "value": string;
7008
+ "required": boolean;
6357
7009
  "size": BsCheckboxSize;
6358
7010
  "checked": boolean;
6359
7011
  "indeterminate": boolean;
@@ -6407,6 +7059,27 @@ declare namespace LocalJSX {
6407
7059
  "size": BsDialogSize;
6408
7060
  "centered": boolean;
6409
7061
  }
7062
+ interface BsFileUploadAttributes {
7063
+ "direction": BsFileUploadDirection;
7064
+ "heading": string;
7065
+ "description": string;
7066
+ "buttonLabel": string;
7067
+ "accept": string;
7068
+ "multiple": boolean;
7069
+ "disabled": boolean;
7070
+ "dragging": boolean;
7071
+ }
7072
+ interface BsFileUploadItemAttributes {
7073
+ "state": BsFileUploadItemState;
7074
+ "fileName": string;
7075
+ "fileSize": string;
7076
+ "progress": number;
7077
+ "message": string;
7078
+ "thumbnailSrc": string;
7079
+ "thumbnailAlt": string;
7080
+ "cancelLabel": string;
7081
+ "removeLabel": string;
7082
+ }
6410
7083
  interface BsIconButtonAttributes {
6411
7084
  "variant": BsIconButtonVariant;
6412
7085
  "size": BsIconButtonSize;
@@ -6418,8 +7091,10 @@ declare namespace LocalJSX {
6418
7091
  "selected": boolean;
6419
7092
  "disabled": boolean;
6420
7093
  "ariaLabel": string | null;
7094
+ "tabbable": boolean;
6421
7095
  }
6422
7096
  interface BsInputAttributes {
7097
+ "name": string;
6423
7098
  "value": string;
6424
7099
  "type": | 'text'
6425
7100
  | 'email'
@@ -6493,12 +7168,14 @@ declare namespace LocalJSX {
6493
7168
  "strokeWidth": BsProgressStrokeWidth;
6494
7169
  "value": number;
6495
7170
  "showLabel": boolean;
7171
+ "ariaLabel": string | null;
6496
7172
  }
6497
7173
  interface BsProgressLinearAttributes {
6498
7174
  "type": BsProgressLinearType;
6499
7175
  "size": BsProgressLinearSize;
6500
7176
  "value": number;
6501
7177
  "showLabel": boolean;
7178
+ "ariaLabel": string | null;
6502
7179
  }
6503
7180
  interface BsRadioAttributes {
6504
7181
  "name": string;
@@ -6508,6 +7185,7 @@ declare namespace LocalJSX {
6508
7185
  }
6509
7186
  interface BsSliderAttributes {
6510
7187
  "type": BsSliderType;
7188
+ "name": string;
6511
7189
  "showLabel": boolean;
6512
7190
  "label": string;
6513
7191
  "min": number;
@@ -6547,6 +7225,8 @@ declare namespace LocalJSX {
6547
7225
  "showDescription": boolean;
6548
7226
  }
6549
7227
  interface BsSwitchAttributes {
7228
+ "name": string;
7229
+ "value": string;
6550
7230
  "size": BsSwitchSize;
6551
7231
  "checked": boolean;
6552
7232
  "disabled": boolean;
@@ -6557,6 +7237,7 @@ declare namespace LocalJSX {
6557
7237
  "disabled": boolean;
6558
7238
  "iconPosition": BsTabIconPosition;
6559
7239
  "ariaLabel": string | null;
7240
+ "tabbable": boolean;
6560
7241
  }
6561
7242
  interface BsTabsAttributes {
6562
7243
  "type": BsTabsType;
@@ -6584,6 +7265,7 @@ declare namespace LocalJSX {
6584
7265
  "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] };
6585
7266
  "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] };
6586
7267
  "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] };
7268
+ "bs-carousel": Omit<BsCarousel, keyof BsCarouselAttributes> & { [K in keyof BsCarousel & keyof BsCarouselAttributes]?: BsCarousel[K] } & { [K in keyof BsCarousel & keyof BsCarouselAttributes as `attr:${K}`]?: BsCarouselAttributes[K] } & { [K in keyof BsCarousel & keyof BsCarouselAttributes as `prop:${K}`]?: BsCarousel[K] };
6587
7269
  "bs-chatbot-feedback": Omit<BsChatbotFeedback, keyof BsChatbotFeedbackAttributes> & { [K in keyof BsChatbotFeedback & keyof BsChatbotFeedbackAttributes]?: BsChatbotFeedback[K] } & { [K in keyof BsChatbotFeedback & keyof BsChatbotFeedbackAttributes as `attr:${K}`]?: BsChatbotFeedbackAttributes[K] } & { [K in keyof BsChatbotFeedback & keyof BsChatbotFeedbackAttributes as `prop:${K}`]?: BsChatbotFeedback[K] };
6588
7270
  "bs-chatbot-header": Omit<BsChatbotHeader, keyof BsChatbotHeaderAttributes> & { [K in keyof BsChatbotHeader & keyof BsChatbotHeaderAttributes]?: BsChatbotHeader[K] } & { [K in keyof BsChatbotHeader & keyof BsChatbotHeaderAttributes as `attr:${K}`]?: BsChatbotHeaderAttributes[K] } & { [K in keyof BsChatbotHeader & keyof BsChatbotHeaderAttributes as `prop:${K}`]?: BsChatbotHeader[K] };
6589
7271
  "bs-chatbot-response-action": Omit<BsChatbotResponseAction, keyof BsChatbotResponseActionAttributes> & { [K in keyof BsChatbotResponseAction & keyof BsChatbotResponseActionAttributes]?: BsChatbotResponseAction[K] } & { [K in keyof BsChatbotResponseAction & keyof BsChatbotResponseActionAttributes as `attr:${K}`]?: BsChatbotResponseActionAttributes[K] } & { [K in keyof BsChatbotResponseAction & keyof BsChatbotResponseActionAttributes as `prop:${K}`]?: BsChatbotResponseAction[K] };
@@ -6598,6 +7280,8 @@ declare namespace LocalJSX {
6598
7280
  "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] };
6599
7281
  "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] };
6600
7282
  "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] };
7283
+ "bs-file-upload": Omit<BsFileUpload, keyof BsFileUploadAttributes> & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes]?: BsFileUpload[K] } & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes as `attr:${K}`]?: BsFileUploadAttributes[K] } & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes as `prop:${K}`]?: BsFileUpload[K] };
7284
+ "bs-file-upload-item": Omit<BsFileUploadItem, keyof BsFileUploadItemAttributes> & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes]?: BsFileUploadItem[K] } & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes as `attr:${K}`]?: BsFileUploadItemAttributes[K] } & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes as `prop:${K}`]?: BsFileUploadItem[K] };
6601
7285
  "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] };
6602
7286
  "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] };
6603
7287
  "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] };
@@ -6894,6 +7578,26 @@ declare module "@stencil/core" {
6894
7578
  * - For a dismissible/transient message — use a modal or a dedicated notification component.
6895
7579
  */
6896
7580
  "bs-card": LocalJSX.IntrinsicElements["bs-card"] & JSXBase.HTMLAttributes<HTMLBsCardElement>;
7581
+ /**
7582
+ * A carousel that shows a page of slides at a time, with a tracker (dots or numbered blocks) and
7583
+ * previous/next controls, and optional auto-advance with a Pause/Play button.
7584
+ * Slides are the default slot's direct children (a `bs-card`, an image, anything). The carousel
7585
+ * shows `slidesPerView` of them at once, so there are `ceil(slides / slidesPerView)` pages. It
7586
+ * manages two things on those slide elements: the `hidden` attribute (off-page slides are hidden,
7587
+ * so they leave the tab order and the accessibility tree) and, only when not already set,
7588
+ * `role="group"`, `aria-roledescription="slide"` and an `aria-label` of "n of N".
7589
+ * Composes `bs-pagination` (`tracker="numbers"`), `bs-icon-button` (previous/next for
7590
+ * `tracker="dots"`) and `bs-button` (Pause/Play) rather than re-implementing them.
7591
+ * ## When to use
7592
+ * - Browsing a set of related items (cards, images, announcements) where only a few fit at once.
7593
+ * - Rotating promotional or highlight content, where auto-advance with a Pause control is wanted.
7594
+ * ## When not to use
7595
+ * - Content users must see in full to complete a task -- hiding it behind paging hurts discovery;
7596
+ * lay it out in a list or grid instead.
7597
+ * - A strict sequence of steps -- use `bs-stepper`.
7598
+ * - Paging through a large, addressable result set -- use `bs-pagination`.
7599
+ */
7600
+ "bs-carousel": LocalJSX.IntrinsicElements["bs-carousel"] & JSXBase.HTMLAttributes<HTMLBsCarouselElement>;
6897
7601
  /**
6898
7602
  * A star-rating feedback card shown at the end of a Genie AI chat: a heading/subtitle, a 5-star
6899
7603
  * rating, an optional comment, and either "Submit feedback" + "Start new chat" (before
@@ -7252,6 +7956,30 @@ declare module "@stencil/core" {
7252
7956
  * button in the header row next to the heading, same as before this addition.
7253
7957
  */
7254
7958
  "bs-dialog": LocalJSX.IntrinsicElements["bs-dialog"] & JSXBase.HTMLAttributes<HTMLBsDialogElement>;
7959
+ /**
7960
+ * A file dropzone: drag files onto it, or press "Browse file" to open the file picker. It reports
7961
+ * the chosen files and does nothing else -- the consuming app owns the upload itself and shows its
7962
+ * progress with `bs-file-upload-item`.
7963
+ * ## When to use
7964
+ * - Letting users add one or more files (documents, images) to upload.
7965
+ * ## When not to use
7966
+ * - Attaching files to a chat message -- see `bs-composer` / `bs-attachment`.
7967
+ * - A file input that must submit with a native `<form>`: this component is **not**
7968
+ * form-associated. Read the files from `bsFilesSelect` and submit them yourself.
7969
+ */
7970
+ "bs-file-upload": LocalJSX.IntrinsicElements["bs-file-upload"] & JSXBase.HTMLAttributes<HTMLBsFileUploadElement>;
7971
+ /**
7972
+ * One file in an upload list: a thumbnail, the file name and size, a status line (a progress bar
7973
+ * while uploading, or a success / error message) and an action button (cancel while uploading or
7974
+ * after an error, remove once uploaded).
7975
+ * Presentational only -- the consuming app owns the upload and drives `state`, `progress` and
7976
+ * `message` from it. Pair with `bs-file-upload` (the dropzone that picks the files).
7977
+ * ## When to use
7978
+ * - Showing the status of each file the user has added, in a list under a `bs-file-upload`.
7979
+ * ## When not to use
7980
+ * - Attaching files to a chat message -- use `bs-attachment`.
7981
+ */
7982
+ "bs-file-upload-item": LocalJSX.IntrinsicElements["bs-file-upload-item"] & JSXBase.HTMLAttributes<HTMLBsFileUploadItemElement>;
7255
7983
  /**
7256
7984
  * A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same
7257
7985
  * 8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.