@brandsync/wc 0.1.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/custom-elements.json +1513 -669
  2. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  3. package/dist/brandsync-wc/p-00d40aca.entry.js +1 -0
  4. package/dist/brandsync-wc/{p-6e95eb36.entry.js → p-0299e8e1.entry.js} +1 -1
  5. package/dist/brandsync-wc/p-0921ca0d.entry.js +1 -0
  6. package/dist/brandsync-wc/{p-f4f22015.entry.js → p-0a2d690f.entry.js} +1 -1
  7. package/dist/brandsync-wc/{p-111974df.entry.js → p-0cf117f4.entry.js} +1 -1
  8. package/dist/brandsync-wc/{p-aa43d478.entry.js → p-127d698d.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-9bcd99aa.entry.js → p-1780224d.entry.js} +1 -1
  10. package/dist/brandsync-wc/{p-55a8d4b5.entry.js → p-18e0cff4.entry.js} +1 -1
  11. package/dist/brandsync-wc/{p-0847f5c0.entry.js → p-1abacfe8.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-10f6f3cd.entry.js → p-2a7cc40c.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-79af762c.entry.js → p-2e7586dd.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-eb04c578.entry.js → p-31b28025.entry.js} +1 -1
  15. package/dist/brandsync-wc/{p-1ce7dd64.entry.js → p-32fe390d.entry.js} +1 -1
  16. package/dist/brandsync-wc/{p-38aad266.entry.js → p-35bcb932.entry.js} +1 -1
  17. package/dist/brandsync-wc/{p-0ba35c3b.entry.js → p-393efb5d.entry.js} +1 -1
  18. package/dist/brandsync-wc/p-3e61d206.entry.js +1 -0
  19. package/dist/brandsync-wc/{p-91551e7b.entry.js → p-3e8728dc.entry.js} +1 -1
  20. package/dist/brandsync-wc/{p-20c24179.entry.js → p-5321186f.entry.js} +1 -1
  21. package/dist/brandsync-wc/{p-11f3fceb.entry.js → p-579fbe4d.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-d3265e70.entry.js → p-63906504.entry.js} +1 -1
  23. package/dist/brandsync-wc/{p-59ac2495.entry.js → p-673546bf.entry.js} +1 -1
  24. package/dist/brandsync-wc/{p-73217b90.entry.js → p-696f885c.entry.js} +1 -1
  25. package/dist/brandsync-wc/{p-d55bbcec.entry.js → p-6ef0a0ed.entry.js} +1 -1
  26. package/dist/brandsync-wc/{p-6d85fba4.entry.js → p-6fc78ccf.entry.js} +1 -1
  27. package/dist/brandsync-wc/{p-917a5bbc.entry.js → p-7091f130.entry.js} +1 -1
  28. package/dist/brandsync-wc/{p-752c04c8.entry.js → p-72e02bd5.entry.js} +1 -1
  29. package/dist/brandsync-wc/{p-9c4768aa.entry.js → p-778fcc55.entry.js} +1 -1
  30. package/dist/brandsync-wc/{p-18813680.entry.js → p-790fadf9.entry.js} +1 -1
  31. package/dist/brandsync-wc/{p-321ed4d3.entry.js → p-82953f42.entry.js} +1 -1
  32. package/dist/brandsync-wc/p-8b5f4ca7.entry.js +1 -0
  33. package/dist/brandsync-wc/{p-Do3l4of3.js → p-CvfB8CQv.js} +2 -2
  34. package/dist/brandsync-wc/{p-c3079ad7.entry.js → p-a16afeaa.entry.js} +1 -1
  35. package/dist/brandsync-wc/{p-cc79e75f.entry.js → p-a73bfd31.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-00bb9bda.entry.js → p-a7704457.entry.js} +1 -1
  37. package/dist/brandsync-wc/{p-2063a6d6.entry.js → p-aa1cc2b6.entry.js} +1 -1
  38. package/dist/brandsync-wc/{p-e93e944b.entry.js → p-ac12372f.entry.js} +1 -1
  39. package/dist/brandsync-wc/p-b2abd8d9.entry.js +1 -0
  40. package/dist/brandsync-wc/p-b63362e7.entry.js +1 -0
  41. package/dist/brandsync-wc/{p-9876e83c.entry.js → p-bb2ec290.entry.js} +1 -1
  42. package/dist/brandsync-wc/{p-171fed0c.entry.js → p-c7427962.entry.js} +1 -1
  43. package/dist/brandsync-wc/{p-6b469b2d.entry.js → p-c76ca89f.entry.js} +1 -1
  44. package/dist/brandsync-wc/{p-43e37883.entry.js → p-c7b9a5c7.entry.js} +1 -1
  45. package/dist/brandsync-wc/{p-c3c383dc.entry.js → p-ca74c7d9.entry.js} +1 -1
  46. package/dist/brandsync-wc/p-cc9f85d6.entry.js +1 -0
  47. package/dist/brandsync-wc/{p-1b7c9928.entry.js → p-cff188cb.entry.js} +1 -1
  48. package/dist/brandsync-wc/{p-81d49240.entry.js → p-e230ed08.entry.js} +1 -1
  49. package/dist/brandsync-wc/{p-5ae9e60e.entry.js → p-f652d79c.entry.js} +1 -1
  50. package/dist/brandsync-wc/p-fc9d52d4.entry.js +1 -0
  51. package/dist/cjs/brandsync-wc.cjs.js +3 -3
  52. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +2 -2
  53. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  54. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  55. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  56. package/dist/cjs/bs-attachment.cjs.entry.js +1 -1
  57. package/dist/cjs/bs-avatar.cjs.entry.js +1 -1
  58. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  59. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +1 -1
  60. package/dist/cjs/bs-breadcrumb.cjs.entry.js +1 -1
  61. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +2 -2
  62. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  63. package/dist/cjs/bs-button.cjs.entry.js +1 -1
  64. package/dist/cjs/bs-card.cjs.entry.js +2 -2
  65. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
  66. package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
  67. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  68. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  69. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
  70. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +2 -2
  71. package/dist/cjs/bs-checkbox.cjs.entry.js +1 -1
  72. package/dist/cjs/bs-chip-filter.cjs.entry.js +68 -0
  73. package/dist/cjs/bs-chip-informative.cjs.entry.js +42 -0
  74. package/dist/cjs/bs-chip-input.cjs.entry.js +76 -0
  75. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +2 -2
  76. package/dist/cjs/bs-composer.cjs.entry.js +2 -2
  77. package/dist/cjs/bs-data-table.cjs.entry.js +3 -3
  78. package/dist/cjs/bs-dialog.cjs.entry.js +13 -3
  79. package/dist/cjs/bs-icon-button.cjs.entry.js +2 -2
  80. package/dist/cjs/bs-inline-tab.cjs.entry.js +2 -2
  81. package/dist/cjs/bs-input.cjs.entry.js +3 -3
  82. package/dist/cjs/bs-logo.cjs.entry.js +1 -1
  83. package/dist/cjs/bs-menu-item.cjs.entry.js +2 -2
  84. package/dist/cjs/bs-menu.cjs.entry.js +2 -2
  85. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +2 -2
  86. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +2 -2
  87. package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
  88. package/dist/cjs/bs-pagination.cjs.entry.js +2 -2
  89. package/dist/cjs/bs-radio.cjs.entry.js +2 -2
  90. package/dist/cjs/bs-slider.cjs.entry.js +2 -2
  91. package/dist/cjs/bs-snackbar.cjs.entry.js +2 -2
  92. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  93. package/dist/cjs/bs-stepper-step.cjs.entry.js +44 -0
  94. package/dist/cjs/bs-stepper.cjs.entry.js +62 -0
  95. package/dist/cjs/bs-switch.cjs.entry.js +2 -2
  96. package/dist/cjs/bs-tab.cjs.entry.js +2 -2
  97. package/dist/cjs/bs-tabs.cjs.entry.js +2 -2
  98. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  99. package/dist/cjs/{index-DHVw-IPK.js → index-CdAh5BFg.js} +27 -14
  100. package/dist/cjs/loader.cjs.js +2 -2
  101. package/dist/collection/collection-manifest.json +6 -1
  102. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  103. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  104. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  105. package/dist/collection/components/bs-attachment/bs-attachment.js +1 -1
  106. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  107. package/dist/collection/components/bs-avatar/bs-avatar.js +2 -2
  108. package/dist/collection/components/bs-badge/bs-badge.js +1 -1
  109. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +1 -1
  110. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +1 -1
  111. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -1
  112. package/dist/collection/components/bs-button/bs-button/bs-button.js +2 -2
  113. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +3 -3
  114. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  115. package/dist/collection/components/bs-card/bs-card.css +6 -0
  116. package/dist/collection/components/bs-card/bs-card.js +1 -1
  117. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  118. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  119. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  120. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  121. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  122. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
  123. package/dist/collection/components/bs-checkbox/bs-checkbox.js +1 -1
  124. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.cmp.test.js +99 -0
  125. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.css +156 -0
  126. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.js +222 -0
  127. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.stories.js +76 -0
  128. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.cmp.test.js +43 -0
  129. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.css +135 -0
  130. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.js +143 -0
  131. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.stories.js +70 -0
  132. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.cmp.test.js +93 -0
  133. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.css +172 -0
  134. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +208 -0
  135. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.stories.js +67 -0
  136. package/dist/collection/components/bs-composer/bs-composer.js +3 -3
  137. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +2 -2
  138. package/dist/collection/components/bs-data-table/bs-data-table.js +6 -6
  139. package/dist/collection/components/bs-dialog/bs-dialog.cmp.test.js +6 -0
  140. package/dist/collection/components/bs-dialog/bs-dialog.js +13 -3
  141. package/dist/collection/components/bs-input/bs-input.js +2 -2
  142. package/dist/collection/components/bs-logo/bs-logo.js +2 -2
  143. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  144. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  145. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  146. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  147. package/dist/collection/components/bs-slider/bs-slider.js +2 -2
  148. package/dist/collection/components/bs-snackbar/bs-snackbar.js +2 -2
  149. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  150. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.cmp.test.js +42 -0
  151. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.css +29 -0
  152. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +162 -0
  153. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.stories.js +59 -0
  154. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.cmp.test.js +73 -0
  155. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.css +258 -0
  156. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +231 -0
  157. package/dist/collection/components/bs-switch/bs-switch.js +2 -2
  158. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  159. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +2 -2
  160. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +3 -3
  161. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  162. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +1 -1
  163. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  164. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +2 -2
  165. package/dist/components/bs-ai-disclaimer.js +1 -1
  166. package/dist/components/bs-ai-greeting.js +1 -1
  167. package/dist/components/bs-ai-thinking.js +1 -1
  168. package/dist/components/bs-attachment-list.js +1 -1
  169. package/dist/components/bs-attachment.js +1 -1
  170. package/dist/components/bs-avatar.js +1 -1
  171. package/dist/components/bs-badge.js +1 -1
  172. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  173. package/dist/components/bs-breadcrumb.js +1 -1
  174. package/dist/components/bs-breadcrumbs.js +1 -1
  175. package/dist/components/bs-button-skeleton.js +1 -1
  176. package/dist/components/bs-button.js +1 -1
  177. package/dist/components/bs-card.js +1 -1
  178. package/dist/components/bs-chatbot-feedback.js +1 -1
  179. package/dist/components/bs-chatbot-header.js +1 -1
  180. package/dist/components/bs-chatbot-response-action.js +1 -1
  181. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  182. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  183. package/dist/components/bs-checkbox-skeleton.js +1 -1
  184. package/dist/components/bs-checkbox.js +1 -1
  185. package/dist/components/bs-chip-filter.d.ts +11 -0
  186. package/dist/components/bs-chip-filter.js +1 -0
  187. package/dist/components/bs-chip-informative.d.ts +11 -0
  188. package/dist/components/bs-chip-informative.js +1 -0
  189. package/dist/components/bs-chip-input.d.ts +11 -0
  190. package/dist/components/bs-chip-input.js +1 -0
  191. package/dist/components/bs-composer-status-banner.js +1 -1
  192. package/dist/components/bs-composer.js +1 -1
  193. package/dist/components/bs-data-table.js +1 -1
  194. package/dist/components/bs-dialog.js +1 -1
  195. package/dist/components/bs-icon-button.js +1 -1
  196. package/dist/components/bs-inline-tab.js +1 -1
  197. package/dist/components/bs-input.js +1 -1
  198. package/dist/components/bs-logo.js +1 -1
  199. package/dist/components/bs-menu-item.js +1 -1
  200. package/dist/components/bs-menu.js +1 -1
  201. package/dist/components/bs-navigation-drawer-item.js +1 -1
  202. package/dist/components/bs-navigation-drawer.js +1 -1
  203. package/dist/components/bs-navigation-header.js +1 -1
  204. package/dist/components/bs-pagination.js +1 -1
  205. package/dist/components/bs-radio.js +1 -1
  206. package/dist/components/bs-slider.js +1 -1
  207. package/dist/components/bs-snackbar.js +1 -1
  208. package/dist/components/bs-source-link.js +1 -1
  209. package/dist/components/bs-stepper-step.d.ts +11 -0
  210. package/dist/components/bs-stepper-step.js +1 -0
  211. package/dist/components/bs-stepper.d.ts +11 -0
  212. package/dist/components/bs-stepper.js +1 -0
  213. package/dist/components/bs-switch.js +1 -1
  214. package/dist/components/bs-tab.js +1 -1
  215. package/dist/components/bs-tabs.js +1 -1
  216. package/dist/components/bs-tooltip.js +1 -1
  217. package/dist/components/index.js +1 -1
  218. package/dist/components/{p-BFcVSpES.js → p-B8JpGodL.js} +1 -1
  219. package/dist/components/{p-qK1XlpTA.js → p-BFVUq5m5.js} +1 -1
  220. package/dist/components/{p-BtX5URLk.js → p-BPUNjzjH.js} +1 -1
  221. package/dist/components/{p-CgaPcyEJ.js → p-Bb6vh9PN.js} +1 -1
  222. package/dist/components/{p-BJZYe7M4.js → p-CsnFdZ3v.js} +1 -1
  223. package/dist/components/{p-BKaZWFE1.js → p-DwVm6HIb.js} +1 -1
  224. package/dist/esm/brandsync-wc.js +4 -4
  225. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  226. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  227. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  228. package/dist/esm/bs-attachment-list.entry.js +2 -2
  229. package/dist/esm/bs-attachment.entry.js +1 -1
  230. package/dist/esm/bs-avatar.entry.js +1 -1
  231. package/dist/esm/bs-badge.entry.js +1 -1
  232. package/dist/esm/bs-breadcrumb-overflow.entry.js +1 -1
  233. package/dist/esm/bs-breadcrumb.entry.js +1 -1
  234. package/dist/esm/bs-breadcrumbs.entry.js +2 -2
  235. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  236. package/dist/esm/bs-button.entry.js +1 -1
  237. package/dist/esm/bs-card.entry.js +2 -2
  238. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  239. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  240. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  241. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  242. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  243. package/dist/esm/bs-checkbox-skeleton.entry.js +2 -2
  244. package/dist/esm/bs-checkbox.entry.js +1 -1
  245. package/dist/esm/bs-chip-filter.entry.js +66 -0
  246. package/dist/esm/bs-chip-informative.entry.js +40 -0
  247. package/dist/esm/bs-chip-input.entry.js +74 -0
  248. package/dist/esm/bs-composer-status-banner.entry.js +2 -2
  249. package/dist/esm/bs-composer.entry.js +2 -2
  250. package/dist/esm/bs-data-table.entry.js +3 -3
  251. package/dist/esm/bs-dialog.entry.js +13 -3
  252. package/dist/esm/bs-icon-button.entry.js +2 -2
  253. package/dist/esm/bs-inline-tab.entry.js +2 -2
  254. package/dist/esm/bs-input.entry.js +3 -3
  255. package/dist/esm/bs-logo.entry.js +1 -1
  256. package/dist/esm/bs-menu-item.entry.js +2 -2
  257. package/dist/esm/bs-menu.entry.js +2 -2
  258. package/dist/esm/bs-navigation-drawer-item.entry.js +2 -2
  259. package/dist/esm/bs-navigation-drawer.entry.js +2 -2
  260. package/dist/esm/bs-navigation-header.entry.js +2 -2
  261. package/dist/esm/bs-pagination.entry.js +2 -2
  262. package/dist/esm/bs-radio.entry.js +2 -2
  263. package/dist/esm/bs-slider.entry.js +2 -2
  264. package/dist/esm/bs-snackbar.entry.js +2 -2
  265. package/dist/esm/bs-source-link.entry.js +3 -3
  266. package/dist/esm/bs-stepper-step.entry.js +42 -0
  267. package/dist/esm/bs-stepper.entry.js +60 -0
  268. package/dist/esm/bs-switch.entry.js +2 -2
  269. package/dist/esm/bs-tab.entry.js +2 -2
  270. package/dist/esm/bs-tabs.entry.js +2 -2
  271. package/dist/esm/bs-tooltip.entry.js +2 -2
  272. package/dist/esm/{index-Do3l4of3.js → index-CvfB8CQv.js} +27 -14
  273. package/dist/esm/loader.js +3 -3
  274. package/dist/types/components/bs-chip/bs-chip-filter/bs-chip-filter.cmp.test.d.ts +1 -0
  275. package/dist/types/components/bs-chip/bs-chip-filter/bs-chip-filter.d.ts +56 -0
  276. package/dist/types/components/bs-chip/bs-chip-filter/bs-chip-filter.stories.d.ts +20 -0
  277. package/dist/types/components/bs-chip/bs-chip-informative/bs-chip-informative.cmp.test.d.ts +1 -0
  278. package/dist/types/components/bs-chip/bs-chip-informative/bs-chip-informative.d.ts +41 -0
  279. package/dist/types/components/bs-chip/bs-chip-informative/bs-chip-informative.stories.d.ts +21 -0
  280. package/dist/types/components/bs-chip/bs-chip-input/bs-chip-input.cmp.test.d.ts +1 -0
  281. package/dist/types/components/bs-chip/bs-chip-input/bs-chip-input.d.ts +60 -0
  282. package/dist/types/components/bs-chip/bs-chip-input/bs-chip-input.stories.d.ts +18 -0
  283. package/dist/types/components/bs-stepper/bs-stepper/bs-stepper.cmp.test.d.ts +1 -0
  284. package/dist/types/components/bs-stepper/bs-stepper/bs-stepper.d.ts +48 -0
  285. package/dist/types/components/bs-stepper/bs-stepper/bs-stepper.stories.d.ts +14 -0
  286. package/dist/types/components/bs-stepper/bs-stepper-step/bs-stepper-step.cmp.test.d.ts +1 -0
  287. package/dist/types/components/bs-stepper/bs-stepper-step/bs-stepper-step.d.ts +55 -0
  288. package/dist/types/components.d.ts +653 -0
  289. package/dist/types/stencil-public-runtime.d.ts +62 -55
  290. package/loader/index.d.ts +1 -1
  291. package/package.json +6 -5
  292. package/dist/brandsync-wc/p-0f3cb0c4.entry.js +0 -1
  293. package/dist/brandsync-wc/p-ce7fc368.entry.js +0 -1
  294. package/dist/brandsync-wc/p-f0ae2740.entry.js +0 -1
@@ -0,0 +1,76 @@
1
+ import { html } from "lit";
2
+ import { componentDescription, propDescription } from "../../../stories-utils";
3
+ const meta = {
4
+ title: 'Components/bs-chip/bs-chip-filter',
5
+ parameters: { docs: { description: { component: componentDescription('bs-chip-filter') } } },
6
+ render: args => html `
7
+ <bs-chip-filter size=${args.size} ?selected=${args.selected} ?dropdown=${args.dropdown} ?disabled=${args.disabled}>${args.label}</bs-chip-filter>
8
+ `,
9
+ argTypes: {
10
+ size: { control: { type: 'select' }, options: ['md', 'lg'], description: propDescription('bs-chip-filter', 'size') },
11
+ selected: { control: 'boolean', description: propDescription('bs-chip-filter', 'selected') },
12
+ dropdown: { control: 'boolean', description: propDescription('bs-chip-filter', 'dropdown') },
13
+ disabled: { control: 'boolean', description: propDescription('bs-chip-filter', 'disabled') },
14
+ label: { control: 'text', description: 'Slotted label content (not a real attribute -- see the default slot).' },
15
+ },
16
+ args: {
17
+ size: 'lg',
18
+ selected: false,
19
+ dropdown: false,
20
+ disabled: false,
21
+ label: 'Label',
22
+ },
23
+ };
24
+ export default meta;
25
+ export const Default = {};
26
+ export const Selected = {
27
+ args: { selected: true },
28
+ };
29
+ export const WithDropdown = {
30
+ name: 'With dropdown caret',
31
+ args: { dropdown: true },
32
+ };
33
+ export const WithIcon = {
34
+ name: 'With icon',
35
+ render: args => html `
36
+ <bs-chip-filter size=${args.size} ?selected=${args.selected} ?dropdown=${args.dropdown} ?disabled=${args.disabled}>
37
+ <svg slot="icon" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
38
+ <rect x="3" y="2" width="10" height="12" rx="1.5" stroke="currentColor" stroke-width="1.5" />
39
+ <path d="M7 12H9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
40
+ </svg>
41
+ ${args.label}
42
+ </bs-chip-filter>
43
+ `,
44
+ };
45
+ export const WithIconAndDropdown = {
46
+ name: 'With icon and dropdown caret',
47
+ args: { dropdown: true },
48
+ render: args => html `
49
+ <bs-chip-filter size=${args.size} ?selected=${args.selected} ?dropdown=${args.dropdown} ?disabled=${args.disabled}>
50
+ <svg slot="icon" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
51
+ <rect x="3" y="2" width="10" height="12" rx="1.5" stroke="currentColor" stroke-width="1.5" />
52
+ <path d="M7 12H9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
53
+ </svg>
54
+ ${args.label}
55
+ </bs-chip-filter>
56
+ `,
57
+ };
58
+ export const Disabled = {
59
+ args: { disabled: true },
60
+ };
61
+ export const Medium = {
62
+ args: { size: 'md' },
63
+ };
64
+ export const AllVariants = {
65
+ name: 'All variants',
66
+ render: () => html `
67
+ <div style="display:flex; gap:12px; flex-wrap:wrap; align-items:center;">
68
+ <bs-chip-filter>Label</bs-chip-filter>
69
+ <bs-chip-filter selected>Label</bs-chip-filter>
70
+ <bs-chip-filter dropdown>Label</bs-chip-filter>
71
+ <bs-chip-filter selected dropdown>Label</bs-chip-filter>
72
+ <bs-chip-filter disabled>Label</bs-chip-filter>
73
+ <bs-chip-filter size="md">Label</bs-chip-filter>
74
+ </div>
75
+ `,
76
+ };
@@ -0,0 +1,43 @@
1
+ import { render, h, describe, it, expect } from "@stencil/vitest";
2
+ describe('bs-chip-informative', () => {
3
+ it('defaults to color="neutral" and size="lg"', async () => {
4
+ const { root } = await render(h("bs-chip-informative", null, "Label"));
5
+ expect(root).toHaveClass('bs-chip-informative--neutral');
6
+ expect(root).toHaveClass('bs-chip-informative--lg');
7
+ });
8
+ ['neutral', 'warning', 'success', 'info', 'error'].forEach(color => {
9
+ it(`renders color="${color}" with the matching modifier class`, async () => {
10
+ const { root } = await render(h("bs-chip-informative", { color: color }, "Label"));
11
+ expect(root).toHaveClass(`bs-chip-informative--${color}`);
12
+ });
13
+ });
14
+ ['sm', 'md', 'lg'].forEach(size => {
15
+ it(`renders size="${size}" with the matching modifier class`, async () => {
16
+ const { root } = await render(h("bs-chip-informative", { size: size }, "Label"));
17
+ expect(root).toHaveClass(`bs-chip-informative--${size}`);
18
+ });
19
+ });
20
+ it('reflects disabled to the host attribute regardless of color', async () => {
21
+ const { root } = await render(h("bs-chip-informative", { color: "error", disabled: true }, "Label"));
22
+ expect(root).toEqualAttribute('disabled', '');
23
+ // The color class is still applied -- CSS source order makes the [disabled] rule win, not JS.
24
+ expect(root).toHaveClass('bs-chip-informative--error');
25
+ });
26
+ describe('icon slot and padding variant', () => {
27
+ it('has no icon and the text padding variant by default', async () => {
28
+ const { root } = await render(h("bs-chip-informative", null, "Label"));
29
+ expect(root.shadowRoot.querySelector('[part="icon"]')).not.toHaveClass('bs-chip-informative__icon--visible');
30
+ expect(root).toHaveClass('bs-chip-informative--text');
31
+ });
32
+ it('marks the icon visible and picks the icon padding variant when the icon slot has content', async () => {
33
+ const { root, waitForChanges } = await render(h("bs-chip-informative", null, h("svg", { slot: "icon" }), "Label"));
34
+ await waitForChanges();
35
+ expect(root.shadowRoot.querySelector('[part="icon"]')).toHaveClass('bs-chip-informative__icon--visible');
36
+ expect(root).toHaveClass('bs-chip-informative--icon');
37
+ });
38
+ });
39
+ it('renders label slot content', async () => {
40
+ const { root } = await render(h("bs-chip-informative", null, "Active"));
41
+ expect(root).toHaveTextContent('Active');
42
+ });
43
+ });
@@ -0,0 +1,135 @@
1
+ /**
2
+ * @prop --bs-chip-informative-height-sm: Height at size="sm". Aliased to --bs-spacing-250.
3
+ * @prop --bs-chip-informative-height-md: Height at size="md". Aliased to --bs-spacing-300.
4
+ * @prop --bs-chip-informative-height-lg: Height at size="lg". Aliased to --bs-spacing-400.
5
+ * @prop --bs-chip-informative-gap: Gap between icon and label. Aliased to --bs-spacing-50.
6
+ * @prop --bs-chip-informative-icon-size: Icon glyph size. 16px, matching Figma exactly -- constant
7
+ * across all sizes, only the chip's own height/font changes.
8
+ * @prop --bs-chip-informative-padding-x-glyph-side: Left-edge padding when there's a leading icon.
9
+ * Aliased to --bs-spacing-100.
10
+ * @prop --bs-chip-informative-padding-x-plain-side: Both edges' padding when there's no leading
11
+ * icon. Aliased to --bs-spacing-200 -- deliberately not the icon variant's own right-edge value
12
+ * (--bs-spacing-150) below; verified against Figma that the no-icon variant uses a bigger value on
13
+ * both sides rather than reusing the icon variant's smaller one-sided value.
14
+ * @prop --bs-chip-informative-padding-right-icon-variant: Right-edge padding specifically when
15
+ * there's a leading icon (the label-only edge in that case). Aliased to --bs-spacing-150.
16
+ * @prop --bs-chip-informative-font-size-sm: Aliased to --bs-font-size-xs (size="sm" only --
17
+ * every other size uses --bs-chip-informative-font-size below).
18
+ * @prop --bs-chip-informative-line-height-sm: Aliased to --bs-line-height-caption-sm (size="sm"
19
+ * only).
20
+ * @prop --bs-chip-informative-font-size: Aliased to --bs-font-size-sm (size="md"/"lg").
21
+ * @prop --bs-chip-informative-line-height: Aliased to --bs-line-height-body-sm (size="md"/"lg").
22
+ * @prop --bs-chip-informative-font-weight: Aliased to --bs-font-weight-regular.
23
+ *
24
+ * Color (background/text per color/disabled) comes directly from brandsync-tokens' own pre-built
25
+ * chip token set below -- shared across the whole bs-chip family, not local to this component,
26
+ * consumed directly rather than re-aliased under a bs-chip-informative-specific name.
27
+ */
28
+ :host {
29
+ display: inline-flex;
30
+ align-items: center;
31
+ box-sizing: border-box;
32
+ gap: var(--bs-chip-informative-gap);
33
+ border-radius: var(--bs-border-radius-full);
34
+ font-family: inherit;
35
+ font-weight: var(--bs-chip-informative-font-weight);
36
+ white-space: nowrap;
37
+
38
+ --bs-chip-informative-height-sm: var(--bs-spacing-250);
39
+ --bs-chip-informative-height-md: var(--bs-spacing-300);
40
+ --bs-chip-informative-height-lg: var(--bs-spacing-400);
41
+ --bs-chip-informative-gap: var(--bs-spacing-50);
42
+ --bs-chip-informative-icon-size: 16px;
43
+ --bs-chip-informative-padding-x-glyph-side: var(--bs-spacing-100);
44
+ --bs-chip-informative-padding-right-icon-variant: var(--bs-spacing-150);
45
+ --bs-chip-informative-padding-x-plain-side: var(--bs-spacing-200);
46
+ --bs-chip-informative-font-size-sm: var(--bs-font-size-xs);
47
+ --bs-chip-informative-line-height-sm: var(--bs-line-height-caption-sm);
48
+ --bs-chip-informative-font-size: var(--bs-font-size-sm);
49
+ --bs-chip-informative-line-height: var(--bs-line-height-body-sm);
50
+ --bs-chip-informative-font-weight: var(--bs-font-weight-regular);
51
+ }
52
+
53
+ :host(.bs-chip-informative--lg) {
54
+ height: var(--bs-chip-informative-height-lg);
55
+ font-size: var(--bs-chip-informative-font-size);
56
+ line-height: calc(var(--bs-chip-informative-line-height) * 1px);
57
+ }
58
+
59
+ :host(.bs-chip-informative--md) {
60
+ height: var(--bs-chip-informative-height-md);
61
+ font-size: var(--bs-chip-informative-font-size);
62
+ line-height: calc(var(--bs-chip-informative-line-height) * 1px);
63
+ }
64
+
65
+ :host(.bs-chip-informative--sm) {
66
+ height: var(--bs-chip-informative-height-sm);
67
+ font-size: var(--bs-chip-informative-font-size-sm);
68
+ line-height: calc(var(--bs-chip-informative-line-height-sm) * 1px);
69
+ }
70
+
71
+ :host(.bs-chip-informative--icon) {
72
+ padding-left: var(--bs-chip-informative-padding-x-glyph-side);
73
+ padding-right: var(--bs-chip-informative-padding-right-icon-variant);
74
+ }
75
+
76
+ :host(.bs-chip-informative--text) {
77
+ padding-left: var(--bs-chip-informative-padding-x-plain-side);
78
+ padding-right: var(--bs-chip-informative-padding-x-plain-side);
79
+ }
80
+
81
+ .bs-chip-informative__icon {
82
+ display: none;
83
+ flex-shrink: 0;
84
+ width: var(--bs-chip-informative-icon-size);
85
+ height: var(--bs-chip-informative-icon-size);
86
+ }
87
+
88
+ .bs-chip-informative__icon--visible {
89
+ display: flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ }
93
+
94
+ .bs-chip-informative__icon ::slotted(*) {
95
+ display: block;
96
+ width: var(--bs-chip-informative-icon-size);
97
+ height: var(--bs-chip-informative-icon-size);
98
+ }
99
+
100
+ .bs-chip-informative__label {
101
+ display: flex;
102
+ align-items: center;
103
+ }
104
+
105
+ :host(.bs-chip-informative--neutral) {
106
+ background: var(--bs-chip-bg-neutral-container);
107
+ color: var(--bs-chip-text-neutral);
108
+ }
109
+
110
+ :host(.bs-chip-informative--warning) {
111
+ background: var(--bs-chip-bg-warning-container);
112
+ color: var(--bs-chip-text-warning);
113
+ }
114
+
115
+ :host(.bs-chip-informative--success) {
116
+ background: var(--bs-chip-bg-success-container);
117
+ color: var(--bs-chip-text-success);
118
+ }
119
+
120
+ :host(.bs-chip-informative--info) {
121
+ background: var(--bs-chip-bg-info-container);
122
+ color: var(--bs-chip-text-info);
123
+ }
124
+
125
+ :host(.bs-chip-informative--error) {
126
+ background: var(--bs-chip-bg-error-container);
127
+ color: var(--bs-chip-text-error);
128
+ }
129
+
130
+ /* Overrides whichever color class is also present -- declared last, plain attribute selector
131
+ specificity (0,1,0) ties with the color classes' own (0,1,0), so source order decides. */
132
+ :host([disabled]) {
133
+ background: var(--bs-chip-bg-disabled);
134
+ color: var(--bs-chip-text-disabled);
135
+ }
@@ -0,0 +1,143 @@
1
+ import { Host, h } from "@stencil/core";
2
+ /**
3
+ * A pill-shaped, non-interactive label for conveying a category or status at a glance, optionally
4
+ * paired with a leading icon. Unlike `bs-chip-filter`/`bs-chip-input`, this is purely informational
5
+ * -- no click/select/remove behavior, no hover/focus/pressed states.
6
+ *
7
+ * ## When to use
8
+ * - Conveying a category or status inline with other content, with more color options and an
9
+ * optional icon than `bs-badge` offers.
10
+ *
11
+ * ## When not to use
12
+ * - Anything clickable/selectable -- use `bs-chip-filter`.
13
+ * - A short, fixed status label with no color/icon needs -- `bs-badge` is the simpler choice.
14
+ *
15
+ * @slot - Default slot: the chip's label content.
16
+ * @slot icon - Optional leading icon.
17
+ * @part icon - The icon wrapper element.
18
+ * @part label - The text label element.
19
+ */
20
+ export class BsChipInformative {
21
+ el;
22
+ /** Semantic color. Maps directly to the brandsync-tokens `--bs-chip-bg-*-container`/
23
+ * `--bs-chip-text-*` sets. Ignored (in favor of the disabled token set) when `disabled` is
24
+ * set -- same override relationship `bs-stepper-step`'s `error`/`disabled` props have. */
25
+ color = 'neutral';
26
+ /** Sizing scale. Controls height and font-size/line-height together -- unlike
27
+ * `bs-chip-filter`/`bs-chip-input`, Figma specs a distinct (smaller) font at `size="sm"`, not
28
+ * just a shorter pill. */
29
+ size = 'lg';
30
+ /** Overrides `color` with the disabled token set, regardless of its value. Reflected so
31
+ * `:host([disabled])` can apply it in CSS. */
32
+ disabled = false;
33
+ /** Tracks whether the `icon` slot has assigned content, so the icon/label gap and left-edge
34
+ * padding only apply when there's actually a leading icon. */
35
+ hasIcon = false;
36
+ componentWillLoad() {
37
+ this.hasIcon = this.hasSlottedContent('icon');
38
+ }
39
+ hasSlottedContent(slotName) {
40
+ return Array.from(this.el.childNodes).some(node => node.nodeType === Node.ELEMENT_NODE && node.getAttribute('slot') === slotName);
41
+ }
42
+ onIconSlotchange = (ev) => {
43
+ this.hasIcon = ev.target.assignedNodes().length > 0;
44
+ };
45
+ render() {
46
+ const paddingVariant = this.hasIcon ? 'icon' : 'text';
47
+ return (h(Host, { key: '333f8eb96435393dc676b7422de79a43f0e3d9d8', class: `bs-chip-informative bs-chip-informative--${this.color} bs-chip-informative--${this.size} bs-chip-informative--${paddingVariant}` }, h("span", { key: '5af00525b1ce8e1cee16e896c6fd1bee1e8344c0', part: "icon", class: `bs-chip-informative__icon ${this.hasIcon ? 'bs-chip-informative__icon--visible' : ''}` }, h("slot", { key: 'd6e72f0ea1a913b2a313441b83f1430549dcc5cc', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '617013d83715e1d916e4bfc40185d31879acfab3', part: "label", class: "bs-chip-informative__label" }, h("slot", { key: 'dc6db50bff31169c3da18f472002528a78ed210a' }))));
48
+ }
49
+ static get is() { return "bs-chip-informative"; }
50
+ static get encapsulation() { return "shadow"; }
51
+ static get originalStyleUrls() {
52
+ return {
53
+ "$": ["bs-chip-informative.css"]
54
+ };
55
+ }
56
+ static get styleUrls() {
57
+ return {
58
+ "$": ["bs-chip-informative.css"]
59
+ };
60
+ }
61
+ static get properties() {
62
+ return {
63
+ "color": {
64
+ "type": "string",
65
+ "mutable": false,
66
+ "complexType": {
67
+ "original": "BsChipInformativeColor",
68
+ "resolved": "\"error\" | \"info\" | \"neutral\" | \"success\" | \"warning\"",
69
+ "references": {
70
+ "BsChipInformativeColor": {
71
+ "location": "local",
72
+ "path": "/home/runner/work/Brandsync-web-components/Brandsync-web-components/packages/wc/src/components/bs-chip/bs-chip-informative/bs-chip-informative.tsx",
73
+ "id": "src/components/bs-chip/bs-chip-informative/bs-chip-informative.tsx::BsChipInformativeColor"
74
+ }
75
+ }
76
+ },
77
+ "required": false,
78
+ "optional": false,
79
+ "docs": {
80
+ "tags": [],
81
+ "text": "Semantic color. Maps directly to the brandsync-tokens `--bs-chip-bg-*-container`/\n`--bs-chip-text-*` sets. Ignored (in favor of the disabled token set) when `disabled` is\nset -- same override relationship `bs-stepper-step`'s `error`/`disabled` props have."
82
+ },
83
+ "getter": false,
84
+ "setter": false,
85
+ "reflect": false,
86
+ "attribute": "color",
87
+ "defaultValue": "'neutral'"
88
+ },
89
+ "size": {
90
+ "type": "string",
91
+ "mutable": false,
92
+ "complexType": {
93
+ "original": "BsChipInformativeSize",
94
+ "resolved": "\"lg\" | \"md\" | \"sm\"",
95
+ "references": {
96
+ "BsChipInformativeSize": {
97
+ "location": "local",
98
+ "path": "/home/runner/work/Brandsync-web-components/Brandsync-web-components/packages/wc/src/components/bs-chip/bs-chip-informative/bs-chip-informative.tsx",
99
+ "id": "src/components/bs-chip/bs-chip-informative/bs-chip-informative.tsx::BsChipInformativeSize"
100
+ }
101
+ }
102
+ },
103
+ "required": false,
104
+ "optional": false,
105
+ "docs": {
106
+ "tags": [],
107
+ "text": "Sizing scale. Controls height and font-size/line-height together -- unlike\n`bs-chip-filter`/`bs-chip-input`, Figma specs a distinct (smaller) font at `size=\"sm\"`, not\njust a shorter pill."
108
+ },
109
+ "getter": false,
110
+ "setter": false,
111
+ "reflect": false,
112
+ "attribute": "size",
113
+ "defaultValue": "'lg'"
114
+ },
115
+ "disabled": {
116
+ "type": "boolean",
117
+ "mutable": false,
118
+ "complexType": {
119
+ "original": "boolean",
120
+ "resolved": "boolean",
121
+ "references": {}
122
+ },
123
+ "required": false,
124
+ "optional": false,
125
+ "docs": {
126
+ "tags": [],
127
+ "text": "Overrides `color` with the disabled token set, regardless of its value. Reflected so\n`:host([disabled])` can apply it in CSS."
128
+ },
129
+ "getter": false,
130
+ "setter": false,
131
+ "reflect": true,
132
+ "attribute": "disabled",
133
+ "defaultValue": "false"
134
+ }
135
+ };
136
+ }
137
+ static get states() {
138
+ return {
139
+ "hasIcon": {}
140
+ };
141
+ }
142
+ static get elementRef() { return "el"; }
143
+ }
@@ -0,0 +1,70 @@
1
+ import { html } from "lit";
2
+ import { componentDescription, propDescription } from "../../../stories-utils";
3
+ const colors = ['neutral', 'warning', 'success', 'info', 'error'];
4
+ const meta = {
5
+ title: 'Components/bs-chip/bs-chip-informative',
6
+ parameters: { docs: { description: { component: componentDescription('bs-chip-informative') } } },
7
+ render: args => html ` <bs-chip-informative color=${args.color} size=${args.size} ?disabled=${args.disabled}>${args.label}</bs-chip-informative> `,
8
+ argTypes: {
9
+ color: { control: { type: 'select' }, options: colors, description: propDescription('bs-chip-informative', 'color') },
10
+ size: { control: { type: 'select' }, options: ['sm', 'md', 'lg'], description: propDescription('bs-chip-informative', 'size') },
11
+ disabled: { control: 'boolean', description: propDescription('bs-chip-informative', 'disabled') },
12
+ label: { control: 'text', description: 'Slotted label content (not a real attribute -- see the default slot).' },
13
+ },
14
+ args: {
15
+ color: 'neutral',
16
+ size: 'lg',
17
+ disabled: false,
18
+ label: 'Label',
19
+ },
20
+ };
21
+ export default meta;
22
+ export const Neutral = {};
23
+ export const Warning = {
24
+ args: { color: 'warning' },
25
+ };
26
+ export const Success = {
27
+ args: { color: 'success' },
28
+ };
29
+ export const Info = {
30
+ args: { color: 'info' },
31
+ };
32
+ export const Error = {
33
+ args: { color: 'error' },
34
+ };
35
+ export const WithIcon = {
36
+ name: 'With icon',
37
+ render: args => html `
38
+ <bs-chip-informative color=${args.color} size=${args.size} ?disabled=${args.disabled}>
39
+ <svg slot="icon" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
40
+ <path d="M8 3.5V12.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
41
+ <path d="M3.5 8H12.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
42
+ </svg>
43
+ ${args.label}
44
+ </bs-chip-informative>
45
+ `,
46
+ };
47
+ export const Disabled = {
48
+ args: { disabled: true },
49
+ };
50
+ export const Small = {
51
+ args: { size: 'sm' },
52
+ };
53
+ export const Medium = {
54
+ args: { size: 'md' },
55
+ };
56
+ export const AllVariants = {
57
+ name: 'All variants',
58
+ render: () => html `
59
+ <div style="display:flex; gap:12px; flex-wrap:wrap; align-items:center;">
60
+ <bs-chip-informative color="neutral">Neutral</bs-chip-informative>
61
+ <bs-chip-informative color="warning">Warning</bs-chip-informative>
62
+ <bs-chip-informative color="success">Success</bs-chip-informative>
63
+ <bs-chip-informative color="info">Info</bs-chip-informative>
64
+ <bs-chip-informative color="error">Error</bs-chip-informative>
65
+ <bs-chip-informative disabled>Disabled</bs-chip-informative>
66
+ <bs-chip-informative size="md">Medium</bs-chip-informative>
67
+ <bs-chip-informative size="sm">Small</bs-chip-informative>
68
+ </div>
69
+ `,
70
+ };
@@ -0,0 +1,93 @@
1
+ import { render, h, describe, it, expect } from "@stencil/vitest";
2
+ describe('bs-chip-input', () => {
3
+ it('renders an unselected chip by default', async () => {
4
+ const { root } = await render(h("bs-chip-input", null, "Label"));
5
+ const body = root.shadowRoot.querySelector('[part="body"]');
6
+ expect(body).toEqualAttribute('aria-pressed', 'false');
7
+ expect(root).not.toEqualAttribute('selected', '');
8
+ });
9
+ it('reflects the selected prop to the host attribute and the body button', async () => {
10
+ const { root } = await render(h("bs-chip-input", { selected: true }, "Label"));
11
+ expect(root).toEqualAttribute('selected', '');
12
+ const body = root.shadowRoot.querySelector('[part="body"]');
13
+ expect(body).toEqualAttribute('aria-pressed', 'true');
14
+ });
15
+ it('clicking the body toggles selected and emits bsChange with the new value', async () => {
16
+ const { root, waitForChanges, spyOnEvent } = await render(h("bs-chip-input", null, "Label"));
17
+ const bsChangeSpy = spyOnEvent('bsChange');
18
+ const body = root.shadowRoot.querySelector('[part="body"]');
19
+ body.click();
20
+ await waitForChanges();
21
+ expect(root.selected).toBe(true);
22
+ expect(bsChangeSpy).toHaveReceivedEventTimes(1);
23
+ expect(bsChangeSpy).toHaveReceivedEventDetail(true);
24
+ body.click();
25
+ await waitForChanges();
26
+ expect(root.selected).toBe(false);
27
+ expect(bsChangeSpy).toHaveReceivedEventTimes(2);
28
+ expect(bsChangeSpy).toHaveReceivedEventDetail(false);
29
+ });
30
+ it('clicking the remove button emits bsRemove and does not affect selected', async () => {
31
+ const { root, waitForChanges, spyOnEvent } = await render(h("bs-chip-input", { selected: true }, "Label"));
32
+ const bsRemoveSpy = spyOnEvent('bsRemove');
33
+ const bsChangeSpy = spyOnEvent('bsChange');
34
+ const removeButton = root.shadowRoot.querySelector('[part="remove"]');
35
+ removeButton.click();
36
+ await waitForChanges();
37
+ expect(bsRemoveSpy).toHaveReceivedEventTimes(1);
38
+ expect(bsChangeSpy).toHaveReceivedEventTimes(0);
39
+ expect(root.selected).toBe(true);
40
+ });
41
+ it('sets the remove button accessible name from the slotted label text', async () => {
42
+ const { root } = await render(h("bs-chip-input", null, "Active users"));
43
+ const removeButton = root.shadowRoot.querySelector('[part="remove"]');
44
+ expect(removeButton).toEqualAttribute('aria-label', 'Remove Active users');
45
+ });
46
+ describe('disabled', () => {
47
+ it('sets the disabled attribute on both the body and remove buttons', async () => {
48
+ const { root } = await render(h("bs-chip-input", { disabled: true }, "Label"));
49
+ expect(root.shadowRoot.querySelector('[part="body"]')).toHaveAttribute('disabled');
50
+ expect(root.shadowRoot.querySelector('[part="remove"]')).toHaveAttribute('disabled');
51
+ });
52
+ it('prevents toggling selected via click', async () => {
53
+ const { root, waitForChanges, spyOnEvent } = await render(h("bs-chip-input", { disabled: true }, "Label"));
54
+ const bsChangeSpy = spyOnEvent('bsChange');
55
+ const body = root.shadowRoot.querySelector('[part="body"]');
56
+ body.click();
57
+ await waitForChanges();
58
+ expect(root.selected).toBe(false);
59
+ expect(bsChangeSpy).toHaveReceivedEventTimes(0);
60
+ });
61
+ it('prevents removal via click', async () => {
62
+ const { root, waitForChanges, spyOnEvent } = await render(h("bs-chip-input", { disabled: true }, "Label"));
63
+ const bsRemoveSpy = spyOnEvent('bsRemove');
64
+ const removeButton = root.shadowRoot.querySelector('[part="remove"]');
65
+ removeButton.click();
66
+ await waitForChanges();
67
+ expect(bsRemoveSpy).toHaveReceivedEventTimes(0);
68
+ });
69
+ });
70
+ ['md', 'lg'].forEach(size => {
71
+ it(`renders size="${size}" with the matching modifier class`, async () => {
72
+ const { root } = await render(h("bs-chip-input", { size: size }, "Label"));
73
+ expect(root).toHaveClass(`bs-chip-input--${size}`);
74
+ });
75
+ });
76
+ describe('icon slot and padding variant', () => {
77
+ it('has no icon and the text padding variant by default', async () => {
78
+ const { root } = await render(h("bs-chip-input", null, "Label"));
79
+ expect(root.shadowRoot.querySelector('[part="icon"]')).not.toHaveClass('bs-chip-input__icon--visible');
80
+ expect(root).toHaveClass('bs-chip-input--text');
81
+ });
82
+ it('marks the icon visible and picks the icon padding variant when the icon slot has content', async () => {
83
+ const { root, waitForChanges } = await render(h("bs-chip-input", null, h("svg", { slot: "icon" }), "Label"));
84
+ await waitForChanges();
85
+ expect(root.shadowRoot.querySelector('[part="icon"]')).toHaveClass('bs-chip-input__icon--visible');
86
+ expect(root).toHaveClass('bs-chip-input--icon');
87
+ });
88
+ });
89
+ it('renders label slot content', async () => {
90
+ const { root } = await render(h("bs-chip-input", null, "Active users"));
91
+ expect(root).toHaveTextContent('Active users');
92
+ });
93
+ });