@brandsync/wc 1.21.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (576) hide show
  1. package/CHANGELOG.md +20 -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-7ee43b50.entry.js → p-018ab194.entry.js} +1 -1
  6. package/dist/brandsync-wc/{p-faea22be.entry.js → p-020a274b.entry.js} +1 -1
  7. package/dist/brandsync-wc/{p-3937bc23.entry.js → p-0276bca4.entry.js} +1 -1
  8. package/dist/brandsync-wc/p-03acdd56.entry.js +1 -0
  9. package/dist/brandsync-wc/{p-f5bbbff2.entry.js → p-06a5fe99.entry.js} +1 -1
  10. package/dist/brandsync-wc/{p-383c076f.entry.js → p-0a0798c4.entry.js} +1 -1
  11. package/dist/brandsync-wc/{p-b6b880c0.entry.js → p-0b92d0d7.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-bd37c086.entry.js → p-0be65af0.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-c700a860.entry.js → p-0ce29fc2.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-34dd0976.entry.js → p-1436ae47.entry.js} +1 -1
  15. package/dist/brandsync-wc/{p-6cf303f1.entry.js → p-181a8372.entry.js} +1 -1
  16. package/dist/brandsync-wc/{p-2eed5ff2.entry.js → p-1bd3756c.entry.js} +1 -1
  17. package/dist/brandsync-wc/p-1c2402eb.entry.js +1 -0
  18. package/dist/brandsync-wc/{p-c1207ce6.entry.js → p-214b32bb.entry.js} +1 -1
  19. package/dist/brandsync-wc/{p-c305bde7.entry.js → p-21a592a4.entry.js} +1 -1
  20. package/dist/brandsync-wc/{p-64ef4a9f.entry.js → p-23e3bffe.entry.js} +1 -1
  21. package/dist/brandsync-wc/{p-324f0d11.entry.js → p-284e4e1e.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-fbd33eb3.entry.js → p-2c167f83.entry.js} +1 -1
  23. package/dist/brandsync-wc/p-2e2dc322.entry.js +1 -0
  24. package/dist/brandsync-wc/{p-b3284eca.entry.js → p-37da7465.entry.js} +1 -1
  25. package/dist/brandsync-wc/{p-56bd821c.entry.js → p-38f4552f.entry.js} +1 -1
  26. package/dist/brandsync-wc/{p-c542d67f.entry.js → p-39afd9b8.entry.js} +1 -1
  27. package/dist/brandsync-wc/{p-08af052c.entry.js → p-3a13747b.entry.js} +1 -1
  28. package/dist/brandsync-wc/{p-c5fa5d02.entry.js → p-3b3a9587.entry.js} +1 -1
  29. package/dist/brandsync-wc/{p-1ddcd867.entry.js → p-3de7989e.entry.js} +1 -1
  30. package/dist/brandsync-wc/{p-189eb922.entry.js → p-43a792a3.entry.js} +1 -1
  31. package/dist/brandsync-wc/{p-cf615c99.entry.js → p-4907f66e.entry.js} +1 -1
  32. package/dist/brandsync-wc/{p-0d3d8b6c.entry.js → p-4a8c2eca.entry.js} +1 -1
  33. package/dist/brandsync-wc/{p-da934f7b.entry.js → p-4ff5bc4b.entry.js} +1 -1
  34. package/dist/brandsync-wc/{p-2be42af3.entry.js → p-51e9d375.entry.js} +1 -1
  35. package/dist/brandsync-wc/{p-a30d456d.entry.js → p-5399e163.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-2e654764.entry.js → p-55db935b.entry.js} +1 -1
  37. package/dist/brandsync-wc/p-5f26d601.entry.js +1 -0
  38. package/dist/brandsync-wc/{p-83ea17b6.entry.js → p-60e4e07a.entry.js} +1 -1
  39. package/dist/brandsync-wc/{p-ea4ea55d.entry.js → p-645e1a78.entry.js} +1 -1
  40. package/dist/brandsync-wc/{p-05698f65.entry.js → p-682b9f3e.entry.js} +1 -1
  41. package/dist/brandsync-wc/{p-59ddf12e.entry.js → p-697de2b2.entry.js} +1 -1
  42. package/dist/brandsync-wc/{p-fc859e89.entry.js → p-6aa3dcef.entry.js} +1 -1
  43. package/dist/brandsync-wc/{p-9065d825.entry.js → p-6b11aebb.entry.js} +1 -1
  44. package/dist/brandsync-wc/{p-aea1e4f9.entry.js → p-6d18ba79.entry.js} +1 -1
  45. package/dist/brandsync-wc/p-6fcfd7d7.entry.js +1 -0
  46. package/dist/brandsync-wc/{p-4ec0dca9.entry.js → p-71ea6c1c.entry.js} +1 -1
  47. package/dist/brandsync-wc/{p-205a1ccf.entry.js → p-74dd9146.entry.js} +1 -1
  48. package/dist/brandsync-wc/{p-b9014d87.entry.js → p-75ec385a.entry.js} +1 -1
  49. package/dist/brandsync-wc/{p-82c8fde1.entry.js → p-78fdcd05.entry.js} +1 -1
  50. package/dist/brandsync-wc/{p-b0b73f22.entry.js → p-7a291cfc.entry.js} +1 -1
  51. package/dist/brandsync-wc/{p-0762a4dd.entry.js → p-7f3c8416.entry.js} +1 -1
  52. package/dist/brandsync-wc/{p-1187a158.entry.js → p-7f50ae81.entry.js} +1 -1
  53. package/dist/brandsync-wc/{p-21781ce5.entry.js → p-82533674.entry.js} +1 -1
  54. package/dist/brandsync-wc/{p-40aeeacf.entry.js → p-83977d40.entry.js} +1 -1
  55. package/dist/brandsync-wc/{p-5c1ccf35.entry.js → p-851c1498.entry.js} +1 -1
  56. package/dist/brandsync-wc/{p-cd1adef0.entry.js → p-87b91d38.entry.js} +1 -1
  57. package/dist/brandsync-wc/{p-1b41823c.entry.js → p-8a85e144.entry.js} +1 -1
  58. package/dist/brandsync-wc/{p-e56cc6ac.entry.js → p-9301f01e.entry.js} +1 -1
  59. package/dist/brandsync-wc/{p-dae0348e.entry.js → p-978c46d9.entry.js} +1 -1
  60. package/dist/brandsync-wc/{p-5f96d808.entry.js → p-9988ebab.entry.js} +1 -1
  61. package/dist/brandsync-wc/p-9a45899c.entry.js +1 -0
  62. package/dist/brandsync-wc/{p-7c627563.entry.js → p-9bd0c4a7.entry.js} +1 -1
  63. package/dist/brandsync-wc/{p-ab74da02.entry.js → p-9c1ea6f0.entry.js} +1 -1
  64. package/dist/brandsync-wc/{p-abaab890.entry.js → p-9c353a03.entry.js} +1 -1
  65. package/dist/brandsync-wc/{p-001f3790.entry.js → p-9d90d3b8.entry.js} +1 -1
  66. package/dist/brandsync-wc/{p-05a9cbda.entry.js → p-a59b4c08.entry.js} +1 -1
  67. package/dist/brandsync-wc/{p-4cdb1c8c.entry.js → p-ad53d283.entry.js} +1 -1
  68. package/dist/brandsync-wc/{p-8a3095d5.entry.js → p-ad9c3eea.entry.js} +1 -1
  69. package/dist/brandsync-wc/{p-1d2bc5b4.entry.js → p-aeb99b7d.entry.js} +1 -1
  70. package/dist/brandsync-wc/{p-f89d12d7.entry.js → p-b145997c.entry.js} +1 -1
  71. package/dist/brandsync-wc/{p-f0596399.entry.js → p-b6350eab.entry.js} +1 -1
  72. package/dist/brandsync-wc/{p-fe070433.entry.js → p-b90c8b7d.entry.js} +1 -1
  73. package/dist/brandsync-wc/{p-ac7f9aa0.entry.js → p-b93ce581.entry.js} +1 -1
  74. package/dist/brandsync-wc/p-ba933f3b.entry.js +1 -0
  75. package/dist/brandsync-wc/{p-dd8f593a.entry.js → p-bb1b2350.entry.js} +1 -1
  76. package/dist/brandsync-wc/{p-8560fb54.entry.js → p-bcb09ba4.entry.js} +1 -1
  77. package/dist/brandsync-wc/{p-9ca0d2db.entry.js → p-bde099fb.entry.js} +1 -1
  78. package/dist/brandsync-wc/{p-237f583d.entry.js → p-bf8da1b5.entry.js} +1 -1
  79. package/dist/brandsync-wc/{p-5e3fcc47.entry.js → p-c36f68a2.entry.js} +1 -1
  80. package/dist/brandsync-wc/{p-023dae02.entry.js → p-c4026551.entry.js} +1 -1
  81. package/dist/brandsync-wc/{p-513fa325.entry.js → p-c7c3c4ae.entry.js} +1 -1
  82. package/dist/brandsync-wc/{p-3592e6f3.entry.js → p-ca71e180.entry.js} +1 -1
  83. package/dist/brandsync-wc/p-cc664465.entry.js +1 -0
  84. package/dist/brandsync-wc/{p-953d0191.entry.js → p-ce3a762e.entry.js} +1 -1
  85. package/dist/brandsync-wc/{p-7cdcf7e7.entry.js → p-d38394ce.entry.js} +1 -1
  86. package/dist/brandsync-wc/{p-171db2b0.entry.js → p-d4caa814.entry.js} +1 -1
  87. package/dist/brandsync-wc/{p-1cf40f44.entry.js → p-d8dd2230.entry.js} +1 -1
  88. package/dist/brandsync-wc/{p-bc489296.entry.js → p-da091255.entry.js} +1 -1
  89. package/dist/brandsync-wc/{p-eb8da874.entry.js → p-dd7bb223.entry.js} +1 -1
  90. package/dist/brandsync-wc/{p-44c7fa4a.entry.js → p-e0d47019.entry.js} +1 -1
  91. package/dist/brandsync-wc/{p-eadbc160.entry.js → p-e8fe79bc.entry.js} +1 -1
  92. package/dist/brandsync-wc/{p-ffeea95f.entry.js → p-e90e4991.entry.js} +1 -1
  93. package/dist/brandsync-wc/{p-5cd95a12.entry.js → p-ee4f3b3d.entry.js} +1 -1
  94. package/dist/brandsync-wc/{p-cf297373.entry.js → p-f43615f7.entry.js} +1 -1
  95. package/dist/brandsync-wc/{p-64fbd43a.entry.js → p-fca95aae.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 +25 -1
  190. package/dist/collection/components/bs-accordion-group/bs-accordion-group.js +1 -1
  191. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  192. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  193. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  194. package/dist/collection/components/bs-app-recent-item/bs-app-recent-item.js +3 -3
  195. package/dist/collection/components/bs-app-shell/bs-app-shell.js +1 -1
  196. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  197. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -1
  198. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +1 -1
  199. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  200. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  201. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  202. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  203. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  204. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  205. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
  206. package/dist/collection/components/bs-checkbox/bs-checkbox.stories.js +25 -1
  207. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.cmp.test.js +44 -0
  208. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.css +30 -0
  209. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.js +139 -7
  210. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.stories.js +7 -0
  211. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +1 -1
  212. package/dist/collection/components/bs-citation-preview/bs-citation-preview.js +1 -1
  213. package/dist/collection/components/bs-command-palette/bs-command-palette.js +1 -1
  214. package/dist/collection/components/bs-compact-menu-block/bs-compact-menu-block.js +1 -1
  215. package/dist/collection/components/bs-company-switcher/bs-company-switcher.js +2 -2
  216. package/dist/collection/components/bs-composer/bs-composer.js +1 -1
  217. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -1
  218. package/dist/collection/components/bs-container/bs-container.js +1 -1
  219. package/dist/collection/components/bs-data-table/bs-data-table.cmp.test.js +9 -0
  220. package/dist/collection/components/bs-data-table/bs-data-table.js +24 -2
  221. package/dist/collection/components/bs-datepicker/bs-datepicker.js +1 -1
  222. package/dist/collection/components/bs-description-item/bs-description-item.js +1 -1
  223. package/dist/collection/components/bs-description-list/bs-description-list.js +1 -1
  224. package/dist/collection/components/bs-divider/bs-divider.js +1 -1
  225. package/dist/collection/components/bs-dropdown/bs-dropdown.js +1 -1
  226. package/dist/collection/components/bs-empty-state/bs-empty-state.js +1 -1
  227. package/dist/collection/components/bs-error-page/bs-error-page.js +1 -1
  228. package/dist/collection/components/bs-file-upload/bs-file-upload.js +1 -1
  229. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +1 -1
  230. package/dist/collection/components/bs-global-search/bs-global-search.js +2 -2
  231. package/dist/collection/components/bs-grid/bs-grid.js +2 -2
  232. package/dist/collection/components/bs-heading/bs-heading.js +1 -1
  233. package/dist/collection/components/bs-icon/bs-icon.js +1 -1
  234. package/dist/collection/components/bs-icon-tile/bs-icon-tile.js +2 -2
  235. package/dist/collection/components/bs-input/bs-input.cmp.test.js +12 -0
  236. package/dist/collection/components/bs-input/bs-input.js +26 -3
  237. package/dist/collection/components/bs-input/bs-input.stories.js +14 -0
  238. package/dist/collection/components/bs-key/bs-key.js +1 -1
  239. package/dist/collection/components/bs-key-caps/bs-key-caps.js +1 -1
  240. package/dist/collection/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.js +2 -2
  241. package/dist/collection/components/bs-link/bs-link.js +1 -1
  242. package/dist/collection/components/bs-list/bs-list.js +1 -1
  243. package/dist/collection/components/bs-list-item/bs-list-item.js +1 -1
  244. package/dist/collection/components/bs-mega-menu/bs-mega-menu.js +1 -1
  245. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  246. package/dist/collection/components/bs-menu-block/bs-menu-block.js +3 -3
  247. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  248. package/dist/collection/components/bs-message/bs-message.js +1 -1
  249. package/dist/collection/components/bs-message-list/bs-message-list.js +1 -1
  250. package/dist/collection/components/bs-page-header/bs-page-header.js +1 -1
  251. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  252. package/dist/collection/components/bs-popover/bs-popover.js +1 -1
  253. package/dist/collection/components/bs-presence/bs-presence.js +1 -1
  254. package/dist/collection/components/bs-progress/bs-progress.js +2 -2
  255. package/dist/collection/components/bs-progress/bs-progress.stories.js +6 -3
  256. package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +2 -2
  257. package/dist/collection/components/bs-progress-linear/bs-progress-linear.stories.js +7 -5
  258. package/dist/collection/components/bs-qr-code/bs-qr-code.js +1 -1
  259. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  260. package/dist/collection/components/bs-radio-group/bs-radio-group.js +1 -1
  261. package/dist/collection/components/bs-radio-group/bs-radio-group.stories.js +15 -1
  262. package/dist/collection/components/bs-ripple/bs-ripple.js +1 -1
  263. package/dist/collection/components/bs-search-item/bs-search-item.js +1 -1
  264. package/dist/collection/components/bs-select/bs-select.js +1 -1
  265. package/dist/collection/components/bs-select/bs-select.stories.js +21 -1
  266. package/dist/collection/components/bs-session-timeout/bs-session-timeout.js +1 -1
  267. package/dist/collection/components/bs-shortcut-row/bs-shortcut-row.js +1 -1
  268. package/dist/collection/components/bs-skeleton/bs-skeleton.js +1 -1
  269. package/dist/collection/components/bs-skip-link/bs-skip-link.js +1 -1
  270. package/dist/collection/components/bs-slider/bs-slider.js +1 -1
  271. package/dist/collection/components/bs-snackbar/bs-snackbar.js +1 -1
  272. package/dist/collection/components/bs-source-link/bs-source-link.js +3 -3
  273. package/dist/collection/components/bs-spinner/bs-spinner.js +1 -1
  274. package/dist/collection/components/bs-split-pane/bs-split-pane.cmp.test.js +8 -0
  275. package/dist/collection/components/bs-split-pane/bs-split-pane.js +26 -1
  276. package/dist/collection/components/bs-stack/bs-stack.js +1 -1
  277. package/dist/collection/components/bs-stat/bs-stat.js +1 -1
  278. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
  279. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
  280. package/dist/collection/components/bs-switch/bs-switch.js +1 -1
  281. package/dist/collection/components/bs-switch/bs-switch.stories.js +33 -9
  282. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  283. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
  284. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +1 -1
  285. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.stories.js +19 -1
  286. package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.js +1 -1
  287. package/dist/collection/components/bs-tag/bs-tag.js +6 -2
  288. package/dist/collection/components/bs-text/bs-text.js +1 -1
  289. package/dist/collection/components/bs-timepicker/bs-timepicker.js +2 -2
  290. package/dist/collection/components/bs-toast/bs-toast.js +1 -1
  291. package/dist/collection/components/bs-toggle-button/bs-toggle-button.cmp.test.js +11 -0
  292. package/dist/collection/components/bs-toggle-button/bs-toggle-button.js +9 -1
  293. package/dist/collection/components/bs-toggle-button/bs-toggle-button.stories.js +1 -1
  294. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.js +1 -1
  295. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.stories.js +33 -3
  296. package/dist/collection/components/bs-toolbar/bs-toolbar.js +1 -1
  297. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  298. package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.js +1 -1
  299. package/dist/collection/components/bs-tree/bs-tree.js +1 -1
  300. package/dist/collection/components/bs-tree-item/bs-tree-item.js +2 -2
  301. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.js +1 -1
  302. package/dist/collection/components/tokens/tokens.stories.js +90 -0
  303. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +2 -2
  304. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  305. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +2 -2
  306. package/dist/collection/play-utils.js +24 -0
  307. package/dist/components/bs-accordion-group.js +1 -1
  308. package/dist/components/bs-ai-disclaimer.js +1 -1
  309. package/dist/components/bs-ai-greeting.js +1 -1
  310. package/dist/components/bs-ai-thinking.js +1 -1
  311. package/dist/components/bs-app-recent-item.js +1 -1
  312. package/dist/components/bs-app-shell.js +1 -1
  313. package/dist/components/bs-app-switcher.js +1 -1
  314. package/dist/components/bs-app-tile.js +1 -1
  315. package/dist/components/bs-attachment-list.js +1 -1
  316. package/dist/components/bs-attachment.js +1 -1
  317. package/dist/components/bs-avatar.js +1 -1
  318. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  319. package/dist/components/bs-breadcrumbs.js +1 -1
  320. package/dist/components/bs-button-skeleton.js +1 -1
  321. package/dist/components/bs-button.js +1 -1
  322. package/dist/components/bs-carousel.js +1 -1
  323. package/dist/components/bs-chatbot-feedback.js +1 -1
  324. package/dist/components/bs-chatbot-header.js +1 -1
  325. package/dist/components/bs-chatbot-response-action.js +1 -1
  326. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  327. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  328. package/dist/components/bs-checkbox-skeleton.js +1 -1
  329. package/dist/components/bs-checkbox.js +1 -1
  330. package/dist/components/bs-chip-filter.js +1 -1
  331. package/dist/components/bs-chip-informative.js +1 -1
  332. package/dist/components/bs-chip-input.js +1 -1
  333. package/dist/components/bs-citation-preview.js +1 -1
  334. package/dist/components/bs-code-block.js +1 -1
  335. package/dist/components/bs-command-palette.js +1 -1
  336. package/dist/components/bs-compact-menu-block.js +1 -1
  337. package/dist/components/bs-company-switcher.js +1 -1
  338. package/dist/components/bs-composer-status-banner.js +1 -1
  339. package/dist/components/bs-composer.js +1 -1
  340. package/dist/components/bs-container.js +1 -1
  341. package/dist/components/bs-cookie-consent.js +1 -1
  342. package/dist/components/bs-data-table.js +1 -1
  343. package/dist/components/bs-datepicker.js +1 -1
  344. package/dist/components/bs-description-item.js +1 -1
  345. package/dist/components/bs-description-list.js +1 -1
  346. package/dist/components/bs-dialog.js +1 -1
  347. package/dist/components/bs-divider.js +1 -1
  348. package/dist/components/bs-dropdown.js +1 -1
  349. package/dist/components/bs-empty-state.js +1 -1
  350. package/dist/components/bs-error-page.js +1 -1
  351. package/dist/components/bs-file-upload-item.js +1 -1
  352. package/dist/components/bs-file-upload.js +1 -1
  353. package/dist/components/bs-global-search.js +1 -1
  354. package/dist/components/bs-grid.js +1 -1
  355. package/dist/components/bs-heading.js +1 -1
  356. package/dist/components/bs-icon-button.js +1 -1
  357. package/dist/components/bs-icon-tile.js +1 -1
  358. package/dist/components/bs-icon.js +1 -1
  359. package/dist/components/bs-inline-tab.js +1 -1
  360. package/dist/components/bs-input.js +1 -1
  361. package/dist/components/bs-key-caps.js +1 -1
  362. package/dist/components/bs-key.js +1 -1
  363. package/dist/components/bs-keyboard-shortcuts.js +1 -1
  364. package/dist/components/bs-link.js +1 -1
  365. package/dist/components/bs-list-item.js +1 -1
  366. package/dist/components/bs-list.js +1 -1
  367. package/dist/components/bs-mega-menu.js +1 -1
  368. package/dist/components/bs-menu-block.js +1 -1
  369. package/dist/components/bs-menu-item.js +1 -1
  370. package/dist/components/bs-menu.js +1 -1
  371. package/dist/components/bs-message-list.js +1 -1
  372. package/dist/components/bs-message.js +1 -1
  373. package/dist/components/bs-navigation-drawer-item.js +1 -1
  374. package/dist/components/bs-navigation-drawer.js +1 -1
  375. package/dist/components/bs-navigation-header.js +1 -1
  376. package/dist/components/bs-onboarding-checklist.js +1 -1
  377. package/dist/components/bs-page-header.js +1 -1
  378. package/dist/components/bs-pagination.js +1 -1
  379. package/dist/components/bs-popover.js +1 -1
  380. package/dist/components/bs-presence.js +1 -1
  381. package/dist/components/bs-product-tour.js +1 -1
  382. package/dist/components/bs-progress-linear.js +1 -1
  383. package/dist/components/bs-progress.js +1 -1
  384. package/dist/components/bs-qr-code.js +1 -1
  385. package/dist/components/bs-radio-group.js +1 -1
  386. package/dist/components/bs-radio.js +1 -1
  387. package/dist/components/bs-ripple.js +1 -1
  388. package/dist/components/bs-search-item.js +1 -1
  389. package/dist/components/bs-select.js +1 -1
  390. package/dist/components/bs-session-timeout.js +1 -1
  391. package/dist/components/bs-shortcut-row.js +1 -1
  392. package/dist/components/bs-side-panel.js +1 -1
  393. package/dist/components/bs-skeleton.js +1 -1
  394. package/dist/components/bs-skip-link.js +1 -1
  395. package/dist/components/bs-slider.js +1 -1
  396. package/dist/components/bs-snackbar.js +1 -1
  397. package/dist/components/bs-source-link.js +1 -1
  398. package/dist/components/bs-spinner.js +1 -1
  399. package/dist/components/bs-split-pane.js +1 -1
  400. package/dist/components/bs-stack.js +1 -1
  401. package/dist/components/bs-stat.js +1 -1
  402. package/dist/components/bs-stepper-step.js +1 -1
  403. package/dist/components/bs-stepper.js +1 -1
  404. package/dist/components/bs-switch.js +1 -1
  405. package/dist/components/bs-tab.js +1 -1
  406. package/dist/components/bs-table-of-contents.js +1 -1
  407. package/dist/components/bs-tabs.js +1 -1
  408. package/dist/components/bs-tag.js +1 -1
  409. package/dist/components/bs-text.js +1 -1
  410. package/dist/components/bs-timepicker.js +1 -1
  411. package/dist/components/bs-toast.js +1 -1
  412. package/dist/components/bs-toggle-button-group.js +1 -1
  413. package/dist/components/bs-toggle-button.js +1 -1
  414. package/dist/components/bs-toolbar.js +1 -1
  415. package/dist/components/bs-tooltip-trigger.js +1 -1
  416. package/dist/components/bs-tooltip.js +1 -1
  417. package/dist/components/bs-tree-item.js +1 -1
  418. package/dist/components/bs-tree.js +1 -1
  419. package/dist/components/bs-whats-new-entry.js +1 -1
  420. package/dist/components/bs-whats-new.js +1 -1
  421. package/dist/components/{p-B1Id2OKX.js → p--3dR13A5.js} +1 -1
  422. package/dist/components/{p-CJw83LkA.js → p-5OSJi5Hq.js} +1 -1
  423. package/dist/components/{p-Bn3Yxpe1.js → p-5yADpXI0.js} +1 -1
  424. package/dist/components/p-B1pqQBKC.js +1 -0
  425. package/dist/components/{p-i5Q__opK.js → p-B6bXreGu.js} +1 -1
  426. package/dist/components/{p-BabS3w3f.js → p-BDqzHL7T.js} +1 -1
  427. package/dist/components/{p-DY2EHN4U.js → p-BSaspygR.js} +1 -1
  428. package/dist/components/{p-CGFmvCoE.js → p-BYZ1TxxS.js} +1 -1
  429. package/dist/components/{p-BVX8P6fl.js → p-BenlMTiB.js} +1 -1
  430. package/dist/components/{p-BFv-3K2u.js → p-BkzRLgh4.js} +1 -1
  431. package/dist/components/{p-CWcci6TX.js → p-BpD6hqIE.js} +1 -1
  432. package/dist/components/{p-CvaS1abm.js → p-Bu47NRjs.js} +1 -1
  433. package/dist/components/{p-C7Qr4akd.js → p-C4NrLy_y.js} +1 -1
  434. package/dist/components/{p-AlcZrDeY.js → p-CA1qkJ9m.js} +1 -1
  435. package/dist/components/{p-C0RV5-An.js → p-CMhON6jB.js} +1 -1
  436. package/dist/components/{p-CFjeYXmC.js → p-Cau06t9C.js} +1 -1
  437. package/dist/components/{p-Bm1A449h.js → p-D9TQ0LLX.js} +1 -1
  438. package/dist/components/{p-DrlNm0Cv.js → p-DJqNdSU4.js} +1 -1
  439. package/dist/components/{p-hfcWxH0R.js → p-DLGXRivO.js} +1 -1
  440. package/dist/components/{p-bsKorXp2.js → p-DPIDWFCa.js} +1 -1
  441. package/dist/components/{p-C7IrV6pt.js → p-DQY3n0nR.js} +1 -1
  442. package/dist/components/{p-BanNal67.js → p-DfYJCczy.js} +1 -1
  443. package/dist/components/p-DoCH1kV9.js +1 -0
  444. package/dist/components/p-DpMqdknQ.js +1 -0
  445. package/dist/components/p-Dsyt34TD.js +1 -0
  446. package/dist/components/{p--AN2lu8b.js → p-Dx10cRTc.js} +1 -1
  447. package/dist/components/p-EQrsaDKp.js +1 -0
  448. package/dist/components/{p-BPxT7mqc.js → p-ESiaIgGU.js} +1 -1
  449. package/dist/components/p-OhKj-S2c.js +1 -0
  450. package/dist/components/{p-CrSwhBz7.js → p-TRtv6fbe.js} +1 -1
  451. package/dist/components/{p-B-gdXga9.js → p-_oStzQSx.js} +1 -1
  452. package/dist/components/{p-oc6e6_D0.js → p-bOSY8sKI.js} +1 -1
  453. package/dist/components/{p-Cm-s0vin.js → p-hjzkd-La.js} +1 -1
  454. package/dist/esm/brandsync-wc.js +1 -1
  455. package/dist/esm/bs-accordion-group.entry.js +1 -1
  456. package/dist/esm/bs-ai-disclaimer.entry.js +1 -1
  457. package/dist/esm/bs-ai-greeting.entry.js +1 -1
  458. package/dist/esm/bs-ai-thinking.entry.js +1 -1
  459. package/dist/esm/bs-app-recent-item_3.entry.js +4 -4
  460. package/dist/esm/bs-app-shell.entry.js +1 -1
  461. package/dist/esm/bs-attachment-list.entry.js +1 -1
  462. package/dist/esm/bs-breadcrumbs.entry.js +1 -1
  463. package/dist/esm/bs-button-skeleton.entry.js +1 -1
  464. package/dist/esm/bs-button_2.entry.js +1 -1
  465. package/dist/esm/bs-chatbot-feedback.entry.js +1 -1
  466. package/dist/esm/bs-chatbot-header.entry.js +1 -1
  467. package/dist/esm/bs-chatbot-response-action.entry.js +1 -1
  468. package/dist/esm/bs-chatbot-sources-drawer.entry.js +1 -1
  469. package/dist/esm/bs-chatbot-suggestion-button.entry.js +1 -1
  470. package/dist/esm/bs-checkbox-skeleton.entry.js +1 -1
  471. package/dist/esm/bs-chip-informative.entry.js +32 -3
  472. package/dist/esm/bs-chip-input.entry.js +1 -1
  473. package/dist/esm/bs-citation-preview.entry.js +1 -1
  474. package/dist/esm/bs-command-palette.entry.js +1 -1
  475. package/dist/esm/bs-compact-menu-block_2.entry.js +4 -4
  476. package/dist/esm/bs-company-switcher.entry.js +2 -2
  477. package/dist/esm/bs-composer-status-banner.entry.js +1 -1
  478. package/dist/esm/bs-composer.entry.js +1 -1
  479. package/dist/esm/bs-container.entry.js +1 -1
  480. package/dist/esm/bs-data-table.entry.js +4 -2
  481. package/dist/esm/bs-datepicker.entry.js +1 -1
  482. package/dist/esm/bs-description-item.entry.js +1 -1
  483. package/dist/esm/bs-description-list.entry.js +1 -1
  484. package/dist/esm/bs-divider.entry.js +1 -1
  485. package/dist/esm/bs-dropdown.entry.js +1 -1
  486. package/dist/esm/bs-empty-state.entry.js +1 -1
  487. package/dist/esm/bs-error-page.entry.js +1 -1
  488. package/dist/esm/bs-file-upload-item.entry.js +1 -1
  489. package/dist/esm/bs-file-upload.entry.js +1 -1
  490. package/dist/esm/bs-global-search.entry.js +2 -2
  491. package/dist/esm/bs-grid.entry.js +2 -2
  492. package/dist/esm/bs-heading.entry.js +1 -1
  493. package/dist/esm/bs-icon-button.entry.js +1 -1
  494. package/dist/esm/bs-icon-tile.entry.js +2 -2
  495. package/dist/esm/bs-icon.entry.js +1 -1
  496. package/dist/esm/bs-inline-tab.entry.js +1 -1
  497. package/dist/esm/bs-input_4.entry.js +9 -6
  498. package/dist/esm/bs-key-caps.entry.js +1 -1
  499. package/dist/esm/bs-key.entry.js +1 -1
  500. package/dist/esm/bs-keyboard-shortcuts.entry.js +2 -2
  501. package/dist/esm/bs-link.entry.js +1 -1
  502. package/dist/esm/bs-list-item.entry.js +1 -1
  503. package/dist/esm/bs-list.entry.js +1 -1
  504. package/dist/esm/bs-mega-menu.entry.js +1 -1
  505. package/dist/esm/bs-message-list.entry.js +1 -1
  506. package/dist/esm/bs-message.entry.js +1 -1
  507. package/dist/esm/bs-navigation-drawer-item.entry.js +1 -1
  508. package/dist/esm/bs-navigation-drawer.entry.js +2 -2
  509. package/dist/esm/bs-navigation-header.entry.js +2 -2
  510. package/dist/esm/bs-page-header.entry.js +1 -1
  511. package/dist/esm/bs-pagination.entry.js +1 -1
  512. package/dist/esm/bs-popover.entry.js +1 -1
  513. package/dist/esm/bs-presence.entry.js +1 -1
  514. package/dist/esm/bs-progress-linear.entry.js +2 -2
  515. package/dist/esm/bs-progress.entry.js +2 -2
  516. package/dist/esm/bs-qr-code.entry.js +1 -1
  517. package/dist/esm/bs-radio-group.entry.js +1 -1
  518. package/dist/esm/bs-radio.entry.js +1 -1
  519. package/dist/esm/bs-search-item.entry.js +1 -1
  520. package/dist/esm/bs-select.entry.js +1 -1
  521. package/dist/esm/bs-session-timeout.entry.js +1 -1
  522. package/dist/esm/bs-shortcut-row.entry.js +1 -1
  523. package/dist/esm/bs-skip-link.entry.js +1 -1
  524. package/dist/esm/bs-slider.entry.js +1 -1
  525. package/dist/esm/bs-snackbar.entry.js +1 -1
  526. package/dist/esm/bs-source-link.entry.js +3 -3
  527. package/dist/esm/bs-split-pane.entry.js +27 -2
  528. package/dist/esm/bs-stack.entry.js +1 -1
  529. package/dist/esm/bs-stat.entry.js +1 -1
  530. package/dist/esm/bs-stepper-step.entry.js +1 -1
  531. package/dist/esm/bs-stepper.entry.js +1 -1
  532. package/dist/esm/bs-switch.entry.js +1 -1
  533. package/dist/esm/bs-tab_3.entry.js +3 -3
  534. package/dist/esm/bs-table-of-contents.entry.js +1 -1
  535. package/dist/esm/bs-tag.entry.js +2 -2
  536. package/dist/esm/bs-text.entry.js +1 -1
  537. package/dist/esm/bs-timepicker.entry.js +2 -2
  538. package/dist/esm/bs-toast.entry.js +1 -1
  539. package/dist/esm/bs-toggle-button-group.entry.js +1 -1
  540. package/dist/esm/bs-toggle-button.entry.js +9 -1
  541. package/dist/esm/bs-toolbar.entry.js +1 -1
  542. package/dist/esm/bs-tooltip-trigger.entry.js +1 -1
  543. package/dist/esm/bs-tooltip.entry.js +1 -1
  544. package/dist/esm/bs-tree-item.entry.js +2 -2
  545. package/dist/esm/bs-tree.entry.js +1 -1
  546. package/dist/esm/loader.js +1 -1
  547. package/dist/types/components/bs-chip/bs-chip-informative/bs-chip-informative.d.ts +29 -5
  548. package/dist/types/components/bs-chip/bs-chip-informative/bs-chip-informative.stories.d.ts +2 -0
  549. package/dist/types/components/bs-data-table/bs-data-table.d.ts +2 -0
  550. package/dist/types/components/bs-input/bs-input.d.ts +3 -0
  551. package/dist/types/components/bs-progress/bs-progress.stories.d.ts +1 -0
  552. package/dist/types/components/bs-progress-linear/bs-progress-linear.stories.d.ts +1 -0
  553. package/dist/types/components/bs-split-pane/bs-split-pane.d.ts +3 -0
  554. package/dist/types/components/bs-tag/bs-tag.d.ts +4 -0
  555. package/dist/types/components/bs-toggle-button/bs-toggle-button.d.ts +1 -0
  556. package/dist/types/components/tokens/tokens.stories.d.ts +12 -0
  557. package/dist/types/components.d.ts +129 -16
  558. package/dist/types/play-utils.d.ts +6 -0
  559. package/dist/types/raw-css.d.ts +4 -0
  560. package/package.json +1 -1
  561. package/reference.d.ts +1 -1
  562. package/reference.json +6 -1
  563. package/dist/brandsync-wc/p-06277bb8.entry.js +0 -1
  564. package/dist/brandsync-wc/p-0d3d56ef.entry.js +0 -1
  565. package/dist/brandsync-wc/p-4865d4e1.entry.js +0 -1
  566. package/dist/brandsync-wc/p-48ce098c.entry.js +0 -1
  567. package/dist/brandsync-wc/p-6f0b5a91.entry.js +0 -1
  568. package/dist/brandsync-wc/p-80feac7e.entry.js +0 -1
  569. package/dist/brandsync-wc/p-99db8fca.entry.js +0 -1
  570. package/dist/brandsync-wc/p-bcb1730e.entry.js +0 -1
  571. package/dist/components/p-BCbaDQnq.js +0 -1
  572. package/dist/components/p-BoAmKy-C.js +0 -1
  573. package/dist/components/p-CkQ7TJdL.js +0 -1
  574. package/dist/components/p-Cz7CuNiM.js +0 -1
  575. package/dist/components/p-DE2x8-lX.js +0 -1
  576. package/dist/components/p-U9f09E0n.js +0 -1
@@ -40,4 +40,48 @@ describe('bs-chip-informative', () => {
40
40
  const { root } = await render(h("bs-chip-informative", null, "Active"));
41
41
  expect(root).toHaveTextContent('Active');
42
42
  });
43
+ describe('removable and href (replaces bs-tag)', () => {
44
+ const removeBtn = (root) => root.shadowRoot.querySelector('[part="remove"]');
45
+ it('is non-interactive by default: no remove button and no link', async () => {
46
+ const { root } = await render(h("bs-chip-informative", null, "Label"));
47
+ expect(removeBtn(root)).toBeNull();
48
+ expect(root.shadowRoot.querySelector('a')).toBeNull();
49
+ expect(root.shadowRoot.querySelector('[part="label"]').tagName).toBe('SPAN');
50
+ });
51
+ it('removable renders a named remove button, reflects the attribute and emits bsRemove on click', async () => {
52
+ const { root, spyOnEvent, waitForChanges } = await render(h("bs-chip-informative", { removable: true }, "Design"));
53
+ await waitForChanges();
54
+ expect(root).toHaveAttribute('removable');
55
+ expect(removeBtn(root).ariaLabel).toBe('Remove Design');
56
+ const spy = spyOnEvent('bsRemove');
57
+ removeBtn(root).click();
58
+ expect(spy).toHaveReceivedEventTimes(1);
59
+ });
60
+ it('removeLabel changes the prefix of the remove button name', async () => {
61
+ const { root, waitForChanges } = await render(h("bs-chip-informative", { removable: true, removeLabel: "Fjern" }, "Design"));
62
+ await waitForChanges();
63
+ expect(removeBtn(root).ariaLabel).toBe('Fjern Design');
64
+ });
65
+ it('href renders a real link, and target="_blank" adds rel="noopener noreferrer"', async () => {
66
+ const { root } = await render(h("bs-chip-informative", { href: "/topics/design", target: "_blank" }, "Design"));
67
+ const a = root.shadowRoot.querySelector('a[part="label"]');
68
+ expect(a).not.toBeNull();
69
+ expect(a.getAttribute('href')).toBe('/topics/design');
70
+ expect(a.getAttribute('rel')).toBe('noopener noreferrer');
71
+ });
72
+ it('can be a link and removable at the same time', async () => {
73
+ const { root } = await render(h("bs-chip-informative", { href: "#x", removable: true }, "Design"));
74
+ expect(root.shadowRoot.querySelector('a[part="label"]')).not.toBeNull();
75
+ expect(removeBtn(root)).not.toBeNull();
76
+ });
77
+ it('disabled is never a link, and its remove button is disabled and emits nothing', async () => {
78
+ const { root, spyOnEvent, waitForChanges } = await render(h("bs-chip-informative", { disabled: true, href: "#x", removable: true }, "Design"));
79
+ await waitForChanges();
80
+ expect(root.shadowRoot.querySelector('a')).toBeNull();
81
+ expect(removeBtn(root).disabled).toBe(true);
82
+ const spy = spyOnEvent('bsRemove');
83
+ removeBtn(root).shadowRoot.querySelector('button').click();
84
+ expect(spy).not.toHaveReceivedEvent();
85
+ });
86
+ });
43
87
  });
@@ -20,6 +20,10 @@
20
20
  * @prop --bs-chip-informative-font-size: Aliased to --bs-font-size-sm (size="md"/"lg").
21
21
  * @prop --bs-chip-informative-line-height: Aliased to --bs-line-height-body-sm (size="md"/"lg").
22
22
  * @prop --bs-chip-informative-font-weight: Aliased to --bs-font-weight-regular.
23
+ * @prop --bs-chip-informative-padding-right-removable: Right-edge padding when `removable` (the remove
24
+ * button supplies its own visual padding). Aliased to --bs-spacing-50.
25
+ * @prop --bs-chip-informative-focus-ring: Focus ring colour of the link label. Aliased to
26
+ * --bs-border-neutral-focus.
23
27
  *
24
28
  * Color (background/text per color/disabled) comes directly from brandsync-tokens' own pre-built
25
29
  * chip token set below -- shared across the whole bs-chip family, not local to this component,
@@ -48,6 +52,8 @@
48
52
  --bs-chip-informative-font-size: var(--bs-font-size-sm);
49
53
  --bs-chip-informative-line-height: var(--bs-line-height-body-sm);
50
54
  --bs-chip-informative-font-weight: var(--bs-font-weight-regular);
55
+ --bs-chip-informative-padding-right-removable: var(--bs-spacing-50);
56
+ --bs-chip-informative-focus-ring: var(--bs-border-neutral-focus);
51
57
  }
52
58
 
53
59
  :host(.bs-chip-informative--lg) {
@@ -78,6 +84,10 @@
78
84
  padding-inline-end: var(--bs-chip-informative-padding-x-plain-side);
79
85
  }
80
86
 
87
+ :host(.bs-chip-informative--removable) {
88
+ padding-inline-end: var(--bs-chip-informative-padding-right-removable);
89
+ }
90
+
81
91
  .bs-chip-informative__icon {
82
92
  display: none;
83
93
  flex-shrink: 0;
@@ -102,6 +112,26 @@
102
112
  align-items: center;
103
113
  }
104
114
 
115
+ .bs-chip-informative__label--link {
116
+ color: inherit;
117
+ text-decoration: underline;
118
+ border-radius: var(--bs-border-radius-50);
119
+ }
120
+
121
+ .bs-chip-informative__label--link:hover {
122
+ text-decoration-thickness: 2px;
123
+ }
124
+
125
+ .bs-chip-informative__label--link:focus-visible {
126
+ outline: 2px solid var(--bs-chip-informative-focus-ring);
127
+ outline-offset: 2px;
128
+ }
129
+
130
+ .bs-chip-informative__remove {
131
+ flex-shrink: 0;
132
+ color: inherit;
133
+ }
134
+
105
135
  :host(.bs-chip-informative--neutral) {
106
136
  background: var(--bs-chip-bg-neutral-container);
107
137
  color: var(--bs-chip-text-neutral);
@@ -1,21 +1,28 @@
1
1
  import { Host, h } from "@stencil/core";
2
2
  /**
3
- * A pill-shaped, non-interactive label for conveying a category or status at a glance, optionally
4
- * paired with a leading icon. Unlike `bs-chip-filter`/`bs-chip-input`, this is purely informational
5
- * -- no click/select/remove behavior, no hover/focus/pressed states.
3
+ * A pill-shaped label for conveying a category or status at a glance, optionally paired with a
4
+ * leading icon. By default it is purely informational -- no click/select behavior, no
5
+ * hover/focus/pressed states. Two opt-ins cover what used to need a separate `bs-tag`: `removable`
6
+ * adds a remove button (`bsRemove`), and `href` turns the label into a link.
6
7
  *
7
8
  * ## When to use
8
9
  * - Conveying a category or status inline with other content, with more color options and an
9
10
  * optional icon than `bs-badge` offers.
11
+ * - Metadata on a record (topics, keywords, owners) that can be removed one by one (`removable`) or
12
+ * that leads to a filtered view or detail page (`href`).
10
13
  *
11
14
  * ## When not to use
12
- * - Anything clickable/selectable -- use `bs-chip-filter`.
15
+ * - Toggling a filter on and off -- use `bs-chip-filter`; entering free-text values -- use
16
+ * `bs-chip-input`.
13
17
  * - A short, fixed status label with no color/icon needs -- `bs-badge` is the simpler choice.
14
18
  *
19
+ * **Built from:** `bs-icon-button` (the remove control, `size="xs"`).
20
+ *
15
21
  * @slot - Default slot: the chip's label content.
16
22
  * @slot icon - Optional leading icon.
17
23
  * @part icon - The icon wrapper element.
18
- * @part label - The text label element.
24
+ * @part label - The text label element (a link when `href` is set).
25
+ * @part remove - The remove button (`bs-icon-button`), only when `removable`.
19
26
  */
20
27
  export class BsChipInformative {
21
28
  el;
@@ -30,12 +37,37 @@ export class BsChipInformative {
30
37
  /** Overrides `color` with the disabled token set, regardless of its value. Reflected so
31
38
  * `:host([disabled])` can apply it in CSS. */
32
39
  disabled = false;
40
+ /** Shows a remove button that emits `bsRemove`. The consumer removes the element. Off by default,
41
+ * so a plain chip stays non-interactive. */
42
+ removable = false;
43
+ /** Turns the label into a link to this URL. Ignored while `disabled`. */
44
+ href;
45
+ /** Link target, only used with `href`. `_blank` also sets `rel="noopener noreferrer"`. */
46
+ target;
47
+ /** Prefix of the remove button's accessible name ("Remove {label}"). */
48
+ removeLabel = 'Remove';
49
+ /** Fires when the remove button is activated, only when `removable`. No payload; the consumer
50
+ * removes the chip. Move focus somewhere sensible in your handler -- it is lost with the element. */
51
+ bsRemove;
33
52
  /** Tracks whether the `icon` slot has assigned content, so the icon/label gap and left-edge
34
53
  * padding only apply when there's actually a leading icon. */
35
54
  hasIcon = false;
55
+ /** The label's text, used for the remove button's accessible name. */
56
+ labelText = '';
36
57
  componentWillLoad() {
37
58
  this.hasIcon = this.hasSlottedContent('icon');
59
+ this.labelText = this.readLabel();
60
+ }
61
+ readLabel() {
62
+ return Array.from(this.el.childNodes)
63
+ .filter(n => !(n.nodeType === Node.ELEMENT_NODE && n.hasAttribute('slot')))
64
+ .map(n => n.textContent || '')
65
+ .join('')
66
+ .trim();
38
67
  }
68
+ onRemove = () => {
69
+ this.bsRemove.emit();
70
+ };
39
71
  hasSlottedContent(slotName) {
40
72
  return Array.from(this.el.childNodes).some(node => node.nodeType === Node.ELEMENT_NODE && node.getAttribute('slot') === slotName);
41
73
  }
@@ -44,7 +76,10 @@ export class BsChipInformative {
44
76
  };
45
77
  render() {
46
78
  const paddingVariant = this.hasIcon ? 'icon' : 'text';
47
- return (h(Host, { key: 'd44cc865c85a33561d688c16ba73f325d42b5dd9', class: `bs-chip-informative bs-chip-informative--${this.color} bs-chip-informative--${this.size} bs-chip-informative--${paddingVariant}`, "aria-disabled": this.disabled ? 'true' : undefined }, h("span", { key: '287ae0812ffdb137d42c23ec1423a2939c57d316', part: "icon", class: `bs-chip-informative__icon ${this.hasIcon ? 'bs-chip-informative__icon--visible' : ''}` }, h("slot", { key: 'fbb9a6bd70dccc1873e77872a0b636acb2cbcd47', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'f4e3bc9305c5698b131da8724518d3fffd02d822', part: "label", class: "bs-chip-informative__label" }, h("slot", { key: 'ee13386ec9bf45e425b724bfbd0f9030f926fe79' }))));
79
+ const isLink = !!this.href && !this.disabled;
80
+ const rel = isLink && this.target === '_blank' ? 'noopener noreferrer' : undefined;
81
+ const label = h("slot", { key: 'ef28047f16d39f511b22c44dc8d5fed7031d2f42', onSlotchange: () => (this.labelText = this.readLabel()) });
82
+ return (h(Host, { key: '1efcc6d4f937ca210e938e6c6d146ed190f9a9c7', class: `bs-chip-informative bs-chip-informative--${this.color} bs-chip-informative--${this.size} bs-chip-informative--${paddingVariant} ${this.removable ? 'bs-chip-informative--removable' : ''}`, "aria-disabled": this.disabled ? 'true' : undefined }, h("span", { key: 'fd333a339d4cea6ff26362d9b583de0ae58b2d97', part: "icon", class: `bs-chip-informative__icon ${this.hasIcon ? 'bs-chip-informative__icon--visible' : ''}` }, h("slot", { key: '1b24fa6d1144ae046e7e63a61bec7197ad146626', name: "icon", onSlotchange: this.onIconSlotchange })), isLink ? (h("a", { part: "label", class: "bs-chip-informative__label bs-chip-informative__label--link", href: this.href, target: this.target, rel: rel }, label)) : (h("span", { part: "label", class: "bs-chip-informative__label" }, label)), this.removable && (h("bs-icon-button", { key: '907d4095f2fb64ee3d3d928c7ff41cacb1656911', part: "remove", class: "bs-chip-informative__remove", size: "xs", variant: "subtle", disabled: this.disabled, ariaLabel: `${this.removeLabel} ${this.labelText}`.trim(), onClick: this.onRemove }, h("svg", { key: '7ff06d4309db7e3462600bb8e620b6092d55ba66', viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { key: '8bff2d547b88bdb5a240a13a82f71a0f3345ba59', 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" }))))));
48
83
  }
49
84
  static get is() { return "bs-chip-informative"; }
50
85
  static get encapsulation() { return "shadow"; }
@@ -131,13 +166,110 @@ export class BsChipInformative {
131
166
  "reflect": true,
132
167
  "attribute": "disabled",
133
168
  "defaultValue": "false"
169
+ },
170
+ "removable": {
171
+ "type": "boolean",
172
+ "mutable": false,
173
+ "complexType": {
174
+ "original": "boolean",
175
+ "resolved": "boolean",
176
+ "references": {}
177
+ },
178
+ "required": false,
179
+ "optional": false,
180
+ "docs": {
181
+ "tags": [],
182
+ "text": "Shows a remove button that emits `bsRemove`. The consumer removes the element. Off by default,\nso a plain chip stays non-interactive."
183
+ },
184
+ "getter": false,
185
+ "setter": false,
186
+ "reflect": true,
187
+ "attribute": "removable",
188
+ "defaultValue": "false"
189
+ },
190
+ "href": {
191
+ "type": "string",
192
+ "mutable": false,
193
+ "complexType": {
194
+ "original": "string",
195
+ "resolved": "string",
196
+ "references": {}
197
+ },
198
+ "required": false,
199
+ "optional": true,
200
+ "docs": {
201
+ "tags": [],
202
+ "text": "Turns the label into a link to this URL. Ignored while `disabled`."
203
+ },
204
+ "getter": false,
205
+ "setter": false,
206
+ "reflect": false,
207
+ "attribute": "href"
208
+ },
209
+ "target": {
210
+ "type": "string",
211
+ "mutable": false,
212
+ "complexType": {
213
+ "original": "string",
214
+ "resolved": "string",
215
+ "references": {}
216
+ },
217
+ "required": false,
218
+ "optional": true,
219
+ "docs": {
220
+ "tags": [],
221
+ "text": "Link target, only used with `href`. `_blank` also sets `rel=\"noopener noreferrer\"`."
222
+ },
223
+ "getter": false,
224
+ "setter": false,
225
+ "reflect": false,
226
+ "attribute": "target"
227
+ },
228
+ "removeLabel": {
229
+ "type": "string",
230
+ "mutable": false,
231
+ "complexType": {
232
+ "original": "string",
233
+ "resolved": "string",
234
+ "references": {}
235
+ },
236
+ "required": false,
237
+ "optional": false,
238
+ "docs": {
239
+ "tags": [],
240
+ "text": "Prefix of the remove button's accessible name (\"Remove {label}\")."
241
+ },
242
+ "getter": false,
243
+ "setter": false,
244
+ "reflect": false,
245
+ "attribute": "remove-label",
246
+ "defaultValue": "'Remove'"
134
247
  }
135
248
  };
136
249
  }
137
250
  static get states() {
138
251
  return {
139
- "hasIcon": {}
252
+ "hasIcon": {},
253
+ "labelText": {}
140
254
  };
141
255
  }
256
+ static get events() {
257
+ return [{
258
+ "method": "bsRemove",
259
+ "name": "bsRemove",
260
+ "bubbles": true,
261
+ "cancelable": true,
262
+ "composed": true,
263
+ "docs": {
264
+ "tags": [],
265
+ "text": "Fires when the remove button is activated, only when `removable`. No payload; the consumer\nremoves the chip. Move focus somewhere sensible in your handler -- it is lost with the element."
266
+ },
267
+ "complexType": {
268
+ "original": "void",
269
+ "resolved": "void",
270
+ "references": {}
271
+ }
272
+ }];
273
+ }
142
274
  static get elementRef() { return "el"; }
143
275
  }
@@ -47,6 +47,13 @@ export const WithIcon = {
47
47
  export const Disabled = {
48
48
  args: { disabled: true },
49
49
  };
50
+ export const Removable = {
51
+ render: args => html ` <bs-chip-informative color=${args.color} size=${args.size} ?disabled=${args.disabled} removable>${args.label}</bs-chip-informative> `,
52
+ };
53
+ export const AsLink = {
54
+ name: 'As link',
55
+ render: args => html ` <bs-chip-informative color=${args.color} size=${args.size} ?disabled=${args.disabled} href="#topic">${args.label}</bs-chip-informative> `,
56
+ };
50
57
  export const Small = {
51
58
  args: { size: 'sm' },
52
59
  };
@@ -80,7 +80,7 @@ export class BsChipInput {
80
80
  };
81
81
  render() {
82
82
  const paddingVariant = this.hasIcon ? 'icon' : 'text';
83
- return (h(Host, { key: '15fae1671d90d277794f39e32920c890b34d44d7', class: `bs-chip-input bs-chip-input--${this.size} bs-chip-input--${paddingVariant}` }, h("button", { key: '5961600e9394099821e8e33edc7de71cf6a1ad9b', type: "button", part: "body", class: "bs-chip-input__body", disabled: this.disabled, "aria-pressed": String(this.selected), onClick: this.onBodyClick }, h("bs-ripple", { key: 'c1c90c8d5ab81d0c23edb4b4596e68b384aa8b0c', part: "ripple", centered: false, disabled: this.disabled }), h("span", { key: 'e6fd75f8cb1d8b8802a2d64e0852ebcaeefaa187', part: "icon", class: `bs-chip-input__icon ${this.hasIcon ? 'bs-chip-input__icon--visible' : ''}` }, h("slot", { key: '42997a9d073a6fab53fd23136115592cf71a62a4', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'd319b4e1e40d2486482866dbf8aa3717c4b0ee7f', part: "label", class: "bs-chip-input__label" }, h("slot", { key: '6cc26505fad8432f85df93ba4f764fcdc0489eaf', onSlotchange: this.onLabelSlotchange }))), h("button", { key: 'd78649e00740738908ccbdc268720dee41340cf9', type: "button", part: "remove", class: "bs-chip-input__remove", disabled: this.disabled, "aria-label": `${this.removeLabel} ${this.labelText}`, onClick: this.onRemoveClick }, h("bs-ripple", { key: 'dff2a2d6b215262f03bc36e34e0e083a7cf22e90', part: "ripple", centered: true, disabled: this.disabled }), h(CloseIcon, { key: 'b3b0ad0dbf5335c9225dcbbc5ed04f9960900c0e' }))));
83
+ return (h(Host, { key: '138a3e7ee6dc966c580f664ec184466f71272f11', class: `bs-chip-input bs-chip-input--${this.size} bs-chip-input--${paddingVariant}` }, h("button", { key: '6d81c76a47b8a4f5d410f62da65bc21fd73ab326', type: "button", part: "body", class: "bs-chip-input__body", disabled: this.disabled, "aria-pressed": String(this.selected), onClick: this.onBodyClick }, h("bs-ripple", { key: 'd625ac5a1c658215730aa694b69e426a3f17e138', part: "ripple", centered: false, disabled: this.disabled }), h("span", { key: 'd073ce98fe4a7ad884c055da57ccab870337f468', part: "icon", class: `bs-chip-input__icon ${this.hasIcon ? 'bs-chip-input__icon--visible' : ''}` }, h("slot", { key: 'fc9323f052532e20e443ec52d36f7343a5438148', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '0e174e2a29afbaff6e6468e9b0e1fc17d1e59fbf', part: "label", class: "bs-chip-input__label" }, h("slot", { key: 'a1c9457b41944c59dc49666361eeae0f2dceedb0', onSlotchange: this.onLabelSlotchange }))), h("button", { key: '981a4d06c8fce2ee6ca3a01adb438eaa95652aac', type: "button", part: "remove", class: "bs-chip-input__remove", disabled: this.disabled, "aria-label": `${this.removeLabel} ${this.labelText}`, onClick: this.onRemoveClick }, h("bs-ripple", { key: '8946515916aaedcd3d73961be2e9534e57ab0e17', part: "ripple", centered: true, disabled: this.disabled }), h(CloseIcon, { key: '2f67baae389fc4fbfaa29f4e6c720a2e02a8c8c4' }))));
84
84
  }
85
85
  static get is() { return "bs-chip-input"; }
86
86
  static get encapsulation() { return "shadow"; }
@@ -38,7 +38,7 @@ export class BsCitationPreview {
38
38
  bsOpen;
39
39
  render() {
40
40
  const hasPage = this.page !== undefined && this.page !== null && this.page !== '';
41
- return (h("bs-card", { key: '87d8ef821fbdfe846de40a2d74287e757d4d98c6', part: "container", class: "bs-citation-preview", surface: "base" }, h("div", { key: 'edecc65323eb56ec502e4f6242376d9ca535b08b', class: "bs-citation-preview__body" }, h("bs-source-link", { key: 'a00f41ef78e294f5009e2182bc0db921137d2322', part: "header", fileName: this.fileName, sourceName: this.sourceName, href: this.href, onBsOpen: () => this.bsOpen.emit() }), h("div", { key: 'c37e3ae17dc1835461ebc53002b9e596930cfaae', part: "snippet", class: "bs-citation-preview__snippet" }, h("slot", { key: '12ec7437fe56aa736d8ae751bed7a77109044071' })), h("div", { key: '3c2b6b1c2bf1802b835812a65865f25917b43868', class: "bs-citation-preview__footer" }, h("slot", { key: '49614ce08f91e86cacd6881b4e02f6c6cdf8046b', name: "footer" }, hasPage && (h("span", { key: '98fac4f066e02be5d7909756b1fdb6e37105b06e', part: "page", class: "bs-citation-preview__page" }, "Page ", this.page)))))));
41
+ return (h("bs-card", { key: '4cd2544f4f2432c805caa775406c96dae7561452', part: "container", class: "bs-citation-preview", surface: "base" }, h("div", { key: '6d71dc9004e751fca3cd0d2af1d480f812e1bb9c', class: "bs-citation-preview__body" }, h("bs-source-link", { key: 'c089f659de271f201cbedb3b1661f11cad7daabb', part: "header", fileName: this.fileName, sourceName: this.sourceName, href: this.href, onBsOpen: () => this.bsOpen.emit() }), h("div", { key: '3010095752fb0cb0e695c12c378893b4973ec556', part: "snippet", class: "bs-citation-preview__snippet" }, h("slot", { key: '04c9331812a9b9e23c0cd9eb08e52c516a0f4156' })), h("div", { key: '10d6028902c212b166810b0ef8f79e04a863d59b', class: "bs-citation-preview__footer" }, h("slot", { key: '90108dc123a1b105e81094999660b768083edcbd', name: "footer" }, hasPage && (h("span", { key: '2f3f69d2ea1b59cde085cadc737d38c655b9b1db', part: "page", class: "bs-citation-preview__page" }, "Page ", this.page)))))));
42
42
  }
43
43
  static get is() { return "bs-citation-preview"; }
44
44
  static get encapsulation() { return "shadow"; }
@@ -393,7 +393,7 @@ export class BsCommandPalette {
393
393
  const sections = this.shownSections().filter(s => this.filled[s]);
394
394
  const hasList = sections.length > 0;
395
395
  const showResults = loading || empty || hasList;
396
- return (h("dialog", { key: '664b76ce5f0466f35a0d75aba0f49600dfcba6ba', ref: el => (this.dialogEl = el), part: "dialog", class: "bs-command-palette", "aria-label": this.label, "aria-modal": "true", role: "dialog", onCancel: this.onCancel, onClose: () => this.open && this.setOpen(false), onClick: this.onDialogClick, onKeyDown: this.onDialogKeyDown }, h("div", { key: 'fe4e085c97b20ff85a8a2a7d1573b76cdfa102e6', part: "panel", class: "bs-command-palette__panel" }, h("div", { key: '398c5d4d9941ad6701733c170f87d4eef77a8bc9', part: "search", class: "bs-command-palette__search" }, this.scopeLabel && (h("bs-chip-informative", { key: 'bef7179a406e7870b67c7056d76d71c29e685c18', class: "bs-command-palette__scope", color: "info" }, this.scopeLabel)), h("div", { key: '64f7a2f90e696d2dfbefa73c7fcac4baeb1e3d66', class: "bs-command-palette__field", ref: el => (this.comboEl = el), role: "combobox", "aria-label": this.placeholder, "aria-expanded": String(hasList), "aria-haspopup": "listbox", "aria-controls": hasList ? listId : undefined, onKeyDown: this.onKeyDown }, h("bs-input", { key: 'dbc847385e89117d3756af9940afe3ee6af683ef', part: "input", ref: el => (this.inputEl = el), type: "search", value: this.value, placeholder: this.placeholder, onBsInput: this.onInput })), h("span", { key: '525119e7dda244394c2f54116ea27246390fe2a2', class: "bs-command-palette__esc", "aria-hidden": "true" }, h("bs-key", { key: 'c6172bc9bacb7e8001fa8b8a29c57cbea8cdc18b', label: "Esc" }))), showResults && h("div", { key: '0962bd70a0b883facafcf68180ab9f9c7bae3684', class: "bs-command-palette__divider", role: "presentation" }), showResults && (h("div", { key: '454715382ba589366df9c6b1b3964d8a79d47b2b', part: "results", class: "bs-command-palette__results", "aria-busy": String(loading), onMouseOver: this.onResultsMouseOver }, loading && (h("div", { key: '236e33c68396fa11b7701528f4de539d72f09000', class: "bs-command-palette__loading", role: "status" }, h("bs-spinner", { key: 'f028777638b9c0e3abae0011c2e572f027412efa', size: "sm" }), h("span", { key: '5656e7a12e0593de16e1c5bf7ff3d2e924f655ad' }, this.loadingLabel))), empty && this.renderEmpty(), hasList && (h("div", { key: '58033f868ecb4285748616d6cb7e3d95b5d8db68', id: listId, class: "bs-command-palette__list", role: "listbox", "aria-label": this.listLabel }, sections.map(s => this.renderSection(s)))))), this.showFooter && this.renderFooter()), h("span", { key: 'c9b46f7ce8a76f4b48776bf88f1e58242fb71ebf', class: "bs-command-palette__live", "aria-live": "polite" }, this.announcement())));
396
+ return (h("dialog", { key: '14f738dbfc997dd3a0e5c763659198ff4bb95529', ref: el => (this.dialogEl = el), part: "dialog", class: "bs-command-palette", "aria-label": this.label, "aria-modal": "true", role: "dialog", onCancel: this.onCancel, onClose: () => this.open && this.setOpen(false), onClick: this.onDialogClick, onKeyDown: this.onDialogKeyDown }, h("div", { key: '2763bfb126b06706973e82411a50d81186398660', part: "panel", class: "bs-command-palette__panel" }, h("div", { key: '662b84e505270a77b519b2ba44869b39ded8b118', part: "search", class: "bs-command-palette__search" }, this.scopeLabel && (h("bs-chip-informative", { key: '129c0e4b8d442c47fcdb63c706e6a8afd204d15b', class: "bs-command-palette__scope", color: "info" }, this.scopeLabel)), h("div", { key: '2df2f5b194a3089af079e13b42146cc6042fed7d', class: "bs-command-palette__field", ref: el => (this.comboEl = el), role: "combobox", "aria-label": this.placeholder, "aria-expanded": String(hasList), "aria-haspopup": "listbox", "aria-controls": hasList ? listId : undefined, onKeyDown: this.onKeyDown }, h("bs-input", { key: '9bbb0fb5338b4a897c01becd9c06c19537abd4ea', part: "input", ref: el => (this.inputEl = el), type: "search", value: this.value, placeholder: this.placeholder, onBsInput: this.onInput })), h("span", { key: '1fb9c6bf593b2bd2a3d86f5fef51119fc76ad545', class: "bs-command-palette__esc", "aria-hidden": "true" }, h("bs-key", { key: '37fbede6ae45c725e6b3097a3cdd8a3985f0b7ee', label: "Esc" }))), showResults && h("div", { key: '99b59b7f2ac6762f5a638dd084420332bbe95391', class: "bs-command-palette__divider", role: "presentation" }), showResults && (h("div", { key: '18a22c3d45ec4c84990ca9a87fb3cf76ccdb7552', part: "results", class: "bs-command-palette__results", "aria-busy": String(loading), onMouseOver: this.onResultsMouseOver }, loading && (h("div", { key: 'c4246fa469a4bd9556db418cea6f763630d0907a', class: "bs-command-palette__loading", role: "status" }, h("bs-spinner", { key: 'f7658c22dceb48bc4c4f1265b7f4618ace5e12a7', size: "sm" }), h("span", { key: '03bf1c7a43b99d45cd8630f1dc628f258583a4a6' }, this.loadingLabel))), empty && this.renderEmpty(), hasList && (h("div", { key: '10af576c2d8ae003e372bc1d60d1c399c8bd40b5', id: listId, class: "bs-command-palette__list", role: "listbox", "aria-label": this.listLabel }, sections.map(s => this.renderSection(s)))))), this.showFooter && this.renderFooter()), h("span", { key: '5f078c4477ccabd8620bc67de7a0c071987416f3', class: "bs-command-palette__live", "aria-live": "polite" }, this.announcement())));
397
397
  }
398
398
  static get is() { return "bs-command-palette"; }
399
399
  static get encapsulation() { return "shadow"; }
@@ -27,7 +27,7 @@ export class BsCompactMenuBlock {
27
27
  name;
28
28
  render() {
29
29
  const common = { part: 'container', class: 'bs-compact-menu-block' };
30
- return (h("button", { key: 'e97588e286f39cdd4d61e8bee3ec91ae192242c2', ...common, type: "button" }, this.name));
30
+ return (h("button", { key: 'ef2215a64dfd1aa73db75b5352a9caa564978802', ...common, type: "button" }, this.name));
31
31
  }
32
32
  static get is() { return "bs-compact-menu-block"; }
33
33
  static get encapsulation() { return "shadow"; }
@@ -234,10 +234,10 @@ export class BsCompanySwitcher {
234
234
  const empty = !!this.q && groups.length === 0;
235
235
  const listId = `${this.id}-listbox`;
236
236
  const total = groups.reduce((n, g) => n + g.items.length, 0);
237
- return (h("bs-popover", { key: '48e99f7fe5b6f6fbb7d70f30eb11d929e3e93ae6', class: "bs-company-switcher", open: this.open, placement: "bottom-start", onBsOpenChange: this.onPopoverOpenChange }, this.renderTrigger(), h("bs-card", { key: 'b14bd8f8c3e0666c4526b3ab7bb45be674def1ee', part: "panel", class: "bs-company-switcher__panel", surface: "base" }, h("div", { key: '0a1874d70f6702be9a159415597a58ed59cefac4', class: "bs-company-switcher__search", onMouseDown: (ev) => ev.preventDefault() }, h("div", { key: 'd1d3cd795aec21ccf0e2acb2ac05fbf51dc49a73', part: "search", role: "combobox", "aria-label": this.searchPlaceholder, "aria-expanded": groups.length ? 'true' : 'false', "aria-haspopup": "listbox", "aria-controls": groups.length ? listId : undefined, "aria-activedescendant": this.activeId ?? undefined, onKeyDown: this.onKeyDown }, h("bs-input", { key: '84868f1a5641c314d5777dea0a0edc6e2d723328', ref: el => (this.inputEl = el), type: "search", value: this.query, placeholder: this.searchPlaceholder, onBsInput: this.onInput }))), groups.length > 0 && (h("div", { key: 'fe8bc69ac3f65664b33dbe2c3ee2700c96b1703b', id: listId, part: "list", class: "bs-company-switcher__list", role: "listbox", "aria-label": this.listLabel, onMouseDown: (ev) => ev.preventDefault(), onMouseLeave: () => (this.activeId = null) }, groups.map(g => {
237
+ return (h("bs-popover", { key: 'b0eec2cc5ce7574933ef80e1fd8a6faf8ca340cb', class: "bs-company-switcher", open: this.open, placement: "bottom-start", onBsOpenChange: this.onPopoverOpenChange }, this.renderTrigger(), h("bs-card", { key: '0f68df42724c5b4561c991ffe0fab1571292472a', part: "panel", class: "bs-company-switcher__panel", surface: "base" }, h("div", { key: '03bcc888d4dbef3d18e58ac12953e0cfdcafc219', class: "bs-company-switcher__search", onMouseDown: (ev) => ev.preventDefault() }, h("div", { key: 'b1e9a44d67ed0237a0860285cb766b9f0ceaa8b0', part: "search", role: "combobox", "aria-label": this.searchPlaceholder, "aria-expanded": groups.length ? 'true' : 'false', "aria-haspopup": "listbox", "aria-controls": groups.length ? listId : undefined, "aria-activedescendant": this.activeId ?? undefined, onKeyDown: this.onKeyDown }, h("bs-input", { key: '33f3b85bcbe1b4e5e999d8b71a4699165e94c6db', ref: el => (this.inputEl = el), type: "search", value: this.query, placeholder: this.searchPlaceholder, onBsInput: this.onInput }))), groups.length > 0 && (h("div", { key: 'ca4ea82856f25a754d9da32b3bea39172e98d07c', id: listId, part: "list", class: "bs-company-switcher__list", role: "listbox", "aria-label": this.listLabel, onMouseDown: (ev) => ev.preventDefault(), onMouseLeave: () => (this.activeId = null) }, groups.map(g => {
238
238
  const hid = `${this.id}-h-${g.key}`;
239
239
  return (h("div", { part: "group", class: "bs-company-switcher__group", role: "group", "aria-labelledby": hid }, h("div", { part: "group-header", id: hid, class: "bs-company-switcher__group-header" }, g.header), g.items.map(c => this.renderRow(c))));
240
- }))), empty && (h("bs-empty-state", { key: 'ff3af7847fa2b6355ef464b03d7e2dae9af74e15', part: "empty", class: "bs-company-switcher__empty", heading: this.emptyHeading.replace('{query}', this.query.trim()), description: this.emptyDescription }, h("svg", { key: '43ee6aed173cf88d57bbfd0e92f724d782b15963', slot: "icon", ...svgProps }, h("circle", { key: '4834a47d151c62739bfd2019a4b761b49995d422', cx: "11", cy: "11", r: "7" }), h("path", { key: 'aefafbcdd557cfaf2493558a59a380090b6edc08', d: "m20 20-3.5-3.5" })))), h("bs-divider", { key: '08a39c4e8e5dbaf731579afd4d1e611fe30c361b', class: "bs-company-switcher__divider", decorative: true }), h("div", { key: 'e76be7acc1cde67c5dd3fb59a2033ec3a4d42674', part: "footer", class: "bs-company-switcher__footer" }, h("bs-button", { key: 'a05c921783996a3762635a25f3861ed55692e7b4', variant: "subtle", size: "sm", onClick: () => this.bsManageCompanies.emit() }, h("svg", { key: 'c402e76faa03fb68d303ce0e9dd1eb21c439d66f', slot: "icon", ...svgProps }, h("circle", { key: '27a640d8953fd9541d304c53ead6089a1f433886', cx: "12", cy: "12", r: "3" }), h("path", { key: 'd791ff4ac79664dfd91da361b07e03975e697d09', d: "M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1Z" })), this.manageLabel), h("bs-button", { key: '125ced539bfc749c8bceaa5f3ed1c7dece3a5bde', variant: "subtle", size: "sm", onClick: () => this.bsAddCompanies.emit() }, h("svg", { key: '57af672d2154bcec2698f5885fc1db529d36e83c', slot: "icon", ...svgProps }, h("path", { key: '26ac9276c6a4af2abcb927b29e938ea4c3b93a02', d: "M12 5v14M5 12h14" })), this.addLabel)), h("span", { key: '474d0275c005bdf8c9436eaf8962ee1681c70f6c', class: "bs-company-switcher__live", "aria-live": "polite" }, this.open && this.q ? (empty ? this.emptyHeading.replace('{query}', this.query.trim()) : `${total} ${total === 1 ? this.matchLabel : this.matchesLabel}`) : ''))));
240
+ }))), empty && (h("bs-empty-state", { key: '9d0612d45e3f7e34615a4df33af90898c8f42ad4', part: "empty", class: "bs-company-switcher__empty", heading: this.emptyHeading.replace('{query}', this.query.trim()), description: this.emptyDescription }, h("svg", { key: '269c8cb9cab9e5f1c0f0f46661e2ebb780c35767', slot: "icon", ...svgProps }, h("circle", { key: 'edff5845828ee02a4ca233173d64d305e3a0fff3', cx: "11", cy: "11", r: "7" }), h("path", { key: 'fe598787496866fd7d922609ce5633708f20c8ff', d: "m20 20-3.5-3.5" })))), h("bs-divider", { key: '97a3536b4d4a76ab83e072b69c14a093f8456d14', class: "bs-company-switcher__divider", decorative: true }), h("div", { key: '1b2946a19574798829e4aa2a41741e73158963dd', part: "footer", class: "bs-company-switcher__footer" }, h("bs-button", { key: '4802d08ecbe212ea674205485b5676c2f97c195e', variant: "subtle", size: "sm", onClick: () => this.bsManageCompanies.emit() }, h("svg", { key: '6b4458e279e9f15094dd28e0c394111ab98cf4fe', slot: "icon", ...svgProps }, h("circle", { key: 'd23a66a7b4142c5f5d370b194824b573e667bb4f', cx: "12", cy: "12", r: "3" }), h("path", { key: '76f4741d079f3c3cfd8f18c03c61e88aa2b47196', d: "M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1Z" })), this.manageLabel), h("bs-button", { key: '347c34917288e15a461f3d16eaac077c454d968d', variant: "subtle", size: "sm", onClick: () => this.bsAddCompanies.emit() }, h("svg", { key: '6d701ae30b07de092d93b700d264bbaee166a721', slot: "icon", ...svgProps }, h("path", { key: '2ec0699033facd45aae07a3926db0ccf4113d40f', d: "M12 5v14M5 12h14" })), this.addLabel)), h("span", { key: 'bc4cc1dd886ab4a06afce21fdb670a1fdf46181e', class: "bs-company-switcher__live", "aria-live": "polite" }, this.open && this.q ? (empty ? this.emptyHeading.replace('{query}', this.query.trim()) : `${total} ${total === 1 ? this.matchLabel : this.matchesLabel}`) : ''))));
241
241
  }
242
242
  static get is() { return "bs-company-switcher"; }
243
243
  static get encapsulation() { return "shadow"; }
@@ -234,7 +234,7 @@ export class BsComposer {
234
234
  const placeholder = this.placeholder ?? DEFAULT_PLACEHOLDERS[this.variant];
235
235
  const disabled = this.state === 'disabled';
236
236
  const recording = this.state === 'recording';
237
- return (h("div", { key: '7815de5b26e3b9c1afeb413378f1ead5b6f37353', class: `bs-composer bs-composer--${this.state} bs-composer--${this.variant}` }, h("div", { key: '8c7ecc7606e590cfc2b2c7750d7437610b1c454d', part: "attachments", class: `bs-composer__attachments-row ${this.hasAttachments ? 'bs-composer__attachments-row--visible' : ''}` }, h("slot", { key: '56fe3b213e36289e7f9a0738824e19396dd552c5', name: "attachments", onSlotchange: this.onAttachmentsSlotchange })), h("div", { key: '3a1bd77a1bba71464807832e9746ea40f09d3766', class: "bs-composer__text-row" }, h("textarea", { key: '133470cf3a81530602439f5d6d50969c47da8be2', ref: el => (this.inputEl = el), part: "input", class: "bs-composer__input", rows: 1, value: this.value, placeholder: placeholder, disabled: disabled, maxLength: this.maxLength, "aria-label": this.ariaLabel, onInput: this.onInput, onKeyDown: this.onInputKeydown })), h("div", { key: '0dd2e0ef0a89f300910a422c6e4cdcb2e77034b5', class: "bs-composer__controls-row" }, !this.hideAttach && (h("button", { key: '679d8b7b4d7746478f3e72cdab7ebf4e01971379', type: "button", part: "attach", class: "bs-composer__attach", "aria-label": this.attachLabel, onClick: this.onAttachClick }, h(PlusIcon, { key: '10823628845def9ee1012f3e03835ffd480d1010' }))), recording ? (h("span", { class: "bs-composer__waveform", "aria-hidden": "true" }, WAVEFORM_BAR_HEIGHTS.map(height => (h("span", { class: "bs-composer__waveform-bar", style: { '--bs-composer-bar-height': `${height}px` } }))))) : (h("span", { class: "bs-composer__spacer" })), !this.hideMic && (h("button", { key: 'dcea5fdc083162c99d0deb6b28e4d79ddf27729e', type: "button", part: "mic", class: `bs-composer__mic ${recording ? 'bs-composer__mic--recording' : ''}`, "aria-label": recording ? this.stopRecordingLabel : this.micLabel, disabled: disabled, onClick: this.onMicClick }, recording ? h(StopIcon, null) : h(MicIcon, null))), h("button", { key: '82d6694869eef61d66e92d0eb1b183c5ed086ec0', type: "button", part: "action", class: `bs-composer__action bs-composer__action--${this.state}`, "aria-label": this.actionLabel(), disabled: disabled, "aria-busy": this.loading && this.state === 'idle' ? 'true' : undefined, onClick: this.onActionClick }, this.renderActionIcon()), h("slot", { key: '9691f66fd87500bce4f9abc9da7d3b27994cf47f', name: "actions-end" }))));
237
+ return (h("div", { key: '1b2b2a80e3cc3838921c2353f94142c43136ea96', class: `bs-composer bs-composer--${this.state} bs-composer--${this.variant}` }, h("div", { key: 'ab827001a719251a3844d228cae2f3e2ad44646f', part: "attachments", class: `bs-composer__attachments-row ${this.hasAttachments ? 'bs-composer__attachments-row--visible' : ''}` }, h("slot", { key: 'e9daab24f2e008325532e6ea284aff78fe850574', name: "attachments", onSlotchange: this.onAttachmentsSlotchange })), h("div", { key: '175b60b706ea6aae20734169ca5f9a84cf34de39', class: "bs-composer__text-row" }, h("textarea", { key: 'b765186c7fb867799e241e85293caed2e491fc25', ref: el => (this.inputEl = el), part: "input", class: "bs-composer__input", rows: 1, value: this.value, placeholder: placeholder, disabled: disabled, maxLength: this.maxLength, "aria-label": this.ariaLabel, onInput: this.onInput, onKeyDown: this.onInputKeydown })), h("div", { key: 'f539b712f3bc7cc0b289f0ffee0ae00f58bba243', class: "bs-composer__controls-row" }, !this.hideAttach && (h("button", { key: 'e8ca8c173d62e4457516177c738af39039c14757', type: "button", part: "attach", class: "bs-composer__attach", "aria-label": this.attachLabel, onClick: this.onAttachClick }, h(PlusIcon, { key: 'b505c8cfff359c592a6e83d27a390378b602c1e7' }))), recording ? (h("span", { class: "bs-composer__waveform", "aria-hidden": "true" }, WAVEFORM_BAR_HEIGHTS.map(height => (h("span", { class: "bs-composer__waveform-bar", style: { '--bs-composer-bar-height': `${height}px` } }))))) : (h("span", { class: "bs-composer__spacer" })), !this.hideMic && (h("button", { key: 'a3602320e85c453e479275b0e1871f257f13c940', type: "button", part: "mic", class: `bs-composer__mic ${recording ? 'bs-composer__mic--recording' : ''}`, "aria-label": recording ? this.stopRecordingLabel : this.micLabel, disabled: disabled, onClick: this.onMicClick }, recording ? h(StopIcon, null) : h(MicIcon, null))), h("button", { key: 'afa647554fba93f413c5b715f936909a3a916164', type: "button", part: "action", class: `bs-composer__action bs-composer__action--${this.state}`, "aria-label": this.actionLabel(), disabled: disabled, "aria-busy": this.loading && this.state === 'idle' ? 'true' : undefined, onClick: this.onActionClick }, this.renderActionIcon()), h("slot", { key: '4a888c18430a3cf8facc21ac23e2e1867261bada', name: "actions-end" }))));
238
238
  }
239
239
  static get is() { return "bs-composer"; }
240
240
  static get encapsulation() { return "shadow"; }
@@ -113,7 +113,7 @@ export class BsComposerStatusBanner {
113
113
  return this.type === 'error' || this.type === 'warning' ? h(WarningIcon, null) : h(ClockIcon, null);
114
114
  }
115
115
  render() {
116
- return (h("div", { key: 'ebbd0bf0fd48f4f7dd498f63c0c47530752adfd0', role: this.roleForType(), "aria-busy": this.loading ? 'true' : undefined, class: `bs-composer-status-banner bs-composer-status-banner--${this.type}` }, h("div", { key: '9af3ef0c5afcba7c4ab3fdad3442ea5696c509c2', class: "bs-composer-status-banner__message-group" }, this.showIcon && (h("span", { key: '35ad9aa2b1909c24f9b0741287f97b233266bcff', part: "icon", class: "bs-composer-status-banner__icon" }, h("slot", { key: '6969bf12d42bb6e8d9fcd01c217eee35bee6d9b9', name: "icon" }, this.renderDefaultIcon()))), h("p", { key: '73d5fc2bc36eccd275669765c160b1d80f8d7a8b', part: "message", class: "bs-composer-status-banner__message" }, this.message)), this.showButton && (h("button", { key: '153406f12ee8b431d15d554ba41ab17925063e87', type: "button", part: "action", class: "bs-composer-status-banner__action", onClick: this.onActionClick }, this.actionLabel)), this.allowClose && (h("button", { key: '13f9ffa9c73e02edc4290f6ef6085c2f035834fb', type: "button", part: "close", class: "bs-composer-status-banner__close", "aria-label": this.closeLabel, onClick: this.onCloseClick }, h(CloseIcon, { key: '29836806cc1abff20fc163792ad45f5ecd891f2b' })))));
116
+ return (h("div", { key: '23bdf6951b97e63e25673a612d81469aa1fbd4f6', role: this.roleForType(), "aria-busy": this.loading ? 'true' : undefined, class: `bs-composer-status-banner bs-composer-status-banner--${this.type}` }, h("div", { key: 'b434fe1114e435bbcbf7c80b44bb83b9c770bf28', class: "bs-composer-status-banner__message-group" }, this.showIcon && (h("span", { key: '5f1898ac0068f2f7f509c219660b96972e7a8603', part: "icon", class: "bs-composer-status-banner__icon" }, h("slot", { key: '81eff04aa85683efb4ae5670fb3ea966326d1c9a', name: "icon" }, this.renderDefaultIcon()))), h("p", { key: '6ddb4f8f61df621f18594178eb744adf0cdcc8b1', part: "message", class: "bs-composer-status-banner__message" }, this.message)), this.showButton && (h("button", { key: '1c20e4a587173da03fc78e314f9dac26e01fac07', type: "button", part: "action", class: "bs-composer-status-banner__action", onClick: this.onActionClick }, this.actionLabel)), this.allowClose && (h("button", { key: '91ed4898ddea0e238e15c3b9b66b7a2b9117136b', type: "button", part: "close", class: "bs-composer-status-banner__close", "aria-label": this.closeLabel, onClick: this.onCloseClick }, h(CloseIcon, { key: '91abf65867cfecb458f32e884eb22beb63e71a56' })))));
117
117
  }
118
118
  static get is() { return "bs-composer-status-banner"; }
119
119
  static get encapsulation() { return "shadow"; }
@@ -21,7 +21,7 @@ export class BsContainer {
21
21
  padding = '300';
22
22
  render() {
23
23
  const pad = SPACING_TOKENS.includes(String(this.padding)) ? String(this.padding) : '300';
24
- return (h(Host, { key: '459962926408474dee1da84fad17a66a5e849490', style: { '--bs-container-padding-token': `var(--bs-spacing-${pad})` } }, h("slot", { key: '395c3e7c75e153c25acb045211df7cd9da67e302' })));
24
+ return (h(Host, { key: '3996ed195614e9619afed595fcc751cc243fb9ee', style: { '--bs-container-padding-token': `var(--bs-spacing-${pad})` } }, h("slot", { key: '5bdf2a82ed2a2602a035184e3ba8e09fd46b0eba' })));
25
25
  }
26
26
  static get is() { return "bs-container"; }
27
27
  static get encapsulation() { return "shadow"; }
@@ -18,6 +18,15 @@ describe('bs-data-table', () => {
18
18
  expect(selectAll.checked).toBe(false);
19
19
  expect(selectAll.indeterminate).toBe(false);
20
20
  });
21
+ it('gives each row checkbox an accessible name, configurable via selectRowLabel', async () => {
22
+ const { root } = await render(h("bs-data-table", { selectable: true, columns: columns, rows: rows }));
23
+ const rowBoxes = Array.from(root.shadowRoot.querySelectorAll('tbody input[type="checkbox"]'));
24
+ expect(rowBoxes.length).toBe(rows.length);
25
+ expect(rowBoxes.every(b => b.getAttribute('aria-label') === 'Select row')).toBe(true);
26
+ root.selectRowLabel = 'Vælg række';
27
+ await new Promise(r => setTimeout(r, 50));
28
+ expect(root.shadowRoot.querySelector('tbody input[type="checkbox"]').getAttribute('aria-label')).toBe('Vælg række');
29
+ });
21
30
  it('does not render a select-all checkbox when not selectable', async () => {
22
31
  const { root } = await render(h("bs-data-table", { columns: columns, rows: rows }));
23
32
  expect(root.shadowRoot.querySelector('thead input[type="checkbox"]')).toBeNull();
@@ -38,6 +38,8 @@ export class BsDataTable {
38
38
  sortDirection = 'asc';
39
39
  /** Accessible name of the select-all checkbox in the header (when `selectable`). */
40
40
  selectAllLabel = 'Select all rows';
41
+ /** Accessible name of each row's checkbox (when `selectable`). */
42
+ selectRowLabel = 'Select row';
41
43
  selectable = false;
42
44
  /** Alternates the row background (even rows use `--bs-data-table-stripe-bg`) so wide tables are
43
45
  * easier to scan. Follows dark mode through the token. Row hover still wins. */
@@ -98,11 +100,11 @@ export class BsDataTable {
98
100
  }
99
101
  }
100
102
  render() {
101
- return (h("table", { key: '3d8e5b69b6d41002e5af375573f47aec0e117a38', part: "table", class: "bs-data-table" }, h("thead", { key: 'ea97468d460ec2b7ef4b238a335fe05f049a1f0f', part: "head" }, h("tr", { key: 'cb73245678610583887157e314aa89c080390022' }, this.selectable && (h("th", { key: '45df220057b0b2e6698ebc29424dc6c6055799c4', class: "bs-data-table__select-col" }, this.rows.length > 0 && (h("input", { key: '542ee807044a65c5ccf8e9285ece9584f921dff2', type: "checkbox", "aria-label": this.selectAllLabel, checked: this.selectedIds.size > 0 && this.selectedIds.size === this.rows.length, indeterminate: this.selectedIds.size > 0 && this.selectedIds.size < this.rows.length, onChange: this.onSelectAllChange })))), this.columns.map(column => {
103
+ return (h("table", { key: 'd24675d99b4bb7070646b7dd8a432d1395737be2', part: "table", class: "bs-data-table" }, h("thead", { key: '6cd20167515acc4b9509a17584b8d6963f73b4d9', part: "head" }, h("tr", { key: 'df8433665b80da7f39c4ee11abe7250827ea0ceb' }, this.selectable && (h("th", { key: 'cfd133dd0044cef743f528ad2b48b7352be4c3d8', class: "bs-data-table__select-col" }, this.rows.length > 0 && (h("input", { key: '930f6e772809bf3250912b78c17364ceda67a9a8', type: "checkbox", "aria-label": this.selectAllLabel, checked: this.selectedIds.size > 0 && this.selectedIds.size === this.rows.length, indeterminate: this.selectedIds.size > 0 && this.selectedIds.size < this.rows.length, onChange: this.onSelectAllChange })))), this.columns.map(column => {
102
104
  const isSorted = this.sortColumn === column.key;
103
105
  const ariaSort = column.sortable ? (isSorted ? (this.sortDirection === 'asc' ? 'ascending' : 'descending') : 'none') : undefined;
104
106
  return (h("th", { part: "header-cell", class: "bs-data-table__header-cell", "aria-sort": ariaSort }, column.sortable ? (h("button", { type: "button", class: "bs-data-table__sort-button", onClick: () => this.onHeaderClick(column) }, column.label, isSorted && h("span", { class: "bs-data-table__sort-indicator" }, this.sortDirection === 'asc' ? ' ▲' : ' ▼'))) : (column.label)));
105
- }))), h("tbody", { key: 'cd2b2ef74629630e166b0c9b4dc0a4ea339d4de6', part: "body" }, this.rows.map(row => (h("tr", { part: "row", class: "bs-data-table__row" }, this.selectable && (h("td", { class: "bs-data-table__select-col" }, h("input", { type: "checkbox", checked: this.selectedIds.has(row.id), onChange: ev => this.onRowCheckboxChange(row, ev) }))), this.columns.map(column => this.cellRenderer ? (
107
+ }))), h("tbody", { key: 'efafea945207fc1c29016ae066e0a2fce3ec5f6e', part: "body" }, this.rows.map(row => (h("tr", { part: "row", class: "bs-data-table__row" }, this.selectable && (h("td", { class: "bs-data-table__select-col" }, h("input", { type: "checkbox", "aria-label": this.selectRowLabel, checked: this.selectedIds.has(row.id), onChange: ev => this.onRowCheckboxChange(row, ev) }))), this.columns.map(column => this.cellRenderer ? (
106
108
  // cellRenderer is a developer-supplied, trusted function (JS-property-only, never
107
109
  // derived from untrusted input) -- its HTML output is intentionally not escaped,
108
110
  // same trust model as React's dangerouslySetInnerHTML.
@@ -232,6 +234,26 @@ export class BsDataTable {
232
234
  "attribute": "select-all-label",
233
235
  "defaultValue": "'Select all rows'"
234
236
  },
237
+ "selectRowLabel": {
238
+ "type": "string",
239
+ "mutable": false,
240
+ "complexType": {
241
+ "original": "string",
242
+ "resolved": "string",
243
+ "references": {}
244
+ },
245
+ "required": false,
246
+ "optional": false,
247
+ "docs": {
248
+ "tags": [],
249
+ "text": "Accessible name of each row's checkbox (when `selectable`)."
250
+ },
251
+ "getter": false,
252
+ "setter": false,
253
+ "reflect": false,
254
+ "attribute": "select-row-label",
255
+ "defaultValue": "'Select row'"
256
+ },
235
257
  "selectable": {
236
258
  "type": "boolean",
237
259
  "mutable": false,
@@ -340,7 +340,7 @@ export class BsDatepicker {
340
340
  : this.defaultTabbable(days);
341
341
  const isInRange = (iso) => !!selectedStart && !!previewEnd && iso > selectedStart && iso < previewEnd;
342
342
  const weekdays = this.weekdays();
343
- return (h("bs-card", { key: 'b3223172226fd0235de02a345dd50ac01668f201', part: "container", class: "bs-datepicker", surface: "raised" }, h("div", { key: '071b0d1398a2af8c991fa734652ca5e642570113', class: "bs-datepicker__body" }, this.renderHeader(), h("div", { key: '46dc879cb539d250fba48796dbfafd99983c7014', part: "nav", class: "bs-datepicker__nav" }, h("button", { key: '7973540e1b7263f3a0df95b650c7b7481503d4d6', part: "prev", type: "button", class: "bs-datepicker__nav-button", "aria-label": this.previousLabel, onClick: () => this.moveView(-1) }, h("svg", { key: 'e853ca7c87f32493da791883c36c9039a1752994', viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true" }, h("path", { key: 'e9f6f3e3bc2d0c82ce00cbd30873a53777007d6c', d: "M15 18L9 12L15 6", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))), h("div", { key: 'a7af2ef7a4a05bd69d5ba8d19a6c79826a865490', part: "title", class: "bs-datepicker__title", "aria-live": "polite" }, this.titleText()), h("button", { key: 'e7f3122a2ca398cd3d4274918f9244368ac8166c', part: "next", type: "button", class: "bs-datepicker__nav-button", "aria-label": this.nextLabel, onClick: () => this.moveView(1) }, h("svg", { key: '32e3810f46adddff1b1081bab573a01918b05c69', viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true" }, h("path", { key: '12086f1d7d8c52a25fe257d0bf2565760019a9c3', d: "M9 18L15 12L9 6", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })))), h("div", { key: '47b30d7d4f56a94947418b92fe6346640dd60d69', part: "grid", class: "bs-datepicker__grid", role: "grid", "aria-label": this.titleText() }, h("div", { key: '6a36e8becdfb932c3a25614f46df71a6bc6419f8', class: "bs-datepicker__row", role: "row" }, weekdays.map(w => (h("div", { part: "weekday", class: "bs-datepicker__weekday", role: "columnheader" }, w)))), Array.from({ length: 6 }, (_, r) => {
343
+ return (h("bs-card", { key: '5dfa1f91fce2714fbaa120c0c159858dd1f22f77', part: "container", class: "bs-datepicker", surface: "raised" }, h("div", { key: 'd5683ce23acd1f07a9c382254d0e39cb7caf0d9a', class: "bs-datepicker__body" }, this.renderHeader(), h("div", { key: 'da658aaa5410916b223708890e3f0d012c297d08', part: "nav", class: "bs-datepicker__nav" }, h("button", { key: '99df9c289bb4a6e5901aabc9ad294122297ecd05', part: "prev", type: "button", class: "bs-datepicker__nav-button", "aria-label": this.previousLabel, onClick: () => this.moveView(-1) }, h("svg", { key: 'db686789ae2ca6a9600bd6477e9b56a50adf722e', viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true" }, h("path", { key: '99d27b25366ee163c9dda8caeed0630f1c6c6157', d: "M15 18L9 12L15 6", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))), h("div", { key: '297710ca625a8163abca541ca11b858e61431ee0', part: "title", class: "bs-datepicker__title", "aria-live": "polite" }, this.titleText()), h("button", { key: '26e5b15959adcea0a842f59e85b5bca6bb7ec6a7', part: "next", type: "button", class: "bs-datepicker__nav-button", "aria-label": this.nextLabel, onClick: () => this.moveView(1) }, h("svg", { key: 'bef119a10f7e01e8c58e8fd3690417442528d071', viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true" }, h("path", { key: 'd6566754ab7cf16f2e82127c594675c906ce6397', d: "M9 18L15 12L9 6", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })))), h("div", { key: 'c9f559c3ba6c929160801ece12d7ed61cb3cbe4b', part: "grid", class: "bs-datepicker__grid", role: "grid", "aria-label": this.titleText() }, h("div", { key: '214302e6ea6693ba9e4a2e908fa982f0df0d926a', class: "bs-datepicker__row", role: "row" }, weekdays.map(w => (h("div", { part: "weekday", class: "bs-datepicker__weekday", role: "columnheader" }, w)))), Array.from({ length: 6 }, (_, r) => {
344
344
  const row = days.slice(r * 7, r * 7 + 7);
345
345
  return (h("div", { class: "bs-datepicker__row", role: "row" }, row.map((d, c) => {
346
346
  const iso = toIso(d);
@@ -32,7 +32,7 @@ export class BsDescriptionItem {
32
32
  /** Set by the parent `bs-description-list`: `stacked` (term above detail) or `horizontal` (side by side). */
33
33
  layout = 'stacked';
34
34
  render() {
35
- return (h("dl", { key: '732403f417d234e6d8b43aa6fbb2d1096fe817bd', part: "container", class: "bs-description-item" }, h("div", { key: '35fb60b1130d54ed72ff2aa6c7af109861490705', class: "bs-description-item__group" }, h("dt", { key: '1371a6cde4d09830bd734db6c30f240fa7f4cdc0', part: "term", class: "bs-description-item__term" }, h("slot", { key: '386095bd4b98b51f254db2cbb4524bcb2cdfb667', name: "term" }, this.term)), h("dd", { key: '074a3115bcd11b34b3eb35ff3b69460172352280', part: "description", class: "bs-description-item__description" }, h("slot", { key: 'fd34a6f7152805500b80e9983ec57e0805edff4c' }, this.description)))));
35
+ return (h("dl", { key: '40c0899a000b225ecb5332902e9a9f74f54a8caf', part: "container", class: "bs-description-item" }, h("div", { key: '524e64c9808a3aa172854c96466f23719637723e', class: "bs-description-item__group" }, h("dt", { key: '1f7b417f6422fe49b537ce57881a094092e177da', part: "term", class: "bs-description-item__term" }, h("slot", { key: '6f7893e2ca851a7d55aa82cc4f19593db16e9110', name: "term" }, this.term)), h("dd", { key: '861794158a281145f885c5f3990db4506257a4fe', part: "description", class: "bs-description-item__description" }, h("slot", { key: 'ab3ead012e9cd01c5377af5ab05fbf932ffdb0c9' }, this.description)))));
36
36
  }
37
37
  static get is() { return "bs-description-item"; }
38
38
  static get encapsulation() { return "shadow"; }
@@ -39,7 +39,7 @@ export class BsDescriptionList {
39
39
  .forEach(i => (i.layout = this.layout));
40
40
  }
41
41
  render() {
42
- return (h("div", { key: 'defde2a3579750c2fcfd049009f2b274c236c760', part: "list", class: "bs-description-list", role: "group", "aria-label": this.ariaLabel ?? undefined }, h("slot", { key: 'e9d3604c0df86f94a0c1e7b0f2ed7c92852ced91', onSlotchange: () => this.sync() })));
42
+ return (h("div", { key: '05c9e878bf5d7c044f0952194ab139504e18bc37', part: "list", class: "bs-description-list", role: "group", "aria-label": this.ariaLabel ?? undefined }, h("slot", { key: 'e4d5086670583c29bbd5b6d93d49507bd2292aa5', onSlotchange: () => this.sync() })));
43
43
  }
44
44
  static get is() { return "bs-description-list"; }
45
45
  static get encapsulation() { return "shadow"; }
@@ -28,7 +28,7 @@ export class BsDivider {
28
28
  const a11y = this.decorative
29
29
  ? { role: 'none', 'aria-hidden': 'true' }
30
30
  : { role: 'separator', 'aria-orientation': orientation };
31
- return (h(Host, { key: 'b21a5efb3d519b388b2219e4be93b731e4efadce', ...a11y }, h("div", { key: '92e98b2b345cec22215effc6dc6fcd35bf9e196b', class: "line", part: "line" })));
31
+ return (h(Host, { key: 'a4b1c9d1ae6166b883923cc4f403e16b6bb77d1e', ...a11y }, h("div", { key: '7a3d216c6cd74f0dc511c27e9c8decdabbffb8a8', class: "line", part: "line" })));
32
32
  }
33
33
  static get is() { return "bs-divider"; }
34
34
  static get encapsulation() { return "shadow"; }
@@ -96,7 +96,7 @@ export class BsDropdown {
96
96
  this.open = ev.detail;
97
97
  };
98
98
  render() {
99
- return (h("bs-popover", { key: '1d6d773e2fb666d3471b5097d1ba3816cea2f838', part: "popover", open: this.open, placement: this.placement, onBsOpenChange: this.onPopoverOpenChange }, h("slot", { key: '8b3306ec9fb0ff3f8738734dfdbf86aa2ee11316', name: "trigger", slot: "trigger", onSlotchange: this.syncTrigger, ref: el => (this.triggerSlot = el) }), h("slot", { key: '357ae81d2b344310c51e4b05f7be0dc1eb6ab0f1' })));
99
+ return (h("bs-popover", { key: '02bce3b47bd8a7d96b22c9b60b3517802e9b05aa', part: "popover", open: this.open, placement: this.placement, onBsOpenChange: this.onPopoverOpenChange }, h("slot", { key: 'd15d4801ef7d8c15cd22772a83d2658d562ce9e4', name: "trigger", slot: "trigger", onSlotchange: this.syncTrigger, ref: el => (this.triggerSlot = el) }), h("slot", { key: 'b098ecec20a9a3a129f7420634dba01816dc61de' })));
100
100
  }
101
101
  static get is() { return "bs-dropdown"; }
102
102
  static get encapsulation() { return "shadow"; }