@brandsync/wc 1.21.0 → 1.22.1

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 (659) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/REFERENCE.md +2 -1
  3. package/custom-elements.json +136 -4
  4. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  5. package/dist/brandsync-wc/{p-cd1adef0.entry.js → p-02551a4b.entry.js} +1 -1
  6. package/dist/brandsync-wc/{p-83ea17b6.entry.js → p-041c912e.entry.js} +1 -1
  7. package/dist/brandsync-wc/{p-fbd33eb3.entry.js → p-048b28cb.entry.js} +1 -1
  8. package/dist/brandsync-wc/{p-4cdb1c8c.entry.js → p-0719182b.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-eadbc160.entry.js → p-08a93f66.entry.js} +1 -1
  10. package/dist/brandsync-wc/{p-1b41823c.entry.js → p-0aa93d07.entry.js} +1 -1
  11. package/dist/brandsync-wc/{p-08af052c.entry.js → p-0b50aab6.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-c1207ce6.entry.js → p-11beaea5.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-b3284eca.entry.js → p-18eab08e.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-5c1ccf35.entry.js → p-1f38c837.entry.js} +1 -1
  15. package/dist/brandsync-wc/{p-3592e6f3.entry.js → p-2013d8ff.entry.js} +1 -1
  16. package/dist/brandsync-wc/{p-c700a860.entry.js → p-20f0bd1f.entry.js} +1 -1
  17. package/dist/brandsync-wc/{p-fc859e89.entry.js → p-2561bdeb.entry.js} +1 -1
  18. package/dist/brandsync-wc/p-29dd1cde.entry.js +1 -0
  19. package/dist/brandsync-wc/{p-bc489296.entry.js → p-2bcc115c.entry.js} +1 -1
  20. package/dist/brandsync-wc/{p-fe070433.entry.js → p-2becf801.entry.js} +1 -1
  21. package/dist/brandsync-wc/{p-1187a158.entry.js → p-32631906.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-bd37c086.entry.js → p-36e089ba.entry.js} +1 -1
  23. package/dist/brandsync-wc/{p-5f96d808.entry.js → p-37cf0842.entry.js} +1 -1
  24. package/dist/brandsync-wc/{p-237f583d.entry.js → p-3d054e83.entry.js} +1 -1
  25. package/dist/brandsync-wc/{p-da934f7b.entry.js → p-3f189709.entry.js} +1 -1
  26. package/dist/brandsync-wc/{p-abaab890.entry.js → p-3f8357bd.entry.js} +1 -1
  27. package/dist/brandsync-wc/{p-f89d12d7.entry.js → p-3fcb9e9f.entry.js} +1 -1
  28. package/dist/brandsync-wc/{p-001f3790.entry.js → p-4105a4f3.entry.js} +1 -1
  29. package/dist/brandsync-wc/{p-faea22be.entry.js → p-4886d77f.entry.js} +1 -1
  30. package/dist/brandsync-wc/p-48a15e87.entry.js +1 -0
  31. package/dist/brandsync-wc/{p-171db2b0.entry.js → p-4cd94d94.entry.js} +1 -1
  32. package/dist/brandsync-wc/{p-f0596399.entry.js → p-5126682b.entry.js} +1 -1
  33. package/dist/brandsync-wc/{p-b6b880c0.entry.js → p-527b174e.entry.js} +1 -1
  34. package/dist/brandsync-wc/{p-9065d825.entry.js → p-55b85126.entry.js} +1 -1
  35. package/dist/brandsync-wc/{p-a30d456d.entry.js → p-5a34d5d2.entry.js} +1 -1
  36. package/dist/brandsync-wc/p-5d2d5ffd.entry.js +1 -0
  37. package/dist/brandsync-wc/{p-b9014d87.entry.js → p-5db462ae.entry.js} +1 -1
  38. package/dist/brandsync-wc/{p-ffeea95f.entry.js → p-688fc320.entry.js} +1 -1
  39. package/dist/brandsync-wc/{p-cf297373.entry.js → p-6cd1deee.entry.js} +1 -1
  40. package/dist/brandsync-wc/{p-f5bbbff2.entry.js → p-7197c874.entry.js} +1 -1
  41. package/dist/brandsync-wc/{p-8560fb54.entry.js → p-73cbb0cb.entry.js} +1 -1
  42. package/dist/brandsync-wc/{p-aea1e4f9.entry.js → p-78af4542.entry.js} +1 -1
  43. package/dist/brandsync-wc/{p-2eed5ff2.entry.js → p-7a1ca36c.entry.js} +1 -1
  44. package/dist/brandsync-wc/{p-383c076f.entry.js → p-7ce68b44.entry.js} +1 -1
  45. package/dist/brandsync-wc/{p-5e3fcc47.entry.js → p-7f4ca57d.entry.js} +1 -1
  46. package/dist/brandsync-wc/{p-5cd95a12.entry.js → p-83a6dd91.entry.js} +1 -1
  47. package/dist/brandsync-wc/{p-2be42af3.entry.js → p-8738e976.entry.js} +1 -1
  48. package/dist/brandsync-wc/p-87a76b77.entry.js +1 -0
  49. package/dist/brandsync-wc/p-8fd4c240.entry.js +1 -0
  50. package/dist/brandsync-wc/{p-44c7fa4a.entry.js → p-932162a6.entry.js} +1 -1
  51. package/dist/brandsync-wc/p-93b6e9d2.entry.js +1 -0
  52. package/dist/brandsync-wc/{p-9ca0d2db.entry.js → p-9e0e1c2b.entry.js} +1 -1
  53. package/dist/brandsync-wc/{p-59ddf12e.entry.js → p-9fe002aa.entry.js} +1 -1
  54. package/dist/brandsync-wc/{p-c542d67f.entry.js → p-a17bbde9.entry.js} +1 -1
  55. package/dist/brandsync-wc/{p-023dae02.entry.js → p-a386ce3d.entry.js} +1 -1
  56. package/dist/brandsync-wc/{p-cf615c99.entry.js → p-a88e76e7.entry.js} +1 -1
  57. package/dist/brandsync-wc/{p-64fbd43a.entry.js → p-adc3b508.entry.js} +1 -1
  58. package/dist/brandsync-wc/{p-c5fa5d02.entry.js → p-af178531.entry.js} +1 -1
  59. package/dist/brandsync-wc/{p-0d3d8b6c.entry.js → p-b0e91068.entry.js} +1 -1
  60. package/dist/brandsync-wc/{p-e56cc6ac.entry.js → p-b104ecea.entry.js} +1 -1
  61. package/dist/brandsync-wc/{p-05698f65.entry.js → p-b175f945.entry.js} +1 -1
  62. package/dist/brandsync-wc/{p-40aeeacf.entry.js → p-b399bd6b.entry.js} +1 -1
  63. package/dist/brandsync-wc/{p-6cf303f1.entry.js → p-b52df3da.entry.js} +1 -1
  64. package/dist/brandsync-wc/{p-ea4ea55d.entry.js → p-b777bda2.entry.js} +1 -1
  65. package/dist/brandsync-wc/{p-7cdcf7e7.entry.js → p-b89560ea.entry.js} +1 -1
  66. package/dist/brandsync-wc/{p-0762a4dd.entry.js → p-b920cb6b.entry.js} +1 -1
  67. package/dist/brandsync-wc/{p-34dd0976.entry.js → p-baa4e834.entry.js} +1 -1
  68. package/dist/brandsync-wc/{p-1d2bc5b4.entry.js → p-c17df994.entry.js} +1 -1
  69. package/dist/brandsync-wc/{p-dd8f593a.entry.js → p-c483c3cb.entry.js} +1 -1
  70. package/dist/brandsync-wc/{p-7ee43b50.entry.js → p-c668a5b8.entry.js} +1 -1
  71. package/dist/brandsync-wc/p-c7b84459.entry.js +1 -0
  72. package/dist/brandsync-wc/{p-21781ce5.entry.js → p-cae21871.entry.js} +1 -1
  73. package/dist/brandsync-wc/{p-dae0348e.entry.js → p-cb4ed9d2.entry.js} +1 -1
  74. package/dist/brandsync-wc/{p-513fa325.entry.js → p-cca9e854.entry.js} +1 -1
  75. package/dist/brandsync-wc/{p-1ddcd867.entry.js → p-cee3d9c8.entry.js} +1 -1
  76. package/dist/brandsync-wc/{p-189eb922.entry.js → p-d12b7a3f.entry.js} +1 -1
  77. package/dist/brandsync-wc/{p-eb8da874.entry.js → p-d226f18a.entry.js} +1 -1
  78. package/dist/brandsync-wc/{p-3937bc23.entry.js → p-d7116356.entry.js} +1 -1
  79. package/dist/brandsync-wc/{p-4ec0dca9.entry.js → p-d7f9abd7.entry.js} +1 -1
  80. package/dist/brandsync-wc/{p-b0b73f22.entry.js → p-e03a8269.entry.js} +1 -1
  81. package/dist/brandsync-wc/{p-56bd821c.entry.js → p-e0900317.entry.js} +1 -1
  82. package/dist/brandsync-wc/{p-953d0191.entry.js → p-e42b118c.entry.js} +1 -1
  83. package/dist/brandsync-wc/{p-324f0d11.entry.js → p-e454d65b.entry.js} +1 -1
  84. package/dist/brandsync-wc/{p-64ef4a9f.entry.js → p-e5209d8b.entry.js} +1 -1
  85. package/dist/brandsync-wc/{p-1cf40f44.entry.js → p-e9d91fb8.entry.js} +1 -1
  86. package/dist/brandsync-wc/{p-8a3095d5.entry.js → p-eb5a06af.entry.js} +1 -1
  87. package/dist/brandsync-wc/{p-ab74da02.entry.js → p-ecb614b8.entry.js} +1 -1
  88. package/dist/brandsync-wc/{p-2e654764.entry.js → p-f0897031.entry.js} +1 -1
  89. package/dist/brandsync-wc/{p-7c627563.entry.js → p-f2c9bd85.entry.js} +1 -1
  90. package/dist/brandsync-wc/{p-ac7f9aa0.entry.js → p-f5704ede.entry.js} +1 -1
  91. package/dist/brandsync-wc/{p-205a1ccf.entry.js → p-f677df8f.entry.js} +1 -1
  92. package/dist/brandsync-wc/{p-05a9cbda.entry.js → p-f77e1523.entry.js} +1 -1
  93. package/dist/brandsync-wc/p-faa24a2e.entry.js +1 -0
  94. package/dist/brandsync-wc/p-ff25350e.entry.js +1 -0
  95. package/dist/brandsync-wc/{p-c305bde7.entry.js → p-ff57df38.entry.js} +1 -1
  96. package/dist/cjs/brandsync-wc.cjs.js +1 -1
  97. package/dist/cjs/bs-accordion-group.cjs.entry.js +1 -1
  98. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +1 -1
  99. package/dist/cjs/bs-ai-greeting.cjs.entry.js +1 -1
  100. package/dist/cjs/bs-ai-thinking.cjs.entry.js +1 -1
  101. package/dist/cjs/bs-app-recent-item_3.cjs.entry.js +4 -4
  102. package/dist/cjs/bs-app-shell.cjs.entry.js +1 -1
  103. package/dist/cjs/bs-attachment-list.cjs.entry.js +1 -1
  104. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +1 -1
  105. package/dist/cjs/bs-button-skeleton.cjs.entry.js +1 -1
  106. package/dist/cjs/bs-button_2.cjs.entry.js +1 -1
  107. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +1 -1
  108. package/dist/cjs/bs-chatbot-header.cjs.entry.js +1 -1
  109. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +1 -1
  110. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +1 -1
  111. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +1 -1
  112. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +1 -1
  113. package/dist/cjs/bs-chip-informative.cjs.entry.js +31 -2
  114. package/dist/cjs/bs-chip-input.cjs.entry.js +1 -1
  115. package/dist/cjs/bs-citation-preview.cjs.entry.js +1 -1
  116. package/dist/cjs/bs-command-palette.cjs.entry.js +1 -1
  117. package/dist/cjs/bs-compact-menu-block_2.cjs.entry.js +4 -4
  118. package/dist/cjs/bs-company-switcher.cjs.entry.js +2 -2
  119. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +1 -1
  120. package/dist/cjs/bs-composer.cjs.entry.js +1 -1
  121. package/dist/cjs/bs-container.cjs.entry.js +1 -1
  122. package/dist/cjs/bs-data-table.cjs.entry.js +4 -2
  123. package/dist/cjs/bs-datepicker.cjs.entry.js +1 -1
  124. package/dist/cjs/bs-description-item.cjs.entry.js +1 -1
  125. package/dist/cjs/bs-description-list.cjs.entry.js +1 -1
  126. package/dist/cjs/bs-divider.cjs.entry.js +1 -1
  127. package/dist/cjs/bs-dropdown.cjs.entry.js +1 -1
  128. package/dist/cjs/bs-empty-state.cjs.entry.js +1 -1
  129. package/dist/cjs/bs-error-page.cjs.entry.js +1 -1
  130. package/dist/cjs/bs-file-upload-item.cjs.entry.js +1 -1
  131. package/dist/cjs/bs-file-upload.cjs.entry.js +1 -1
  132. package/dist/cjs/bs-global-search.cjs.entry.js +2 -2
  133. package/dist/cjs/bs-grid.cjs.entry.js +2 -2
  134. package/dist/cjs/bs-heading.cjs.entry.js +1 -1
  135. package/dist/cjs/bs-icon-button.cjs.entry.js +1 -1
  136. package/dist/cjs/bs-icon-tile.cjs.entry.js +2 -2
  137. package/dist/cjs/bs-icon.cjs.entry.js +1 -1
  138. package/dist/cjs/bs-inline-tab.cjs.entry.js +1 -1
  139. package/dist/cjs/bs-input_4.cjs.entry.js +9 -6
  140. package/dist/cjs/bs-key-caps.cjs.entry.js +1 -1
  141. package/dist/cjs/bs-key.cjs.entry.js +1 -1
  142. package/dist/cjs/bs-keyboard-shortcuts.cjs.entry.js +2 -2
  143. package/dist/cjs/bs-link.cjs.entry.js +1 -1
  144. package/dist/cjs/bs-list-item.cjs.entry.js +1 -1
  145. package/dist/cjs/bs-list.cjs.entry.js +1 -1
  146. package/dist/cjs/bs-mega-menu.cjs.entry.js +1 -1
  147. package/dist/cjs/bs-message-list.cjs.entry.js +1 -1
  148. package/dist/cjs/bs-message.cjs.entry.js +1 -1
  149. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +1 -1
  150. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +2 -2
  151. package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
  152. package/dist/cjs/bs-page-header.cjs.entry.js +1 -1
  153. package/dist/cjs/bs-pagination.cjs.entry.js +1 -1
  154. package/dist/cjs/bs-popover.cjs.entry.js +1 -1
  155. package/dist/cjs/bs-presence.cjs.entry.js +1 -1
  156. package/dist/cjs/bs-progress-linear.cjs.entry.js +2 -2
  157. package/dist/cjs/bs-progress.cjs.entry.js +2 -2
  158. package/dist/cjs/bs-qr-code.cjs.entry.js +1 -1
  159. package/dist/cjs/bs-radio-group.cjs.entry.js +1 -1
  160. package/dist/cjs/bs-radio.cjs.entry.js +1 -1
  161. package/dist/cjs/bs-search-item.cjs.entry.js +1 -1
  162. package/dist/cjs/bs-select.cjs.entry.js +1 -1
  163. package/dist/cjs/bs-session-timeout.cjs.entry.js +1 -1
  164. package/dist/cjs/bs-shortcut-row.cjs.entry.js +1 -1
  165. package/dist/cjs/bs-skip-link.cjs.entry.js +1 -1
  166. package/dist/cjs/bs-slider.cjs.entry.js +1 -1
  167. package/dist/cjs/bs-snackbar.cjs.entry.js +1 -1
  168. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  169. package/dist/cjs/bs-split-pane.cjs.entry.js +27 -2
  170. package/dist/cjs/bs-stack.cjs.entry.js +1 -1
  171. package/dist/cjs/bs-stat.cjs.entry.js +1 -1
  172. package/dist/cjs/bs-stepper-step.cjs.entry.js +1 -1
  173. package/dist/cjs/bs-stepper.cjs.entry.js +1 -1
  174. package/dist/cjs/bs-switch.cjs.entry.js +1 -1
  175. package/dist/cjs/bs-tab_3.cjs.entry.js +3 -3
  176. package/dist/cjs/bs-table-of-contents.cjs.entry.js +1 -1
  177. package/dist/cjs/bs-tag.cjs.entry.js +2 -2
  178. package/dist/cjs/bs-text.cjs.entry.js +1 -1
  179. package/dist/cjs/bs-timepicker.cjs.entry.js +2 -2
  180. package/dist/cjs/bs-toast.cjs.entry.js +1 -1
  181. package/dist/cjs/bs-toggle-button-group.cjs.entry.js +1 -1
  182. package/dist/cjs/bs-toggle-button.cjs.entry.js +9 -1
  183. package/dist/cjs/bs-toolbar.cjs.entry.js +1 -1
  184. package/dist/cjs/bs-tooltip-trigger.cjs.entry.js +1 -1
  185. package/dist/cjs/bs-tooltip.cjs.entry.js +1 -1
  186. package/dist/cjs/bs-tree-item.cjs.entry.js +2 -2
  187. package/dist/cjs/bs-tree.cjs.entry.js +1 -1
  188. package/dist/cjs/loader.cjs.js +1 -1
  189. package/dist/collection/components/bs-accordion/bs-accordion.stories.js +26 -2
  190. package/dist/collection/components/bs-accordion-group/bs-accordion-group.js +1 -1
  191. package/dist/collection/components/bs-accordion-group/bs-accordion-group.stories.js +1 -1
  192. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  193. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  194. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  195. package/dist/collection/components/bs-app-recent-item/bs-app-recent-item.js +3 -3
  196. package/dist/collection/components/bs-app-recent-item/bs-app-recent-item.stories.js +1 -1
  197. package/dist/collection/components/bs-app-shell/bs-app-shell.js +1 -1
  198. package/dist/collection/components/bs-app-shell/bs-app-shell.stories.js +1 -1
  199. package/dist/collection/components/bs-app-switcher/bs-app-switcher.stories.js +1 -1
  200. package/dist/collection/components/bs-app-tile/bs-app-tile.stories.js +1 -1
  201. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  202. package/dist/collection/components/bs-avatar/bs-avatar.stories.js +1 -1
  203. package/dist/collection/components/bs-badge/bs-badge.stories.js +1 -1
  204. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -1
  205. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.stories.js +1 -1
  206. package/dist/collection/components/bs-button/bs-button/bs-button.stories.js +1 -1
  207. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +1 -1
  208. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.stories.js +1 -1
  209. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  210. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.stories.js +1 -1
  211. package/dist/collection/components/bs-card/bs-card.stories.js +1 -1
  212. package/dist/collection/components/bs-carousel/bs-carousel.stories.js +1 -1
  213. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  214. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  215. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  216. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  217. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  218. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
  219. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.stories.js +1 -1
  220. package/dist/collection/components/bs-checkbox/bs-checkbox.stories.js +26 -2
  221. package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.stories.js +1 -1
  222. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.stories.js +1 -1
  223. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.cmp.test.js +44 -0
  224. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.css +52 -2
  225. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.js +139 -7
  226. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.stories.js +8 -1
  227. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +1 -1
  228. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.stories.js +1 -1
  229. package/dist/collection/components/bs-citation-preview/bs-citation-preview.js +1 -1
  230. package/dist/collection/components/bs-code-block/bs-code-block.stories.js +1 -1
  231. package/dist/collection/components/bs-command-palette/bs-command-palette.js +1 -1
  232. package/dist/collection/components/bs-command-palette/bs-command-palette.stories.js +1 -1
  233. package/dist/collection/components/bs-compact-menu-block/bs-compact-menu-block.js +1 -1
  234. package/dist/collection/components/bs-compact-menu-block/bs-compact-menu-block.stories.js +1 -1
  235. package/dist/collection/components/bs-company-switcher/bs-company-switcher.js +2 -2
  236. package/dist/collection/components/bs-company-switcher/bs-company-switcher.stories.js +1 -1
  237. package/dist/collection/components/bs-composer/bs-composer.js +1 -1
  238. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -1
  239. package/dist/collection/components/bs-container/bs-container.js +1 -1
  240. package/dist/collection/components/bs-container/bs-container.stories.js +1 -1
  241. package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.stories.js +1 -1
  242. package/dist/collection/components/bs-data-table/bs-data-table.cmp.test.js +9 -0
  243. package/dist/collection/components/bs-data-table/bs-data-table.js +24 -2
  244. package/dist/collection/components/bs-data-table/bs-data-table.stories.js +1 -1
  245. package/dist/collection/components/bs-datepicker/bs-datepicker.js +1 -1
  246. package/dist/collection/components/bs-datepicker/bs-datepicker.stories.js +1 -1
  247. package/dist/collection/components/bs-description-item/bs-description-item.js +1 -1
  248. package/dist/collection/components/bs-description-list/bs-description-list.js +1 -1
  249. package/dist/collection/components/bs-description-list/bs-description-list.stories.js +1 -1
  250. package/dist/collection/components/bs-dialog/bs-dialog.stories.js +1 -1
  251. package/dist/collection/components/bs-divider/bs-divider.js +1 -1
  252. package/dist/collection/components/bs-divider/bs-divider.stories.js +1 -1
  253. package/dist/collection/components/bs-dropdown/bs-dropdown.js +1 -1
  254. package/dist/collection/components/bs-dropdown/bs-dropdown.stories.js +1 -1
  255. package/dist/collection/components/bs-empty-state/bs-empty-state.js +1 -1
  256. package/dist/collection/components/bs-empty-state/bs-empty-state.stories.js +1 -1
  257. package/dist/collection/components/bs-error-page/bs-error-page.js +1 -1
  258. package/dist/collection/components/bs-error-page/bs-error-page.stories.js +1 -1
  259. package/dist/collection/components/bs-file-upload/bs-file-upload.js +1 -1
  260. package/dist/collection/components/bs-file-upload/bs-file-upload.stories.js +1 -1
  261. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +1 -1
  262. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.stories.js +1 -1
  263. package/dist/collection/components/bs-global-search/bs-global-search.js +2 -2
  264. package/dist/collection/components/bs-global-search/bs-global-search.stories.js +1 -1
  265. package/dist/collection/components/bs-grid/bs-grid.js +2 -2
  266. package/dist/collection/components/bs-grid/bs-grid.stories.js +1 -1
  267. package/dist/collection/components/bs-heading/bs-heading.js +1 -1
  268. package/dist/collection/components/bs-heading/bs-heading.stories.js +1 -1
  269. package/dist/collection/components/bs-icon/bs-icon.js +1 -1
  270. package/dist/collection/components/bs-icon/bs-icon.stories.js +1 -1
  271. package/dist/collection/components/bs-icon-tile/bs-icon-tile.js +2 -2
  272. package/dist/collection/components/bs-icon-tile/bs-icon-tile.stories.js +1 -1
  273. package/dist/collection/components/bs-input/bs-input.cmp.test.js +12 -0
  274. package/dist/collection/components/bs-input/bs-input.js +26 -3
  275. package/dist/collection/components/bs-input/bs-input.stories.js +15 -1
  276. package/dist/collection/components/bs-key/bs-key.js +1 -1
  277. package/dist/collection/components/bs-key/bs-key.stories.js +1 -1
  278. package/dist/collection/components/bs-key-caps/bs-key-caps.js +1 -1
  279. package/dist/collection/components/bs-key-caps/bs-key-caps.stories.js +1 -1
  280. package/dist/collection/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.js +2 -2
  281. package/dist/collection/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.stories.js +1 -1
  282. package/dist/collection/components/bs-link/bs-link.js +1 -1
  283. package/dist/collection/components/bs-link/bs-link.stories.js +1 -1
  284. package/dist/collection/components/bs-list/bs-list.js +1 -1
  285. package/dist/collection/components/bs-list/bs-list.stories.js +1 -1
  286. package/dist/collection/components/bs-list-item/bs-list-item.js +1 -1
  287. package/dist/collection/components/bs-list-item/bs-list-item.stories.js +1 -1
  288. package/dist/collection/components/bs-logo/bs-logo.stories.js +1 -1
  289. package/dist/collection/components/bs-mega-menu/bs-mega-menu.js +1 -1
  290. package/dist/collection/components/bs-mega-menu/bs-mega-menu.stories.js +1 -1
  291. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  292. package/dist/collection/components/bs-menu/bs-menu.stories.js +1 -1
  293. package/dist/collection/components/bs-menu-block/bs-menu-block.js +3 -3
  294. package/dist/collection/components/bs-menu-block/bs-menu-block.stories.js +1 -1
  295. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  296. package/dist/collection/components/bs-menu-item/bs-menu-item.stories.js +1 -1
  297. package/dist/collection/components/bs-message/bs-message.js +1 -1
  298. package/dist/collection/components/bs-message-list/bs-message-list.js +1 -1
  299. package/dist/collection/components/bs-onboarding-checklist/bs-onboarding-checklist.stories.js +1 -1
  300. package/dist/collection/components/bs-page-header/bs-page-header.js +1 -1
  301. package/dist/collection/components/bs-page-header/bs-page-header.stories.js +1 -1
  302. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  303. package/dist/collection/components/bs-pagination/bs-pagination.stories.js +1 -1
  304. package/dist/collection/components/bs-popover/bs-popover.js +1 -1
  305. package/dist/collection/components/bs-popover/bs-popover.stories.js +1 -1
  306. package/dist/collection/components/bs-presence/bs-presence.js +1 -1
  307. package/dist/collection/components/bs-product-tour/bs-product-tour.stories.js +1 -1
  308. package/dist/collection/components/bs-progress/bs-progress.js +2 -2
  309. package/dist/collection/components/bs-progress/bs-progress.stories.js +7 -4
  310. package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +2 -2
  311. package/dist/collection/components/bs-progress-linear/bs-progress-linear.stories.js +8 -6
  312. package/dist/collection/components/bs-qr-code/bs-qr-code.js +1 -1
  313. package/dist/collection/components/bs-qr-code/bs-qr-code.stories.js +1 -1
  314. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  315. package/dist/collection/components/bs-radio/bs-radio.stories.js +1 -1
  316. package/dist/collection/components/bs-radio-group/bs-radio-group.js +1 -1
  317. package/dist/collection/components/bs-radio-group/bs-radio-group.stories.js +16 -2
  318. package/dist/collection/components/bs-ripple/bs-ripple.js +1 -1
  319. package/dist/collection/components/bs-search-item/bs-search-item.js +1 -1
  320. package/dist/collection/components/bs-search-item/bs-search-item.stories.js +1 -1
  321. package/dist/collection/components/bs-select/bs-select.js +1 -1
  322. package/dist/collection/components/bs-select/bs-select.stories.js +22 -2
  323. package/dist/collection/components/bs-session-timeout/bs-session-timeout.js +1 -1
  324. package/dist/collection/components/bs-session-timeout/bs-session-timeout.stories.js +1 -1
  325. package/dist/collection/components/bs-shortcut-row/bs-shortcut-row.js +1 -1
  326. package/dist/collection/components/bs-shortcut-row/bs-shortcut-row.stories.js +1 -1
  327. package/dist/collection/components/bs-side-panel/bs-side-panel.stories.js +1 -1
  328. package/dist/collection/components/bs-skeleton/bs-skeleton.js +1 -1
  329. package/dist/collection/components/bs-skeleton/bs-skeleton.stories.js +1 -1
  330. package/dist/collection/components/bs-skip-link/bs-skip-link.js +1 -1
  331. package/dist/collection/components/bs-skip-link/bs-skip-link.stories.js +1 -1
  332. package/dist/collection/components/bs-slider/bs-slider.js +1 -1
  333. package/dist/collection/components/bs-slider/bs-slider.stories.js +1 -1
  334. package/dist/collection/components/bs-snackbar/bs-snackbar.js +1 -1
  335. package/dist/collection/components/bs-snackbar/bs-snackbar.stories.js +1 -1
  336. package/dist/collection/components/bs-source-link/bs-source-link.js +3 -3
  337. package/dist/collection/components/bs-spinner/bs-spinner.js +1 -1
  338. package/dist/collection/components/bs-spinner/bs-spinner.stories.js +1 -1
  339. package/dist/collection/components/bs-split-pane/bs-split-pane.cmp.test.js +8 -0
  340. package/dist/collection/components/bs-split-pane/bs-split-pane.js +26 -1
  341. package/dist/collection/components/bs-split-pane/bs-split-pane.stories.js +1 -1
  342. package/dist/collection/components/bs-stack/bs-stack.js +1 -1
  343. package/dist/collection/components/bs-stack/bs-stack.stories.js +1 -1
  344. package/dist/collection/components/bs-stat/bs-stat.js +1 -1
  345. package/dist/collection/components/bs-stat/bs-stat.stories.js +1 -1
  346. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
  347. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.stories.js +1 -1
  348. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
  349. package/dist/collection/components/bs-switch/bs-switch.js +1 -1
  350. package/dist/collection/components/bs-switch/bs-switch.stories.js +34 -10
  351. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  352. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.js +1 -1
  353. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
  354. package/dist/collection/components/bs-tab/bs-tab/bs-tab.stories.js +1 -1
  355. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +1 -1
  356. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.stories.js +20 -2
  357. package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.js +1 -1
  358. package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.stories.js +1 -1
  359. package/dist/collection/components/bs-tag/bs-tag.js +6 -2
  360. package/dist/collection/components/bs-tag/bs-tag.stories.js +1 -1
  361. package/dist/collection/components/bs-text/bs-text.js +1 -1
  362. package/dist/collection/components/bs-text/bs-text.stories.js +1 -1
  363. package/dist/collection/components/bs-timepicker/bs-timepicker.js +2 -2
  364. package/dist/collection/components/bs-timepicker/bs-timepicker.stories.js +1 -1
  365. package/dist/collection/components/bs-toast/bs-toast.js +1 -1
  366. package/dist/collection/components/bs-toast/bs-toast.stories.js +1 -1
  367. package/dist/collection/components/bs-toggle-button/bs-toggle-button.cmp.test.js +11 -0
  368. package/dist/collection/components/bs-toggle-button/bs-toggle-button.js +9 -1
  369. package/dist/collection/components/bs-toggle-button/bs-toggle-button.stories.js +2 -2
  370. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.js +1 -1
  371. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.stories.js +34 -4
  372. package/dist/collection/components/bs-toolbar/bs-toolbar.js +1 -1
  373. package/dist/collection/components/bs-toolbar/bs-toolbar.stories.js +1 -1
  374. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  375. package/dist/collection/components/bs-tooltip/bs-tooltip.stories.js +1 -1
  376. package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.js +1 -1
  377. package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.stories.js +1 -1
  378. package/dist/collection/components/bs-tree/bs-tree.js +1 -1
  379. package/dist/collection/components/bs-tree/bs-tree.stories.js +1 -1
  380. package/dist/collection/components/bs-tree-item/bs-tree-item.js +2 -2
  381. package/dist/collection/components/bs-tree-item/bs-tree-item.stories.js +1 -1
  382. package/dist/collection/components/bs-whats-new/bs-whats-new.stories.js +1 -1
  383. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.js +1 -1
  384. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.stories.js +1 -1
  385. package/dist/collection/components/tokens/tokens.stories.js +90 -0
  386. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +2 -2
  387. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  388. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +2 -2
  389. package/dist/collection/play-utils.js +24 -0
  390. package/dist/components/bs-accordion-group.js +1 -1
  391. package/dist/components/bs-ai-disclaimer.js +1 -1
  392. package/dist/components/bs-ai-greeting.js +1 -1
  393. package/dist/components/bs-ai-thinking.js +1 -1
  394. package/dist/components/bs-app-recent-item.js +1 -1
  395. package/dist/components/bs-app-shell.js +1 -1
  396. package/dist/components/bs-app-switcher.js +1 -1
  397. package/dist/components/bs-app-tile.js +1 -1
  398. package/dist/components/bs-attachment-list.js +1 -1
  399. package/dist/components/bs-attachment.js +1 -1
  400. package/dist/components/bs-avatar.js +1 -1
  401. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  402. package/dist/components/bs-breadcrumbs.js +1 -1
  403. package/dist/components/bs-button-skeleton.js +1 -1
  404. package/dist/components/bs-button.js +1 -1
  405. package/dist/components/bs-carousel.js +1 -1
  406. package/dist/components/bs-chatbot-feedback.js +1 -1
  407. package/dist/components/bs-chatbot-header.js +1 -1
  408. package/dist/components/bs-chatbot-response-action.js +1 -1
  409. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  410. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  411. package/dist/components/bs-checkbox-skeleton.js +1 -1
  412. package/dist/components/bs-checkbox.js +1 -1
  413. package/dist/components/bs-chip-filter.js +1 -1
  414. package/dist/components/bs-chip-informative.js +1 -1
  415. package/dist/components/bs-chip-input.js +1 -1
  416. package/dist/components/bs-citation-preview.js +1 -1
  417. package/dist/components/bs-code-block.js +1 -1
  418. package/dist/components/bs-command-palette.js +1 -1
  419. package/dist/components/bs-compact-menu-block.js +1 -1
  420. package/dist/components/bs-company-switcher.js +1 -1
  421. package/dist/components/bs-composer-status-banner.js +1 -1
  422. package/dist/components/bs-composer.js +1 -1
  423. package/dist/components/bs-container.js +1 -1
  424. package/dist/components/bs-cookie-consent.js +1 -1
  425. package/dist/components/bs-data-table.js +1 -1
  426. package/dist/components/bs-datepicker.js +1 -1
  427. package/dist/components/bs-description-item.js +1 -1
  428. package/dist/components/bs-description-list.js +1 -1
  429. package/dist/components/bs-dialog.js +1 -1
  430. package/dist/components/bs-divider.js +1 -1
  431. package/dist/components/bs-dropdown.js +1 -1
  432. package/dist/components/bs-empty-state.js +1 -1
  433. package/dist/components/bs-error-page.js +1 -1
  434. package/dist/components/bs-file-upload-item.js +1 -1
  435. package/dist/components/bs-file-upload.js +1 -1
  436. package/dist/components/bs-global-search.js +1 -1
  437. package/dist/components/bs-grid.js +1 -1
  438. package/dist/components/bs-heading.js +1 -1
  439. package/dist/components/bs-icon-button.js +1 -1
  440. package/dist/components/bs-icon-tile.js +1 -1
  441. package/dist/components/bs-icon.js +1 -1
  442. package/dist/components/bs-inline-tab.js +1 -1
  443. package/dist/components/bs-input.js +1 -1
  444. package/dist/components/bs-key-caps.js +1 -1
  445. package/dist/components/bs-key.js +1 -1
  446. package/dist/components/bs-keyboard-shortcuts.js +1 -1
  447. package/dist/components/bs-link.js +1 -1
  448. package/dist/components/bs-list-item.js +1 -1
  449. package/dist/components/bs-list.js +1 -1
  450. package/dist/components/bs-mega-menu.js +1 -1
  451. package/dist/components/bs-menu-block.js +1 -1
  452. package/dist/components/bs-menu-item.js +1 -1
  453. package/dist/components/bs-menu.js +1 -1
  454. package/dist/components/bs-message-list.js +1 -1
  455. package/dist/components/bs-message.js +1 -1
  456. package/dist/components/bs-navigation-drawer-item.js +1 -1
  457. package/dist/components/bs-navigation-drawer.js +1 -1
  458. package/dist/components/bs-navigation-header.js +1 -1
  459. package/dist/components/bs-onboarding-checklist.js +1 -1
  460. package/dist/components/bs-page-header.js +1 -1
  461. package/dist/components/bs-pagination.js +1 -1
  462. package/dist/components/bs-popover.js +1 -1
  463. package/dist/components/bs-presence.js +1 -1
  464. package/dist/components/bs-product-tour.js +1 -1
  465. package/dist/components/bs-progress-linear.js +1 -1
  466. package/dist/components/bs-progress.js +1 -1
  467. package/dist/components/bs-qr-code.js +1 -1
  468. package/dist/components/bs-radio-group.js +1 -1
  469. package/dist/components/bs-radio.js +1 -1
  470. package/dist/components/bs-ripple.js +1 -1
  471. package/dist/components/bs-search-item.js +1 -1
  472. package/dist/components/bs-select.js +1 -1
  473. package/dist/components/bs-session-timeout.js +1 -1
  474. package/dist/components/bs-shortcut-row.js +1 -1
  475. package/dist/components/bs-side-panel.js +1 -1
  476. package/dist/components/bs-skeleton.js +1 -1
  477. package/dist/components/bs-skip-link.js +1 -1
  478. package/dist/components/bs-slider.js +1 -1
  479. package/dist/components/bs-snackbar.js +1 -1
  480. package/dist/components/bs-source-link.js +1 -1
  481. package/dist/components/bs-spinner.js +1 -1
  482. package/dist/components/bs-split-pane.js +1 -1
  483. package/dist/components/bs-stack.js +1 -1
  484. package/dist/components/bs-stat.js +1 -1
  485. package/dist/components/bs-stepper-step.js +1 -1
  486. package/dist/components/bs-stepper.js +1 -1
  487. package/dist/components/bs-switch.js +1 -1
  488. package/dist/components/bs-tab.js +1 -1
  489. package/dist/components/bs-table-of-contents.js +1 -1
  490. package/dist/components/bs-tabs.js +1 -1
  491. package/dist/components/bs-tag.js +1 -1
  492. package/dist/components/bs-text.js +1 -1
  493. package/dist/components/bs-timepicker.js +1 -1
  494. package/dist/components/bs-toast.js +1 -1
  495. package/dist/components/bs-toggle-button-group.js +1 -1
  496. package/dist/components/bs-toggle-button.js +1 -1
  497. package/dist/components/bs-toolbar.js +1 -1
  498. package/dist/components/bs-tooltip-trigger.js +1 -1
  499. package/dist/components/bs-tooltip.js +1 -1
  500. package/dist/components/bs-tree-item.js +1 -1
  501. package/dist/components/bs-tree.js +1 -1
  502. package/dist/components/bs-whats-new-entry.js +1 -1
  503. package/dist/components/bs-whats-new.js +1 -1
  504. package/dist/components/{p-BFv-3K2u.js → p-9Y5WEZ6K.js} +1 -1
  505. package/dist/components/{p-Bn3Yxpe1.js → p-AnA6S3Em.js} +1 -1
  506. package/dist/components/{p-hfcWxH0R.js → p-AwofMhxC.js} +1 -1
  507. package/dist/components/p-BRCMyssd.js +1 -0
  508. package/dist/components/{p-CrSwhBz7.js → p-BgB9tIB9.js} +1 -1
  509. package/dist/components/p-BlZZNwM2.js +1 -0
  510. package/dist/components/{p-C7Qr4akd.js → p-BnsfpSS7.js} +1 -1
  511. package/dist/components/p-BoA3sM-2.js +1 -0
  512. package/dist/components/p-Btp5hXvc.js +1 -0
  513. package/dist/components/{p-CkQ7TJdL.js → p-Bu_sXonm.js} +1 -1
  514. package/dist/components/{p-DrlNm0Cv.js → p-BvR122Y2.js} +1 -1
  515. package/dist/components/{p-B1Id2OKX.js → p-BwVQ-DXP.js} +1 -1
  516. package/dist/components/{p-C7IrV6pt.js → p-C5CNfDjK.js} +1 -1
  517. package/dist/components/{p-DY2EHN4U.js → p-CBGHGry4.js} +1 -1
  518. package/dist/components/p-CFzdwJ2g.js +1 -0
  519. package/dist/components/{p-B-gdXga9.js → p-CZWWrlb3.js} +1 -1
  520. package/dist/components/{p-C0RV5-An.js → p-Cipc052L.js} +1 -1
  521. package/dist/components/{p-BVX8P6fl.js → p-CjUxGdnN.js} +1 -1
  522. package/dist/components/{p-AlcZrDeY.js → p-CqRS2iPv.js} +1 -1
  523. package/dist/components/{p-CGFmvCoE.js → p-Czo6AWrI.js} +1 -1
  524. package/dist/components/{p-i5Q__opK.js → p-DAmDb3zb.js} +1 -1
  525. package/dist/components/{p-Cm-s0vin.js → p-DehAshCb.js} +1 -1
  526. package/dist/components/{p-CJw83LkA.js → p-DikZ1mnx.js} +1 -1
  527. package/dist/components/{p-CvaS1abm.js → p-DoiTWM4q.js} +1 -1
  528. package/dist/components/{p-BPxT7mqc.js → p-Lj6_zdoI.js} +1 -1
  529. package/dist/components/{p-BanNal67.js → p-Ov2urmo_.js} +1 -1
  530. package/dist/components/{p-CWcci6TX.js → p-cf5C02kt.js} +1 -1
  531. package/dist/components/{p-oc6e6_D0.js → p-hg8kUgz5.js} +1 -1
  532. package/dist/components/{p-CFjeYXmC.js → p-liC69VdX.js} +1 -1
  533. package/dist/components/{p--AN2lu8b.js → p-nZqO4uTL.js} +1 -1
  534. package/dist/components/{p-bsKorXp2.js → p-nf0fN-PV.js} +1 -1
  535. package/dist/components/{p-BabS3w3f.js → p-sXYR1kkr.js} +1 -1
  536. package/dist/components/{p-Bm1A449h.js → p-u6CTJrPs.js} +1 -1
  537. package/dist/esm/brandsync-wc.js +1 -1
  538. package/dist/esm/bs-accordion-group.entry.js +1 -1
  539. package/dist/esm/bs-ai-disclaimer.entry.js +1 -1
  540. package/dist/esm/bs-ai-greeting.entry.js +1 -1
  541. package/dist/esm/bs-ai-thinking.entry.js +1 -1
  542. package/dist/esm/bs-app-recent-item_3.entry.js +4 -4
  543. package/dist/esm/bs-app-shell.entry.js +1 -1
  544. package/dist/esm/bs-attachment-list.entry.js +1 -1
  545. package/dist/esm/bs-breadcrumbs.entry.js +1 -1
  546. package/dist/esm/bs-button-skeleton.entry.js +1 -1
  547. package/dist/esm/bs-button_2.entry.js +1 -1
  548. package/dist/esm/bs-chatbot-feedback.entry.js +1 -1
  549. package/dist/esm/bs-chatbot-header.entry.js +1 -1
  550. package/dist/esm/bs-chatbot-response-action.entry.js +1 -1
  551. package/dist/esm/bs-chatbot-sources-drawer.entry.js +1 -1
  552. package/dist/esm/bs-chatbot-suggestion-button.entry.js +1 -1
  553. package/dist/esm/bs-checkbox-skeleton.entry.js +1 -1
  554. package/dist/esm/bs-chip-informative.entry.js +32 -3
  555. package/dist/esm/bs-chip-input.entry.js +1 -1
  556. package/dist/esm/bs-citation-preview.entry.js +1 -1
  557. package/dist/esm/bs-command-palette.entry.js +1 -1
  558. package/dist/esm/bs-compact-menu-block_2.entry.js +4 -4
  559. package/dist/esm/bs-company-switcher.entry.js +2 -2
  560. package/dist/esm/bs-composer-status-banner.entry.js +1 -1
  561. package/dist/esm/bs-composer.entry.js +1 -1
  562. package/dist/esm/bs-container.entry.js +1 -1
  563. package/dist/esm/bs-data-table.entry.js +4 -2
  564. package/dist/esm/bs-datepicker.entry.js +1 -1
  565. package/dist/esm/bs-description-item.entry.js +1 -1
  566. package/dist/esm/bs-description-list.entry.js +1 -1
  567. package/dist/esm/bs-divider.entry.js +1 -1
  568. package/dist/esm/bs-dropdown.entry.js +1 -1
  569. package/dist/esm/bs-empty-state.entry.js +1 -1
  570. package/dist/esm/bs-error-page.entry.js +1 -1
  571. package/dist/esm/bs-file-upload-item.entry.js +1 -1
  572. package/dist/esm/bs-file-upload.entry.js +1 -1
  573. package/dist/esm/bs-global-search.entry.js +2 -2
  574. package/dist/esm/bs-grid.entry.js +2 -2
  575. package/dist/esm/bs-heading.entry.js +1 -1
  576. package/dist/esm/bs-icon-button.entry.js +1 -1
  577. package/dist/esm/bs-icon-tile.entry.js +2 -2
  578. package/dist/esm/bs-icon.entry.js +1 -1
  579. package/dist/esm/bs-inline-tab.entry.js +1 -1
  580. package/dist/esm/bs-input_4.entry.js +9 -6
  581. package/dist/esm/bs-key-caps.entry.js +1 -1
  582. package/dist/esm/bs-key.entry.js +1 -1
  583. package/dist/esm/bs-keyboard-shortcuts.entry.js +2 -2
  584. package/dist/esm/bs-link.entry.js +1 -1
  585. package/dist/esm/bs-list-item.entry.js +1 -1
  586. package/dist/esm/bs-list.entry.js +1 -1
  587. package/dist/esm/bs-mega-menu.entry.js +1 -1
  588. package/dist/esm/bs-message-list.entry.js +1 -1
  589. package/dist/esm/bs-message.entry.js +1 -1
  590. package/dist/esm/bs-navigation-drawer-item.entry.js +1 -1
  591. package/dist/esm/bs-navigation-drawer.entry.js +2 -2
  592. package/dist/esm/bs-navigation-header.entry.js +2 -2
  593. package/dist/esm/bs-page-header.entry.js +1 -1
  594. package/dist/esm/bs-pagination.entry.js +1 -1
  595. package/dist/esm/bs-popover.entry.js +1 -1
  596. package/dist/esm/bs-presence.entry.js +1 -1
  597. package/dist/esm/bs-progress-linear.entry.js +2 -2
  598. package/dist/esm/bs-progress.entry.js +2 -2
  599. package/dist/esm/bs-qr-code.entry.js +1 -1
  600. package/dist/esm/bs-radio-group.entry.js +1 -1
  601. package/dist/esm/bs-radio.entry.js +1 -1
  602. package/dist/esm/bs-search-item.entry.js +1 -1
  603. package/dist/esm/bs-select.entry.js +1 -1
  604. package/dist/esm/bs-session-timeout.entry.js +1 -1
  605. package/dist/esm/bs-shortcut-row.entry.js +1 -1
  606. package/dist/esm/bs-skip-link.entry.js +1 -1
  607. package/dist/esm/bs-slider.entry.js +1 -1
  608. package/dist/esm/bs-snackbar.entry.js +1 -1
  609. package/dist/esm/bs-source-link.entry.js +3 -3
  610. package/dist/esm/bs-split-pane.entry.js +27 -2
  611. package/dist/esm/bs-stack.entry.js +1 -1
  612. package/dist/esm/bs-stat.entry.js +1 -1
  613. package/dist/esm/bs-stepper-step.entry.js +1 -1
  614. package/dist/esm/bs-stepper.entry.js +1 -1
  615. package/dist/esm/bs-switch.entry.js +1 -1
  616. package/dist/esm/bs-tab_3.entry.js +3 -3
  617. package/dist/esm/bs-table-of-contents.entry.js +1 -1
  618. package/dist/esm/bs-tag.entry.js +2 -2
  619. package/dist/esm/bs-text.entry.js +1 -1
  620. package/dist/esm/bs-timepicker.entry.js +2 -2
  621. package/dist/esm/bs-toast.entry.js +1 -1
  622. package/dist/esm/bs-toggle-button-group.entry.js +1 -1
  623. package/dist/esm/bs-toggle-button.entry.js +9 -1
  624. package/dist/esm/bs-toolbar.entry.js +1 -1
  625. package/dist/esm/bs-tooltip-trigger.entry.js +1 -1
  626. package/dist/esm/bs-tooltip.entry.js +1 -1
  627. package/dist/esm/bs-tree-item.entry.js +2 -2
  628. package/dist/esm/bs-tree.entry.js +1 -1
  629. package/dist/esm/loader.js +1 -1
  630. package/dist/types/components/bs-chip/bs-chip-informative/bs-chip-informative.d.ts +29 -5
  631. package/dist/types/components/bs-chip/bs-chip-informative/bs-chip-informative.stories.d.ts +2 -0
  632. package/dist/types/components/bs-data-table/bs-data-table.d.ts +2 -0
  633. package/dist/types/components/bs-input/bs-input.d.ts +3 -0
  634. package/dist/types/components/bs-progress/bs-progress.stories.d.ts +1 -0
  635. package/dist/types/components/bs-progress-linear/bs-progress-linear.stories.d.ts +1 -0
  636. package/dist/types/components/bs-split-pane/bs-split-pane.d.ts +3 -0
  637. package/dist/types/components/bs-tag/bs-tag.d.ts +4 -0
  638. package/dist/types/components/bs-toggle-button/bs-toggle-button.d.ts +1 -0
  639. package/dist/types/components/tokens/tokens.stories.d.ts +12 -0
  640. package/dist/types/components.d.ts +129 -16
  641. package/dist/types/play-utils.d.ts +6 -0
  642. package/dist/types/raw-css.d.ts +4 -0
  643. package/package.json +1 -5
  644. package/reference.d.ts +1 -1
  645. package/reference.json +6 -1
  646. package/dist/brandsync-wc/p-06277bb8.entry.js +0 -1
  647. package/dist/brandsync-wc/p-0d3d56ef.entry.js +0 -1
  648. package/dist/brandsync-wc/p-4865d4e1.entry.js +0 -1
  649. package/dist/brandsync-wc/p-48ce098c.entry.js +0 -1
  650. package/dist/brandsync-wc/p-6f0b5a91.entry.js +0 -1
  651. package/dist/brandsync-wc/p-80feac7e.entry.js +0 -1
  652. package/dist/brandsync-wc/p-82c8fde1.entry.js +0 -1
  653. package/dist/brandsync-wc/p-99db8fca.entry.js +0 -1
  654. package/dist/brandsync-wc/p-bcb1730e.entry.js +0 -1
  655. package/dist/components/p-BCbaDQnq.js +0 -1
  656. package/dist/components/p-BoAmKy-C.js +0 -1
  657. package/dist/components/p-Cz7CuNiM.js +0 -1
  658. package/dist/components/p-DE2x8-lX.js +0 -1
  659. package/dist/components/p-U9f09E0n.js +0 -1
@@ -61,6 +61,7 @@ export class BsSplitPane {
61
61
  sizes = [];
62
62
  draggingIndex = -1;
63
63
  observer;
64
+ sizeObserver;
64
65
  dragStart;
65
66
  /** Toggles `collapsed` and emits `bsCollapsedChange`. */
66
67
  async toggleCollapsed() {
@@ -76,7 +77,31 @@ export class BsSplitPane {
76
77
  }
77
78
  disconnectedCallback() {
78
79
  this.observer?.disconnect();
80
+ this.sizeObserver?.disconnect();
79
81
  }
82
+ componentDidRender() {
83
+ // Re-observe after every render: panes come and go with `paneCount`, and a pane's slotted content
84
+ // is what grows past it, so watch both.
85
+ this.sizeObserver?.disconnect();
86
+ this.sizeObserver = new ResizeObserver(this.updateScrollable);
87
+ this.el.shadowRoot?.querySelectorAll('.bs-split-pane__pane').forEach(pane => {
88
+ this.sizeObserver.observe(pane);
89
+ pane.querySelector('slot')?.assignedElements().forEach(child => this.sizeObserver.observe(child));
90
+ });
91
+ this.updateScrollable();
92
+ }
93
+ // A scrollable region must be keyboard-reachable, so a pane whose content overflows gets tabindex=0.
94
+ // Written straight to the DOM (not via render state) so it is in place as soon as the first render
95
+ // finishes, rather than a re-render later. Stencil leaves attributes it doesn't manage alone.
96
+ updateScrollable = () => {
97
+ this.el.shadowRoot?.querySelectorAll('.bs-split-pane__pane').forEach(pane => {
98
+ const overflows = pane.scrollHeight > pane.clientHeight + 1 || pane.scrollWidth > pane.clientWidth + 1;
99
+ if (overflows)
100
+ pane.setAttribute('tabindex', '0');
101
+ else
102
+ pane.removeAttribute('tabindex');
103
+ });
104
+ };
80
105
  countPanes() {
81
106
  let count = 1;
82
107
  for (let i = 1; i <= MAX_PANES; i++) {
@@ -215,7 +240,7 @@ export class BsSplitPane {
215
240
  nodes.push(h("div", { part: "divider", class: { 'bs-split-pane__divider': true, 'bs-split-pane__divider--active': this.draggingIndex === i, 'bs-split-pane__divider--static': !this.resizable }, role: "separator", "aria-orientation": dividerOrientation, "aria-label": this.dividerLabel, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": this.percentFor(i), tabindex: this.resizable ? 0 : undefined, onPointerDown: this.onPointerDown(i), onPointerMove: this.onPointerMove, onPointerUp: this.onPointerUp, onPointerCancel: this.onPointerUp, onKeyDown: this.onKeyDown(i) }, h("span", { part: "divider-thumb", class: "bs-split-pane__thumb" })));
216
241
  }
217
242
  }
218
- return (h("div", { key: '57afdf0fbed93930a76aae2dab8faddacbc8e6e7', part: "container", class: `bs-split-pane bs-split-pane--${this.orientation}` }, nodes));
243
+ return (h("div", { key: 'b92f350618650af92c99401368a9f7e92dd551b2', part: "container", class: `bs-split-pane bs-split-pane--${this.orientation}` }, nodes));
219
244
  }
220
245
  static get is() { return "bs-split-pane"; }
221
246
  static get encapsulation() { return "shadow"; }
@@ -15,7 +15,7 @@ const detail = (title) => html `
15
15
  </div>
16
16
  `;
17
17
  const meta = {
18
- title: 'Components/bs-split-pane',
18
+ title: 'Components/Layout/bs-split-pane',
19
19
  parameters: { docs: { description: { component: componentDescription('bs-split-pane') } } },
20
20
  render: args => html `
21
21
  <div style="height: 480px; border: 1px solid var(--bs-border-neutral-container)">
@@ -81,7 +81,7 @@ export class BsStack {
81
81
  parts.push(h("slot", { name: `bs-stack-item-${i}`, onSlotchange: this.sync }));
82
82
  }
83
83
  }
84
- return (h(Host, { key: '4761db31dd50f134e1d8b35775a69ff9a177bcfa', style: { '--bs-stack-gap-token': `var(--bs-spacing-${gap})` } }, h("slot", { key: '5714b01e0b05429fae91067b05143b677db998e8', onSlotchange: this.sync }), parts));
84
+ return (h(Host, { key: 'b07a8e653b7689971c02dc70fe7a9c908108f85e', style: { '--bs-stack-gap-token': `var(--bs-spacing-${gap})` } }, h("slot", { key: '98be3029cd1bc877aa61345e44936f69dc4efdf1', onSlotchange: this.sync }), parts));
85
85
  }
86
86
  static get is() { return "bs-stack"; }
87
87
  static get encapsulation() { return "shadow"; }
@@ -2,7 +2,7 @@ import { html } from "lit";
2
2
  import { componentDescription } from "../../stories-utils";
3
3
  const box = (label) => html `<div style="padding: var(--bs-spacing-150); background: var(--bs-surface-container); border-radius: var(--bs-border-radius-100)">${label}</div>`;
4
4
  const meta = {
5
- title: 'Components/bs-stack',
5
+ title: 'Components/Layout/bs-stack',
6
6
  parameters: { docs: { description: { component: componentDescription('bs-stack') } } },
7
7
  render: args => html `
8
8
  <bs-stack
@@ -62,7 +62,7 @@ export class BsStat {
62
62
  return (h("svg", { part: "trend-icon", class: "bs-stat__trend-icon", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { d: d, stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" })));
63
63
  }
64
64
  render() {
65
- return (h("bs-card", { key: '6230f6e7164d99fb94e79a37d6301d514bf1c75c', part: "container", class: "bs-stat", surface: this.surface }, h("dl", { key: 'dc1688f2e20f4133c516e7f57ffc5d7b8a4de477', class: "bs-stat__body" }, h("dt", { key: '4772333b022fd6b95655209f7a7775eab653c6e0', class: "bs-stat__head" }, h("span", { key: '7aef50daa2c87b811b1e242753e081416df25b0d', class: { 'bs-stat__icon': true, 'bs-stat__icon--visible': this.hasIcon } }, h("slot", { key: '2ad02c5fffb58d31a4cf4ffb57fd58257fab0280', name: "icon", onSlotchange: (e) => (this.hasIcon = e.target.assignedNodes().length > 0) })), h("span", { key: 'b6b2d089a0b03da7aaad4447dd4291bf916964d3', part: "label", class: "bs-stat__label" }, this.label)), h("dd", { key: '2ccfdbcc3000d8448b2bac965efc23c14fdab5a4', class: "bs-stat__figure" }, h("span", { key: '6f6afb174d960a414fc3f95f862f70d3cd17105a', part: "value", class: "bs-stat__value" }, this.value), this.trend && (h("span", { key: '6887872c440d88f5269f39d65492c54589133d7d', part: "trend", class: `bs-stat__trend bs-stat__trend--${this.intent}` }, this.arrow(), h("span", { key: '0efad11fe74ac272c4f6d8f84cbf77fb45bf44f3', class: "bs-stat__sr" }, this.trendPrefix), this.trendValue && h("span", { key: 'de6eb28c4f20210ad7f9f9f4b2bbc02c5db1af78', class: "bs-stat__trend-value" }, this.trendValue)))), h("dd", { key: 'afc35315402059068afd3caf5bff330e73ab099d', class: { 'bs-stat__extra': true, 'bs-stat__extra--visible': this.hasExtra } }, h("slot", { key: '18280f7d6d2866b76307a1a651c2a21e55fd4c75', onSlotchange: (e) => (this.hasExtra = e.target.assignedNodes().some(n => n.nodeType === 1 || !!n.textContent?.trim())) })))));
65
+ return (h("bs-card", { key: '99379775abe5bfa1a7ae8d04cab1e0f5c5bddf98', part: "container", class: "bs-stat", surface: this.surface }, h("dl", { key: '963c7c0c2074b2960b98d1fd79f5f4dc22810b20', class: "bs-stat__body" }, h("dt", { key: '83863febf72f6a6b0fb7fc5d4d54836af3f92b4f', class: "bs-stat__head" }, h("span", { key: '14b4c6e47e762b313f554211d8eed6f804081648', class: { 'bs-stat__icon': true, 'bs-stat__icon--visible': this.hasIcon } }, h("slot", { key: '5a2e4ac5f4efc068ea631e3065979b15c9b18310', name: "icon", onSlotchange: (e) => (this.hasIcon = e.target.assignedNodes().length > 0) })), h("span", { key: '7a92fc17fbbf6ba05315be93fddea9d41a6681d8', part: "label", class: "bs-stat__label" }, this.label)), h("dd", { key: 'cb53c1bca2e0b178df127fb6386435602422ef76', class: "bs-stat__figure" }, h("span", { key: '5ecaace08e3c9ef627de9721cba52c7127a45897', part: "value", class: "bs-stat__value" }, this.value), this.trend && (h("span", { key: '12736ee0a0c0041de051fd96e1f031fee58a3387', part: "trend", class: `bs-stat__trend bs-stat__trend--${this.intent}` }, this.arrow(), h("span", { key: '12065cc93349c009411cadec24adac0fbe08067f', class: "bs-stat__sr" }, this.trendPrefix), this.trendValue && h("span", { key: '64d8f0817eee4a093d45dec0362656e2b2f2d300', class: "bs-stat__trend-value" }, this.trendValue)))), h("dd", { key: 'b23d0d60e71a9701b1376d6da5bc481c558f845e', class: { 'bs-stat__extra': true, 'bs-stat__extra--visible': this.hasExtra } }, h("slot", { key: '74dafd7c89d07ec66ab2b9ea5ac41ba7180367eb', onSlotchange: (e) => (this.hasExtra = e.target.assignedNodes().some(n => n.nodeType === 1 || !!n.textContent?.trim())) })))));
66
66
  }
67
67
  static get is() { return "bs-stat"; }
68
68
  static get encapsulation() { return "shadow"; }
@@ -2,7 +2,7 @@ import { html } from "lit";
2
2
  import { ifDefined } from "lit/directives/if-defined.js";
3
3
  import { componentDescription } from "../../stories-utils";
4
4
  const meta = {
5
- title: 'Components/bs-stat',
5
+ title: 'Components/Data display/bs-stat',
6
6
  parameters: { docs: { description: { component: componentDescription('bs-stat') } } },
7
7
  argTypes: {
8
8
  label: { control: 'text' },
@@ -62,7 +62,7 @@ export class BsStepper {
62
62
  }
63
63
  render() {
64
64
  // role="list" so each bs-stepper-step's role="listitem" has the required parent.
65
- return (h(Host, { key: '247099bad82070cc039de6602c9556df019d66e0', role: "list" }, h("slot", { key: '9243fd55edfbce9ee460f38580951e951eb2e48e', onSlotchange: this.onSlotChange })));
65
+ return (h(Host, { key: '3689910d22859e209015be08e5faf9d6c54b0c1c', role: "list" }, h("slot", { key: '05171784f3b9309251c1826e5f9ef174579ac7ab', onSlotchange: this.onSlotChange })));
66
66
  }
67
67
  static get is() { return "bs-stepper"; }
68
68
  static get encapsulation() { return "shadow"; }
@@ -1,7 +1,7 @@
1
1
  import { html } from "lit";
2
2
  import { componentDescription, propDescription } from "../../../stories-utils";
3
3
  const meta = {
4
- title: 'Components/bs-stepper',
4
+ title: 'Components/Navigation/bs-stepper',
5
5
  parameters: { docs: { description: { component: componentDescription('bs-stepper') } } },
6
6
  render: args => html `
7
7
  <bs-stepper current-step=${args.currentStep} direction=${args.direction} show-description=${args.showDescription}>
@@ -57,7 +57,7 @@ export class BsStepperStep {
57
57
  }
58
58
  render() {
59
59
  const state = this.state;
60
- return (h(Host, { key: 'e4cedd89e79fe57ae5dee2bce70502dcf245eded', role: "listitem", class: `bs-stepper-step--${this.direction}`, "aria-disabled": state === 'disabled' ? 'true' : undefined }, h("div", { key: '9505c6283fd3058f1acaf733e8c393a8e38f5a87', class: "bs-stepper-step__top" }, h("span", { key: '01d9efbed7ea81d3d24da21c3676d619925a4c5f', part: "icon", class: `bs-stepper-step__icon bs-stepper-step__icon--${state}` }, state === 'current' && h("span", { key: '643ecb7b48f6dc08107e1d1a63a6abb4f9b9256b', class: "bs-stepper-step__icon-dot" }), state === 'done' && h(CheckIcon, { key: 'a51c760d0ad168574ab87969b1f5838106f4a474' }), state === 'error' && h(ExclamationIcon, { key: 'd3d7c06a38e04440a4cbe6ffc6f8b039e331f835' })), h("span", { key: '905c43488affd27c328457f9158f61e6aa89d219', part: "connector", class: "bs-stepper-step__connector", "aria-hidden": "true" }, h("span", { key: '734591eb91413fd6fcf7f9a0c9454544ed953ab4', class: "bs-stepper-step__connector-line" }))), h("span", { key: '89d06195df7aba3b00883a4a104f59a0585a99af', part: "label", class: `bs-stepper-step__label bs-stepper-step__label--${state}` }, h("span", { key: '5ec9219bddf35ff96578262a07e163993a0a7a50', part: "name", class: "bs-stepper-step__name" }, this.name), this.showDescription && this.description && (h("span", { key: '72d1542b56bd129d89b29c2e81b03ec4778eaf02', part: "description", class: "bs-stepper-step__description" }, this.description)))));
60
+ return (h(Host, { key: '254ec9def4e9cf11e1dc72fa1af8c97a36097581', role: "listitem", class: `bs-stepper-step--${this.direction}`, "aria-disabled": state === 'disabled' ? 'true' : undefined }, h("div", { key: 'c35996eb063c70df0f4c79dc882098ae7de6ecca', class: "bs-stepper-step__top" }, h("span", { key: 'd02c93b65ff3e7eeb5349d8d8ea594f00949b891', part: "icon", class: `bs-stepper-step__icon bs-stepper-step__icon--${state}` }, state === 'current' && h("span", { key: 'd98fd1d2a084f59c3f9cf1b63961e6a88e230675', class: "bs-stepper-step__icon-dot" }), state === 'done' && h(CheckIcon, { key: 'be1bf786dc530015dbe164d36d022dee7b5db055' }), state === 'error' && h(ExclamationIcon, { key: '439fdccdbeee54449ae6e446f95bea75b684b009' })), h("span", { key: '9407db874e21d5871e98ef2c52af0ed7ee88a30b', part: "connector", class: "bs-stepper-step__connector", "aria-hidden": "true" }, h("span", { key: 'c23941c1701d55daabee93e7124ce8e0b9623fba', class: "bs-stepper-step__connector-line" }))), h("span", { key: 'bdfbfb685ce78768a3a9af2ae5ece69937607552', part: "label", class: `bs-stepper-step__label bs-stepper-step__label--${state}` }, h("span", { key: 'f3e8e99da0d0679b8d830f77b28167aa99095aca', part: "name", class: "bs-stepper-step__name" }, this.name), this.showDescription && this.description && (h("span", { key: '0c929341027b485bc681aa0406aa323d80f6f0fe', part: "description", class: "bs-stepper-step__description" }, this.description)))));
61
61
  }
62
62
  static get is() { return "bs-stepper-step"; }
63
63
  static get encapsulation() { return "shadow"; }
@@ -69,7 +69,7 @@ export class BsSwitch {
69
69
  .filter(Boolean)
70
70
  .join(' ');
71
71
  const knobClasses = ['bs-switch__knob', `bs-switch__knob--${this.size}`, this.disabled ? 'bs-switch__knob--disabled' : ''].filter(Boolean).join(' ');
72
- return (h("label", { key: '30e18dccef0481bd8859ecf0771246719508c622', class: `bs-switch ${this.disabled ? 'bs-switch--disabled' : ''}` }, h("input", { key: 'bc94d02e313578cef43fe39b3a490f3f8cecbeec', class: "bs-switch__input", type: "checkbox", role: "switch", checked: this.checked, disabled: this.disabled, "aria-checked": String(this.checked), "aria-label": this.ariaLabel, onChange: this.onChange }), h("span", { key: 'b7a6bf92d5fe4ca044c0ad790a57a4c3ef52d0be', part: "track", class: trackClasses }, h("span", { key: '8fd97319f4eccd6ae4ab24253dcc72ddb4eb7378', part: "knob", class: knobClasses }, h("bs-ripple", { key: '6e574549b8d85273d36d6526216dba51a04b86bf', part: "ripple", class: "bs-switch__ripple", centered: true, triggerSelector: ".bs-switch", disabled: this.disabled }))), h("span", { key: '092ca9f47fb1be8af3aff85d3d8a8e0d17f8d49d', part: "label", class: "bs-switch__label" }, h("slot", { key: '5356de3f833020a83a1aef15cb049a14ebee939c' }))));
72
+ return (h("label", { key: 'dd09d598001470a5bed9d705633e649366a5cf9e', class: `bs-switch ${this.disabled ? 'bs-switch--disabled' : ''}` }, h("input", { key: '8a49a0aca67c8322862cb8df026b3c3138dab957', class: "bs-switch__input", type: "checkbox", role: "switch", checked: this.checked, disabled: this.disabled, "aria-checked": String(this.checked), "aria-label": this.ariaLabel, onChange: this.onChange }), h("span", { key: '3221302d5f6ead0d1a035b6d7d135a12246e301c', part: "track", class: trackClasses }, h("span", { key: '925c4f407a02cb97c31e174f0a5e90d30385d259', part: "knob", class: knobClasses }, h("bs-ripple", { key: '3fe6447c46e2af73b46db16f9cb2331ef869b6e1', part: "ripple", class: "bs-switch__ripple", centered: true, triggerSelector: ".bs-switch", disabled: this.disabled }))), h("span", { key: '958fb448e07bf4d2af8820fa88497435c9adf150', part: "label", class: "bs-switch__label" }, h("slot", { key: '5399072696520fe3b0f92609c557a45e3ff86188' }))));
73
73
  }
74
74
  static get is() { return "bs-switch"; }
75
75
  static get encapsulation() { return "shadow"; }
@@ -1,8 +1,10 @@
1
1
  import { html } from "lit";
2
2
  import { componentDescription, propDescription } from "../../stories-utils";
3
+ import { expect, userEvent, waitFor } from "storybook/test";
4
+ import { ready, inShadow, recordEvents } from "../../play-utils";
3
5
  const sizes = ['md', 'lg'];
4
6
  const meta = {
5
- title: 'Components/bs-switch',
7
+ title: 'Components/Forms/bs-switch',
6
8
  parameters: { docs: { description: { component: componentDescription('bs-switch') } } },
7
9
  render: args => html `
8
10
  <bs-switch size=${args.size} ?checked=${args.checked} ?disabled=${args.disabled}>
@@ -23,12 +25,34 @@ const meta = {
23
25
  },
24
26
  };
25
27
  export default meta;
26
- export const Default = {};
28
+ export const Default = {
29
+ play: async ({ canvasElement }) => {
30
+ const host = await ready(canvasElement, 'bs-switch');
31
+ const changes = recordEvents(host, 'bsChange');
32
+ const control = inShadow(host, 'input[role="switch"]');
33
+ await expect(control).toHaveAttribute('aria-checked', 'false');
34
+ await userEvent.click(control);
35
+ await waitFor(() => expect(control).toHaveAttribute('aria-checked', 'true'));
36
+ await expect(changes.map(e => e.detail)).toEqual([true]);
37
+ await userEvent.click(control);
38
+ await waitFor(() => expect(control).toHaveAttribute('aria-checked', 'false'));
39
+ await expect(changes.map(e => e.detail)).toEqual([true, false]);
40
+ },
41
+ };
27
42
  export const Checked = {
28
43
  args: { checked: true },
29
44
  };
30
45
  export const Disabled = {
31
46
  args: { disabled: true },
47
+ play: async ({ canvasElement }) => {
48
+ const host = await ready(canvasElement, 'bs-switch');
49
+ const changes = recordEvents(host, 'bsChange');
50
+ const control = inShadow(host, 'input[role="switch"]');
51
+ await expect(control).toBeDisabled();
52
+ await userEvent.click(control);
53
+ await expect(control).toHaveAttribute('aria-checked', 'false');
54
+ await expect(changes).toHaveLength(0);
55
+ },
32
56
  };
33
57
  export const Medium = {
34
58
  args: { size: 'md', checked: true },
@@ -46,15 +70,15 @@ export const AllCombinations = {
46
70
  <strong>Disabled</strong>
47
71
  <strong>Disabled + checked</strong>
48
72
  <strong>Md</strong>
49
- <bs-switch size="md"></bs-switch>
50
- <bs-switch size="md" checked></bs-switch>
51
- <bs-switch size="md" disabled></bs-switch>
52
- <bs-switch size="md" disabled checked></bs-switch>
73
+ <bs-switch size="md" aria-label="Md unchecked"></bs-switch>
74
+ <bs-switch size="md" aria-label="Md checked" checked></bs-switch>
75
+ <bs-switch size="md" aria-label="Md disabled" disabled></bs-switch>
76
+ <bs-switch size="md" aria-label="Md disabled and checked" disabled checked></bs-switch>
53
77
  <strong>Lg</strong>
54
- <bs-switch size="lg"></bs-switch>
55
- <bs-switch size="lg" checked></bs-switch>
56
- <bs-switch size="lg" disabled></bs-switch>
57
- <bs-switch size="lg" disabled checked></bs-switch>
78
+ <bs-switch size="lg" aria-label="Lg unchecked"></bs-switch>
79
+ <bs-switch size="lg" aria-label="Lg checked" checked></bs-switch>
80
+ <bs-switch size="lg" aria-label="Lg disabled" disabled></bs-switch>
81
+ <bs-switch size="lg" aria-label="Lg disabled and checked" disabled checked></bs-switch>
58
82
  </div>
59
83
  `,
60
84
  };
@@ -95,7 +95,7 @@ export class BsInlineTab {
95
95
  };
96
96
  render() {
97
97
  const iconOnly = this.hasIcon && !this.hasLabel;
98
- return (h("button", { key: '2b72dc07fdcc65d132a5c89fa7d20a172e1709d2', type: "button", part: "tab", role: "tab", class: `bs-inline-tab ${this.selected ? 'bs-inline-tab--selected' : ''} ${this.disabled ? 'bs-inline-tab--disabled' : ''} ${iconOnly ? 'bs-inline-tab--icon-only' : ''} ${this.hasIcon ? 'bs-inline-tab--has-icon' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, tabIndex: this.tabbable === undefined ? undefined : this.tabbable ? 0 : -1, onClick: this.onClick }, h("bs-ripple", { key: '7f05b1962383007cef24e34d782401d0bb5e0b17', part: "ripple", centered: false, disabled: this.disabled }), h("span", { key: '358ec65108c746311bb23d729f4d6461c62f3b7b', part: "icon", class: `bs-inline-tab__icon ${this.hasIcon ? 'bs-inline-tab__icon--has-content' : ''}` }, h("slot", { key: '88f3ead3ebfef0e2cad25a2cebbcc21b026b5995', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '67cbc0103d4c458113508cc61ebad5002c141ac4', part: "label", class: `bs-inline-tab__label ${this.hasLabel ? 'bs-inline-tab__label--has-content' : ''}` }, h("slot", { key: '5679e945c154f5a7cd4c4a411c4b28cd4baf3124', onSlotchange: this.onLabelSlotchange }))));
98
+ return (h("button", { key: 'a4a4466cf06781452bfafb56cbb6dee16f88bfe7', type: "button", part: "tab", role: "tab", class: `bs-inline-tab ${this.selected ? 'bs-inline-tab--selected' : ''} ${this.disabled ? 'bs-inline-tab--disabled' : ''} ${iconOnly ? 'bs-inline-tab--icon-only' : ''} ${this.hasIcon ? 'bs-inline-tab--has-icon' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, tabIndex: this.tabbable === undefined ? undefined : this.tabbable ? 0 : -1, onClick: this.onClick }, h("bs-ripple", { key: '7fd57ac805ab4945fa1bb33482ef858e0b9a37ec', part: "ripple", centered: false, disabled: this.disabled }), h("span", { key: '5bccaa37f40238539722e711f4b1cea73a77b5cd', part: "icon", class: `bs-inline-tab__icon ${this.hasIcon ? 'bs-inline-tab__icon--has-content' : ''}` }, h("slot", { key: 'dac2d6bf01d69058c052763981a6a7caaf7c5f52', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'ccc8dd6c4b7b4a43e264b6888ca778bee8d00ee5', part: "label", class: `bs-inline-tab__label ${this.hasLabel ? 'bs-inline-tab__label--has-content' : ''}` }, h("slot", { key: 'b446e758154a3efceff74eee58fb8847f044594d', onSlotchange: this.onLabelSlotchange }))));
99
99
  }
100
100
  static get is() { return "bs-inline-tab"; }
101
101
  static get encapsulation() { return "shadow"; }
@@ -7,7 +7,7 @@ const homeIcon = html `
7
7
  </svg>
8
8
  `;
9
9
  const meta = {
10
- title: 'Components/bs-tab/bs-inline-tab',
10
+ title: 'Components/Navigation/bs-tab/bs-inline-tab',
11
11
  parameters: { docs: { description: { component: componentDescription('bs-inline-tab') } } },
12
12
  // role="tab" is only valid ARIA inside a role="tablist" ancestor (axe-core flags a lone
13
13
  // bs-inline-tab as a critical aria-required-parent violation otherwise -- see
@@ -108,7 +108,7 @@ export class BsTab {
108
108
  const iconOnly = this.hasIcon && !this.hasLabel;
109
109
  const vertical = this.hasIcon && this.hasLabel && this.iconPosition === 'top';
110
110
  const showBadge = this.hasBadge && !iconOnly && !vertical;
111
- return (h("button", { key: '654e4473493ad7523de424a459eb5ef019060e69', type: "button", part: "tab", role: "tab", class: `bs-tab ${this.selected ? 'bs-tab--selected' : ''} ${this.disabled ? 'bs-tab--disabled' : ''} ${iconOnly ? 'bs-tab--icon-only' : ''} ${vertical ? 'bs-tab--vertical' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, tabIndex: this.tabbable === undefined ? undefined : this.tabbable ? 0 : -1, onClick: this.onClick }, h("bs-ripple", { key: '6de73aa7bd4aef7f835bcba421af52a8dbe84c12', part: "ripple", centered: false, disabled: this.disabled }), h("span", { key: 'b700ddfae91f06999435633b874e7a5c36f421a8', part: "icon", class: `bs-tab__icon ${this.hasIcon ? 'bs-tab__icon--has-content' : ''}` }, h("slot", { key: '9bcbf714ecc276aaf17b85f6a15821d7b1e5ad82', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'aecb0faa30a561eec6190e892c1c3efe83c01e36', part: "label", class: `bs-tab__label ${this.hasLabel ? 'bs-tab__label--has-content' : ''}` }, h("slot", { key: 'a8a593d9df938d59af43dec2639d7a55a190e83a', onSlotchange: this.onLabelSlotchange })), h("span", { key: '35d29f0572a84b49d4909532aa0a3c4087db1bfb', part: "badge", class: `bs-tab__badge ${showBadge ? 'bs-tab__badge--has-content' : ''}` }, h("slot", { key: '12caeca4d914f1ecc59331e8ce96b6424876c916', name: "badge", onSlotchange: this.onBadgeSlotchange })), h("span", { key: '5ca57ce091c8ee9e4bcc453ee2163e98a87e2b01', part: "indicator", class: "bs-tab__indicator" })));
111
+ return (h("button", { key: '8fd98c4f12fe25984c07e953a1607b3e4c0a7d17', type: "button", part: "tab", role: "tab", class: `bs-tab ${this.selected ? 'bs-tab--selected' : ''} ${this.disabled ? 'bs-tab--disabled' : ''} ${iconOnly ? 'bs-tab--icon-only' : ''} ${vertical ? 'bs-tab--vertical' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, tabIndex: this.tabbable === undefined ? undefined : this.tabbable ? 0 : -1, onClick: this.onClick }, h("bs-ripple", { key: '896f94565aea13c576dd2ebc028fcaf5bfe6b69a', part: "ripple", centered: false, disabled: this.disabled }), h("span", { key: 'e88a94ed2b764ae78d2d3a5bbf2aaa95bd9106e2', part: "icon", class: `bs-tab__icon ${this.hasIcon ? 'bs-tab__icon--has-content' : ''}` }, h("slot", { key: 'c611fc1cc9b6b092372c1b2aec47bfe0ed9acb7f', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'c1197f3bbd0a537f6e0a9fd2441bfe1b0e09d760', part: "label", class: `bs-tab__label ${this.hasLabel ? 'bs-tab__label--has-content' : ''}` }, h("slot", { key: 'e47b3a7aa890599bfacaaa579115427732099c3a', onSlotchange: this.onLabelSlotchange })), h("span", { key: '9f6dfee9154141ea72bd0f199cfb104b5f78d194', part: "badge", class: `bs-tab__badge ${showBadge ? 'bs-tab__badge--has-content' : ''}` }, h("slot", { key: 'c1125351dc7815d59e8cd24db946965e5425975f', name: "badge", onSlotchange: this.onBadgeSlotchange })), h("span", { key: '0ffa3e25e57d3e5f4fddc995229e160dd7545a16', part: "indicator", class: "bs-tab__indicator" })));
112
112
  }
113
113
  static get is() { return "bs-tab"; }
114
114
  static get encapsulation() { return "shadow"; }
@@ -11,7 +11,7 @@ const homeIcon = html `
11
11
  </svg>
12
12
  `;
13
13
  const meta = {
14
- title: 'Components/bs-tab/bs-tab',
14
+ title: 'Components/Navigation/bs-tab/bs-tab',
15
15
  parameters: { docs: { description: { component: componentDescription('bs-tab') } } },
16
16
  // role="tab" is only valid ARIA inside a role="tablist" ancestor (axe-core flags a lone bs-tab
17
17
  // as a critical aria-required-parent violation otherwise -- see bs-tab.mdx's Accessibility
@@ -142,7 +142,7 @@ export class BsTabs {
142
142
  }
143
143
  render() {
144
144
  const vertical = this.orientation === 'vertical';
145
- return (h("div", { key: '34e3ebfc19d97609fce90bda304107bd966534a0', part: "tablist", role: "tablist", "aria-orientation": this.orientation, class: `bs-tabs bs-tabs--${this.type} ${vertical ? 'bs-tabs--vertical' : ''}` }, h("slot", { key: '12db22c05fbed6277beb93761b71021594b32a1d', onSlotchange: () => this.syncRovingTabindex() })));
145
+ return (h("div", { key: '7900adcba506bbd084bfd8c095d0344306faff69', part: "tablist", role: "tablist", "aria-orientation": this.orientation, class: `bs-tabs bs-tabs--${this.type} ${vertical ? 'bs-tabs--vertical' : ''}` }, h("slot", { key: 'ab5b17dfe5d662bd46b573c919728c04b56425f3', onSlotchange: () => this.syncRovingTabindex() })));
146
146
  }
147
147
  static get is() { return "bs-tabs"; }
148
148
  static get encapsulation() { return "shadow"; }
@@ -1,10 +1,12 @@
1
1
  import { html } from "lit";
2
2
  import { componentDescription, propDescription } from "../../../stories-utils";
3
+ import { expect, userEvent, waitFor } from "storybook/test";
4
+ import { ready, inShadow, recordEvents } from "../../../play-utils";
3
5
  const types = ['bs-tab', 'bs-inline-tab'];
4
6
  const orientations = ['horizontal', 'vertical'];
5
7
  const tabLabels = ['Overview', 'Details', 'Settings', 'Archived'];
6
8
  const meta = {
7
- title: 'Components/bs-tab/bs-tabs',
9
+ title: 'Components/Navigation/bs-tab/bs-tabs',
8
10
  parameters: { docs: { description: { component: componentDescription('bs-tabs') } } },
9
11
  render: args => html `
10
12
  <bs-tabs type=${args.type} orientation=${args.orientation}>
@@ -29,7 +31,23 @@ const meta = {
29
31
  },
30
32
  };
31
33
  export default meta;
32
- export const Default = {};
34
+ export const Default = {
35
+ play: async ({ canvasElement }) => {
36
+ const tabs = await ready(canvasElement, 'bs-tabs');
37
+ const changes = recordEvents(tabs, 'bsChange');
38
+ const tabButton = (index) => inShadow(canvasElement.querySelectorAll('bs-tab')[index], '[part="tab"]');
39
+ await expect(tabButton(0)).toHaveAttribute('aria-selected', 'true');
40
+ await userEvent.click(tabButton(1));
41
+ await waitFor(() => expect(tabButton(1)).toHaveAttribute('aria-selected', 'true'));
42
+ await expect(tabButton(0)).toHaveAttribute('aria-selected', 'false');
43
+ await expect(changes).toHaveLength(1);
44
+ await expect(tabs.value).toBe(changes[0].detail.value);
45
+ // The last tab is disabled: clicking it must not select it or emit another change.
46
+ await userEvent.click(tabButton(3));
47
+ await expect(tabButton(3)).toHaveAttribute('aria-selected', 'false');
48
+ await expect(changes).toHaveLength(1);
49
+ },
50
+ };
33
51
  export const InlineTabGroup = {
34
52
  name: 'Inline tab group',
35
53
  args: { type: 'bs-inline-tab' },
@@ -177,7 +177,7 @@ export class BsTableOfContents {
177
177
  }
178
178
  render() {
179
179
  const nodes = this.tree();
180
- return (h("nav", { key: '268a5805f66e15beedc713f655c17c53c0bf4e49', part: "container", class: "bs-toc", "aria-label": this.label }, !this.hideTitle && (h("p", { key: '40eae36371714f3d34c43eff90d7ee6e3a63722c', part: "title", id: this.titleId, class: "bs-toc__title" }, this.label)), nodes.length > 0 && this.renderList(nodes, 1), h("slot", { key: '56d428adfb4370bca0f674d018fb3844cd31a4a1', onSlotchange: this.readSlotted })));
180
+ return (h("nav", { key: '47d775adeb323c4a5c21279d33a20810cbac29da', part: "container", class: "bs-toc", "aria-label": this.label }, !this.hideTitle && (h("p", { key: '9d63c49490aa41184a00d88ab025d1779bfeb166', part: "title", id: this.titleId, class: "bs-toc__title" }, this.label)), nodes.length > 0 && this.renderList(nodes, 1), h("slot", { key: 'e9fda6e655d776fb90f19f958066dcc1777b713d', onSlotchange: this.readSlotted })));
181
181
  }
182
182
  static get is() { return "bs-table-of-contents"; }
183
183
  static get encapsulation() { return "shadow"; }
@@ -13,7 +13,7 @@ const sections = [
13
13
  ['toc-demo-a11y', 'Accessibility'],
14
14
  ];
15
15
  const meta = {
16
- title: 'Components/bs-table-of-contents',
16
+ title: 'Components/Navigation/bs-table-of-contents',
17
17
  parameters: { docs: { description: { component: componentDescription('bs-table-of-contents') } } },
18
18
  render: args => html `
19
19
  <div style="display: flex; gap: 32px; height: 320px; overflow: auto;">
@@ -1,5 +1,9 @@
1
1
  import { Host, h } from "@stencil/core";
2
2
  /**
3
+ * @deprecated Use `bs-chip-informative` with `removable` and/or `href` instead -- it has the same colours and
4
+ * sizes plus the remove button and link option, so a separate tag component is redundant. `bs-tag` keeps
5
+ * working unchanged and will be removed in a later major version.
6
+ *
3
7
  * A small label that categorises or annotates an item (a topic, a keyword, a status of a record). It can be
4
8
  * neutral or coloured, optionally removable, and optionally a link.
5
9
  *
@@ -56,8 +60,8 @@ export class BsTag {
56
60
  };
57
61
  render() {
58
62
  const rel = this.href && this.target === '_blank' ? 'noopener noreferrer' : undefined;
59
- const label = h("slot", { key: '23fda868497edb8f251ed3e0ffb72a0b60b1674b', onSlotchange: () => (this.labelText = this.readLabel()) });
60
- return (h(Host, { key: 'e0083836e1bd71f9c976f6ede368e2af7036965f' }, h("span", { key: 'cf6951fbeb6402757317d2fff194f0812184f1ba', part: "container", class: { 'bs-tag': true, 'bs-tag--removable': this.removable } }, h("span", { key: '6922fb233c612ac5b6bdedbb21f50d0487cb6458', part: "icon", class: { 'bs-tag__icon': true, 'bs-tag__icon--visible': this.hasIcon } }, h("slot", { key: 'fbacf7c7549cbc31b6a41c9a345aeed5cfc2cdd5', name: "icon", onSlotchange: (e) => (this.hasIcon = e.target.assignedNodes().length > 0) })), this.href ? (h("a", { part: "label", class: "bs-tag__label bs-tag__label--link", href: this.href, target: this.target, rel: rel }, label)) : (h("span", { part: "label", class: "bs-tag__label" }, label)), this.removable && (h("bs-icon-button", { key: '75f28012c090cdb4ee5817f4fdde2ac0716b7e1d', part: "remove", class: "bs-tag__remove", size: "xs", variant: "subtle", ariaLabel: `${this.removeLabel} ${this.labelText}`.trim(), onClick: this.onRemove }, h("svg", { key: 'f621174e822ac00907dbed900e245d581ab61af5', viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { key: 'd7e90796fb3eac85e4c71ab267937143ebfd03ff', d: "M12.5 3.5L3.5 12.5M12.5 12.5L3.5 3.5", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" })))))));
63
+ const label = h("slot", { key: '50e70f1c1f279933d1766ec93e7a88bc2ad7503a', onSlotchange: () => (this.labelText = this.readLabel()) });
64
+ return (h(Host, { key: '29b956ecaf134c660b3ab769e99234727ee5e130' }, h("span", { key: '8e82315255d1c9a7c39c74431c6d41ea230bd34f', part: "container", class: { 'bs-tag': true, 'bs-tag--removable': this.removable } }, h("span", { key: 'dd751bc6feb2f46e421dce234ea8baf2d9cba82b', part: "icon", class: { 'bs-tag__icon': true, 'bs-tag__icon--visible': this.hasIcon } }, h("slot", { key: '503096f32e4426d7a4c6c5a0d11f807d7e668348', name: "icon", onSlotchange: (e) => (this.hasIcon = e.target.assignedNodes().length > 0) })), this.href ? (h("a", { part: "label", class: "bs-tag__label bs-tag__label--link", href: this.href, target: this.target, rel: rel }, label)) : (h("span", { part: "label", class: "bs-tag__label" }, label)), this.removable && (h("bs-icon-button", { key: 'b1d89e519ec61a444526adf831137f5d6b01f909', part: "remove", class: "bs-tag__remove", size: "xs", variant: "subtle", ariaLabel: `${this.removeLabel} ${this.labelText}`.trim(), onClick: this.onRemove }, h("svg", { key: '8ee1ffffe815823101e45420e443900c02ab0792', viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { key: '4d7cccc12c65ec89735294da8e1aaad0ca545c7d', d: "M12.5 3.5L3.5 12.5M12.5 12.5L3.5 3.5", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" })))))));
61
65
  }
62
66
  static get is() { return "bs-tag"; }
63
67
  static get encapsulation() { return "shadow"; }
@@ -2,7 +2,7 @@ import { html } from "lit";
2
2
  import { ifDefined } from "lit/directives/if-defined.js";
3
3
  import { componentDescription } from "../../stories-utils";
4
4
  const meta = {
5
- title: 'Components/bs-tag',
5
+ title: 'Components/Data display/bs-tag',
6
6
  parameters: { docs: { description: { component: componentDescription('bs-tag') } } },
7
7
  argTypes: {
8
8
  label: { control: 'text' },
@@ -27,7 +27,7 @@ export class BsText {
27
27
  tone = 'default';
28
28
  render() {
29
29
  const Tag = this.as;
30
- return (h(Tag, { key: 'a15f1ac4c4bd9bd2f1518046fb6297d6669fa834', part: "text", class: `bs-text bs-text--${this.variant}` }, h("slot", { key: '58682202f777666c9c454441b8f9cd279df1547b' })));
30
+ return (h(Tag, { key: 'e23cdacde6c2dd10a6e0c603cd76fa60cc999ba0', part: "text", class: `bs-text bs-text--${this.variant}` }, h("slot", { key: '34008aa9788b5e4401cff92d5e7152da91c0d6f5' })));
31
31
  }
32
32
  static get is() { return "bs-text"; }
33
33
  static get encapsulation() { return "shadow"; }
@@ -1,7 +1,7 @@
1
1
  import { html } from "lit";
2
2
  import { componentDescription } from "../../stories-utils";
3
3
  const meta = {
4
- title: 'Components/bs-text',
4
+ title: 'Components/Typography and media/bs-text',
5
5
  parameters: { docs: { description: { component: componentDescription('bs-text') } } },
6
6
  render: args => html `<bs-text as=${args.as} variant=${args.variant} tone=${args.tone}>${args.text}</bs-text>`,
7
7
  argTypes: {
@@ -200,14 +200,14 @@ export class BsTimepicker {
200
200
  return (h("div", { part: "spinner", class: "bs-timepicker__spinner" }, h("button", { part: "step", type: "button", class: "bs-timepicker__step", "aria-label": stepLabel(this.increaseLabel), tabindex: -1, onClick: () => this.stepBy(col, 1) }, h("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true" }, h("path", { d: "M18 15L12 9L6 15", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))), h("div", { part: "value", class: "bs-timepicker__value", role: "spinbutton", tabindex: 0, "aria-label": label, "aria-valuemin": min, "aria-valuemax": max, "aria-valuenow": n, "aria-valuetext": pad(n), onKeyDown: this.onKeyDown(col), onBlur: () => (this.typed = '') }, pad(n)), h("button", { part: "step", type: "button", class: "bs-timepicker__step", "aria-label": stepLabel(this.decreaseLabel), tabindex: -1, onClick: () => this.stepBy(col, -1) }, h("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true" }, h("path", { d: "M6 9L12 15L18 9", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })))));
201
201
  }
202
202
  render() {
203
- return (h("bs-card", { key: '6c39211476895cba77bd0d71720707de71a7ca77', part: "container", class: "bs-timepicker", surface: "raised" }, h("div", { key: 'bd0f8c5d6ecedc015e513385579d7a0bac411e28', class: "bs-timepicker__body" }, h("div", { key: 'f23edc581c8e9f8e71ffdeb0308b31024df9c903', part: "header", class: "bs-timepicker__header" }, h("div", { key: '59f19ab0dcafe6b9e88753d51a775e5858908521', part: "title", class: "bs-timepicker__title" }, this.heading), h("label", { key: 'f893f5004b80d81c4d24e80650c421b9a3693ee2', class: "bs-timepicker__format" }, h("span", { key: 'ab25241558e5bfb13272d3dcf988b932734ad088' }, this.formatLabel), h("bs-switch", { key: '1a10a8c9dadb2685c69f6fe8eb9f1a2a99da9947', part: "format-toggle", size: "md", ariaLabel: this.formatLabel, checked: !this.is12h, onBsChange: (ev) => (this.format = ev.detail ? '24h' : '12h') }))), h("div", { key: '2d28fa7cbc6ffd8a5571b465ebb08725721a1562', class: "bs-timepicker__divider" }), h("div", { key: 'd76698067c871ff65541c80af059361af2df6bd9', part: "selector", class: "bs-timepicker__selector" }, this.renderColumn('hour', this.hourLabel), h("div", { key: '1fb97bb0ec1304c850ed29d43043afb998de7a85', part: "separator", class: "bs-timepicker__separator", "aria-hidden": "true" }, h("svg", { key: '4394c594a84e89b7eee6cdc99924e37cccb972d5', viewBox: "0 0 4 32", fill: "currentColor" }, h("circle", { key: 'd49adf2c12c3f306e0f391e9f9ceafde48816bc0', cx: "2", cy: "10", r: "2" }), h("circle", { key: '28a40a7892cee72c14b544dbecd3876e39122978', cx: "2", cy: "22", r: "2" }))), this.renderColumn('minute', this.minuteLabel), this.is12h && (h("bs-input", { key: '6ab743da6d258633490dee94730d0aa660020546', part: "period", class: "bs-timepicker__period", type: "dropdown", label: this.periodLabel, value: this.isPm ? 'PM' : 'AM', options: [
203
+ return (h("bs-card", { key: 'dab57e27c56dfa5423148a310367724d053632da', part: "container", class: "bs-timepicker", surface: "raised" }, h("div", { key: '8abc6031e58d31819cf81cf2c91d5d18f58a68a8', class: "bs-timepicker__body" }, h("div", { key: '79853face4f30bce97fe1350108166ab00090989', part: "header", class: "bs-timepicker__header" }, h("div", { key: '0085cc1b6a3395adbd7ffabf700917417add80f7', part: "title", class: "bs-timepicker__title" }, this.heading), h("label", { key: 'a1e597fd56d312412e1abdab7df413c421fb126d', class: "bs-timepicker__format" }, h("span", { key: '5d93f11e944478341ccaf54331f2af21c370b690' }, this.formatLabel), h("bs-switch", { key: '08faec46e401574e7e5ccb4f577248ea4c274a22', part: "format-toggle", size: "md", ariaLabel: this.formatLabel, checked: !this.is12h, onBsChange: (ev) => (this.format = ev.detail ? '24h' : '12h') }))), h("div", { key: 'ef7560455a1849f94a698dc4d14b48e51299cb0d', class: "bs-timepicker__divider" }), h("div", { key: '29ae72b663dc9ca61ac1c5a75503b4b33d19817e', part: "selector", class: "bs-timepicker__selector" }, this.renderColumn('hour', this.hourLabel), h("div", { key: '91ddda51be264b0f332e3068ac1ac8fbe546c91d', part: "separator", class: "bs-timepicker__separator", "aria-hidden": "true" }, h("svg", { key: '91a220300dc5bca693fb5e5ca1f8ad790200256b', viewBox: "0 0 4 32", fill: "currentColor" }, h("circle", { key: '4a265c532717e4db04a9e4aa57ae7a4a62db4938', cx: "2", cy: "10", r: "2" }), h("circle", { key: '4285240f0542ca07eca43d6165ab57079828ec00', cx: "2", cy: "22", r: "2" }))), this.renderColumn('minute', this.minuteLabel), this.is12h && (h("bs-input", { key: '85d78c3c1569bd699ef0a4b65066d25e9cd88a2a', part: "period", class: "bs-timepicker__period", type: "dropdown", label: this.periodLabel, value: this.isPm ? 'PM' : 'AM', options: [
204
204
  { label: 'AM', value: 'AM' },
205
205
  { label: 'PM', value: 'PM' },
206
206
  ], onBsChange: (ev) => {
207
207
  const pm = ev.detail === 'PM';
208
208
  if (pm !== this.isPm)
209
209
  this.hour = (this.hour + 12) % 24;
210
- } }))), h("div", { key: '59c34d3ba15c1603262c8d3c08b2a6891477252d', class: "bs-timepicker__divider" }), h("div", { key: '7629f6b868857d48947f74e63991c8370e5e6431', part: "footer", class: "bs-timepicker__footer" }, h("bs-button", { key: 'c96e079ba9d3103db5e0d5e361491bbf2098486c', part: "cancel", variant: "subtle", onClick: this.cancel }, this.cancelLabel), h("bs-button", { key: '6157268548b8facf83a2efa81a85dab8d2063aef', part: "confirm", variant: "primary", onClick: this.confirm }, this.confirmLabel)))));
210
+ } }))), h("div", { key: 'd5bb646ad75742995e9b31202621b1e7c88b9796', class: "bs-timepicker__divider" }), h("div", { key: '315e6733a984ef99ad0aa998abbfcb5455725ff5', part: "footer", class: "bs-timepicker__footer" }, h("bs-button", { key: 'f2160b644174d14dfe81d9f84938ad2f29ae9072', part: "cancel", variant: "subtle", onClick: this.cancel }, this.cancelLabel), h("bs-button", { key: '5131d29cf88ccf5effee5145b85e292229d48247', part: "confirm", variant: "primary", onClick: this.confirm }, this.confirmLabel)))));
211
211
  }
212
212
  static get is() { return "bs-timepicker"; }
213
213
  static get encapsulation() { return "shadow"; }
@@ -1,7 +1,7 @@
1
1
  import { html } from "lit";
2
2
  import { componentDescription, propDescription } from "../../stories-utils";
3
3
  const meta = {
4
- title: 'Components/bs-timepicker',
4
+ title: 'Components/Forms/bs-timepicker',
5
5
  parameters: { docs: { description: { component: componentDescription('bs-timepicker') } } },
6
6
  render: args => html `
7
7
  <bs-timepicker
@@ -27,7 +27,7 @@ export class BsToast {
27
27
  this.bsDismiss.emit();
28
28
  };
29
29
  render() {
30
- return (h("div", { key: '709a8a42f030c927c032eadefbfe2e9f62a01f86', part: "container", class: `bs-toast bs-toast--${this.state}`, role: "status", "aria-live": this.state === 'error' ? 'assertive' : 'polite' }, h("div", { key: '2895b376ebe8e35ef4ae0fe6b0a943c02e2c5c83', class: "bs-toast__content" }, h("span", { key: '2b90fe16b40215eac33d92b7a05e5c86d5ed3a16', part: "icon", class: "bs-toast__icon", "aria-hidden": "true" }, h(StateIcon, { key: 'ef1016e3d1035b73110e0fe5728b41f6d2992787', state: this.state })), h("span", { key: '6c63a7d4d38fc71c66336cd1d9bbfa21b8608e7f', part: "message", class: "bs-toast__message" }, h("slot", { key: '5ba3c4fa6b524c466e0d825df6a74bb776d179ef' }))), h("div", { key: '5fdc3cb4c8b1c9c4fb9e34265e13e32ced2666d1', class: "bs-toast__actions" }, h("button", { key: 'cc647daec4eeca19cf674e72fae642cabb03ed05', part: "close", type: "button", class: "bs-toast__close", "aria-label": this.dismissLabel, onClick: this.onDismiss }, h(CloseIcon, { key: '95828c7c5248a65beaf13ffad4fd55c7530999ff' })))));
30
+ return (h("div", { key: '0cd3f84b1bc4233de0e60d80feda8e0baa543ff3', part: "container", class: `bs-toast bs-toast--${this.state}`, role: "status", "aria-live": this.state === 'error' ? 'assertive' : 'polite' }, h("div", { key: '24cd4dd77e0a0113a2852151442e35067e8e0316', class: "bs-toast__content" }, h("span", { key: '8d6b7e4cb48d352dc1f35c4be4a027abe2678463', part: "icon", class: "bs-toast__icon", "aria-hidden": "true" }, h(StateIcon, { key: 'e61563ae68b3f6258b724d41627abbffaec4aa00', state: this.state })), h("span", { key: '85d42a6ebb5ffeb43f1a269267b24b5692470e8d', part: "message", class: "bs-toast__message" }, h("slot", { key: 'c4bbab246538f6bd855f81dda35378e412c677e9' }))), h("div", { key: 'e5dd7640b6c49406fa3fa68e57ecf6073163f373', class: "bs-toast__actions" }, h("button", { key: '483face90818e9db0f75be4a3e188656ce3ce5f4', part: "close", type: "button", class: "bs-toast__close", "aria-label": this.dismissLabel, onClick: this.onDismiss }, h(CloseIcon, { key: '549982d389e2a7b3d767e67f9249cfa68b4f0be8' })))));
31
31
  }
32
32
  static get is() { return "bs-toast"; }
33
33
  static get encapsulation() { return "shadow"; }
@@ -9,7 +9,7 @@ const hideOnDismiss = (ev) => {
9
9
  ev.currentTarget.style.display = 'none';
10
10
  };
11
11
  const meta = {
12
- title: 'Components/bs-toast',
12
+ title: 'Components/Feedback/bs-toast',
13
13
  parameters: { docs: { description: { component: componentDescription('bs-toast') } } },
14
14
  render: args => html `
15
15
  <bs-toast state=${args.state} @bsDismiss=${hideOnDismiss}>${args.message}</bs-toast>
@@ -40,6 +40,17 @@ describe('bs-toggle-button', () => {
40
40
  expect(btn.getAttribute('aria-label')).toBe('Grid view');
41
41
  expect(btn).toHaveClass('bs-toggle-button--icon-only');
42
42
  });
43
+ it('is not icon-only on the very first render when it has label text', async () => {
44
+ // The class must be right before any `slotchange` fires, or the label is hidden for a frame
45
+ // and the button briefly has no accessible name.
46
+ const el = document.createElement('bs-toggle-button');
47
+ el.textContent = 'Bold';
48
+ document.body.appendChild(el);
49
+ await el.componentOnReady();
50
+ const btn = el.shadowRoot.querySelector('button');
51
+ expect(btn).not.toHaveClass('bs-toggle-button--icon-only');
52
+ el.remove();
53
+ });
43
54
  it('tabbable=false sets tabindex -1', async () => {
44
55
  const { root } = await render(h("bs-toggle-button", { tabbable: false }, "A"));
45
56
  expect(root.shadowRoot.querySelector('button').getAttribute('tabindex')).toBe('-1');
@@ -41,6 +41,14 @@ export class BsToggleButton {
41
41
  bsChange;
42
42
  hasLabel = false;
43
43
  hasIcon = false;
44
+ // Seed from the light DOM so the first render is already correct. Waiting for `slotchange` leaves
45
+ // a frame where a labelled button is styled icon-only (label hidden, so no accessible name).
46
+ componentWillLoad() {
47
+ const children = Array.from(this.el.childNodes);
48
+ const slotOf = (n) => (n.nodeType === 1 ? n.getAttribute('slot') : null);
49
+ this.hasIcon = children.some(n => slotOf(n) === 'icon');
50
+ this.hasLabel = children.some(n => slotOf(n) === null && (n.nodeType === 1 || !!n.textContent?.trim()));
51
+ }
44
52
  onIconSlotchange = (ev) => {
45
53
  this.hasIcon = ev.target.assignedNodes().length > 0;
46
54
  };
@@ -62,7 +70,7 @@ export class BsToggleButton {
62
70
  };
63
71
  render() {
64
72
  const radio = this.mode === 'radio';
65
- return (h("button", { key: '444c2161afae1af1e82ee454014c61b938ef2b23', type: "button", part: "button", class: `bs-toggle-button ${this.pressed ? 'bs-toggle-button--pressed' : ''} ${this.hasLabel ? '' : 'bs-toggle-button--icon-only'}`, role: radio ? 'radio' : undefined, "aria-pressed": radio ? undefined : String(this.pressed), "aria-checked": radio ? String(this.pressed) : undefined, "aria-label": this.ariaLabel, disabled: this.disabled, tabindex: this.tabbable ? undefined : -1, onClick: this.onClick }, h("bs-ripple", { key: '392b1d00b0d5dda96d0eb7161989579830e31cf9', part: "ripple", centered: false, disabled: this.disabled }), h("span", { key: 'b59e51d2bf13a3ea0a4eedab7dc120d07e812bc2', part: "icon", class: `bs-toggle-button__icon ${this.hasIcon ? 'bs-toggle-button__icon--has-content' : ''}` }, h("slot", { key: '34c7b4c9830b479b57aaef951423c19b551c026f', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '402c92bcd76b444df01aee9f42dfbc765fc8ec96', part: "label", class: "bs-toggle-button__label" }, h("slot", { key: 'de6cbdf862a8dbb028733e25c58312b4a707f827', onSlotchange: this.onLabelSlotchange }))));
73
+ return (h("button", { key: '1fed8ac2570a4d23c34d992fe7bc957a2010edf3', type: "button", part: "button", class: `bs-toggle-button ${this.pressed ? 'bs-toggle-button--pressed' : ''} ${this.hasLabel ? '' : 'bs-toggle-button--icon-only'}`, role: radio ? 'radio' : undefined, "aria-pressed": radio ? undefined : String(this.pressed), "aria-checked": radio ? String(this.pressed) : undefined, "aria-label": this.ariaLabel, disabled: this.disabled, tabindex: this.tabbable ? undefined : -1, onClick: this.onClick }, h("bs-ripple", { key: '88641d9ed9ab22c439e48654a68570f8bdc46c53', part: "ripple", centered: false, disabled: this.disabled }), h("span", { key: 'd82620a97c11371cbc2f036fca76a2b8ccf0b7ce', part: "icon", class: `bs-toggle-button__icon ${this.hasIcon ? 'bs-toggle-button__icon--has-content' : ''}` }, h("slot", { key: '67ecb03e648a577b4fbdbd98c2ee11ed7803a4ad', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '3b069c34f76d2979382fcee5d31982efa01ff9e9', part: "label", class: "bs-toggle-button__label" }, h("slot", { key: '4ba7842ada798bb5aba6e0329e6f6379f0636797', onSlotchange: this.onLabelSlotchange }))));
66
74
  }
67
75
  static get is() { return "bs-toggle-button"; }
68
76
  static get encapsulation() { return "shadow"; }
@@ -2,7 +2,7 @@ import { html } from "lit";
2
2
  import { componentDescription, propDescription } from "../../stories-utils";
3
3
  const gridIcon = html `<svg slot="icon" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M4 4h7v7H4zM13 4h7v7h-7zM4 13h7v7H4zM13 13h7v7h-7z" stroke="currentColor" stroke-width="1.5"/></svg>`;
4
4
  const meta = {
5
- title: 'Components/bs-toggle-button',
5
+ title: 'Components/Actions/bs-toggle-button',
6
6
  parameters: { docs: { description: { component: componentDescription('bs-toggle-button') } } },
7
7
  render: args => html `<bs-toggle-button ?pressed=${args.pressed} ?disabled=${args.disabled}>${args.label}</bs-toggle-button>`,
8
8
  argTypes: {
@@ -18,5 +18,5 @@ export const Pressed = { args: { pressed: true } };
18
18
  export const Disabled = { args: { disabled: true } };
19
19
  export const IconOnly = {
20
20
  name: 'Icon only',
21
- render: () => html `<bs-toggle-button ariaLabel="Grid view">${gridIcon}</bs-toggle-button>`,
21
+ render: () => html `<bs-toggle-button aria-label="Grid view">${gridIcon}</bs-toggle-button>`,
22
22
  };
@@ -97,7 +97,7 @@ export class BsToggleButtonGroup {
97
97
  btn?.click();
98
98
  }
99
99
  render() {
100
- return (h("div", { key: '1ca052e150356a59c2a6341a8de13a8b6a99a868', part: "group", class: "bs-toggle-button-group", role: this.multiple ? 'group' : 'radiogroup', "aria-label": this.ariaLabel, "aria-disabled": this.disabled ? 'true' : undefined }, h("slot", { key: 'e31c4ee55e0501bee85e3772e86f1e3fd326ad2a', onSlotchange: () => this.sync() })));
100
+ return (h("div", { key: 'a1fb653e8c7832d1eab642e80b34cf5e8cf4078f', part: "group", class: "bs-toggle-button-group", role: this.multiple ? 'group' : 'radiogroup', "aria-label": this.ariaLabel, "aria-disabled": this.disabled ? 'true' : undefined }, h("slot", { key: '7d505f52b0f7f0652a2ef048b5c1cc1e4ef9eba6', onSlotchange: () => this.sync() })));
101
101
  }
102
102
  static get is() { return "bs-toggle-button-group"; }
103
103
  static get encapsulation() { return "shadow"; }