@brandsync/wc 0.0.11 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/custom-elements.json +5869 -1633
  2. package/dist/brandsync-wc/brandsync-wc.css +20 -0
  3. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  4. package/dist/brandsync-wc/p-00bb9bda.entry.js +1 -0
  5. package/dist/brandsync-wc/{p-8dff4f24.entry.js → p-0847f5c0.entry.js} +1 -1
  6. package/dist/brandsync-wc/p-0ba35c3b.entry.js +1 -0
  7. package/dist/brandsync-wc/{p-073e5fee.entry.js → p-0f3cb0c4.entry.js} +1 -1
  8. package/dist/brandsync-wc/p-10f6f3cd.entry.js +1 -0
  9. package/dist/brandsync-wc/{p-c6d330c3.entry.js → p-111974df.entry.js} +1 -1
  10. package/dist/brandsync-wc/p-11f3fceb.entry.js +1 -0
  11. package/dist/brandsync-wc/p-171fed0c.entry.js +1 -0
  12. package/dist/brandsync-wc/{p-dd224cb3.entry.js → p-18813680.entry.js} +1 -1
  13. package/dist/brandsync-wc/p-1b7c9928.entry.js +1 -0
  14. package/dist/brandsync-wc/p-1ce7dd64.entry.js +1 -0
  15. package/dist/brandsync-wc/p-2063a6d6.entry.js +1 -0
  16. package/dist/brandsync-wc/{p-4ca15322.entry.js → p-20c24179.entry.js} +1 -1
  17. package/dist/brandsync-wc/{p-b174403d.entry.js → p-321ed4d3.entry.js} +1 -1
  18. package/dist/brandsync-wc/p-38aad266.entry.js +1 -0
  19. package/dist/brandsync-wc/p-43e37883.entry.js +1 -0
  20. package/dist/brandsync-wc/p-55a8d4b5.entry.js +1 -0
  21. package/dist/brandsync-wc/p-59ac2495.entry.js +1 -0
  22. package/dist/brandsync-wc/p-5ae9e60e.entry.js +1 -0
  23. package/dist/brandsync-wc/p-6b469b2d.entry.js +1 -0
  24. package/dist/brandsync-wc/p-6d85fba4.entry.js +1 -0
  25. package/dist/brandsync-wc/p-6e95eb36.entry.js +1 -0
  26. package/dist/brandsync-wc/{p-84ae4420.entry.js → p-73217b90.entry.js} +1 -1
  27. package/dist/brandsync-wc/p-752c04c8.entry.js +1 -0
  28. package/dist/brandsync-wc/p-79af762c.entry.js +1 -0
  29. package/dist/brandsync-wc/p-81d49240.entry.js +1 -0
  30. package/dist/brandsync-wc/p-91551e7b.entry.js +1 -0
  31. package/dist/brandsync-wc/p-917a5bbc.entry.js +1 -0
  32. package/dist/brandsync-wc/{p-0b858120.entry.js → p-9876e83c.entry.js} +1 -1
  33. package/dist/brandsync-wc/p-9bcd99aa.entry.js +1 -0
  34. package/dist/brandsync-wc/{p-d1dc2ced.entry.js → p-9c4768aa.entry.js} +1 -1
  35. package/dist/brandsync-wc/{p-DP_bvuvB.js → p-Do3l4of3.js} +2 -2
  36. package/dist/brandsync-wc/p-aa43d478.entry.js +1 -0
  37. package/dist/brandsync-wc/p-c3079ad7.entry.js +1 -0
  38. package/dist/brandsync-wc/{p-74a4dd91.entry.js → p-c3c383dc.entry.js} +1 -1
  39. package/dist/brandsync-wc/p-cc79e75f.entry.js +1 -0
  40. package/dist/brandsync-wc/p-ce7fc368.entry.js +1 -0
  41. package/dist/brandsync-wc/{p-030a8ba7.entry.js → p-d3265e70.entry.js} +1 -1
  42. package/dist/brandsync-wc/p-d55bbcec.entry.js +1 -0
  43. package/dist/brandsync-wc/{p-1bf0b2d5.entry.js → p-e93e944b.entry.js} +1 -1
  44. package/dist/brandsync-wc/{p-7a605d98.entry.js → p-eb04c578.entry.js} +1 -1
  45. package/dist/brandsync-wc/{p-3c8fbaa8.entry.js → p-f0ae2740.entry.js} +1 -1
  46. package/dist/brandsync-wc/p-f4f22015.entry.js +1 -0
  47. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  48. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +3 -2
  49. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  50. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  51. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  52. package/dist/cjs/bs-attachment.cjs.entry.js +3 -3
  53. package/dist/cjs/bs-avatar.cjs.entry.js +60 -0
  54. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  55. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +56 -0
  56. package/dist/cjs/bs-breadcrumb.cjs.entry.js +33 -0
  57. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +49 -0
  58. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  59. package/dist/cjs/bs-button.cjs.entry.js +3 -3
  60. package/dist/cjs/bs-card.cjs.entry.js +10 -3
  61. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
  62. package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
  63. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  64. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  65. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
  66. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +20 -0
  67. package/dist/cjs/bs-checkbox.cjs.entry.js +14 -3
  68. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +14 -2
  69. package/dist/cjs/bs-composer.cjs.entry.js +37 -4
  70. package/dist/cjs/bs-data-table.cjs.entry.js +3 -3
  71. package/dist/cjs/bs-dialog.cjs.entry.js +110 -0
  72. package/dist/cjs/bs-icon-button.cjs.entry.js +40 -0
  73. package/dist/cjs/bs-inline-tab.cjs.entry.js +69 -0
  74. package/dist/cjs/bs-input.cjs.entry.js +24 -12
  75. package/dist/cjs/bs-logo.cjs.entry.js +165 -0
  76. package/dist/cjs/{bs-menu_2.cjs.entry.js → bs-menu-item.cjs.entry.js} +2 -15
  77. package/dist/cjs/bs-menu.cjs.entry.js +17 -0
  78. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +104 -0
  79. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +87 -0
  80. package/dist/cjs/bs-navigation-header.cjs.entry.js +44 -0
  81. package/dist/cjs/bs-pagination.cjs.entry.js +85 -0
  82. package/dist/cjs/bs-radio.cjs.entry.js +49 -0
  83. package/dist/cjs/bs-slider.cjs.entry.js +191 -0
  84. package/dist/cjs/bs-snackbar.cjs.entry.js +41 -0
  85. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  86. package/dist/cjs/bs-switch.cjs.entry.js +57 -0
  87. package/dist/cjs/bs-tab.cjs.entry.js +80 -0
  88. package/dist/cjs/bs-tabs.cjs.entry.js +39 -0
  89. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  90. package/dist/cjs/{index-CGrdFg95.js → index-DHVw-IPK.js} +2 -1
  91. package/dist/cjs/loader.cjs.js +2 -2
  92. package/dist/collection/collection-manifest.json +21 -3
  93. package/dist/collection/components/bs-ai-chatbot/bs-ai-chatbot.stories.js +26 -11
  94. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +2 -1
  95. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  96. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  97. package/dist/collection/components/bs-attachment/bs-attachment.css +12 -33
  98. package/dist/collection/components/bs-attachment/bs-attachment.js +4 -10
  99. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  100. package/dist/collection/components/bs-avatar/bs-avatar.cmp.test.js +54 -0
  101. package/dist/collection/components/bs-avatar/bs-avatar.css +197 -0
  102. package/dist/collection/components/bs-avatar/bs-avatar.js +251 -0
  103. package/dist/collection/components/bs-avatar/bs-avatar.stories.js +67 -0
  104. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.js +62 -0
  105. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.css +93 -0
  106. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +130 -0
  107. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.js +118 -0
  108. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.css +125 -0
  109. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +192 -0
  110. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.cmp.test.js +58 -0
  111. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.css +18 -0
  112. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +129 -0
  113. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.stories.js +84 -0
  114. package/dist/collection/components/bs-button/{bs-button.cmp.test.js → bs-button/bs-button.cmp.test.js} +26 -0
  115. package/dist/collection/components/bs-button/{bs-button.css → bs-button/bs-button.css} +57 -6
  116. package/dist/collection/components/bs-button/{bs-button.js → bs-button/bs-button.js} +10 -5
  117. package/dist/collection/components/bs-button/{bs-button.stories.js → bs-button/bs-button.stories.js} +2 -27
  118. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.js +83 -0
  119. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.css +346 -0
  120. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +185 -0
  121. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.stories.js +74 -0
  122. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +3 -3
  123. package/dist/collection/components/bs-card/bs-card.cmp.test.js +19 -0
  124. package/dist/collection/components/bs-card/bs-card.css +37 -5
  125. package/dist/collection/components/bs-card/bs-card.js +18 -2
  126. package/dist/collection/components/bs-card/bs-card.stories.js +17 -1
  127. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  128. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  129. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  130. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.css +1 -1
  131. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  132. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  133. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.cmp.test.js +23 -0
  134. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.css +64 -0
  135. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +81 -0
  136. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.stories.js +25 -0
  137. package/dist/collection/components/bs-checkbox/bs-checkbox.cmp.test.js +10 -0
  138. package/dist/collection/components/bs-checkbox/bs-checkbox.css +7 -1
  139. package/dist/collection/components/bs-checkbox/bs-checkbox.js +32 -1
  140. package/dist/collection/components/bs-checkbox/bs-checkbox.stories.js +12 -0
  141. package/dist/collection/components/bs-composer/bs-composer.cmp.test.js +48 -7
  142. package/dist/collection/components/bs-composer/bs-composer.css +15 -0
  143. package/dist/collection/components/bs-composer/bs-composer.js +38 -4
  144. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.cmp.test.js +47 -1
  145. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +20 -1
  146. package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
  147. package/dist/collection/components/{bs-modal/bs-modal.cmp.test.js → bs-dialog/bs-dialog.cmp.test.js} +63 -19
  148. package/dist/collection/components/bs-dialog/bs-dialog.css +130 -0
  149. package/dist/collection/components/bs-dialog/bs-dialog.js +273 -0
  150. package/dist/collection/components/bs-dialog/bs-dialog.stories.js +115 -0
  151. package/dist/collection/components/bs-input/bs-input.cmp.test.js +20 -0
  152. package/dist/collection/components/bs-input/bs-input.css +80 -2
  153. package/dist/collection/components/bs-input/bs-input.js +28 -10
  154. package/dist/collection/components/bs-input/bs-input.stories.js +14 -11
  155. package/dist/collection/components/bs-logo/brandsync-logo-full-dark.js +44 -0
  156. package/dist/collection/components/bs-logo/brandsync-logo-full-light.js +40 -0
  157. package/dist/collection/components/bs-logo/brandsync-logo-mark.js +17 -0
  158. package/dist/collection/components/bs-logo/bs-logo.cmp.test.js +113 -0
  159. package/dist/collection/components/bs-logo/bs-logo.css +79 -0
  160. package/dist/collection/components/bs-logo/bs-logo.js +193 -0
  161. package/dist/collection/components/bs-logo/bs-logo.stories.js +69 -0
  162. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  163. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  164. package/dist/collection/components/bs-pagination/bs-pagination.cmp.test.js +102 -0
  165. package/dist/collection/components/bs-pagination/bs-pagination.css +120 -0
  166. package/dist/collection/components/bs-pagination/bs-pagination.js +233 -0
  167. package/dist/collection/components/bs-pagination/bs-pagination.stories.js +43 -0
  168. package/dist/collection/components/bs-radio/bs-radio.cmp.test.js +76 -0
  169. package/dist/collection/components/bs-radio/bs-radio.css +164 -0
  170. package/dist/collection/components/bs-radio/bs-radio.js +170 -0
  171. package/dist/collection/components/bs-radio/bs-radio.stories.js +56 -0
  172. package/dist/collection/components/bs-slider/bs-slider.cmp.test.js +139 -0
  173. package/dist/collection/components/bs-slider/bs-slider.css +409 -0
  174. package/dist/collection/components/bs-slider/bs-slider.js +499 -0
  175. package/dist/collection/components/bs-slider/bs-slider.stories.js +70 -0
  176. package/dist/collection/components/bs-snackbar/bs-snackbar.cmp.test.js +77 -0
  177. package/dist/collection/components/bs-snackbar/bs-snackbar.css +321 -0
  178. package/dist/collection/components/bs-snackbar/bs-snackbar.js +172 -0
  179. package/dist/collection/components/bs-snackbar/bs-snackbar.stories.js +59 -0
  180. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  181. package/dist/collection/components/bs-switch/bs-switch.cmp.test.js +71 -0
  182. package/dist/collection/components/bs-switch/bs-switch.css +196 -0
  183. package/dist/collection/components/bs-switch/bs-switch.js +185 -0
  184. package/dist/collection/components/bs-switch/bs-switch.stories.js +60 -0
  185. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.cmp.test.js +104 -0
  186. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.css +163 -0
  187. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +192 -0
  188. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.js +95 -0
  189. package/dist/collection/components/bs-tab/bs-tab/bs-tab.cmp.test.js +120 -0
  190. package/dist/collection/components/bs-tab/bs-tab/bs-tab.css +216 -0
  191. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +232 -0
  192. package/dist/collection/components/bs-tab/bs-tab/bs-tab.stories.js +138 -0
  193. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.cmp.test.js +61 -0
  194. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.css +39 -0
  195. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +133 -0
  196. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.stories.js +39 -0
  197. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  198. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +143 -0
  199. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.css +257 -0
  200. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +281 -0
  201. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.js +274 -0
  202. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.js +172 -0
  203. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.css +325 -0
  204. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +314 -0
  205. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.stories.js +78 -0
  206. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.js +77 -0
  207. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.css +106 -0
  208. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +188 -0
  209. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.js +446 -0
  210. package/dist/components/bs-ai-disclaimer.js +1 -1
  211. package/dist/components/bs-ai-greeting.js +1 -1
  212. package/dist/components/bs-ai-thinking.js +1 -1
  213. package/dist/components/bs-attachment-list.js +1 -1
  214. package/dist/components/bs-attachment.js +1 -1
  215. package/dist/components/bs-avatar.d.ts +11 -0
  216. package/dist/components/bs-avatar.js +1 -0
  217. package/dist/components/bs-badge.js +1 -1
  218. package/dist/components/bs-breadcrumb-overflow.d.ts +11 -0
  219. package/dist/components/bs-breadcrumb-overflow.js +1 -0
  220. package/dist/components/bs-breadcrumb.d.ts +11 -0
  221. package/dist/components/bs-breadcrumb.js +1 -0
  222. package/dist/components/bs-breadcrumbs.d.ts +11 -0
  223. package/dist/components/bs-breadcrumbs.js +1 -0
  224. package/dist/components/bs-button-skeleton.js +1 -1
  225. package/dist/components/bs-button.js +1 -1
  226. package/dist/components/bs-card.js +1 -1
  227. package/dist/components/bs-chatbot-feedback.js +1 -1
  228. package/dist/components/bs-chatbot-header.js +1 -1
  229. package/dist/components/bs-chatbot-response-action.js +1 -1
  230. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  231. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  232. package/dist/components/bs-checkbox-skeleton.d.ts +11 -0
  233. package/dist/components/bs-checkbox-skeleton.js +1 -0
  234. package/dist/components/bs-checkbox.js +1 -1
  235. package/dist/components/bs-composer-status-banner.js +1 -1
  236. package/dist/components/bs-composer.js +1 -1
  237. package/dist/components/bs-data-table.js +1 -1
  238. package/dist/components/bs-dialog.d.ts +11 -0
  239. package/dist/components/bs-dialog.js +1 -0
  240. package/dist/components/bs-icon-button.d.ts +11 -0
  241. package/dist/components/bs-icon-button.js +1 -0
  242. package/dist/components/bs-inline-tab.d.ts +11 -0
  243. package/dist/components/bs-inline-tab.js +1 -0
  244. package/dist/components/bs-input.js +1 -1
  245. package/dist/components/{bs-modal.d.ts → bs-logo.d.ts} +4 -4
  246. package/dist/components/bs-logo.js +1 -0
  247. package/dist/components/bs-menu-item.js +1 -1
  248. package/dist/components/bs-menu.js +1 -1
  249. package/dist/components/bs-navigation-drawer-item.d.ts +11 -0
  250. package/dist/components/bs-navigation-drawer-item.js +1 -0
  251. package/dist/components/bs-navigation-drawer.d.ts +11 -0
  252. package/dist/components/bs-navigation-drawer.js +1 -0
  253. package/dist/components/bs-navigation-header.d.ts +11 -0
  254. package/dist/components/bs-navigation-header.js +1 -0
  255. package/dist/components/bs-pagination.d.ts +11 -0
  256. package/dist/components/bs-pagination.js +1 -0
  257. package/dist/components/bs-radio.d.ts +11 -0
  258. package/dist/components/bs-radio.js +1 -0
  259. package/dist/components/bs-slider.d.ts +11 -0
  260. package/dist/components/bs-slider.js +1 -0
  261. package/dist/components/bs-snackbar.d.ts +11 -0
  262. package/dist/components/bs-snackbar.js +1 -0
  263. package/dist/components/bs-source-link.js +1 -1
  264. package/dist/components/bs-switch.d.ts +11 -0
  265. package/dist/components/bs-switch.js +1 -0
  266. package/dist/components/bs-tab.d.ts +11 -0
  267. package/dist/components/bs-tab.js +1 -0
  268. package/dist/components/bs-tabs.d.ts +11 -0
  269. package/dist/components/bs-tabs.js +1 -0
  270. package/dist/components/bs-tooltip.js +1 -1
  271. package/dist/components/index.js +1 -1
  272. package/dist/components/p-BFcVSpES.js +1 -0
  273. package/dist/components/{p-D1cYtKyN.js → p-BJZYe7M4.js} +1 -1
  274. package/dist/components/p-BKaZWFE1.js +1 -0
  275. package/dist/components/{p-BUbGEXL7.js → p-BtX5URLk.js} +1 -1
  276. package/dist/components/{p-B9PrXIl_.js → p-CgaPcyEJ.js} +1 -1
  277. package/dist/components/{p-D2HDHZjz.js → p-qK1XlpTA.js} +1 -1
  278. package/dist/esm/brandsync-wc.js +3 -3
  279. package/dist/esm/bs-ai-disclaimer.entry.js +3 -2
  280. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  281. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  282. package/dist/esm/bs-attachment-list.entry.js +2 -2
  283. package/dist/esm/bs-attachment.entry.js +3 -3
  284. package/dist/esm/bs-avatar.entry.js +58 -0
  285. package/dist/esm/bs-badge.entry.js +1 -1
  286. package/dist/esm/bs-breadcrumb-overflow.entry.js +54 -0
  287. package/dist/esm/bs-breadcrumb.entry.js +31 -0
  288. package/dist/esm/bs-breadcrumbs.entry.js +47 -0
  289. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  290. package/dist/esm/bs-button.entry.js +3 -3
  291. package/dist/esm/bs-card.entry.js +10 -3
  292. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  293. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  294. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  295. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  296. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  297. package/dist/esm/bs-checkbox-skeleton.entry.js +18 -0
  298. package/dist/esm/bs-checkbox.entry.js +14 -3
  299. package/dist/esm/bs-composer-status-banner.entry.js +14 -2
  300. package/dist/esm/bs-composer.entry.js +37 -4
  301. package/dist/esm/bs-data-table.entry.js +3 -3
  302. package/dist/esm/bs-dialog.entry.js +108 -0
  303. package/dist/esm/bs-icon-button.entry.js +38 -0
  304. package/dist/esm/bs-inline-tab.entry.js +67 -0
  305. package/dist/esm/bs-input.entry.js +24 -12
  306. package/dist/esm/bs-logo.entry.js +163 -0
  307. package/dist/esm/{bs-menu_2.entry.js → bs-menu-item.entry.js} +3 -15
  308. package/dist/esm/bs-menu.entry.js +15 -0
  309. package/dist/esm/bs-navigation-drawer-item.entry.js +102 -0
  310. package/dist/esm/bs-navigation-drawer.entry.js +85 -0
  311. package/dist/esm/bs-navigation-header.entry.js +42 -0
  312. package/dist/esm/bs-pagination.entry.js +83 -0
  313. package/dist/esm/bs-radio.entry.js +47 -0
  314. package/dist/esm/bs-slider.entry.js +189 -0
  315. package/dist/esm/bs-snackbar.entry.js +39 -0
  316. package/dist/esm/bs-source-link.entry.js +3 -3
  317. package/dist/esm/bs-switch.entry.js +55 -0
  318. package/dist/esm/bs-tab.entry.js +78 -0
  319. package/dist/esm/bs-tabs.entry.js +37 -0
  320. package/dist/esm/bs-tooltip.entry.js +2 -2
  321. package/dist/esm/{index-DP_bvuvB.js → index-Do3l4of3.js} +2 -2
  322. package/dist/esm/loader.js +3 -3
  323. package/dist/types/components/bs-attachment/bs-attachment.d.ts +3 -9
  324. package/dist/types/components/bs-avatar/bs-avatar.d.ts +67 -0
  325. package/dist/types/components/bs-avatar/bs-avatar.stories.d.ts +20 -0
  326. package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.d.ts +1 -0
  327. package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.d.ts +44 -0
  328. package/dist/types/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.d.ts +69 -0
  329. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.cmp.test.d.ts +1 -0
  330. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.d.ts +45 -0
  331. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.stories.d.ts +14 -0
  332. package/dist/types/components/bs-button/bs-button/bs-button.cmp.test.d.ts +1 -0
  333. package/dist/types/components/bs-button/{bs-button.d.ts → bs-button/bs-button.d.ts} +5 -0
  334. package/dist/types/components/bs-button/{bs-button.stories.d.ts → bs-button/bs-button.stories.d.ts} +0 -2
  335. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.d.ts +1 -0
  336. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +51 -0
  337. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.stories.d.ts +16 -0
  338. package/dist/types/components/bs-button-skeleton/bs-button-skeleton.d.ts +1 -1
  339. package/dist/types/components/bs-button-skeleton/bs-button-skeleton.stories.d.ts +1 -1
  340. package/dist/types/components/bs-card/bs-card.d.ts +10 -1
  341. package/dist/types/components/bs-card/bs-card.stories.d.ts +1 -0
  342. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.cmp.test.d.ts +1 -0
  343. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.d.ts +36 -0
  344. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.stories.d.ts +10 -0
  345. package/dist/types/components/bs-checkbox/bs-checkbox.d.ts +11 -0
  346. package/dist/types/components/bs-checkbox/bs-checkbox.stories.d.ts +1 -0
  347. package/dist/types/components/bs-composer/bs-composer.d.ts +26 -2
  348. package/dist/types/components/bs-composer-status-banner/bs-composer-status-banner.d.ts +14 -0
  349. package/dist/types/components/bs-dialog/bs-dialog.cmp.test.d.ts +1 -0
  350. package/dist/types/components/bs-dialog/bs-dialog.d.ts +74 -0
  351. package/dist/types/components/{bs-modal/bs-modal.stories.d.ts → bs-dialog/bs-dialog.stories.d.ts} +5 -3
  352. package/dist/types/components/bs-input/bs-input.d.ts +8 -1
  353. package/dist/types/components/bs-logo/brandsync-logo-full-dark.d.ts +1 -0
  354. package/dist/types/components/bs-logo/brandsync-logo-full-light.d.ts +1 -0
  355. package/dist/types/components/bs-logo/brandsync-logo-mark.d.ts +1 -0
  356. package/dist/types/components/bs-logo/bs-logo.cmp.test.d.ts +1 -0
  357. package/dist/types/components/bs-logo/bs-logo.d.ts +73 -0
  358. package/dist/types/components/bs-logo/bs-logo.stories.d.ts +17 -0
  359. package/dist/types/components/bs-pagination/bs-pagination.cmp.test.d.ts +1 -0
  360. package/dist/types/components/bs-pagination/bs-pagination.d.ts +51 -0
  361. package/dist/types/components/bs-pagination/bs-pagination.stories.d.ts +14 -0
  362. package/dist/types/components/bs-radio/bs-radio.cmp.test.d.ts +1 -0
  363. package/dist/types/components/bs-radio/bs-radio.d.ts +45 -0
  364. package/dist/types/components/bs-radio/bs-radio.stories.d.ts +16 -0
  365. package/dist/types/components/bs-slider/bs-slider.cmp.test.d.ts +1 -0
  366. package/dist/types/components/bs-slider/bs-slider.d.ts +109 -0
  367. package/dist/types/components/bs-slider/bs-slider.stories.d.ts +24 -0
  368. package/dist/types/components/bs-snackbar/bs-snackbar.cmp.test.d.ts +1 -0
  369. package/dist/types/components/bs-snackbar/bs-snackbar.d.ts +51 -0
  370. package/dist/types/components/bs-snackbar/bs-snackbar.stories.d.ts +16 -0
  371. package/dist/types/components/bs-switch/bs-switch.cmp.test.d.ts +1 -0
  372. package/dist/types/components/bs-switch/bs-switch.d.ts +45 -0
  373. package/dist/types/components/bs-switch/bs-switch.stories.d.ts +17 -0
  374. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.cmp.test.d.ts +1 -0
  375. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.d.ts +65 -0
  376. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.d.ts +22 -0
  377. package/dist/types/components/bs-tab/bs-tab/bs-tab.cmp.test.d.ts +1 -0
  378. package/dist/types/components/bs-tab/bs-tab/bs-tab.d.ts +74 -0
  379. package/dist/types/components/bs-tab/bs-tab/bs-tab.stories.d.ts +30 -0
  380. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.cmp.test.d.ts +1 -0
  381. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +45 -0
  382. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.stories.d.ts +13 -0
  383. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.d.ts +1 -0
  384. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.d.ts +104 -0
  385. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.d.ts +19 -0
  386. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.d.ts +1 -0
  387. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.d.ts +103 -0
  388. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.stories.d.ts +20 -0
  389. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.d.ts +1 -0
  390. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.d.ts +60 -0
  391. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.d.ts +25 -0
  392. package/dist/types/components.d.ts +2908 -114
  393. package/package.json +1 -1
  394. package/dist/brandsync-wc/p-2598ca88.entry.js +0 -1
  395. package/dist/brandsync-wc/p-3dd9b814.entry.js +0 -1
  396. package/dist/brandsync-wc/p-41edb0a2.entry.js +0 -1
  397. package/dist/brandsync-wc/p-6254dcbe.entry.js +0 -1
  398. package/dist/brandsync-wc/p-7131d0a1.entry.js +0 -1
  399. package/dist/brandsync-wc/p-8c302968.entry.js +0 -1
  400. package/dist/brandsync-wc/p-8d78171b.entry.js +0 -1
  401. package/dist/brandsync-wc/p-93e44903.entry.js +0 -1
  402. package/dist/brandsync-wc/p-aa45d877.entry.js +0 -1
  403. package/dist/cjs/bs-modal.cjs.entry.js +0 -69
  404. package/dist/collection/components/bs-modal/bs-modal.css +0 -66
  405. package/dist/collection/components/bs-modal/bs-modal.js +0 -198
  406. package/dist/collection/components/bs-modal/bs-modal.stories.js +0 -38
  407. package/dist/components/bs-modal.js +0 -1
  408. package/dist/esm/bs-modal.entry.js +0 -67
  409. package/dist/types/components/bs-modal/bs-modal.d.ts +0 -45
  410. /package/dist/types/components/{bs-button/bs-button.cmp.test.d.ts → bs-avatar/bs-avatar.cmp.test.d.ts} +0 -0
  411. /package/dist/types/components/{bs-modal/bs-modal.cmp.test.d.ts → bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.d.ts} +0 -0
@@ -0,0 +1,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: '6fd089698cd27459fc10a2806fba5a792dbfec2b', class: "bs-navigation-drawer-item__root" }, h("button", { key: '5c4448c9f16dfe9356ce069a5f069db9ed084f3b', 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: 'bcfd23ef22e33ed6dcb3ec70b8263a4dccb14914', part: "icon", class: `bs-navigation-drawer-item__icon ${this.hasIcon ? 'bs-navigation-drawer-item__icon--has-content' : ''}` }, h("slot", { key: '170f97cc6ca93bf5e9e336b7c39c3d3bb02adca8', name: "icon", onSlotchange: this.onIconSlotchange }))), h("span", { key: 'abbc25976aa21e94e503497430d2be0895fd8987', part: "label", class: "bs-navigation-drawer-item__label" }, h("slot", { key: '0b9e12703c42e326634bb5adb49f1994b9c19754' })), this.expandable && (h("span", { key: '25e2a8517451cced2993390cd194420d57ee5489', part: "chevron", class: `bs-navigation-drawer-item__chevron ${this.expanded ? 'bs-navigation-drawer-item__chevron--expanded' : ''}` }, h(ChevronDownIcon, { key: '7b15770e5a071f8f49b06d811dbe1925ff9b5054' })))), this.expandable && (h("span", { key: '861ac7d088e527486c43f80a933e796c05980bc0', part: "children", class: "bs-navigation-drawer-item__children" }, h("slot", { key: 'fc673a4f19b0aee8c4c3d9d718cb239746e04221', 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" })));
@@ -0,0 +1,78 @@
1
+ import { html } from "lit";
2
+ import { componentDescription, propDescription } from "../../../../stories-utils";
3
+ const bookIcon = html `
4
+ <svg slot="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
5
+ <path
6
+ d="M4 4.5C4 3.67157 4.67157 3 5.5 3H18.5C19.3284 3 20 3.67157 20 4.5V19.5C20 20.3284 19.3284 21 18.5 21H5.5C4.67157 21 4 20.3284 4 19.5V4.5Z"
7
+ stroke="currentColor"
8
+ stroke-width="1.5"
9
+ />
10
+ <path d="M8 3V21" stroke="currentColor" stroke-width="1.5" />
11
+ </svg>
12
+ `;
13
+ const meta = {
14
+ title: 'UI Shell/bs-navigation-drawer/bs-navigation-drawer-item',
15
+ parameters: { docs: { description: { component: componentDescription('bs-navigation-drawer-item') } } },
16
+ render: args => html `
17
+ <bs-navigation-drawer-item
18
+ ?selected=${args.selected}
19
+ ?expandable=${args.expandable}
20
+ ?expanded=${args.expanded}
21
+ ?nested=${args.nested}
22
+ ?collapsed=${args.collapsed}
23
+ style="width: ${args.collapsed ? '85px' : '248px'}; display: block;"
24
+ >
25
+ ${args.icon ? bookIcon : ''}${args.label}
26
+ </bs-navigation-drawer-item>
27
+ `,
28
+ argTypes: {
29
+ label: { control: 'text', description: 'Slotted label content (not a real attribute -- see the default slot).' },
30
+ selected: { control: 'boolean', description: propDescription('bs-navigation-drawer-item', 'selected') },
31
+ expandable: { control: 'boolean', description: propDescription('bs-navigation-drawer-item', 'expandable') },
32
+ expanded: { control: 'boolean', description: propDescription('bs-navigation-drawer-item', 'expanded') },
33
+ nested: { control: 'boolean', description: propDescription('bs-navigation-drawer-item', 'nested') },
34
+ icon: { control: 'boolean', description: 'Toggles a leading icon (not a real attribute -- see the `icon` slot).' },
35
+ collapsed: { control: 'boolean', description: propDescription('bs-navigation-drawer-item', 'collapsed') },
36
+ },
37
+ args: {
38
+ label: 'Introduction',
39
+ selected: false,
40
+ expandable: false,
41
+ expanded: false,
42
+ nested: false,
43
+ icon: true,
44
+ collapsed: false,
45
+ },
46
+ };
47
+ export default meta;
48
+ export const Default = {};
49
+ export const Selected = {
50
+ args: { selected: true },
51
+ };
52
+ export const Expandable = {
53
+ name: 'Expandable (group header)',
54
+ args: { expandable: true, icon: true, label: 'Components' },
55
+ };
56
+ export const ExpandableWithChildren = {
57
+ name: 'Expandable with nested children',
58
+ render: () => html `
59
+ <bs-navigation-drawer-item expandable expanded style="width: 248px; display: block;">
60
+ ${bookIcon} Components
61
+ <bs-navigation-drawer-item slot="children" nested>Button</bs-navigation-drawer-item>
62
+ <bs-navigation-drawer-item slot="children" nested selected>Checkbox</bs-navigation-drawer-item>
63
+ <bs-navigation-drawer-item slot="children" nested>Switch</bs-navigation-drawer-item>
64
+ </bs-navigation-drawer-item>
65
+ `,
66
+ };
67
+ export const Nested = {
68
+ name: 'Nested (child row)',
69
+ args: { nested: true, icon: false, label: 'Button' },
70
+ };
71
+ export const IconOnlyLabelSpace = {
72
+ name: 'No icon (space not reserved)',
73
+ args: { icon: false, label: 'Accessibility' },
74
+ };
75
+ export const Collapsed = {
76
+ name: 'Collapsed (icon above caption)',
77
+ args: { collapsed: true, selected: true, label: 'Introduction' },
78
+ };
@@ -0,0 +1,77 @@
1
+ import { render, h, describe, it, expect } from "@stencil/vitest";
2
+ describe('bs-navigation-header', () => {
3
+ it('renders a <header> landmark with the logo by default', async () => {
4
+ const { root } = await render(h("bs-navigation-header", null));
5
+ expect(root.shadowRoot.querySelector('header')).not.toBeNull();
6
+ expect(root.shadowRoot.querySelector('[part="logo"]')).not.toBeNull();
7
+ });
8
+ it('applies the "default" alignment class by default', async () => {
9
+ const { root } = await render(h("bs-navigation-header", null));
10
+ expect(root.shadowRoot.querySelector('header')).toHaveClass('bs-navigation-header--default');
11
+ });
12
+ it('renders the logo for "center" alignment', async () => {
13
+ const { root } = await render(h("bs-navigation-header", { alignment: "center" }));
14
+ expect(root.shadowRoot.querySelector('[part="logo"]')).not.toBeNull();
15
+ expect(root.shadowRoot.querySelector('header')).toHaveClass('bs-navigation-header--center');
16
+ });
17
+ it('does not render the logo for "with-navigation-drawer" alignment', async () => {
18
+ const { root } = await render(h("bs-navigation-header", { alignment: "with-navigation-drawer" }));
19
+ expect(root.shadowRoot.querySelector('[part="logo"]')).toBeNull();
20
+ expect(root.shadowRoot.querySelector('header')).toHaveClass('bs-navigation-header--with-navigation-drawer');
21
+ });
22
+ it('renders the left and right slots', async () => {
23
+ const { root } = await render(h("bs-navigation-header", null));
24
+ expect(root.shadowRoot.querySelector('slot[name="left"]')).not.toBeNull();
25
+ expect(root.shadowRoot.querySelector('slot[name="right"]')).not.toBeNull();
26
+ });
27
+ it('projects light-DOM content into the left/right slots', async () => {
28
+ const { root } = await render(h("bs-navigation-header", null, h("button", { slot: "left" }, "Left action"), h("button", { slot: "right" }, "Right action")));
29
+ const leftSlot = root.shadowRoot.querySelector('slot[name="left"]');
30
+ const rightSlot = root.shadowRoot.querySelector('slot[name="right"]');
31
+ expect(leftSlot.assignedElements()[0].textContent).toBe('Left action');
32
+ expect(rightSlot.assignedElements()[0].textContent).toBe('Right action');
33
+ });
34
+ it('sets aria-label on the header when ariaLabel is provided', async () => {
35
+ const { root } = await render(h("bs-navigation-header", { ariaLabel: "Main navigation" }));
36
+ expect(root.shadowRoot.querySelector('header')).toEqualAttribute('aria-label', 'Main navigation');
37
+ });
38
+ it('omits aria-label when ariaLabel is not provided', async () => {
39
+ const { root } = await render(h("bs-navigation-header", null));
40
+ expect(root.shadowRoot.querySelector('header').hasAttribute('aria-label')).toBe(false);
41
+ });
42
+ describe('skip-to-content link', () => {
43
+ it('does not render a skip link when skipToContentHref is not set', async () => {
44
+ const { root } = await render(h("bs-navigation-header", null));
45
+ expect(root.shadowRoot.querySelector('[part="skip-link"]')).toBeNull();
46
+ });
47
+ it('renders a skip link pointing at skipToContentHref, with a default label', async () => {
48
+ const { root } = await render(h("bs-navigation-header", { skipToContentHref: "#main-content" }));
49
+ const link = root.shadowRoot.querySelector('[part="skip-link"]');
50
+ expect(link).not.toBeNull();
51
+ expect(link).toEqualAttribute('href', '#main-content');
52
+ expect(link.textContent).toBe('Skip to main content');
53
+ });
54
+ it('uses a custom skipToContentLabel when provided', async () => {
55
+ const { root } = await render(h("bs-navigation-header", { skipToContentHref: "#main-content", skipToContentLabel: "Jump to content" }));
56
+ const link = root.shadowRoot.querySelector('[part="skip-link"]');
57
+ expect(link.textContent).toBe('Jump to content');
58
+ });
59
+ it('renders the skip link before the logo, so it is the first focusable element', async () => {
60
+ const { root } = await render(h("bs-navigation-header", { skipToContentHref: "#main-content" }));
61
+ const header = root.shadowRoot.querySelector('header');
62
+ expect(header.firstElementChild).toEqualAttribute('part', 'skip-link');
63
+ });
64
+ });
65
+ describe('logoBackground', () => {
66
+ it('forwards the default "auto" background to the internal bs-logo', async () => {
67
+ const { root } = await render(h("bs-navigation-header", null));
68
+ const logo = root.shadowRoot.querySelector('bs-logo');
69
+ expect(logo.background).toBe('auto');
70
+ });
71
+ it('forwards logoBackground="dark" to the internal bs-logo', async () => {
72
+ const { root } = await render(h("bs-navigation-header", { logoBackground: "dark" }));
73
+ const logo = root.shadowRoot.querySelector('bs-logo');
74
+ expect(logo.background).toBe('dark');
75
+ });
76
+ });
77
+ });
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @prop --bs-navigation-header-bg: Background of the bar. Aliased to --bs-surface-base.
3
+ * @prop --bs-navigation-header-border: Bottom border color. Aliased to --bs-border-default.
4
+ * @prop --bs-navigation-header-padding-top: Aliased to --bs-spacing-200.
5
+ * @prop --bs-navigation-header-padding-bottom: Aliased to --bs-spacing-100.
6
+ * @prop --bs-navigation-header-padding-x: Aliased to --bs-margin-fluid.
7
+ * @prop --bs-navigation-header-max-width: Overall max-width of the bar. The global vendored
8
+ * --bs-breakpoints-max-width token is malformed (`1920rem` instead of `1920px` -- at a 16px root
9
+ * font size that's ~30720px, effectively unconstrained), so this is a literal 1920px instead of
10
+ * aliasing to it.
11
+ * @prop --bs-navigation-header-item-gap: Gap between the logo and the `left` slot (`default`
12
+ * alignment), or between the `left` and `right` slots (`with-navigation-drawer` alignment, which
13
+ * has no logo). Not used in `center` alignment -- see the class doc in bs-navigation-header.tsx.
14
+ * The global vendored --bs-navigation-header-gap token is also malformed (a bare unitless `40`,
15
+ * which is an invalid `gap` value and silently falls back to `normal`/0), so this multiplies it
16
+ * into a real length instead of aliasing directly.
17
+ * @prop --bs-navigation-header-slot-gap: Gap between items within a single `left`/`right` slot.
18
+ * Aliased to --bs-spacing-100.
19
+ * @prop --bs-navigation-header-skip-link-bg: Skip-to-content link background, once focused into
20
+ * view. Aliased to --bs-surface-action.
21
+ * @prop --bs-navigation-header-skip-link-color: Skip-to-content link text color, once focused
22
+ * into view. Aliased to --bs-text-inverse.
23
+ */
24
+ :host {
25
+ display: block;
26
+
27
+ --bs-navigation-header-bg: var(--bs-surface-base);
28
+ --bs-navigation-header-border: var(--bs-border-default);
29
+ --bs-navigation-header-padding-top: var(--bs-spacing-200);
30
+ --bs-navigation-header-padding-bottom: var(--bs-spacing-100);
31
+ --bs-navigation-header-padding-x: var(--bs-margin-fluid);
32
+ --bs-navigation-header-max-width: 1920px;
33
+ --bs-navigation-header-item-gap: calc(var(--bs-navigation-header-gap) * 1px);
34
+ --bs-navigation-header-slot-gap: var(--bs-spacing-100);
35
+ --bs-navigation-header-skip-link-bg: var(--bs-surface-action);
36
+ --bs-navigation-header-skip-link-color: var(--bs-text-inverse);
37
+ }
38
+
39
+ .bs-navigation-header {
40
+ box-sizing: border-box;
41
+ position: relative;
42
+ display: flex;
43
+ align-items: center;
44
+ width: 100%;
45
+ max-width: var(--bs-navigation-header-max-width);
46
+ background: var(--bs-navigation-header-bg);
47
+ border-bottom: 1px solid var(--bs-navigation-header-border);
48
+ padding: var(--bs-navigation-header-padding-top) var(--bs-navigation-header-padding-x) var(--bs-navigation-header-padding-bottom);
49
+ }
50
+
51
+ /* Visually hidden until keyboard-focused, per the standard skip-link pattern -- offscreen (not
52
+ display: none/visibility: hidden, which would remove it from the tab order entirely) until
53
+ :focus moves it on-screen, absolutely positioned relative to the header itself (position:
54
+ relative above) so it doesn't affect the flex layout or push any other content. */
55
+ .bs-navigation-header__skip-link {
56
+ position: absolute;
57
+ top: var(--bs-spacing-100);
58
+ left: -9999px;
59
+ z-index: 1;
60
+ padding: var(--bs-spacing-100) var(--bs-spacing-200);
61
+ border-radius: var(--bs-border-radius-100);
62
+ background: var(--bs-navigation-header-skip-link-bg);
63
+ color: var(--bs-navigation-header-skip-link-color);
64
+ font-size: var(--bs-font-size-sm);
65
+ text-decoration: underline;
66
+ }
67
+
68
+ .bs-navigation-header__skip-link:focus {
69
+ left: var(--bs-navigation-header-padding-x);
70
+ }
71
+
72
+ /* `default` and `with-navigation-drawer` both space their (present) children with a fixed gap;
73
+ `center` instead relies on the logo and `right` slot both being flex: 1 (below), which absorbs
74
+ all remaining space and needs no extra gap of its own -- see bs-navigation-header.tsx's class
75
+ doc for why. */
76
+ .bs-navigation-header--default,
77
+ .bs-navigation-header--with-navigation-drawer {
78
+ gap: var(--bs-navigation-header-item-gap);
79
+ }
80
+
81
+ .bs-navigation-header__logo {
82
+ flex-shrink: 0;
83
+ display: flex;
84
+ align-items: center;
85
+ }
86
+
87
+ .bs-navigation-header--center .bs-navigation-header__logo {
88
+ flex: 1 0 0;
89
+ min-width: 0;
90
+ }
91
+
92
+ .bs-navigation-header__left {
93
+ display: flex;
94
+ align-items: center;
95
+ gap: var(--bs-navigation-header-slot-gap);
96
+ flex-shrink: 0;
97
+ }
98
+
99
+ .bs-navigation-header__right {
100
+ display: flex;
101
+ align-items: center;
102
+ justify-content: flex-end;
103
+ gap: var(--bs-navigation-header-slot-gap);
104
+ flex: 1 0 0;
105
+ min-width: 0;
106
+ }