@brandsync/wc 0.0.10 → 0.0.12

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 (300) hide show
  1. package/custom-elements.json +3584 -508
  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-b1e1b2d6.entry.js → p-09aa03d1.entry.js} +1 -1
  5. package/dist/brandsync-wc/p-0eee5477.entry.js +1 -0
  6. package/dist/brandsync-wc/p-0fa017ce.entry.js +1 -0
  7. package/dist/brandsync-wc/p-12ec9e92.entry.js +1 -0
  8. package/dist/brandsync-wc/{p-3dacae70.entry.js → p-1900f6ce.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-575ce905.entry.js → p-1adc59be.entry.js} +1 -1
  10. package/dist/brandsync-wc/p-1c6fa697.entry.js +1 -0
  11. package/dist/brandsync-wc/{p-dd747a12.entry.js → p-1cf715aa.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-8a78d6ea.entry.js → p-20dbc6a1.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-a34f460d.entry.js → p-23457a21.entry.js} +1 -1
  14. package/dist/brandsync-wc/p-266f5dde.entry.js +1 -0
  15. package/dist/brandsync-wc/p-2a65aabb.entry.js +1 -0
  16. package/dist/brandsync-wc/{p-8d12ed96.entry.js → p-2c51d738.entry.js} +1 -1
  17. package/dist/brandsync-wc/p-3b31f7c7.entry.js +1 -0
  18. package/dist/brandsync-wc/p-46ddc8e1.entry.js +1 -0
  19. package/dist/brandsync-wc/p-56c66448.entry.js +1 -0
  20. package/dist/brandsync-wc/{p-18af02df.entry.js → p-57fdbb76.entry.js} +1 -1
  21. package/dist/brandsync-wc/{p-7776b57b.entry.js → p-64e2a7d7.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-805644e4.entry.js → p-6e854e92.entry.js} +1 -1
  23. package/dist/brandsync-wc/p-72a33f88.entry.js +1 -0
  24. package/dist/brandsync-wc/p-8049f9f2.entry.js +1 -0
  25. package/dist/brandsync-wc/{p-d682675e.entry.js → p-88a0abee.entry.js} +1 -1
  26. package/dist/brandsync-wc/p-8b662ee3.entry.js +1 -0
  27. package/dist/brandsync-wc/{p-94ed898a.entry.js → p-8ded1eb6.entry.js} +1 -1
  28. package/dist/brandsync-wc/{p-nLORuTUY.js → p-DST5-cTx.js} +2 -2
  29. package/dist/brandsync-wc/p-a5b15061.entry.js +1 -0
  30. package/dist/brandsync-wc/{p-30a0e168.entry.js → p-aba300a9.entry.js} +1 -1
  31. package/dist/brandsync-wc/p-b24a980b.entry.js +1 -0
  32. package/dist/brandsync-wc/{p-96f374be.entry.js → p-b289450a.entry.js} +1 -1
  33. package/dist/brandsync-wc/{p-880ea3f8.entry.js → p-b8a2f882.entry.js} +1 -1
  34. package/dist/brandsync-wc/p-c320b6b4.entry.js +1 -0
  35. package/dist/brandsync-wc/{p-1515498e.entry.js → p-d4e3ca77.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-ce0914a7.entry.js → p-dd09d335.entry.js} +1 -1
  37. package/dist/brandsync-wc/p-ef8522b5.entry.js +1 -0
  38. package/dist/brandsync-wc/p-f04db1b0.entry.js +1 -0
  39. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  40. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +3 -2
  41. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  42. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  43. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  44. package/dist/cjs/bs-attachment.cjs.entry.js +3 -3
  45. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  46. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  47. package/dist/cjs/bs-button.cjs.entry.js +3 -3
  48. package/dist/cjs/bs-card.cjs.entry.js +1 -1
  49. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
  50. package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
  51. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  52. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  53. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
  54. package/dist/cjs/bs-checkbox.cjs.entry.js +94 -0
  55. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +14 -2
  56. package/dist/cjs/bs-composer.cjs.entry.js +37 -4
  57. package/dist/cjs/bs-data-table.cjs.entry.js +3 -3
  58. package/dist/cjs/bs-icon-button.cjs.entry.js +40 -0
  59. package/dist/cjs/bs-inline-tab.cjs.entry.js +69 -0
  60. package/dist/cjs/bs-input.cjs.entry.js +3 -3
  61. package/dist/cjs/bs-logo.cjs.entry.js +165 -0
  62. package/dist/cjs/bs-menu_2.cjs.entry.js +3 -3
  63. package/dist/cjs/bs-modal.cjs.entry.js +1 -1
  64. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +104 -0
  65. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +81 -0
  66. package/dist/cjs/bs-navigation-header.cjs.entry.js +44 -0
  67. package/dist/cjs/bs-radio.cjs.entry.js +49 -0
  68. package/dist/cjs/bs-slider.cjs.entry.js +191 -0
  69. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  70. package/dist/cjs/bs-switch.cjs.entry.js +57 -0
  71. package/dist/cjs/bs-tab.cjs.entry.js +80 -0
  72. package/dist/cjs/bs-tabs.cjs.entry.js +39 -0
  73. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  74. package/dist/cjs/{index-CVh-sqA_.js → index-B3sdhEGk.js} +74 -2
  75. package/dist/cjs/loader.cjs.js +2 -2
  76. package/dist/collection/collection-manifest.json +14 -2
  77. package/dist/collection/components/bs-ai-chatbot/bs-ai-chatbot.stories.js +26 -11
  78. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +2 -1
  79. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  80. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  81. package/dist/collection/components/bs-attachment/bs-attachment.css +12 -33
  82. package/dist/collection/components/bs-attachment/bs-attachment.js +4 -10
  83. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  84. package/dist/collection/components/bs-button/{bs-button.cmp.test.js → bs-button/bs-button.cmp.test.js} +26 -0
  85. package/dist/collection/components/bs-button/{bs-button.css → bs-button/bs-button.css} +57 -6
  86. package/dist/collection/components/bs-button/{bs-button.js → bs-button/bs-button.js} +10 -5
  87. package/dist/collection/components/bs-button/{bs-button.stories.js → bs-button/bs-button.stories.js} +2 -27
  88. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.js +83 -0
  89. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.css +346 -0
  90. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +185 -0
  91. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.stories.js +74 -0
  92. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +3 -3
  93. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  94. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  95. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  96. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  97. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  98. package/dist/collection/components/bs-checkbox/bs-checkbox.cmp.test.js +117 -0
  99. package/dist/collection/components/bs-checkbox/bs-checkbox.css +199 -0
  100. package/dist/collection/components/bs-checkbox/bs-checkbox.js +265 -0
  101. package/dist/collection/components/bs-checkbox/bs-checkbox.stories.js +65 -0
  102. package/dist/collection/components/bs-composer/bs-composer.cmp.test.js +48 -7
  103. package/dist/collection/components/bs-composer/bs-composer.css +15 -0
  104. package/dist/collection/components/bs-composer/bs-composer.js +38 -4
  105. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.cmp.test.js +47 -1
  106. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +20 -1
  107. package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
  108. package/dist/collection/components/bs-input/bs-input.js +2 -2
  109. package/dist/collection/components/bs-logo/brandsync-logo-full-dark.js +44 -0
  110. package/dist/collection/components/bs-logo/brandsync-logo-full-light.js +40 -0
  111. package/dist/collection/components/bs-logo/brandsync-logo-mark.js +17 -0
  112. package/dist/collection/components/bs-logo/bs-logo.cmp.test.js +113 -0
  113. package/dist/collection/components/bs-logo/bs-logo.css +79 -0
  114. package/dist/collection/components/bs-logo/bs-logo.js +193 -0
  115. package/dist/collection/components/bs-logo/bs-logo.stories.js +69 -0
  116. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  117. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  118. package/dist/collection/components/bs-radio/bs-radio.cmp.test.js +76 -0
  119. package/dist/collection/components/bs-radio/bs-radio.css +164 -0
  120. package/dist/collection/components/bs-radio/bs-radio.js +170 -0
  121. package/dist/collection/components/bs-radio/bs-radio.stories.js +56 -0
  122. package/dist/collection/components/bs-slider/bs-slider.cmp.test.js +139 -0
  123. package/dist/collection/components/bs-slider/bs-slider.css +409 -0
  124. package/dist/collection/components/bs-slider/bs-slider.js +499 -0
  125. package/dist/collection/components/bs-slider/bs-slider.stories.js +70 -0
  126. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  127. package/dist/collection/components/bs-switch/bs-switch.cmp.test.js +71 -0
  128. package/dist/collection/components/bs-switch/bs-switch.css +196 -0
  129. package/dist/collection/components/bs-switch/bs-switch.js +185 -0
  130. package/dist/collection/components/bs-switch/bs-switch.stories.js +60 -0
  131. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.cmp.test.js +104 -0
  132. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.css +163 -0
  133. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +192 -0
  134. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.js +95 -0
  135. package/dist/collection/components/bs-tab/bs-tab/bs-tab.cmp.test.js +120 -0
  136. package/dist/collection/components/bs-tab/bs-tab/bs-tab.css +216 -0
  137. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +232 -0
  138. package/dist/collection/components/bs-tab/bs-tab/bs-tab.stories.js +138 -0
  139. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.cmp.test.js +61 -0
  140. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.css +39 -0
  141. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +133 -0
  142. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.stories.js +39 -0
  143. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  144. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +131 -0
  145. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.css +257 -0
  146. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +253 -0
  147. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.js +202 -0
  148. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.js +172 -0
  149. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.css +325 -0
  150. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +314 -0
  151. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.stories.js +78 -0
  152. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.js +77 -0
  153. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.css +106 -0
  154. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +188 -0
  155. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.js +189 -0
  156. package/dist/components/bs-ai-disclaimer.js +1 -1
  157. package/dist/components/bs-ai-greeting.js +1 -1
  158. package/dist/components/bs-ai-thinking.js +1 -1
  159. package/dist/components/bs-attachment-list.js +1 -1
  160. package/dist/components/bs-attachment.js +1 -1
  161. package/dist/components/bs-badge.js +1 -1
  162. package/dist/components/bs-button-skeleton.js +1 -1
  163. package/dist/components/bs-button.js +1 -1
  164. package/dist/components/bs-card.js +1 -1
  165. package/dist/components/bs-chatbot-feedback.js +1 -1
  166. package/dist/components/bs-chatbot-header.js +1 -1
  167. package/dist/components/bs-chatbot-response-action.js +1 -1
  168. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  169. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  170. package/dist/components/bs-checkbox.d.ts +11 -0
  171. package/dist/components/bs-checkbox.js +1 -0
  172. package/dist/components/bs-composer-status-banner.js +1 -1
  173. package/dist/components/bs-composer.js +1 -1
  174. package/dist/components/bs-data-table.js +1 -1
  175. package/dist/components/bs-icon-button.d.ts +11 -0
  176. package/dist/components/bs-icon-button.js +1 -0
  177. package/dist/components/bs-inline-tab.d.ts +11 -0
  178. package/dist/components/bs-inline-tab.js +1 -0
  179. package/dist/components/bs-input.js +1 -1
  180. package/dist/components/bs-logo.d.ts +11 -0
  181. package/dist/components/bs-logo.js +1 -0
  182. package/dist/components/bs-menu-item.js +1 -1
  183. package/dist/components/bs-menu.js +1 -1
  184. package/dist/components/bs-modal.js +1 -1
  185. package/dist/components/bs-navigation-drawer-item.d.ts +11 -0
  186. package/dist/components/bs-navigation-drawer-item.js +1 -0
  187. package/dist/components/bs-navigation-drawer.d.ts +11 -0
  188. package/dist/components/bs-navigation-drawer.js +1 -0
  189. package/dist/components/bs-navigation-header.d.ts +11 -0
  190. package/dist/components/bs-navigation-header.js +1 -0
  191. package/dist/components/bs-radio.d.ts +11 -0
  192. package/dist/components/bs-radio.js +1 -0
  193. package/dist/components/bs-slider.d.ts +11 -0
  194. package/dist/components/bs-slider.js +1 -0
  195. package/dist/components/bs-source-link.js +1 -1
  196. package/dist/components/bs-switch.d.ts +11 -0
  197. package/dist/components/bs-switch.js +1 -0
  198. package/dist/components/bs-tab.d.ts +11 -0
  199. package/dist/components/bs-tab.js +1 -0
  200. package/dist/components/bs-tabs.d.ts +11 -0
  201. package/dist/components/bs-tabs.js +1 -0
  202. package/dist/components/bs-tooltip.js +1 -1
  203. package/dist/components/index.js +1 -1
  204. package/dist/components/p-BAOJc0V0.js +1 -0
  205. package/dist/components/{p-BpvhHQSw.js → p-Be1Pfcnm.js} +1 -1
  206. package/dist/components/{p-Cz2nfz2j.js → p-BqYyMGrB.js} +1 -1
  207. package/dist/components/p-CaWqTQBZ.js +1 -0
  208. package/dist/components/{p-DndQiCMP.js → p-DivZLd6i.js} +1 -1
  209. package/dist/components/{p-DHbUF0g6.js → p-xfx69LQx.js} +1 -1
  210. package/dist/esm/brandsync-wc.js +3 -3
  211. package/dist/esm/bs-ai-disclaimer.entry.js +3 -2
  212. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  213. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  214. package/dist/esm/bs-attachment-list.entry.js +2 -2
  215. package/dist/esm/bs-attachment.entry.js +3 -3
  216. package/dist/esm/bs-badge.entry.js +1 -1
  217. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  218. package/dist/esm/bs-button.entry.js +3 -3
  219. package/dist/esm/bs-card.entry.js +1 -1
  220. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  221. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  222. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  223. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  224. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  225. package/dist/esm/bs-checkbox.entry.js +92 -0
  226. package/dist/esm/bs-composer-status-banner.entry.js +14 -2
  227. package/dist/esm/bs-composer.entry.js +37 -4
  228. package/dist/esm/bs-data-table.entry.js +3 -3
  229. package/dist/esm/bs-icon-button.entry.js +38 -0
  230. package/dist/esm/bs-inline-tab.entry.js +67 -0
  231. package/dist/esm/bs-input.entry.js +3 -3
  232. package/dist/esm/bs-logo.entry.js +163 -0
  233. package/dist/esm/bs-menu_2.entry.js +3 -3
  234. package/dist/esm/bs-modal.entry.js +1 -1
  235. package/dist/esm/bs-navigation-drawer-item.entry.js +102 -0
  236. package/dist/esm/bs-navigation-drawer.entry.js +79 -0
  237. package/dist/esm/bs-navigation-header.entry.js +42 -0
  238. package/dist/esm/bs-radio.entry.js +47 -0
  239. package/dist/esm/bs-slider.entry.js +189 -0
  240. package/dist/esm/bs-source-link.entry.js +3 -3
  241. package/dist/esm/bs-switch.entry.js +55 -0
  242. package/dist/esm/bs-tab.entry.js +78 -0
  243. package/dist/esm/bs-tabs.entry.js +37 -0
  244. package/dist/esm/bs-tooltip.entry.js +2 -2
  245. package/dist/esm/{index-nLORuTUY.js → index-DST5-cTx.js} +74 -2
  246. package/dist/esm/loader.js +3 -3
  247. package/dist/types/components/bs-attachment/bs-attachment.d.ts +3 -9
  248. package/dist/types/components/bs-button/{bs-button.d.ts → bs-button/bs-button.d.ts} +5 -0
  249. package/dist/types/components/bs-button/{bs-button.stories.d.ts → bs-button/bs-button.stories.d.ts} +0 -2
  250. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.d.ts +1 -0
  251. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +51 -0
  252. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.stories.d.ts +16 -0
  253. package/dist/types/components/bs-button-skeleton/bs-button-skeleton.d.ts +1 -1
  254. package/dist/types/components/bs-button-skeleton/bs-button-skeleton.stories.d.ts +1 -1
  255. package/dist/types/components/bs-checkbox/bs-checkbox.cmp.test.d.ts +1 -0
  256. package/dist/types/components/bs-checkbox/bs-checkbox.d.ts +64 -0
  257. package/dist/types/components/bs-checkbox/bs-checkbox.stories.d.ts +23 -0
  258. package/dist/types/components/bs-composer/bs-composer.d.ts +26 -2
  259. package/dist/types/components/bs-composer-status-banner/bs-composer-status-banner.d.ts +14 -0
  260. package/dist/types/components/bs-logo/brandsync-logo-full-dark.d.ts +1 -0
  261. package/dist/types/components/bs-logo/brandsync-logo-full-light.d.ts +1 -0
  262. package/dist/types/components/bs-logo/brandsync-logo-mark.d.ts +1 -0
  263. package/dist/types/components/bs-logo/bs-logo.cmp.test.d.ts +1 -0
  264. package/dist/types/components/bs-logo/bs-logo.d.ts +73 -0
  265. package/dist/types/components/bs-logo/bs-logo.stories.d.ts +17 -0
  266. package/dist/types/components/bs-radio/bs-radio.cmp.test.d.ts +1 -0
  267. package/dist/types/components/bs-radio/bs-radio.d.ts +45 -0
  268. package/dist/types/components/bs-radio/bs-radio.stories.d.ts +16 -0
  269. package/dist/types/components/bs-slider/bs-slider.cmp.test.d.ts +1 -0
  270. package/dist/types/components/bs-slider/bs-slider.d.ts +109 -0
  271. package/dist/types/components/bs-slider/bs-slider.stories.d.ts +24 -0
  272. package/dist/types/components/bs-switch/bs-switch.cmp.test.d.ts +1 -0
  273. package/dist/types/components/bs-switch/bs-switch.d.ts +45 -0
  274. package/dist/types/components/bs-switch/bs-switch.stories.d.ts +17 -0
  275. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.cmp.test.d.ts +1 -0
  276. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.d.ts +65 -0
  277. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.d.ts +22 -0
  278. package/dist/types/components/bs-tab/bs-tab/bs-tab.cmp.test.d.ts +1 -0
  279. package/dist/types/components/bs-tab/bs-tab/bs-tab.d.ts +74 -0
  280. package/dist/types/components/bs-tab/bs-tab/bs-tab.stories.d.ts +30 -0
  281. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.cmp.test.d.ts +1 -0
  282. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +45 -0
  283. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.stories.d.ts +13 -0
  284. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.d.ts +1 -0
  285. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.d.ts +96 -0
  286. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.d.ts +16 -0
  287. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.d.ts +1 -0
  288. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.d.ts +103 -0
  289. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.stories.d.ts +20 -0
  290. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.d.ts +1 -0
  291. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.d.ts +60 -0
  292. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.d.ts +21 -0
  293. package/dist/types/components.d.ts +1973 -49
  294. package/package.json +1 -1
  295. package/dist/brandsync-wc/p-0d64ea40.entry.js +0 -1
  296. package/dist/brandsync-wc/p-16a54578.entry.js +0 -1
  297. package/dist/brandsync-wc/p-bc72439a.entry.js +0 -1
  298. package/dist/brandsync-wc/p-dad4a92c.entry.js +0 -1
  299. package/dist/brandsync-wc/p-eb4d87f0.entry.js +0 -1
  300. /package/dist/types/components/bs-button/{bs-button.cmp.test.d.ts → bs-button/bs-button.cmp.test.d.ts} +0 -0
@@ -0,0 +1,24 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ type BsSliderType = 'default' | 'segmented' | 'range';
3
+ interface BsSliderArgs {
4
+ type: BsSliderType;
5
+ showLabel: boolean;
6
+ label: string;
7
+ min: number;
8
+ max: number;
9
+ step: number;
10
+ value: number;
11
+ valueStart: number;
12
+ valueEnd: number;
13
+ segments: number;
14
+ disabled: boolean;
15
+ ariaLabel: string;
16
+ }
17
+ declare const meta: Meta<BsSliderArgs>;
18
+ export default meta;
19
+ type Story = StoryObj<BsSliderArgs>;
20
+ export declare const Default: Story;
21
+ export declare const Segmented: Story;
22
+ export declare const Range: Story;
23
+ export declare const Disabled: Story;
24
+ export declare const BareTrack: Story;
@@ -0,0 +1,45 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ export type BsSwitchSize = 'md' | 'lg';
3
+ /**
4
+ * A toggle switch for an on/off setting that takes effect immediately (no explicit form
5
+ * submission required).
6
+ *
7
+ * ## When to use
8
+ * - A binary setting that applies right away (e.g. "Enable notifications", "Dark mode").
9
+ *
10
+ * ## When not to use
11
+ * - A binary choice that's part of a form submitted later, or one item within a group of
12
+ * independent choices -- use `bs-checkbox` instead.
13
+ * - A single mutually-exclusive choice from a set -- use a radio group instead.
14
+ *
15
+ * @slot - Default slot: the label text.
16
+ * @part track - The visual pill-shaped track.
17
+ * @part knob - The sliding circular knob.
18
+ * @part label - The label text wrapper.
19
+ */
20
+ export declare class BsSwitch {
21
+ el: HTMLElement;
22
+ /** Sizing scale. Controls the track's width/height and the knob's diameter. */
23
+ size: BsSwitchSize;
24
+ /** Whether the switch is on. Mutable so clicking the label/input toggles it directly, and
25
+ * reflected so consumers can target `bs-switch[checked]` via CSS. */
26
+ checked: boolean;
27
+ /** Disables the switch: sets the native `disabled` attribute, suppresses hover/focus styling,
28
+ * and prevents toggling. */
29
+ disabled: boolean;
30
+ /**
31
+ * Accessible name for the switch. Required whenever the default (label) slot is empty (e.g. a
32
+ * bare "enabled" switch in a table row) -- without it, the internal native `<input>` has no
33
+ * accessible name at all. Setting `aria-label` directly on the `<bs-switch>` host does NOT
34
+ * work for this: that attribute stays on the light-DOM host and is never forwarded into the
35
+ * shadow DOM by the browser, so the actual focusable element (the native `<input>` inside) stays
36
+ * nameless. This prop exists specifically to bridge that gap -- same pattern as `bs-button`'s and
37
+ * `bs-checkbox`'s identical `ariaLabel` prop, both of which explicitly bind it onto their own
38
+ * internal focusable element for the same reason.
39
+ */
40
+ ariaLabel: string | null;
41
+ /** Emitted when the checked state changes via user interaction, with the new `checked` value. */
42
+ bsChange: EventEmitter<boolean>;
43
+ private onChange;
44
+ render(): any;
45
+ }
@@ -0,0 +1,17 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ type BsSwitchSize = 'md' | 'lg';
3
+ interface BsSwitchArgs {
4
+ size: BsSwitchSize;
5
+ checked: boolean;
6
+ disabled: boolean;
7
+ label: string;
8
+ }
9
+ declare const meta: Meta<BsSwitchArgs>;
10
+ export default meta;
11
+ type Story = StoryObj<BsSwitchArgs>;
12
+ export declare const Default: Story;
13
+ export declare const Checked: Story;
14
+ export declare const Disabled: Story;
15
+ export declare const Medium: Story;
16
+ export declare const Large: Story;
17
+ export declare const AllCombinations: Story;
@@ -0,0 +1,65 @@
1
+ import { EventEmitter } from '../../../stencil-public-runtime';
2
+ /**
3
+ * A pill-shaped tab button -- an optional leading icon plus a text label, rendered as a real
4
+ * `<button>` so it participates correctly in tab order and native click/keyboard activation.
5
+ * Unlike `bs-tab`'s underline indicator, selection here is communicated entirely by the pill's
6
+ * background fill color -- there is no separate indicator element.
7
+ *
8
+ * ## When to use
9
+ * - As one button within a segmented-control-style tab bar, where exactly one tab is
10
+ * selected/active at a time.
11
+ *
12
+ * ## When not to use
13
+ * - As a standalone action button -- use `bs-button` instead, `bs-inline-tab`'s visual language
14
+ * (muted pill until selected/hovered) only makes sense as part of a set.
15
+ *
16
+ * `selected` is NOT self-toggling -- clicking a `bs-inline-tab` only emits `bsSelect`, it does not
17
+ * set its own `selected` prop, and it does not unselect any sibling tabs. Wrap your
18
+ * `<bs-inline-tab>` elements in `<bs-tabs type="bs-inline-tab">` -- it owns `role="tablist"` and
19
+ * coordinates selection (listening for `bsSelect` and setting `selected`/`false` across siblings)
20
+ * for you. Using `bs-inline-tab` standalone, outside a `<bs-tabs>` wrapper, still means `selected`
21
+ * doesn't self-toggle and `role="tablist"` isn't provided automatically -- a consumer doing that
22
+ * would still need to coordinate `selected` and supply `role="tablist"` manually, same as
23
+ * `bs-tab.mdx`/`bs-radio.mdx` document for their own components. See `bs-inline-tab.mdx`'s
24
+ * Accessibility section for the full requirement, including `role="tabpanel"` on the corresponding
25
+ * content panels.
26
+ *
27
+ * @slot - Default slot: the tab's label text. When empty (icon-only), no space is reserved for it.
28
+ * @slot icon - Optional leading icon (24x24). When empty (text-only), no space is reserved for it.
29
+ * @part tab - The button element.
30
+ * @part icon - The icon wrapper.
31
+ * @part label - The label wrapper.
32
+ */
33
+ export declare class BsInlineTab {
34
+ el: HTMLElement;
35
+ /** Whether this tab is the currently active one. NOT mutable and NOT self-toggling -- see the
36
+ * "Known gap" note in the class JSDoc. Still reflected as an attribute so consumers/CSS can
37
+ * target `bs-inline-tab[selected]`. */
38
+ selected: boolean;
39
+ /** Disables the tab: sets the native `disabled` attribute, suppresses hover/focus styling, and
40
+ * prevents clicking from emitting `bsSelect`. */
41
+ disabled: boolean;
42
+ /** Accessible name for the tab. Required for icon-only usage (no visible label text via the
43
+ * default slot) so screen readers still announce what the tab does -- without it, an icon-only
44
+ * tab has no discernible name at all (axe-core flags this as a critical `button-name`
45
+ * violation). Stencil reflects this camelCase prop to the `aria-label` HTML attribute
46
+ * automatically, same as `bs-tab`'s identical prop. */
47
+ ariaLabel: string | null;
48
+ /** Tracks whether the `icon` slot has assigned content. */
49
+ hasIcon: boolean;
50
+ /** Tracks whether the default (label) slot has assigned content. */
51
+ hasLabel: boolean;
52
+ /** Fires when the tab is clicked. Does not toggle `selected` itself -- see the class JSDoc. */
53
+ bsSelect: EventEmitter<void>;
54
+ /**
55
+ * Computes the initial `hasIcon`/`hasLabel` state directly from the host's light DOM children,
56
+ * before first render -- same reasoning as `bs-tab.componentWillLoad` (a slot with zero assigned
57
+ * nodes from the start never fires `slotchange`).
58
+ */
59
+ componentWillLoad(): void;
60
+ private hasSlottedContent;
61
+ private onIconSlotchange;
62
+ private onLabelSlotchange;
63
+ private onClick;
64
+ render(): any;
65
+ }
@@ -0,0 +1,22 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ interface BsInlineTabArgs {
3
+ selected: boolean;
4
+ disabled: boolean;
5
+ icon: boolean;
6
+ label: string;
7
+ ariaLabel: string;
8
+ }
9
+ declare const meta: Meta<BsInlineTabArgs>;
10
+ export default meta;
11
+ type Story = StoryObj<BsInlineTabArgs>;
12
+ export declare const Default: Story;
13
+ export declare const WithIcon: Story;
14
+ export declare const IconOnly: Story;
15
+ export declare const Selected: Story;
16
+ export declare const SelectedWithIcon: Story;
17
+ export declare const Disabled: Story;
18
+ interface BsInlineTabGroupArgs {
19
+ selectedTab: string;
20
+ icon: boolean;
21
+ }
22
+ export declare const Group: StoryObj<BsInlineTabGroupArgs>;
@@ -0,0 +1,74 @@
1
+ import { EventEmitter } from '../../../stencil-public-runtime';
2
+ export type BsTabIconPosition = 'start' | 'top';
3
+ /**
4
+ * A single tab button -- an optional icon plus a text label, rendered as a real `<button>` so it
5
+ * participates correctly in tab order and native click/keyboard activation.
6
+ *
7
+ * ## When to use
8
+ * - As one button within a tab bar, where exactly one tab is selected/active at a time.
9
+ *
10
+ * ## When not to use
11
+ * - As a standalone action button -- use `bs-button` instead, `bs-tab`'s visual language (muted
12
+ * until selected/hovered, underline indicator) only makes sense as part of a set.
13
+ *
14
+ * `selected` is NOT self-toggling -- clicking a `bs-tab` only emits `bsSelect`, it does not set its
15
+ * own `selected` prop, and it does not unselect any sibling tabs. Wrap your `<bs-tab>` elements in
16
+ * `<bs-tabs type="bs-tab">` -- it owns `role="tablist"` and coordinates selection (listening for
17
+ * `bsSelect` and setting `selected`/`false` across siblings) for you. Using `bs-tab` standalone,
18
+ * outside a `<bs-tabs>` wrapper, still means `selected` doesn't self-toggle and `role="tablist"`
19
+ * isn't provided automatically -- a consumer doing that would still need to coordinate `selected`
20
+ * and supply `role="tablist"` manually, same as `bs-radio.mdx` documents for `bs-radio`'s missing
21
+ * `bs-radio-group`. See `bs-tab.mdx`'s Accessibility section for the full requirement, including
22
+ * `role="tabpanel"` on the corresponding content panels.
23
+ *
24
+ * @slot - Default slot: the tab's label text. When empty (icon-only), no space is reserved for it.
25
+ * @slot icon - Optional icon (24x24). When empty (text-only), no space is reserved for it.
26
+ * @slot badge - Optional trailing badge, rendered after the label (e.g. an unread count). Typically
27
+ * a `bs-badge` element -- consumer's responsibility to style/populate, this component just reserves
28
+ * a slot for it. Only rendered for text-only and icon+text-horizontal layouts, per the design spec
29
+ * (not icon-only or icon+text-vertical).
30
+ * @part tab - The button element.
31
+ * @part icon - The icon wrapper.
32
+ * @part label - The label wrapper.
33
+ * @part badge - The badge wrapper.
34
+ * @part indicator - The selection/hover underline indicator.
35
+ */
36
+ export declare class BsTab {
37
+ el: HTMLElement;
38
+ /** Whether this tab is the currently active one. NOT mutable and NOT self-toggling -- see the
39
+ * "Known gap" note in the class JSDoc. Still reflected as an attribute so consumers/CSS can
40
+ * target `bs-tab[selected]`. */
41
+ selected: boolean;
42
+ /** Disables the tab: sets the native `disabled` attribute, suppresses hover/focus styling, and
43
+ * prevents clicking from emitting `bsSelect`. */
44
+ disabled: boolean;
45
+ /** Where the icon sits relative to the label, when both `icon` and the default slot are
46
+ * populated. Ignored for icon-only/text-only layouts. */
47
+ iconPosition: BsTabIconPosition;
48
+ /** Accessible name for the tab. Required for icon-only usage (no visible label text via the
49
+ * default slot) so screen readers still announce what the tab does -- without it, an icon-only
50
+ * tab has no discernible name at all (axe-core flags this as a critical `button-name`
51
+ * violation). Stencil reflects this camelCase prop to the `aria-label` HTML attribute
52
+ * automatically, same as `bs-button`'s identical prop. */
53
+ ariaLabel: string | null;
54
+ /** Tracks whether the `icon` slot has assigned content. */
55
+ hasIcon: boolean;
56
+ /** Tracks whether the default (label) slot has assigned content. */
57
+ hasLabel: boolean;
58
+ /** Tracks whether the `badge` slot has assigned content. */
59
+ hasBadge: boolean;
60
+ /** Fires when the tab is clicked. Does not toggle `selected` itself -- see the class JSDoc. */
61
+ bsSelect: EventEmitter<void>;
62
+ /**
63
+ * Computes the initial `hasIcon`/`hasLabel`/`hasBadge` state directly from the host's light DOM
64
+ * children, before first render -- same reasoning as `bs-button.componentWillLoad` (a slot with
65
+ * zero assigned nodes from the start never fires `slotchange`).
66
+ */
67
+ componentWillLoad(): void;
68
+ private hasSlottedContent;
69
+ private onIconSlotchange;
70
+ private onLabelSlotchange;
71
+ private onBadgeSlotchange;
72
+ private onClick;
73
+ render(): any;
74
+ }
@@ -0,0 +1,30 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ import type { BsTabIconPosition } from './bs-tab';
3
+ interface BsTabArgs {
4
+ selected: boolean;
5
+ disabled: boolean;
6
+ icon: boolean;
7
+ iconPosition: BsTabIconPosition;
8
+ badge: boolean;
9
+ label: string;
10
+ ariaLabel: string;
11
+ }
12
+ declare const meta: Meta<BsTabArgs>;
13
+ export default meta;
14
+ type Story = StoryObj<BsTabArgs>;
15
+ export declare const Default: Story;
16
+ export declare const IconOnly: Story;
17
+ export declare const IconAndTextHorizontal: Story;
18
+ export declare const IconAndTextVertical: Story;
19
+ export declare const Selected: Story;
20
+ export declare const Disabled: Story;
21
+ export declare const WithBadge: Story;
22
+ type BsTabGroupOrientation = 'horizontal' | 'vertical';
23
+ interface BsTabGroupArgs {
24
+ selectedTab: string;
25
+ icon: boolean;
26
+ iconPosition: BsTabIconPosition;
27
+ badge: boolean;
28
+ groupOrientation: BsTabGroupOrientation;
29
+ }
30
+ export declare const Group: StoryObj<BsTabGroupArgs>;
@@ -0,0 +1,45 @@
1
+ export type BsTabsType = 'bs-tab' | 'bs-inline-tab';
2
+ export type BsTabsOrientation = 'horizontal' | 'vertical';
3
+ /**
4
+ * A tab-group wrapper: owns `role="tablist"` and coordinates selection across its slotted
5
+ * `<bs-tab>` or `<bs-inline-tab>` children, so consumers no longer have to hand-roll this.
6
+ *
7
+ * `bs-tab.mdx`/`bs-inline-tab.mdx` previously documented this coordination -- listening for
8
+ * `bsSelect` and setting `selected`/`false` on siblings, plus supplying `role="tablist"` on
9
+ * whatever element groups the tabs -- as a "Known gap"/manual consumer responsibility. This
10
+ * component is that wrapper: it renders the `role="tablist"` element and listens for `bsSelect`
11
+ * itself. Using `<bs-tab>`/`<bs-inline-tab>` standalone, outside a `<bs-tabs>` wrapper, still means
12
+ * `selected` doesn't self-toggle -- a consumer doing that would still need to coordinate `selected`
13
+ * manually -- but that's no longer the first recommended path.
14
+ *
15
+ * ## When to use
16
+ * - Wrapping a set of `<bs-tab>` (underline style) or `<bs-inline-tab>` (pill style) elements that
17
+ * should behave as a single-selection tab bar.
18
+ *
19
+ * ## When not to use
20
+ * - For a single, standalone tab button not participating in a group -- use `bs-tab`/`bs-inline-tab`
21
+ * directly.
22
+ *
23
+ * @slot - Default slot: the tab elements (`<bs-tab>` or `<bs-inline-tab>`, matching `type`) that
24
+ * make up this group.
25
+ * @part tablist - The wrapping element carrying `role="tablist"`.
26
+ */
27
+ export declare class BsTabs {
28
+ el: HTMLElement;
29
+ /** Which tab-button family this group wraps. Governs the wrapper's own visual treatment (gap-only
30
+ * for `bs-tab`, a filled pill bar for `bs-inline-tab`). Not reflected as an attribute -- nothing
31
+ * external needs to target it via CSS attribute selector, it only drives internal class names. */
32
+ type: BsTabsType;
33
+ /** Layout direction of the tab bar itself. Sets `aria-orientation` on the internal wrapper and
34
+ * switches `flex-direction`. */
35
+ orientation: BsTabsOrientation;
36
+ /**
37
+ * Catches `bsSelect` bubbling up from any slotted `<bs-tab>`/`<bs-inline-tab>` (Stencil's
38
+ * `@Event()` defaults to `bubbles: true, composed: true`, and `@Listen` without a target listens
39
+ * on the host itself), and sets `selected` on the clicked child / `false` on its siblings.
40
+ * Disabled children never emit `bsSelect` in the first place (each's own `onClick` guards
41
+ * `if (this.disabled) return;`), so no special-casing is needed here.
42
+ */
43
+ onTabSelect(ev: CustomEvent<void>): void;
44
+ render(): any;
45
+ }
@@ -0,0 +1,13 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ import type { BsTabsOrientation, BsTabsType } from './bs-tabs';
3
+ interface BsTabsArgs {
4
+ type: BsTabsType;
5
+ orientation: BsTabsOrientation;
6
+ selectedTab: string;
7
+ }
8
+ declare const meta: Meta<BsTabsArgs>;
9
+ export default meta;
10
+ type Story = StoryObj<BsTabsArgs>;
11
+ export declare const Default: Story;
12
+ export declare const InlineTabGroup: Story;
13
+ export declare const Vertical: Story;
@@ -0,0 +1,96 @@
1
+ import { EventEmitter } from '../../../../stencil-public-runtime';
2
+ /**
3
+ * A left-side persistent navigation sidebar: the BrandSync logo, a "Main Menu" title with a
4
+ * collapse toggle, a reserved slot for a search field, and a scrollable list of nav items.
5
+ *
6
+ * ## When to use
7
+ * - The primary in-app navigation, shown alongside `bs-navigation-header` (typically that
8
+ * header's `with-navigation-drawer` alignment, which omits its own logo since this component
9
+ * already renders one).
10
+ *
11
+ * ## When not to use
12
+ * - The top navigation bar itself -- use `bs-navigation-header` instead.
13
+ *
14
+ * This component renders a real `<nav>` landmark (no explicit `role` needed -- `<nav>` already
15
+ * carries the implicit `navigation` role), labeled via `aria-label={heading}` so the landmark
16
+ * still has a name even when collapsed (see below).
17
+ *
18
+ * `collapsed` narrows the drawer to a 96px icon-only rail, per Figma node 8028:135374
19
+ * ("Type=Collapsed"): the title text disappears, the logo swaps from the full "EG BrandSync"
20
+ * wordmark (`bs-logo variant="full"`) to the real icon-only mark (`bs-logo variant="mark"` -- a
21
+ * second, properly-designed asset, not a CSS crop of the full one) via CSS visibility toggling on
22
+ * both, the same `:host([collapsed])` attribute-selector pattern already used for the
23
+ * `search`/`search-trigger` swap below, the `search` slot is replaced by a compact built-in
24
+ * search-trigger button (this component can't meaningfully shrink arbitrary slotted search-field
25
+ * content down to icon size itself, so it emits `bsSearchClick` instead -- e.g. to open a full
26
+ * search overlay), and every top-level
27
+ * `bs-navigation-drawer-item`'s layout switches from icon-beside-label to icon-above-caption.
28
+ * That last part is real prop propagation, not a CSS trick: this component keeps each direct-child
29
+ * item's own `collapsed` prop in sync with its own (see `syncItemsCollapsed` below), the same
30
+ * direct-children-prop-sync approach `bs-tabs` already uses for coordinating `selected` across its
31
+ * `bs-tab` children. Clicking the toggle self-toggles `collapsed` (simple local UI state, not
32
+ * something needing cross-component coordination -- closer to `bs-switch`'s self-toggling
33
+ * `checked` than `bs-tab`'s non-self-toggling `selected`) and emits `bsCollapse` with the new
34
+ * value. The toggle's own caret icon does NOT rotate when collapsed -- Figma's collapsed mock
35
+ * reuses the identical left-pointing "CaretLeft" asset unchanged, confirmed by directly inspecting
36
+ * that state, so this deliberately does not add the same "flip on toggle" idiom the drawer item's
37
+ * own disclosure chevron does (that one really is an unconfirmed addition; this one was checked).
38
+ *
39
+ * @slot search - Reserved for a search field, e.g. a `bs-input type="search"`. This component
40
+ * does not build one itself. Hidden while `collapsed` (see above).
41
+ * @slot - Default slot: the scrollable list of nav items, typically one or more
42
+ * `bs-navigation-drawer-item` elements.
43
+ * @part logo - The wrapper around the BrandSync brand mark. Two of these exist in the shadow DOM
44
+ * at once (one wrapping a `bs-logo variant="full"`, one wrapping a `bs-logo variant="mark"`),
45
+ * both carrying this same part name (the same "multiple elements, one shared part name"
46
+ * approach `bs-attachment`'s `star` part uses) -- only one is visible at a time, toggled by
47
+ * plain CSS on `collapsed` (see above), so `::part(logo)` always reaches whichever is showing.
48
+ * @part title - The "Main Menu" heading text wrapper.
49
+ * @part collapse - The collapse toggle button.
50
+ * @part search - The wrapper around the `search` slot.
51
+ * @part search-trigger - The compact search button shown instead of the `search` slot while `collapsed`.
52
+ * @part items - The wrapper around the default (items) slot.
53
+ */
54
+ export declare class BsNavigationDrawer {
55
+ el: HTMLElement;
56
+ /** Heading text shown next to the collapse toggle, and used as the `<nav>` landmark's
57
+ * `aria-label` (so the landmark keeps a name even when `collapsed` hides the visible text). */
58
+ heading: string;
59
+ /** Whether this drawer can be collapsed at all. `false` renders no collapse toggle/chevron --
60
+ * a "fixed" side nav (Carbon's terminology: a `Fixed Side Nav` never collapses, as opposed to a
61
+ * rail-capable one) that's always fully expanded. `collapsed` is ignored while this is `false`. */
62
+ collapsible: boolean;
63
+ /** Narrows the drawer to a 96px icon-only rail (Figma node 8028:135374). Mutable and reflected
64
+ * -- clicking the collapse toggle toggles this directly (self-toggling, see the class doc above
65
+ * for why), and this component keeps every direct-child `bs-navigation-drawer-item`'s own
66
+ * `collapsed` prop synced to match (see `syncItemsCollapsed`). */
67
+ collapsed: boolean;
68
+ /** Fires with the new `collapsed` value when the collapse toggle button is clicked. */
69
+ bsCollapse: EventEmitter<boolean>;
70
+ /** Fires when the compact search-trigger button (shown instead of the `search` slot while
71
+ * `collapsed`) is clicked -- e.g. to open a full search overlay. This component has no
72
+ * visibility into what the `search` slot actually contains, so it can't drive a real search
73
+ * itself once shrunk to icon size. */
74
+ bsSearchClick: EventEmitter<void>;
75
+ /** Forwarded straight to both internal `bs-logo` elements' own `background` prop. Defaults to
76
+ * `"auto"`, which follows the ambient `[data-theme="dark"]` state automatically (see `bs-logo`'s
77
+ * own docs) -- so if this drawer ends up on a dark surface via the normal theming mechanism, the
78
+ * logo switches to its dedicated dark-background asset with no wiring needed. Set
79
+ * `"light"`/`"dark"` explicitly only if you've overridden `--bs-navigation-drawer-bg` to
80
+ * something dark yourself *without* setting `[data-theme="dark"]`, and need to pin the logo
81
+ * regardless of theme. Has no visible effect on the `variant="mark"` logo shown while
82
+ * `collapsed` (see `bs-logo`'s own docs -- there's only one real designed mark asset, it's
83
+ * background-agnostic). */
84
+ logoBackground: 'auto' | 'light' | 'dark';
85
+ onCollapsedChange(collapsed: boolean): void;
86
+ componentDidLoad(): void;
87
+ /** Keeps every direct-child `bs-navigation-drawer-item`'s `collapsed` prop in sync with this
88
+ * component's own -- same direct-children-prop-sync approach `bs-tabs` uses for `selected`
89
+ * across its `bs-tab` children. Only direct children (top-level items): Figma's collapsed rail
90
+ * never shows nested/expanded children in the first place (see bs-navigation-drawer-item.css's
91
+ * `:host([collapsed])` rule forcing those hidden), so there's nothing to sync on them. */
92
+ private syncItemsCollapsed;
93
+ private onCollapseClick;
94
+ private onSearchTriggerClick;
95
+ render(): any;
96
+ }
@@ -0,0 +1,16 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ interface BsNavigationDrawerArgs {
3
+ heading: string;
4
+ collapsible: boolean;
5
+ logoBackground: 'auto' | 'light' | 'dark';
6
+ }
7
+ declare const meta: Meta<BsNavigationDrawerArgs>;
8
+ export default meta;
9
+ type Story = StoryObj<BsNavigationDrawerArgs>;
10
+ export declare const FixedSideNav: Story;
11
+ export declare const FixedSideNavWithDivider: Story;
12
+ export declare const FixedSideNavWithIcons: Story;
13
+ export declare const Collapsed: Story;
14
+ export declare const Dark: Story;
15
+ export declare const WithoutSearch: Story;
16
+ export declare const EmptyItems: Story;
@@ -0,0 +1,103 @@
1
+ import { EventEmitter } from '../../../../stencil-public-runtime';
2
+ /**
3
+ * A single row within a `bs-navigation-drawer`'s item list -- either a plain leaf nav item, or an
4
+ * `expandable` group header that discloses nested `bs-navigation-drawer-item` children.
5
+ *
6
+ * ## When to use
7
+ * - Every row inside a `bs-navigation-drawer`'s default slot.
8
+ *
9
+ * ## When not to use
10
+ * - A standalone action outside a navigation drawer -- use `bs-button`/`bs-menu-item` instead.
11
+ *
12
+ * Click behavior is mutually exclusive, based on `expandable`:
13
+ * - `expandable = false` (a plain leaf item): clicking only emits `bsSelect`. `selected` is NOT
14
+ * self-toggling -- same non-self-toggling precedent as `bs-tab`'s `selected` (see `bs-tab.tsx`'s
15
+ * class doc): coordinating which sibling row is selected needs cross-item state a
16
+ * consumer/wrapper owns, not something this component can reason about on its own.
17
+ * - `expandable = true` (a group header, never shown with a `selected` tint): clicking toggles
18
+ * `this.expanded` directly and emits `bsToggle` with the new value, and does NOT emit
19
+ * `bsSelect`. This IS self-toggling, unlike `selected` above -- it's simple local disclosure
20
+ * state with no cross-item coordination needed, closer to `bs-switch`'s self-toggling `checked`
21
+ * than `bs-tab`'s non-self-toggling `selected`.
22
+ *
23
+ * Nesting: put child `<bs-navigation-drawer-item nested>` elements inside a parent
24
+ * `<bs-navigation-drawer-item expandable>` with `slot="children"`. The parent shows/hides that
25
+ * slot's content based on its own `expanded` prop, via a pure-CSS attribute selector (no JS
26
+ * visibility toggling needed, since `expanded` is reflected).
27
+ *
28
+ * `collapsed` switches this row from its normal icon-beside-label row layout to a compact
29
+ * icon-above-caption column (per Figma node 8028:135374, the drawer's "Type=Collapsed" state) --
30
+ * you don't need to set this yourself on every item: a parent `bs-navigation-drawer` keeps its own
31
+ * top-level items' `collapsed` prop in sync with its own `collapsed` state automatically (see
32
+ * `bs-navigation-drawer.tsx`'s `syncItemsCollapsed`, the same direct-children-prop-sync approach
33
+ * `bs-tabs` uses for coordinating `selected` across its own `bs-tab` children). It's still a public
34
+ * prop so a standalone item (or this component's own stories) can be demoed without the parent.
35
+ *
36
+ * @slot - Default slot: the row's label text.
37
+ * @slot icon - Optional leading icon (24x24). Only rendered (and only reserves layout space) when
38
+ * populated -- same "only take up space if slotted" pattern as `bs-tab`'s `icon` slot. Not
39
+ * rendered at all for `nested` rows (Figma's nested rows never have icons).
40
+ * @slot children - `expandable` only: nested `bs-navigation-drawer-item` rows, shown/hidden based
41
+ * on `expanded`.
42
+ * @part item - The row's root `<button>` element.
43
+ * @part icon - The icon wrapper (top-level, non-`nested` rows only).
44
+ * @part label - The label text wrapper.
45
+ * @part chevron - The trailing expand/collapse chevron wrapper (`expandable` only).
46
+ * @part children - The wrapper around the `children` slot.
47
+ */
48
+ export declare class BsNavigationDrawerItem {
49
+ el: HTMLElement;
50
+ /** Tints the row's background/text to indicate it's the current destination. NOT
51
+ * self-toggling -- see the class doc above for why. Ignored (never applied) when `expandable`
52
+ * is true. Reflected so consumers/CSS can target `bs-navigation-drawer-item[selected]`. */
53
+ selected: boolean;
54
+ /** Renders this row as a disclosure/group header (trailing chevron, self-toggling `expanded`,
55
+ * `bsToggle` instead of `bsSelect` on click) instead of a plain navigable leaf item. See the
56
+ * class doc above for the full click-behavior split. */
57
+ expandable: boolean;
58
+ /** Whether an `expandable` row's `children` slot is shown. Mutable and reflected -- clicking an
59
+ * `expandable` row toggles this directly (self-toggling, unlike `selected` above), and CSS
60
+ * shows/hides the `children` slot wrapper based on the reflected attribute. Ignored when
61
+ * `expandable` is false. */
62
+ expanded: boolean;
63
+ /** Marks this as a child row nested under an `expandable` parent (via `slot="children"`) --
64
+ * deepens the left indent and stops reserving `icon` slot space entirely (Figma's nested rows
65
+ * never have icons). */
66
+ nested: boolean;
67
+ /**
68
+ * Optional accessible name override. Not required for `collapsed` rows -- unlike an
69
+ * icon-only button, the label caption stays visible (just restyled smaller, under the icon) in
70
+ * that mode per Figma, so the button's default accessible-name computation (its own text
71
+ * content) already works. Set this if you want a fuller/different name than the visible caption
72
+ * (e.g. truncated captions, or matching `bs-switch`/`bs-slider`'s `ariaLabel` convention for
73
+ * consistency).
74
+ */
75
+ ariaLabel: string | null;
76
+ /**
77
+ * Switches this row to the compact icon-above-caption column layout used when its parent
78
+ * `bs-navigation-drawer` is `collapsed` (see the class doc above). Reflected so
79
+ * `bs-navigation-drawer-item[collapsed]` is CSS-targetable. Also forces `expandable` rows'
80
+ * chevron and `children` slot to stay hidden regardless of `expanded` -- Figma's collapsed rail
81
+ * never shows a nested tree.
82
+ */
83
+ collapsed: boolean;
84
+ /** Fires on click, only when `expandable` is false. See the class doc above. */
85
+ bsSelect: EventEmitter<void>;
86
+ /** Fires with the new `expanded` value on click, only when `expandable` is true. See the class
87
+ * doc above. */
88
+ bsToggle: EventEmitter<boolean>;
89
+ /** Tracks whether the `icon` slot has assigned content, so the icon wrapper only reserves
90
+ * layout space when there's actually an icon -- same pattern as `bs-tab`'s `hasIcon`. Not used
91
+ * at all for `nested` rows, which never render an icon wrapper in the first place. */
92
+ hasIcon: boolean;
93
+ /**
94
+ * Computes the initial `hasIcon` state directly from the host's light DOM children, before
95
+ * first render -- same reasoning as `bs-tab.componentWillLoad`'s identical comment (a slot with
96
+ * zero assigned nodes from the start never fires `slotchange`).
97
+ */
98
+ componentWillLoad(): void;
99
+ private hasSlottedContent;
100
+ private onIconSlotchange;
101
+ private onClick;
102
+ render(): any;
103
+ }
@@ -0,0 +1,20 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ interface BsNavigationDrawerItemArgs {
3
+ label: string;
4
+ selected: boolean;
5
+ expandable: boolean;
6
+ expanded: boolean;
7
+ nested: boolean;
8
+ icon: boolean;
9
+ collapsed: boolean;
10
+ }
11
+ declare const meta: Meta<BsNavigationDrawerItemArgs>;
12
+ export default meta;
13
+ type Story = StoryObj<BsNavigationDrawerItemArgs>;
14
+ export declare const Default: Story;
15
+ export declare const Selected: Story;
16
+ export declare const Expandable: Story;
17
+ export declare const ExpandableWithChildren: Story;
18
+ export declare const Nested: Story;
19
+ export declare const IconOnlyLabelSpace: Story;
20
+ export declare const Collapsed: Story;