@brandsync/wc 0.0.11 → 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 (297) hide show
  1. package/custom-elements.json +3388 -598
  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-6254dcbe.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-4ca15322.entry.js → p-1900f6ce.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-1bf0b2d5.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-8d78171b.entry.js → p-1cf715aa.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-84ae4420.entry.js → p-20dbc6a1.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-74a4dd91.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-073e5fee.entry.js → p-2a65aabb.entry.js} +1 -1
  16. package/dist/brandsync-wc/{p-030a8ba7.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-dd224cb3.entry.js → p-57fdbb76.entry.js} +1 -1
  21. package/dist/brandsync-wc/{p-8dff4f24.entry.js → p-64e2a7d7.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-b174403d.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-c6d330c3.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-41edb0a2.entry.js → p-8ded1eb6.entry.js} +1 -1
  28. package/dist/brandsync-wc/{p-DP_bvuvB.js → p-DST5-cTx.js} +2 -2
  29. package/dist/brandsync-wc/p-a5b15061.entry.js +1 -0
  30. package/dist/brandsync-wc/{p-7a605d98.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-b289450a.entry.js +1 -0
  33. package/dist/brandsync-wc/{p-7131d0a1.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-d1dc2ced.entry.js → p-d4e3ca77.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-0b858120.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 +14 -3
  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-CGrdFg95.js → index-B3sdhEGk.js} +1 -1
  75. package/dist/cjs/loader.cjs.js +2 -2
  76. package/dist/collection/collection-manifest.json +13 -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 +10 -0
  99. package/dist/collection/components/bs-checkbox/bs-checkbox.css +7 -1
  100. package/dist/collection/components/bs-checkbox/bs-checkbox.js +32 -1
  101. package/dist/collection/components/bs-composer/bs-composer.cmp.test.js +48 -7
  102. package/dist/collection/components/bs-composer/bs-composer.css +15 -0
  103. package/dist/collection/components/bs-composer/bs-composer.js +38 -4
  104. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.cmp.test.js +47 -1
  105. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +20 -1
  106. package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
  107. package/dist/collection/components/bs-input/bs-input.js +2 -2
  108. package/dist/collection/components/bs-logo/brandsync-logo-full-dark.js +44 -0
  109. package/dist/collection/components/bs-logo/brandsync-logo-full-light.js +40 -0
  110. package/dist/collection/components/bs-logo/brandsync-logo-mark.js +17 -0
  111. package/dist/collection/components/bs-logo/bs-logo.cmp.test.js +113 -0
  112. package/dist/collection/components/bs-logo/bs-logo.css +79 -0
  113. package/dist/collection/components/bs-logo/bs-logo.js +193 -0
  114. package/dist/collection/components/bs-logo/bs-logo.stories.js +69 -0
  115. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  116. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  117. package/dist/collection/components/bs-radio/bs-radio.cmp.test.js +76 -0
  118. package/dist/collection/components/bs-radio/bs-radio.css +164 -0
  119. package/dist/collection/components/bs-radio/bs-radio.js +170 -0
  120. package/dist/collection/components/bs-radio/bs-radio.stories.js +56 -0
  121. package/dist/collection/components/bs-slider/bs-slider.cmp.test.js +139 -0
  122. package/dist/collection/components/bs-slider/bs-slider.css +409 -0
  123. package/dist/collection/components/bs-slider/bs-slider.js +499 -0
  124. package/dist/collection/components/bs-slider/bs-slider.stories.js +70 -0
  125. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  126. package/dist/collection/components/bs-switch/bs-switch.cmp.test.js +71 -0
  127. package/dist/collection/components/bs-switch/bs-switch.css +196 -0
  128. package/dist/collection/components/bs-switch/bs-switch.js +185 -0
  129. package/dist/collection/components/bs-switch/bs-switch.stories.js +60 -0
  130. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.cmp.test.js +104 -0
  131. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.css +163 -0
  132. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +192 -0
  133. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.js +95 -0
  134. package/dist/collection/components/bs-tab/bs-tab/bs-tab.cmp.test.js +120 -0
  135. package/dist/collection/components/bs-tab/bs-tab/bs-tab.css +216 -0
  136. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +232 -0
  137. package/dist/collection/components/bs-tab/bs-tab/bs-tab.stories.js +138 -0
  138. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.cmp.test.js +61 -0
  139. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.css +39 -0
  140. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +133 -0
  141. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.stories.js +39 -0
  142. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  143. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +131 -0
  144. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.css +257 -0
  145. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +253 -0
  146. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.js +202 -0
  147. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.js +172 -0
  148. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.css +325 -0
  149. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +314 -0
  150. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.stories.js +78 -0
  151. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.js +77 -0
  152. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.css +106 -0
  153. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +188 -0
  154. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.js +189 -0
  155. package/dist/components/bs-ai-disclaimer.js +1 -1
  156. package/dist/components/bs-ai-greeting.js +1 -1
  157. package/dist/components/bs-ai-thinking.js +1 -1
  158. package/dist/components/bs-attachment-list.js +1 -1
  159. package/dist/components/bs-attachment.js +1 -1
  160. package/dist/components/bs-badge.js +1 -1
  161. package/dist/components/bs-button-skeleton.js +1 -1
  162. package/dist/components/bs-button.js +1 -1
  163. package/dist/components/bs-card.js +1 -1
  164. package/dist/components/bs-chatbot-feedback.js +1 -1
  165. package/dist/components/bs-chatbot-header.js +1 -1
  166. package/dist/components/bs-chatbot-response-action.js +1 -1
  167. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  168. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  169. package/dist/components/bs-checkbox.js +1 -1
  170. package/dist/components/bs-composer-status-banner.js +1 -1
  171. package/dist/components/bs-composer.js +1 -1
  172. package/dist/components/bs-data-table.js +1 -1
  173. package/dist/components/bs-icon-button.d.ts +11 -0
  174. package/dist/components/bs-icon-button.js +1 -0
  175. package/dist/components/bs-inline-tab.d.ts +11 -0
  176. package/dist/components/bs-inline-tab.js +1 -0
  177. package/dist/components/bs-input.js +1 -1
  178. package/dist/components/bs-logo.d.ts +11 -0
  179. package/dist/components/bs-logo.js +1 -0
  180. package/dist/components/bs-menu-item.js +1 -1
  181. package/dist/components/bs-menu.js +1 -1
  182. package/dist/components/bs-modal.js +1 -1
  183. package/dist/components/bs-navigation-drawer-item.d.ts +11 -0
  184. package/dist/components/bs-navigation-drawer-item.js +1 -0
  185. package/dist/components/bs-navigation-drawer.d.ts +11 -0
  186. package/dist/components/bs-navigation-drawer.js +1 -0
  187. package/dist/components/bs-navigation-header.d.ts +11 -0
  188. package/dist/components/bs-navigation-header.js +1 -0
  189. package/dist/components/bs-radio.d.ts +11 -0
  190. package/dist/components/bs-radio.js +1 -0
  191. package/dist/components/bs-slider.d.ts +11 -0
  192. package/dist/components/bs-slider.js +1 -0
  193. package/dist/components/bs-source-link.js +1 -1
  194. package/dist/components/bs-switch.d.ts +11 -0
  195. package/dist/components/bs-switch.js +1 -0
  196. package/dist/components/bs-tab.d.ts +11 -0
  197. package/dist/components/bs-tab.js +1 -0
  198. package/dist/components/bs-tabs.d.ts +11 -0
  199. package/dist/components/bs-tabs.js +1 -0
  200. package/dist/components/bs-tooltip.js +1 -1
  201. package/dist/components/index.js +1 -1
  202. package/dist/components/p-BAOJc0V0.js +1 -0
  203. package/dist/components/{p-D1cYtKyN.js → p-Be1Pfcnm.js} +1 -1
  204. package/dist/components/{p-B9PrXIl_.js → p-BqYyMGrB.js} +1 -1
  205. package/dist/components/p-CaWqTQBZ.js +1 -0
  206. package/dist/components/{p-BUbGEXL7.js → p-DivZLd6i.js} +1 -1
  207. package/dist/components/{p-D2HDHZjz.js → p-xfx69LQx.js} +1 -1
  208. package/dist/esm/brandsync-wc.js +3 -3
  209. package/dist/esm/bs-ai-disclaimer.entry.js +3 -2
  210. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  211. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  212. package/dist/esm/bs-attachment-list.entry.js +2 -2
  213. package/dist/esm/bs-attachment.entry.js +3 -3
  214. package/dist/esm/bs-badge.entry.js +1 -1
  215. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  216. package/dist/esm/bs-button.entry.js +3 -3
  217. package/dist/esm/bs-card.entry.js +1 -1
  218. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  219. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  220. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  221. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  222. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  223. package/dist/esm/bs-checkbox.entry.js +14 -3
  224. package/dist/esm/bs-composer-status-banner.entry.js +14 -2
  225. package/dist/esm/bs-composer.entry.js +37 -4
  226. package/dist/esm/bs-data-table.entry.js +3 -3
  227. package/dist/esm/bs-icon-button.entry.js +38 -0
  228. package/dist/esm/bs-inline-tab.entry.js +67 -0
  229. package/dist/esm/bs-input.entry.js +3 -3
  230. package/dist/esm/bs-logo.entry.js +163 -0
  231. package/dist/esm/bs-menu_2.entry.js +3 -3
  232. package/dist/esm/bs-modal.entry.js +1 -1
  233. package/dist/esm/bs-navigation-drawer-item.entry.js +102 -0
  234. package/dist/esm/bs-navigation-drawer.entry.js +79 -0
  235. package/dist/esm/bs-navigation-header.entry.js +42 -0
  236. package/dist/esm/bs-radio.entry.js +47 -0
  237. package/dist/esm/bs-slider.entry.js +189 -0
  238. package/dist/esm/bs-source-link.entry.js +3 -3
  239. package/dist/esm/bs-switch.entry.js +55 -0
  240. package/dist/esm/bs-tab.entry.js +78 -0
  241. package/dist/esm/bs-tabs.entry.js +37 -0
  242. package/dist/esm/bs-tooltip.entry.js +2 -2
  243. package/dist/esm/{index-DP_bvuvB.js → index-DST5-cTx.js} +1 -1
  244. package/dist/esm/loader.js +3 -3
  245. package/dist/types/components/bs-attachment/bs-attachment.d.ts +3 -9
  246. package/dist/types/components/bs-button/{bs-button.d.ts → bs-button/bs-button.d.ts} +5 -0
  247. package/dist/types/components/bs-button/{bs-button.stories.d.ts → bs-button/bs-button.stories.d.ts} +0 -2
  248. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.d.ts +1 -0
  249. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +51 -0
  250. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.stories.d.ts +16 -0
  251. package/dist/types/components/bs-button-skeleton/bs-button-skeleton.d.ts +1 -1
  252. package/dist/types/components/bs-button-skeleton/bs-button-skeleton.stories.d.ts +1 -1
  253. package/dist/types/components/bs-checkbox/bs-checkbox.d.ts +11 -0
  254. package/dist/types/components/bs-composer/bs-composer.d.ts +26 -2
  255. package/dist/types/components/bs-composer-status-banner/bs-composer-status-banner.d.ts +14 -0
  256. package/dist/types/components/bs-logo/brandsync-logo-full-dark.d.ts +1 -0
  257. package/dist/types/components/bs-logo/brandsync-logo-full-light.d.ts +1 -0
  258. package/dist/types/components/bs-logo/brandsync-logo-mark.d.ts +1 -0
  259. package/dist/types/components/bs-logo/bs-logo.cmp.test.d.ts +1 -0
  260. package/dist/types/components/bs-logo/bs-logo.d.ts +73 -0
  261. package/dist/types/components/bs-logo/bs-logo.stories.d.ts +17 -0
  262. package/dist/types/components/bs-radio/bs-radio.cmp.test.d.ts +1 -0
  263. package/dist/types/components/bs-radio/bs-radio.d.ts +45 -0
  264. package/dist/types/components/bs-radio/bs-radio.stories.d.ts +16 -0
  265. package/dist/types/components/bs-slider/bs-slider.cmp.test.d.ts +1 -0
  266. package/dist/types/components/bs-slider/bs-slider.d.ts +109 -0
  267. package/dist/types/components/bs-slider/bs-slider.stories.d.ts +24 -0
  268. package/dist/types/components/bs-switch/bs-switch.cmp.test.d.ts +1 -0
  269. package/dist/types/components/bs-switch/bs-switch.d.ts +45 -0
  270. package/dist/types/components/bs-switch/bs-switch.stories.d.ts +17 -0
  271. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.cmp.test.d.ts +1 -0
  272. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.d.ts +65 -0
  273. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.d.ts +22 -0
  274. package/dist/types/components/bs-tab/bs-tab/bs-tab.cmp.test.d.ts +1 -0
  275. package/dist/types/components/bs-tab/bs-tab/bs-tab.d.ts +74 -0
  276. package/dist/types/components/bs-tab/bs-tab/bs-tab.stories.d.ts +30 -0
  277. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.cmp.test.d.ts +1 -0
  278. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +45 -0
  279. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.stories.d.ts +13 -0
  280. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.d.ts +1 -0
  281. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.d.ts +96 -0
  282. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.d.ts +16 -0
  283. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.d.ts +1 -0
  284. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.d.ts +103 -0
  285. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.stories.d.ts +20 -0
  286. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.d.ts +1 -0
  287. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.d.ts +60 -0
  288. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.d.ts +21 -0
  289. package/dist/types/components.d.ts +1842 -53
  290. package/package.json +1 -1
  291. package/dist/brandsync-wc/p-2598ca88.entry.js +0 -1
  292. package/dist/brandsync-wc/p-3c8fbaa8.entry.js +0 -1
  293. package/dist/brandsync-wc/p-3dd9b814.entry.js +0 -1
  294. package/dist/brandsync-wc/p-8c302968.entry.js +0 -1
  295. package/dist/brandsync-wc/p-93e44903.entry.js +0 -1
  296. package/dist/brandsync-wc/p-aa45d877.entry.js +0 -1
  297. /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,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
+ }
@@ -0,0 +1,188 @@
1
+ import { h } from "@stencil/core";
2
+ /**
3
+ * The top-level navigation bar for a page: the BrandSync logo plus two consumer-provided slots
4
+ * for menu/action content (e.g. `bs-button`/`bs-icon-button` elements).
5
+ *
6
+ * ## When to use
7
+ * - The persistent top bar of an application, above the page content.
8
+ *
9
+ * ## When not to use
10
+ * - The header of a Genie AI chat panel -- use `bs-chatbot-header` instead, which is purpose-built
11
+ * for that narrower layout and its own fixed action buttons.
12
+ *
13
+ * `alignment` controls both whether the logo renders and how the two slots are laid out:
14
+ * - `default` (default): logo on the left, `left` slot content immediately after it, `right` slot
15
+ * content pushed to the far right.
16
+ * - `center`: logo and `right` slot both grow equally (`flex: 1`), which centers the `left` slot
17
+ * content in the middle of the bar.
18
+ * - `with-navigation-drawer`: no logo at all (this variant assumes a nav-drawer toggle is the
19
+ * leftmost thing on the page instead) -- `left` slot content starts at the bar's own left edge,
20
+ * `right` slot content pushed to the far right.
21
+ *
22
+ * @slot left - Menu/action content immediately after the logo (or, in `with-navigation-drawer`
23
+ * mode, at the bar's left edge). Typically one or more `bs-button`/`bs-icon-button` elements.
24
+ * @slot right - Menu/action content pushed to the bar's far right.
25
+ * @part logo - The BrandSync brand mark, rendered via a nested `bs-logo` element (`part="logo"` is
26
+ * set directly on that element -- the same pattern `bs-attachment` uses for its own nested
27
+ * `bs-icon-button`'s `remove` part -- so `bs-navigation-header::part(logo)` still targets it
28
+ * directly, no forwarding needed). Not rendered in `with-navigation-drawer` mode.
29
+ * @part left - The wrapper around the `left` slot.
30
+ * @part right - The wrapper around the `right` slot.
31
+ * @part skip-link - The "Skip to main content" link (only rendered when `skipToContentHref` is set).
32
+ */
33
+ // Note: this component's CSS Custom Properties are documented via @prop comments in
34
+ // bs-navigation-header.css, not here.
35
+ export class BsNavigationHeader {
36
+ /** Controls whether the logo renders and how the `left`/`right` slots are laid out -- see the
37
+ * class doc above for the three variants' exact behavior. */
38
+ alignment = 'default';
39
+ /** Accessible label for the header landmark, useful when a page has more than one `<header>`
40
+ * (e.g. this one plus a page-specific sub-header) and screen reader users need to tell them
41
+ * apart in the landmarks list. */
42
+ ariaLabel = null;
43
+ /**
44
+ * Fragment/URL to jump to when the "Skip to main content" link is activated (e.g.
45
+ * `#main-content`, matching an id on your page's main landmark). Unset by default -- the link
46
+ * is opt-in rather than pointing at a guessed default id, since a skip link to a target that
47
+ * doesn't exist on the consumer's page is worse than no skip link at all (it silently does
48
+ * nothing when activated). Set this to the same id your page's `<main>` (or equivalent) already
49
+ * has to enable it.
50
+ */
51
+ skipToContentHref = null;
52
+ /** Link text for the skip-to-content link. Only rendered when `skipToContentHref` is set. */
53
+ skipToContentLabel = 'Skip to main content';
54
+ /** Forwarded straight to the internal `bs-logo`'s own `background` prop. Defaults to `"auto"`,
55
+ * which follows the ambient `[data-theme="dark"]` state automatically (see `bs-logo`'s own
56
+ * docs) -- so if this bar ends up on a dark surface via the normal theming mechanism, the logo
57
+ * switches to its dedicated dark-background asset with no wiring needed. Set `"light"`/`"dark"`
58
+ * explicitly only if you've overridden `--bs-navigation-header-bg` to something dark yourself
59
+ * *without* setting `[data-theme="dark"]`, and need to pin the logo regardless of theme. */
60
+ logoBackground = 'auto';
61
+ render() {
62
+ const showLogo = this.alignment !== 'with-navigation-drawer';
63
+ const rootClasses = `bs-navigation-header bs-navigation-header--${this.alignment}`;
64
+ return (h("header", { key: 'e106c295d18a32638e8b2e8179264da30c6343fd', class: rootClasses, "aria-label": this.ariaLabel ?? undefined }, this.skipToContentHref && (h("a", { key: '9b0aa4f626e2ac17fd02ff35f63861be5cca0a4c', part: "skip-link", class: "bs-navigation-header__skip-link", href: this.skipToContentHref }, this.skipToContentLabel)), showLogo && (h("bs-logo", { key: '079ebb7b6077307cb84dacf5504eeca259c265df', part: "logo", class: "bs-navigation-header__logo", variant: "full", background: this.logoBackground })), h("div", { key: '79fb735078a3d2b200811c4c055b881fb17feb54', part: "left", class: "bs-navigation-header__left" }, h("slot", { key: '8c72405a0adeb158bd6427e9c6afb77950cb1de2', name: "left" })), h("div", { key: '81941860e7e9b2780cc02b3ca9a13c0f0cde00bd', part: "right", class: "bs-navigation-header__right" }, h("slot", { key: 'ceb361449083be06404b862e22d461daa56cd8ca', name: "right" }))));
65
+ }
66
+ static get is() { return "bs-navigation-header"; }
67
+ static get encapsulation() { return "shadow"; }
68
+ static get originalStyleUrls() {
69
+ return {
70
+ "$": ["bs-navigation-header.css"]
71
+ };
72
+ }
73
+ static get styleUrls() {
74
+ return {
75
+ "$": ["bs-navigation-header.css"]
76
+ };
77
+ }
78
+ static get properties() {
79
+ return {
80
+ "alignment": {
81
+ "type": "string",
82
+ "mutable": false,
83
+ "complexType": {
84
+ "original": "BsNavigationHeaderAlignment",
85
+ "resolved": "\"center\" | \"default\" | \"with-navigation-drawer\"",
86
+ "references": {
87
+ "BsNavigationHeaderAlignment": {
88
+ "location": "local",
89
+ "path": "/Users/vivka/brandsync-web-components/src/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.tsx",
90
+ "id": "src/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.tsx::BsNavigationHeaderAlignment"
91
+ }
92
+ }
93
+ },
94
+ "required": false,
95
+ "optional": false,
96
+ "docs": {
97
+ "tags": [],
98
+ "text": "Controls whether the logo renders and how the `left`/`right` slots are laid out -- see the\nclass doc above for the three variants' exact behavior."
99
+ },
100
+ "getter": false,
101
+ "setter": false,
102
+ "reflect": false,
103
+ "attribute": "alignment",
104
+ "defaultValue": "'default'"
105
+ },
106
+ "ariaLabel": {
107
+ "type": "string",
108
+ "mutable": false,
109
+ "complexType": {
110
+ "original": "string | null",
111
+ "resolved": "string",
112
+ "references": {}
113
+ },
114
+ "required": false,
115
+ "optional": false,
116
+ "docs": {
117
+ "tags": [],
118
+ "text": "Accessible label for the header landmark, useful when a page has more than one `<header>`\n(e.g. this one plus a page-specific sub-header) and screen reader users need to tell them\napart in the landmarks list."
119
+ },
120
+ "getter": false,
121
+ "setter": false,
122
+ "reflect": false,
123
+ "attribute": "aria-label",
124
+ "defaultValue": "null"
125
+ },
126
+ "skipToContentHref": {
127
+ "type": "string",
128
+ "mutable": false,
129
+ "complexType": {
130
+ "original": "string | null",
131
+ "resolved": "string",
132
+ "references": {}
133
+ },
134
+ "required": false,
135
+ "optional": false,
136
+ "docs": {
137
+ "tags": [],
138
+ "text": "Fragment/URL to jump to when the \"Skip to main content\" link is activated (e.g.\n`#main-content`, matching an id on your page's main landmark). Unset by default -- the link\nis opt-in rather than pointing at a guessed default id, since a skip link to a target that\ndoesn't exist on the consumer's page is worse than no skip link at all (it silently does\nnothing when activated). Set this to the same id your page's `<main>` (or equivalent) already\nhas to enable it."
139
+ },
140
+ "getter": false,
141
+ "setter": false,
142
+ "reflect": false,
143
+ "attribute": "skip-to-content-href",
144
+ "defaultValue": "null"
145
+ },
146
+ "skipToContentLabel": {
147
+ "type": "string",
148
+ "mutable": false,
149
+ "complexType": {
150
+ "original": "string",
151
+ "resolved": "string",
152
+ "references": {}
153
+ },
154
+ "required": false,
155
+ "optional": false,
156
+ "docs": {
157
+ "tags": [],
158
+ "text": "Link text for the skip-to-content link. Only rendered when `skipToContentHref` is set."
159
+ },
160
+ "getter": false,
161
+ "setter": false,
162
+ "reflect": false,
163
+ "attribute": "skip-to-content-label",
164
+ "defaultValue": "'Skip to main content'"
165
+ },
166
+ "logoBackground": {
167
+ "type": "string",
168
+ "mutable": false,
169
+ "complexType": {
170
+ "original": "'auto' | 'light' | 'dark'",
171
+ "resolved": "\"auto\" | \"dark\" | \"light\"",
172
+ "references": {}
173
+ },
174
+ "required": false,
175
+ "optional": false,
176
+ "docs": {
177
+ "tags": [],
178
+ "text": "Forwarded straight to the internal `bs-logo`'s own `background` prop. Defaults to `\"auto\"`,\nwhich follows the ambient `[data-theme=\"dark\"]` state automatically (see `bs-logo`'s own\ndocs) -- so if this bar ends up on a dark surface via the normal theming mechanism, the logo\nswitches to its dedicated dark-background asset with no wiring needed. Set `\"light\"`/`\"dark\"`\nexplicitly only if you've overridden `--bs-navigation-header-bg` to something dark yourself\n*without* setting `[data-theme=\"dark\"]`, and need to pin the logo regardless of theme."
179
+ },
180
+ "getter": false,
181
+ "setter": false,
182
+ "reflect": false,
183
+ "attribute": "logo-background",
184
+ "defaultValue": "'auto'"
185
+ }
186
+ };
187
+ }
188
+ }
@@ -0,0 +1,189 @@
1
+ import { html } from "lit";
2
+ import { ifDefined } from "lit/directives/if-defined.js";
3
+ import { componentDescription, propDescription } from "../../../../stories-utils";
4
+ const alignments = ['default', 'center', 'with-navigation-drawer'];
5
+ const leftContentTypes = ['buttons', 'tabs'];
6
+ const searchIcon = html `
7
+ <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
8
+ <circle cx="7" cy="7" r="5" stroke="currentColor" stroke-width="1.5" />
9
+ <path d="M11 11L14.5 14.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
10
+ </svg>
11
+ `;
12
+ const bellIcon = html `
13
+ <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
14
+ <path
15
+ d="M3 12.5H13L11.5 10.5V6.5C11.5 4.29086 9.98528 2.5 8 2.5C6.01472 2.5 4.5 4.29086 4.5 6.5V10.5L3 12.5Z"
16
+ stroke="currentColor"
17
+ stroke-width="1.5"
18
+ stroke-linejoin="round"
19
+ />
20
+ <path d="M6.5 13.5C6.5 14.3284 7.17157 15 8 15C8.82843 15 9.5 14.3284 9.5 13.5" stroke="currentColor" stroke-width="1.5" />
21
+ </svg>
22
+ `;
23
+ const LEFT_SLOT_BUTTONS = html `
24
+ <bs-button variant="subtle" size="sm">Products</bs-button>
25
+ <bs-button variant="subtle" size="sm">Solutions</bs-button>
26
+ <bs-button variant="subtle" size="sm">Pricing</bs-button>
27
+ `;
28
+ const LEFT_SLOT_TABS = html `
29
+ <bs-tabs type="bs-tab">
30
+ <bs-tab selected>Products</bs-tab>
31
+ <bs-tab>Solutions</bs-tab>
32
+ <bs-tab>Pricing</bs-tab>
33
+ </bs-tabs>
34
+ `;
35
+ // This is a Storybook-only demo toggle, not a real prop on bs-navigation-header itself -- the
36
+ // component's `left`/`right` slots already accept arbitrary content (buttons, tabs, links,
37
+ // anything), so baking a specific content choice into the actual component's API would narrow it
38
+ // unnecessarily. This just switches what the story slots in.
39
+ const leftSlotContent = (type) => (type === 'tabs' ? LEFT_SLOT_TABS : LEFT_SLOT_BUTTONS);
40
+ // Icon-only buttons (no visible text label) get a hover/focus tooltip repeating their
41
+ // aria-label, same convention as bs-chatbot-header's own action buttons -- bs-tooltip is purely
42
+ // presentational (see its own class doc), so the show/hide-on-hover/focus-within CSS below is this
43
+ // story's responsibility, not something bs-navigation-header or bs-tooltip provide automatically.
44
+ const RIGHT_SLOT = html `
45
+ <style>
46
+ .story-nav-header-tooltip-wrapper {
47
+ position: relative;
48
+ display: inline-flex;
49
+ }
50
+ .story-nav-header-tooltip {
51
+ position: absolute;
52
+ top: 100%;
53
+ left: 50%;
54
+ transform: translateX(-50%);
55
+ margin-top: var(--bs-spacing-100);
56
+ opacity: 0;
57
+ visibility: hidden;
58
+ transition: opacity var(--bs-duration-fast) var(--bs-easing-standard);
59
+ transition-delay: 0s;
60
+ white-space: nowrap;
61
+ z-index: 1;
62
+ }
63
+ .story-nav-header-tooltip-wrapper:hover .story-nav-header-tooltip,
64
+ .story-nav-header-tooltip-wrapper:focus-within .story-nav-header-tooltip {
65
+ opacity: 1;
66
+ visibility: visible;
67
+ transition-delay: var(--bs-duration-slow);
68
+ }
69
+ </style>
70
+ <span class="story-nav-header-tooltip-wrapper">
71
+ <bs-icon-button size="sm" variant="subtle" aria-label="Search">${searchIcon}</bs-icon-button>
72
+ <bs-tooltip class="story-nav-header-tooltip" placement="top" aria-hidden="true">Search</bs-tooltip>
73
+ </span>
74
+ <span class="story-nav-header-tooltip-wrapper">
75
+ <bs-icon-button size="sm" variant="subtle" aria-label="Notifications">${bellIcon}</bs-icon-button>
76
+ <bs-tooltip class="story-nav-header-tooltip" placement="top" aria-hidden="true">Notifications</bs-tooltip>
77
+ </span>
78
+ <bs-button variant="primary" size="sm">Sign in</bs-button>
79
+ `;
80
+ const meta = {
81
+ title: 'UI Shell/bs-navigation-header',
82
+ parameters: { docs: { description: { component: componentDescription('bs-navigation-header') } }, layout: 'fullscreen' },
83
+ render: args => html `
84
+ <bs-navigation-header
85
+ alignment=${args.alignment}
86
+ skip-to-content-href=${ifDefined(args.skipToContentHref || undefined)}
87
+ logo-background=${args.logoBackground}
88
+ >
89
+ <div slot="left" style="display: contents;">${leftSlotContent(args.leftContentType)}</div>
90
+ <div slot="right" style="display: contents;">${RIGHT_SLOT}</div>
91
+ </bs-navigation-header>
92
+ `,
93
+ argTypes: {
94
+ alignment: { control: 'select', options: alignments, description: propDescription('bs-navigation-header', 'alignment') },
95
+ skipToContentHref: { control: 'text', description: propDescription('bs-navigation-header', 'skipToContentHref') },
96
+ leftContentType: {
97
+ control: 'select',
98
+ options: leftContentTypes,
99
+ description: 'Storybook-only demo toggle: what to render in the `left` slot (not a real prop on bs-navigation-header -- the slot accepts anything).',
100
+ },
101
+ logoBackground: { control: 'select', options: ['auto', 'light', 'dark'], description: propDescription('bs-navigation-header', 'logoBackground') },
102
+ },
103
+ args: {
104
+ alignment: 'default',
105
+ skipToContentHref: '',
106
+ leftContentType: 'buttons',
107
+ logoBackground: 'auto',
108
+ },
109
+ };
110
+ export default meta;
111
+ // Story naming follows the "Header Base [with X [and Y]]" convention: the bare bar first, then
112
+ // each slot added on its own, then combined, then the alignment/content variants layered on top
113
+ // of the fully-populated ("Navigation and Actions") bar.
114
+ export const HeaderBase = {
115
+ name: 'Header Base',
116
+ render: args => html `<bs-navigation-header alignment=${args.alignment}></bs-navigation-header>`,
117
+ };
118
+ export const HeaderBaseWithNavigation = {
119
+ name: 'Header Base with Navigation',
120
+ render: args => html `
121
+ <bs-navigation-header alignment=${args.alignment}>
122
+ <div slot="left" style="display: contents;">${leftSlotContent(args.leftContentType)}</div>
123
+ </bs-navigation-header>
124
+ `,
125
+ };
126
+ export const HeaderBaseWithActions = {
127
+ name: 'Header Base with Actions',
128
+ render: args => html `
129
+ <bs-navigation-header alignment=${args.alignment}>
130
+ <div slot="right" style="display: contents;">${RIGHT_SLOT}</div>
131
+ </bs-navigation-header>
132
+ `,
133
+ };
134
+ export const HeaderBaseWithNavigationAndActions = {
135
+ name: 'Header Base with Navigation and Actions',
136
+ };
137
+ export const HeaderBaseWithNavigationAndActionsCentered = {
138
+ name: 'Header Base with Navigation and Actions, Centered',
139
+ args: { alignment: 'center' },
140
+ };
141
+ export const HeaderBaseWithNavigationAndActionsNoLogo = {
142
+ name: 'Header Base with Navigation and Actions (No Logo)',
143
+ args: { alignment: 'with-navigation-drawer' },
144
+ };
145
+ export const HeaderBaseWithNavigationAndActionsTabs = {
146
+ name: 'Header Base with Navigation and Actions, Tabs',
147
+ args: { leftContentType: 'tabs' },
148
+ };
149
+ export const HeaderBaseDark = {
150
+ name: 'Header Base with Navigation and Actions (Dark)',
151
+ // `data-theme="dark"` is set on a wrapper scoped to just this story, NOT via a globals override
152
+ // on the toolbar's Theme switch -- that switch's decorator (see .storybook/preview.ts) sets the
153
+ // attribute on the shared document root, which is fine in isolation but breaks down on this
154
+ // component's Docs page: every story renders together in one document there, so one story
155
+ // forcing a document-wide theme while its siblings render alongside it under the *other* theme
156
+ // causes exactly the kind of thrash/hang a shared mutable global produces. A local wrapper gets
157
+ // the identical CSS custom property cascade (tokens.css's dark block matches any
158
+ // `[data-theme="dark"]` element, not specifically <html>) without touching shared state.
159
+ // logoBackground is left at its "auto" default here deliberately -- this story demonstrates that
160
+ // no manual prop is needed for the logo to follow the theme; see logoBackground's own docs for
161
+ // the explicit-override case.
162
+ render: args => html `
163
+ <div data-theme="dark" style="background: var(--bs-surface-base);">
164
+ <bs-navigation-header alignment=${args.alignment} logo-background=${args.logoBackground}>
165
+ <div slot="left" style="display: contents;">${leftSlotContent(args.leftContentType)}</div>
166
+ <div slot="right" style="display: contents;">${RIGHT_SLOT}</div>
167
+ </bs-navigation-header>
168
+ </div>
169
+ `,
170
+ };
171
+ export const HeaderBaseWithSkipLink = {
172
+ name: 'Header Base with Skip Link',
173
+ // Press Tab from the top of this story to focus the (normally offscreen) skip link and see it
174
+ // come into view, then Enter/Space to jump straight to the #main-content landmark below,
175
+ // bypassing the left/right slot content in between.
176
+ args: { skipToContentHref: '#main-content' },
177
+ render: args => html `
178
+ <div>
179
+ <bs-navigation-header alignment=${args.alignment} skip-to-content-href=${ifDefined(args.skipToContentHref || undefined)}>
180
+ <div slot="left" style="display: contents;">${leftSlotContent(args.leftContentType)}</div>
181
+ <div slot="right" style="display: contents;">${RIGHT_SLOT}</div>
182
+ </bs-navigation-header>
183
+ <main id="main-content" tabindex="-1" style="padding: 24px; font-family: sans-serif;">
184
+ <h1 style="margin: 0;">Main content</h1>
185
+ <p>This is the landmark the skip link jumps to.</p>
186
+ </main>
187
+ </div>
188
+ `,
189
+ };
@@ -1 +1 @@
1
- import{t as i,p as e,H as s,h as a}from"./p-D1cYtKyN.js";const t=e(class extends s{constructor(i){super(),!1!==i&&this.__registerHost(),this.__attachShadow()}render(){return a("div",{key:"ea1210d75f9f55f4ce31f0ecd434e28a0c3a6ae5",class:"bs-ai-disclaimer"},a("p",{key:"a4379d06096623a33254466c83d7a8342a1a61f6",part:"text",class:"bs-ai-disclaimer__text"},a("slot",{key:"4ceb6be62b06ddeae050ce84c92d511218791219"})))}static get style(){return":host{display:block;--bs-ai-disclaimer-padding-x:var(--bs-spacing-200);--bs-ai-disclaimer-text-color:var(--bs-text-secondary);--bs-ai-disclaimer-font-size:var(--bs-font-size-sm);--bs-ai-disclaimer-line-height:var(--bs-line-height-body-sm)}.bs-ai-disclaimer{box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:0 var(--bs-ai-disclaimer-padding-x);font-family:inherit}.bs-ai-disclaimer__text{margin:0;flex:1 0 0;min-width:0;color:var(--bs-ai-disclaimer-text-color);font-size:var(--bs-ai-disclaimer-font-size);line-height:calc(var(--bs-ai-disclaimer-line-height) * 1px);text-align:center;word-break:break-word}"}},[257,"bs-ai-disclaimer"]);function r(){"undefined"!=typeof customElements&&["bs-ai-disclaimer"].forEach((e=>{"bs-ai-disclaimer"===e&&(customElements.get(i(e))||customElements.define(i(e),t))}))}r();const c=t,d=r;export{c as BsAiDisclaimer,d as defineCustomElement}
1
+ import{t as e,p as i,H as s,h as a}from"./p-Be1Pfcnm.js";const t=i(class extends s{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}render(){return a("div",{key:"c1215e28befb6e10d60deb9ef777269e3b8a2a49",class:"bs-ai-disclaimer"},a("p",{key:"c01f55b4cb73131f79af6cea3636224317fd8f5b",part:"text",class:"bs-ai-disclaimer__text"},a("slot",{key:"99d3b3ae67d32a3df261bfcc3df39ee39d66ad40"})))}static get style(){return":host{display:block;--bs-ai-disclaimer-padding-x:var(--bs-spacing-200);--bs-ai-disclaimer-text-color:var(--bs-text-secondary);--bs-ai-disclaimer-font-size:var(--bs-font-size-sm);--bs-ai-disclaimer-line-height:var(--bs-line-height-body-sm)}.bs-ai-disclaimer{box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:0 var(--bs-ai-disclaimer-padding-x);font-family:inherit}.bs-ai-disclaimer__text{margin:0;flex:1 0 0;min-width:0;color:var(--bs-ai-disclaimer-text-color);font-size:var(--bs-ai-disclaimer-font-size);line-height:calc(var(--bs-ai-disclaimer-line-height) * 1px);text-align:center;word-break:break-word}"}},[257,"bs-ai-disclaimer"]);function r(){"undefined"!=typeof customElements&&["bs-ai-disclaimer"].forEach((i=>{"bs-ai-disclaimer"===i&&(customElements.get(e(i))||customElements.define(e(i),t))}))}r();const c=t,d=r;export{c as BsAiDisclaimer,d as defineCustomElement}