@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,325 @@
1
+ /**
2
+ * @prop --bs-navigation-drawer-item-gap: Gap between the icon, label, and chevron within the row.
3
+ * Aliased to --bs-spacing-100.
4
+ * @prop --bs-navigation-drawer-item-radius: Corner radius of the row. Aliased to
5
+ * --bs-border-radius-100.
6
+ * @prop --bs-navigation-drawer-item-padding-y: Top/bottom padding of the row. Aliased to
7
+ * --bs-spacing-150.
8
+ * @prop --bs-navigation-drawer-item-padding-x: Left/right padding of a top-level (non-`nested`)
9
+ * row. Aliased to --bs-spacing-100 -- note this is the HORIZONTAL padding while
10
+ * --bs-navigation-drawer-item-padding-y (above) is VERTICAL, the reverse of this value's own
11
+ * relative size (12px vertical / 8px horizontal), per the Figma spec.
12
+ * @prop --bs-navigation-drawer-item-padding-left-nested: Left padding of a `nested` row. Aliased
13
+ * to --bs-spacing-600 (48px) -- deep indent under an expanded parent, replacing
14
+ * --bs-navigation-drawer-item-padding-x on the left side only (right padding stays the same).
15
+ * @prop --bs-navigation-drawer-item-font-weight: Label font weight. Aliased to
16
+ * --bs-font-weight-medium.
17
+ * @prop --bs-navigation-drawer-item-font-size: Label font size. Aliased to --bs-font-size-md.
18
+ * @prop --bs-navigation-drawer-item-line-height: Label line height. Aliased to
19
+ * --bs-line-height-body-md.
20
+ * @prop --bs-navigation-drawer-item-color: Resting (unselected) text/icon color. Aliased to
21
+ * --bs-text-muted.
22
+ * @prop --bs-navigation-drawer-item-color-selected: `selected` text/icon color. Aliased to
23
+ * --bs-text-default.
24
+ * @prop --bs-navigation-drawer-item-bg-selected: `selected` row background, resting. Aliased to
25
+ * --bs-surface-selected.
26
+ * @prop --bs-navigation-drawer-item-bg-hover: Unselected row background on hover. Aliased to
27
+ * --bs-surface-hover, per Figma node 13472:7172 (the full Enabled/Hovered/Focused/Pressed/
28
+ * Disabled state matrix for this component).
29
+ * @prop --bs-navigation-drawer-item-bg-pressed: Unselected row background while pressed
30
+ * (`:active`). Aliased to --bs-surface-pressed, per the same Figma node.
31
+ * @prop --bs-navigation-drawer-item-bg-focus: Unselected row background while focused
32
+ * (`:focus-visible`) -- shown together with, not instead of, the focus ring below. Aliased to
33
+ * --bs-surface-focus, per the same Figma node (identical value to --bs-surface-hover there).
34
+ * @prop --bs-navigation-drawer-item-bg-selected-hover: `selected` row background on hover.
35
+ * Aliased to --bs-surface-selected-hover, per the same Figma node.
36
+ * @prop --bs-navigation-drawer-item-bg-selected-pressed: `selected` row background while pressed.
37
+ * Aliased to --bs-surface-selected-pressed, per the same Figma node.
38
+ * @prop --bs-navigation-drawer-item-bg-selected-focus: `selected` row background while focused.
39
+ * Aliased to --bs-surface-selected-focus, per the same Figma node.
40
+ * @prop --bs-navigation-drawer-item-color-hover: Unselected row text/icon color on hover, focus,
41
+ * or pressed (all three share this color in Figma, distinct from the muted resting color).
42
+ * Aliased to --bs-text-secondary. `selected` rows keep --bs-navigation-drawer-item-color-selected
43
+ * across all of these states instead -- Figma never changes a selected row's text color.
44
+ * @prop --bs-navigation-drawer-item-focus-ring-color: Focus ring color. Aliased to
45
+ * --bs-border-neutral-focus.
46
+ * @prop --bs-navigation-drawer-item-children-gap: Gap between nested child rows. Aliased to
47
+ * --bs-spacing-100.
48
+ * @prop --bs-navigation-drawer-item-collapsed-gap: Gap between the icon and caption when
49
+ * `collapsed`. Aliased to --bs-spacing-100.
50
+ * @prop --bs-navigation-drawer-item-collapsed-padding: Padding of a `collapsed` row. Aliased to
51
+ * --bs-spacing-100 (8px, all sides -- Figma node 8028:135374's "Container").
52
+ * @prop --bs-navigation-drawer-item-collapsed-icon-padding-x: Left/right padding of the small
53
+ * rounded chip behind a `collapsed` row's icon (the `selected` tint applies to just this chip,
54
+ * not the full column). Aliased to --bs-spacing-100.
55
+ * @prop --bs-navigation-drawer-item-collapsed-icon-padding-y: Top/bottom padding of that chip.
56
+ * Aliased to --bs-spacing-50.
57
+ * @prop --bs-navigation-drawer-item-collapsed-font-size: Caption font size when `collapsed`.
58
+ * Aliased to --bs-fontsize-caption-sm (12px).
59
+ * @prop --bs-navigation-drawer-item-collapsed-line-height: Caption line height when `collapsed`.
60
+ * Aliased to --bs-line-height-caption-sm.
61
+ */
62
+ :host {
63
+ display: block;
64
+
65
+ --bs-navigation-drawer-item-gap: var(--bs-spacing-100);
66
+ --bs-navigation-drawer-item-radius: var(--bs-border-radius-100);
67
+ --bs-navigation-drawer-item-padding-y: var(--bs-spacing-150);
68
+ --bs-navigation-drawer-item-padding-x: var(--bs-spacing-100);
69
+ --bs-navigation-drawer-item-padding-left-nested: var(--bs-spacing-600);
70
+
71
+ --bs-navigation-drawer-item-font-weight: var(--bs-font-weight-medium);
72
+ --bs-navigation-drawer-item-font-size: var(--bs-font-size-md);
73
+ --bs-navigation-drawer-item-line-height: var(--bs-line-height-body-md);
74
+
75
+ --bs-navigation-drawer-item-color: var(--bs-text-muted);
76
+ --bs-navigation-drawer-item-color-selected: var(--bs-text-default);
77
+ --bs-navigation-drawer-item-color-hover: var(--bs-text-secondary);
78
+ --bs-navigation-drawer-item-bg-selected: var(--bs-surface-selected);
79
+ --bs-navigation-drawer-item-bg-hover: var(--bs-surface-hover);
80
+ --bs-navigation-drawer-item-bg-pressed: var(--bs-surface-pressed);
81
+ --bs-navigation-drawer-item-bg-focus: var(--bs-surface-focus);
82
+ --bs-navigation-drawer-item-bg-selected-hover: var(--bs-surface-selected-hover);
83
+ --bs-navigation-drawer-item-bg-selected-pressed: var(--bs-surface-selected-pressed);
84
+ --bs-navigation-drawer-item-bg-selected-focus: var(--bs-surface-selected-focus);
85
+ --bs-navigation-drawer-item-focus-ring-color: var(--bs-border-neutral-focus);
86
+
87
+ --bs-navigation-drawer-item-children-gap: var(--bs-spacing-100);
88
+
89
+ --bs-navigation-drawer-item-collapsed-gap: var(--bs-spacing-100);
90
+ --bs-navigation-drawer-item-collapsed-padding: var(--bs-spacing-100);
91
+ --bs-navigation-drawer-item-collapsed-icon-padding-x: var(--bs-spacing-100);
92
+ --bs-navigation-drawer-item-collapsed-icon-padding-y: var(--bs-spacing-50);
93
+ --bs-navigation-drawer-item-collapsed-font-size: var(--bs-fontsize-caption-sm);
94
+ --bs-navigation-drawer-item-collapsed-line-height: var(--bs-line-height-caption-sm);
95
+ }
96
+
97
+ /* Purely a JSX-single-root-node wrapper (see bs-navigation-drawer-item.tsx's render() comment) --
98
+ display: contents removes it from layout/box generation entirely, so it doesn't affect the
99
+ button/children-wrapper stacking at all. */
100
+ .bs-navigation-drawer-item__root {
101
+ display: contents;
102
+ }
103
+
104
+ .bs-navigation-drawer-item {
105
+ box-sizing: border-box;
106
+ width: 100%;
107
+ display: flex;
108
+ align-items: center;
109
+ gap: var(--bs-navigation-drawer-item-gap);
110
+ border: none;
111
+ border-radius: var(--bs-navigation-drawer-item-radius);
112
+ padding: var(--bs-navigation-drawer-item-padding-y) var(--bs-navigation-drawer-item-padding-x);
113
+ background: transparent;
114
+ color: var(--bs-navigation-drawer-item-color);
115
+ font-family: inherit;
116
+ font-weight: var(--bs-navigation-drawer-item-font-weight);
117
+ font-size: var(--bs-navigation-drawer-item-font-size);
118
+ line-height: calc(var(--bs-navigation-drawer-item-line-height) * 1px);
119
+ text-align: left;
120
+ cursor: pointer;
121
+ transition:
122
+ color var(--bs-duration-fast) var(--bs-easing-standard),
123
+ background-color var(--bs-duration-fast) var(--bs-easing-standard);
124
+ }
125
+
126
+ /* Interaction states (hover/focus/pressed), expanded (non-collapsed) rows -- per Figma node
127
+ 13472:7172's full Enabled/Hovered/Focused/Pressed/Disabled matrix. Each pair below is scoped to
128
+ :host(:not([collapsed])) explicitly (collapsed rows get their own icon-chip-only versions
129
+ further down) and to :not(.bs-navigation-drawer-item--selected) for the unselected variant --
130
+ without that guard, :hover/:focus-visible/:active (each a pseudo-class, so same specificity
131
+ contribution as a class) would win over the plain .bs-navigation-drawer-item--selected class
132
+ rule below and incorrectly replace the selected tint. Unselected rows also darken their text
133
+ color on all three of these states (Figma: --bs-text-secondary, distinct from the muted resting
134
+ color) -- selected rows never change text color across any state, only their background shade. */
135
+ :host(:not([collapsed])) .bs-navigation-drawer-item:hover:not(.bs-navigation-drawer-item--selected) {
136
+ background: var(--bs-navigation-drawer-item-bg-hover);
137
+ color: var(--bs-navigation-drawer-item-color-hover);
138
+ }
139
+
140
+ :host(:not([collapsed])) .bs-navigation-drawer-item:active:not(.bs-navigation-drawer-item--selected) {
141
+ background: var(--bs-navigation-drawer-item-bg-pressed);
142
+ color: var(--bs-navigation-drawer-item-color-hover);
143
+ }
144
+
145
+ :host(:not([collapsed])) .bs-navigation-drawer-item:focus-visible:not(.bs-navigation-drawer-item--selected) {
146
+ background: var(--bs-navigation-drawer-item-bg-focus);
147
+ color: var(--bs-navigation-drawer-item-color-hover);
148
+ }
149
+
150
+ :host(:not([collapsed])) .bs-navigation-drawer-item--selected:hover {
151
+ background: var(--bs-navigation-drawer-item-bg-selected-hover);
152
+ }
153
+
154
+ :host(:not([collapsed])) .bs-navigation-drawer-item--selected:active {
155
+ background: var(--bs-navigation-drawer-item-bg-selected-pressed);
156
+ }
157
+
158
+ :host(:not([collapsed])) .bs-navigation-drawer-item--selected:focus-visible {
159
+ background: var(--bs-navigation-drawer-item-bg-selected-focus);
160
+ }
161
+
162
+ .bs-navigation-drawer-item:focus-visible {
163
+ outline: 2px solid var(--bs-navigation-drawer-item-focus-ring-color);
164
+ outline-offset: -2px;
165
+ }
166
+
167
+ /* nested: same vertical padding, deeper left indent, right padding unchanged -- and no icon slot
168
+ at all (see the render()'s `!this.nested` guard), so there's no icon gap to worry about here. */
169
+ .bs-navigation-drawer-item--nested {
170
+ padding-left: var(--bs-navigation-drawer-item-padding-left-nested);
171
+ }
172
+
173
+ .bs-navigation-drawer-item--selected {
174
+ background: var(--bs-navigation-drawer-item-bg-selected);
175
+ color: var(--bs-navigation-drawer-item-color-selected);
176
+ }
177
+
178
+ .bs-navigation-drawer-item--selected .bs-navigation-drawer-item__icon--has-content {
179
+ color: var(--bs-navigation-drawer-item-color-selected);
180
+ }
181
+
182
+ /* collapsed: icon-above-caption column instead of icon-beside-label row, per Figma node
183
+ 8028:135374 ("Type=Collapsed"). `selected`'s background moves from the whole row onto just the
184
+ icon chip below (see .bs-navigation-drawer-item__icon's :host([collapsed]) rule) -- matching
185
+ the design file, where the tint never spans the caption underneath it. */
186
+ :host([collapsed]) .bs-navigation-drawer-item {
187
+ flex-direction: column;
188
+ justify-content: center;
189
+ gap: var(--bs-navigation-drawer-item-collapsed-gap);
190
+ padding: var(--bs-navigation-drawer-item-collapsed-padding);
191
+ background: transparent;
192
+ }
193
+
194
+ .bs-navigation-drawer-item__icon {
195
+ display: none;
196
+ width: 24px;
197
+ height: 24px;
198
+ flex-shrink: 0;
199
+ color: inherit;
200
+ }
201
+
202
+ .bs-navigation-drawer-item__icon--has-content {
203
+ display: inline-flex;
204
+ align-items: center;
205
+ justify-content: center;
206
+ }
207
+
208
+ .bs-navigation-drawer-item__icon ::slotted(svg) {
209
+ width: 24px;
210
+ height: 24px;
211
+ }
212
+
213
+ /* collapsed: the icon sits in its own small rounded chip (Figma's "State layer") so a `selected`
214
+ tint applies to just this chip, not the whole column -- see the plain (non-collapsed)
215
+ .bs-navigation-drawer-item--selected rule above for the row-wide version instead. */
216
+ :host([collapsed]) .bs-navigation-drawer-item__icon--has-content {
217
+ padding: var(--bs-navigation-drawer-item-collapsed-icon-padding-y) var(--bs-navigation-drawer-item-collapsed-icon-padding-x);
218
+ border-radius: var(--bs-navigation-drawer-item-radius);
219
+ }
220
+
221
+ :host([collapsed][selected]) .bs-navigation-drawer-item__icon--has-content {
222
+ background: var(--bs-navigation-drawer-item-bg-selected);
223
+ }
224
+
225
+ /* collapsed: hover/pressed/focus tint just the icon chip too, same reasoning as `selected` above
226
+ -- and the same :not([selected]) guard, so interacting with a selected collapsed row swaps
227
+ between the *-selected-* backgrounds below instead of these plain ones. */
228
+ :host([collapsed]:not([selected])) .bs-navigation-drawer-item:hover .bs-navigation-drawer-item__icon--has-content {
229
+ background: var(--bs-navigation-drawer-item-bg-hover);
230
+ }
231
+
232
+ :host([collapsed]:not([selected])) .bs-navigation-drawer-item:active .bs-navigation-drawer-item__icon--has-content {
233
+ background: var(--bs-navigation-drawer-item-bg-pressed);
234
+ }
235
+
236
+ :host([collapsed]:not([selected])) .bs-navigation-drawer-item:focus-visible .bs-navigation-drawer-item__icon--has-content {
237
+ background: var(--bs-navigation-drawer-item-bg-focus);
238
+ }
239
+
240
+ :host([collapsed][selected]) .bs-navigation-drawer-item:hover .bs-navigation-drawer-item__icon--has-content {
241
+ background: var(--bs-navigation-drawer-item-bg-selected-hover);
242
+ }
243
+
244
+ :host([collapsed][selected]) .bs-navigation-drawer-item:active .bs-navigation-drawer-item__icon--has-content {
245
+ background: var(--bs-navigation-drawer-item-bg-selected-pressed);
246
+ }
247
+
248
+ :host([collapsed][selected]) .bs-navigation-drawer-item:focus-visible .bs-navigation-drawer-item__icon--has-content {
249
+ background: var(--bs-navigation-drawer-item-bg-selected-focus);
250
+ }
251
+
252
+ /* collapsed unselected caption + icon: same secondary-color darkening on hover/pressed/focus as
253
+ the expanded label (both __label and __icon--has-content need this set explicitly here, since
254
+ neither the row's own `color` nor a `color: inherit` chain changes for collapsed rows the way it
255
+ does for expanded ones -- expanded rows change `color` directly on the row itself instead).
256
+ Selected captions/icons stay --bs-navigation-drawer-item-color-selected always, matching Figma. */
257
+ :host([collapsed]:not([selected])) .bs-navigation-drawer-item:hover .bs-navigation-drawer-item__label,
258
+ :host([collapsed]:not([selected])) .bs-navigation-drawer-item:active .bs-navigation-drawer-item__label,
259
+ :host([collapsed]:not([selected])) .bs-navigation-drawer-item:focus-visible .bs-navigation-drawer-item__label,
260
+ :host([collapsed]:not([selected])) .bs-navigation-drawer-item:hover .bs-navigation-drawer-item__icon--has-content,
261
+ :host([collapsed]:not([selected])) .bs-navigation-drawer-item:active .bs-navigation-drawer-item__icon--has-content,
262
+ :host([collapsed]:not([selected])) .bs-navigation-drawer-item:focus-visible .bs-navigation-drawer-item__icon--has-content {
263
+ color: var(--bs-navigation-drawer-item-color-hover);
264
+ }
265
+
266
+ .bs-navigation-drawer-item__label {
267
+ flex: 1;
268
+ min-width: 0;
269
+ text-align: left;
270
+ overflow: hidden;
271
+ text-overflow: ellipsis;
272
+ white-space: nowrap;
273
+ }
274
+
275
+ /* collapsed: small centered caption below the icon instead of the flex-1 label beside it. */
276
+ :host([collapsed]) .bs-navigation-drawer-item__label {
277
+ flex: none;
278
+ width: 100%;
279
+ text-align: center;
280
+ font-size: var(--bs-navigation-drawer-item-collapsed-font-size);
281
+ line-height: calc(var(--bs-navigation-drawer-item-collapsed-line-height) * 1px);
282
+ }
283
+
284
+ .bs-navigation-drawer-item__chevron {
285
+ flex-shrink: 0;
286
+ display: inline-flex;
287
+ align-items: center;
288
+ justify-content: center;
289
+ width: 16px;
290
+ height: 16px;
291
+ color: inherit;
292
+ transition: transform var(--bs-duration-fast) var(--bs-easing-standard);
293
+ }
294
+
295
+ .bs-navigation-drawer-item__chevron svg {
296
+ width: 16px;
297
+ height: 16px;
298
+ }
299
+
300
+ /* Rotating on `expanded` is a conventional accordion idiom this component adds on its own --
301
+ Figma's static mock reuses the identical chevron asset for both states without visually
302
+ rotating it, so this isn't pixel-confirmed against the design file, just a reasonable default. */
303
+ .bs-navigation-drawer-item__chevron--expanded {
304
+ transform: rotate(180deg);
305
+ }
306
+
307
+ /* The `children` slot wrapper is a sibling of the row button (see the render() comment in
308
+ bs-navigation-drawer-item.tsx for why), shown/hidden purely via the `expanded` attribute
309
+ (reflected) -- no JS visibility toggling needed. */
310
+ .bs-navigation-drawer-item__children {
311
+ display: flex;
312
+ flex-direction: column;
313
+ gap: var(--bs-navigation-drawer-item-children-gap);
314
+ }
315
+
316
+ :host(:not([expanded])) .bs-navigation-drawer-item__children {
317
+ display: none;
318
+ }
319
+
320
+ /* collapsed rows never show a chevron or nested children, regardless of `expanded` -- Figma's
321
+ collapsed rail (node 8028:135374) has no disclosure affordance at all. */
322
+ :host([collapsed]) .bs-navigation-drawer-item__chevron,
323
+ :host([collapsed]) .bs-navigation-drawer-item__children {
324
+ display: none;
325
+ }
@@ -0,0 +1,314 @@
1
+ import { h } from "@stencil/core";
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
+ // Note: this component's CSS Custom Properties are documented via @prop comments in
49
+ // bs-navigation-drawer-item.css, not here -- see bs-navigation-header.css's identical note.
50
+ export class BsNavigationDrawerItem {
51
+ el;
52
+ /** Tints the row's background/text to indicate it's the current destination. NOT
53
+ * self-toggling -- see the class doc above for why. Ignored (never applied) when `expandable`
54
+ * is true. Reflected so consumers/CSS can target `bs-navigation-drawer-item[selected]`. */
55
+ selected = false;
56
+ /** Renders this row as a disclosure/group header (trailing chevron, self-toggling `expanded`,
57
+ * `bsToggle` instead of `bsSelect` on click) instead of a plain navigable leaf item. See the
58
+ * class doc above for the full click-behavior split. */
59
+ expandable = false;
60
+ /** Whether an `expandable` row's `children` slot is shown. Mutable and reflected -- clicking an
61
+ * `expandable` row toggles this directly (self-toggling, unlike `selected` above), and CSS
62
+ * shows/hides the `children` slot wrapper based on the reflected attribute. Ignored when
63
+ * `expandable` is false. */
64
+ expanded = false;
65
+ /** Marks this as a child row nested under an `expandable` parent (via `slot="children"`) --
66
+ * deepens the left indent and stops reserving `icon` slot space entirely (Figma's nested rows
67
+ * never have icons). */
68
+ nested = false;
69
+ /**
70
+ * Optional accessible name override. Not required for `collapsed` rows -- unlike an
71
+ * icon-only button, the label caption stays visible (just restyled smaller, under the icon) in
72
+ * that mode per Figma, so the button's default accessible-name computation (its own text
73
+ * content) already works. Set this if you want a fuller/different name than the visible caption
74
+ * (e.g. truncated captions, or matching `bs-switch`/`bs-slider`'s `ariaLabel` convention for
75
+ * consistency).
76
+ */
77
+ ariaLabel = null;
78
+ /**
79
+ * Switches this row to the compact icon-above-caption column layout used when its parent
80
+ * `bs-navigation-drawer` is `collapsed` (see the class doc above). Reflected so
81
+ * `bs-navigation-drawer-item[collapsed]` is CSS-targetable. Also forces `expandable` rows'
82
+ * chevron and `children` slot to stay hidden regardless of `expanded` -- Figma's collapsed rail
83
+ * never shows a nested tree.
84
+ */
85
+ collapsed = false;
86
+ /** Fires on click, only when `expandable` is false. See the class doc above. */
87
+ bsSelect;
88
+ /** Fires with the new `expanded` value on click, only when `expandable` is true. See the class
89
+ * doc above. */
90
+ bsToggle;
91
+ /** Tracks whether the `icon` slot has assigned content, so the icon wrapper only reserves
92
+ * layout space when there's actually an icon -- same pattern as `bs-tab`'s `hasIcon`. Not used
93
+ * at all for `nested` rows, which never render an icon wrapper in the first place. */
94
+ hasIcon = false;
95
+ /**
96
+ * Computes the initial `hasIcon` state directly from the host's light DOM children, before
97
+ * first render -- same reasoning as `bs-tab.componentWillLoad`'s identical comment (a slot with
98
+ * zero assigned nodes from the start never fires `slotchange`).
99
+ */
100
+ componentWillLoad() {
101
+ this.hasIcon = this.hasSlottedContent('icon');
102
+ }
103
+ hasSlottedContent(slotName) {
104
+ return Array.from(this.el.childNodes).some(node => node.nodeType === Node.ELEMENT_NODE && node.getAttribute('slot') === slotName);
105
+ }
106
+ onIconSlotchange = (ev) => {
107
+ this.hasIcon = ev.target.assignedNodes().length > 0;
108
+ };
109
+ onClick = () => {
110
+ if (this.expandable) {
111
+ this.expanded = !this.expanded;
112
+ this.bsToggle.emit(this.expanded);
113
+ }
114
+ else {
115
+ this.bsSelect.emit();
116
+ }
117
+ };
118
+ render() {
119
+ const rowClasses = [
120
+ 'bs-navigation-drawer-item',
121
+ this.selected && !this.expandable ? 'bs-navigation-drawer-item--selected' : '',
122
+ this.nested ? 'bs-navigation-drawer-item--nested' : '',
123
+ ]
124
+ .filter(Boolean)
125
+ .join(' ');
126
+ // The `children` slot wrapper is deliberately a SIBLING of the <button>, not nested inside
127
+ // it -- a nested child row's own shadow DOM renders its own real <button>, and putting that
128
+ // inside this row's <button> would produce invalid nested interactive controls (button inside
129
+ // button). Nested buttons also break click handling in practice: a click on the child bubbles
130
+ // through this outer <button> too (it's a real ancestor in the flattened tree), which would
131
+ // incorrectly also toggle this parent row on every child click. Both are wrapped in a
132
+ // `display: contents` container so render() still returns a single root node (this codebase's
133
+ // convention, e.g. bs-input.tsx) without that wrapper affecting layout at all.
134
+ return (h("div", { key: '56087157f61114bbc3eda6ea4ed9c953c6776e7a', class: "bs-navigation-drawer-item__root" }, h("button", { key: '9d7bc98cdcccb4724a7d388209e98c66140d509d', type: "button", part: "item", class: rowClasses, "aria-expanded": this.expandable ? String(this.expanded) : undefined, "aria-label": this.ariaLabel ?? undefined, onClick: this.onClick }, !this.nested && (h("span", { key: 'b071e6437b1394002e3494e533e199399b077d09', part: "icon", class: `bs-navigation-drawer-item__icon ${this.hasIcon ? 'bs-navigation-drawer-item__icon--has-content' : ''}` }, h("slot", { key: 'bacc7cf8105454457bd90ca563fd93ab202477af', name: "icon", onSlotchange: this.onIconSlotchange }))), h("span", { key: '373e0875b1a68f5c02fe0473a1ff9a322d2dd9eb', part: "label", class: "bs-navigation-drawer-item__label" }, h("slot", { key: '0ba908c6abe37b35a72bd4e99491e828a7b27661' })), this.expandable && (h("span", { key: '025af7ea24428581f3a7e89642d09638ebeb1734', part: "chevron", class: `bs-navigation-drawer-item__chevron ${this.expanded ? 'bs-navigation-drawer-item__chevron--expanded' : ''}` }, h(ChevronDownIcon, { key: '270f60521effe7a06d4720caa6392a6a76cf5d94' })))), this.expandable && (h("span", { key: '4108f797246cc31029c9a7379d6da6a70ec0dba8', part: "children", class: "bs-navigation-drawer-item__children" }, h("slot", { key: 'b09f6e81f28fff754f46d2e750fa791e63f8cfe3', name: "children" })))));
135
+ }
136
+ static get is() { return "bs-navigation-drawer-item"; }
137
+ static get encapsulation() { return "shadow"; }
138
+ static get originalStyleUrls() {
139
+ return {
140
+ "$": ["bs-navigation-drawer-item.css"]
141
+ };
142
+ }
143
+ static get styleUrls() {
144
+ return {
145
+ "$": ["bs-navigation-drawer-item.css"]
146
+ };
147
+ }
148
+ static get properties() {
149
+ return {
150
+ "selected": {
151
+ "type": "boolean",
152
+ "mutable": false,
153
+ "complexType": {
154
+ "original": "boolean",
155
+ "resolved": "boolean",
156
+ "references": {}
157
+ },
158
+ "required": false,
159
+ "optional": false,
160
+ "docs": {
161
+ "tags": [],
162
+ "text": "Tints the row's background/text to indicate it's the current destination. NOT\nself-toggling -- see the class doc above for why. Ignored (never applied) when `expandable`\nis true. Reflected so consumers/CSS can target `bs-navigation-drawer-item[selected]`."
163
+ },
164
+ "getter": false,
165
+ "setter": false,
166
+ "reflect": true,
167
+ "attribute": "selected",
168
+ "defaultValue": "false"
169
+ },
170
+ "expandable": {
171
+ "type": "boolean",
172
+ "mutable": false,
173
+ "complexType": {
174
+ "original": "boolean",
175
+ "resolved": "boolean",
176
+ "references": {}
177
+ },
178
+ "required": false,
179
+ "optional": false,
180
+ "docs": {
181
+ "tags": [],
182
+ "text": "Renders this row as a disclosure/group header (trailing chevron, self-toggling `expanded`,\n`bsToggle` instead of `bsSelect` on click) instead of a plain navigable leaf item. See the\nclass doc above for the full click-behavior split."
183
+ },
184
+ "getter": false,
185
+ "setter": false,
186
+ "reflect": false,
187
+ "attribute": "expandable",
188
+ "defaultValue": "false"
189
+ },
190
+ "expanded": {
191
+ "type": "boolean",
192
+ "mutable": true,
193
+ "complexType": {
194
+ "original": "boolean",
195
+ "resolved": "boolean",
196
+ "references": {}
197
+ },
198
+ "required": false,
199
+ "optional": false,
200
+ "docs": {
201
+ "tags": [],
202
+ "text": "Whether an `expandable` row's `children` slot is shown. Mutable and reflected -- clicking an\n`expandable` row toggles this directly (self-toggling, unlike `selected` above), and CSS\nshows/hides the `children` slot wrapper based on the reflected attribute. Ignored when\n`expandable` is false."
203
+ },
204
+ "getter": false,
205
+ "setter": false,
206
+ "reflect": true,
207
+ "attribute": "expanded",
208
+ "defaultValue": "false"
209
+ },
210
+ "nested": {
211
+ "type": "boolean",
212
+ "mutable": false,
213
+ "complexType": {
214
+ "original": "boolean",
215
+ "resolved": "boolean",
216
+ "references": {}
217
+ },
218
+ "required": false,
219
+ "optional": false,
220
+ "docs": {
221
+ "tags": [],
222
+ "text": "Marks this as a child row nested under an `expandable` parent (via `slot=\"children\"`) --\ndeepens the left indent and stops reserving `icon` slot space entirely (Figma's nested rows\nnever have icons)."
223
+ },
224
+ "getter": false,
225
+ "setter": false,
226
+ "reflect": false,
227
+ "attribute": "nested",
228
+ "defaultValue": "false"
229
+ },
230
+ "ariaLabel": {
231
+ "type": "string",
232
+ "mutable": false,
233
+ "complexType": {
234
+ "original": "string | null",
235
+ "resolved": "string",
236
+ "references": {}
237
+ },
238
+ "required": false,
239
+ "optional": false,
240
+ "docs": {
241
+ "tags": [],
242
+ "text": "Optional accessible name override. Not required for `collapsed` rows -- unlike an\nicon-only button, the label caption stays visible (just restyled smaller, under the icon) in\nthat mode per Figma, so the button's default accessible-name computation (its own text\ncontent) already works. Set this if you want a fuller/different name than the visible caption\n(e.g. truncated captions, or matching `bs-switch`/`bs-slider`'s `ariaLabel` convention for\nconsistency)."
243
+ },
244
+ "getter": false,
245
+ "setter": false,
246
+ "reflect": false,
247
+ "attribute": "aria-label",
248
+ "defaultValue": "null"
249
+ },
250
+ "collapsed": {
251
+ "type": "boolean",
252
+ "mutable": false,
253
+ "complexType": {
254
+ "original": "boolean",
255
+ "resolved": "boolean",
256
+ "references": {}
257
+ },
258
+ "required": false,
259
+ "optional": false,
260
+ "docs": {
261
+ "tags": [],
262
+ "text": "Switches this row to the compact icon-above-caption column layout used when its parent\n`bs-navigation-drawer` is `collapsed` (see the class doc above). Reflected so\n`bs-navigation-drawer-item[collapsed]` is CSS-targetable. Also forces `expandable` rows'\nchevron and `children` slot to stay hidden regardless of `expanded` -- Figma's collapsed rail\nnever shows a nested tree."
263
+ },
264
+ "getter": false,
265
+ "setter": false,
266
+ "reflect": true,
267
+ "attribute": "collapsed",
268
+ "defaultValue": "false"
269
+ }
270
+ };
271
+ }
272
+ static get states() {
273
+ return {
274
+ "hasIcon": {}
275
+ };
276
+ }
277
+ static get events() {
278
+ return [{
279
+ "method": "bsSelect",
280
+ "name": "bsSelect",
281
+ "bubbles": true,
282
+ "cancelable": true,
283
+ "composed": true,
284
+ "docs": {
285
+ "tags": [],
286
+ "text": "Fires on click, only when `expandable` is false. See the class doc above."
287
+ },
288
+ "complexType": {
289
+ "original": "void",
290
+ "resolved": "void",
291
+ "references": {}
292
+ }
293
+ }, {
294
+ "method": "bsToggle",
295
+ "name": "bsToggle",
296
+ "bubbles": true,
297
+ "cancelable": true,
298
+ "composed": true,
299
+ "docs": {
300
+ "tags": [],
301
+ "text": "Fires with the new `expanded` value on click, only when `expandable` is true. See the class\ndoc above."
302
+ },
303
+ "complexType": {
304
+ "original": "boolean",
305
+ "resolved": "boolean",
306
+ "references": {}
307
+ }
308
+ }];
309
+ }
310
+ static get elementRef() { return "el"; }
311
+ }
312
+ // 16x16 native viewBox (not a 24x24 icon scaled down) -- authored directly at display size, per
313
+ // the class doc's note on this being the author's choice between the two options offered.
314
+ const ChevronDownIcon = () => (h("svg", { viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true" }, h("path", { d: "M4 6L8 10L12 6", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" })));