@brandsync/wc 1.5.4 → 1.7.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 (321) hide show
  1. package/custom-elements.json +1122 -98
  2. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  3. package/dist/brandsync-wc/{p-1b16b6e4.entry.js → p-06e9b45d.entry.js} +1 -1
  4. package/dist/brandsync-wc/p-0d86c22d.entry.js +1 -0
  5. package/dist/brandsync-wc/{p-dc974a34.entry.js → p-13e4966c.entry.js} +1 -1
  6. package/dist/brandsync-wc/{p-42f428b0.entry.js → p-18021c05.entry.js} +1 -1
  7. package/dist/brandsync-wc/{p-1d094352.entry.js → p-1c8160c2.entry.js} +1 -1
  8. package/dist/brandsync-wc/{p-692fd5f0.entry.js → p-21c14465.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-3145cc00.entry.js → p-2700a63e.entry.js} +1 -1
  10. package/dist/brandsync-wc/{p-6acdf2e1.entry.js → p-27100489.entry.js} +1 -1
  11. package/dist/brandsync-wc/{p-a55a3d87.entry.js → p-2d6955d6.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-46957b76.entry.js → p-309f920e.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-899d24f8.entry.js → p-30d6a6d0.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-58969b2b.entry.js → p-387ed85f.entry.js} +1 -1
  15. package/dist/brandsync-wc/{p-27741046.entry.js → p-3eab22a5.entry.js} +1 -1
  16. package/dist/brandsync-wc/{p-da6fa359.entry.js → p-4a1a5d6e.entry.js} +1 -1
  17. package/dist/brandsync-wc/{p-a77a5438.entry.js → p-4b0938a5.entry.js} +1 -1
  18. package/dist/brandsync-wc/{p-6b62bf53.entry.js → p-4bff9b4b.entry.js} +1 -1
  19. package/dist/brandsync-wc/{p-943fc6b9.entry.js → p-5312b6a5.entry.js} +1 -1
  20. package/dist/brandsync-wc/{p-95e0fb92.entry.js → p-538cc08e.entry.js} +1 -1
  21. package/dist/brandsync-wc/p-55e6438c.entry.js +1 -0
  22. package/dist/brandsync-wc/{p-83bda5f1.entry.js → p-600b5434.entry.js} +1 -1
  23. package/dist/brandsync-wc/p-61db6ce2.entry.js +1 -0
  24. package/dist/brandsync-wc/{p-5ea24f7e.entry.js → p-6754dfa9.entry.js} +1 -1
  25. package/dist/brandsync-wc/{p-a34c7553.entry.js → p-70e035ed.entry.js} +1 -1
  26. package/dist/brandsync-wc/{p-1bfc80c3.entry.js → p-77433277.entry.js} +1 -1
  27. package/dist/brandsync-wc/{p-906b4faa.entry.js → p-777a9dbf.entry.js} +1 -1
  28. package/dist/brandsync-wc/p-7ed5670e.entry.js +1 -0
  29. package/dist/brandsync-wc/{p-e92f09b3.entry.js → p-80cf96ff.entry.js} +1 -1
  30. package/dist/brandsync-wc/{p-3e4a9f38.entry.js → p-819a3dae.entry.js} +1 -1
  31. package/dist/brandsync-wc/{p-f4cb1337.entry.js → p-85c70f6d.entry.js} +1 -1
  32. package/dist/brandsync-wc/{p-ac2ccc4b.entry.js → p-8b2ab522.entry.js} +1 -1
  33. package/dist/brandsync-wc/{p-76a37a98.entry.js → p-8b57f606.entry.js} +1 -1
  34. package/dist/brandsync-wc/{p-a96ec9a1.entry.js → p-9c1be2a0.entry.js} +1 -1
  35. package/dist/brandsync-wc/{p-CcPfH1dJ.js → p-DuyFft7h.js} +2 -2
  36. package/dist/brandsync-wc/{p-e9a89ea0.entry.js → p-a36a0e6a.entry.js} +1 -1
  37. package/dist/brandsync-wc/{p-eb1c98a5.entry.js → p-a96856fd.entry.js} +1 -1
  38. package/dist/brandsync-wc/{p-a64b64f8.entry.js → p-b0634051.entry.js} +1 -1
  39. package/dist/brandsync-wc/{p-5f233b4e.entry.js → p-b2dc9886.entry.js} +1 -1
  40. package/dist/brandsync-wc/{p-c91eb3eb.entry.js → p-bcee3d60.entry.js} +1 -1
  41. package/dist/brandsync-wc/{p-3f6980bf.entry.js → p-be14f99f.entry.js} +1 -1
  42. package/dist/brandsync-wc/{p-cd90ed34.entry.js → p-c197cc95.entry.js} +1 -1
  43. package/dist/brandsync-wc/{p-8f90e906.entry.js → p-c3a28a89.entry.js} +1 -1
  44. package/dist/brandsync-wc/{p-ba650ca9.entry.js → p-cbaa19ab.entry.js} +1 -1
  45. package/dist/brandsync-wc/{p-d1dfd37d.entry.js → p-d03eba2b.entry.js} +1 -1
  46. package/dist/brandsync-wc/{p-f0a6ff05.entry.js → p-d06543a5.entry.js} +1 -1
  47. package/dist/brandsync-wc/{p-dbd49107.entry.js → p-d25b7b74.entry.js} +1 -1
  48. package/dist/brandsync-wc/{p-69c76966.entry.js → p-e1069ba9.entry.js} +1 -1
  49. package/dist/brandsync-wc/p-e427bbda.entry.js +1 -0
  50. package/dist/brandsync-wc/{p-2c2057f5.entry.js → p-e61efe4d.entry.js} +1 -1
  51. package/dist/brandsync-wc/{p-35850bfe.entry.js → p-f14bda01.entry.js} +1 -1
  52. package/dist/brandsync-wc/{p-fd1acc0f.entry.js → p-f243683f.entry.js} +1 -1
  53. package/dist/brandsync-wc/{p-9d5cf289.entry.js → p-f2ce9a1f.entry.js} +1 -1
  54. package/dist/brandsync-wc/{p-b332fe01.entry.js → p-f518f486.entry.js} +1 -1
  55. package/dist/brandsync-wc/{p-b4211012.entry.js → p-f8f03334.entry.js} +1 -1
  56. package/dist/brandsync-wc/{p-6fd1fb04.entry.js → p-fba01c96.entry.js} +1 -1
  57. package/dist/brandsync-wc/{p-d69e5034.entry.js → p-fde5e9f1.entry.js} +1 -1
  58. package/dist/cjs/brandsync-wc.cjs.js +3 -3
  59. package/dist/cjs/bs-accordion.cjs.entry.js +1 -1
  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 +2 -2
  64. package/dist/cjs/bs-attachment.cjs.entry.js +1 -1
  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 +1 -1
  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 +1 -1
  72. package/dist/cjs/bs-card.cjs.entry.js +1 -1
  73. package/dist/cjs/bs-carousel.cjs.entry.js +196 -0
  74. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
  75. package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
  76. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  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 +2 -2
  81. package/dist/cjs/bs-chip-filter.cjs.entry.js +2 -2
  82. package/dist/cjs/bs-chip-informative.cjs.entry.js +2 -2
  83. package/dist/cjs/bs-chip-input.cjs.entry.js +2 -2
  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 +3 -3
  87. package/dist/cjs/bs-dialog.cjs.entry.js +1 -1
  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 +2 -2
  91. package/dist/cjs/bs-inline-tab.cjs.entry.js +2 -2
  92. package/dist/cjs/bs-input.cjs.entry.js +3 -3
  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 +2 -2
  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 +3 -3
  102. package/dist/cjs/bs-radio.cjs.entry.js +2 -2
  103. package/dist/cjs/bs-slider.cjs.entry.js +2 -2
  104. package/dist/cjs/bs-snackbar.cjs.entry.js +2 -2
  105. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  106. package/dist/cjs/bs-stepper-step.cjs.entry.js +2 -2
  107. package/dist/cjs/bs-stepper.cjs.entry.js +2 -2
  108. package/dist/cjs/bs-switch.cjs.entry.js +2 -2
  109. package/dist/cjs/bs-tab.cjs.entry.js +2 -2
  110. package/dist/cjs/bs-tabs.cjs.entry.js +2 -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-Bj1mNOtg.js → index-D7e6DfLV.js} +24 -27
  114. package/dist/cjs/loader.cjs.js +2 -2
  115. package/dist/collection/collection-manifest.json +4 -1
  116. package/dist/collection/components/bs-accordion/bs-accordion.cmp.test.js +5 -0
  117. package/dist/collection/components/bs-accordion/bs-accordion.js +1 -1
  118. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  119. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  120. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  121. package/dist/collection/components/bs-attachment/bs-attachment.js +1 -1
  122. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  123. package/dist/collection/components/bs-avatar/bs-avatar.js +2 -2
  124. package/dist/collection/components/bs-badge/bs-badge.js +1 -1
  125. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +1 -1
  126. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +1 -1
  127. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -1
  128. package/dist/collection/components/bs-button/bs-button/bs-button.js +2 -2
  129. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +3 -3
  130. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  131. package/dist/collection/components/bs-card/bs-card.js +1 -1
  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.js +1 -1
  137. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  138. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  139. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  140. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  141. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
  142. package/dist/collection/components/bs-checkbox/bs-checkbox.js +2 -2
  143. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.js +2 -2
  144. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.js +3 -3
  145. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +2 -2
  146. package/dist/collection/components/bs-composer/bs-composer.js +3 -3
  147. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +2 -2
  148. package/dist/collection/components/bs-data-table/bs-data-table.js +6 -6
  149. package/dist/collection/components/bs-dialog/bs-dialog.js +1 -1
  150. package/dist/collection/components/bs-file-upload/bs-file-upload.cmp.test.js +119 -0
  151. package/dist/collection/components/bs-file-upload/bs-file-upload.css +139 -0
  152. package/dist/collection/components/bs-file-upload/bs-file-upload.js +342 -0
  153. package/dist/collection/components/bs-file-upload/bs-file-upload.stories.js +116 -0
  154. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.cmp.test.js +115 -0
  155. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.css +154 -0
  156. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +329 -0
  157. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.stories.js +54 -0
  158. package/dist/collection/components/bs-input/bs-input.js +2 -2
  159. package/dist/collection/components/bs-logo/bs-logo.js +2 -2
  160. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  161. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  162. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  163. package/dist/collection/components/bs-progress/bs-progress.js +5 -5
  164. package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +29 -4
  165. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  166. package/dist/collection/components/bs-slider/bs-slider.js +2 -2
  167. package/dist/collection/components/bs-snackbar/bs-snackbar.js +2 -2
  168. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  169. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
  170. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +3 -3
  171. package/dist/collection/components/bs-switch/bs-switch.js +2 -2
  172. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  173. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +2 -2
  174. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +3 -3
  175. package/dist/collection/components/bs-toast/bs-toast.js +2 -2
  176. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  177. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +1 -1
  178. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  179. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +2 -2
  180. package/dist/collection/test/helpers/conventions.js +46 -0
  181. package/dist/collection/test/helpers/conventions.unit.test.js +38 -0
  182. package/dist/components/bs-accordion.js +1 -1
  183. package/dist/components/bs-ai-disclaimer.js +1 -1
  184. package/dist/components/bs-ai-greeting.js +1 -1
  185. package/dist/components/bs-ai-thinking.js +1 -1
  186. package/dist/components/bs-attachment-list.js +1 -1
  187. package/dist/components/bs-attachment.js +1 -1
  188. package/dist/components/bs-avatar.js +1 -1
  189. package/dist/components/bs-badge.js +1 -1
  190. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  191. package/dist/components/bs-breadcrumb.js +1 -1
  192. package/dist/components/bs-breadcrumbs.js +1 -1
  193. package/dist/components/bs-button-skeleton.js +1 -1
  194. package/dist/components/bs-button.js +1 -1
  195. package/dist/components/bs-card.js +1 -1
  196. package/dist/components/bs-carousel.d.ts +11 -0
  197. package/dist/components/bs-carousel.js +1 -0
  198. package/dist/components/bs-chatbot-feedback.js +1 -1
  199. package/dist/components/bs-chatbot-header.js +1 -1
  200. package/dist/components/bs-chatbot-response-action.js +1 -1
  201. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  202. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  203. package/dist/components/bs-checkbox-skeleton.js +1 -1
  204. package/dist/components/bs-checkbox.js +1 -1
  205. package/dist/components/bs-chip-filter.js +1 -1
  206. package/dist/components/bs-chip-informative.js +1 -1
  207. package/dist/components/bs-chip-input.js +1 -1
  208. package/dist/components/bs-composer-status-banner.js +1 -1
  209. package/dist/components/bs-composer.js +1 -1
  210. package/dist/components/bs-data-table.js +1 -1
  211. package/dist/components/bs-dialog.js +1 -1
  212. package/dist/components/bs-file-upload-item.d.ts +11 -0
  213. package/dist/components/bs-file-upload-item.js +1 -0
  214. package/dist/components/bs-file-upload.d.ts +11 -0
  215. package/dist/components/bs-file-upload.js +1 -0
  216. package/dist/components/bs-icon-button.js +1 -1
  217. package/dist/components/bs-inline-tab.js +1 -1
  218. package/dist/components/bs-input.js +1 -1
  219. package/dist/components/bs-logo.js +1 -1
  220. package/dist/components/bs-menu-item.js +1 -1
  221. package/dist/components/bs-menu.js +1 -1
  222. package/dist/components/bs-navigation-drawer-item.js +1 -1
  223. package/dist/components/bs-navigation-drawer.js +1 -1
  224. package/dist/components/bs-navigation-header.js +1 -1
  225. package/dist/components/bs-pagination.js +1 -1
  226. package/dist/components/bs-progress-linear.js +1 -1
  227. package/dist/components/bs-progress.js +1 -1
  228. package/dist/components/bs-radio.js +1 -1
  229. package/dist/components/bs-slider.js +1 -1
  230. package/dist/components/bs-snackbar.js +1 -1
  231. package/dist/components/bs-source-link.js +1 -1
  232. package/dist/components/bs-stepper-step.js +1 -1
  233. package/dist/components/bs-stepper.js +1 -1
  234. package/dist/components/bs-switch.js +1 -1
  235. package/dist/components/bs-tab.js +1 -1
  236. package/dist/components/bs-tabs.js +1 -1
  237. package/dist/components/bs-toast.js +1 -1
  238. package/dist/components/bs-tooltip.js +1 -1
  239. package/dist/components/index.js +1 -1
  240. package/dist/components/{p-D4omPSOU.js → p-BaxFLlKS.js} +1 -1
  241. package/dist/components/{p-DwVm6HIb.js → p-BhvV55-6.js} +1 -1
  242. package/dist/components/p-BxFJ74fI.js +1 -0
  243. package/dist/components/{p-Byl-ZwBI.js → p-DI5GgSqL.js} +1 -1
  244. package/dist/components/{p-DOApNIwD.js → p-Dqt-Qp4W.js} +1 -1
  245. package/dist/components/p-Dx8gAOVC.js +1 -0
  246. package/dist/components/{p-Dkv8x1_Z.js → p-LYvoWZt4.js} +1 -1
  247. package/dist/components/{p-CsnFdZ3v.js → p-mnGJPH85.js} +1 -1
  248. package/dist/components/{p-lvnXqw5g.js → p-v4T0qPVn.js} +1 -1
  249. package/dist/esm/brandsync-wc.js +4 -4
  250. package/dist/esm/bs-accordion.entry.js +1 -1
  251. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  252. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  253. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  254. package/dist/esm/bs-attachment-list.entry.js +2 -2
  255. package/dist/esm/bs-attachment.entry.js +1 -1
  256. package/dist/esm/bs-avatar.entry.js +1 -1
  257. package/dist/esm/bs-badge.entry.js +1 -1
  258. package/dist/esm/bs-breadcrumb-overflow.entry.js +1 -1
  259. package/dist/esm/bs-breadcrumb.entry.js +1 -1
  260. package/dist/esm/bs-breadcrumbs.entry.js +2 -2
  261. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  262. package/dist/esm/bs-button.entry.js +1 -1
  263. package/dist/esm/bs-card.entry.js +1 -1
  264. package/dist/esm/bs-carousel.entry.js +194 -0
  265. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  266. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  267. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  268. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  269. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  270. package/dist/esm/bs-checkbox-skeleton.entry.js +2 -2
  271. package/dist/esm/bs-checkbox.entry.js +2 -2
  272. package/dist/esm/bs-chip-filter.entry.js +2 -2
  273. package/dist/esm/bs-chip-informative.entry.js +2 -2
  274. package/dist/esm/bs-chip-input.entry.js +2 -2
  275. package/dist/esm/bs-composer-status-banner.entry.js +2 -2
  276. package/dist/esm/bs-composer.entry.js +2 -2
  277. package/dist/esm/bs-data-table.entry.js +3 -3
  278. package/dist/esm/bs-dialog.entry.js +1 -1
  279. package/dist/esm/bs-file-upload-item.entry.js +83 -0
  280. package/dist/esm/bs-file-upload.entry.js +108 -0
  281. package/dist/esm/bs-icon-button.entry.js +2 -2
  282. package/dist/esm/bs-inline-tab.entry.js +2 -2
  283. package/dist/esm/bs-input.entry.js +3 -3
  284. package/dist/esm/bs-logo.entry.js +1 -1
  285. package/dist/esm/bs-menu-item.entry.js +2 -2
  286. package/dist/esm/bs-menu.entry.js +2 -2
  287. package/dist/esm/bs-navigation-drawer-item.entry.js +2 -2
  288. package/dist/esm/bs-navigation-drawer.entry.js +2 -2
  289. package/dist/esm/bs-navigation-header.entry.js +2 -2
  290. package/dist/esm/bs-pagination.entry.js +2 -2
  291. package/dist/esm/bs-progress-linear.entry.js +8 -3
  292. package/dist/esm/bs-progress.entry.js +3 -3
  293. package/dist/esm/bs-radio.entry.js +2 -2
  294. package/dist/esm/bs-slider.entry.js +2 -2
  295. package/dist/esm/bs-snackbar.entry.js +2 -2
  296. package/dist/esm/bs-source-link.entry.js +3 -3
  297. package/dist/esm/bs-stepper-step.entry.js +2 -2
  298. package/dist/esm/bs-stepper.entry.js +2 -2
  299. package/dist/esm/bs-switch.entry.js +2 -2
  300. package/dist/esm/bs-tab.entry.js +2 -2
  301. package/dist/esm/bs-tabs.entry.js +2 -2
  302. package/dist/esm/bs-toast.entry.js +2 -2
  303. package/dist/esm/bs-tooltip.entry.js +2 -2
  304. package/dist/esm/{index-CcPfH1dJ.js → index-DuyFft7h.js} +24 -27
  305. package/dist/esm/loader.js +3 -3
  306. package/dist/types/components/bs-carousel/bs-carousel.cmp.test.d.ts +1 -0
  307. package/dist/types/components/bs-carousel/bs-carousel.d.ts +101 -0
  308. package/dist/types/components/bs-carousel/bs-carousel.stories.d.ts +17 -0
  309. package/dist/types/components/bs-file-upload/bs-file-upload.cmp.test.d.ts +1 -0
  310. package/dist/types/components/bs-file-upload/bs-file-upload.d.ts +59 -0
  311. package/dist/types/components/bs-file-upload/bs-file-upload.stories.d.ts +21 -0
  312. package/dist/types/components/bs-file-upload-item/bs-file-upload-item.cmp.test.d.ts +1 -0
  313. package/dist/types/components/bs-file-upload-item/bs-file-upload-item.d.ts +58 -0
  314. package/dist/types/components/bs-file-upload-item/bs-file-upload-item.stories.d.ts +18 -0
  315. package/dist/types/components/bs-progress-linear/bs-progress-linear.d.ts +5 -0
  316. package/dist/types/components.d.ts +594 -0
  317. package/dist/types/test/helpers/conventions.d.ts +21 -0
  318. package/dist/types/test/helpers/conventions.unit.test.d.ts +1 -0
  319. package/package.json +4 -2
  320. package/dist/brandsync-wc/p-4df71e00.entry.js +0 -1
  321. package/dist/brandsync-wc/p-dadbb3f1.entry.js +0 -1
@@ -105,7 +105,7 @@ export class BsChatbotResponseAction {
105
105
  };
106
106
  render() {
107
107
  const hasSources = !!this.sourcesCount && this.sourcesCount > 0;
108
- return (h("div", { key: '111e7a42e8fc38d4fd5a816cdfded9eaaa854411', class: "bs-chatbot-response-action" }, h("button", { key: 'def8fd139a1e29cf5410c00227e0f3daa713fe71', type: "button", part: "like", class: "bs-chatbot-response-action__button", "aria-label": "Like", onClick: this.onLikeClick }, h("slot", { key: '78e5c9b817fe4828e2a52cd49474d54400a8e930', name: "like-icon" }, h(ThumbsUpIcon, { key: 'e74d4efb615839af2a1b5b1a0fe739c37f0830ed' }))), h("button", { key: '19a4569619e2f9bcc4058622f5534d5aff1be914', type: "button", part: "dislike", class: "bs-chatbot-response-action__button", "aria-label": "Dislike", onClick: this.onDislikeClick }, h("slot", { key: '0f6fab436dc26c3cd019934cbb99073c0cd2176f', name: "dislike-icon" }, h(ThumbsDownIcon, { key: '000bae3349daf25dd7f2af3b0848461158452e58' }))), h("button", { key: '92e013b636bf8d6a0d316b998e01acb3039f283a', type: "button", part: "copy", class: "bs-chatbot-response-action__button", "aria-label": "Copy", onClick: this.onCopyClick }, h("slot", { key: 'd575f671a480dae59bbefb0a255209a537b24f4d', name: "copy-icon" }, h(CopyIcon, { key: 'becca3443cdd1a6245d84b806f9186da8756bef8' }))), h("button", { key: '3e48fb0dbef6c181fbc1e4800f079786f38f7294', type: "button", part: "regenerate", class: "bs-chatbot-response-action__button", "aria-label": "Regenerate", onClick: this.onRegenerateClick }, h("slot", { key: '2bf713515b8503186d4d17e47ad0a7baf424be00', name: "regenerate-icon" }, h(RegenerateIcon, { key: '86f25451600b70f5d8e7148f5ee46c9c8fda4674' }))), h("div", { key: '3815f620d0ee123aeb23e99d664d40aae2168616', class: "bs-chatbot-response-action__menu-wrapper" }, h("button", { key: 'f53c9236453217611a1b3b3ee195ad9e5d5079e0', type: "button", part: "menu", class: "bs-chatbot-response-action__button", "aria-label": "More options", "aria-haspopup": "menu", "aria-expanded": this.menuOpen ? 'true' : 'false', onClick: this.onMenuClick }, h("slot", { key: 'ac264f44c88115a8dc5d52a5c149ac0981ee0177', name: "menu-icon" }, h(MenuIcon, { key: '66c03b5a3cf26d1f8aebbe93d10ea90ed61277bf' }))), this.menuOpen && (h("div", { key: '004fd6280505e156ff0353714e4d36e3b7273d5e', class: "bs-chatbot-response-action__menu-popup" }, h("slot", { key: '33e54635fe65fe4fb52a0bbd642c822e5a50e9a6', name: "menu" })))), hasSources && (h("button", { key: 'da4095a96f3920f2723f1b84be98f8b31ba55f5a', type: "button", part: "sources", class: "bs-chatbot-response-action__sources", onClick: this.onSourcesClick }, h("slot", { key: 'a7c526dcbfb1037c66830602b0457db0d3f160a1', name: "sources-icon" }, h(SourcesIcon, { key: '4e76ba5f77ddf3ad438f4b537e06caddb0adf613' })), h("span", { key: 'c648b364219f65b63c2abd325a4112c581906b31', class: "bs-chatbot-response-action__sources-label" }, this.sourcesCount, " ", this.sourcesCount === 1 ? 'source' : 'sources')))));
108
+ return (h("div", { key: 'cbd257d7e8028f159bd8034217c3996d44cdf8ff', class: "bs-chatbot-response-action" }, h("button", { key: 'b1727aa3c799a5f7847784bbb5bee5abb9021800', type: "button", part: "like", class: "bs-chatbot-response-action__button", "aria-label": "Like", onClick: this.onLikeClick }, h("slot", { key: 'a39db9d1411f5923415f2f4576d715b7d44f5746', name: "like-icon" }, h(ThumbsUpIcon, { key: 'ad66ffbe937780037b25842da79ed34cede4fb8a' }))), h("button", { key: 'dd3fff82e054acba64d469aa939fe5d9e948ee86', type: "button", part: "dislike", class: "bs-chatbot-response-action__button", "aria-label": "Dislike", onClick: this.onDislikeClick }, h("slot", { key: '4d63753fca15dd1c9def17dd723fdbe549e286ea', name: "dislike-icon" }, h(ThumbsDownIcon, { key: '5985ecd4c1174a1d853dcafd27662eb0065f6a2f' }))), h("button", { key: '9a42c214ad271dd393deb319ae15815297970296', type: "button", part: "copy", class: "bs-chatbot-response-action__button", "aria-label": "Copy", onClick: this.onCopyClick }, h("slot", { key: '9b59e4e174e146e933683cb1e8f5b8887e17171b', name: "copy-icon" }, h(CopyIcon, { key: '73ed83f0056a5acb93ca731a69f5d0d320e2806c' }))), h("button", { key: '435980b95cfd5bd5c0c082520c9d2507357a481f', type: "button", part: "regenerate", class: "bs-chatbot-response-action__button", "aria-label": "Regenerate", onClick: this.onRegenerateClick }, h("slot", { key: '1f536807ea55e6332bb4c98314e747f1ff775ea4', name: "regenerate-icon" }, h(RegenerateIcon, { key: '461ce99ba4bb70ca07810a5883e00d96f6ff3e6c' }))), h("div", { key: '086174d1bc011ad39bf100ffb0ce39b7815c50e2', class: "bs-chatbot-response-action__menu-wrapper" }, h("button", { key: 'd1d52de0d6becf762e7f754f65cbd4430de168aa', type: "button", part: "menu", class: "bs-chatbot-response-action__button", "aria-label": "More options", "aria-haspopup": "menu", "aria-expanded": this.menuOpen ? 'true' : 'false', onClick: this.onMenuClick }, h("slot", { key: 'e70c2b467bb50751afd3b84874b653d1124fc3e5', name: "menu-icon" }, h(MenuIcon, { key: 'b73c887976b2e143638d61c0b9ea41ebb2e388bd' }))), this.menuOpen && (h("div", { key: '18891a0da434a7f50b6050806c2953e5e5e21484', class: "bs-chatbot-response-action__menu-popup" }, h("slot", { key: '288b3280f09def47f5065b4e85e91142ddd3d2a6', name: "menu" })))), hasSources && (h("button", { key: 'cfa661c9c2096975d250aa3a0b28b36ff3a397a1', type: "button", part: "sources", class: "bs-chatbot-response-action__sources", onClick: this.onSourcesClick }, h("slot", { key: 'a7b610479f2efaded9714c2ad75cd1fd168df55b', name: "sources-icon" }, h(SourcesIcon, { key: '49b12b3ab6011131147909158ec88518a86ce706' })), h("span", { key: 'f063468b3e386f1b88d41a668ac470a601322b51', class: "bs-chatbot-response-action__sources-label" }, this.sourcesCount, " ", this.sourcesCount === 1 ? 'source' : 'sources')))));
109
109
  }
110
110
  static get is() { return "bs-chatbot-response-action"; }
111
111
  static get encapsulation() { return "shadow"; }
@@ -57,7 +57,7 @@ export class BsChatbotSourcesDrawer {
57
57
  };
58
58
  render() {
59
59
  const displayCount = this.count ?? this.slottedCount;
60
- return (h("div", { key: '42d5d4160e8c2cac61d124f9359d2f6996658ce1', class: "bs-chatbot-sources-drawer", role: "region", "aria-label": this.heading }, h("div", { key: '81d4a4bef6bdc625d7bcfe57f4338fc97c0403ca', class: "bs-chatbot-sources-drawer__header" }, h("div", { key: 'db44bbebef2b2c59ae1a6755d6dd68ea55b81196', class: "bs-chatbot-sources-drawer__title-group" }, h("h2", { key: '573c29a65b188805621f8eb35d2489987d05451b', part: "heading", class: "bs-chatbot-sources-drawer__heading" }, this.heading), displayCount > 0 && (h("span", { key: '24a009a10e789ea33ad2603dad89ed590564e92b', part: "count", class: "bs-chatbot-sources-drawer__count" }, displayCount))), h("button", { key: '1ba25a50ca7a7910fcac94ff10eeb1a694e2ddd5', type: "button", part: "collapse", class: "bs-chatbot-sources-drawer__collapse", "aria-label": "Collapse sources", onClick: this.onCollapseClick }, h("slot", { key: '7ccaf79b7d19ecf3f6871787a75110304d1a5237', name: "collapse-icon" }, h(CaretRightIcon, { key: 'fde18a59c4e7a9436fe4b1044ae7272eb7ee4d5a' })))), h("div", { key: 'aa70054cb4da766d19f4c646a71bcb4e0d2b4195', part: "list", class: "bs-chatbot-sources-drawer__list" }, h("slot", { key: 'd2bef9a375eccda347f9e26942bb4f33a689933f', onSlotchange: this.onSlotchange }))));
60
+ return (h("div", { key: '124930cad859a46032214d2025a6d0dc0601bd7e', class: "bs-chatbot-sources-drawer", role: "region", "aria-label": this.heading }, h("div", { key: 'edac48bbd2236fc8382595d0bb3fab2029d5471b', class: "bs-chatbot-sources-drawer__header" }, h("div", { key: '67c816b8604c8a7bdba2939162d9296f4213d8d0', class: "bs-chatbot-sources-drawer__title-group" }, h("h2", { key: '998b580f25800c4d25a288c60d78313ebb18ba96', part: "heading", class: "bs-chatbot-sources-drawer__heading" }, this.heading), displayCount > 0 && (h("span", { key: '7f04669f0c8a4df3383f4d37502620cee268249e', part: "count", class: "bs-chatbot-sources-drawer__count" }, displayCount))), h("button", { key: '3e672753a8eb658b5f63878411f4e98b8f0e9aeb', type: "button", part: "collapse", class: "bs-chatbot-sources-drawer__collapse", "aria-label": "Collapse sources", onClick: this.onCollapseClick }, h("slot", { key: '032e644f385e92882837386e02fcf04f4d4f7818', name: "collapse-icon" }, h(CaretRightIcon, { key: 'eed919d8fac971c37c45dbee46c3395e36dbd436' })))), h("div", { key: '7901e0b8eb2c904a779735dc613040bab1cec881', part: "list", class: "bs-chatbot-sources-drawer__list" }, h("slot", { key: '511ac408aae665461103da7b88664636a773f043', onSlotchange: this.onSlotchange }))));
61
61
  }
62
62
  static get is() { return "bs-chatbot-sources-drawer"; }
63
63
  static get encapsulation() { return "shadow"; }
@@ -45,7 +45,7 @@ export class BsChatbotSuggestionButton {
45
45
  this.bsSelect.emit();
46
46
  };
47
47
  render() {
48
- return (h("button", { key: 'fe0298f0e80e18da93468635ab1263a243700fe9', type: "button", part: "button", class: "bs-chatbot-suggestion-button", disabled: this.disabled, onClick: this.onClick }, h("slot", { key: '0fcc15a4165b0e2c7b990adbb061d2fb54378c82' })));
48
+ return (h("button", { key: 'ae54b5a19bb4ad4d215c34df56018f49fd1907a9', type: "button", part: "button", class: "bs-chatbot-suggestion-button", disabled: this.disabled, onClick: this.onClick }, h("slot", { key: '950eefcbff22f6f09547b805bb72b6bc7599d060' })));
49
49
  }
50
50
  static get is() { return "bs-chatbot-suggestion-button"; }
51
51
  static get encapsulation() { return "shadow"; }
@@ -33,7 +33,7 @@ export class BsCheckboxSkeleton {
33
33
  * (unusual) default `bs-checkbox` itself uses. */
34
34
  size = 'lg';
35
35
  render() {
36
- return (h("span", { key: '50a436a6ede8ae40310191029037b3be08981fba', part: "container", class: "bs-checkbox-skeleton", role: "status", "aria-label": "Loading" }, h("span", { key: 'f76fc56bb1e6fea2bd6a4fc41c336930c2b23044', part: "box", class: `bs-checkbox-skeleton__box bs-checkbox-skeleton__box--${this.size}` }), h("span", { key: 'd80b2ac1c5b9eba7a8b150a0e344909a46b18c39', part: "label", class: "bs-checkbox-skeleton__label" })));
36
+ return (h("span", { key: '8797658f07231a6da75540109d31a0046e87391e', part: "container", class: "bs-checkbox-skeleton", role: "status", "aria-label": "Loading" }, h("span", { key: '5476c7e0b6fbfa41c2b9aabe64452665841c516d', part: "box", class: `bs-checkbox-skeleton__box bs-checkbox-skeleton__box--${this.size}` }), h("span", { key: 'f0d9bf8dee42ce498f8f627ed5a536e0ec8029c4', part: "label", class: "bs-checkbox-skeleton__label" })));
37
37
  }
38
38
  static get is() { return "bs-checkbox-skeleton"; }
39
39
  static get encapsulation() { return "shadow"; }
@@ -92,7 +92,7 @@ export class BsCheckbox {
92
92
  ]
93
93
  .filter(Boolean)
94
94
  .join(' ');
95
- return (h("label", { key: '0c4ef7d5dc0c10a76382a25f503e50a9698f74b0', class: `bs-checkbox ${this.disabled ? 'bs-checkbox--disabled' : ''}` }, h("input", { key: '1bcbe7899e41e5c4bb1a09602eec0f852ae4a2e7', ref: el => (this.inputEl = el), class: "bs-checkbox__input", type: "checkbox", checked: this.checked, disabled: this.disabled, "aria-checked": this.indeterminate ? 'mixed' : String(this.checked), "aria-label": this.ariaLabel, onChange: this.onChange }), h("span", { key: 'e7f5d9b4374aa6c718a76353a6671878564d366e', part: "box", class: boxClasses }, showIcon && (h("svg", { key: 'c73163dcba81418174924221259b1ab37cb0a2e8', part: "icon", class: "bs-checkbox__icon", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, this.indeterminate ? (h("path", { d: "M3 8H13", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" })) : (h("path", { d: "M3 8.5L6.2 11.5L13 4.5", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))))), h("span", { key: '3511affcb7f222032c726591a6f35c15cbcb3225', part: "label", class: "bs-checkbox__label" }, h("slot", { key: '1103d622b8d1295d9e82a63660cb6ab0939c6edf' }))));
95
+ return (h("label", { key: '9e2bdce74ff8d1fb74fe4cab1a42259b24ccd579', class: `bs-checkbox ${this.disabled ? 'bs-checkbox--disabled' : ''}` }, h("input", { key: '63f6c1390851acfb0c1692eaacc60ee460cd4ec7', ref: el => (this.inputEl = el), class: "bs-checkbox__input", type: "checkbox", checked: this.checked, disabled: this.disabled, "aria-checked": this.indeterminate ? 'mixed' : String(this.checked), "aria-label": this.ariaLabel, onChange: this.onChange }), h("span", { key: '7feb1d3c1f4df28630a00bc270385b869d6981ab', part: "box", class: boxClasses }, showIcon && (h("svg", { key: '458f2fc8694f6da74cc6116a5388f15ced2e7f77', part: "icon", class: "bs-checkbox__icon", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, this.indeterminate ? (h("path", { d: "M3 8H13", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" })) : (h("path", { d: "M3 8.5L6.2 11.5L13 4.5", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))))), h("span", { key: 'f72ec816bd8338412579ae32c3d1b8282f177837', part: "label", class: "bs-checkbox__label" }, h("slot", { key: 'f12afc3bbef5728df6385703be048ee9f0275e8b' }))));
96
96
  }
97
97
  static get is() { return "bs-checkbox"; }
98
98
  static get encapsulation() { return "shadow"; }
@@ -118,7 +118,7 @@ export class BsCheckbox {
118
118
  "references": {
119
119
  "BsCheckboxSize": {
120
120
  "location": "local",
121
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-checkbox/bs-checkbox.tsx",
121
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-checkbox/bs-checkbox.tsx",
122
122
  "id": "src/components/bs-checkbox/bs-checkbox.tsx::BsCheckboxSize"
123
123
  }
124
124
  }
@@ -70,7 +70,7 @@ export class BsChipFilter {
70
70
  // label-only edge gets more -- except when NEITHER edge has a glyph, where both edges use a
71
71
  // third, larger value rather than the label-only one (see bs-chip-filter.css's own comment).
72
72
  const paddingVariant = this.hasIcon && this.dropdown ? 'icon-dropdown' : this.hasIcon ? 'icon-only' : this.dropdown ? 'dropdown-only' : 'text-only';
73
- return (h("button", { key: '4cc3cc573ec2a0f742a5ba5e76a8f5dee7eb0997', type: "button", class: `bs-chip-filter bs-chip-filter--${this.size} bs-chip-filter--${paddingVariant} ${this.selected ? 'bs-chip-filter--selected' : ''}`, disabled: this.disabled, "aria-pressed": String(this.selected), "aria-label": this.ariaLabel, onClick: this.onClick }, h("span", { key: '6767cb949257461abde1872ef35d5551fe86017b', part: "icon", class: `bs-chip-filter__icon ${this.hasIcon ? 'bs-chip-filter__icon--visible' : ''}` }, h("slot", { key: 'a106df348c1078bbd73c062d6217d3467327664a', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'bf1007a48f1bdfa2ddcf5df9eddee84b276f3494', part: "label", class: "bs-chip-filter__label" }, h("slot", { key: '1f23a2853946b770f76683dae314263cc4f3c5b2' })), this.dropdown && (h("span", { key: '483fb2cabd9dfc930fa44ee626a4532f5fec4cc3', part: "caret", class: "bs-chip-filter__caret", "aria-hidden": "true" }, h(ChevronDownIcon, { key: '8197912443813d3d3e7c705e303301a993bb2ce1' })))));
73
+ return (h("button", { key: 'c1b7395764984baadd0d32d5bd6a3d8d61cb637a', type: "button", class: `bs-chip-filter bs-chip-filter--${this.size} bs-chip-filter--${paddingVariant} ${this.selected ? 'bs-chip-filter--selected' : ''}`, disabled: this.disabled, "aria-pressed": String(this.selected), "aria-label": this.ariaLabel, onClick: this.onClick }, h("span", { key: 'db74ff2a992268bb95564dc1631e54d00208255f', part: "icon", class: `bs-chip-filter__icon ${this.hasIcon ? 'bs-chip-filter__icon--visible' : ''}` }, h("slot", { key: '9319387acc35131d0555f9ad84c1f733034920d7', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '06291c8712d77d43c3c823e4b90d99218618db35', part: "label", class: "bs-chip-filter__label" }, h("slot", { key: '3c72fcc1085239ba9c45ee6e89f5b8e8b4cc0ce8' })), this.dropdown && (h("span", { key: 'd2efca03ed06d2341aec986cca2c0d27bdce5a75', part: "caret", class: "bs-chip-filter__caret", "aria-hidden": "true" }, h(ChevronDownIcon, { key: '8bb9383201632e567f662909559702fcf391790e' })))));
74
74
  }
75
75
  static get is() { return "bs-chip-filter"; }
76
76
  static get encapsulation() { return "shadow"; }
@@ -96,7 +96,7 @@ export class BsChipFilter {
96
96
  "references": {
97
97
  "BsChipFilterSize": {
98
98
  "location": "local",
99
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-chip/bs-chip-filter/bs-chip-filter.tsx",
99
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-chip/bs-chip-filter/bs-chip-filter.tsx",
100
100
  "id": "src/components/bs-chip/bs-chip-filter/bs-chip-filter.tsx::BsChipFilterSize"
101
101
  }
102
102
  }
@@ -44,7 +44,7 @@ export class BsChipInformative {
44
44
  };
45
45
  render() {
46
46
  const paddingVariant = this.hasIcon ? 'icon' : 'text';
47
- return (h(Host, { key: '099676c8f874c17836d65797d10683fa1184043b', class: `bs-chip-informative bs-chip-informative--${this.color} bs-chip-informative--${this.size} bs-chip-informative--${paddingVariant}` }, h("span", { key: 'ff570bf489c3a8ea8350bc550e720bfcdc5d4bdf', part: "icon", class: `bs-chip-informative__icon ${this.hasIcon ? 'bs-chip-informative__icon--visible' : ''}` }, h("slot", { key: '170e80a2665111b2a6212088b58a7c2c1008110a', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'd87cd059d67b8d56d04bc7e9f39d3ab497e49f8a', part: "label", class: "bs-chip-informative__label" }, h("slot", { key: '983e6f32115957222a078f91683bc5f59aefe185' }))));
47
+ return (h(Host, { key: 'ee5706f8c040b01f97e44b9dba4d74a3b023005c', class: `bs-chip-informative bs-chip-informative--${this.color} bs-chip-informative--${this.size} bs-chip-informative--${paddingVariant}` }, h("span", { key: '611cc7bec3b22cc2e7de25fc8aa49e8d4eca3cba', part: "icon", class: `bs-chip-informative__icon ${this.hasIcon ? 'bs-chip-informative__icon--visible' : ''}` }, h("slot", { key: '5945478d567c7b6a6e4ff602c2edd6465d3b7778', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '7e78fb0f2e5cfc2d232aa04f0c9edf94044f8eca', part: "label", class: "bs-chip-informative__label" }, h("slot", { key: 'fcec1018222e0da3f0adc6da13e0699c0bad764b' }))));
48
48
  }
49
49
  static get is() { return "bs-chip-informative"; }
50
50
  static get encapsulation() { return "shadow"; }
@@ -69,7 +69,7 @@ export class BsChipInformative {
69
69
  "references": {
70
70
  "BsChipInformativeColor": {
71
71
  "location": "local",
72
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-chip/bs-chip-informative/bs-chip-informative.tsx",
72
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-chip/bs-chip-informative/bs-chip-informative.tsx",
73
73
  "id": "src/components/bs-chip/bs-chip-informative/bs-chip-informative.tsx::BsChipInformativeColor"
74
74
  }
75
75
  }
@@ -95,7 +95,7 @@ export class BsChipInformative {
95
95
  "references": {
96
96
  "BsChipInformativeSize": {
97
97
  "location": "local",
98
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-chip/bs-chip-informative/bs-chip-informative.tsx",
98
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-chip/bs-chip-informative/bs-chip-informative.tsx",
99
99
  "id": "src/components/bs-chip/bs-chip-informative/bs-chip-informative.tsx::BsChipInformativeSize"
100
100
  }
101
101
  }
@@ -77,7 +77,7 @@ export class BsChipInput {
77
77
  };
78
78
  render() {
79
79
  const paddingVariant = this.hasIcon ? 'icon' : 'text';
80
- return (h(Host, { key: '3e0b49c24f5f2c696c4b28fbdddf3abb5cbb54f4', class: `bs-chip-input bs-chip-input--${this.size} bs-chip-input--${paddingVariant}` }, h("button", { key: '3bb4e5e2cdea9cb828d2f3efe0a1f7e6e199ea13', type: "button", part: "body", class: "bs-chip-input__body", disabled: this.disabled, "aria-pressed": String(this.selected), onClick: this.onBodyClick }, h("span", { key: 'a8845467b470c0f0bb1f48a588f6b10c34c48aea', part: "icon", class: `bs-chip-input__icon ${this.hasIcon ? 'bs-chip-input__icon--visible' : ''}` }, h("slot", { key: '80f2daa48102e47dff6a1c37f36058f1a7825d0f', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'abc1a83bac760ac9cc993cfa46e08b67b543c7e0', part: "label", class: "bs-chip-input__label" }, h("slot", { key: 'cf2914c6ec7096fb4c6182f22457790b6b581da9', onSlotchange: this.onLabelSlotchange }))), h("button", { key: '2db0595805b4c1faf61f8c15c8bede6d5d59d6ae', type: "button", part: "remove", class: "bs-chip-input__remove", disabled: this.disabled, "aria-label": `Remove ${this.labelText}`, onClick: this.onRemoveClick }, h(CloseIcon, { key: '24df652ec4dd9ac7dcdc203d5fd1584e8dd5556c' }))));
80
+ return (h(Host, { key: 'bb8adc7ac62df562155d169a119d0bf3100f4c9f', class: `bs-chip-input bs-chip-input--${this.size} bs-chip-input--${paddingVariant}` }, h("button", { key: '92a509d98f93873738bed6db0fe0d5dc5bb9a7e4', type: "button", part: "body", class: "bs-chip-input__body", disabled: this.disabled, "aria-pressed": String(this.selected), onClick: this.onBodyClick }, h("span", { key: '179d8713dd8be5a8340848eddb1de24ce7561d09', part: "icon", class: `bs-chip-input__icon ${this.hasIcon ? 'bs-chip-input__icon--visible' : ''}` }, h("slot", { key: '0b47b10606ef75c91b5374dc0032772993419ede', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'c2b678ecd9863d53c5ab52bd257122f298aafa62', part: "label", class: "bs-chip-input__label" }, h("slot", { key: '806fb8ea8e284a80d5faeef4905d1758c66f3ef0', onSlotchange: this.onLabelSlotchange }))), h("button", { key: 'a61df73d4a372dd0dce8b045feb6180853c209d2', type: "button", part: "remove", class: "bs-chip-input__remove", disabled: this.disabled, "aria-label": `Remove ${this.labelText}`, onClick: this.onRemoveClick }, h(CloseIcon, { key: '6e14762d31caae9473603449dd47a158859d28f6' }))));
81
81
  }
82
82
  static get is() { return "bs-chip-input"; }
83
83
  static get encapsulation() { return "shadow"; }
@@ -103,7 +103,7 @@ export class BsChipInput {
103
103
  "references": {
104
104
  "BsChipInputSize": {
105
105
  "location": "local",
106
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-chip/bs-chip-input/bs-chip-input.tsx",
106
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-chip/bs-chip-input/bs-chip-input.tsx",
107
107
  "id": "src/components/bs-chip/bs-chip-input/bs-chip-input.tsx::BsChipInputSize"
108
108
  }
109
109
  }
@@ -206,7 +206,7 @@ export class BsComposer {
206
206
  const placeholder = this.placeholder ?? DEFAULT_PLACEHOLDERS[this.variant];
207
207
  const disabled = this.state === 'disabled';
208
208
  const recording = this.state === 'recording';
209
- return (h("div", { key: '80b15558a6c64dad187e5f83ff969f0ce738c959', class: `bs-composer bs-composer--${this.state} bs-composer--${this.variant}` }, h("div", { key: 'e29e99d27f37a1ed12d5a648615fe904aab3d850', part: "attachments", class: `bs-composer__attachments-row ${this.hasAttachments ? 'bs-composer__attachments-row--visible' : ''}` }, h("slot", { key: '3b83ae56fceeed1221beab79a739ee59cb35db71', name: "attachments", onSlotchange: this.onAttachmentsSlotchange })), h("div", { key: 'aa087015ad3a0ecec2f5fd7142633e12a00fc2cc', class: "bs-composer__text-row" }, h("textarea", { key: '695417d0ea46dd9016a27f967bb1ac4cff28531e', ref: el => (this.inputEl = el), part: "input", class: "bs-composer__input", rows: 1, value: this.value, placeholder: placeholder, disabled: disabled, "aria-label": this.ariaLabel, onInput: this.onInput, onKeyDown: this.onInputKeydown })), h("div", { key: '3087c098baef6f6a5886b23e2c6e54b71dce6923', class: "bs-composer__controls-row" }, h("button", { key: '75c132d161e468a999c72a96c88356473e760650', type: "button", part: "attach", class: "bs-composer__attach", "aria-label": "Attach", onClick: this.onAttachClick }, h(PlusIcon, { key: 'c7ff05366636234093b94a3e6f8980772444c546' })), recording ? (h("span", { class: "bs-composer__waveform", "aria-hidden": "true" }, WAVEFORM_BAR_HEIGHTS.map(height => (h("span", { class: "bs-composer__waveform-bar", style: { '--bs-composer-bar-height': `${height}px` } }))))) : (h("span", { class: "bs-composer__spacer" })), h("button", { key: '5aadfaad74e8fa0c612be85a79a8ecaff851f06b', type: "button", part: "mic", class: `bs-composer__mic ${recording ? 'bs-composer__mic--recording' : ''}`, "aria-label": recording ? 'Stop recording' : 'Start voice input', disabled: disabled, onClick: this.onMicClick }, recording ? h(StopIcon, null) : h(MicIcon, null)), h("button", { key: '1c7922626005c71fdef12adb12d7413c983df7d7', type: "button", part: "action", class: `bs-composer__action bs-composer__action--${this.state}`, "aria-label": this.actionLabel(), disabled: disabled, onClick: this.onActionClick }, this.renderActionIcon()), h("slot", { key: 'd38d63ecf9dd3c7ce7df06cec854ff5ae92b1077', name: "actions-end" }))));
209
+ return (h("div", { key: '8313dc19fa583114e96203cb07be9ac114afe6f2', class: `bs-composer bs-composer--${this.state} bs-composer--${this.variant}` }, h("div", { key: '2aaef774ce964d33342bce9126c4537dd8c3f844', part: "attachments", class: `bs-composer__attachments-row ${this.hasAttachments ? 'bs-composer__attachments-row--visible' : ''}` }, h("slot", { key: 'fd673d9316b78516f3b828585a264005306c42f2', name: "attachments", onSlotchange: this.onAttachmentsSlotchange })), h("div", { key: 'b3dbfc51f3451ae573443865487b6cd5cf20edb3', class: "bs-composer__text-row" }, h("textarea", { key: '10318ae3174f0491ead324fec41a12cc5135407a', ref: el => (this.inputEl = el), part: "input", class: "bs-composer__input", rows: 1, value: this.value, placeholder: placeholder, disabled: disabled, "aria-label": this.ariaLabel, onInput: this.onInput, onKeyDown: this.onInputKeydown })), h("div", { key: 'e298d4239e7868c97599c430397e8dedde4926c2', class: "bs-composer__controls-row" }, h("button", { key: 'a39c4810329fe7e198645e5e0ab29003916dd6d8', type: "button", part: "attach", class: "bs-composer__attach", "aria-label": "Attach", onClick: this.onAttachClick }, h(PlusIcon, { key: '9d58e6a54c91eb6d2c658ee203eb6ae37eeabea5' })), recording ? (h("span", { class: "bs-composer__waveform", "aria-hidden": "true" }, WAVEFORM_BAR_HEIGHTS.map(height => (h("span", { class: "bs-composer__waveform-bar", style: { '--bs-composer-bar-height': `${height}px` } }))))) : (h("span", { class: "bs-composer__spacer" })), h("button", { key: '21f7f81e1273b240dc0bb35f96dac43976d76672', type: "button", part: "mic", class: `bs-composer__mic ${recording ? 'bs-composer__mic--recording' : ''}`, "aria-label": recording ? 'Stop recording' : 'Start voice input', disabled: disabled, onClick: this.onMicClick }, recording ? h(StopIcon, null) : h(MicIcon, null)), h("button", { key: '76f9d399d49c5f7248770a5a2845a2ab8b2e26e1', type: "button", part: "action", class: `bs-composer__action bs-composer__action--${this.state}`, "aria-label": this.actionLabel(), disabled: disabled, onClick: this.onActionClick }, this.renderActionIcon()), h("slot", { key: '4de2116117e03382f89c1a409fcb2ecb38aa89ff', name: "actions-end" }))));
210
210
  }
211
211
  static get is() { return "bs-composer"; }
212
212
  static get encapsulation() { return "shadow"; }
@@ -232,7 +232,7 @@ export class BsComposer {
232
232
  "references": {
233
233
  "BsComposerVariant": {
234
234
  "location": "local",
235
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-composer/bs-composer.tsx",
235
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-composer/bs-composer.tsx",
236
236
  "id": "src/components/bs-composer/bs-composer.tsx::BsComposerVariant"
237
237
  }
238
238
  }
@@ -297,7 +297,7 @@ export class BsComposer {
297
297
  "references": {
298
298
  "BsComposerState": {
299
299
  "location": "local",
300
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-composer/bs-composer.tsx",
300
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-composer/bs-composer.tsx",
301
301
  "id": "src/components/bs-composer/bs-composer.tsx::BsComposerState"
302
302
  }
303
303
  }
@@ -106,7 +106,7 @@ export class BsComposerStatusBanner {
106
106
  return this.type === 'error' || this.type === 'warning' ? h(WarningIcon, null) : h(ClockIcon, null);
107
107
  }
108
108
  render() {
109
- return (h("div", { key: '237f3ec194ddb9057b1b0773e4a8062a9e58f457', role: this.roleForType(), class: `bs-composer-status-banner bs-composer-status-banner--${this.type}` }, h("div", { key: '6a1fadb9f08f2ce383216a750743321383528649', class: "bs-composer-status-banner__message-group" }, this.showIcon && (h("span", { key: '54dc45c13ab939249e66754389323d857d191bb5', part: "icon", class: "bs-composer-status-banner__icon" }, h("slot", { key: '023ee815d57914a9f46b39b5253229e3a89c1f2d', name: "icon" }, this.renderDefaultIcon()))), h("p", { key: '3bf23bc657922338767dcc63da4236469ff2c3f0', part: "message", class: "bs-composer-status-banner__message" }, this.message)), this.showButton && (h("button", { key: 'efb2fcc8eb96388b395275c39021fa718f08ae2b', type: "button", part: "action", class: "bs-composer-status-banner__action", onClick: this.onActionClick }, this.actionLabel)), this.allowClose && (h("button", { key: 'f97e8fba154e5bcc7e9778b2f31f136ca81a7d94', type: "button", part: "close", class: "bs-composer-status-banner__close", "aria-label": "Dismiss", onClick: this.onCloseClick }, h(CloseIcon, { key: 'eb56b6b6a2fddac3e13eac6db129f0da3572e8ec' })))));
109
+ return (h("div", { key: '9e0569099d74f708f475b502625a2fd000cbbbf5', role: this.roleForType(), class: `bs-composer-status-banner bs-composer-status-banner--${this.type}` }, h("div", { key: '8d6de7446b8bb53bc45ab9d4f110963425559f50', class: "bs-composer-status-banner__message-group" }, this.showIcon && (h("span", { key: '6f9964755ae030e577b356290ad2d972e024ace1', part: "icon", class: "bs-composer-status-banner__icon" }, h("slot", { key: '56d50ba748d0ad4cbcbcd73a6f4b8cb1a50613b8', name: "icon" }, this.renderDefaultIcon()))), h("p", { key: 'fed8249da75a688b2f125e5f9ca1787dc885b891', part: "message", class: "bs-composer-status-banner__message" }, this.message)), this.showButton && (h("button", { key: '48eb50ca73f76bfd404bbd5b2a7bce3ced2da7ac', type: "button", part: "action", class: "bs-composer-status-banner__action", onClick: this.onActionClick }, this.actionLabel)), this.allowClose && (h("button", { key: 'f644669b00b8077b36ba9eb88ffffaba0e675fb4', type: "button", part: "close", class: "bs-composer-status-banner__close", "aria-label": "Dismiss", onClick: this.onCloseClick }, h(CloseIcon, { key: '3b42ae94449658eae8e9af5617abc3268c215325' })))));
110
110
  }
111
111
  static get is() { return "bs-composer-status-banner"; }
112
112
  static get encapsulation() { return "shadow"; }
@@ -131,7 +131,7 @@ export class BsComposerStatusBanner {
131
131
  "references": {
132
132
  "BsComposerStatusBannerType": {
133
133
  "location": "local",
134
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-composer-status-banner/bs-composer-status-banner.tsx",
134
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-composer-status-banner/bs-composer-status-banner.tsx",
135
135
  "id": "src/components/bs-composer-status-banner/bs-composer-status-banner.tsx::BsComposerStatusBannerType"
136
136
  }
137
137
  }
@@ -71,11 +71,11 @@ export class BsDataTable {
71
71
  }
72
72
  }
73
73
  render() {
74
- return (h("table", { key: '0b894a3cac62202447a21d4dd982236ef60b4ed0', part: "table", class: "bs-data-table" }, h("thead", { key: '9af94643a3cd4702a7b6fcbe2f713a3fea6773a9', part: "head" }, h("tr", { key: '3f5680cea9daeecf078a11d19f7a77f3e4de3145' }, this.selectable && (h("th", { key: '053da4081fdd79727c5cee13f11f725e4b92e1cb', class: "bs-data-table__select-col" }, this.rows.length > 0 && (h("input", { key: 'd45b4e81976dca3fc114c9685deb53e0f27ec8f5', type: "checkbox", "aria-label": "Select all rows", checked: this.selectedIds.size > 0 && this.selectedIds.size === this.rows.length, indeterminate: this.selectedIds.size > 0 && this.selectedIds.size < this.rows.length, onChange: this.onSelectAllChange })))), this.columns.map(column => {
74
+ return (h("table", { key: 'a1a9d0c92eb2af12f8f9cab9ba4ae0994a10958a', part: "table", class: "bs-data-table" }, h("thead", { key: '2b51500b221465d750b55c31e00af94684367eb2', part: "head" }, h("tr", { key: '57aa25ca9b255213f155b5b30841e284d1eebaf8' }, this.selectable && (h("th", { key: '44b709a7cd1f2072934efe8fef44a63b2ed20d62', class: "bs-data-table__select-col" }, this.rows.length > 0 && (h("input", { key: '084d099453c53333d77c60786b7eb6bedfa21ef3', type: "checkbox", "aria-label": "Select all rows", checked: this.selectedIds.size > 0 && this.selectedIds.size === this.rows.length, indeterminate: this.selectedIds.size > 0 && this.selectedIds.size < this.rows.length, onChange: this.onSelectAllChange })))), this.columns.map(column => {
75
75
  const isSorted = this.sortColumn === column.key;
76
76
  const ariaSort = column.sortable ? (isSorted ? (this.sortDirection === 'asc' ? 'ascending' : 'descending') : 'none') : undefined;
77
77
  return (h("th", { part: "header-cell", class: "bs-data-table__header-cell", "aria-sort": ariaSort }, column.sortable ? (h("button", { type: "button", class: "bs-data-table__sort-button", onClick: () => this.onHeaderClick(column) }, column.label, isSorted && h("span", { class: "bs-data-table__sort-indicator" }, this.sortDirection === 'asc' ? ' ▲' : ' ▼'))) : (column.label)));
78
- }))), h("tbody", { key: '8d3183f03ef2a4f39e8f4f8cdad66c8c57df5dca', part: "body" }, this.rows.map(row => (h("tr", { part: "row", class: "bs-data-table__row" }, this.selectable && (h("td", { class: "bs-data-table__select-col" }, h("input", { type: "checkbox", checked: this.selectedIds.has(row.id), onChange: ev => this.onRowCheckboxChange(row, ev) }))), this.columns.map(column => this.cellRenderer ? (
78
+ }))), h("tbody", { key: '0438897652b9f8909ff67ae9f7b22d0950f1e5e8', part: "body" }, this.rows.map(row => (h("tr", { part: "row", class: "bs-data-table__row" }, this.selectable && (h("td", { class: "bs-data-table__select-col" }, h("input", { type: "checkbox", checked: this.selectedIds.has(row.id), onChange: ev => this.onRowCheckboxChange(row, ev) }))), this.columns.map(column => this.cellRenderer ? (
79
79
  // cellRenderer is a developer-supplied, trusted function (JS-property-only, never
80
80
  // derived from untrusted input) -- its HTML output is intentionally not escaped,
81
81
  // same trust model as React's dangerouslySetInnerHTML.
@@ -107,7 +107,7 @@ export class BsDataTable {
107
107
  "references": {
108
108
  "BsDataTableColumn": {
109
109
  "location": "local",
110
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-data-table/bs-data-table.tsx",
110
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-data-table/bs-data-table.tsx",
111
111
  "id": "src/components/bs-data-table/bs-data-table.tsx::BsDataTableColumn"
112
112
  }
113
113
  }
@@ -131,7 +131,7 @@ export class BsDataTable {
131
131
  "references": {
132
132
  "BsDataTableRow": {
133
133
  "location": "local",
134
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-data-table/bs-data-table.tsx",
134
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-data-table/bs-data-table.tsx",
135
135
  "id": "src/components/bs-data-table/bs-data-table.tsx::BsDataTableRow"
136
136
  }
137
137
  }
@@ -214,12 +214,12 @@ export class BsDataTable {
214
214
  "references": {
215
215
  "BsDataTableRow": {
216
216
  "location": "local",
217
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-data-table/bs-data-table.tsx",
217
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-data-table/bs-data-table.tsx",
218
218
  "id": "src/components/bs-data-table/bs-data-table.tsx::BsDataTableRow"
219
219
  },
220
220
  "BsDataTableColumn": {
221
221
  "location": "local",
222
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-data-table/bs-data-table.tsx",
222
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-data-table/bs-data-table.tsx",
223
223
  "id": "src/components/bs-data-table/bs-data-table.tsx::BsDataTableColumn"
224
224
  }
225
225
  }
@@ -198,7 +198,7 @@ export class BsDialog {
198
198
  "references": {
199
199
  "BsDialogSize": {
200
200
  "location": "local",
201
- "path": "/home/runner/work/Brandsync-webcomponents/Brandsync-webcomponents/packages/wc/src/components/bs-dialog/bs-dialog.tsx",
201
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-dialog/bs-dialog.tsx",
202
202
  "id": "src/components/bs-dialog/bs-dialog.tsx::BsDialogSize"
203
203
  }
204
204
  }
@@ -0,0 +1,119 @@
1
+ import { render, h, describe, it, expect } from "@stencil/vitest";
2
+ import { assertShadowParts, runAxeCheck } from "../../test/helpers/conventions";
3
+ const file = (name, type) => new File(['x'], name, { type });
4
+ const dt = (...files) => {
5
+ const d = new DataTransfer();
6
+ files.forEach(f => d.items.add(f));
7
+ return d;
8
+ };
9
+ const drop = (el, ...files) => el.dispatchEvent(new DragEvent('drop', { dataTransfer: dt(...files), bubbles: true, cancelable: true, composed: true }));
10
+ const zone = (root) => root.shadowRoot.querySelector('[part="dropzone"]');
11
+ const input = (root) => root.shadowRoot.querySelector('input[type="file"]');
12
+ describe('bs-file-upload', () => {
13
+ it('has no axe-core violations (both directions)', async () => {
14
+ for (const direction of ['horizontal', 'vertical']) {
15
+ const { root } = await render(h("bs-file-upload", { direction: direction, heading: "Upload documents", description: "PDF, up to 8MB" }));
16
+ await runAxeCheck(root);
17
+ }
18
+ });
19
+ it('exposes its documented shadow parts', async () => {
20
+ const { root } = await render(h("bs-file-upload", { heading: "H", description: "D" }));
21
+ assertShadowParts(root.shadowRoot, ['dropzone', 'icon', 'heading', 'description', 'browse']);
22
+ });
23
+ it('renders the heading, description and the Browse file button', async () => {
24
+ const { root } = await render(h("bs-file-upload", { heading: "Upload", description: "Guidelines" }));
25
+ expect(root.shadowRoot.querySelector('[part="heading"]').textContent).toBe('Upload');
26
+ expect(root.shadowRoot.querySelector('[part="description"]').textContent).toBe('Guidelines');
27
+ expect(root.shadowRoot.querySelector('[part="browse"]').textContent).toBe('Browse file');
28
+ });
29
+ it('buttonLabel overrides the browse button text', async () => {
30
+ const { root } = await render(h("bs-file-upload", { buttonLabel: "V\u00E6lg fil" }));
31
+ expect(root.shadowRoot.querySelector('[part="browse"]').textContent).toBe('Vælg fil');
32
+ });
33
+ it('pressing Browse opens the native file picker', async () => {
34
+ const { root } = await render(h("bs-file-upload", null));
35
+ let clicked = 0;
36
+ input(root).addEventListener('click', () => clicked++);
37
+ root.shadowRoot.querySelector('[part="browse"]').shadowRoot.querySelector('button').click();
38
+ expect(clicked).toBe(1);
39
+ });
40
+ it('picking files through the input emits bsFilesSelect', async () => {
41
+ const { root, waitForChanges, spyOnEvent } = await render(h("bs-file-upload", { multiple: true }));
42
+ const spy = spyOnEvent('bsFilesSelect');
43
+ input(root).files = dt(file('a.pdf', 'application/pdf'), file('b.png', 'image/png')).files;
44
+ input(root).dispatchEvent(new Event('change', { bubbles: true }));
45
+ await waitForChanges();
46
+ expect(spy).toHaveReceivedEventTimes(1);
47
+ expect(spy.lastEvent.detail.map((f) => f.name)).toEqual(['a.pdf', 'b.png']);
48
+ });
49
+ it('dropping files emits bsFilesSelect', async () => {
50
+ const { root, spyOnEvent } = await render(h("bs-file-upload", { multiple: true }));
51
+ const spy = spyOnEvent('bsFilesSelect');
52
+ drop(zone(root), file('a.pdf', 'application/pdf'));
53
+ expect(spy.lastEvent.detail.map((f) => f.name)).toEqual(['a.pdf']);
54
+ });
55
+ it('without multiple, only the first file is taken and the rest are rejected', async () => {
56
+ const { root, spyOnEvent } = await render(h("bs-file-upload", null));
57
+ const select = spyOnEvent('bsFilesSelect');
58
+ const reject = spyOnEvent('bsFilesReject');
59
+ drop(zone(root), file('a.pdf', 'application/pdf'), file('b.pdf', 'application/pdf'));
60
+ expect(select.lastEvent.detail.map((f) => f.name)).toEqual(['a.pdf']);
61
+ expect(reject.lastEvent.detail.map((f) => f.name)).toEqual(['b.pdf']);
62
+ });
63
+ it('accept filters dropped files (extensions, MIME types and wildcards) and rejects the rest', async () => {
64
+ const { root, spyOnEvent } = await render(h("bs-file-upload", { multiple: true, accept: ".pdf, image/*, text/csv" }));
65
+ const select = spyOnEvent('bsFilesSelect');
66
+ const reject = spyOnEvent('bsFilesReject');
67
+ drop(zone(root), file('a.PDF', ''), file('b.png', 'image/png'), file('c.csv', 'text/csv'), file('d.exe', 'application/octet-stream'));
68
+ expect(select.lastEvent.detail.map((f) => f.name)).toEqual(['a.PDF', 'b.png', 'c.csv']);
69
+ expect(reject.lastEvent.detail.map((f) => f.name)).toEqual(['d.exe']);
70
+ });
71
+ it('passes accept/multiple to the native input', async () => {
72
+ const { root } = await render(h("bs-file-upload", { accept: ".pdf", multiple: true }));
73
+ expect(input(root).accept).toBe('.pdf');
74
+ expect(input(root).multiple).toBe(true);
75
+ });
76
+ it('shows the Drop state while dragging over and clears it on drop and on leaving', async () => {
77
+ const { root, waitForChanges } = await render(h("bs-file-upload", null));
78
+ const host = root;
79
+ zone(root).dispatchEvent(new DragEvent('dragover', { bubbles: true, cancelable: true, dataTransfer: dt() }));
80
+ await waitForChanges();
81
+ expect(host.dragging).toBe(true);
82
+ expect(zone(root)).toHaveClass('bs-file-upload--dragging');
83
+ zone(root).dispatchEvent(new DragEvent('dragleave', { bubbles: true, relatedTarget: document.body }));
84
+ await waitForChanges();
85
+ expect(host.dragging).toBe(false);
86
+ zone(root).dispatchEvent(new DragEvent('dragover', { bubbles: true, cancelable: true, dataTransfer: dt() }));
87
+ drop(zone(root), file('a.pdf', 'application/pdf'));
88
+ await waitForChanges();
89
+ expect(host.dragging).toBe(false);
90
+ });
91
+ it('dragleave between its own children does not clear the Drop state', async () => {
92
+ const { root, waitForChanges } = await render(h("bs-file-upload", { heading: "H" }));
93
+ const host = root;
94
+ zone(root).dispatchEvent(new DragEvent('dragover', { bubbles: true, cancelable: true, dataTransfer: dt() }));
95
+ zone(root).dispatchEvent(new DragEvent('dragleave', { bubbles: true, relatedTarget: root.shadowRoot.querySelector('[part="heading"]') }));
96
+ await waitForChanges();
97
+ expect(host.dragging).toBe(true);
98
+ });
99
+ it('disabled: ignores drops, never enters the Drop state, and disables the button and input', async () => {
100
+ const { root, waitForChanges, spyOnEvent } = await render(h("bs-file-upload", { disabled: true }));
101
+ const spy = spyOnEvent('bsFilesSelect');
102
+ zone(root).dispatchEvent(new DragEvent('dragover', { bubbles: true, cancelable: true, dataTransfer: dt() }));
103
+ drop(zone(root), file('a.pdf', 'application/pdf'));
104
+ await waitForChanges();
105
+ expect(spy).not.toHaveReceivedEvent();
106
+ expect(root.dragging).toBe(false);
107
+ expect(input(root).disabled).toBe(true);
108
+ expect(root.shadowRoot.querySelector('[part="browse"]').disabled).toBe(true);
109
+ });
110
+ it('dragging can be set from outside to show the Drop state statically', async () => {
111
+ const { root } = await render(h("bs-file-upload", { dragging: true }));
112
+ expect(zone(root)).toHaveClass('bs-file-upload--dragging');
113
+ });
114
+ it('the icon slot replaces the default icon', async () => {
115
+ const { root } = await render(h("bs-file-upload", null, h("span", { slot: "icon", id: "custom" }, "*")));
116
+ const slot = root.shadowRoot.querySelector('slot[name="icon"]');
117
+ expect(slot.assignedElements()[0].id).toBe('custom');
118
+ });
119
+ });
@@ -0,0 +1,139 @@
1
+ /**
2
+ * @prop --bs-file-upload-bg: Background of the dropzone at rest. Aliased to --bs-surface-raised.
3
+ * @prop --bs-file-upload-bg-dragging: Background while a file is dragged over it. Aliased to --bs-surface-container.
4
+ * @prop --bs-file-upload-border-color: Dashed border color at rest. Aliased to --bs-border-neutral-container.
5
+ * @prop --bs-file-upload-border-color-dragging: Dashed border color while dragging. Aliased to --bs-border-neutral-container-pressed.
6
+ * @prop --bs-file-upload-border-width: Dashed border width. Aliased to --bs-border-width-medium.
7
+ * @prop --bs-file-upload-radius: Corner radius. Aliased to --bs-border-radius-150.
8
+ * @prop --bs-file-upload-padding: Padding on all sides. Aliased to --bs-spacing-300.
9
+ * @prop --bs-file-upload-gap: Gap between the icon area and the content. Aliased to --bs-spacing-300.
10
+ * @prop --bs-file-upload-icon-size: Diameter of the round icon area. 102px, per the Figma spec.
11
+ * @prop --bs-file-upload-icon-bg: Background of the round icon area at rest. Aliased to --bs-surface-hover.
12
+ * @prop --bs-file-upload-icon-bg-dragging: Background of the icon area while dragging. Aliased to --bs-surface-raised.
13
+ * @prop --bs-file-upload-icon-color: Upload icon color. Aliased to --bs-icon-default.
14
+ * @prop --bs-file-upload-content-gap: Gap between the text and the browse button. Aliased to --bs-spacing-100.
15
+ * @prop --bs-file-upload-text-gap: Gap between the heading and the guidelines. Aliased to --bs-spacing-25.
16
+ * @prop --bs-file-upload-heading-color: Heading color. Aliased to --bs-text-default.
17
+ * @prop --bs-file-upload-description-color: Guidelines color. Aliased to --bs-text-secondary.
18
+ * @prop --bs-file-upload-font-size: Text size. Aliased to --bs-font-size-md.
19
+ * @prop --bs-file-upload-line-height: Text line height. Aliased to --bs-line-height-body-md.
20
+ */
21
+ :host {
22
+ display: block;
23
+
24
+ --bs-file-upload-bg: var(--bs-surface-raised);
25
+ --bs-file-upload-bg-dragging: var(--bs-surface-container);
26
+ --bs-file-upload-border-color: var(--bs-border-neutral-container);
27
+ --bs-file-upload-border-color-dragging: var(--bs-border-neutral-container-pressed);
28
+ --bs-file-upload-border-width: var(--bs-border-width-medium);
29
+ --bs-file-upload-radius: var(--bs-border-radius-150);
30
+ --bs-file-upload-padding: var(--bs-spacing-300);
31
+ --bs-file-upload-gap: var(--bs-spacing-300);
32
+
33
+ --bs-file-upload-icon-size: 102px;
34
+ --bs-file-upload-icon-bg: var(--bs-surface-hover);
35
+ --bs-file-upload-icon-bg-dragging: var(--bs-surface-raised);
36
+ --bs-file-upload-icon-color: var(--bs-icon-default);
37
+
38
+ --bs-file-upload-content-gap: var(--bs-spacing-100);
39
+ --bs-file-upload-text-gap: var(--bs-spacing-25);
40
+ --bs-file-upload-heading-color: var(--bs-text-default);
41
+ --bs-file-upload-description-color: var(--bs-text-secondary);
42
+ --bs-file-upload-font-size: var(--bs-font-size-md);
43
+ --bs-file-upload-line-height: var(--bs-line-height-body-md);
44
+ }
45
+
46
+ .bs-file-upload {
47
+ box-sizing: border-box;
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ gap: var(--bs-file-upload-gap);
52
+ padding: var(--bs-file-upload-padding);
53
+ border: var(--bs-file-upload-border-width) dashed var(--bs-file-upload-border-color);
54
+ border-radius: var(--bs-file-upload-radius);
55
+ background: var(--bs-file-upload-bg);
56
+ font-size: var(--bs-file-upload-font-size);
57
+ line-height: calc(var(--bs-file-upload-line-height) * 1px);
58
+ }
59
+
60
+ .bs-file-upload--horizontal {
61
+ flex-direction: row;
62
+ justify-content: flex-start;
63
+ }
64
+
65
+ .bs-file-upload--vertical {
66
+ flex-direction: column;
67
+ text-align: center;
68
+ }
69
+
70
+ .bs-file-upload--dragging {
71
+ background: var(--bs-file-upload-bg-dragging);
72
+ border-color: var(--bs-file-upload-border-color-dragging);
73
+ }
74
+
75
+ .bs-file-upload__icon {
76
+ display: flex;
77
+ flex: none;
78
+ align-items: center;
79
+ justify-content: center;
80
+ width: var(--bs-file-upload-icon-size);
81
+ height: var(--bs-file-upload-icon-size);
82
+ border-radius: var(--bs-border-radius-full);
83
+ background: var(--bs-file-upload-icon-bg);
84
+ color: var(--bs-file-upload-icon-color);
85
+ }
86
+
87
+ .bs-file-upload--dragging .bs-file-upload__icon {
88
+ background: var(--bs-file-upload-icon-bg-dragging);
89
+ }
90
+
91
+ .bs-file-upload__icon-svg,
92
+ .bs-file-upload__icon ::slotted(*) {
93
+ display: block;
94
+ width: 32px;
95
+ height: 32px;
96
+ }
97
+
98
+ .bs-file-upload__content {
99
+ display: flex;
100
+ flex-direction: column;
101
+ gap: var(--bs-file-upload-content-gap);
102
+ min-width: 0;
103
+ }
104
+
105
+ .bs-file-upload--horizontal .bs-file-upload__content {
106
+ align-items: flex-start;
107
+ }
108
+
109
+ .bs-file-upload--vertical .bs-file-upload__content {
110
+ align-items: center;
111
+ }
112
+
113
+ .bs-file-upload__text {
114
+ display: flex;
115
+ flex-direction: column;
116
+ gap: var(--bs-file-upload-text-gap);
117
+ }
118
+
119
+ .bs-file-upload__heading {
120
+ color: var(--bs-file-upload-heading-color);
121
+ font-weight: 600;
122
+ }
123
+
124
+ .bs-file-upload__description {
125
+ color: var(--bs-file-upload-description-color);
126
+ }
127
+
128
+ .bs-file-upload--disabled {
129
+ cursor: not-allowed;
130
+ }
131
+
132
+ @media (forced-colors: active) {
133
+ .bs-file-upload {
134
+ border-color: CanvasText;
135
+ }
136
+ .bs-file-upload--dragging {
137
+ border-color: Highlight;
138
+ }
139
+ }