@brandsync/wc 1.19.0 → 1.20.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 (859) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/REFERENCE.md +264 -9
  3. package/custom-elements.json +11409 -6963
  4. package/dist/brandsync-wc/brandsync-wc.css +1 -1
  5. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  6. package/dist/brandsync-wc/index.esm.js +1 -1
  7. package/dist/brandsync-wc/p-040d4755.entry.js +1 -0
  8. package/dist/brandsync-wc/{p-30ff0659.entry.js → p-050270f5.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-a688a7ca.entry.js → p-08a5e178.entry.js} +1 -1
  10. package/dist/brandsync-wc/{p-a50c5e68.entry.js → p-08d08dc9.entry.js} +1 -1
  11. package/dist/brandsync-wc/{p-568de1b0.entry.js → p-0ebb60a8.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-f3b60029.entry.js → p-0f864a4f.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-e7c80f48.entry.js → p-105c316e.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-10b8937f.entry.js → p-11fefb5a.entry.js} +1 -1
  15. package/dist/brandsync-wc/{p-313ec145.entry.js → p-13d98ec3.entry.js} +1 -1
  16. package/dist/brandsync-wc/{p-8ac86d16.entry.js → p-16f15ba5.entry.js} +1 -1
  17. package/dist/brandsync-wc/{p-42fcf134.entry.js → p-18cfec13.entry.js} +1 -1
  18. package/dist/brandsync-wc/{p-9751a12d.entry.js → p-1a549f9a.entry.js} +1 -1
  19. package/dist/brandsync-wc/{p-a28ef52e.entry.js → p-1bf8a54a.entry.js} +1 -1
  20. package/dist/brandsync-wc/{p-5371b31c.entry.js → p-1ce4395a.entry.js} +1 -1
  21. package/dist/brandsync-wc/{p-de0dfd1c.entry.js → p-1daf48b1.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-86f04e9e.entry.js → p-20dd8b76.entry.js} +1 -1
  23. package/dist/brandsync-wc/{p-391504ab.entry.js → p-2210c680.entry.js} +1 -1
  24. package/dist/brandsync-wc/{p-f10b19a8.entry.js → p-23367a4d.entry.js} +1 -1
  25. package/dist/brandsync-wc/{p-02314404.entry.js → p-238be384.entry.js} +1 -1
  26. package/dist/brandsync-wc/p-23affb5d.entry.js +1 -0
  27. package/dist/brandsync-wc/p-23b3958e.entry.js +1 -0
  28. package/dist/brandsync-wc/{p-03ad83a3.entry.js → p-2621b1b2.entry.js} +1 -1
  29. package/dist/brandsync-wc/p-28723df1.entry.js +1 -0
  30. package/dist/brandsync-wc/{p-d484e976.entry.js → p-28a34097.entry.js} +1 -1
  31. package/dist/brandsync-wc/{p-129a4de7.entry.js → p-2a96ce61.entry.js} +1 -1
  32. package/dist/brandsync-wc/{p-7160a72e.entry.js → p-2f58b161.entry.js} +1 -1
  33. package/dist/brandsync-wc/p-319b7baa.entry.js +1 -0
  34. package/dist/brandsync-wc/{p-8a606b38.entry.js → p-32004fb3.entry.js} +1 -1
  35. package/dist/brandsync-wc/{p-78c94cfe.entry.js → p-32157c7a.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-ab99b8c3.entry.js → p-32d83763.entry.js} +1 -1
  37. package/dist/brandsync-wc/{p-8b21f623.entry.js → p-338b5e39.entry.js} +1 -1
  38. package/dist/brandsync-wc/p-3f6be3f7.entry.js +1 -0
  39. package/dist/brandsync-wc/p-409cf56b.entry.js +1 -0
  40. package/dist/brandsync-wc/{p-8e107d7a.entry.js → p-452f6c13.entry.js} +1 -1
  41. package/dist/brandsync-wc/{p-527fd08d.entry.js → p-47fc5f29.entry.js} +1 -1
  42. package/dist/brandsync-wc/p-4810bcc8.entry.js +1 -0
  43. package/dist/brandsync-wc/p-484a6546.entry.js +1 -0
  44. package/dist/brandsync-wc/p-4ae7b8b9.entry.js +1 -0
  45. package/dist/brandsync-wc/p-4d6f2fec.entry.js +1 -0
  46. package/dist/brandsync-wc/{p-4ffcf41a.entry.js → p-4f19e8d8.entry.js} +1 -1
  47. package/dist/brandsync-wc/p-50a154b8.entry.js +1 -0
  48. package/dist/brandsync-wc/{p-26e0ab15.entry.js → p-50ac6889.entry.js} +1 -1
  49. package/dist/brandsync-wc/p-520b277a.entry.js +1 -0
  50. package/dist/brandsync-wc/p-53b1c545.entry.js +1 -0
  51. package/dist/brandsync-wc/{p-90d8d45f.entry.js → p-548b96f7.entry.js} +1 -1
  52. package/dist/brandsync-wc/{p-144b6ac8.entry.js → p-57ed5ac6.entry.js} +1 -1
  53. package/dist/brandsync-wc/{p-028d3244.entry.js → p-587be2c6.entry.js} +1 -1
  54. package/dist/brandsync-wc/p-5a35d573.entry.js +1 -0
  55. package/dist/brandsync-wc/p-5b48a6c7.entry.js +1 -0
  56. package/dist/brandsync-wc/{p-4d1ee16e.entry.js → p-5ea899c4.entry.js} +1 -1
  57. package/dist/brandsync-wc/p-6096900b.entry.js +1 -0
  58. package/dist/brandsync-wc/{p-fc76031e.entry.js → p-630d41ab.entry.js} +1 -1
  59. package/dist/brandsync-wc/p-66f1ca2e.entry.js +1 -0
  60. package/dist/brandsync-wc/p-69489f45.entry.js +1 -0
  61. package/dist/brandsync-wc/p-6adc9c4f.entry.js +1 -0
  62. package/dist/brandsync-wc/p-6bdd9ef9.entry.js +1 -0
  63. package/dist/brandsync-wc/{p-dc2ea372.entry.js → p-6db03e96.entry.js} +1 -1
  64. package/dist/brandsync-wc/{p-64e19200.entry.js → p-70924681.entry.js} +1 -1
  65. package/dist/brandsync-wc/p-7632f773.entry.js +1 -0
  66. package/dist/brandsync-wc/{p-590deea0.entry.js → p-78e4dd14.entry.js} +1 -1
  67. package/dist/brandsync-wc/{p-f96f45ae.entry.js → p-806bb471.entry.js} +1 -1
  68. package/dist/brandsync-wc/{p-2a8b2ac9.entry.js → p-86fdbe8f.entry.js} +1 -1
  69. package/dist/brandsync-wc/{p-8a18864a.entry.js → p-89dbb3c8.entry.js} +1 -1
  70. package/dist/brandsync-wc/{p-ebcd105d.entry.js → p-8a4d64fd.entry.js} +1 -1
  71. package/dist/brandsync-wc/p-8c83cc99.entry.js +1 -0
  72. package/dist/brandsync-wc/p-8ccd1735.entry.js +1 -0
  73. package/dist/brandsync-wc/p-8d674f11.entry.js +1 -0
  74. package/dist/brandsync-wc/{p-8d1ad4b0.entry.js → p-90442341.entry.js} +1 -1
  75. package/dist/brandsync-wc/{p-a2bfbf02.entry.js → p-9e93b482.entry.js} +1 -1
  76. package/dist/brandsync-wc/{p-020cb767.entry.js → p-9f852c8b.entry.js} +1 -1
  77. package/dist/brandsync-wc/p-Vo0zbGRB.js +1 -0
  78. package/dist/brandsync-wc/p-a1d34ff3.entry.js +1 -0
  79. package/dist/brandsync-wc/{p-15c6f0f3.entry.js → p-a3c7b4e7.entry.js} +1 -1
  80. package/dist/brandsync-wc/{p-9ba500f1.entry.js → p-a6cbb6c6.entry.js} +1 -1
  81. package/dist/brandsync-wc/{p-70a5897b.entry.js → p-a86560e6.entry.js} +1 -1
  82. package/dist/brandsync-wc/p-aa70e80c.entry.js +1 -0
  83. package/dist/brandsync-wc/{p-0dff9822.entry.js → p-b0f4cbca.entry.js} +1 -1
  84. package/dist/brandsync-wc/{p-3c6980b9.entry.js → p-b1663378.entry.js} +1 -1
  85. package/dist/brandsync-wc/{p-25914efc.entry.js → p-b1b14615.entry.js} +1 -1
  86. package/dist/brandsync-wc/{p-2389f473.entry.js → p-b7545d9b.entry.js} +1 -1
  87. package/dist/brandsync-wc/{p-d80eecf4.entry.js → p-baca1abf.entry.js} +1 -1
  88. package/dist/brandsync-wc/{p-a92c0f06.entry.js → p-bfdd135b.entry.js} +1 -1
  89. package/dist/brandsync-wc/{p-89fa7567.entry.js → p-c23e274a.entry.js} +1 -1
  90. package/dist/brandsync-wc/{p-4928c4ad.entry.js → p-c39e6be9.entry.js} +1 -1
  91. package/dist/brandsync-wc/{p-30736034.entry.js → p-c6c15b9f.entry.js} +1 -1
  92. package/dist/brandsync-wc/{p-776b677f.entry.js → p-c9888d09.entry.js} +1 -1
  93. package/dist/brandsync-wc/p-ca8a1e51.entry.js +1 -0
  94. package/dist/brandsync-wc/{p-9fa7bd83.entry.js → p-d263deec.entry.js} +1 -1
  95. package/dist/brandsync-wc/p-d555984e.entry.js +1 -0
  96. package/dist/brandsync-wc/p-d6600c7c.entry.js +1 -0
  97. package/dist/brandsync-wc/{p-e5235e76.entry.js → p-d67840f5.entry.js} +1 -1
  98. package/dist/brandsync-wc/p-d8a299a9.entry.js +1 -0
  99. package/dist/brandsync-wc/{p-f4796801.entry.js → p-dd3499ab.entry.js} +1 -1
  100. package/dist/brandsync-wc/p-debc308d.entry.js +1 -0
  101. package/dist/brandsync-wc/{p-c01e231e.entry.js → p-e18cb639.entry.js} +1 -1
  102. package/dist/brandsync-wc/{p-7bff3aa5.entry.js → p-e18e45bc.entry.js} +1 -1
  103. package/dist/brandsync-wc/{p-4c51da66.entry.js → p-e2268c96.entry.js} +1 -1
  104. package/dist/brandsync-wc/p-e4033ebc.entry.js +1 -0
  105. package/dist/brandsync-wc/{p-1e33bc10.entry.js → p-e6f57fae.entry.js} +1 -1
  106. package/dist/brandsync-wc/p-e8027825.entry.js +1 -0
  107. package/dist/brandsync-wc/{p-7c741b8d.entry.js → p-eb1b1497.entry.js} +1 -1
  108. package/dist/brandsync-wc/{p-9868ee72.entry.js → p-eb4ad606.entry.js} +1 -1
  109. package/dist/brandsync-wc/p-ecb1a27d.entry.js +1 -0
  110. package/dist/brandsync-wc/p-f229f59a.entry.js +1 -0
  111. package/dist/brandsync-wc/{p-0819add7.entry.js → p-f22d2db8.entry.js} +1 -1
  112. package/dist/brandsync-wc/{p-feb46fa6.entry.js → p-f71d7582.entry.js} +1 -1
  113. package/dist/brandsync-wc/p-fa894893.entry.js +1 -0
  114. package/dist/brandsync-wc/p-fbd204b6.entry.js +1 -0
  115. package/dist/brandsync-wc/{p-21e5d4d6.entry.js → p-fc7df528.entry.js} +1 -1
  116. package/dist/brandsync-wc/{p-27663faf.entry.js → p-fe6f71da.entry.js} +1 -1
  117. package/dist/brandsync-wc/{p-e1d30e31.entry.js → p-ff14edb6.entry.js} +1 -1
  118. package/dist/brandsync-wc/p-ff85a9d8.entry.js +1 -0
  119. package/dist/brandsync-wc/p-wz7B473u.js +3 -0
  120. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  121. package/dist/cjs/bs-accordion-group.cjs.entry.js +2 -2
  122. package/dist/cjs/bs-accordion.cjs.entry.js +1 -1
  123. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +2 -2
  124. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  125. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  126. package/dist/cjs/bs-app-recent-item_3.cjs.entry.js +5 -5
  127. package/dist/cjs/bs-app-shell.cjs.entry.js +2 -2
  128. package/dist/cjs/bs-app-switcher.cjs.entry.js +1 -1
  129. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  130. package/dist/cjs/bs-attachment.cjs.entry.js +2 -2
  131. package/dist/cjs/bs-avatar.cjs.entry.js +3 -10
  132. package/dist/cjs/bs-badge.cjs.entry.js +2 -2
  133. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +1 -1
  134. package/dist/cjs/bs-breadcrumb.cjs.entry.js +3 -3
  135. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +10 -2
  136. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  137. package/dist/cjs/bs-button_2.cjs.entry.js +17 -4
  138. package/dist/cjs/bs-card.cjs.entry.js +44 -3
  139. package/dist/cjs/bs-carousel.cjs.entry.js +1 -1
  140. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +3 -7
  141. package/dist/cjs/bs-chatbot-header.cjs.entry.js +3 -7
  142. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  143. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  144. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +3 -3
  145. package/dist/cjs/bs-checkbox-group.cjs.entry.js +80 -0
  146. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +2 -2
  147. package/dist/cjs/bs-checkbox.cjs.entry.js +1 -1
  148. package/dist/cjs/bs-chip-filter.cjs.entry.js +2 -2
  149. package/dist/cjs/bs-chip-informative.cjs.entry.js +2 -2
  150. package/dist/cjs/bs-chip-input.cjs.entry.js +2 -2
  151. package/dist/cjs/bs-citation-preview.cjs.entry.js +2 -2
  152. package/dist/cjs/bs-code-block.cjs.entry.js +75 -0
  153. package/dist/cjs/bs-command-palette.cjs.entry.js +2 -2
  154. package/dist/cjs/bs-compact-menu-block_2.cjs.entry.js +5 -5
  155. package/dist/cjs/bs-company-switcher.cjs.entry.js +3 -3
  156. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +2 -2
  157. package/dist/cjs/bs-composer.cjs.entry.js +6 -4
  158. package/dist/cjs/bs-container.cjs.entry.js +2 -2
  159. package/dist/cjs/bs-cookie-consent.cjs.entry.js +1 -1
  160. package/dist/cjs/bs-data-table.cjs.entry.js +8 -5
  161. package/dist/cjs/bs-datepicker.cjs.entry.js +2 -2
  162. package/dist/cjs/bs-description-item.cjs.entry.js +23 -0
  163. package/dist/cjs/bs-description-list.cjs.entry.js +40 -0
  164. package/dist/cjs/bs-dialog.cjs.entry.js +1 -1
  165. package/dist/cjs/bs-divider.cjs.entry.js +2 -2
  166. package/dist/cjs/bs-dropdown.cjs.entry.js +96 -0
  167. package/dist/cjs/bs-empty-state.cjs.entry.js +7 -3
  168. package/dist/cjs/bs-error-page.cjs.entry.js +2 -2
  169. package/dist/cjs/bs-file-upload-item.cjs.entry.js +2 -2
  170. package/dist/cjs/bs-file-upload.cjs.entry.js +2 -2
  171. package/dist/cjs/bs-global-search.cjs.entry.js +3 -3
  172. package/dist/cjs/bs-grid.cjs.entry.js +3 -3
  173. package/dist/cjs/bs-heading.cjs.entry.js +28 -0
  174. package/dist/cjs/bs-icon-button.cjs.entry.js +10 -3
  175. package/dist/cjs/bs-icon-tile.cjs.entry.js +3 -3
  176. package/dist/cjs/bs-icon.cjs.entry.js +35 -0
  177. package/dist/cjs/bs-inline-tab.cjs.entry.js +3 -3
  178. package/dist/cjs/bs-input_4.cjs.entry.js +794 -0
  179. package/dist/cjs/bs-key-caps.cjs.entry.js +2 -2
  180. package/dist/cjs/bs-key.cjs.entry.js +2 -2
  181. package/dist/cjs/bs-keyboard-shortcuts.cjs.entry.js +3 -3
  182. package/dist/cjs/bs-link.cjs.entry.js +52 -0
  183. package/dist/cjs/bs-list-item.cjs.entry.js +68 -0
  184. package/dist/cjs/bs-list.cjs.entry.js +9 -3
  185. package/dist/cjs/bs-logo.cjs.entry.js +1 -1
  186. package/dist/cjs/bs-mega-menu.cjs.entry.js +2 -2
  187. package/dist/cjs/bs-message-list.cjs.entry.js +2 -2
  188. package/dist/cjs/bs-message.cjs.entry.js +2 -2
  189. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +26 -5
  190. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +4 -4
  191. package/dist/cjs/bs-navigation-header.cjs.entry.js +4 -4
  192. package/dist/cjs/bs-onboarding-checklist.cjs.entry.js +1 -1
  193. package/dist/cjs/bs-page-header.cjs.entry.js +2 -2
  194. package/dist/cjs/bs-pagination.cjs.entry.js +2 -2
  195. package/dist/cjs/{bs-list-item_2.cjs.entry.js → bs-popover.cjs.entry.js} +2 -64
  196. package/dist/cjs/bs-presence.cjs.entry.js +2 -2
  197. package/dist/cjs/bs-product-tour.cjs.entry.js +1 -1
  198. package/dist/cjs/bs-progress-linear.cjs.entry.js +4 -4
  199. package/dist/cjs/bs-progress.cjs.entry.js +3 -3
  200. package/dist/cjs/bs-qr-code.cjs.entry.js +2 -2
  201. package/dist/cjs/bs-radio-group.cjs.entry.js +90 -0
  202. package/dist/cjs/bs-radio.cjs.entry.js +6 -2
  203. package/dist/cjs/bs-search-item.cjs.entry.js +2 -2
  204. package/dist/cjs/bs-select.cjs.entry.js +234 -0
  205. package/dist/cjs/bs-session-timeout.cjs.entry.js +2 -2
  206. package/dist/cjs/bs-shortcut-row.cjs.entry.js +2 -2
  207. package/dist/cjs/bs-side-panel.cjs.entry.js +1 -1
  208. package/dist/cjs/bs-skip-link.cjs.entry.js +52 -0
  209. package/dist/cjs/bs-slider.cjs.entry.js +3 -3
  210. package/dist/cjs/bs-snackbar.cjs.entry.js +3 -3
  211. package/dist/cjs/bs-source-link.cjs.entry.js +4 -4
  212. package/dist/cjs/bs-split-pane.cjs.entry.js +2 -2
  213. package/dist/cjs/bs-stack.cjs.entry.js +2 -2
  214. package/dist/cjs/bs-stat.cjs.entry.js +53 -0
  215. package/dist/cjs/bs-stepper-step.cjs.entry.js +2 -2
  216. package/dist/cjs/bs-stepper.cjs.entry.js +2 -2
  217. package/dist/cjs/bs-switch.cjs.entry.js +2 -2
  218. package/dist/cjs/bs-tab_3.cjs.entry.js +16 -9
  219. package/dist/cjs/bs-table-of-contents.cjs.entry.js +171 -0
  220. package/dist/cjs/bs-tag.cjs.entry.js +51 -0
  221. package/dist/cjs/bs-text.cjs.entry.js +24 -0
  222. package/dist/cjs/bs-timepicker.cjs.entry.js +3 -3
  223. package/dist/cjs/bs-toast.cjs.entry.js +2 -2
  224. package/dist/cjs/bs-toggle-button-group.cjs.entry.js +108 -0
  225. package/dist/cjs/bs-toggle-button.cjs.entry.js +57 -0
  226. package/dist/cjs/bs-toolbar.cjs.entry.js +195 -0
  227. package/dist/cjs/bs-tooltip-trigger.cjs.entry.js +2 -2
  228. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  229. package/dist/cjs/bs-tree-item.cjs.entry.js +3 -3
  230. package/dist/cjs/bs-tree.cjs.entry.js +2 -2
  231. package/dist/cjs/bs-whats-new.cjs.entry.js +1 -1
  232. package/dist/cjs/icon-registry-DWYCqjKw.js +64 -0
  233. package/dist/cjs/{index-BYfMRtlW.js → index-BFxk-bY6.js} +1 -1
  234. package/dist/cjs/index.cjs.js +4 -0
  235. package/dist/cjs/loader.cjs.js +2 -2
  236. package/dist/collection/collection-manifest.json +19 -1
  237. package/dist/collection/components/bs-a11y.cmp.test.js +9 -0
  238. package/dist/collection/components/bs-accordion-group/bs-accordion-group.js +1 -1
  239. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  240. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  241. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  242. package/dist/collection/components/bs-app-recent-item/bs-app-recent-item.js +3 -3
  243. package/dist/collection/components/bs-app-shell/bs-app-shell.js +1 -1
  244. package/dist/collection/components/bs-attachment/bs-attachment.cmp.test.js +10 -0
  245. package/dist/collection/components/bs-attachment/bs-attachment.css +6 -6
  246. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  247. package/dist/collection/components/bs-avatar/bs-avatar.cmp.test.js +11 -1
  248. package/dist/collection/components/bs-avatar/bs-avatar.css +9 -4
  249. package/dist/collection/components/bs-avatar/bs-avatar.js +1 -8
  250. package/dist/collection/components/bs-badge/bs-badge.css +4 -1
  251. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.js +13 -0
  252. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.css +8 -0
  253. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +1 -1
  254. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +26 -1
  255. package/dist/collection/components/bs-button/bs-button/bs-button.cmp.test.js +31 -2
  256. package/dist/collection/components/bs-button/bs-button/bs-button.css +16 -18
  257. package/dist/collection/components/bs-button/bs-button/bs-button.js +102 -7
  258. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.js +43 -0
  259. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.css +32 -2
  260. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +68 -1
  261. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  262. package/dist/collection/components/bs-card/bs-card.cmp.test.js +78 -0
  263. package/dist/collection/components/bs-card/bs-card.css +75 -0
  264. package/dist/collection/components/bs-card/bs-card.js +200 -1
  265. package/dist/collection/components/bs-card/bs-card.stories.js +32 -0
  266. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.cmp.test.js +8 -0
  267. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.css +11 -8
  268. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -5
  269. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.css +2 -3
  270. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -5
  271. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  272. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  273. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.cmp.test.js +18 -0
  274. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.css +8 -2
  275. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +4 -1
  276. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
  277. package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.cmp.test.js +58 -0
  278. package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.css +65 -0
  279. package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.js +254 -0
  280. package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.stories.js +34 -0
  281. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.js +1 -1
  282. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.js +1 -1
  283. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +1 -1
  284. package/dist/collection/components/bs-citation-preview/bs-citation-preview.js +1 -1
  285. package/dist/collection/components/bs-code-block/bs-code-block.cmp.test.js +78 -0
  286. package/dist/collection/components/bs-code-block/bs-code-block.css +132 -0
  287. package/dist/collection/components/bs-code-block/bs-code-block.js +317 -0
  288. package/dist/collection/components/bs-code-block/bs-code-block.stories.js +56 -0
  289. package/dist/collection/components/bs-command-palette/bs-command-palette.js +1 -1
  290. package/dist/collection/components/bs-compact-menu-block/bs-compact-menu-block.js +1 -1
  291. package/dist/collection/components/bs-company-switcher/bs-company-switcher.js +2 -2
  292. package/dist/collection/components/bs-composer/bs-composer.cmp.test.js +29 -0
  293. package/dist/collection/components/bs-composer/bs-composer.css +2 -1
  294. package/dist/collection/components/bs-composer/bs-composer.js +4 -2
  295. package/dist/collection/components/bs-composer/bs-composer.stories.js +0 -1
  296. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -1
  297. package/dist/collection/components/bs-container/bs-container.js +1 -1
  298. package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.cmp.test.js +1 -1
  299. package/dist/collection/components/bs-data-table/bs-data-table.cmp.test.js +39 -0
  300. package/dist/collection/components/bs-data-table/bs-data-table.css +12 -0
  301. package/dist/collection/components/bs-data-table/bs-data-table.js +34 -3
  302. package/dist/collection/components/bs-data-table/bs-data-table.stories.js +1 -1
  303. package/dist/collection/components/bs-datepicker/bs-datepicker.js +1 -1
  304. package/dist/collection/components/bs-description-item/bs-description-item.cmp.test.js +14 -0
  305. package/dist/collection/components/bs-description-item/bs-description-item.css +47 -0
  306. package/dist/collection/components/bs-description-item/bs-description-item.js +111 -0
  307. package/dist/collection/components/bs-description-list/bs-description-list.cmp.test.js +58 -0
  308. package/dist/collection/components/bs-description-list/bs-description-list.css +15 -0
  309. package/dist/collection/components/bs-description-list/bs-description-list.js +127 -0
  310. package/dist/collection/components/bs-description-list/bs-description-list.stories.js +34 -0
  311. package/dist/collection/components/bs-divider/bs-divider.js +1 -1
  312. package/dist/collection/components/bs-dropdown/bs-dropdown.cmp.test.js +135 -0
  313. package/dist/collection/components/bs-dropdown/bs-dropdown.css +3 -0
  314. package/dist/collection/components/bs-dropdown/bs-dropdown.js +218 -0
  315. package/dist/collection/components/bs-dropdown/bs-dropdown.stories.js +42 -0
  316. package/dist/collection/components/bs-empty-state/bs-empty-state.cmp.test.js +15 -0
  317. package/dist/collection/components/bs-empty-state/bs-empty-state.css +30 -1
  318. package/dist/collection/components/bs-empty-state/bs-empty-state.js +29 -1
  319. package/dist/collection/components/bs-empty-state/bs-empty-state.stories.js +24 -1
  320. package/dist/collection/components/bs-error-page/bs-error-page.js +1 -1
  321. package/dist/collection/components/bs-file-upload/bs-file-upload.js +1 -1
  322. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +1 -1
  323. package/dist/collection/components/bs-global-search/bs-global-search.js +2 -2
  324. package/dist/collection/components/bs-grid/bs-grid.js +2 -2
  325. package/dist/collection/components/bs-heading/bs-heading.cmp.test.js +38 -0
  326. package/dist/collection/components/bs-heading/bs-heading.css +42 -0
  327. package/dist/collection/components/bs-heading/bs-heading.js +154 -0
  328. package/dist/collection/components/bs-heading/bs-heading.stories.js +28 -0
  329. package/dist/collection/components/bs-icon/bs-icon.cmp.test.js +78 -0
  330. package/dist/collection/components/bs-icon/bs-icon.css +47 -0
  331. package/dist/collection/components/bs-icon/bs-icon.js +155 -0
  332. package/dist/collection/components/bs-icon/bs-icon.stories.js +52 -0
  333. package/dist/collection/components/bs-icon/icon-registry.js +58 -0
  334. package/dist/collection/components/bs-icon-tile/bs-icon-tile.js +2 -2
  335. package/dist/collection/components/bs-input/bs-input.cmp.test.js +431 -45
  336. package/dist/collection/components/bs-input/bs-input.css +196 -12
  337. package/dist/collection/components/bs-input/bs-input.js +565 -46
  338. package/dist/collection/components/bs-input/bs-input.stories.js +32 -4
  339. package/dist/collection/components/bs-key/bs-key.js +1 -1
  340. package/dist/collection/components/bs-key-caps/bs-key-caps.js +1 -1
  341. package/dist/collection/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.js +2 -2
  342. package/dist/collection/components/bs-link/bs-link.cmp.test.js +52 -0
  343. package/dist/collection/components/bs-link/bs-link.css +129 -0
  344. package/dist/collection/components/bs-link/bs-link.js +257 -0
  345. package/dist/collection/components/bs-link/bs-link.stories.js +31 -0
  346. package/dist/collection/components/bs-list/bs-list.cmp.test.js +23 -0
  347. package/dist/collection/components/bs-list/bs-list.js +32 -2
  348. package/dist/collection/components/bs-list/bs-list.stories.js +35 -2
  349. package/dist/collection/components/bs-list-item/bs-list-item.css +8 -0
  350. package/dist/collection/components/bs-list-item/bs-list-item.js +24 -1
  351. package/dist/collection/components/bs-mega-menu/bs-mega-menu.js +1 -1
  352. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  353. package/dist/collection/components/bs-menu-block/bs-menu-block.js +3 -3
  354. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  355. package/dist/collection/components/bs-message/bs-message.js +1 -1
  356. package/dist/collection/components/bs-message-list/bs-message-list.js +1 -1
  357. package/dist/collection/components/bs-page-header/bs-page-header.js +1 -1
  358. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  359. package/dist/collection/components/bs-popover/bs-popover.js +1 -1
  360. package/dist/collection/components/bs-presence/bs-presence.js +1 -1
  361. package/dist/collection/components/bs-progress/bs-progress.js +2 -2
  362. package/dist/collection/components/bs-progress-linear/bs-progress-linear.css +4 -1
  363. package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +2 -2
  364. package/dist/collection/components/bs-qr-code/bs-qr-code.js +1 -1
  365. package/dist/collection/components/bs-radio/bs-radio.cmp.test.js +8 -0
  366. package/dist/collection/components/bs-radio/bs-radio.js +25 -1
  367. package/dist/collection/components/bs-radio-group/bs-radio-group.cmp.test.js +85 -0
  368. package/dist/collection/components/bs-radio-group/bs-radio-group.css +59 -0
  369. package/dist/collection/components/bs-radio-group/bs-radio-group.js +309 -0
  370. package/dist/collection/components/bs-radio-group/bs-radio-group.stories.js +35 -0
  371. package/dist/collection/components/bs-ripple/bs-ripple.js +1 -1
  372. package/dist/collection/components/bs-search-item/bs-search-item.js +1 -1
  373. package/dist/collection/components/bs-select/bs-select.cmp.test.js +108 -0
  374. package/dist/collection/components/bs-select/bs-select.css +231 -0
  375. package/dist/collection/components/bs-select/bs-select.js +506 -0
  376. package/dist/collection/components/bs-select/bs-select.stories.js +58 -0
  377. package/dist/collection/components/bs-session-timeout/bs-session-timeout.js +1 -1
  378. package/dist/collection/components/bs-shortcut-row/bs-shortcut-row.js +1 -1
  379. package/dist/collection/components/bs-skeleton/bs-skeleton.js +1 -1
  380. package/dist/collection/components/bs-skip-link/bs-skip-link.cmp.test.js +60 -0
  381. package/dist/collection/components/bs-skip-link/bs-skip-link.css +58 -0
  382. package/dist/collection/components/bs-skip-link/bs-skip-link.js +123 -0
  383. package/dist/collection/components/bs-skip-link/bs-skip-link.stories.js +27 -0
  384. package/dist/collection/components/bs-slider/bs-slider.cmp.test.js +13 -0
  385. package/dist/collection/components/bs-slider/bs-slider.css +3 -2
  386. package/dist/collection/components/bs-slider/bs-slider.js +1 -1
  387. package/dist/collection/components/bs-snackbar/bs-snackbar.cmp.test.js +22 -0
  388. package/dist/collection/components/bs-snackbar/bs-snackbar.css +23 -0
  389. package/dist/collection/components/bs-snackbar/bs-snackbar.js +1 -1
  390. package/dist/collection/components/bs-source-link/bs-source-link.js +3 -3
  391. package/dist/collection/components/bs-spinner/bs-spinner.js +1 -1
  392. package/dist/collection/components/bs-split-pane/bs-split-pane.js +1 -1
  393. package/dist/collection/components/bs-stack/bs-stack.js +1 -1
  394. package/dist/collection/components/bs-stat/bs-stat.cmp.test.js +49 -0
  395. package/dist/collection/components/bs-stat/bs-stat.css +116 -0
  396. package/dist/collection/components/bs-stat/bs-stat.js +284 -0
  397. package/dist/collection/components/bs-stat/bs-stat.stories.js +44 -0
  398. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
  399. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
  400. package/dist/collection/components/bs-switch/bs-switch.js +1 -1
  401. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.css +2 -2
  402. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  403. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.js +0 -4
  404. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
  405. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.cmp.test.js +35 -0
  406. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.css +6 -2
  407. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +13 -6
  408. package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.cmp.test.js +125 -0
  409. package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.css +115 -0
  410. package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.js +392 -0
  411. package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.stories.js +58 -0
  412. package/dist/collection/components/bs-tag/bs-tag.cmp.test.js +66 -0
  413. package/dist/collection/components/bs-tag/bs-tag.css +101 -0
  414. package/dist/collection/components/bs-tag/bs-tag.js +233 -0
  415. package/dist/collection/components/bs-tag/bs-tag.stories.js +59 -0
  416. package/dist/collection/components/bs-text/bs-text.cmp.test.js +33 -0
  417. package/dist/collection/components/bs-text/bs-text.css +48 -0
  418. package/dist/collection/components/bs-text/bs-text.js +126 -0
  419. package/dist/collection/components/bs-text/bs-text.stories.js +25 -0
  420. package/dist/collection/components/bs-timepicker/bs-timepicker.js +2 -2
  421. package/dist/collection/components/bs-toast/bs-toast.js +1 -1
  422. package/dist/collection/components/bs-toggle-button/bs-toggle-button.cmp.test.js +47 -0
  423. package/dist/collection/components/bs-toggle-button/bs-toggle-button.css +125 -0
  424. package/dist/collection/components/bs-toggle-button/bs-toggle-button.js +234 -0
  425. package/dist/collection/components/bs-toggle-button/bs-toggle-button.stories.js +22 -0
  426. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.cmp.test.js +69 -0
  427. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.css +43 -0
  428. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.js +264 -0
  429. package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.stories.js +42 -0
  430. package/dist/collection/components/bs-toolbar/bs-toolbar.cmp.test.js +149 -0
  431. package/dist/collection/components/bs-toolbar/bs-toolbar.css +82 -0
  432. package/dist/collection/components/bs-toolbar/bs-toolbar.js +345 -0
  433. package/dist/collection/components/bs-toolbar/bs-toolbar.stories.js +49 -0
  434. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  435. package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.js +1 -1
  436. package/dist/collection/components/bs-tree/bs-tree.js +1 -1
  437. package/dist/collection/components/bs-tree-item/bs-tree-item.js +2 -2
  438. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.js +1 -1
  439. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +25 -0
  440. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.css +2 -2
  441. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +2 -2
  442. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.js +58 -0
  443. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.css +10 -2
  444. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +63 -4
  445. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.js +42 -9
  446. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.css +44 -37
  447. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +2 -2
  448. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.js +22 -0
  449. package/dist/collection/index.js +1 -0
  450. package/dist/collection/test/helpers/block-link-navigation.js +13 -0
  451. package/dist/collection/test/helpers/contrast.js +57 -0
  452. package/dist/components/bs-accordion-group.js +1 -1
  453. package/dist/components/bs-accordion.js +1 -1
  454. package/dist/components/bs-ai-disclaimer.js +1 -1
  455. package/dist/components/bs-ai-greeting.js +1 -1
  456. package/dist/components/bs-ai-thinking.js +1 -1
  457. package/dist/components/bs-app-recent-item.js +1 -1
  458. package/dist/components/bs-app-shell.js +1 -1
  459. package/dist/components/bs-app-switcher.js +1 -1
  460. package/dist/components/bs-app-tile.js +1 -1
  461. package/dist/components/bs-attachment-list.js +1 -1
  462. package/dist/components/bs-attachment.js +1 -1
  463. package/dist/components/bs-avatar.js +1 -1
  464. package/dist/components/bs-badge.js +1 -1
  465. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  466. package/dist/components/bs-breadcrumb.js +1 -1
  467. package/dist/components/bs-breadcrumbs.js +1 -1
  468. package/dist/components/bs-button-skeleton.js +1 -1
  469. package/dist/components/bs-button.js +1 -1
  470. package/dist/components/bs-card.js +1 -1
  471. package/dist/components/bs-carousel.js +1 -1
  472. package/dist/components/bs-chatbot-feedback.js +1 -1
  473. package/dist/components/bs-chatbot-header.js +1 -1
  474. package/dist/components/bs-chatbot-response-action.js +1 -1
  475. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  476. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  477. package/dist/components/bs-checkbox-group.d.ts +11 -0
  478. package/dist/components/bs-checkbox-group.js +1 -0
  479. package/dist/components/bs-checkbox-skeleton.js +1 -1
  480. package/dist/components/bs-checkbox.js +1 -1
  481. package/dist/components/bs-chip-filter.js +1 -1
  482. package/dist/components/bs-chip-informative.js +1 -1
  483. package/dist/components/bs-chip-input.js +1 -1
  484. package/dist/components/bs-citation-preview.js +1 -1
  485. package/dist/components/bs-code-block.d.ts +11 -0
  486. package/dist/components/bs-code-block.js +1 -0
  487. package/dist/components/bs-command-palette.js +1 -1
  488. package/dist/components/bs-compact-menu-block.js +1 -1
  489. package/dist/components/bs-company-switcher.js +1 -1
  490. package/dist/components/bs-composer-status-banner.js +1 -1
  491. package/dist/components/bs-composer.js +1 -1
  492. package/dist/components/bs-container.js +1 -1
  493. package/dist/components/bs-cookie-consent.js +1 -1
  494. package/dist/components/bs-data-table.js +1 -1
  495. package/dist/components/bs-datepicker.js +1 -1
  496. package/dist/components/bs-description-item.d.ts +11 -0
  497. package/dist/components/bs-description-item.js +1 -0
  498. package/dist/components/bs-description-list.d.ts +11 -0
  499. package/dist/components/bs-description-list.js +1 -0
  500. package/dist/components/bs-dialog.js +1 -1
  501. package/dist/components/bs-divider.js +1 -1
  502. package/dist/components/bs-dropdown.d.ts +11 -0
  503. package/dist/components/bs-dropdown.js +1 -0
  504. package/dist/components/bs-empty-state.js +1 -1
  505. package/dist/components/bs-error-page.js +1 -1
  506. package/dist/components/bs-file-upload-item.js +1 -1
  507. package/dist/components/bs-file-upload.js +1 -1
  508. package/dist/components/bs-global-search.js +1 -1
  509. package/dist/components/bs-grid.js +1 -1
  510. package/dist/components/bs-heading.d.ts +11 -0
  511. package/dist/components/bs-heading.js +1 -0
  512. package/dist/components/bs-icon-button.js +1 -1
  513. package/dist/components/bs-icon-tile.js +1 -1
  514. package/dist/components/bs-icon.d.ts +11 -0
  515. package/dist/components/bs-icon.js +1 -0
  516. package/dist/components/bs-inline-tab.js +1 -1
  517. package/dist/components/bs-input.js +1 -1
  518. package/dist/components/bs-key-caps.js +1 -1
  519. package/dist/components/bs-key.js +1 -1
  520. package/dist/components/bs-keyboard-shortcuts.js +1 -1
  521. package/dist/components/bs-link.d.ts +11 -0
  522. package/dist/components/bs-link.js +1 -0
  523. package/dist/components/bs-list-item.js +1 -1
  524. package/dist/components/bs-list.js +1 -1
  525. package/dist/components/bs-logo.js +1 -1
  526. package/dist/components/bs-mega-menu.js +1 -1
  527. package/dist/components/bs-menu-block.js +1 -1
  528. package/dist/components/bs-menu-item.js +1 -1
  529. package/dist/components/bs-menu.js +1 -1
  530. package/dist/components/bs-message-list.js +1 -1
  531. package/dist/components/bs-message.js +1 -1
  532. package/dist/components/bs-navigation-drawer-item.js +1 -1
  533. package/dist/components/bs-navigation-drawer.js +1 -1
  534. package/dist/components/bs-navigation-header.js +1 -1
  535. package/dist/components/bs-onboarding-checklist.js +1 -1
  536. package/dist/components/bs-page-header.js +1 -1
  537. package/dist/components/bs-pagination.js +1 -1
  538. package/dist/components/bs-popover.js +1 -1
  539. package/dist/components/bs-presence.js +1 -1
  540. package/dist/components/bs-product-tour.js +1 -1
  541. package/dist/components/bs-progress-linear.js +1 -1
  542. package/dist/components/bs-progress.js +1 -1
  543. package/dist/components/bs-qr-code.js +1 -1
  544. package/dist/components/bs-radio-group.d.ts +11 -0
  545. package/dist/components/bs-radio-group.js +1 -0
  546. package/dist/components/bs-radio.js +1 -1
  547. package/dist/components/bs-ripple.js +1 -1
  548. package/dist/components/bs-search-item.js +1 -1
  549. package/dist/components/bs-select.d.ts +11 -0
  550. package/dist/components/bs-select.js +1 -0
  551. package/dist/components/bs-session-timeout.js +1 -1
  552. package/dist/components/bs-shortcut-row.js +1 -1
  553. package/dist/components/bs-side-panel.js +1 -1
  554. package/dist/components/bs-skeleton.js +1 -1
  555. package/dist/components/bs-skip-link.d.ts +11 -0
  556. package/dist/components/bs-skip-link.js +1 -0
  557. package/dist/components/bs-slider.js +1 -1
  558. package/dist/components/bs-snackbar.js +1 -1
  559. package/dist/components/bs-source-link.js +1 -1
  560. package/dist/components/bs-spinner.js +1 -1
  561. package/dist/components/bs-split-pane.js +1 -1
  562. package/dist/components/bs-stack.js +1 -1
  563. package/dist/components/bs-stat.d.ts +11 -0
  564. package/dist/components/bs-stat.js +1 -0
  565. package/dist/components/bs-stepper-step.js +1 -1
  566. package/dist/components/bs-stepper.js +1 -1
  567. package/dist/components/bs-switch.js +1 -1
  568. package/dist/components/bs-tab.js +1 -1
  569. package/dist/components/bs-table-of-contents.d.ts +11 -0
  570. package/dist/components/bs-table-of-contents.js +1 -0
  571. package/dist/components/bs-tabs.js +1 -1
  572. package/dist/components/bs-tag.d.ts +11 -0
  573. package/dist/components/bs-tag.js +1 -0
  574. package/dist/components/bs-text.d.ts +11 -0
  575. package/dist/components/bs-text.js +1 -0
  576. package/dist/components/bs-timepicker.js +1 -1
  577. package/dist/components/bs-toast.js +1 -1
  578. package/dist/components/bs-toggle-button-group.d.ts +11 -0
  579. package/dist/components/bs-toggle-button-group.js +1 -0
  580. package/dist/components/bs-toggle-button.d.ts +11 -0
  581. package/dist/components/bs-toggle-button.js +1 -0
  582. package/dist/components/bs-toolbar.d.ts +11 -0
  583. package/dist/components/bs-toolbar.js +1 -0
  584. package/dist/components/bs-tooltip-trigger.js +1 -1
  585. package/dist/components/bs-tooltip.js +1 -1
  586. package/dist/components/bs-tree-item.js +1 -1
  587. package/dist/components/bs-tree.js +1 -1
  588. package/dist/components/bs-whats-new-entry.js +1 -1
  589. package/dist/components/bs-whats-new.js +1 -1
  590. package/dist/components/index.js +1 -1
  591. package/dist/components/{p-CFR3Q0io.js → p-BB1HiIxJ.js} +1 -1
  592. package/dist/components/p-BLJL4BVY.js +1 -0
  593. package/dist/components/{p-D5eN9Lfa.js → p-BR7C-aKy.js} +1 -1
  594. package/dist/components/{p-D3PuUD8Z.js → p-Ba8J2kHD.js} +1 -1
  595. package/dist/components/p-CALH_mHQ.js +1 -0
  596. package/dist/components/{p-lPTgyF9v.js → p-CL99S8-7.js} +1 -1
  597. package/dist/components/{p-BpkPo4ay.js → p-CXv8kx8w.js} +1 -1
  598. package/dist/components/{p-Dj393s3S.js → p-CZfbB-t_.js} +1 -1
  599. package/dist/components/p-CcAX4o5o.js +1 -0
  600. package/dist/components/{p-DXwatzvM.js → p-CePOtLtZ.js} +1 -1
  601. package/dist/components/{p-6Rr9bjVN.js → p-Cso2DKAz.js} +1 -1
  602. package/dist/components/{p-CVQycAap.js → p-CxNNy2m6.js} +1 -1
  603. package/dist/components/{p-CHZE_FrW.js → p-Cz38kNDe.js} +1 -1
  604. package/dist/components/p-D3XmFqCQ.js +1 -0
  605. package/dist/components/{p-Y5FyLR8G.js → p-D4W5LcEW.js} +1 -1
  606. package/dist/components/{p--Tyv3LIl.js → p-DARbgzSz.js} +1 -1
  607. package/dist/components/{p-DXbcyEgd.js → p-DBgafacj.js} +1 -1
  608. package/dist/components/p-DHZ_DStJ.js +1 -0
  609. package/dist/components/{p-BQ4rSQDm.js → p-DK1uv2fu.js} +1 -1
  610. package/dist/components/{p-DLnZG_G9.js → p-DL9HtG41.js} +1 -1
  611. package/dist/components/{p-Cr8cHmpM.js → p-DLNoxNuW.js} +1 -1
  612. package/dist/components/{p-4yShCgRb.js → p-DMp5CvEJ.js} +1 -1
  613. package/dist/components/p-DO4sVZCh.js +1 -0
  614. package/dist/components/{p-DDgzEg1C.js → p-DOW-YekD.js} +1 -1
  615. package/dist/components/{p-BTPdjnXT.js → p-DVqoLSEW.js} +1 -1
  616. package/dist/components/{p-DF2FcJPs.js → p-DYpJMHAH.js} +1 -1
  617. package/dist/components/{p-DtkTnaOp.js → p-DaKBSL2O.js} +1 -1
  618. package/dist/components/{p-ZfE38vXZ.js → p-Dlp2c-Ii.js} +1 -1
  619. package/dist/components/{p-XZXdZpt4.js → p-DnagAPBF.js} +1 -1
  620. package/dist/components/p-Dt3b6VYT.js +1 -0
  621. package/dist/components/{p-DcD5eV_Z.js → p-DztU3DwY.js} +1 -1
  622. package/dist/components/{p-BWRkbt0f.js → p-KiyJJwzr.js} +1 -1
  623. package/dist/components/p-Vo0zbGRB.js +1 -0
  624. package/dist/components/p-abyVFrPp.js +1 -0
  625. package/dist/components/p-mxDA3wKn.js +1 -0
  626. package/dist/components/p-wd9-vGpQ.js +1 -0
  627. package/dist/components/p-wscU7FUD.js +1 -0
  628. package/dist/esm/brandsync-wc.js +3 -3
  629. package/dist/esm/bs-accordion-group.entry.js +2 -2
  630. package/dist/esm/bs-accordion.entry.js +1 -1
  631. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  632. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  633. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  634. package/dist/esm/bs-app-recent-item_3.entry.js +5 -5
  635. package/dist/esm/bs-app-shell.entry.js +2 -2
  636. package/dist/esm/bs-app-switcher.entry.js +1 -1
  637. package/dist/esm/bs-attachment-list.entry.js +2 -2
  638. package/dist/esm/bs-attachment.entry.js +2 -2
  639. package/dist/esm/bs-avatar.entry.js +3 -10
  640. package/dist/esm/bs-badge.entry.js +2 -2
  641. package/dist/esm/bs-breadcrumb-overflow.entry.js +1 -1
  642. package/dist/esm/bs-breadcrumb.entry.js +3 -3
  643. package/dist/esm/bs-breadcrumbs.entry.js +10 -2
  644. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  645. package/dist/esm/bs-button_2.entry.js +17 -4
  646. package/dist/esm/bs-card.entry.js +44 -3
  647. package/dist/esm/bs-carousel.entry.js +1 -1
  648. package/dist/esm/bs-chatbot-feedback.entry.js +3 -7
  649. package/dist/esm/bs-chatbot-header.entry.js +3 -7
  650. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  651. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  652. package/dist/esm/bs-chatbot-suggestion-button.entry.js +3 -3
  653. package/dist/esm/bs-checkbox-group.entry.js +78 -0
  654. package/dist/esm/bs-checkbox-skeleton.entry.js +2 -2
  655. package/dist/esm/bs-checkbox.entry.js +1 -1
  656. package/dist/esm/bs-chip-filter.entry.js +2 -2
  657. package/dist/esm/bs-chip-informative.entry.js +2 -2
  658. package/dist/esm/bs-chip-input.entry.js +2 -2
  659. package/dist/esm/bs-citation-preview.entry.js +2 -2
  660. package/dist/esm/bs-code-block.entry.js +73 -0
  661. package/dist/esm/bs-command-palette.entry.js +2 -2
  662. package/dist/esm/bs-compact-menu-block_2.entry.js +5 -5
  663. package/dist/esm/bs-company-switcher.entry.js +3 -3
  664. package/dist/esm/bs-composer-status-banner.entry.js +2 -2
  665. package/dist/esm/bs-composer.entry.js +6 -4
  666. package/dist/esm/bs-container.entry.js +2 -2
  667. package/dist/esm/bs-cookie-consent.entry.js +1 -1
  668. package/dist/esm/bs-data-table.entry.js +8 -5
  669. package/dist/esm/bs-datepicker.entry.js +2 -2
  670. package/dist/esm/bs-description-item.entry.js +21 -0
  671. package/dist/esm/bs-description-list.entry.js +38 -0
  672. package/dist/esm/bs-dialog.entry.js +1 -1
  673. package/dist/esm/bs-divider.entry.js +2 -2
  674. package/dist/esm/bs-dropdown.entry.js +94 -0
  675. package/dist/esm/bs-empty-state.entry.js +7 -3
  676. package/dist/esm/bs-error-page.entry.js +2 -2
  677. package/dist/esm/bs-file-upload-item.entry.js +2 -2
  678. package/dist/esm/bs-file-upload.entry.js +2 -2
  679. package/dist/esm/bs-global-search.entry.js +3 -3
  680. package/dist/esm/bs-grid.entry.js +3 -3
  681. package/dist/esm/bs-heading.entry.js +26 -0
  682. package/dist/esm/bs-icon-button.entry.js +10 -3
  683. package/dist/esm/bs-icon-tile.entry.js +3 -3
  684. package/dist/esm/bs-icon.entry.js +33 -0
  685. package/dist/esm/bs-inline-tab.entry.js +3 -3
  686. package/dist/esm/bs-input_4.entry.js +789 -0
  687. package/dist/esm/bs-key-caps.entry.js +2 -2
  688. package/dist/esm/bs-key.entry.js +2 -2
  689. package/dist/esm/bs-keyboard-shortcuts.entry.js +3 -3
  690. package/dist/esm/bs-link.entry.js +50 -0
  691. package/dist/esm/bs-list-item.entry.js +66 -0
  692. package/dist/esm/bs-list.entry.js +9 -3
  693. package/dist/esm/bs-logo.entry.js +1 -1
  694. package/dist/esm/bs-mega-menu.entry.js +2 -2
  695. package/dist/esm/bs-message-list.entry.js +2 -2
  696. package/dist/esm/bs-message.entry.js +2 -2
  697. package/dist/esm/bs-navigation-drawer-item.entry.js +26 -5
  698. package/dist/esm/bs-navigation-drawer.entry.js +4 -4
  699. package/dist/esm/bs-navigation-header.entry.js +4 -4
  700. package/dist/esm/bs-onboarding-checklist.entry.js +1 -1
  701. package/dist/esm/bs-page-header.entry.js +2 -2
  702. package/dist/esm/bs-pagination.entry.js +2 -2
  703. package/dist/esm/{bs-list-item_2.entry.js → bs-popover.entry.js} +3 -64
  704. package/dist/esm/bs-presence.entry.js +2 -2
  705. package/dist/esm/bs-product-tour.entry.js +1 -1
  706. package/dist/esm/bs-progress-linear.entry.js +4 -4
  707. package/dist/esm/bs-progress.entry.js +3 -3
  708. package/dist/esm/bs-qr-code.entry.js +2 -2
  709. package/dist/esm/bs-radio-group.entry.js +88 -0
  710. package/dist/esm/bs-radio.entry.js +6 -2
  711. package/dist/esm/bs-search-item.entry.js +2 -2
  712. package/dist/esm/bs-select.entry.js +232 -0
  713. package/dist/esm/bs-session-timeout.entry.js +2 -2
  714. package/dist/esm/bs-shortcut-row.entry.js +2 -2
  715. package/dist/esm/bs-side-panel.entry.js +1 -1
  716. package/dist/esm/bs-skip-link.entry.js +50 -0
  717. package/dist/esm/bs-slider.entry.js +3 -3
  718. package/dist/esm/bs-snackbar.entry.js +3 -3
  719. package/dist/esm/bs-source-link.entry.js +4 -4
  720. package/dist/esm/bs-split-pane.entry.js +2 -2
  721. package/dist/esm/bs-stack.entry.js +2 -2
  722. package/dist/esm/bs-stat.entry.js +51 -0
  723. package/dist/esm/bs-stepper-step.entry.js +2 -2
  724. package/dist/esm/bs-stepper.entry.js +2 -2
  725. package/dist/esm/bs-switch.entry.js +2 -2
  726. package/dist/esm/bs-tab_3.entry.js +16 -9
  727. package/dist/esm/bs-table-of-contents.entry.js +169 -0
  728. package/dist/esm/bs-tag.entry.js +49 -0
  729. package/dist/esm/bs-text.entry.js +22 -0
  730. package/dist/esm/bs-timepicker.entry.js +3 -3
  731. package/dist/esm/bs-toast.entry.js +2 -2
  732. package/dist/esm/bs-toggle-button-group.entry.js +106 -0
  733. package/dist/esm/bs-toggle-button.entry.js +55 -0
  734. package/dist/esm/bs-toolbar.entry.js +193 -0
  735. package/dist/esm/bs-tooltip-trigger.entry.js +2 -2
  736. package/dist/esm/bs-tooltip.entry.js +2 -2
  737. package/dist/esm/bs-tree-item.entry.js +3 -3
  738. package/dist/esm/bs-tree.entry.js +2 -2
  739. package/dist/esm/bs-whats-new.entry.js +1 -1
  740. package/dist/esm/icon-registry-Vo0zbGRB.js +60 -0
  741. package/dist/esm/{index-D3SkQJpw.js → index-wz7B473u.js} +1 -1
  742. package/dist/esm/index.js +2 -0
  743. package/dist/esm/loader.js +3 -3
  744. package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.d.ts +9 -0
  745. package/dist/types/components/bs-button/bs-button/bs-button.d.ts +22 -6
  746. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +7 -0
  747. package/dist/types/components/bs-card/bs-card.d.ts +35 -0
  748. package/dist/types/components/bs-card/bs-card.stories.d.ts +3 -0
  749. package/dist/types/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.d.ts +3 -0
  750. package/dist/types/components/bs-checkbox-group/bs-checkbox-group.cmp.test.d.ts +1 -0
  751. package/dist/types/components/bs-checkbox-group/bs-checkbox-group.d.ts +48 -0
  752. package/dist/types/components/bs-checkbox-group/bs-checkbox-group.stories.d.ts +15 -0
  753. package/dist/types/components/bs-code-block/bs-code-block.cmp.test.d.ts +1 -0
  754. package/dist/types/components/bs-code-block/bs-code-block.d.ts +68 -0
  755. package/dist/types/components/bs-code-block/bs-code-block.stories.d.ts +18 -0
  756. package/dist/types/components/bs-data-table/bs-data-table.d.ts +11 -0
  757. package/dist/types/components/bs-description-item/bs-description-item.cmp.test.d.ts +1 -0
  758. package/dist/types/components/bs-description-item/bs-description-item.d.ts +34 -0
  759. package/dist/types/components/bs-description-list/bs-description-list.cmp.test.d.ts +1 -0
  760. package/dist/types/components/bs-description-list/bs-description-list.d.ts +33 -0
  761. package/dist/types/components/bs-description-list/bs-description-list.stories.d.ts +11 -0
  762. package/dist/types/components/bs-dropdown/bs-dropdown.cmp.test.d.ts +1 -0
  763. package/dist/types/components/bs-dropdown/bs-dropdown.d.ts +51 -0
  764. package/dist/types/components/bs-dropdown/bs-dropdown.stories.d.ts +12 -0
  765. package/dist/types/components/bs-empty-state/bs-empty-state.d.ts +6 -0
  766. package/dist/types/components/bs-empty-state/bs-empty-state.stories.d.ts +3 -0
  767. package/dist/types/components/bs-heading/bs-heading.cmp.test.d.ts +1 -0
  768. package/dist/types/components/bs-heading/bs-heading.d.ts +34 -0
  769. package/dist/types/components/bs-heading/bs-heading.stories.d.ts +15 -0
  770. package/dist/types/components/bs-icon/bs-icon.cmp.test.d.ts +1 -0
  771. package/dist/types/components/bs-icon/bs-icon.d.ts +39 -0
  772. package/dist/types/components/bs-icon/bs-icon.stories.d.ts +16 -0
  773. package/dist/types/components/bs-icon/icon-registry.d.ts +16 -0
  774. package/dist/types/components/bs-input/bs-input.d.ts +83 -12
  775. package/dist/types/components/bs-input/bs-input.stories.d.ts +3 -1
  776. package/dist/types/components/bs-link/bs-link.cmp.test.d.ts +1 -0
  777. package/dist/types/components/bs-link/bs-link.d.ts +48 -0
  778. package/dist/types/components/bs-link/bs-link.stories.d.ts +19 -0
  779. package/dist/types/components/bs-list/bs-list.d.ts +6 -0
  780. package/dist/types/components/bs-list/bs-list.stories.d.ts +4 -0
  781. package/dist/types/components/bs-list-item/bs-list-item.d.ts +3 -0
  782. package/dist/types/components/bs-radio/bs-radio.d.ts +4 -0
  783. package/dist/types/components/bs-radio-group/bs-radio-group.cmp.test.d.ts +1 -0
  784. package/dist/types/components/bs-radio-group/bs-radio-group.d.ts +57 -0
  785. package/dist/types/components/bs-radio-group/bs-radio-group.stories.d.ts +16 -0
  786. package/dist/types/components/bs-select/bs-select.cmp.test.d.ts +1 -0
  787. package/dist/types/components/bs-select/bs-select.d.ts +85 -0
  788. package/dist/types/components/bs-select/bs-select.stories.d.ts +19 -0
  789. package/dist/types/components/bs-skip-link/bs-skip-link.cmp.test.d.ts +1 -0
  790. package/dist/types/components/bs-skip-link/bs-skip-link.d.ts +40 -0
  791. package/dist/types/components/bs-skip-link/bs-skip-link.stories.d.ts +10 -0
  792. package/dist/types/components/bs-stat/bs-stat.cmp.test.d.ts +1 -0
  793. package/dist/types/components/bs-stat/bs-stat.d.ts +56 -0
  794. package/dist/types/components/bs-stat/bs-stat.stories.d.ts +16 -0
  795. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.d.ts +0 -1
  796. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +5 -3
  797. package/dist/types/components/bs-table-of-contents/bs-table-of-contents.cmp.test.d.ts +1 -0
  798. package/dist/types/components/bs-table-of-contents/bs-table-of-contents.d.ts +96 -0
  799. package/dist/types/components/bs-table-of-contents/bs-table-of-contents.stories.d.ts +13 -0
  800. package/dist/types/components/bs-tag/bs-tag.cmp.test.d.ts +1 -0
  801. package/dist/types/components/bs-tag/bs-tag.d.ts +49 -0
  802. package/dist/types/components/bs-tag/bs-tag.stories.d.ts +16 -0
  803. package/dist/types/components/bs-text/bs-text.cmp.test.d.ts +1 -0
  804. package/dist/types/components/bs-text/bs-text.d.ts +31 -0
  805. package/dist/types/components/bs-text/bs-text.stories.d.ts +14 -0
  806. package/dist/types/components/bs-toggle-button/bs-toggle-button.cmp.test.d.ts +1 -0
  807. package/dist/types/components/bs-toggle-button/bs-toggle-button.d.ts +48 -0
  808. package/dist/types/components/bs-toggle-button/bs-toggle-button.stories.d.ts +13 -0
  809. package/dist/types/components/bs-toggle-button-group/bs-toggle-button-group.cmp.test.d.ts +1 -0
  810. package/dist/types/components/bs-toggle-button-group/bs-toggle-button-group.d.ts +42 -0
  811. package/dist/types/components/bs-toggle-button-group/bs-toggle-button-group.stories.d.ts +13 -0
  812. package/dist/types/components/bs-toolbar/bs-toolbar.cmp.test.d.ts +1 -0
  813. package/dist/types/components/bs-toolbar/bs-toolbar.d.ts +88 -0
  814. package/dist/types/components/bs-toolbar/bs-toolbar.stories.d.ts +13 -0
  815. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.d.ts +11 -1
  816. package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.d.ts +3 -0
  817. package/dist/types/components.d.ts +3107 -88
  818. package/dist/types/index.d.ts +1 -0
  819. package/dist/types/test/helpers/block-link-navigation.d.ts +8 -0
  820. package/dist/types/test/helpers/contrast.d.ts +5 -0
  821. package/package.json +1 -1
  822. package/reference.d.ts +63 -9
  823. package/reference.json +668 -15
  824. package/dist/brandsync-wc/p-08649f52.entry.js +0 -1
  825. package/dist/brandsync-wc/p-1580c56c.entry.js +0 -1
  826. package/dist/brandsync-wc/p-171fa239.entry.js +0 -1
  827. package/dist/brandsync-wc/p-197ac73f.entry.js +0 -1
  828. package/dist/brandsync-wc/p-270b2cb0.entry.js +0 -1
  829. package/dist/brandsync-wc/p-28c38959.entry.js +0 -1
  830. package/dist/brandsync-wc/p-2a967b45.entry.js +0 -1
  831. package/dist/brandsync-wc/p-2b3d0bd4.entry.js +0 -1
  832. package/dist/brandsync-wc/p-3627e0c6.entry.js +0 -1
  833. package/dist/brandsync-wc/p-38a2210a.entry.js +0 -1
  834. package/dist/brandsync-wc/p-3b212a8a.entry.js +0 -1
  835. package/dist/brandsync-wc/p-4dfd4715.entry.js +0 -1
  836. package/dist/brandsync-wc/p-6afacd47.entry.js +0 -1
  837. package/dist/brandsync-wc/p-6f32a08e.entry.js +0 -1
  838. package/dist/brandsync-wc/p-D3SkQJpw.js +0 -3
  839. package/dist/brandsync-wc/p-ab301e9d.entry.js +0 -1
  840. package/dist/brandsync-wc/p-d15e48eb.entry.js +0 -1
  841. package/dist/brandsync-wc/p-e776d145.entry.js +0 -1
  842. package/dist/brandsync-wc/p-eb680cff.entry.js +0 -1
  843. package/dist/brandsync-wc/p-f4628861.entry.js +0 -1
  844. package/dist/brandsync-wc/p-f5e6fdf8.entry.js +0 -1
  845. package/dist/brandsync-wc/p-f93127e1.entry.js +0 -1
  846. package/dist/cjs/bs-input_3.cjs.entry.js +0 -461
  847. package/dist/cjs/bs-spinner.cjs.entry.js +0 -24
  848. package/dist/components/p-B2gx7SZk.js +0 -1
  849. package/dist/components/p-BHzj13sd.js +0 -1
  850. package/dist/components/p-BIxcCDgl.js +0 -1
  851. package/dist/components/p-BfCah-Ij.js +0 -1
  852. package/dist/components/p-CvSewXZF.js +0 -1
  853. package/dist/components/p-DsBToIYE.js +0 -1
  854. package/dist/components/p-EGNLb4cQ.js +0 -1
  855. package/dist/components/p-Jik5UkAe.js +0 -1
  856. package/dist/components/p-syO0ipbw.js +0 -1
  857. package/dist/components/p-up01gvHY.js +0 -1
  858. package/dist/esm/bs-input_3.entry.js +0 -457
  859. package/dist/esm/bs-spinner.entry.js +0 -22
@@ -5,7 +5,9 @@ import { h } from "@stencil/core";
5
5
  * select, textarea, chip input, initials, country, and pin) via the `type` prop, since they all
6
6
  * share the same label/description/error/icon-slot chrome.
7
7
  *
8
- * Built from: `bs-menu`/`bs-menu-item` (`type="dropdown"`) and `bs-chip-informative` + `bs-icon-button` (`type="chip"`).
8
+ * Built from: `bs-menu`/`bs-menu-item` (`type="dropdown"`), `bs-chip-informative` + `bs-icon-button` (`type="chip"`),
9
+ * and `bs-icon-button` + `bs-spinner` (`type="combobox"` clear button / loading indicator; its listbox is a
10
+ * hand-built `role="listbox"` because `bs-menu` is `role="menu"` and cannot host `option`s).
9
11
  *
10
12
  * ## When to use
11
13
  * - Collecting a single line of free-text, email, password, or numeric input.
@@ -28,13 +30,15 @@ import { h } from "@stencil/core";
28
30
  * For `type="date"`, the slot is used if provided, otherwise a default calendar icon is shown.
29
31
  * @part field - The bordered field wrapper containing the icon(s) and native control(s).
30
32
  * `type="initials"` renders this part on TWO separate elements instead of one (the title
31
- * `<select>`'s own small box, and the name `<input>`'s own box) -- Figma specs these as two
33
+ * picker's own small box, and the name `<input>`'s own box) -- Figma specs these as two
32
34
  * genuinely independent bordered containers with a gap between them, not one shared field the
33
- * way every other composite type (`country` included) renders, so `::part(field)` reaches
35
+ * way every other composite type renders, so `::part(field)` reaches
34
36
  * whichever of the two a given selector context matches, same "multiple elements, one shared
35
37
  * part name" convention as `bs-attachment`'s own `star` part.
36
38
  * @part menu - The `bs-menu` rendered below the field for `type="dropdown"` when `open` and
37
- * `options` is non-empty.
39
+ * `options` is non-empty; for `type="combobox"` the popup (listbox + status message) while `open`.
40
+ * @part option - A single `role="option"` row of the `type="combobox"` listbox.
41
+ * @part clear - The clear button (`bs-icon-button`) of `type="combobox"`.
38
42
  * @part label - The `<label>` element.
39
43
  * @part required - The red `*` rendered after the label text when `required` is set.
40
44
  * @part icon - The leading icon wrapper element.
@@ -70,6 +74,10 @@ export class BsInput {
70
74
  decrementLabel = 'Decrement';
71
75
  type = 'text';
72
76
  label;
77
+ /** Accessible name for the control, used only when no visible `label` is set (e.g. a search field
78
+ * with no visible label). Passed to the inner native control, because an `aria-label` on the
79
+ * `<bs-input>` host cannot name an element inside its shadow root. */
80
+ ariaLabel = null;
73
81
  placeholder;
74
82
  description;
75
83
  error;
@@ -83,7 +91,7 @@ export class BsInput {
83
91
  min;
84
92
  /** Maximum value for `type="number"`'s stepper buttons. */
85
93
  max;
86
- /** Options for `type="select"` (rendered as native `<option>`s) and `type="dropdown"` (rendered
94
+ /** Options for `type="select"` (rendered as `role="option"` rows of an in-shadow listbox) and `type="dropdown"` (rendered
87
95
  * as a `bs-menu` of `bs-menu-item`s when `open`). Must be set as a JS property, not an HTML
88
96
  * attribute -- see CONVENTIONS.md's non-string props rule. */
89
97
  options = [];
@@ -99,14 +107,33 @@ export class BsInput {
99
107
  * `title` is a reserved standard HTML attribute (tooltip text) inherited by every element, and
100
108
  * Stencil warns against shadowing it with a component `@Prop`. */
101
109
  initialsTitle = '';
110
+ /** `type="initials"`: accessible name of the title picker (its visible text is just the title). */
111
+ titleLabel = 'Title';
102
112
  /** Country select options for `type="country"`. Must be set as a JS property, not an HTML
103
113
  * attribute -- see CONVENTIONS.md's non-string props rule. */
104
114
  countryOptions = [];
105
115
  /** Current selected country code for `type="country"`. */
106
116
  country = '';
117
+ /** `type="country"`: accessible name of the country picker (its visible content is just the flag). */
118
+ countryLabel = 'Country';
107
119
  /** Number of cells for `type="pin"`. */
108
120
  length = 4;
109
- /** Whether the `type="dropdown"` trigger is open. Reflects to an attribute so consumers can style
121
+ /** `type="combobox"`: shows a loading indicator and, while no options match, a loading message
122
+ * in the popup instead of "no results". Use while fetching `options` asynchronously. */
123
+ loading = false;
124
+ /** `type="combobox"`: when true (default) `options` are filtered client-side by whether the label
125
+ * contains the typed text. Set false when you supply already-filtered results yourself (e.g. from
126
+ * a server) in response to `bsInput`. */
127
+ filterOptions = true;
128
+ /** `type="combobox"`: text of the popup row shown when no option matches. */
129
+ noResultsLabel = 'No results';
130
+ /** `type="combobox"`: text of the popup row shown while `loading` and nothing matches. */
131
+ loadingLabel = 'Loading...';
132
+ /** `type="combobox"`: accessible name of the clear button. */
133
+ clearLabel = 'Clear';
134
+ /** `type="date"`: accessible name of the default calendar button that opens the native picker. */
135
+ openPickerLabel = 'Open date picker';
136
+ /** Whether the `type="dropdown"` / `type="combobox"` popup is open. Reflects to an attribute so consumers can style
110
137
  * an open state via CSS. When `options` is non-empty, this also controls whether the `bs-menu`
111
138
  * of `bs-menu-item`s is rendered below the field. */
112
139
  open = false;
@@ -116,12 +143,15 @@ export class BsInput {
116
143
  * shell-only limitation. */
117
144
  bsOpen;
118
145
  /** Emitted when a chip is committed (Enter pressed in the draft input) for `type="chip"`. */
146
+ /** Emitted when an option is chosen for `type="combobox"` (click or Enter), with the option's
147
+ * `{ label, value }`. `value` of the component itself becomes the option's label (the text shown). */
148
+ bsOptionSelect;
119
149
  bsChipAdd;
120
150
  /** Emitted when a chip's remove button is clicked for `type="chip"`. */
121
151
  bsChipRemove;
122
- /** Emitted when the title `<select>` changes for `type="initials"`. */
152
+ /** Emitted when a title is chosen from the picker for `type="initials"`. */
123
153
  bsTitleChange;
124
- /** Emitted when the country `<select>` changes for `type="country"`. */
154
+ /** Emitted when a country is chosen from the picker for `type="country"`. */
125
155
  bsCountryChange;
126
156
  /** Tracks whether the `icon` slot has assigned content, so the leading icon wrapper only takes
127
157
  * up space in the field when there's actually an icon (same pattern as `bs-button`). */
@@ -134,7 +164,50 @@ export class BsInput {
134
164
  passwordVisible = false;
135
165
  /** Draft text for `type="chip"`'s trailing input, committed to a chip on Enter. */
136
166
  chipDraft = '';
167
+ /** Index into the visible (filtered) options of the active option for `type="combobox"`, -1 for none. */
168
+ activeIndex = -1;
169
+ /** True once the user has typed in the `type="combobox"` input, so opening it with a value that is
170
+ * already a chosen label still lists every option instead of only that one. */
171
+ comboFiltering = false;
137
172
  pinInputs = [];
173
+ get isPopupType() {
174
+ return this.type === 'dropdown' || this.type === 'combobox';
175
+ }
176
+ /** `select`, `initials` (title) and `country` render a trigger button plus an in-shadow listbox
177
+ * styled like `bs-menu`, instead of a native `<select>` whose popup cannot be themed. */
178
+ get isPickerType() {
179
+ return this.type === 'select' || this.type === 'initials' || this.type === 'country';
180
+ }
181
+ typeahead = '';
182
+ typeaheadTimer;
183
+ get pickerItems() {
184
+ if (this.type === 'select')
185
+ return this.options.map(o => ({ value: o.value, label: o.label }));
186
+ if (this.type === 'initials')
187
+ return this.titleOptions.map(o => ({ value: o, label: o }));
188
+ if (this.type === 'country') {
189
+ return this.countryOptions.map(o => ({ value: o.code, label: `${o.code} ${o.label}`, flag: o.flagIcon }));
190
+ }
191
+ return [];
192
+ }
193
+ get pickerSelectedValue() {
194
+ return this.type === 'select' ? this.value : this.type === 'initials' ? this.initialsTitle : this.country;
195
+ }
196
+ get pickerSelectedIndex() {
197
+ return this.pickerItems.findIndex(i => i.value === this.pickerSelectedValue);
198
+ }
199
+ get visibleOptions() {
200
+ if (this.type !== 'combobox' || !this.filterOptions || !this.comboFiltering || !this.value)
201
+ return this.options;
202
+ const q = this.value.toLowerCase();
203
+ return this.options.filter(o => o.label.toLowerCase().includes(q));
204
+ }
205
+ componentDidRender() {
206
+ if ((this.type === 'combobox' || this.isPickerType) && this.open && this.activeIndex >= 0) {
207
+ const opt = this.el.shadowRoot?.getElementById(`option-${this.activeIndex}`);
208
+ opt?.scrollIntoView?.({ block: 'nearest' });
209
+ }
210
+ }
138
211
  /** Computes the initial `hasIcon`/`hasEndIcon` state directly from the host's light DOM
139
212
  * children, before first render -- see `bs-button`'s `componentWillLoad` for why `slotchange`
140
213
  * alone isn't enough for a slot that starts (and stays) empty. */
@@ -189,8 +262,90 @@ export class BsInput {
189
262
  onInput = (ev) => {
190
263
  const value = ev.target.value;
191
264
  this.value = value;
265
+ if (this.type === 'combobox') {
266
+ this.comboFiltering = true;
267
+ this.activeIndex = -1;
268
+ this.setOpen(true);
269
+ }
192
270
  this.bsInput.emit(value);
193
271
  };
272
+ setOpen(open) {
273
+ if (this.open === open)
274
+ return;
275
+ this.open = open;
276
+ if (!open) {
277
+ this.activeIndex = -1;
278
+ this.comboFiltering = false;
279
+ }
280
+ this.bsOpen.emit(open);
281
+ }
282
+ onComboboxKeydown = (ev) => {
283
+ if (this.disabled)
284
+ return;
285
+ const n = this.visibleOptions.length;
286
+ switch (ev.key) {
287
+ case 'ArrowDown':
288
+ case 'ArrowUp': {
289
+ ev.preventDefault();
290
+ if (!this.open) {
291
+ this.setOpen(true);
292
+ this.activeIndex = n === 0 ? -1 : ev.key === 'ArrowDown' ? 0 : n - 1;
293
+ }
294
+ else if (n > 0) {
295
+ const down = ev.key === 'ArrowDown';
296
+ this.activeIndex = this.activeIndex === -1 ? (down ? 0 : n - 1) : (this.activeIndex + (down ? 1 : -1) + n) % n;
297
+ }
298
+ break;
299
+ }
300
+ // Home/End only drive the list while an option is active; otherwise they keep moving the
301
+ // caret in the text field, as users expect from an editable combobox.
302
+ case 'Home':
303
+ case 'End':
304
+ if (this.open && this.activeIndex >= 0 && n > 0) {
305
+ ev.preventDefault();
306
+ this.activeIndex = ev.key === 'Home' ? 0 : n - 1;
307
+ }
308
+ break;
309
+ case 'Enter':
310
+ if (this.open && this.activeIndex >= 0 && this.visibleOptions[this.activeIndex]) {
311
+ ev.preventDefault();
312
+ this.selectComboOption(this.visibleOptions[this.activeIndex]);
313
+ }
314
+ break;
315
+ }
316
+ };
317
+ selectComboOption(option) {
318
+ this.value = option.label;
319
+ this.setOpen(false);
320
+ this.bsChange.emit(this.value);
321
+ this.bsOptionSelect.emit({ label: option.label, value: option.value });
322
+ }
323
+ onClear = () => {
324
+ if (this.disabled)
325
+ return;
326
+ this.value = '';
327
+ this.comboFiltering = true;
328
+ this.activeIndex = -1;
329
+ this.bsInput.emit('');
330
+ this.bsChange.emit('');
331
+ this.el.shadowRoot?.getElementById('control')?.focus();
332
+ };
333
+ onDatePickerOpen = () => {
334
+ if (this.disabled || this.type !== 'date')
335
+ return;
336
+ const input = this.el.shadowRoot?.getElementById('control');
337
+ if (!input)
338
+ return;
339
+ try {
340
+ if (typeof input.showPicker === 'function')
341
+ input.showPicker();
342
+ else
343
+ input.focus();
344
+ }
345
+ catch {
346
+ input.focus();
347
+ }
348
+ };
194
349
  onChange = (ev) => {
195
350
  const value = ev.target.value;
196
351
  this.value = value;
@@ -241,21 +396,35 @@ export class BsInput {
241
396
  * default @Listen target, and both keydown from the native control and from `bs-menu-item`
242
397
  * buttons bubble/compose up to it). */
243
398
  onHostKeydown(ev) {
244
- if (this.type === 'dropdown' && this.open && ev.key === 'Escape') {
245
- this.open = false;
399
+ if ((this.isPopupType || this.isPickerType) && this.open && ev.key === 'Escape') {
400
+ if (this.type === 'combobox' || this.isPickerType)
401
+ this.setOpen(false);
402
+ else
403
+ this.open = false;
246
404
  }
247
405
  }
248
406
  /** Closes the `type="dropdown"` menu once focus leaves the component entirely (e.g. Tab away, or
249
407
  * a click outside that moves focus elsewhere) -- `focusout` is composed, so it bubbles across
250
408
  * the `bs-menu-item` shadow boundary too. */
251
409
  onHostFocusOut(ev) {
252
- if (this.type !== 'dropdown' || !this.open)
410
+ if (!(this.isPopupType || this.isPickerType) || !this.open)
253
411
  return;
254
412
  const related = ev.relatedTarget;
255
413
  if (!related || !this.el.contains(related)) {
256
- this.open = false;
414
+ if (this.type === 'combobox' || this.isPickerType)
415
+ this.setOpen(false);
416
+ else
417
+ this.open = false;
257
418
  }
258
419
  }
420
+ /** Closes an open picker on a click anywhere outside the component (focusout alone misses clicks
421
+ * on non-focusable page areas in some browsers). */
422
+ onDocumentClick(ev) {
423
+ if (!this.isPickerType || !this.open)
424
+ return;
425
+ if (!ev.composedPath().includes(this.el))
426
+ this.setOpen(false);
427
+ }
259
428
  onChipDraftInput = (ev) => {
260
429
  this.chipDraft = ev.target.value;
261
430
  };
@@ -272,11 +441,108 @@ export class BsInput {
272
441
  onChipRemove = (chip) => () => {
273
442
  this.bsChipRemove.emit(chip);
274
443
  };
275
- onTitleChange = (ev) => {
276
- this.bsTitleChange.emit(ev.target.value);
444
+ pickerCommit(item) {
445
+ if (this.type === 'select') {
446
+ this.value = item.value;
447
+ this.bsInput.emit(item.value);
448
+ this.bsChange.emit(item.value);
449
+ }
450
+ else if (this.type === 'initials') {
451
+ this.initialsTitle = item.value;
452
+ this.bsTitleChange.emit(item.value);
453
+ }
454
+ else {
455
+ this.country = item.value;
456
+ this.bsCountryChange.emit(item.value);
457
+ }
458
+ }
459
+ pickerOpen() {
460
+ if (this.pickerItems.length === 0)
461
+ return;
462
+ this.setOpen(true);
463
+ this.activeIndex = Math.max(this.pickerSelectedIndex, 0);
464
+ }
465
+ onPickerToggle = () => {
466
+ if (this.disabled)
467
+ return;
468
+ if (this.open)
469
+ this.setOpen(false);
470
+ else
471
+ this.pickerOpen();
472
+ };
473
+ onPickerOptionClick = (item) => () => {
474
+ this.pickerCommit(item);
475
+ this.setOpen(false);
277
476
  };
278
- onCountryChange = (ev) => {
279
- this.bsCountryChange.emit(ev.target.value);
477
+ onPickerKeyup = (ev) => {
478
+ // Some browsers synthesize a click from Space on keyup even if keydown was prevented.
479
+ if (ev.key === ' ')
480
+ ev.preventDefault();
481
+ };
482
+ onPickerKeydown = (ev) => {
483
+ if (this.disabled)
484
+ return;
485
+ const items = this.pickerItems;
486
+ const n = items.length;
487
+ if (n === 0)
488
+ return;
489
+ switch (ev.key) {
490
+ case 'ArrowDown':
491
+ case 'ArrowUp': {
492
+ ev.preventDefault();
493
+ if (!this.open) {
494
+ this.pickerOpen();
495
+ }
496
+ else {
497
+ const down = ev.key === 'ArrowDown';
498
+ this.activeIndex = (this.activeIndex + (down ? 1 : -1) + n) % n;
499
+ }
500
+ return;
501
+ }
502
+ case 'Home':
503
+ case 'End':
504
+ ev.preventDefault();
505
+ if (!this.open)
506
+ this.pickerOpen();
507
+ this.activeIndex = ev.key === 'Home' ? 0 : n - 1;
508
+ return;
509
+ case 'Enter':
510
+ case ' ':
511
+ if (ev.key === ' ' && this.typeahead)
512
+ break;
513
+ ev.preventDefault();
514
+ if (this.open && this.activeIndex >= 0 && items[this.activeIndex]) {
515
+ this.pickerCommit(items[this.activeIndex]);
516
+ this.setOpen(false);
517
+ }
518
+ else if (!this.open) {
519
+ this.pickerOpen();
520
+ }
521
+ return;
522
+ case 'Tab':
523
+ return;
524
+ }
525
+ if (ev.key.length === 1 && !ev.ctrlKey && !ev.metaKey && !ev.altKey) {
526
+ ev.preventDefault();
527
+ this.typeahead += ev.key.toLowerCase();
528
+ clearTimeout(this.typeaheadTimer);
529
+ this.typeaheadTimer = setTimeout(() => (this.typeahead = ''), 500);
530
+ const from = this.open ? this.activeIndex : this.pickerSelectedIndex;
531
+ // The same repeated letter cycles through matches; a longer prefix keeps the current match.
532
+ const single = this.typeahead.split('').every(c => c === this.typeahead[0]);
533
+ const needle = single ? this.typeahead[0] : this.typeahead;
534
+ const start = single ? from + 1 : Math.max(from, 0);
535
+ for (let k = 0; k < n; k++) {
536
+ const idx = (start + k + n) % n;
537
+ if (items[idx].label.toLowerCase().startsWith(needle)) {
538
+ if (this.open)
539
+ this.activeIndex = idx;
540
+ else
541
+ this.pickerCommit(items[idx]);
542
+ return;
543
+ }
544
+ }
545
+ }
280
546
  };
281
547
  onPinInput = (index) => (ev) => {
282
548
  const input = ev.target;
@@ -297,7 +563,7 @@ export class BsInput {
297
563
  }
298
564
  };
299
565
  get showsEndIconArea() {
300
- return (this.type === 'number' || this.type === 'password' || this.type === 'dropdown' || this.type === 'date' || this.hasEndIcon);
566
+ return (this.type === 'number' || this.type === 'password' || this.type === 'dropdown' || this.type === 'combobox' || this.type === 'date' || this.hasEndIcon);
301
567
  }
302
568
  get showsIconArea() {
303
569
  return (this.type === 'search' && !this.hasIcon) || this.hasIcon;
@@ -315,29 +581,64 @@ export class BsInput {
315
581
  if (this.type === 'password') {
316
582
  return (h("button", { type: "button", part: "control", class: "bs-input__password-toggle", "aria-label": this.passwordVisible ? this.hidePasswordLabel : this.showPasswordLabel, disabled: this.disabled, onClick: this.onTogglePasswordVisibility }, this.passwordVisible ? (h("svg", { viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { d: "M1 8C2.2 5.5 4.9 3 8 3C11.1 3 13.8 5.5 15 8C13.8 10.5 11.1 13 8 13C4.9 13 2.2 10.5 1 8Z", stroke: "currentColor", "stroke-width": "1.2", "stroke-linejoin": "round" }), h("circle", { cx: "8", cy: "8", r: "2", stroke: "currentColor", "stroke-width": "1.2" }), h("path", { d: "M2 2L14 14", stroke: "currentColor", "stroke-width": "1.2", "stroke-linecap": "round" }))) : (h("svg", { viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { d: "M1 8C2.2 5.5 4.9 3 8 3C11.1 3 13.8 5.5 15 8C13.8 10.5 11.1 13 8 13C4.9 13 2.2 10.5 1 8Z", stroke: "currentColor", "stroke-width": "1.2", "stroke-linejoin": "round" }), h("circle", { cx: "8", cy: "8", r: "2", stroke: "currentColor", "stroke-width": "1.2" })))));
317
583
  }
584
+ if (this.type === 'combobox') {
585
+ return [
586
+ this.loading && h("bs-spinner", { class: "bs-input__combobox-spinner", size: "sm", label: this.loadingLabel }),
587
+ this.value && !this.disabled && (h("bs-icon-button", { part: "clear", class: "bs-input__clear", variant: "subtle", size: "xs", ariaLabel: this.clearLabel, onMouseDown: (ev) => ev.preventDefault(), onClick: this.onClear }, h(ChipRemoveIcon, null))),
588
+ h("svg", { class: "bs-input__chevron", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { d: "M4 6L8 10L12 6", stroke: "currentColor", "stroke-width": "1.3", "stroke-linecap": "round", "stroke-linejoin": "round" })),
589
+ ];
590
+ }
318
591
  if (this.type === 'dropdown') {
319
592
  return (h("svg", { class: "bs-input__chevron", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { d: "M4 6L8 10L12 6", stroke: "currentColor", "stroke-width": "1.3", "stroke-linecap": "round", "stroke-linejoin": "round" })));
320
593
  }
321
594
  if (this.type === 'date' && !this.hasEndIcon) {
322
- return (h("svg", { class: "bs-input__calendar", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("rect", { x: "2", y: "3", width: "12", height: "11", rx: "1", stroke: "currentColor", "stroke-width": "1.2" }), h("path", { d: "M2 6.5H14", stroke: "currentColor", "stroke-width": "1.2" }), h("path", { d: "M5 1.5V4M11 1.5V4", stroke: "currentColor", "stroke-width": "1.2", "stroke-linecap": "round" })));
595
+ return (h("button", { type: "button", class: "bs-input__calendar-btn", "aria-label": this.openPickerLabel, tabIndex: -1, disabled: this.disabled }, h("svg", { class: "bs-input__calendar", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("rect", { x: "2", y: "3", width: "12", height: "11", rx: "1", stroke: "currentColor", "stroke-width": "1.2" }), h("path", { d: "M2 6.5H14", stroke: "currentColor", "stroke-width": "1.2" }), h("path", { d: "M5 1.5V4M11 1.5V4", stroke: "currentColor", "stroke-width": "1.2", "stroke-linecap": "round" }))));
323
596
  }
324
597
  return h("slot", { name: "end-icon", onSlotchange: this.onEndIconSlotchange });
325
598
  }
326
599
  renderStandardControl() {
327
- const nativeType = this.type === 'password' ? (this.passwordVisible ? 'text' : 'password') : this.type === 'dropdown' ? 'text' : this.type;
600
+ const isCombobox = this.type === 'combobox';
601
+ const nativeType = this.type === 'password' ? (this.passwordVisible ? 'text' : 'password') : this.isPopupType ? 'text' : this.type;
602
+ const activeId = isCombobox && this.open && this.activeIndex >= 0 ? `option-${this.activeIndex}` : undefined;
328
603
  return (h("input", { id: "control", part: "control", class: "bs-input__control", type: nativeType, value: this.value, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.type === 'dropdown',
329
604
  // The popup state belongs on the focusable control (a roleless wrapper div can't carry
330
605
  // aria-haspopup/aria-expanded -- axe's aria-allowed-attr flags it).
331
- role: this.type === 'dropdown' ? 'combobox' : undefined, "aria-haspopup": this.type === 'dropdown' ? 'listbox' : undefined, "aria-expanded": this.type === 'dropdown' ? String(this.open) : undefined, min: this.type === 'number' ? this.min : undefined, max: this.type === 'number' ? this.max : undefined, step: this.type === 'number' ? this.step : undefined, "aria-describedby": this.error || this.description ? 'description-or-error' : undefined, "aria-invalid": this.error ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }));
606
+ role: this.isPopupType ? 'combobox' : undefined, "aria-haspopup": this.isPopupType ? 'listbox' : undefined, "aria-expanded": this.isPopupType ? String(this.open) : undefined, "aria-controls": isCombobox ? 'listbox' : undefined, "aria-activedescendant": activeId, "aria-autocomplete": isCombobox ? 'list' : undefined, autocomplete: isCombobox ? 'off' : undefined, "aria-label": this.label ? undefined : this.ariaLabel ?? undefined, min: this.type === 'number' ? this.min : undefined, max: this.type === 'number' ? this.max : undefined, step: this.type === 'number' ? this.step : undefined, "aria-describedby": this.error || this.description ? 'description-or-error' : undefined, "aria-invalid": this.error ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange, onKeyDown: isCombobox ? this.onComboboxKeydown : undefined }));
607
+ }
608
+ /** An image URL flag renders as `<img>`; anything else (an emoji) as text. */
609
+ renderFlag(flag) {
610
+ const isUrl = /^(https?:|\/|\.|data:)/.test(flag);
611
+ return isUrl ? (h("img", { part: "flag", class: "bs-input__flag bs-input__flag--img", src: flag, alt: "" })) : (h("span", { part: "flag", class: "bs-input__flag", "aria-hidden": "true" }, flag));
612
+ }
613
+ /** The trigger button of the select/title/country pickers: a focusable `role="combobox"` whose
614
+ * listbox lives in this same shadow root so aria-controls/aria-activedescendant resolve. */
615
+ renderPickerTrigger() {
616
+ const items = this.pickerItems;
617
+ const sel = items[this.pickerSelectedIndex];
618
+ const shown = sel ?? (this.placeholder ? undefined : items[0]);
619
+ const isCountry = this.type === 'country';
620
+ const isTitle = this.type === 'initials';
621
+ const isSelect = this.type === 'select';
622
+ const name = isCountry ? this.countryLabel : isTitle ? this.titleLabel : this.label ? undefined : this.ariaLabel ?? undefined;
623
+ const countryName = isCountry && shown ? this.countryOptions.find(o => o.code === shown.value)?.label : undefined;
624
+ const ariaLabel = isCountry ? `${name}${countryName ? `: ${countryName}` : ''}` : name;
625
+ return (h("button", { type: "button", id: isSelect ? 'control' : undefined, part: "control", class: `bs-input__control bs-input__picker-trigger ${isCountry ? 'bs-input__country-select' : isTitle ? 'bs-input__title-select' : ''}`, role: "combobox", "aria-haspopup": "listbox", "aria-expanded": String(this.open), "aria-controls": "listbox", "aria-activedescendant": this.open && this.activeIndex >= 0 ? `option-${this.activeIndex}` : undefined, "aria-label": ariaLabel, "aria-describedby": isSelect && (this.error || this.description) ? 'description-or-error' : undefined, "aria-invalid": isSelect && this.error ? 'true' : undefined, "aria-required": isSelect && this.required ? 'true' : undefined, disabled: this.disabled, onKeyDown: this.onPickerKeydown, onKeyUp: this.onPickerKeyup }, isCountry ? (shown?.flag ? (this.renderFlag(shown.flag)) : (h("span", { class: "bs-input__picker-text" }, shown?.value))) : (h("span", { class: "bs-input__picker-text" }, shown ? shown.label : this.placeholder))));
626
+ }
627
+ renderPickerPopup() {
628
+ const listName = this.type === 'initials' ? this.titleLabel : this.type === 'country' ? this.countryLabel : this.label || this.ariaLabel || undefined;
629
+ return (h("div", { part: "menu", class: "bs-input__combobox-popup bs-input__picker-popup" }, h("ul", { id: "listbox", role: "listbox", class: "bs-input__listbox", "aria-label": listName }, this.pickerItems.map((item, i) => {
630
+ const selected = item.value === this.pickerSelectedValue;
631
+ return (h("li", { key: item.value, id: `option-${i}`, part: "option", role: "option", "aria-selected": String(selected), class: `bs-input__option ${i === this.activeIndex ? 'bs-input__option--active' : ''} ${selected ? 'bs-input__option--selected' : ''}`, onMouseDown: (ev) => ev.preventDefault(), onClick: this.onPickerOptionClick(item) }, item.flag && this.renderFlag(item.flag), h("span", { class: "bs-input__option-label" }, item.label), selected && (h("svg", { class: "bs-input__option-check", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { d: "M3 8.5L6.5 12L13 4.5", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" })))));
632
+ }))));
332
633
  }
333
634
  renderSelectControl() {
334
- return (h("select", { id: "control", part: "control", class: "bs-input__control", disabled: this.disabled, "aria-describedby": this.error || this.description ? 'description-or-error' : undefined, "aria-invalid": this.error ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }, this.options.map(opt => (h("option", { value: opt.value, selected: opt.value === this.value }, opt.label)))));
635
+ return [this.renderPickerTrigger(), this.renderSelectChevron()];
335
636
  }
336
637
  renderTextareaControl() {
337
- return (h("textarea", { id: "control", part: "control", class: "bs-input__control bs-input__control--textarea", rows: this.rows, value: this.value, placeholder: this.placeholder, disabled: this.disabled, "aria-describedby": this.error || this.description ? 'description-or-error' : undefined, "aria-invalid": this.error ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }));
638
+ return (h("textarea", { id: "control", part: "control", class: "bs-input__control bs-input__control--textarea", rows: this.rows, value: this.value, placeholder: this.placeholder, disabled: this.disabled, "aria-describedby": this.error || this.description ? 'description-or-error' : undefined, "aria-invalid": this.error ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, "aria-label": this.label ? undefined : this.ariaLabel ?? undefined, onInput: this.onInput, onChange: this.onChange }));
338
639
  }
339
640
  renderChipControl() {
340
- return (h("div", { class: "bs-input__chips" }, this.chips.map(chip => (h("bs-chip-informative", { part: "chip", class: "bs-input__chip", size: "sm", disabled: this.disabled }, chip, h("bs-icon-button", { part: "chip-remove", class: "bs-input__chip-remove", variant: "subtle", size: "xs", ariaLabel: `Remove ${chip}`, disabled: this.disabled, onClick: this.onChipRemove(chip) }, h(ChipRemoveIcon, null))))), h("input", { id: "control", part: "control", class: "bs-input__control bs-input__chip-input", type: "text", value: this.chipDraft, placeholder: this.placeholder, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, onInput: this.onChipDraftInput, onKeyDown: this.onChipDraftKeydown })));
641
+ return (h("div", { class: "bs-input__chips" }, this.chips.map(chip => (h("bs-chip-informative", { part: "chip", class: "bs-input__chip", size: "md", disabled: this.disabled }, chip, h("bs-icon-button", { part: "chip-remove", class: "bs-input__chip-remove", variant: "subtle", size: "xs", ariaLabel: `Remove ${chip}`, disabled: this.disabled, onClick: this.onChipRemove(chip) }, h(ChipRemoveIcon, null))))), h("input", { id: "control", part: "control", class: "bs-input__control bs-input__chip-input", type: "text", value: this.chipDraft, placeholder: this.placeholder, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, onInput: this.onChipDraftInput, onKeyDown: this.onChipDraftKeydown })));
341
642
  }
342
643
  // type="initials" renders two genuinely separate bordered boxes side by side (each with its own
343
644
  // border/radius/background, a small gap between them), not one shared field wrapper -- Figma
@@ -347,7 +648,15 @@ export class BsInput {
347
648
  // `pin` already does with its own renderPinField().
348
649
  renderInitialsField() {
349
650
  const disabledClass = this.disabled ? 'bs-input__field--disabled' : '';
350
- return (h("div", { class: "bs-input__initials-row" }, h("div", { part: "field", class: `bs-input__field bs-input__field--initials-title ${this.error ? 'bs-input__field--error' : ''} ${disabledClass}` }, h("select", { part: "control", class: "bs-input__control bs-input__title-select", disabled: this.disabled, onChange: this.onTitleChange }, this.titleOptions.map(opt => (h("option", { value: opt, selected: opt === this.initialsTitle }, opt)))), this.renderSelectChevron()), h("div", { part: "field", class: `bs-input__field bs-input__field--initials-value ${this.error ? 'bs-input__field--error' : ''} ${disabledClass}` }, h("input", { id: "control", part: "control", class: "bs-input__control", type: "text", value: this.value, placeholder: this.placeholder, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }))));
651
+ const errorClass = this.error ? 'bs-input__field--error' : '';
652
+ return (h("div", { class: "bs-input__initials-row" }, h("div", { class: "bs-input__picker-wrap" }, h("div", { part: "field", class: `bs-input__field bs-input__field--initials-title ${errorClass} ${disabledClass}`, onClick: this.onPickerToggle }, this.renderPickerTrigger(), this.renderSelectChevron()), this.open && this.renderPickerPopup()), h("div", { part: "field", class: `bs-input__field bs-input__field--initials-value ${errorClass} ${disabledClass}` }, h("input", { id: "control", part: "control", class: "bs-input__control", type: "text", value: this.value, placeholder: this.placeholder, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }))));
653
+ }
654
+ // type="country": like initials, two separate bordered fields -- a compact flag picker and the
655
+ // phone input.
656
+ renderCountryField() {
657
+ const disabledClass = this.disabled ? 'bs-input__field--disabled' : '';
658
+ const errorClass = this.error ? 'bs-input__field--error' : '';
659
+ return (h("div", { class: "bs-input__initials-row bs-input__country-row" }, h("div", { class: "bs-input__picker-wrap" }, h("div", { part: "field", class: `bs-input__field bs-input__field--country ${errorClass} ${disabledClass}`, onClick: this.onPickerToggle }, this.renderPickerTrigger(), this.renderSelectChevron()), this.open && this.renderPickerPopup()), h("div", { part: "field", class: `bs-input__field bs-input__field--initials-value ${errorClass} ${disabledClass}` }, h("input", { id: "control", part: "control", class: "bs-input__control", type: "text", value: this.value, placeholder: this.placeholder, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }))));
351
660
  }
352
661
  /* Both the initials title <select> and the country <select> have their native OS arrow
353
662
  suppressed (appearance: none in CSS) in favor of this single chevron-down, matching
@@ -356,13 +665,6 @@ export class BsInput {
356
665
  renderSelectChevron() {
357
666
  return (h("svg", { class: "bs-input__select-chevron", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { d: "M4 6L8 10L12 6", stroke: "currentColor", "stroke-width": "1.3", "stroke-linecap": "round", "stroke-linejoin": "round" })));
358
667
  }
359
- renderCountryControl() {
360
- return [
361
- h("select", { part: "control", class: "bs-input__control bs-input__country-select", disabled: this.disabled, onChange: this.onCountryChange }, this.countryOptions.map(opt => (h("option", { value: opt.code, selected: opt.code === this.country }, opt.flagIcon ? `${opt.flagIcon} ` : '', opt.code, " ", opt.label)))),
362
- this.renderSelectChevron(),
363
- h("input", { id: "control", part: "control", class: "bs-input__control", type: "text", value: this.value, placeholder: this.placeholder, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, onInput: this.onInput, onChange: this.onChange }),
364
- ];
365
- }
366
668
  renderControl() {
367
669
  switch (this.type) {
368
670
  case 'select':
@@ -371,12 +673,26 @@ export class BsInput {
371
673
  return this.renderTextareaControl();
372
674
  case 'chip':
373
675
  return this.renderChipControl();
374
- case 'country':
375
- return this.renderCountryControl();
376
676
  default:
377
677
  return this.renderStandardControl();
378
678
  }
379
679
  }
680
+ onComboboxFieldClick = (ev) => {
681
+ if (this.disabled)
682
+ return;
683
+ // The clear button handles itself; only plain field clicks toggle the popup.
684
+ if (ev.target.closest?.('[part="clear"]'))
685
+ return;
686
+ this.setOpen(!this.open);
687
+ };
688
+ /** The `type="combobox"` popup. Rendered inside this shadow root so `aria-controls` and
689
+ * `aria-activedescendant` on the input resolve to real elements. */
690
+ renderComboboxPopup() {
691
+ const opts = this.visibleOptions;
692
+ return (h("div", { part: "menu", class: "bs-input__combobox-popup" }, h("ul", { id: "listbox", role: "listbox", class: "bs-input__listbox", "aria-label": this.label || this.ariaLabel || undefined }, opts.map((option, i) => (h("li", { key: option.value, id: `option-${i}`, part: "option", role: "option", "aria-selected": String(i === this.activeIndex), class: `bs-input__option ${i === this.activeIndex ? 'bs-input__option--active' : ''}`,
693
+ // Keep focus in the input while choosing with the mouse.
694
+ onMouseDown: (ev) => ev.preventDefault(), onClick: () => this.selectComboOption(option) }, option.label)))), opts.length === 0 && (h("div", { role: "status", class: "bs-input__listbox-status" }, this.loading ? this.loadingLabel : this.noResultsLabel))));
695
+ }
380
696
  renderField() {
381
697
  const fieldClasses = [
382
698
  'bs-input__field',
@@ -388,7 +704,7 @@ export class BsInput {
388
704
  .filter(Boolean)
389
705
  .join(' ');
390
706
  const isDropdown = this.type === 'dropdown';
391
- return (h("div", { class: "bs-input__field-wrapper" }, h("div", { part: "field", class: fieldClasses, onClick: isDropdown ? this.onDropdownToggle : undefined, onKeyDown: isDropdown ? this.onDropdownKeydown : undefined }, h("span", { part: "icon", class: `bs-input__icon ${this.showsIconArea ? 'bs-input__icon--visible' : ''}` }, this.renderIconContent()), this.renderControl(), h("span", { part: "end-icon", class: `bs-input__end-icon ${this.showsEndIconArea ? 'bs-input__end-icon--visible' : ''}` }, this.renderEndIconContent())), isDropdown && this.open && this.options.length > 0 && (h("bs-menu", { part: "menu", class: "bs-input__dropdown-menu", role: "listbox" }, this.options.map(option => (h("bs-menu-item", { key: option.value, onBsSelect: this.onDropdownOptionSelect(option) }, option.label)))))));
707
+ return (h("div", { class: "bs-input__field-wrapper" }, h("div", { part: "field", class: fieldClasses, onClick: isDropdown ? this.onDropdownToggle : this.type === 'combobox' ? this.onComboboxFieldClick : this.type === 'select' ? this.onPickerToggle : undefined, onKeyDown: isDropdown ? this.onDropdownKeydown : undefined }, h("span", { part: "icon", class: `bs-input__icon ${this.showsIconArea ? 'bs-input__icon--visible' : ''}` }, this.renderIconContent()), this.renderControl(), h("span", { part: "end-icon", class: `bs-input__end-icon ${this.showsEndIconArea ? 'bs-input__end-icon--visible' : ''}`, onClick: this.type === 'date' ? this.onDatePickerOpen : undefined }, this.renderEndIconContent())), this.type === 'combobox' && this.open && this.renderComboboxPopup(), this.type === 'select' && this.open && this.renderPickerPopup(), isDropdown && this.open && this.options.length > 0 && (h("bs-menu", { part: "menu", class: "bs-input__dropdown-menu", role: "listbox" }, this.options.map(option => (h("bs-menu-item", { key: option.value, onBsSelect: this.onDropdownOptionSelect(option) }, option.label)))))));
392
708
  }
393
709
  renderPinField() {
394
710
  this.pinInputs = [];
@@ -397,10 +713,10 @@ export class BsInput {
397
713
  return (h("div", { part: "field", class: `bs-input__field bs-input__field--pin ${errorClass} ${disabledClass}` }, Array.from({ length: this.length }).map((_, i) => (h("input", { id: i === 0 ? 'control' : undefined, ref: el => (this.pinInputs[i] = el), part: "control", class: "bs-input__pin-cell", type: "text", inputMode: "numeric", maxLength: 1, value: this.value[i] ?? '', disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, onInput: this.onPinInput(i), onKeyDown: this.onPinKeydown(i) })))));
398
714
  }
399
715
  render() {
400
- return (h("div", { key: 'a462df7f8f0e0a78a90cadb6453cbccd120e9baf', class: `bs-input ${this.error ? 'bs-input--error' : ''}` }, this.label && (
716
+ return (h("div", { key: '9eea22c2c7cbcbdcb2c37403b89c10efc145228d', class: `bs-input ${this.error ? 'bs-input--error' : ''}` }, this.label && (
401
717
  // "control" is a fixed id, not a generated one -- safe because Shadow DOM scopes ids
402
718
  // to this instance's own shadow root, so it can never collide with another bs-input.
403
- h("label", { key: '7aebd73c573b3fb1b26ea0ca0959db890073d9f5', part: "label", class: "bs-input__label", htmlFor: "control" }, this.label, this.required && (h("span", { key: '40bb309ab983fbccd797e878aa78e612e65c6b56', part: "required", class: "bs-input__required", "aria-hidden": "true" }, "*")))), this.type === 'pin' ? this.renderPinField() : this.type === 'initials' ? this.renderInitialsField() : this.renderField(), this.error ? (h("span", { id: "description-or-error", part: "error", class: "bs-input__error" }, h("svg", { part: "error-icon", class: "bs-input__error-icon", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("circle", { cx: "8", cy: "8", r: "6.5", stroke: "currentColor", "stroke-width": "1.2" }), h("path", { d: "M8 5V8.5", stroke: "currentColor", "stroke-width": "1.2", "stroke-linecap": "round" }), h("circle", { cx: "8", cy: "11", r: "0.75", fill: "currentColor" })), this.error)) : this.description ? (h("span", { id: "description-or-error", part: "description", class: "bs-input__description" }, this.description)) : null));
719
+ h("label", { key: 'cbd4e5f0cd8fb0f004f7bc9f7e0dc3433d25e8dc', part: "label", class: "bs-input__label", htmlFor: "control" }, this.label, this.required && (h("span", { key: 'bcd1fb8d607e87c204cb7d93506aa1c648478f34', part: "required", class: "bs-input__required", "aria-hidden": "true" }, "*")))), this.type === 'pin' ? this.renderPinField() : this.type === 'initials' ? this.renderInitialsField() : this.type === 'country' ? this.renderCountryField() : this.renderField(), this.error ? (h("span", { id: "description-or-error", part: "error", class: "bs-input__error" }, h("svg", { part: "error-icon", class: "bs-input__error-icon", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("circle", { cx: "8", cy: "8", r: "6.5", stroke: "currentColor", "stroke-width": "1.2" }), h("path", { d: "M8 5V8.5", stroke: "currentColor", "stroke-width": "1.2", "stroke-linecap": "round" }), h("circle", { cx: "8", cy: "11", r: "0.75", fill: "currentColor" })), this.error)) : this.description ? (h("span", { id: "description-or-error", part: "description", class: "bs-input__description" }, this.description)) : null));
404
720
  }
405
721
  static get is() { return "bs-input"; }
406
722
  static get encapsulation() { return "shadow"; }
@@ -541,8 +857,8 @@ export class BsInput {
541
857
  "type": "string",
542
858
  "mutable": false,
543
859
  "complexType": {
544
- "original": "| 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'search'\n | 'date'\n | 'dropdown'\n | 'select'\n | 'textarea'\n | 'chip'\n | 'initials'\n | 'country'\n | 'pin'",
545
- "resolved": "\"chip\" | \"country\" | \"date\" | \"dropdown\" | \"email\" | \"initials\" | \"number\" | \"password\" | \"pin\" | \"search\" | \"select\" | \"text\" | \"textarea\"",
860
+ "original": "| 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'search'\n | 'date'\n | 'dropdown'\n | 'select'\n | 'textarea'\n | 'chip'\n | 'initials'\n | 'country'\n | 'pin'\n | 'combobox'",
861
+ "resolved": "\"chip\" | \"combobox\" | \"country\" | \"date\" | \"dropdown\" | \"email\" | \"initials\" | \"number\" | \"password\" | \"pin\" | \"search\" | \"select\" | \"text\" | \"textarea\"",
546
862
  "references": {}
547
863
  },
548
864
  "required": false,
@@ -576,6 +892,26 @@ export class BsInput {
576
892
  "reflect": false,
577
893
  "attribute": "label"
578
894
  },
895
+ "ariaLabel": {
896
+ "type": "string",
897
+ "mutable": false,
898
+ "complexType": {
899
+ "original": "string | null",
900
+ "resolved": "string",
901
+ "references": {}
902
+ },
903
+ "required": false,
904
+ "optional": false,
905
+ "docs": {
906
+ "tags": [],
907
+ "text": "Accessible name for the control, used only when no visible `label` is set (e.g. a search field\nwith no visible label). Passed to the inner native control, because an `aria-label` on the\n`<bs-input>` host cannot name an element inside its shadow root."
908
+ },
909
+ "getter": false,
910
+ "setter": false,
911
+ "reflect": false,
912
+ "attribute": "aria-label",
913
+ "defaultValue": "null"
914
+ },
579
915
  "placeholder": {
580
916
  "type": "string",
581
917
  "mutable": false,
@@ -743,7 +1079,7 @@ export class BsInput {
743
1079
  "optional": false,
744
1080
  "docs": {
745
1081
  "tags": [],
746
- "text": "Options for `type=\"select\"` (rendered as native `<option>`s) and `type=\"dropdown\"` (rendered\nas a `bs-menu` of `bs-menu-item`s when `open`). Must be set as a JS property, not an HTML\nattribute -- see CONVENTIONS.md's non-string props rule."
1082
+ "text": "Options for `type=\"select\"` (rendered as `role=\"option\"` rows of an in-shadow listbox) and `type=\"dropdown\"` (rendered\nas a `bs-menu` of `bs-menu-item`s when `open`). Must be set as a JS property, not an HTML\nattribute -- see CONVENTIONS.md's non-string props rule."
747
1083
  },
748
1084
  "getter": false,
749
1085
  "setter": false,
@@ -807,7 +1143,7 @@ export class BsInput {
807
1143
  },
808
1144
  "initialsTitle": {
809
1145
  "type": "string",
810
- "mutable": false,
1146
+ "mutable": true,
811
1147
  "complexType": {
812
1148
  "original": "string",
813
1149
  "resolved": "string",
@@ -825,6 +1161,26 @@ export class BsInput {
825
1161
  "attribute": "initials-title",
826
1162
  "defaultValue": "''"
827
1163
  },
1164
+ "titleLabel": {
1165
+ "type": "string",
1166
+ "mutable": false,
1167
+ "complexType": {
1168
+ "original": "string",
1169
+ "resolved": "string",
1170
+ "references": {}
1171
+ },
1172
+ "required": false,
1173
+ "optional": false,
1174
+ "docs": {
1175
+ "tags": [],
1176
+ "text": "`type=\"initials\"`: accessible name of the title picker (its visible text is just the title)."
1177
+ },
1178
+ "getter": false,
1179
+ "setter": false,
1180
+ "reflect": false,
1181
+ "attribute": "title-label",
1182
+ "defaultValue": "'Title'"
1183
+ },
828
1184
  "countryOptions": {
829
1185
  "type": "unknown",
830
1186
  "mutable": false,
@@ -845,7 +1201,7 @@ export class BsInput {
845
1201
  },
846
1202
  "country": {
847
1203
  "type": "string",
848
- "mutable": false,
1204
+ "mutable": true,
849
1205
  "complexType": {
850
1206
  "original": "string",
851
1207
  "resolved": "string",
@@ -863,6 +1219,26 @@ export class BsInput {
863
1219
  "attribute": "country",
864
1220
  "defaultValue": "''"
865
1221
  },
1222
+ "countryLabel": {
1223
+ "type": "string",
1224
+ "mutable": false,
1225
+ "complexType": {
1226
+ "original": "string",
1227
+ "resolved": "string",
1228
+ "references": {}
1229
+ },
1230
+ "required": false,
1231
+ "optional": false,
1232
+ "docs": {
1233
+ "tags": [],
1234
+ "text": "`type=\"country\"`: accessible name of the country picker (its visible content is just the flag)."
1235
+ },
1236
+ "getter": false,
1237
+ "setter": false,
1238
+ "reflect": false,
1239
+ "attribute": "country-label",
1240
+ "defaultValue": "'Country'"
1241
+ },
866
1242
  "length": {
867
1243
  "type": "number",
868
1244
  "mutable": false,
@@ -883,6 +1259,126 @@ export class BsInput {
883
1259
  "attribute": "length",
884
1260
  "defaultValue": "4"
885
1261
  },
1262
+ "loading": {
1263
+ "type": "boolean",
1264
+ "mutable": false,
1265
+ "complexType": {
1266
+ "original": "boolean",
1267
+ "resolved": "boolean",
1268
+ "references": {}
1269
+ },
1270
+ "required": false,
1271
+ "optional": false,
1272
+ "docs": {
1273
+ "tags": [],
1274
+ "text": "`type=\"combobox\"`: shows a loading indicator and, while no options match, a loading message\nin the popup instead of \"no results\". Use while fetching `options` asynchronously."
1275
+ },
1276
+ "getter": false,
1277
+ "setter": false,
1278
+ "reflect": false,
1279
+ "attribute": "loading",
1280
+ "defaultValue": "false"
1281
+ },
1282
+ "filterOptions": {
1283
+ "type": "boolean",
1284
+ "mutable": false,
1285
+ "complexType": {
1286
+ "original": "boolean",
1287
+ "resolved": "boolean",
1288
+ "references": {}
1289
+ },
1290
+ "required": false,
1291
+ "optional": false,
1292
+ "docs": {
1293
+ "tags": [],
1294
+ "text": "`type=\"combobox\"`: when true (default) `options` are filtered client-side by whether the label\ncontains the typed text. Set false when you supply already-filtered results yourself (e.g. from\na server) in response to `bsInput`."
1295
+ },
1296
+ "getter": false,
1297
+ "setter": false,
1298
+ "reflect": false,
1299
+ "attribute": "filter-options",
1300
+ "defaultValue": "true"
1301
+ },
1302
+ "noResultsLabel": {
1303
+ "type": "string",
1304
+ "mutable": false,
1305
+ "complexType": {
1306
+ "original": "string",
1307
+ "resolved": "string",
1308
+ "references": {}
1309
+ },
1310
+ "required": false,
1311
+ "optional": false,
1312
+ "docs": {
1313
+ "tags": [],
1314
+ "text": "`type=\"combobox\"`: text of the popup row shown when no option matches."
1315
+ },
1316
+ "getter": false,
1317
+ "setter": false,
1318
+ "reflect": false,
1319
+ "attribute": "no-results-label",
1320
+ "defaultValue": "'No results'"
1321
+ },
1322
+ "loadingLabel": {
1323
+ "type": "string",
1324
+ "mutable": false,
1325
+ "complexType": {
1326
+ "original": "string",
1327
+ "resolved": "string",
1328
+ "references": {}
1329
+ },
1330
+ "required": false,
1331
+ "optional": false,
1332
+ "docs": {
1333
+ "tags": [],
1334
+ "text": "`type=\"combobox\"`: text of the popup row shown while `loading` and nothing matches."
1335
+ },
1336
+ "getter": false,
1337
+ "setter": false,
1338
+ "reflect": false,
1339
+ "attribute": "loading-label",
1340
+ "defaultValue": "'Loading...'"
1341
+ },
1342
+ "clearLabel": {
1343
+ "type": "string",
1344
+ "mutable": false,
1345
+ "complexType": {
1346
+ "original": "string",
1347
+ "resolved": "string",
1348
+ "references": {}
1349
+ },
1350
+ "required": false,
1351
+ "optional": false,
1352
+ "docs": {
1353
+ "tags": [],
1354
+ "text": "`type=\"combobox\"`: accessible name of the clear button."
1355
+ },
1356
+ "getter": false,
1357
+ "setter": false,
1358
+ "reflect": false,
1359
+ "attribute": "clear-label",
1360
+ "defaultValue": "'Clear'"
1361
+ },
1362
+ "openPickerLabel": {
1363
+ "type": "string",
1364
+ "mutable": false,
1365
+ "complexType": {
1366
+ "original": "string",
1367
+ "resolved": "string",
1368
+ "references": {}
1369
+ },
1370
+ "required": false,
1371
+ "optional": false,
1372
+ "docs": {
1373
+ "tags": [],
1374
+ "text": "`type=\"date\"`: accessible name of the default calendar button that opens the native picker."
1375
+ },
1376
+ "getter": false,
1377
+ "setter": false,
1378
+ "reflect": false,
1379
+ "attribute": "open-picker-label",
1380
+ "defaultValue": "'Open date picker'"
1381
+ },
886
1382
  "open": {
887
1383
  "type": "boolean",
888
1384
  "mutable": true,
@@ -895,7 +1391,7 @@ export class BsInput {
895
1391
  "optional": false,
896
1392
  "docs": {
897
1393
  "tags": [],
898
- "text": "Whether the `type=\"dropdown\"` trigger is open. Reflects to an attribute so consumers can style\nan open state via CSS. When `options` is non-empty, this also controls whether the `bs-menu`\nof `bs-menu-item`s is rendered below the field."
1394
+ "text": "Whether the `type=\"dropdown\"` / `type=\"combobox\"` popup is open. Reflects to an attribute so consumers can style\nan open state via CSS. When `options` is non-empty, this also controls whether the `bs-menu`\nof `bs-menu-item`s is rendered below the field."
899
1395
  },
900
1396
  "getter": false,
901
1397
  "setter": false,
@@ -910,7 +1406,9 @@ export class BsInput {
910
1406
  "hasIcon": {},
911
1407
  "hasEndIcon": {},
912
1408
  "passwordVisible": {},
913
- "chipDraft": {}
1409
+ "chipDraft": {},
1410
+ "activeIndex": {},
1411
+ "comboFiltering": {}
914
1412
  };
915
1413
  }
916
1414
  static get events() {
@@ -959,6 +1457,21 @@ export class BsInput {
959
1457
  "resolved": "boolean",
960
1458
  "references": {}
961
1459
  }
1460
+ }, {
1461
+ "method": "bsOptionSelect",
1462
+ "name": "bsOptionSelect",
1463
+ "bubbles": true,
1464
+ "cancelable": true,
1465
+ "composed": true,
1466
+ "docs": {
1467
+ "tags": [],
1468
+ "text": "Emitted when an option is chosen for `type=\"combobox\"` (click or Enter), with the option's\n`{ label, value }`. `value` of the component itself becomes the option's label (the text shown)."
1469
+ },
1470
+ "complexType": {
1471
+ "original": "{ label: string; value: string }",
1472
+ "resolved": "{ label: string; value: string; }",
1473
+ "references": {}
1474
+ }
962
1475
  }, {
963
1476
  "method": "bsChipAdd",
964
1477
  "name": "bsChipAdd",
@@ -967,7 +1480,7 @@ export class BsInput {
967
1480
  "composed": true,
968
1481
  "docs": {
969
1482
  "tags": [],
970
- "text": "Emitted when a chip is committed (Enter pressed in the draft input) for `type=\"chip\"`."
1483
+ "text": ""
971
1484
  },
972
1485
  "complexType": {
973
1486
  "original": "string",
@@ -997,7 +1510,7 @@ export class BsInput {
997
1510
  "composed": true,
998
1511
  "docs": {
999
1512
  "tags": [],
1000
- "text": "Emitted when the title `<select>` changes for `type=\"initials\"`."
1513
+ "text": "Emitted when a title is chosen from the picker for `type=\"initials\"`."
1001
1514
  },
1002
1515
  "complexType": {
1003
1516
  "original": "string",
@@ -1012,7 +1525,7 @@ export class BsInput {
1012
1525
  "composed": true,
1013
1526
  "docs": {
1014
1527
  "tags": [],
1015
- "text": "Emitted when the country `<select>` changes for `type=\"country\"`."
1528
+ "text": "Emitted when a country is chosen from the picker for `type=\"country\"`."
1016
1529
  },
1017
1530
  "complexType": {
1018
1531
  "original": "string",
@@ -1050,6 +1563,12 @@ export class BsInput {
1050
1563
  "target": undefined,
1051
1564
  "capture": false,
1052
1565
  "passive": false
1566
+ }, {
1567
+ "name": "click",
1568
+ "method": "onDocumentClick",
1569
+ "target": "document",
1570
+ "capture": false,
1571
+ "passive": false
1053
1572
  }];
1054
1573
  }
1055
1574
  static get attachInternalsMemberName() { return "internals"; }