@brandsync/wc 0.0.11 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/custom-elements.json +5869 -1633
  2. package/dist/brandsync-wc/brandsync-wc.css +20 -0
  3. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  4. package/dist/brandsync-wc/p-00bb9bda.entry.js +1 -0
  5. package/dist/brandsync-wc/{p-8dff4f24.entry.js → p-0847f5c0.entry.js} +1 -1
  6. package/dist/brandsync-wc/p-0ba35c3b.entry.js +1 -0
  7. package/dist/brandsync-wc/{p-073e5fee.entry.js → p-0f3cb0c4.entry.js} +1 -1
  8. package/dist/brandsync-wc/p-10f6f3cd.entry.js +1 -0
  9. package/dist/brandsync-wc/{p-c6d330c3.entry.js → p-111974df.entry.js} +1 -1
  10. package/dist/brandsync-wc/p-11f3fceb.entry.js +1 -0
  11. package/dist/brandsync-wc/p-171fed0c.entry.js +1 -0
  12. package/dist/brandsync-wc/{p-dd224cb3.entry.js → p-18813680.entry.js} +1 -1
  13. package/dist/brandsync-wc/p-1b7c9928.entry.js +1 -0
  14. package/dist/brandsync-wc/p-1ce7dd64.entry.js +1 -0
  15. package/dist/brandsync-wc/p-2063a6d6.entry.js +1 -0
  16. package/dist/brandsync-wc/{p-4ca15322.entry.js → p-20c24179.entry.js} +1 -1
  17. package/dist/brandsync-wc/{p-b174403d.entry.js → p-321ed4d3.entry.js} +1 -1
  18. package/dist/brandsync-wc/p-38aad266.entry.js +1 -0
  19. package/dist/brandsync-wc/p-43e37883.entry.js +1 -0
  20. package/dist/brandsync-wc/p-55a8d4b5.entry.js +1 -0
  21. package/dist/brandsync-wc/p-59ac2495.entry.js +1 -0
  22. package/dist/brandsync-wc/p-5ae9e60e.entry.js +1 -0
  23. package/dist/brandsync-wc/p-6b469b2d.entry.js +1 -0
  24. package/dist/brandsync-wc/p-6d85fba4.entry.js +1 -0
  25. package/dist/brandsync-wc/p-6e95eb36.entry.js +1 -0
  26. package/dist/brandsync-wc/{p-84ae4420.entry.js → p-73217b90.entry.js} +1 -1
  27. package/dist/brandsync-wc/p-752c04c8.entry.js +1 -0
  28. package/dist/brandsync-wc/p-79af762c.entry.js +1 -0
  29. package/dist/brandsync-wc/p-81d49240.entry.js +1 -0
  30. package/dist/brandsync-wc/p-91551e7b.entry.js +1 -0
  31. package/dist/brandsync-wc/p-917a5bbc.entry.js +1 -0
  32. package/dist/brandsync-wc/{p-0b858120.entry.js → p-9876e83c.entry.js} +1 -1
  33. package/dist/brandsync-wc/p-9bcd99aa.entry.js +1 -0
  34. package/dist/brandsync-wc/{p-d1dc2ced.entry.js → p-9c4768aa.entry.js} +1 -1
  35. package/dist/brandsync-wc/{p-DP_bvuvB.js → p-Do3l4of3.js} +2 -2
  36. package/dist/brandsync-wc/p-aa43d478.entry.js +1 -0
  37. package/dist/brandsync-wc/p-c3079ad7.entry.js +1 -0
  38. package/dist/brandsync-wc/{p-74a4dd91.entry.js → p-c3c383dc.entry.js} +1 -1
  39. package/dist/brandsync-wc/p-cc79e75f.entry.js +1 -0
  40. package/dist/brandsync-wc/p-ce7fc368.entry.js +1 -0
  41. package/dist/brandsync-wc/{p-030a8ba7.entry.js → p-d3265e70.entry.js} +1 -1
  42. package/dist/brandsync-wc/p-d55bbcec.entry.js +1 -0
  43. package/dist/brandsync-wc/{p-1bf0b2d5.entry.js → p-e93e944b.entry.js} +1 -1
  44. package/dist/brandsync-wc/{p-7a605d98.entry.js → p-eb04c578.entry.js} +1 -1
  45. package/dist/brandsync-wc/{p-3c8fbaa8.entry.js → p-f0ae2740.entry.js} +1 -1
  46. package/dist/brandsync-wc/p-f4f22015.entry.js +1 -0
  47. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  48. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +3 -2
  49. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  50. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  51. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  52. package/dist/cjs/bs-attachment.cjs.entry.js +3 -3
  53. package/dist/cjs/bs-avatar.cjs.entry.js +60 -0
  54. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  55. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +56 -0
  56. package/dist/cjs/bs-breadcrumb.cjs.entry.js +33 -0
  57. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +49 -0
  58. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  59. package/dist/cjs/bs-button.cjs.entry.js +3 -3
  60. package/dist/cjs/bs-card.cjs.entry.js +10 -3
  61. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
  62. package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
  63. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  64. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  65. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
  66. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +20 -0
  67. package/dist/cjs/bs-checkbox.cjs.entry.js +14 -3
  68. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +14 -2
  69. package/dist/cjs/bs-composer.cjs.entry.js +37 -4
  70. package/dist/cjs/bs-data-table.cjs.entry.js +3 -3
  71. package/dist/cjs/bs-dialog.cjs.entry.js +110 -0
  72. package/dist/cjs/bs-icon-button.cjs.entry.js +40 -0
  73. package/dist/cjs/bs-inline-tab.cjs.entry.js +69 -0
  74. package/dist/cjs/bs-input.cjs.entry.js +24 -12
  75. package/dist/cjs/bs-logo.cjs.entry.js +165 -0
  76. package/dist/cjs/{bs-menu_2.cjs.entry.js → bs-menu-item.cjs.entry.js} +2 -15
  77. package/dist/cjs/bs-menu.cjs.entry.js +17 -0
  78. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +104 -0
  79. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +87 -0
  80. package/dist/cjs/bs-navigation-header.cjs.entry.js +44 -0
  81. package/dist/cjs/bs-pagination.cjs.entry.js +85 -0
  82. package/dist/cjs/bs-radio.cjs.entry.js +49 -0
  83. package/dist/cjs/bs-slider.cjs.entry.js +191 -0
  84. package/dist/cjs/bs-snackbar.cjs.entry.js +41 -0
  85. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  86. package/dist/cjs/bs-switch.cjs.entry.js +57 -0
  87. package/dist/cjs/bs-tab.cjs.entry.js +80 -0
  88. package/dist/cjs/bs-tabs.cjs.entry.js +39 -0
  89. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  90. package/dist/cjs/{index-CGrdFg95.js → index-DHVw-IPK.js} +2 -1
  91. package/dist/cjs/loader.cjs.js +2 -2
  92. package/dist/collection/collection-manifest.json +21 -3
  93. package/dist/collection/components/bs-ai-chatbot/bs-ai-chatbot.stories.js +26 -11
  94. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +2 -1
  95. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  96. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  97. package/dist/collection/components/bs-attachment/bs-attachment.css +12 -33
  98. package/dist/collection/components/bs-attachment/bs-attachment.js +4 -10
  99. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  100. package/dist/collection/components/bs-avatar/bs-avatar.cmp.test.js +54 -0
  101. package/dist/collection/components/bs-avatar/bs-avatar.css +197 -0
  102. package/dist/collection/components/bs-avatar/bs-avatar.js +251 -0
  103. package/dist/collection/components/bs-avatar/bs-avatar.stories.js +67 -0
  104. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.js +62 -0
  105. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.css +93 -0
  106. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +130 -0
  107. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.js +118 -0
  108. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.css +125 -0
  109. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +192 -0
  110. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.cmp.test.js +58 -0
  111. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.css +18 -0
  112. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +129 -0
  113. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.stories.js +84 -0
  114. package/dist/collection/components/bs-button/{bs-button.cmp.test.js → bs-button/bs-button.cmp.test.js} +26 -0
  115. package/dist/collection/components/bs-button/{bs-button.css → bs-button/bs-button.css} +57 -6
  116. package/dist/collection/components/bs-button/{bs-button.js → bs-button/bs-button.js} +10 -5
  117. package/dist/collection/components/bs-button/{bs-button.stories.js → bs-button/bs-button.stories.js} +2 -27
  118. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.js +83 -0
  119. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.css +346 -0
  120. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +185 -0
  121. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.stories.js +74 -0
  122. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +3 -3
  123. package/dist/collection/components/bs-card/bs-card.cmp.test.js +19 -0
  124. package/dist/collection/components/bs-card/bs-card.css +37 -5
  125. package/dist/collection/components/bs-card/bs-card.js +18 -2
  126. package/dist/collection/components/bs-card/bs-card.stories.js +17 -1
  127. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  128. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  129. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  130. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.css +1 -1
  131. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  132. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  133. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.cmp.test.js +23 -0
  134. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.css +64 -0
  135. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +81 -0
  136. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.stories.js +25 -0
  137. package/dist/collection/components/bs-checkbox/bs-checkbox.cmp.test.js +10 -0
  138. package/dist/collection/components/bs-checkbox/bs-checkbox.css +7 -1
  139. package/dist/collection/components/bs-checkbox/bs-checkbox.js +32 -1
  140. package/dist/collection/components/bs-checkbox/bs-checkbox.stories.js +12 -0
  141. package/dist/collection/components/bs-composer/bs-composer.cmp.test.js +48 -7
  142. package/dist/collection/components/bs-composer/bs-composer.css +15 -0
  143. package/dist/collection/components/bs-composer/bs-composer.js +38 -4
  144. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.cmp.test.js +47 -1
  145. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +20 -1
  146. package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
  147. package/dist/collection/components/{bs-modal/bs-modal.cmp.test.js → bs-dialog/bs-dialog.cmp.test.js} +63 -19
  148. package/dist/collection/components/bs-dialog/bs-dialog.css +130 -0
  149. package/dist/collection/components/bs-dialog/bs-dialog.js +273 -0
  150. package/dist/collection/components/bs-dialog/bs-dialog.stories.js +115 -0
  151. package/dist/collection/components/bs-input/bs-input.cmp.test.js +20 -0
  152. package/dist/collection/components/bs-input/bs-input.css +80 -2
  153. package/dist/collection/components/bs-input/bs-input.js +28 -10
  154. package/dist/collection/components/bs-input/bs-input.stories.js +14 -11
  155. package/dist/collection/components/bs-logo/brandsync-logo-full-dark.js +44 -0
  156. package/dist/collection/components/bs-logo/brandsync-logo-full-light.js +40 -0
  157. package/dist/collection/components/bs-logo/brandsync-logo-mark.js +17 -0
  158. package/dist/collection/components/bs-logo/bs-logo.cmp.test.js +113 -0
  159. package/dist/collection/components/bs-logo/bs-logo.css +79 -0
  160. package/dist/collection/components/bs-logo/bs-logo.js +193 -0
  161. package/dist/collection/components/bs-logo/bs-logo.stories.js +69 -0
  162. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  163. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  164. package/dist/collection/components/bs-pagination/bs-pagination.cmp.test.js +102 -0
  165. package/dist/collection/components/bs-pagination/bs-pagination.css +120 -0
  166. package/dist/collection/components/bs-pagination/bs-pagination.js +233 -0
  167. package/dist/collection/components/bs-pagination/bs-pagination.stories.js +43 -0
  168. package/dist/collection/components/bs-radio/bs-radio.cmp.test.js +76 -0
  169. package/dist/collection/components/bs-radio/bs-radio.css +164 -0
  170. package/dist/collection/components/bs-radio/bs-radio.js +170 -0
  171. package/dist/collection/components/bs-radio/bs-radio.stories.js +56 -0
  172. package/dist/collection/components/bs-slider/bs-slider.cmp.test.js +139 -0
  173. package/dist/collection/components/bs-slider/bs-slider.css +409 -0
  174. package/dist/collection/components/bs-slider/bs-slider.js +499 -0
  175. package/dist/collection/components/bs-slider/bs-slider.stories.js +70 -0
  176. package/dist/collection/components/bs-snackbar/bs-snackbar.cmp.test.js +77 -0
  177. package/dist/collection/components/bs-snackbar/bs-snackbar.css +321 -0
  178. package/dist/collection/components/bs-snackbar/bs-snackbar.js +172 -0
  179. package/dist/collection/components/bs-snackbar/bs-snackbar.stories.js +59 -0
  180. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  181. package/dist/collection/components/bs-switch/bs-switch.cmp.test.js +71 -0
  182. package/dist/collection/components/bs-switch/bs-switch.css +196 -0
  183. package/dist/collection/components/bs-switch/bs-switch.js +185 -0
  184. package/dist/collection/components/bs-switch/bs-switch.stories.js +60 -0
  185. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.cmp.test.js +104 -0
  186. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.css +163 -0
  187. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +192 -0
  188. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.js +95 -0
  189. package/dist/collection/components/bs-tab/bs-tab/bs-tab.cmp.test.js +120 -0
  190. package/dist/collection/components/bs-tab/bs-tab/bs-tab.css +216 -0
  191. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +232 -0
  192. package/dist/collection/components/bs-tab/bs-tab/bs-tab.stories.js +138 -0
  193. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.cmp.test.js +61 -0
  194. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.css +39 -0
  195. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +133 -0
  196. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.stories.js +39 -0
  197. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  198. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +143 -0
  199. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.css +257 -0
  200. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +281 -0
  201. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.js +274 -0
  202. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.js +172 -0
  203. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.css +325 -0
  204. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +314 -0
  205. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.stories.js +78 -0
  206. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.js +77 -0
  207. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.css +106 -0
  208. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +188 -0
  209. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.js +446 -0
  210. package/dist/components/bs-ai-disclaimer.js +1 -1
  211. package/dist/components/bs-ai-greeting.js +1 -1
  212. package/dist/components/bs-ai-thinking.js +1 -1
  213. package/dist/components/bs-attachment-list.js +1 -1
  214. package/dist/components/bs-attachment.js +1 -1
  215. package/dist/components/bs-avatar.d.ts +11 -0
  216. package/dist/components/bs-avatar.js +1 -0
  217. package/dist/components/bs-badge.js +1 -1
  218. package/dist/components/bs-breadcrumb-overflow.d.ts +11 -0
  219. package/dist/components/bs-breadcrumb-overflow.js +1 -0
  220. package/dist/components/bs-breadcrumb.d.ts +11 -0
  221. package/dist/components/bs-breadcrumb.js +1 -0
  222. package/dist/components/bs-breadcrumbs.d.ts +11 -0
  223. package/dist/components/bs-breadcrumbs.js +1 -0
  224. package/dist/components/bs-button-skeleton.js +1 -1
  225. package/dist/components/bs-button.js +1 -1
  226. package/dist/components/bs-card.js +1 -1
  227. package/dist/components/bs-chatbot-feedback.js +1 -1
  228. package/dist/components/bs-chatbot-header.js +1 -1
  229. package/dist/components/bs-chatbot-response-action.js +1 -1
  230. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  231. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  232. package/dist/components/bs-checkbox-skeleton.d.ts +11 -0
  233. package/dist/components/bs-checkbox-skeleton.js +1 -0
  234. package/dist/components/bs-checkbox.js +1 -1
  235. package/dist/components/bs-composer-status-banner.js +1 -1
  236. package/dist/components/bs-composer.js +1 -1
  237. package/dist/components/bs-data-table.js +1 -1
  238. package/dist/components/bs-dialog.d.ts +11 -0
  239. package/dist/components/bs-dialog.js +1 -0
  240. package/dist/components/bs-icon-button.d.ts +11 -0
  241. package/dist/components/bs-icon-button.js +1 -0
  242. package/dist/components/bs-inline-tab.d.ts +11 -0
  243. package/dist/components/bs-inline-tab.js +1 -0
  244. package/dist/components/bs-input.js +1 -1
  245. package/dist/components/{bs-modal.d.ts → bs-logo.d.ts} +4 -4
  246. package/dist/components/bs-logo.js +1 -0
  247. package/dist/components/bs-menu-item.js +1 -1
  248. package/dist/components/bs-menu.js +1 -1
  249. package/dist/components/bs-navigation-drawer-item.d.ts +11 -0
  250. package/dist/components/bs-navigation-drawer-item.js +1 -0
  251. package/dist/components/bs-navigation-drawer.d.ts +11 -0
  252. package/dist/components/bs-navigation-drawer.js +1 -0
  253. package/dist/components/bs-navigation-header.d.ts +11 -0
  254. package/dist/components/bs-navigation-header.js +1 -0
  255. package/dist/components/bs-pagination.d.ts +11 -0
  256. package/dist/components/bs-pagination.js +1 -0
  257. package/dist/components/bs-radio.d.ts +11 -0
  258. package/dist/components/bs-radio.js +1 -0
  259. package/dist/components/bs-slider.d.ts +11 -0
  260. package/dist/components/bs-slider.js +1 -0
  261. package/dist/components/bs-snackbar.d.ts +11 -0
  262. package/dist/components/bs-snackbar.js +1 -0
  263. package/dist/components/bs-source-link.js +1 -1
  264. package/dist/components/bs-switch.d.ts +11 -0
  265. package/dist/components/bs-switch.js +1 -0
  266. package/dist/components/bs-tab.d.ts +11 -0
  267. package/dist/components/bs-tab.js +1 -0
  268. package/dist/components/bs-tabs.d.ts +11 -0
  269. package/dist/components/bs-tabs.js +1 -0
  270. package/dist/components/bs-tooltip.js +1 -1
  271. package/dist/components/index.js +1 -1
  272. package/dist/components/p-BFcVSpES.js +1 -0
  273. package/dist/components/{p-D1cYtKyN.js → p-BJZYe7M4.js} +1 -1
  274. package/dist/components/p-BKaZWFE1.js +1 -0
  275. package/dist/components/{p-BUbGEXL7.js → p-BtX5URLk.js} +1 -1
  276. package/dist/components/{p-B9PrXIl_.js → p-CgaPcyEJ.js} +1 -1
  277. package/dist/components/{p-D2HDHZjz.js → p-qK1XlpTA.js} +1 -1
  278. package/dist/esm/brandsync-wc.js +3 -3
  279. package/dist/esm/bs-ai-disclaimer.entry.js +3 -2
  280. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  281. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  282. package/dist/esm/bs-attachment-list.entry.js +2 -2
  283. package/dist/esm/bs-attachment.entry.js +3 -3
  284. package/dist/esm/bs-avatar.entry.js +58 -0
  285. package/dist/esm/bs-badge.entry.js +1 -1
  286. package/dist/esm/bs-breadcrumb-overflow.entry.js +54 -0
  287. package/dist/esm/bs-breadcrumb.entry.js +31 -0
  288. package/dist/esm/bs-breadcrumbs.entry.js +47 -0
  289. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  290. package/dist/esm/bs-button.entry.js +3 -3
  291. package/dist/esm/bs-card.entry.js +10 -3
  292. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  293. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  294. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  295. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  296. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  297. package/dist/esm/bs-checkbox-skeleton.entry.js +18 -0
  298. package/dist/esm/bs-checkbox.entry.js +14 -3
  299. package/dist/esm/bs-composer-status-banner.entry.js +14 -2
  300. package/dist/esm/bs-composer.entry.js +37 -4
  301. package/dist/esm/bs-data-table.entry.js +3 -3
  302. package/dist/esm/bs-dialog.entry.js +108 -0
  303. package/dist/esm/bs-icon-button.entry.js +38 -0
  304. package/dist/esm/bs-inline-tab.entry.js +67 -0
  305. package/dist/esm/bs-input.entry.js +24 -12
  306. package/dist/esm/bs-logo.entry.js +163 -0
  307. package/dist/esm/{bs-menu_2.entry.js → bs-menu-item.entry.js} +3 -15
  308. package/dist/esm/bs-menu.entry.js +15 -0
  309. package/dist/esm/bs-navigation-drawer-item.entry.js +102 -0
  310. package/dist/esm/bs-navigation-drawer.entry.js +85 -0
  311. package/dist/esm/bs-navigation-header.entry.js +42 -0
  312. package/dist/esm/bs-pagination.entry.js +83 -0
  313. package/dist/esm/bs-radio.entry.js +47 -0
  314. package/dist/esm/bs-slider.entry.js +189 -0
  315. package/dist/esm/bs-snackbar.entry.js +39 -0
  316. package/dist/esm/bs-source-link.entry.js +3 -3
  317. package/dist/esm/bs-switch.entry.js +55 -0
  318. package/dist/esm/bs-tab.entry.js +78 -0
  319. package/dist/esm/bs-tabs.entry.js +37 -0
  320. package/dist/esm/bs-tooltip.entry.js +2 -2
  321. package/dist/esm/{index-DP_bvuvB.js → index-Do3l4of3.js} +2 -2
  322. package/dist/esm/loader.js +3 -3
  323. package/dist/types/components/bs-attachment/bs-attachment.d.ts +3 -9
  324. package/dist/types/components/bs-avatar/bs-avatar.d.ts +67 -0
  325. package/dist/types/components/bs-avatar/bs-avatar.stories.d.ts +20 -0
  326. package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.d.ts +1 -0
  327. package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.d.ts +44 -0
  328. package/dist/types/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.d.ts +69 -0
  329. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.cmp.test.d.ts +1 -0
  330. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.d.ts +45 -0
  331. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.stories.d.ts +14 -0
  332. package/dist/types/components/bs-button/bs-button/bs-button.cmp.test.d.ts +1 -0
  333. package/dist/types/components/bs-button/{bs-button.d.ts → bs-button/bs-button.d.ts} +5 -0
  334. package/dist/types/components/bs-button/{bs-button.stories.d.ts → bs-button/bs-button.stories.d.ts} +0 -2
  335. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.d.ts +1 -0
  336. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +51 -0
  337. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.stories.d.ts +16 -0
  338. package/dist/types/components/bs-button-skeleton/bs-button-skeleton.d.ts +1 -1
  339. package/dist/types/components/bs-button-skeleton/bs-button-skeleton.stories.d.ts +1 -1
  340. package/dist/types/components/bs-card/bs-card.d.ts +10 -1
  341. package/dist/types/components/bs-card/bs-card.stories.d.ts +1 -0
  342. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.cmp.test.d.ts +1 -0
  343. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.d.ts +36 -0
  344. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.stories.d.ts +10 -0
  345. package/dist/types/components/bs-checkbox/bs-checkbox.d.ts +11 -0
  346. package/dist/types/components/bs-checkbox/bs-checkbox.stories.d.ts +1 -0
  347. package/dist/types/components/bs-composer/bs-composer.d.ts +26 -2
  348. package/dist/types/components/bs-composer-status-banner/bs-composer-status-banner.d.ts +14 -0
  349. package/dist/types/components/bs-dialog/bs-dialog.cmp.test.d.ts +1 -0
  350. package/dist/types/components/bs-dialog/bs-dialog.d.ts +74 -0
  351. package/dist/types/components/{bs-modal/bs-modal.stories.d.ts → bs-dialog/bs-dialog.stories.d.ts} +5 -3
  352. package/dist/types/components/bs-input/bs-input.d.ts +8 -1
  353. package/dist/types/components/bs-logo/brandsync-logo-full-dark.d.ts +1 -0
  354. package/dist/types/components/bs-logo/brandsync-logo-full-light.d.ts +1 -0
  355. package/dist/types/components/bs-logo/brandsync-logo-mark.d.ts +1 -0
  356. package/dist/types/components/bs-logo/bs-logo.cmp.test.d.ts +1 -0
  357. package/dist/types/components/bs-logo/bs-logo.d.ts +73 -0
  358. package/dist/types/components/bs-logo/bs-logo.stories.d.ts +17 -0
  359. package/dist/types/components/bs-pagination/bs-pagination.cmp.test.d.ts +1 -0
  360. package/dist/types/components/bs-pagination/bs-pagination.d.ts +51 -0
  361. package/dist/types/components/bs-pagination/bs-pagination.stories.d.ts +14 -0
  362. package/dist/types/components/bs-radio/bs-radio.cmp.test.d.ts +1 -0
  363. package/dist/types/components/bs-radio/bs-radio.d.ts +45 -0
  364. package/dist/types/components/bs-radio/bs-radio.stories.d.ts +16 -0
  365. package/dist/types/components/bs-slider/bs-slider.cmp.test.d.ts +1 -0
  366. package/dist/types/components/bs-slider/bs-slider.d.ts +109 -0
  367. package/dist/types/components/bs-slider/bs-slider.stories.d.ts +24 -0
  368. package/dist/types/components/bs-snackbar/bs-snackbar.cmp.test.d.ts +1 -0
  369. package/dist/types/components/bs-snackbar/bs-snackbar.d.ts +51 -0
  370. package/dist/types/components/bs-snackbar/bs-snackbar.stories.d.ts +16 -0
  371. package/dist/types/components/bs-switch/bs-switch.cmp.test.d.ts +1 -0
  372. package/dist/types/components/bs-switch/bs-switch.d.ts +45 -0
  373. package/dist/types/components/bs-switch/bs-switch.stories.d.ts +17 -0
  374. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.cmp.test.d.ts +1 -0
  375. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.d.ts +65 -0
  376. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.d.ts +22 -0
  377. package/dist/types/components/bs-tab/bs-tab/bs-tab.cmp.test.d.ts +1 -0
  378. package/dist/types/components/bs-tab/bs-tab/bs-tab.d.ts +74 -0
  379. package/dist/types/components/bs-tab/bs-tab/bs-tab.stories.d.ts +30 -0
  380. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.cmp.test.d.ts +1 -0
  381. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +45 -0
  382. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.stories.d.ts +13 -0
  383. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.d.ts +1 -0
  384. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.d.ts +104 -0
  385. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.d.ts +19 -0
  386. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.d.ts +1 -0
  387. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.d.ts +103 -0
  388. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.stories.d.ts +20 -0
  389. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.d.ts +1 -0
  390. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.d.ts +60 -0
  391. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.d.ts +25 -0
  392. package/dist/types/components.d.ts +2908 -114
  393. package/package.json +1 -1
  394. package/dist/brandsync-wc/p-2598ca88.entry.js +0 -1
  395. package/dist/brandsync-wc/p-3dd9b814.entry.js +0 -1
  396. package/dist/brandsync-wc/p-41edb0a2.entry.js +0 -1
  397. package/dist/brandsync-wc/p-6254dcbe.entry.js +0 -1
  398. package/dist/brandsync-wc/p-7131d0a1.entry.js +0 -1
  399. package/dist/brandsync-wc/p-8c302968.entry.js +0 -1
  400. package/dist/brandsync-wc/p-8d78171b.entry.js +0 -1
  401. package/dist/brandsync-wc/p-93e44903.entry.js +0 -1
  402. package/dist/brandsync-wc/p-aa45d877.entry.js +0 -1
  403. package/dist/cjs/bs-modal.cjs.entry.js +0 -69
  404. package/dist/collection/components/bs-modal/bs-modal.css +0 -66
  405. package/dist/collection/components/bs-modal/bs-modal.js +0 -198
  406. package/dist/collection/components/bs-modal/bs-modal.stories.js +0 -38
  407. package/dist/components/bs-modal.js +0 -1
  408. package/dist/esm/bs-modal.entry.js +0 -67
  409. package/dist/types/components/bs-modal/bs-modal.d.ts +0 -45
  410. /package/dist/types/components/{bs-button/bs-button.cmp.test.d.ts → bs-avatar/bs-avatar.cmp.test.d.ts} +0 -0
  411. /package/dist/types/components/{bs-modal/bs-modal.cmp.test.d.ts → bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.d.ts} +0 -0
@@ -0,0 +1,196 @@
1
+ /**
2
+ * @prop --bs-switch-radius: Corner radius of the track, constant across all sizes. Aliased to --bs-border-radius-full.
3
+ * @prop --bs-switch-padding: Internal padding of the track around the knob, constant across all sizes. Aliased to --bs-spacing-25.
4
+ * @prop --bs-switch-gap: Gap between the track and the label text. Aliased to --bs-spacing-100.
5
+ * @prop --bs-switch-track-width-md: Track width at size="md".
6
+ * @prop --bs-switch-track-height-md: Track height at size="md".
7
+ * @prop --bs-switch-track-width-lg: Track width at size="lg".
8
+ * @prop --bs-switch-track-height-lg: Track height at size="lg".
9
+ * @prop --bs-switch-knob-size-md: Knob width/height at size="md".
10
+ * @prop --bs-switch-knob-size-lg: Knob width/height at size="lg".
11
+ * @prop --bs-switch-border-width: Track border width, constant across all sizes.
12
+ * @prop --bs-switch-track-bg: Track background, unchecked/resting. Aliased to --bs-switch-track-bg-default.
13
+ * @prop --bs-switch-track-bg-hover: Track background, unchecked/hovered. This is the global vendored token directly (src/global/tokens.css) -- not locally re-aliased under a different name here, since it already carries this exact name; see the :host comment below for why.
14
+ * @prop --bs-switch-track-bg-checked: Track background, checked/resting. Aliased to --bs-switch-track-bg-checked-default.
15
+ * @prop --bs-switch-track-bg-checked-hover: Track background, checked/hovered. The global vendored token directly, same reasoning as --bs-switch-track-bg-hover above.
16
+ * @prop --bs-switch-track-bg-checked-focus: Track background, checked/focused. Aliased to --bs-switch-track-bg-checked-focused.
17
+ * @prop --bs-switch-track-bg-disabled: Track background, disabled (either checked state). The global vendored token directly, same reasoning as --bs-switch-track-bg-hover above.
18
+ * @prop --bs-switch-track-border: Track border color, resting/disabled. Aliased to --bs-switch-track-border-default.
19
+ * @prop --bs-switch-track-border-hover: Track border color, hovered or focused. The global vendored token directly, same reasoning as --bs-switch-track-bg-hover above.
20
+ * @prop --bs-switch-focus-ring-color: Outer focus ring color, drawn outside the track. Aliased to --bs-switch-track-border-focus.
21
+ * @prop --bs-switch-knob-bg: Knob background, resting. Aliased to --bs-switch-thumb-bg-default.
22
+ * @prop --bs-switch-knob-bg-hover: Knob background, hovered. Aliased to --bs-switch-thumb-bg-hover.
23
+ * @prop --bs-switch-knob-bg-checked: Knob background, checked. Aliased to --bs-switch-thumb-bg-checked.
24
+ * @prop --bs-switch-knob-bg-disabled: Knob background, disabled. Aliased to --bs-switch-thumb-bg-disabled.
25
+ * @prop --bs-switch-label-color: Label text color. Aliased to --bs-text-default.
26
+ * @prop --bs-switch-label-color-disabled: Label text color, disabled. Aliased to --bs-text-on-disabled.
27
+ */
28
+ :host {
29
+ display: inline-block;
30
+
31
+ --bs-switch-radius: var(--bs-border-radius-full);
32
+ --bs-switch-padding: var(--bs-spacing-25);
33
+ --bs-switch-gap: var(--bs-spacing-100);
34
+
35
+ --bs-switch-track-width-md: 36px;
36
+ --bs-switch-track-height-md: 20px;
37
+ --bs-switch-track-width-lg: 48px;
38
+ --bs-switch-track-height-lg: 28px;
39
+
40
+ --bs-switch-knob-size-md: 16px;
41
+ --bs-switch-knob-size-lg: 24px;
42
+
43
+ --bs-switch-border-width: 1px;
44
+
45
+ /* --bs-switch-track-bg-hover/-checked-hover/-disabled and --bs-switch-track-border-hover are
46
+ deliberately NOT re-declared here, unlike their siblings below -- the global vendored tokens
47
+ in src/global/tokens.css already use these exact same names (they were pre-vendored
48
+ specifically for this component), so a local :host alias under the identical name would be a
49
+ self-reference (var(--x) used inside the declaration of --x on the same element), which per
50
+ the CSS spec resolves to invalid/empty, not "inherit the global value" as it might look --
51
+ verified empirically: with the self-referencing declaration in place, all four resolved to ""
52
+ and the track's hover background rendered fully transparent. Omitting the local declaration
53
+ entirely lets the global token inherit through unchanged, which is the correct/only fix. */
54
+ --bs-switch-track-bg: var(--bs-switch-track-bg-default);
55
+ --bs-switch-track-bg-checked: var(--bs-switch-track-bg-checked-default);
56
+ --bs-switch-track-bg-checked-focus: var(--bs-switch-track-bg-checked-focused);
57
+
58
+ --bs-switch-track-border: var(--bs-switch-track-border-default);
59
+ --bs-switch-focus-ring-color: var(--bs-switch-track-border-focus);
60
+
61
+ --bs-switch-knob-bg: var(--bs-switch-thumb-bg-default);
62
+ --bs-switch-knob-bg-hover: var(--bs-switch-thumb-bg-hover);
63
+ --bs-switch-knob-bg-checked: var(--bs-switch-thumb-bg-checked);
64
+ --bs-switch-knob-bg-disabled: var(--bs-switch-thumb-bg-disabled);
65
+
66
+ --bs-switch-label-color: var(--bs-text-default);
67
+ --bs-switch-label-color-disabled: var(--bs-text-on-disabled);
68
+ }
69
+
70
+ .bs-switch {
71
+ position: relative;
72
+ display: inline-flex;
73
+ align-items: center;
74
+ gap: var(--bs-switch-gap);
75
+ font-family: inherit;
76
+ cursor: pointer;
77
+ }
78
+
79
+ .bs-switch--disabled {
80
+ cursor: not-allowed;
81
+ }
82
+
83
+ /* The native input is visually hidden but stays in the layout/focus/keyboard chain -- opacity: 0
84
+ (not display: none) so it can still receive and show focus. */
85
+ .bs-switch__input {
86
+ position: absolute;
87
+ top: 0;
88
+ left: 0;
89
+ width: 100%;
90
+ height: 100%;
91
+ margin: 0;
92
+ padding: 0;
93
+ opacity: 0;
94
+ cursor: pointer;
95
+ }
96
+
97
+ .bs-switch__input:disabled {
98
+ cursor: not-allowed;
99
+ }
100
+
101
+ .bs-switch__track {
102
+ box-sizing: border-box;
103
+ position: relative;
104
+ display: flex;
105
+ align-items: center;
106
+ justify-content: flex-start;
107
+ flex-shrink: 0;
108
+ padding: var(--bs-switch-padding);
109
+ border: var(--bs-switch-border-width) solid var(--bs-switch-track-border);
110
+ border-radius: var(--bs-switch-radius);
111
+ background: var(--bs-switch-track-bg);
112
+ transition: background-color 0.15s ease, border-color 0.15s ease;
113
+ }
114
+
115
+ .bs-switch__track--md {
116
+ width: var(--bs-switch-track-width-md);
117
+ height: var(--bs-switch-track-height-md);
118
+ }
119
+
120
+ .bs-switch__track--lg {
121
+ width: var(--bs-switch-track-width-lg);
122
+ height: var(--bs-switch-track-height-lg);
123
+ }
124
+
125
+ .bs-switch__track--checked {
126
+ justify-content: flex-end;
127
+ background: var(--bs-switch-track-bg-checked);
128
+ }
129
+
130
+ .bs-switch__knob {
131
+ box-sizing: border-box;
132
+ border-radius: var(--bs-border-radius-full);
133
+ background: var(--bs-switch-knob-bg);
134
+ transition: background-color 0.15s ease;
135
+ }
136
+
137
+ .bs-switch__knob--md {
138
+ width: var(--bs-switch-knob-size-md);
139
+ height: var(--bs-switch-knob-size-md);
140
+ }
141
+
142
+ .bs-switch__knob--lg {
143
+ width: var(--bs-switch-knob-size-lg);
144
+ height: var(--bs-switch-knob-size-lg);
145
+ }
146
+
147
+ .bs-switch__track--checked .bs-switch__knob {
148
+ background: var(--bs-switch-knob-bg-checked);
149
+ }
150
+
151
+ /* Hover/focus -- keyed off the hidden native input's pseudo-classes, since it sits on top of and
152
+ is the same size as the track, so it always reflects the user's actual pointer/keyboard target. */
153
+ .bs-switch__input:hover:not(:disabled) ~ .bs-switch__track {
154
+ background: var(--bs-switch-track-bg-hover);
155
+ border-color: var(--bs-switch-track-border-hover);
156
+ }
157
+
158
+ .bs-switch__input:hover:not(:disabled) ~ .bs-switch__track .bs-switch__knob {
159
+ background: var(--bs-switch-knob-bg-hover);
160
+ }
161
+
162
+ .bs-switch__input:hover:not(:disabled) ~ .bs-switch__track--checked {
163
+ background: var(--bs-switch-track-bg-checked-hover);
164
+ }
165
+
166
+ .bs-switch__input:focus-visible ~ .bs-switch__track {
167
+ border-color: var(--bs-switch-track-border-hover);
168
+ outline: 2px solid var(--bs-switch-focus-ring-color);
169
+ outline-offset: 2px;
170
+ }
171
+
172
+ .bs-switch__input:focus-visible ~ .bs-switch__track--checked {
173
+ background: var(--bs-switch-track-bg-checked-focus);
174
+ }
175
+
176
+ .bs-switch__track--disabled {
177
+ background: var(--bs-switch-track-bg-disabled);
178
+ border-color: var(--bs-switch-track-border);
179
+ }
180
+
181
+ .bs-switch__track--disabled.bs-switch__track--checked {
182
+ background: var(--bs-switch-track-bg-disabled);
183
+ }
184
+
185
+ .bs-switch__knob--disabled {
186
+ background: var(--bs-switch-knob-bg-disabled);
187
+ }
188
+
189
+ .bs-switch__label {
190
+ font-size: var(--bs-font-size-md);
191
+ color: var(--bs-switch-label-color);
192
+ }
193
+
194
+ .bs-switch--disabled .bs-switch__label {
195
+ color: var(--bs-switch-label-color-disabled);
196
+ }
@@ -0,0 +1,185 @@
1
+ import { h } from "@stencil/core";
2
+ /**
3
+ * A toggle switch for an on/off setting that takes effect immediately (no explicit form
4
+ * submission required).
5
+ *
6
+ * ## When to use
7
+ * - A binary setting that applies right away (e.g. "Enable notifications", "Dark mode").
8
+ *
9
+ * ## When not to use
10
+ * - A binary choice that's part of a form submitted later, or one item within a group of
11
+ * independent choices -- use `bs-checkbox` instead.
12
+ * - A single mutually-exclusive choice from a set -- use a radio group instead.
13
+ *
14
+ * @slot - Default slot: the label text.
15
+ * @part track - The visual pill-shaped track.
16
+ * @part knob - The sliding circular knob.
17
+ * @part label - The label text wrapper.
18
+ */
19
+ // Note: this component's CSS Custom Properties are documented via @prop comments in
20
+ // bs-switch.css, not here.
21
+ export class BsSwitch {
22
+ el;
23
+ /** Sizing scale. Controls the track's width/height and the knob's diameter. */
24
+ size = 'lg';
25
+ /** Whether the switch is on. Mutable so clicking the label/input toggles it directly, and
26
+ * reflected so consumers can target `bs-switch[checked]` via CSS. */
27
+ checked = false;
28
+ /** Disables the switch: sets the native `disabled` attribute, suppresses hover/focus styling,
29
+ * and prevents toggling. */
30
+ disabled = false;
31
+ /**
32
+ * Accessible name for the switch. Required whenever the default (label) slot is empty (e.g. a
33
+ * bare "enabled" switch in a table row) -- without it, the internal native `<input>` has no
34
+ * accessible name at all. Setting `aria-label` directly on the `<bs-switch>` host does NOT
35
+ * work for this: that attribute stays on the light-DOM host and is never forwarded into the
36
+ * shadow DOM by the browser, so the actual focusable element (the native `<input>` inside) stays
37
+ * nameless. This prop exists specifically to bridge that gap -- same pattern as `bs-button`'s and
38
+ * `bs-checkbox`'s identical `ariaLabel` prop, both of which explicitly bind it onto their own
39
+ * internal focusable element for the same reason.
40
+ */
41
+ ariaLabel = null;
42
+ /** Emitted when the checked state changes via user interaction, with the new `checked` value. */
43
+ bsChange;
44
+ onChange = (ev) => {
45
+ const checked = ev.target.checked;
46
+ this.checked = checked;
47
+ this.bsChange.emit(checked);
48
+ };
49
+ render() {
50
+ const trackClasses = [
51
+ 'bs-switch__track',
52
+ `bs-switch__track--${this.size}`,
53
+ this.checked ? 'bs-switch__track--checked' : '',
54
+ this.disabled ? 'bs-switch__track--disabled' : '',
55
+ ]
56
+ .filter(Boolean)
57
+ .join(' ');
58
+ const knobClasses = ['bs-switch__knob', `bs-switch__knob--${this.size}`, this.disabled ? 'bs-switch__knob--disabled' : '']
59
+ .filter(Boolean)
60
+ .join(' ');
61
+ return (h("label", { key: '888dbe0671ca3c921bc3407c3b78f3cedc772054', class: `bs-switch ${this.disabled ? 'bs-switch--disabled' : ''}` }, h("input", { key: '8883e408fb0f81448bbe7acbf69e3ea73b27b372', class: "bs-switch__input", type: "checkbox", role: "switch", checked: this.checked, disabled: this.disabled, "aria-checked": String(this.checked), "aria-label": this.ariaLabel, onChange: this.onChange }), h("span", { key: '84aa58e74886151ed394543f493d09faa3d5cb89', part: "track", class: trackClasses }, h("span", { key: 'e4bceff4f3419d1f1aa7345fe2083e9e1f1e3b91', part: "knob", class: knobClasses })), h("span", { key: 'e9816fb5961fea50b9c51d395fc359a08d1c4df9', part: "label", class: "bs-switch__label" }, h("slot", { key: '7ec1076999b1a249756a61feee2f9caf969f71c2' }))));
62
+ }
63
+ static get is() { return "bs-switch"; }
64
+ static get encapsulation() { return "shadow"; }
65
+ static get delegatesFocus() { return true; }
66
+ static get originalStyleUrls() {
67
+ return {
68
+ "$": ["bs-switch.css"]
69
+ };
70
+ }
71
+ static get styleUrls() {
72
+ return {
73
+ "$": ["bs-switch.css"]
74
+ };
75
+ }
76
+ static get properties() {
77
+ return {
78
+ "size": {
79
+ "type": "string",
80
+ "mutable": false,
81
+ "complexType": {
82
+ "original": "BsSwitchSize",
83
+ "resolved": "\"lg\" | \"md\"",
84
+ "references": {
85
+ "BsSwitchSize": {
86
+ "location": "local",
87
+ "path": "/Users/vivka/brandsync-web-components/src/components/bs-switch/bs-switch.tsx",
88
+ "id": "src/components/bs-switch/bs-switch.tsx::BsSwitchSize"
89
+ }
90
+ }
91
+ },
92
+ "required": false,
93
+ "optional": false,
94
+ "docs": {
95
+ "tags": [],
96
+ "text": "Sizing scale. Controls the track's width/height and the knob's diameter."
97
+ },
98
+ "getter": false,
99
+ "setter": false,
100
+ "reflect": false,
101
+ "attribute": "size",
102
+ "defaultValue": "'lg'"
103
+ },
104
+ "checked": {
105
+ "type": "boolean",
106
+ "mutable": true,
107
+ "complexType": {
108
+ "original": "boolean",
109
+ "resolved": "boolean",
110
+ "references": {}
111
+ },
112
+ "required": false,
113
+ "optional": false,
114
+ "docs": {
115
+ "tags": [],
116
+ "text": "Whether the switch is on. Mutable so clicking the label/input toggles it directly, and\nreflected so consumers can target `bs-switch[checked]` via CSS."
117
+ },
118
+ "getter": false,
119
+ "setter": false,
120
+ "reflect": true,
121
+ "attribute": "checked",
122
+ "defaultValue": "false"
123
+ },
124
+ "disabled": {
125
+ "type": "boolean",
126
+ "mutable": false,
127
+ "complexType": {
128
+ "original": "boolean",
129
+ "resolved": "boolean",
130
+ "references": {}
131
+ },
132
+ "required": false,
133
+ "optional": false,
134
+ "docs": {
135
+ "tags": [],
136
+ "text": "Disables the switch: sets the native `disabled` attribute, suppresses hover/focus styling,\nand prevents toggling."
137
+ },
138
+ "getter": false,
139
+ "setter": false,
140
+ "reflect": false,
141
+ "attribute": "disabled",
142
+ "defaultValue": "false"
143
+ },
144
+ "ariaLabel": {
145
+ "type": "string",
146
+ "mutable": false,
147
+ "complexType": {
148
+ "original": "string | null",
149
+ "resolved": "string",
150
+ "references": {}
151
+ },
152
+ "required": false,
153
+ "optional": false,
154
+ "docs": {
155
+ "tags": [],
156
+ "text": "Accessible name for the switch. Required whenever the default (label) slot is empty (e.g. a\nbare \"enabled\" switch in a table row) -- without it, the internal native `<input>` has no\naccessible name at all. Setting `aria-label` directly on the `<bs-switch>` host does NOT\nwork for this: that attribute stays on the light-DOM host and is never forwarded into the\nshadow DOM by the browser, so the actual focusable element (the native `<input>` inside) stays\nnameless. This prop exists specifically to bridge that gap -- same pattern as `bs-button`'s and\n`bs-checkbox`'s identical `ariaLabel` prop, both of which explicitly bind it onto their own\ninternal focusable element for the same reason."
157
+ },
158
+ "getter": false,
159
+ "setter": false,
160
+ "reflect": false,
161
+ "attribute": "aria-label",
162
+ "defaultValue": "null"
163
+ }
164
+ };
165
+ }
166
+ static get events() {
167
+ return [{
168
+ "method": "bsChange",
169
+ "name": "bsChange",
170
+ "bubbles": true,
171
+ "cancelable": true,
172
+ "composed": true,
173
+ "docs": {
174
+ "tags": [],
175
+ "text": "Emitted when the checked state changes via user interaction, with the new `checked` value."
176
+ },
177
+ "complexType": {
178
+ "original": "boolean",
179
+ "resolved": "boolean",
180
+ "references": {}
181
+ }
182
+ }];
183
+ }
184
+ static get elementRef() { return "el"; }
185
+ }
@@ -0,0 +1,60 @@
1
+ import { html } from "lit";
2
+ import { componentDescription, propDescription } from "../../stories-utils";
3
+ const sizes = ['md', 'lg'];
4
+ const meta = {
5
+ title: 'Components/bs-switch',
6
+ parameters: { docs: { description: { component: componentDescription('bs-switch') } } },
7
+ render: args => html `
8
+ <bs-switch size=${args.size} ?checked=${args.checked} ?disabled=${args.disabled}>
9
+ ${args.label}
10
+ </bs-switch>
11
+ `,
12
+ argTypes: {
13
+ size: { control: 'select', options: sizes, description: propDescription('bs-switch', 'size') },
14
+ checked: { control: 'boolean', description: propDescription('bs-switch', 'checked') },
15
+ disabled: { control: 'boolean', description: propDescription('bs-switch', 'disabled') },
16
+ label: { control: 'text' },
17
+ },
18
+ args: {
19
+ size: 'lg',
20
+ checked: false,
21
+ disabled: false,
22
+ label: 'Enable notifications',
23
+ },
24
+ };
25
+ export default meta;
26
+ export const Default = {};
27
+ export const Checked = {
28
+ args: { checked: true },
29
+ };
30
+ export const Disabled = {
31
+ args: { disabled: true },
32
+ };
33
+ export const Medium = {
34
+ args: { size: 'md', checked: true },
35
+ };
36
+ export const Large = {
37
+ args: { size: 'lg', checked: true },
38
+ };
39
+ export const AllCombinations = {
40
+ name: 'All combinations',
41
+ render: () => html `
42
+ <div style="display: grid; grid-template-columns: repeat(5, auto); gap: 24px; align-items: center;">
43
+ <span></span>
44
+ <strong>Unchecked</strong>
45
+ <strong>Checked</strong>
46
+ <strong>Disabled</strong>
47
+ <strong>Disabled + checked</strong>
48
+ <strong>Md</strong>
49
+ <bs-switch size="md"></bs-switch>
50
+ <bs-switch size="md" checked></bs-switch>
51
+ <bs-switch size="md" disabled></bs-switch>
52
+ <bs-switch size="md" disabled checked></bs-switch>
53
+ <strong>Lg</strong>
54
+ <bs-switch size="lg"></bs-switch>
55
+ <bs-switch size="lg" checked></bs-switch>
56
+ <bs-switch size="lg" disabled></bs-switch>
57
+ <bs-switch size="lg" disabled checked></bs-switch>
58
+ </div>
59
+ `,
60
+ };
@@ -0,0 +1,104 @@
1
+ import { render, h, describe, it, expect } from "@stencil/vitest";
2
+ describe('bs-inline-tab', () => {
3
+ it('renders a button with role="tab" and part="tab"', async () => {
4
+ const { root } = await render(h("bs-inline-tab", null, "Overview"));
5
+ const button = root.shadowRoot.querySelector('[part="tab"]');
6
+ expect(button).not.toBeNull();
7
+ expect(button.tagName).toBe('BUTTON');
8
+ expect(button.getAttribute('role')).toBe('tab');
9
+ expect(button.getAttribute('type')).toBe('button');
10
+ });
11
+ it('reflects ariaLabel to the aria-label attribute, for icon-only accessible names', async () => {
12
+ const { root } = await render(h("bs-inline-tab", { ariaLabel: "Home" }, h("span", { slot: "icon" }, "ICON")));
13
+ const button = root.shadowRoot.querySelector('[part="tab"]');
14
+ expect(button).toEqualAttribute('aria-label', 'Home');
15
+ });
16
+ it('does not set aria-label when ariaLabel is not provided', async () => {
17
+ const { root } = await render(h("bs-inline-tab", null, "Overview"));
18
+ const button = root.shadowRoot.querySelector('[part="tab"]');
19
+ expect(button).not.toHaveAttribute('aria-label');
20
+ });
21
+ describe('layout variants', () => {
22
+ it('text-only: renders the label, no icon space reserved', async () => {
23
+ const { root } = await render(h("bs-inline-tab", null, "Overview"));
24
+ expect(root).toHaveTextContent('Overview');
25
+ const icon = root.shadowRoot.querySelector('[part="icon"]');
26
+ expect(icon).not.toHaveClass('bs-inline-tab__icon--has-content');
27
+ expect(getComputedStyle(icon).display).toBe('none');
28
+ const label = root.shadowRoot.querySelector('[part="label"]');
29
+ expect(label).toHaveClass('bs-inline-tab__label--has-content');
30
+ });
31
+ it('icon + label: renders both, no icon-only class', async () => {
32
+ const { root } = await render(h("bs-inline-tab", null, h("span", { slot: "icon" }, "ICON"), "Overview"));
33
+ const icon = root.shadowRoot.querySelector('[part="icon"]');
34
+ expect(icon).toHaveClass('bs-inline-tab__icon--has-content');
35
+ const label = root.shadowRoot.querySelector('[part="label"]');
36
+ expect(label).toHaveClass('bs-inline-tab__label--has-content');
37
+ const button = root.shadowRoot.querySelector('[part="tab"]');
38
+ expect(button).not.toHaveClass('bs-inline-tab--icon-only');
39
+ expect(button).toHaveClass('bs-inline-tab--has-icon');
40
+ });
41
+ it('icon-only: renders the icon, no label space reserved, requires ariaLabel', async () => {
42
+ const { root } = await render(h("bs-inline-tab", { ariaLabel: "Home" }, h("span", { slot: "icon" }, "ICON")));
43
+ const icon = root.shadowRoot.querySelector('[part="icon"]');
44
+ expect(icon).toHaveClass('bs-inline-tab__icon--has-content');
45
+ const label = root.shadowRoot.querySelector('[part="label"]');
46
+ expect(label).not.toHaveClass('bs-inline-tab__label--has-content');
47
+ expect(getComputedStyle(label).display).toBe('none');
48
+ const button = root.shadowRoot.querySelector('[part="tab"]');
49
+ expect(button).toHaveClass('bs-inline-tab--icon-only');
50
+ expect(button).toEqualAttribute('aria-label', 'Home');
51
+ });
52
+ });
53
+ describe('selected', () => {
54
+ it('applies selected styling and reflects the attribute, but is false by default', async () => {
55
+ const { root } = await render(h("bs-inline-tab", null, "Overview"));
56
+ const button = root.shadowRoot.querySelector('[part="tab"]');
57
+ expect(button).not.toHaveClass('bs-inline-tab--selected');
58
+ expect(button).toEqualAttribute('aria-selected', 'false');
59
+ });
60
+ it('reflects selected as an attribute and applies selected styling', async () => {
61
+ const { root } = await render(h("bs-inline-tab", { selected: true }, "Overview"));
62
+ expect(root).toHaveAttribute('selected');
63
+ const button = root.shadowRoot.querySelector('[part="tab"]');
64
+ expect(button).toHaveClass('bs-inline-tab--selected');
65
+ expect(button).toEqualAttribute('aria-selected', 'true');
66
+ });
67
+ it('does not self-toggle selected on click', async () => {
68
+ const { root, waitForChanges } = await render(h("bs-inline-tab", null, "Overview"));
69
+ const button = root.shadowRoot.querySelector('[part="tab"]');
70
+ button.click();
71
+ await waitForChanges();
72
+ expect(root.selected).toBe(false);
73
+ expect(button).not.toHaveClass('bs-inline-tab--selected');
74
+ });
75
+ });
76
+ it('emits bsSelect when clicked', async () => {
77
+ const { root, spyOnEvent } = await render(h("bs-inline-tab", null, "Overview"));
78
+ const selectSpy = spyOnEvent('bsSelect');
79
+ root.shadowRoot.querySelector('[part="tab"]').click();
80
+ expect(selectSpy).toHaveReceivedEventTimes(1);
81
+ });
82
+ describe('disabled', () => {
83
+ it('applies disabled styling, sets the native disabled attribute and aria-disabled', async () => {
84
+ const { root } = await render(h("bs-inline-tab", { disabled: true }, "Overview"));
85
+ const button = root.shadowRoot.querySelector('[part="tab"]');
86
+ expect(button).toHaveClass('bs-inline-tab--disabled');
87
+ expect(button).toHaveAttribute('disabled');
88
+ expect(button).toEqualAttribute('aria-disabled', 'true');
89
+ });
90
+ it('does not emit bsSelect when clicked while disabled', async () => {
91
+ const { root, spyOnEvent } = await render(h("bs-inline-tab", { disabled: true }, "Overview"));
92
+ const selectSpy = spyOnEvent('bsSelect');
93
+ root.shadowRoot.querySelector('[part="tab"]').click();
94
+ expect(selectSpy).toHaveReceivedEventTimes(0);
95
+ });
96
+ it('applies both the disabled and selected classes when both are set (disabled always wins in CSS precedence)', async () => {
97
+ const { root } = await render(h("bs-inline-tab", { disabled: true, selected: true }, "Overview"));
98
+ const button = root.shadowRoot.querySelector('[part="tab"]');
99
+ expect(button).toHaveClass('bs-inline-tab--disabled');
100
+ expect(button).toHaveClass('bs-inline-tab--selected');
101
+ expect(button).toHaveAttribute('disabled');
102
+ });
103
+ });
104
+ });