@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
@@ -0,0 +1,198 @@
1
+ import { render, h, describe, it, expect } from "@stencil/vitest";
2
+ import { afterEach, beforeEach, vi } from "vitest";
3
+ import { userEvent } from "vitest/browser";
4
+ import { assertShadowParts, runAxeCheck } from "../../test/helpers/conventions";
5
+ const slides = (n) => Array.from({ length: n }, (_, i) => h("div", null, "Slide ", i + 1));
6
+ const visible = (root) => Array.from(root.children).filter(c => !c.hidden).map(c => c.textContent);
7
+ // Autoplay deliberately holds while the pointer is over the carousel (WCAG pause-on-hover). The test
8
+ // browser keeps ONE pointer for the whole run, so an earlier test that hovered something near the top
9
+ // of the page leaves it resting where the next carousel renders -- which then holds autoplay and
10
+ // never advances (this is exactly what failed on the CI runner while passing locally). Park the
11
+ // pointer in the opposite corner before each autoplay test so they don't depend on test order.
12
+ const parkPointer = async () => {
13
+ const dot = document.createElement('div');
14
+ dot.style.cssText = 'position:fixed;right:0;bottom:0;width:8px;height:8px';
15
+ document.body.appendChild(dot);
16
+ await userEvent.hover(dot);
17
+ dot.remove();
18
+ };
19
+ // Autoplay also starts paused for users who prefer reduced motion; make that independent of the
20
+ // machine running the tests.
21
+ const stubReducedMotion = (reduce) => vi.spyOn(window, 'matchMedia').mockImplementation((query) => ({
22
+ matches: reduce && query.includes('prefers-reduced-motion'),
23
+ media: query,
24
+ onchange: null,
25
+ addListener: () => undefined,
26
+ removeListener: () => undefined,
27
+ addEventListener: () => undefined,
28
+ removeEventListener: () => undefined,
29
+ dispatchEvent: () => false,
30
+ }));
31
+ // Resolves with the page of the next bsPageChange. Rejects with the carousel's state if none comes in
32
+ // time, so a failure says WHY autoplay held (hovered/focused/paused) instead of just "timed out".
33
+ const nextPage = (el, timeout = 5000) => new Promise((resolve, reject) => {
34
+ const timer = setTimeout(() => {
35
+ const host = el;
36
+ const live = el.shadowRoot?.querySelector('[part="slides"]')?.getAttribute('aria-live');
37
+ reject(new Error(`no bsPageChange within the timeout (paused=${host.paused}, :hover=${el.matches(':hover')}, ` +
38
+ `:focus-within=${el.matches(':focus-within')}, aria-live=${live})`));
39
+ }, timeout);
40
+ el.addEventListener('bsPageChange', (e) => {
41
+ clearTimeout(timer);
42
+ resolve(e.detail);
43
+ }, { once: true });
44
+ });
45
+ const btn = (el) => el?.shadowRoot?.querySelector('button');
46
+ describe('bs-carousel', () => {
47
+ it('has no axe-core violations (dots and numbers)', async () => {
48
+ for (const tracker of ['dots', 'numbers']) {
49
+ const { root } = await render(h("bs-carousel", { tracker: tracker, autoplay: true, label: "Featured" }, slides(9)));
50
+ await runAxeCheck(root);
51
+ }
52
+ });
53
+ it('exposes its documented shadow parts', async () => {
54
+ const { root } = await render(h("bs-carousel", { autoplay: true }, slides(9)));
55
+ assertShadowParts(root.shadowRoot, ['carousel', 'slides', 'tracker', 'prev', 'next', 'dots', 'dot', 'current', 'pause']);
56
+ });
57
+ it('shows slidesPerView slides per page and hides the rest', async () => {
58
+ const { root } = await render(h("bs-carousel", null, slides(7)));
59
+ expect(visible(root)).toEqual(['Slide 1', 'Slide 2', 'Slide 3']);
60
+ });
61
+ it('slidesPerView=1 shows one slide per page', async () => {
62
+ const { root } = await render(h("bs-carousel", { slidesPerView: 1 }, slides(3)));
63
+ expect(visible(root)).toEqual(['Slide 1']);
64
+ });
65
+ it('labels the region and each slide, without overriding existing labels', async () => {
66
+ const { root } = await render(h("bs-carousel", { label: "News" }, h("div", { "aria-label": "Custom" }, "A"), h("div", null, "B")));
67
+ const region = root.shadowRoot.querySelector('[part="carousel"]');
68
+ expect(region).toEqualAttribute('role', 'region');
69
+ expect(region).toEqualAttribute('aria-roledescription', 'carousel');
70
+ expect(region).toEqualAttribute('aria-label', 'News');
71
+ expect(root.children[0].getAttribute('aria-label')).toBe('Custom');
72
+ expect(root.children[1].getAttribute('aria-label')).toBe('2 of 2');
73
+ expect(root.children[1].getAttribute('aria-roledescription')).toBe('slide');
74
+ });
75
+ describe('dots tracker', () => {
76
+ it('renders one dot per page with the current one active', async () => {
77
+ const { root } = await render(h("bs-carousel", null, slides(12)));
78
+ const dots = root.shadowRoot.querySelectorAll('[part~="dot"]');
79
+ expect(dots.length).toBe(4);
80
+ expect(dots[0].getAttribute('part')).toContain('current');
81
+ expect(root.shadowRoot.querySelectorAll('[part~="current"]').length).toBe(1);
82
+ });
83
+ it('next/previous move the page, emit bsPageChange, and disable at the ends', async () => {
84
+ const { root, waitForChanges, spyOnEvent } = await render(h("bs-carousel", null, slides(9)));
85
+ const spy = spyOnEvent('bsPageChange');
86
+ const prev = root.shadowRoot.querySelector('[part="prev"]');
87
+ const next = root.shadowRoot.querySelector('[part="next"]');
88
+ expect(prev.disabled).toBe(true);
89
+ btn(next).click();
90
+ await waitForChanges();
91
+ expect(visible(root)).toEqual(['Slide 4', 'Slide 5', 'Slide 6']);
92
+ expect(root.currentPage).toBe(2);
93
+ expect(spy).toHaveReceivedEventDetail(2);
94
+ btn(next).click();
95
+ await waitForChanges();
96
+ expect(next.disabled).toBe(true);
97
+ btn(prev).click();
98
+ await waitForChanges();
99
+ expect(root.currentPage).toBe(2);
100
+ });
101
+ });
102
+ describe('numbers tracker', () => {
103
+ it('renders a bs-pagination with one number per page and navigates on click', async () => {
104
+ const { root, waitForChanges, spyOnEvent } = await render(h("bs-carousel", { tracker: "numbers" }, slides(15)));
105
+ const spy = spyOnEvent('bsPageChange');
106
+ const pagination = root.shadowRoot.querySelector('bs-pagination');
107
+ expect(pagination.totalPages).toBe(5);
108
+ pagination.shadowRoot.querySelectorAll('.bs-pagination__page')[2].click();
109
+ await waitForChanges();
110
+ expect(root.currentPage).toBe(3);
111
+ expect(visible(root)).toEqual(['Slide 7', 'Slide 8', 'Slide 9']);
112
+ expect(spy).toHaveReceivedEventTimes(1);
113
+ expect(spy).toHaveReceivedEventDetail(3);
114
+ });
115
+ });
116
+ it('hides the tracker when there is only one page', async () => {
117
+ const { root } = await render(h("bs-carousel", null, slides(3)));
118
+ expect(root.shadowRoot.querySelector('[part="tracker"]')).toBeNull();
119
+ });
120
+ it('clamps an out-of-range currentPage', async () => {
121
+ const { root, waitForChanges } = await render(h("bs-carousel", { currentPage: 99 }, slides(9)));
122
+ await waitForChanges();
123
+ expect(root.currentPage).toBe(3);
124
+ expect(visible(root)).toEqual(['Slide 7', 'Slide 8', 'Slide 9']);
125
+ });
126
+ it('reacts to slides being added', async () => {
127
+ const { root, waitForChanges } = await render(h("bs-carousel", null, slides(3)));
128
+ for (let i = 4; i <= 7; i++) {
129
+ const d = document.createElement('div');
130
+ d.textContent = `Slide ${i}`;
131
+ root.appendChild(d);
132
+ }
133
+ await waitForChanges();
134
+ expect(root.shadowRoot.querySelectorAll('[part~="dot"]').length).toBe(3);
135
+ });
136
+ describe('autoplay', () => {
137
+ beforeEach(async () => {
138
+ stubReducedMotion(false);
139
+ await parkPointer();
140
+ });
141
+ afterEach(() => {
142
+ vi.restoreAllMocks();
143
+ });
144
+ it('renders no Pause button unless autoplay is set', async () => {
145
+ const { root } = await render(h("bs-carousel", null, slides(9)));
146
+ expect(root.shadowRoot.querySelector('[part="pause"]')).toBeNull();
147
+ });
148
+ it('auto-advances, looping from the last page to the first', async () => {
149
+ const { root } = await render(h("bs-carousel", { autoplay: true, interval: 250 }, slides(6)));
150
+ expect(await nextPage(root)).toBe(2);
151
+ expect(await nextPage(root)).toBe(1);
152
+ });
153
+ it('starts paused (showing Play) for users who prefer reduced motion, and does not advance', async () => {
154
+ stubReducedMotion(true);
155
+ const { root, waitForChanges } = await render(h("bs-carousel", { autoplay: true, interval: 250 }, slides(6)));
156
+ await waitForChanges();
157
+ expect(root.paused).toBe(true);
158
+ expect(root.shadowRoot.querySelector('[part="pause"]').textContent).toContain('Play');
159
+ await new Promise(r => setTimeout(r, 700));
160
+ expect(root.currentPage).toBe(1);
161
+ });
162
+ it('holds auto-advance while the pointer is over the carousel', async () => {
163
+ const { root, waitForChanges } = await render(h("bs-carousel", { autoplay: true, interval: 250 }, slides(6)));
164
+ await waitForChanges();
165
+ root.dispatchEvent(new MouseEvent('mouseenter'));
166
+ await waitForChanges();
167
+ expect(root.shadowRoot.querySelector('[part="slides"]').getAttribute('aria-live')).toBe('polite');
168
+ await new Promise(r => setTimeout(r, 700));
169
+ expect(root.currentPage).toBe(1);
170
+ root.dispatchEvent(new MouseEvent('mouseleave'));
171
+ expect(await nextPage(root)).toBe(2);
172
+ });
173
+ it('Pause stops auto-advance, flips to Play, and emits bsPauseChange', async () => {
174
+ const { root, waitForChanges, spyOnEvent } = await render(h("bs-carousel", { autoplay: true, interval: 1000 }, slides(9)));
175
+ const spy = spyOnEvent('bsPauseChange');
176
+ const pause = root.shadowRoot.querySelector('[part="pause"]');
177
+ expect(pause.textContent).toContain('Pause');
178
+ btn(pause).click();
179
+ await waitForChanges();
180
+ expect(root.paused).toBe(true);
181
+ expect(pause.textContent).toContain('Play');
182
+ expect(spy).toHaveReceivedEventDetail(true);
183
+ // Longer than one interval: had it not stopped, it would have advanced by now.
184
+ await new Promise(r => setTimeout(r, 1300));
185
+ expect(root.currentPage).toBe(1);
186
+ });
187
+ it('holds auto-advance while focus is inside, and announces politely only when not rotating', async () => {
188
+ const { root, waitForChanges } = await render(h("bs-carousel", { autoplay: true, interval: 1000 }, slides(9)));
189
+ const live = () => root.shadowRoot.querySelector('[part="slides"]').getAttribute('aria-live');
190
+ expect(live()).toBe('off');
191
+ root.dispatchEvent(new FocusEvent('focusin'));
192
+ await waitForChanges();
193
+ expect(live()).toBe('polite');
194
+ await new Promise(r => setTimeout(r, 1300));
195
+ expect(root.currentPage).toBe(1);
196
+ });
197
+ });
198
+ });
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @prop --bs-carousel-gap: Gap between visible slides. Aliased to --bs-spacing-200.
3
+ * @prop --bs-carousel-tracker-offset: Vertical gap between the slides and the tracker row. Aliased to --bs-spacing-200.
4
+ * @prop --bs-carousel-tracker-gap: Gap between the items of the tracker row (previous, dots, next, Pause). Aliased to --bs-spacing-50.
5
+ * @prop --bs-carousel-dot-size: Width/height of an inactive dot; the active dot is twice as wide. Aliased to --bs-spacing-100 (8px, exact match to Figma).
6
+ * @prop --bs-carousel-dot-radius: Corner radius of a dot. Aliased to --bs-border-radius-full.
7
+ * @prop --bs-carousel-dot-color: Fill of an inactive dot. Aliased to --bs-surface-container.
8
+ * @prop --bs-carousel-dot-active-color: Fill of the active dot. Aliased to --bs-color-primary-default.
9
+ * @prop --bs-carousel-dots-gap: Gap between dots. Aliased to --bs-spacing-50.
10
+ */
11
+ :host {
12
+ display: block;
13
+
14
+ --bs-carousel-gap: var(--bs-spacing-200);
15
+ --bs-carousel-tracker-offset: var(--bs-spacing-200);
16
+ --bs-carousel-tracker-gap: var(--bs-spacing-50);
17
+
18
+ --bs-carousel-dot-size: var(--bs-spacing-100);
19
+ --bs-carousel-dot-radius: var(--bs-border-radius-full);
20
+ --bs-carousel-dot-color: var(--bs-surface-container);
21
+ --bs-carousel-dot-active-color: var(--bs-color-primary-default);
22
+ --bs-carousel-dots-gap: var(--bs-spacing-50);
23
+ }
24
+
25
+ .bs-carousel {
26
+ display: flex;
27
+ flex-direction: column;
28
+ align-items: center;
29
+ gap: var(--bs-carousel-tracker-offset);
30
+ }
31
+
32
+ .bs-carousel__slides {
33
+ display: flex;
34
+ align-items: flex-start;
35
+ gap: var(--bs-carousel-gap);
36
+ width: 100%;
37
+ }
38
+
39
+ /* Each slide takes an equal share of the row for the configured slidesPerView (set inline by the
40
+ component -- an internal variable, not a customization point). */
41
+ .bs-carousel__slides ::slotted(*) {
42
+ flex: 0 0
43
+ calc(
44
+ (100% - (var(--bs-carousel-slides-per-view) - 1) * var(--bs-carousel-gap)) / var(--bs-carousel-slides-per-view)
45
+ );
46
+ min-width: 0;
47
+ box-sizing: border-box;
48
+ }
49
+
50
+ /* Off-page slides carry the `hidden` attribute; a slide's own :host { display } would otherwise
51
+ override the UA's [hidden] rule. */
52
+ .bs-carousel__slides ::slotted([hidden]) {
53
+ display: none !important;
54
+ }
55
+
56
+ .bs-carousel__tracker {
57
+ display: flex;
58
+ align-items: center;
59
+ gap: var(--bs-carousel-tracker-gap);
60
+ }
61
+
62
+ .bs-carousel__nav {
63
+ display: flex;
64
+ align-items: center;
65
+ gap: var(--bs-carousel-tracker-gap);
66
+ }
67
+
68
+ .bs-carousel__dots {
69
+ display: flex;
70
+ align-items: center;
71
+ gap: var(--bs-carousel-dots-gap);
72
+ }
73
+
74
+ .bs-carousel__dot {
75
+ display: block;
76
+ width: var(--bs-carousel-dot-size);
77
+ height: var(--bs-carousel-dot-size);
78
+ border-radius: var(--bs-carousel-dot-radius);
79
+ background: var(--bs-carousel-dot-color);
80
+ }
81
+
82
+ .bs-carousel__dot--active {
83
+ width: calc(var(--bs-carousel-dot-size) * 2);
84
+ background: var(--bs-carousel-dot-active-color);
85
+ }
86
+
87
+ /* Figma colors the previous/next chevrons with the default icon color (--bs-icon-default, #21262e),
88
+ one step darker than bs-icon-button's subtle variant (--bs-icon-neutral-default). Re-pointing that
89
+ token on these buttons only keeps the alias-to-a-token rule without touching bs-icon-button. */
90
+ .bs-carousel__nav bs-icon-button {
91
+ --bs-icon-neutral-default: var(--bs-icon-default);
92
+ }
93
+
94
+ /* In RTL the previous button sits on the right, so its chevron must point right (and vice versa). */
95
+ :host(:dir(rtl)) .bs-carousel__chevron {
96
+ transform: scaleX(-1);
97
+ }
98
+
99
+ @media (forced-colors: active) {
100
+ .bs-carousel__dot {
101
+ forced-color-adjust: none;
102
+ background: GrayText;
103
+ }
104
+ .bs-carousel__dot--active {
105
+ background: Highlight;
106
+ }
107
+ }