@brandsync/wc 0.1.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/custom-elements.json +1513 -669
  2. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  3. package/dist/brandsync-wc/p-00d40aca.entry.js +1 -0
  4. package/dist/brandsync-wc/{p-6e95eb36.entry.js → p-0299e8e1.entry.js} +1 -1
  5. package/dist/brandsync-wc/p-0921ca0d.entry.js +1 -0
  6. package/dist/brandsync-wc/{p-f4f22015.entry.js → p-0a2d690f.entry.js} +1 -1
  7. package/dist/brandsync-wc/{p-111974df.entry.js → p-0cf117f4.entry.js} +1 -1
  8. package/dist/brandsync-wc/{p-aa43d478.entry.js → p-127d698d.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-9bcd99aa.entry.js → p-1780224d.entry.js} +1 -1
  10. package/dist/brandsync-wc/{p-55a8d4b5.entry.js → p-18e0cff4.entry.js} +1 -1
  11. package/dist/brandsync-wc/{p-0847f5c0.entry.js → p-1abacfe8.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-10f6f3cd.entry.js → p-2a7cc40c.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-79af762c.entry.js → p-2e7586dd.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-eb04c578.entry.js → p-31b28025.entry.js} +1 -1
  15. package/dist/brandsync-wc/{p-1ce7dd64.entry.js → p-32fe390d.entry.js} +1 -1
  16. package/dist/brandsync-wc/{p-38aad266.entry.js → p-35bcb932.entry.js} +1 -1
  17. package/dist/brandsync-wc/{p-0ba35c3b.entry.js → p-393efb5d.entry.js} +1 -1
  18. package/dist/brandsync-wc/p-3e61d206.entry.js +1 -0
  19. package/dist/brandsync-wc/{p-91551e7b.entry.js → p-3e8728dc.entry.js} +1 -1
  20. package/dist/brandsync-wc/{p-20c24179.entry.js → p-5321186f.entry.js} +1 -1
  21. package/dist/brandsync-wc/{p-11f3fceb.entry.js → p-579fbe4d.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-d3265e70.entry.js → p-63906504.entry.js} +1 -1
  23. package/dist/brandsync-wc/{p-59ac2495.entry.js → p-673546bf.entry.js} +1 -1
  24. package/dist/brandsync-wc/{p-73217b90.entry.js → p-696f885c.entry.js} +1 -1
  25. package/dist/brandsync-wc/{p-d55bbcec.entry.js → p-6ef0a0ed.entry.js} +1 -1
  26. package/dist/brandsync-wc/{p-6d85fba4.entry.js → p-6fc78ccf.entry.js} +1 -1
  27. package/dist/brandsync-wc/{p-917a5bbc.entry.js → p-7091f130.entry.js} +1 -1
  28. package/dist/brandsync-wc/{p-752c04c8.entry.js → p-72e02bd5.entry.js} +1 -1
  29. package/dist/brandsync-wc/{p-9c4768aa.entry.js → p-778fcc55.entry.js} +1 -1
  30. package/dist/brandsync-wc/{p-18813680.entry.js → p-790fadf9.entry.js} +1 -1
  31. package/dist/brandsync-wc/{p-321ed4d3.entry.js → p-82953f42.entry.js} +1 -1
  32. package/dist/brandsync-wc/p-8b5f4ca7.entry.js +1 -0
  33. package/dist/brandsync-wc/{p-Do3l4of3.js → p-CvfB8CQv.js} +2 -2
  34. package/dist/brandsync-wc/{p-c3079ad7.entry.js → p-a16afeaa.entry.js} +1 -1
  35. package/dist/brandsync-wc/{p-cc79e75f.entry.js → p-a73bfd31.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-00bb9bda.entry.js → p-a7704457.entry.js} +1 -1
  37. package/dist/brandsync-wc/{p-2063a6d6.entry.js → p-aa1cc2b6.entry.js} +1 -1
  38. package/dist/brandsync-wc/{p-e93e944b.entry.js → p-ac12372f.entry.js} +1 -1
  39. package/dist/brandsync-wc/p-b2abd8d9.entry.js +1 -0
  40. package/dist/brandsync-wc/p-b63362e7.entry.js +1 -0
  41. package/dist/brandsync-wc/{p-9876e83c.entry.js → p-bb2ec290.entry.js} +1 -1
  42. package/dist/brandsync-wc/{p-171fed0c.entry.js → p-c7427962.entry.js} +1 -1
  43. package/dist/brandsync-wc/{p-6b469b2d.entry.js → p-c76ca89f.entry.js} +1 -1
  44. package/dist/brandsync-wc/{p-43e37883.entry.js → p-c7b9a5c7.entry.js} +1 -1
  45. package/dist/brandsync-wc/{p-c3c383dc.entry.js → p-ca74c7d9.entry.js} +1 -1
  46. package/dist/brandsync-wc/p-cc9f85d6.entry.js +1 -0
  47. package/dist/brandsync-wc/{p-1b7c9928.entry.js → p-cff188cb.entry.js} +1 -1
  48. package/dist/brandsync-wc/{p-81d49240.entry.js → p-e230ed08.entry.js} +1 -1
  49. package/dist/brandsync-wc/{p-5ae9e60e.entry.js → p-f652d79c.entry.js} +1 -1
  50. package/dist/brandsync-wc/p-fc9d52d4.entry.js +1 -0
  51. package/dist/cjs/brandsync-wc.cjs.js +3 -3
  52. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +2 -2
  53. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  54. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  55. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  56. package/dist/cjs/bs-attachment.cjs.entry.js +1 -1
  57. package/dist/cjs/bs-avatar.cjs.entry.js +1 -1
  58. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  59. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +1 -1
  60. package/dist/cjs/bs-breadcrumb.cjs.entry.js +1 -1
  61. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +2 -2
  62. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  63. package/dist/cjs/bs-button.cjs.entry.js +1 -1
  64. package/dist/cjs/bs-card.cjs.entry.js +2 -2
  65. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
  66. package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
  67. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  68. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  69. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
  70. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +2 -2
  71. package/dist/cjs/bs-checkbox.cjs.entry.js +1 -1
  72. package/dist/cjs/bs-chip-filter.cjs.entry.js +68 -0
  73. package/dist/cjs/bs-chip-informative.cjs.entry.js +42 -0
  74. package/dist/cjs/bs-chip-input.cjs.entry.js +76 -0
  75. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +2 -2
  76. package/dist/cjs/bs-composer.cjs.entry.js +2 -2
  77. package/dist/cjs/bs-data-table.cjs.entry.js +3 -3
  78. package/dist/cjs/bs-dialog.cjs.entry.js +13 -3
  79. package/dist/cjs/bs-icon-button.cjs.entry.js +2 -2
  80. package/dist/cjs/bs-inline-tab.cjs.entry.js +2 -2
  81. package/dist/cjs/bs-input.cjs.entry.js +3 -3
  82. package/dist/cjs/bs-logo.cjs.entry.js +1 -1
  83. package/dist/cjs/bs-menu-item.cjs.entry.js +2 -2
  84. package/dist/cjs/bs-menu.cjs.entry.js +2 -2
  85. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +2 -2
  86. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +2 -2
  87. package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
  88. package/dist/cjs/bs-pagination.cjs.entry.js +2 -2
  89. package/dist/cjs/bs-radio.cjs.entry.js +2 -2
  90. package/dist/cjs/bs-slider.cjs.entry.js +2 -2
  91. package/dist/cjs/bs-snackbar.cjs.entry.js +2 -2
  92. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  93. package/dist/cjs/bs-stepper-step.cjs.entry.js +44 -0
  94. package/dist/cjs/bs-stepper.cjs.entry.js +62 -0
  95. package/dist/cjs/bs-switch.cjs.entry.js +2 -2
  96. package/dist/cjs/bs-tab.cjs.entry.js +2 -2
  97. package/dist/cjs/bs-tabs.cjs.entry.js +2 -2
  98. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  99. package/dist/cjs/{index-DHVw-IPK.js → index-CdAh5BFg.js} +27 -14
  100. package/dist/cjs/loader.cjs.js +2 -2
  101. package/dist/collection/collection-manifest.json +6 -1
  102. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  103. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  104. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  105. package/dist/collection/components/bs-attachment/bs-attachment.js +1 -1
  106. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  107. package/dist/collection/components/bs-avatar/bs-avatar.js +2 -2
  108. package/dist/collection/components/bs-badge/bs-badge.js +1 -1
  109. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +1 -1
  110. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +1 -1
  111. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -1
  112. package/dist/collection/components/bs-button/bs-button/bs-button.js +2 -2
  113. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +3 -3
  114. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  115. package/dist/collection/components/bs-card/bs-card.css +6 -0
  116. package/dist/collection/components/bs-card/bs-card.js +1 -1
  117. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  118. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  119. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  120. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  121. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  122. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
  123. package/dist/collection/components/bs-checkbox/bs-checkbox.js +1 -1
  124. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.cmp.test.js +99 -0
  125. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.css +156 -0
  126. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.js +222 -0
  127. package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.stories.js +76 -0
  128. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.cmp.test.js +43 -0
  129. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.css +135 -0
  130. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.js +143 -0
  131. package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.stories.js +70 -0
  132. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.cmp.test.js +93 -0
  133. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.css +172 -0
  134. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +208 -0
  135. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.stories.js +67 -0
  136. package/dist/collection/components/bs-composer/bs-composer.js +3 -3
  137. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +2 -2
  138. package/dist/collection/components/bs-data-table/bs-data-table.js +6 -6
  139. package/dist/collection/components/bs-dialog/bs-dialog.cmp.test.js +6 -0
  140. package/dist/collection/components/bs-dialog/bs-dialog.js +13 -3
  141. package/dist/collection/components/bs-input/bs-input.js +2 -2
  142. package/dist/collection/components/bs-logo/bs-logo.js +2 -2
  143. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  144. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  145. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  146. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  147. package/dist/collection/components/bs-slider/bs-slider.js +2 -2
  148. package/dist/collection/components/bs-snackbar/bs-snackbar.js +2 -2
  149. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  150. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.cmp.test.js +42 -0
  151. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.css +29 -0
  152. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +162 -0
  153. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.stories.js +59 -0
  154. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.cmp.test.js +73 -0
  155. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.css +258 -0
  156. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +231 -0
  157. package/dist/collection/components/bs-switch/bs-switch.js +2 -2
  158. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  159. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +2 -2
  160. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +3 -3
  161. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  162. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +1 -1
  163. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  164. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +2 -2
  165. package/dist/components/bs-ai-disclaimer.js +1 -1
  166. package/dist/components/bs-ai-greeting.js +1 -1
  167. package/dist/components/bs-ai-thinking.js +1 -1
  168. package/dist/components/bs-attachment-list.js +1 -1
  169. package/dist/components/bs-attachment.js +1 -1
  170. package/dist/components/bs-avatar.js +1 -1
  171. package/dist/components/bs-badge.js +1 -1
  172. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  173. package/dist/components/bs-breadcrumb.js +1 -1
  174. package/dist/components/bs-breadcrumbs.js +1 -1
  175. package/dist/components/bs-button-skeleton.js +1 -1
  176. package/dist/components/bs-button.js +1 -1
  177. package/dist/components/bs-card.js +1 -1
  178. package/dist/components/bs-chatbot-feedback.js +1 -1
  179. package/dist/components/bs-chatbot-header.js +1 -1
  180. package/dist/components/bs-chatbot-response-action.js +1 -1
  181. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  182. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  183. package/dist/components/bs-checkbox-skeleton.js +1 -1
  184. package/dist/components/bs-checkbox.js +1 -1
  185. package/dist/components/bs-chip-filter.d.ts +11 -0
  186. package/dist/components/bs-chip-filter.js +1 -0
  187. package/dist/components/bs-chip-informative.d.ts +11 -0
  188. package/dist/components/bs-chip-informative.js +1 -0
  189. package/dist/components/bs-chip-input.d.ts +11 -0
  190. package/dist/components/bs-chip-input.js +1 -0
  191. package/dist/components/bs-composer-status-banner.js +1 -1
  192. package/dist/components/bs-composer.js +1 -1
  193. package/dist/components/bs-data-table.js +1 -1
  194. package/dist/components/bs-dialog.js +1 -1
  195. package/dist/components/bs-icon-button.js +1 -1
  196. package/dist/components/bs-inline-tab.js +1 -1
  197. package/dist/components/bs-input.js +1 -1
  198. package/dist/components/bs-logo.js +1 -1
  199. package/dist/components/bs-menu-item.js +1 -1
  200. package/dist/components/bs-menu.js +1 -1
  201. package/dist/components/bs-navigation-drawer-item.js +1 -1
  202. package/dist/components/bs-navigation-drawer.js +1 -1
  203. package/dist/components/bs-navigation-header.js +1 -1
  204. package/dist/components/bs-pagination.js +1 -1
  205. package/dist/components/bs-radio.js +1 -1
  206. package/dist/components/bs-slider.js +1 -1
  207. package/dist/components/bs-snackbar.js +1 -1
  208. package/dist/components/bs-source-link.js +1 -1
  209. package/dist/components/bs-stepper-step.d.ts +11 -0
  210. package/dist/components/bs-stepper-step.js +1 -0
  211. package/dist/components/bs-stepper.d.ts +11 -0
  212. package/dist/components/bs-stepper.js +1 -0
  213. package/dist/components/bs-switch.js +1 -1
  214. package/dist/components/bs-tab.js +1 -1
  215. package/dist/components/bs-tabs.js +1 -1
  216. package/dist/components/bs-tooltip.js +1 -1
  217. package/dist/components/index.js +1 -1
  218. package/dist/components/{p-BFcVSpES.js → p-B8JpGodL.js} +1 -1
  219. package/dist/components/{p-qK1XlpTA.js → p-BFVUq5m5.js} +1 -1
  220. package/dist/components/{p-BtX5URLk.js → p-BPUNjzjH.js} +1 -1
  221. package/dist/components/{p-CgaPcyEJ.js → p-Bb6vh9PN.js} +1 -1
  222. package/dist/components/{p-BJZYe7M4.js → p-CsnFdZ3v.js} +1 -1
  223. package/dist/components/{p-BKaZWFE1.js → p-DwVm6HIb.js} +1 -1
  224. package/dist/esm/brandsync-wc.js +4 -4
  225. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  226. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  227. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  228. package/dist/esm/bs-attachment-list.entry.js +2 -2
  229. package/dist/esm/bs-attachment.entry.js +1 -1
  230. package/dist/esm/bs-avatar.entry.js +1 -1
  231. package/dist/esm/bs-badge.entry.js +1 -1
  232. package/dist/esm/bs-breadcrumb-overflow.entry.js +1 -1
  233. package/dist/esm/bs-breadcrumb.entry.js +1 -1
  234. package/dist/esm/bs-breadcrumbs.entry.js +2 -2
  235. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  236. package/dist/esm/bs-button.entry.js +1 -1
  237. package/dist/esm/bs-card.entry.js +2 -2
  238. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  239. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  240. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  241. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  242. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  243. package/dist/esm/bs-checkbox-skeleton.entry.js +2 -2
  244. package/dist/esm/bs-checkbox.entry.js +1 -1
  245. package/dist/esm/bs-chip-filter.entry.js +66 -0
  246. package/dist/esm/bs-chip-informative.entry.js +40 -0
  247. package/dist/esm/bs-chip-input.entry.js +74 -0
  248. package/dist/esm/bs-composer-status-banner.entry.js +2 -2
  249. package/dist/esm/bs-composer.entry.js +2 -2
  250. package/dist/esm/bs-data-table.entry.js +3 -3
  251. package/dist/esm/bs-dialog.entry.js +13 -3
  252. package/dist/esm/bs-icon-button.entry.js +2 -2
  253. package/dist/esm/bs-inline-tab.entry.js +2 -2
  254. package/dist/esm/bs-input.entry.js +3 -3
  255. package/dist/esm/bs-logo.entry.js +1 -1
  256. package/dist/esm/bs-menu-item.entry.js +2 -2
  257. package/dist/esm/bs-menu.entry.js +2 -2
  258. package/dist/esm/bs-navigation-drawer-item.entry.js +2 -2
  259. package/dist/esm/bs-navigation-drawer.entry.js +2 -2
  260. package/dist/esm/bs-navigation-header.entry.js +2 -2
  261. package/dist/esm/bs-pagination.entry.js +2 -2
  262. package/dist/esm/bs-radio.entry.js +2 -2
  263. package/dist/esm/bs-slider.entry.js +2 -2
  264. package/dist/esm/bs-snackbar.entry.js +2 -2
  265. package/dist/esm/bs-source-link.entry.js +3 -3
  266. package/dist/esm/bs-stepper-step.entry.js +42 -0
  267. package/dist/esm/bs-stepper.entry.js +60 -0
  268. package/dist/esm/bs-switch.entry.js +2 -2
  269. package/dist/esm/bs-tab.entry.js +2 -2
  270. package/dist/esm/bs-tabs.entry.js +2 -2
  271. package/dist/esm/bs-tooltip.entry.js +2 -2
  272. package/dist/esm/{index-Do3l4of3.js → index-CvfB8CQv.js} +27 -14
  273. package/dist/esm/loader.js +3 -3
  274. package/dist/types/components/bs-chip/bs-chip-filter/bs-chip-filter.cmp.test.d.ts +1 -0
  275. package/dist/types/components/bs-chip/bs-chip-filter/bs-chip-filter.d.ts +56 -0
  276. package/dist/types/components/bs-chip/bs-chip-filter/bs-chip-filter.stories.d.ts +20 -0
  277. package/dist/types/components/bs-chip/bs-chip-informative/bs-chip-informative.cmp.test.d.ts +1 -0
  278. package/dist/types/components/bs-chip/bs-chip-informative/bs-chip-informative.d.ts +41 -0
  279. package/dist/types/components/bs-chip/bs-chip-informative/bs-chip-informative.stories.d.ts +21 -0
  280. package/dist/types/components/bs-chip/bs-chip-input/bs-chip-input.cmp.test.d.ts +1 -0
  281. package/dist/types/components/bs-chip/bs-chip-input/bs-chip-input.d.ts +60 -0
  282. package/dist/types/components/bs-chip/bs-chip-input/bs-chip-input.stories.d.ts +18 -0
  283. package/dist/types/components/bs-stepper/bs-stepper/bs-stepper.cmp.test.d.ts +1 -0
  284. package/dist/types/components/bs-stepper/bs-stepper/bs-stepper.d.ts +48 -0
  285. package/dist/types/components/bs-stepper/bs-stepper/bs-stepper.stories.d.ts +14 -0
  286. package/dist/types/components/bs-stepper/bs-stepper-step/bs-stepper-step.cmp.test.d.ts +1 -0
  287. package/dist/types/components/bs-stepper/bs-stepper-step/bs-stepper-step.d.ts +55 -0
  288. package/dist/types/components.d.ts +653 -0
  289. package/dist/types/stencil-public-runtime.d.ts +62 -55
  290. package/loader/index.d.ts +1 -1
  291. package/package.json +6 -5
  292. package/dist/brandsync-wc/p-0f3cb0c4.entry.js +0 -1
  293. package/dist/brandsync-wc/p-ce7fc368.entry.js +0 -1
  294. package/dist/brandsync-wc/p-f0ae2740.entry.js +0 -1
@@ -80,7 +80,6 @@
80
80
  "text": "string"
81
81
  },
82
82
  "default": "'Genie'",
83
- "readonly": true,
84
83
  "attribute": "assistant-name"
85
84
  },
86
85
  {
@@ -90,7 +89,6 @@
90
89
  "type": {
91
90
  "text": "string"
92
91
  },
93
- "readonly": true,
94
92
  "attribute": "product-name"
95
93
  }
96
94
  ],
@@ -153,7 +151,6 @@
153
151
  "text": "string"
154
152
  },
155
153
  "default": "'Thinking'",
156
- "readonly": true,
157
154
  "attribute": "label"
158
155
  }
159
156
  ],
@@ -265,7 +262,6 @@
265
262
  "text": "string"
266
263
  },
267
264
  "default": "'Attachment'",
268
- "readonly": true,
269
265
  "attribute": "file-name"
270
266
  },
271
267
  {
@@ -276,7 +272,6 @@
276
272
  "text": "string"
277
273
  },
278
274
  "default": "''",
279
- "readonly": true,
280
275
  "attribute": "image-alt"
281
276
  },
282
277
  {
@@ -286,7 +281,6 @@
286
281
  "type": {
287
282
  "text": "string"
288
283
  },
289
- "readonly": true,
290
284
  "attribute": "image-src"
291
285
  },
292
286
  {
@@ -297,7 +291,6 @@
297
291
  "text": "boolean"
298
292
  },
299
293
  "default": "false",
300
- "readonly": true,
301
294
  "attribute": "loading"
302
295
  },
303
296
  {
@@ -308,7 +301,6 @@
308
301
  "text": "boolean"
309
302
  },
310
303
  "default": "true",
311
- "readonly": true,
312
304
  "attribute": "removable"
313
305
  },
314
306
  {
@@ -324,7 +316,6 @@
324
316
  ]
325
317
  },
326
318
  "default": "'image'",
327
- "readonly": true,
328
319
  "attribute": "type"
329
320
  }
330
321
  ],
@@ -408,7 +399,6 @@
408
399
  "text": "string"
409
400
  },
410
401
  "default": "'Attachments'",
411
- "readonly": true,
412
402
  "attribute": "aria-label"
413
403
  }
414
404
  ],
@@ -541,7 +531,6 @@
541
531
  "text": "string"
542
532
  },
543
533
  "default": "null",
544
- "readonly": true,
545
534
  "attribute": "alt"
546
535
  },
547
536
  {
@@ -552,7 +541,6 @@
552
541
  "text": "string"
553
542
  },
554
543
  "default": "null",
555
- "readonly": true,
556
544
  "attribute": "aria-label"
557
545
  },
558
546
  {
@@ -563,7 +551,6 @@
563
551
  "text": "boolean"
564
552
  },
565
553
  "default": "false",
566
- "readonly": true,
567
554
  "attribute": "disabled",
568
555
  "reflects": true
569
556
  },
@@ -575,7 +562,6 @@
575
562
  "text": "string"
576
563
  },
577
564
  "default": "null",
578
- "readonly": true,
579
565
  "attribute": "initials"
580
566
  },
581
567
  {
@@ -591,7 +577,6 @@
591
577
  ]
592
578
  },
593
579
  "default": "'md'",
594
- "readonly": true,
595
580
  "attribute": "size"
596
581
  },
597
582
  {
@@ -602,7 +587,6 @@
602
587
  "text": "string"
603
588
  },
604
589
  "default": "null",
605
- "readonly": true,
606
590
  "attribute": "src"
607
591
  },
608
592
  {
@@ -618,7 +602,6 @@
618
602
  ]
619
603
  },
620
604
  "default": "'icon'",
621
- "readonly": true,
622
605
  "attribute": "type"
623
606
  }
624
607
  ],
@@ -781,7 +764,6 @@
781
764
  ]
782
765
  },
783
766
  "default": "'default'",
784
- "readonly": true,
785
767
  "attribute": "variant"
786
768
  }
787
769
  ],
@@ -868,7 +850,6 @@
868
850
  "text": "boolean"
869
851
  },
870
852
  "default": "false",
871
- "readonly": true,
872
853
  "attribute": "current",
873
854
  "reflects": true
874
855
  },
@@ -879,7 +860,6 @@
879
860
  "type": {
880
861
  "text": "string"
881
862
  },
882
- "readonly": true,
883
863
  "attribute": "href"
884
864
  },
885
865
  {
@@ -895,7 +875,6 @@
895
875
  ]
896
876
  },
897
877
  "default": "'md'",
898
- "readonly": true,
899
878
  "attribute": "size",
900
879
  "reflects": true
901
880
  }
@@ -1042,8 +1021,7 @@
1042
1021
  }
1043
1022
  ]
1044
1023
  },
1045
- "default": "[]",
1046
- "readonly": true
1024
+ "default": "[]"
1047
1025
  },
1048
1026
  {
1049
1027
  "kind": "field",
@@ -1053,7 +1031,6 @@
1053
1031
  "text": "string"
1054
1032
  },
1055
1033
  "default": "'Show hidden breadcrumbs'",
1056
- "readonly": true,
1057
1034
  "attribute": "overflow-label"
1058
1035
  },
1059
1036
  {
@@ -1070,7 +1047,6 @@
1070
1047
  ]
1071
1048
  },
1072
1049
  "default": "'md'",
1073
- "readonly": true,
1074
1050
  "attribute": "size",
1075
1051
  "reflects": true
1076
1052
  }
@@ -1213,7 +1189,6 @@
1213
1189
  "text": "string"
1214
1190
  },
1215
1191
  "default": "'Breadcrumb'",
1216
- "readonly": true,
1217
1192
  "attribute": "label"
1218
1193
  },
1219
1194
  {
@@ -1230,7 +1205,6 @@
1230
1205
  ]
1231
1206
  },
1232
1207
  "default": "'md'",
1233
- "readonly": true,
1234
1208
  "attribute": "size"
1235
1209
  }
1236
1210
  ],
@@ -1347,7 +1321,6 @@
1347
1321
  "text": "string"
1348
1322
  },
1349
1323
  "default": "null",
1350
- "readonly": true,
1351
1324
  "attribute": "aria-label"
1352
1325
  },
1353
1326
  {
@@ -1358,7 +1331,6 @@
1358
1331
  "text": "boolean"
1359
1332
  },
1360
1333
  "default": "false",
1361
- "readonly": true,
1362
1334
  "attribute": "disabled"
1363
1335
  },
1364
1336
  {
@@ -1374,7 +1346,6 @@
1374
1346
  ]
1375
1347
  },
1376
1348
  "default": "'md'",
1377
- "readonly": true,
1378
1349
  "attribute": "size"
1379
1350
  },
1380
1351
  {
@@ -1385,7 +1356,6 @@
1385
1356
  "text": "\"button\" | \"reset\" | \"submit\""
1386
1357
  },
1387
1358
  "default": "'button'",
1388
- "readonly": true,
1389
1359
  "attribute": "type"
1390
1360
  },
1391
1361
  {
@@ -1401,7 +1371,6 @@
1401
1371
  ]
1402
1372
  },
1403
1373
  "default": "'primary'",
1404
- "readonly": true,
1405
1374
  "attribute": "variant"
1406
1375
  }
1407
1376
  ],
@@ -1494,7 +1463,6 @@
1494
1463
  ]
1495
1464
  },
1496
1465
  "default": "'md'",
1497
- "readonly": true,
1498
1466
  "attribute": "size"
1499
1467
  }
1500
1468
  ],
@@ -1563,7 +1531,6 @@
1563
1531
  ]
1564
1532
  },
1565
1533
  "default": "'raised'",
1566
- "readonly": true,
1567
1534
  "attribute": "surface"
1568
1535
  }
1569
1536
  ],
@@ -1699,7 +1666,6 @@
1699
1666
  "type": {
1700
1667
  "text": "string"
1701
1668
  },
1702
- "readonly": true,
1703
1669
  "attribute": "heading"
1704
1670
  },
1705
1671
  {
@@ -1731,7 +1697,6 @@
1731
1697
  "type": {
1732
1698
  "text": "string"
1733
1699
  },
1734
- "readonly": true,
1735
1700
  "attribute": "subtitle"
1736
1701
  }
1737
1702
  ],
@@ -1879,7 +1844,6 @@
1879
1844
  "text": "string"
1880
1845
  },
1881
1846
  "default": "'Genie'",
1882
- "readonly": true,
1883
1847
  "attribute": "heading"
1884
1848
  }
1885
1849
  ],
@@ -2020,7 +1984,6 @@
2020
1984
  "type": {
2021
1985
  "text": "number"
2022
1986
  },
2023
- "readonly": true,
2024
1987
  "attribute": "sources-count"
2025
1988
  }
2026
1989
  ],
@@ -2180,7 +2143,6 @@
2180
2143
  "type": {
2181
2144
  "text": "number"
2182
2145
  },
2183
- "readonly": true,
2184
2146
  "attribute": "count"
2185
2147
  },
2186
2148
  {
@@ -2191,7 +2153,6 @@
2191
2153
  "text": "string"
2192
2154
  },
2193
2155
  "default": "'Sources'",
2194
- "readonly": true,
2195
2156
  "attribute": "heading"
2196
2157
  }
2197
2158
  ],
@@ -2281,7 +2242,6 @@
2281
2242
  "text": "boolean"
2282
2243
  },
2283
2244
  "default": "false",
2284
- "readonly": true,
2285
2245
  "attribute": "disabled"
2286
2246
  }
2287
2247
  ],
@@ -2405,7 +2365,6 @@
2405
2365
  "text": "string"
2406
2366
  },
2407
2367
  "default": "null",
2408
- "readonly": true,
2409
2368
  "attribute": "aria-label"
2410
2369
  },
2411
2370
  {
@@ -2427,7 +2386,6 @@
2427
2386
  "text": "boolean"
2428
2387
  },
2429
2388
  "default": "false",
2430
- "readonly": true,
2431
2389
  "attribute": "disabled"
2432
2390
  },
2433
2391
  {
@@ -2438,7 +2396,6 @@
2438
2396
  "text": "boolean"
2439
2397
  },
2440
2398
  "default": "false",
2441
- "readonly": true,
2442
2399
  "attribute": "error"
2443
2400
  },
2444
2401
  {
@@ -2465,7 +2422,6 @@
2465
2422
  ]
2466
2423
  },
2467
2424
  "default": "'lg'",
2468
- "readonly": true,
2469
2425
  "attribute": "size"
2470
2426
  }
2471
2427
  ],
@@ -2673,7 +2629,6 @@
2673
2629
  ]
2674
2630
  },
2675
2631
  "default": "'lg'",
2676
- "readonly": true,
2677
2632
  "attribute": "size"
2678
2633
  }
2679
2634
  ],
@@ -2712,18 +2667,18 @@
2712
2667
  },
2713
2668
  {
2714
2669
  "kind": "javascript-module",
2715
- "path": "src/components/bs-composer/bs-composer.tsx",
2670
+ "path": "src/components/bs-chip/bs-chip-filter/bs-chip-filter.tsx",
2716
2671
  "declarations": [
2717
2672
  {
2718
2673
  "kind": "class",
2719
2674
  "customElement": true,
2720
- "tagName": "bs-composer",
2721
- "name": "BsComposer",
2722
- "description": "A chat composer input for Genie AI-style conversational interfaces: a text field\nplus an attach button, a mic/voice-recording toggle, and a single primary action button whose\nicon and behavior change with `state` (send, stop generating, or confirm a voice recording).\n\n## When to use\n- The message-entry bar for an AI chat/assistant or human support conversation.\n\n## When not to use\n- A general-purpose text field — use `bs-input` instead; this component's layout and states are\n purpose-built for a chat composer, not a generic form field.\n\n## Focus\nUses `shadow: { delegatesFocus: true }`, so calling `.focus()` on the `<bs-composer>` host\nelement itself (not just its internal `<input>`) moves focus into the shadow-DOM text field --\nuseful for e.g. focusing the composer after a parent view mounts, without reaching into its\nshadow root.",
2675
+ "tagName": "bs-chip-filter",
2676
+ "name": "BsChipFilter",
2677
+ "description": "A pill-shaped, selectable toggle used to filter a list or dataset (e.g. a \"Filter chip\" row\nabove a table or search results), optionally paired with a leading icon and/or a dropdown caret\nthat signals it opens a menu of further options.\n\n## When to use\n- Letting a user toggle a filter on/off, or open a menu of filter options (pair `dropdown` with\n your own `bs-menu` -- this component only renders the caret affordance, it doesn't manage a\n menu itself).\n\n## When not to use\n- A static, non-interactive status/category label -- use `bs-badge` instead.\n- A single primary action -- use `bs-button`.",
2723
2678
  "attributes": [
2724
2679
  {
2725
2680
  "name": "aria-label",
2726
- "description": "Accessible name for the text field. This component has no visible `<label>` (chat composers\ndon't show one in the design), so `ariaLabel` is the only way a consumer gives the textbox an\naccessible name -- set it in every real usage.",
2681
+ "description": "Accessible name override. The visible label (default slot) already gives the native button\nan accessible name, so this is only needed if that text isn't sufficient on its own (e.g. it\ndoesn't convey that activating the chip toggles a filter).",
2727
2682
  "type": {
2728
2683
  "text": "string"
2729
2684
  },
@@ -2731,191 +2686,178 @@
2731
2686
  "fieldName": "ariaLabel"
2732
2687
  },
2733
2688
  {
2734
- "name": "placeholder",
2735
- "description": "Overrides the variant's default placeholder.",
2689
+ "name": "disabled",
2690
+ "description": "Disables the chip: sets the native `disabled` attribute, suppresses hover/focus/pressed\nstyling, and prevents toggling.",
2736
2691
  "type": {
2737
- "text": "string"
2692
+ "text": "boolean"
2738
2693
  },
2739
- "fieldName": "placeholder"
2694
+ "default": "false",
2695
+ "fieldName": "disabled"
2740
2696
  },
2741
2697
  {
2742
- "name": "state",
2743
- "description": "Which of the four mutually-exclusive composer states to render: `idle` (send, enabled),\n`generating` (stop, while the AI is responding), `disabled` (send, but not interactive), or\n`recording` (voice input in progress -- shows a waveform and a confirm action).",
2698
+ "name": "dropdown",
2699
+ "description": "Shows a trailing dropdown caret, signaling this chip opens a menu of further options.\nPurely a visual affordance -- wire up the actual menu (e.g. `bs-menu`) yourself.",
2744
2700
  "type": {
2745
- "text": "\"disabled\" | \"generating\" | \"idle\" | \"recording\"",
2746
- "references": [
2747
- {
2748
- "name": "BsComposerState"
2749
- }
2750
- ]
2701
+ "text": "boolean"
2751
2702
  },
2752
- "default": "'idle'",
2753
- "fieldName": "state"
2703
+ "default": "false",
2704
+ "fieldName": "dropdown"
2754
2705
  },
2755
2706
  {
2756
- "name": "value",
2757
- "description": "Current text value. Native `input` events don't cross the Shadow DOM boundary, so this\ncomponent re-dispatches them as a `bsInput` custom event instead.\n\nThe field is a `<textarea>` (not a single-line `<input>`) that grows with its content, up to\n`--bs-composer-input-max-lines` (10 by default) -- beyond that it scrolls internally instead\nof growing further. Setting `value` as a prop (not just typing) also re-triggers the resize,\nso e.g. programmatically clearing the field after submit correctly shrinks it back down.",
2707
+ "name": "selected",
2708
+ "description": "Whether the chip reads as toggled on. Mutable so clicking it toggles directly, and\nreflected so consumers can target `bs-chip-filter[selected]` via CSS.",
2758
2709
  "type": {
2759
- "text": "string"
2710
+ "text": "boolean"
2760
2711
  },
2761
- "default": "''",
2762
- "fieldName": "value"
2712
+ "default": "false",
2713
+ "fieldName": "selected"
2763
2714
  },
2764
2715
  {
2765
- "name": "variant",
2766
- "description": "Which flavor of composer this is: changes the *default* placeholder text (set `placeholder`\ndirectly to override it) and, per the Figma design, renders the container border dashed\ninstead of solid for `'human'` -- a deliberate visual cue distinguishing a human-support\ncomposer from the AI one, not a layout/token difference.",
2716
+ "name": "size",
2717
+ "description": "Sizing scale. Controls the chip's height only -- icon size, gap, and font size stay\nconstant across sizes, matching the Figma spec exactly.",
2767
2718
  "type": {
2768
- "text": "\"ai\" | \"human\"",
2719
+ "text": "\"lg\" | \"md\"",
2769
2720
  "references": [
2770
2721
  {
2771
- "name": "BsComposerVariant"
2722
+ "name": "BsChipFilterSize"
2772
2723
  }
2773
2724
  ]
2774
2725
  },
2775
- "default": "'ai'",
2776
- "fieldName": "variant"
2726
+ "default": "'lg'",
2727
+ "fieldName": "size"
2777
2728
  }
2778
2729
  ],
2779
2730
  "members": [
2780
2731
  {
2781
2732
  "kind": "field",
2782
2733
  "name": "ariaLabel",
2783
- "description": "Accessible name for the text field. This component has no visible `<label>` (chat composers\ndon't show one in the design), so `ariaLabel` is the only way a consumer gives the textbox an\naccessible name -- set it in every real usage.",
2734
+ "description": "Accessible name override. The visible label (default slot) already gives the native button\nan accessible name, so this is only needed if that text isn't sufficient on its own (e.g. it\ndoesn't convey that activating the chip toggles a filter).",
2784
2735
  "type": {
2785
2736
  "text": "string"
2786
2737
  },
2787
2738
  "default": "null",
2788
- "readonly": true,
2789
2739
  "attribute": "aria-label"
2790
2740
  },
2791
2741
  {
2792
2742
  "kind": "field",
2793
- "name": "placeholder",
2794
- "description": "Overrides the variant's default placeholder.",
2743
+ "name": "disabled",
2744
+ "description": "Disables the chip: sets the native `disabled` attribute, suppresses hover/focus/pressed\nstyling, and prevents toggling.",
2795
2745
  "type": {
2796
- "text": "string"
2746
+ "text": "boolean"
2797
2747
  },
2798
- "readonly": true,
2799
- "attribute": "placeholder"
2748
+ "default": "false",
2749
+ "attribute": "disabled"
2800
2750
  },
2801
2751
  {
2802
2752
  "kind": "field",
2803
- "name": "state",
2804
- "description": "Which of the four mutually-exclusive composer states to render: `idle` (send, enabled),\n`generating` (stop, while the AI is responding), `disabled` (send, but not interactive), or\n`recording` (voice input in progress -- shows a waveform and a confirm action).",
2753
+ "name": "dropdown",
2754
+ "description": "Shows a trailing dropdown caret, signaling this chip opens a menu of further options.\nPurely a visual affordance -- wire up the actual menu (e.g. `bs-menu`) yourself.",
2805
2755
  "type": {
2806
- "text": "\"disabled\" | \"generating\" | \"idle\" | \"recording\"",
2807
- "references": [
2808
- {
2809
- "name": "BsComposerState"
2810
- }
2811
- ]
2756
+ "text": "boolean"
2812
2757
  },
2813
- "default": "'idle'",
2814
- "readonly": true,
2815
- "attribute": "state"
2758
+ "default": "false",
2759
+ "attribute": "dropdown"
2816
2760
  },
2817
2761
  {
2818
2762
  "kind": "field",
2819
- "name": "value",
2820
- "description": "Current text value. Native `input` events don't cross the Shadow DOM boundary, so this\ncomponent re-dispatches them as a `bsInput` custom event instead.\n\nThe field is a `<textarea>` (not a single-line `<input>`) that grows with its content, up to\n`--bs-composer-input-max-lines` (10 by default) -- beyond that it scrolls internally instead\nof growing further. Setting `value` as a prop (not just typing) also re-triggers the resize,\nso e.g. programmatically clearing the field after submit correctly shrinks it back down.",
2763
+ "name": "selected",
2764
+ "description": "Whether the chip reads as toggled on. Mutable so clicking it toggles directly, and\nreflected so consumers can target `bs-chip-filter[selected]` via CSS.",
2821
2765
  "type": {
2822
- "text": "string"
2766
+ "text": "boolean"
2823
2767
  },
2824
- "default": "''",
2825
- "readonly": true,
2826
- "attribute": "value"
2768
+ "default": "false",
2769
+ "attribute": "selected",
2770
+ "reflects": true
2827
2771
  },
2828
2772
  {
2829
2773
  "kind": "field",
2830
- "name": "variant",
2831
- "description": "Which flavor of composer this is: changes the *default* placeholder text (set `placeholder`\ndirectly to override it) and, per the Figma design, renders the container border dashed\ninstead of solid for `'human'` -- a deliberate visual cue distinguishing a human-support\ncomposer from the AI one, not a layout/token difference.",
2774
+ "name": "size",
2775
+ "description": "Sizing scale. Controls the chip's height only -- icon size, gap, and font size stay\nconstant across sizes, matching the Figma spec exactly.",
2832
2776
  "type": {
2833
- "text": "\"ai\" | \"human\"",
2777
+ "text": "\"lg\" | \"md\"",
2834
2778
  "references": [
2835
2779
  {
2836
- "name": "BsComposerVariant"
2780
+ "name": "BsChipFilterSize"
2837
2781
  }
2838
2782
  ]
2839
2783
  },
2840
- "default": "'ai'",
2841
- "readonly": true,
2842
- "attribute": "variant"
2784
+ "default": "'lg'",
2785
+ "attribute": "size"
2843
2786
  }
2844
2787
  ],
2845
2788
  "events": [
2846
2789
  {
2847
- "name": "bsAttach",
2848
- "description": "Fires when the \"+\" attach button is clicked.",
2790
+ "name": "bsChange",
2791
+ "description": "Emitted when `selected` changes via user interaction, with the new value.",
2849
2792
  "type": {
2850
- "text": "CustomEvent<void>"
2793
+ "text": "CustomEvent<boolean>"
2851
2794
  }
2852
- },
2795
+ }
2796
+ ],
2797
+ "slots": [
2853
2798
  {
2854
- "name": "bsInput",
2855
- "description": "Fires on every keystroke in the text field, with the current value.",
2856
- "type": {
2857
- "text": "CustomEvent<string>"
2858
- }
2799
+ "name": "",
2800
+ "description": "Default slot: the chip's label content."
2859
2801
  },
2860
2802
  {
2861
- "name": "bsMicToggle",
2862
- "description": "Fires when the mic/stop-recording button is clicked. The consumer decides what that means\n(e.g. start recording when idle/generating, or stop recording when `state=\"recording\"`).",
2863
- "type": {
2864
- "text": "CustomEvent<void>"
2865
- }
2866
- },
2803
+ "name": "icon",
2804
+ "description": "Optional leading icon, rendered before the label."
2805
+ }
2806
+ ],
2807
+ "cssParts": [
2867
2808
  {
2868
- "name": "bsStop",
2869
- "description": "Fires when the primary action button is clicked while `state=\"generating\"`.",
2870
- "type": {
2871
- "text": "CustomEvent<void>"
2872
- }
2809
+ "name": "caret",
2810
+ "description": "The dropdown caret wrapper element, when `dropdown` is set."
2873
2811
  },
2874
2812
  {
2875
- "name": "bsSubmit",
2876
- "description": "Fires when the primary action button is clicked while `state=\"idle\"`.",
2877
- "type": {
2878
- "text": "CustomEvent<void>"
2879
- }
2813
+ "name": "icon",
2814
+ "description": "The icon wrapper element."
2880
2815
  },
2881
2816
  {
2882
- "name": "bsVoiceConfirm",
2883
- "description": "Fires when the primary action button is clicked while `state=\"recording\"`.",
2884
- "type": {
2885
- "text": "CustomEvent<void>"
2886
- }
2817
+ "name": "label",
2818
+ "description": "The text label element."
2887
2819
  }
2888
2820
  ],
2889
- "slots": [
2821
+ "cssProperties": [
2890
2822
  {
2891
- "name": "actions-end",
2892
- "description": "Extra consumer-supplied controls appended after the primary action button\nin the controls row (e.g. a product-specific \"Tools\" button). Slotted content is placed\ninline in the same flex row as attach/mic/action, so a slotted element should size itself to\nroughly match `--bs-composer-button-size` to align visually."
2823
+ "name": "--bs-chip-filter-font-size",
2824
+ "description": "Aliased to --bs-font-size-sm."
2893
2825
  },
2894
2826
  {
2895
- "name": "attachments",
2896
- "description": "A `bs-attachment-list` (or other content) rendered inside the composer's own\nbordered container, above the text field -- only takes up space/padding when it has assigned\ncontent, so leaving it empty renders identically to not having the slot at all."
2897
- }
2898
- ],
2899
- "cssParts": [
2827
+ "name": "--bs-chip-filter-font-weight",
2828
+ "description": "Aliased to --bs-font-weight-regular. Color (background/text per selected/hover/focus/pressed/disabled state) comes directly from brandsync-tokens' own pre-built chip token set (--bs-chip-bg-..., --bs-chip-text-..., --bs-chip-border-...) below -- those are shared across the whole bs-chip family, not local to this component, so they're consumed directly rather than re-aliased under a bs-chip-filter-specific name."
2829
+ },
2900
2830
  {
2901
- "name": "action",
2902
- "description": "The primary circular action button (send, stop, or confirm depending on `state`)."
2831
+ "name": "--bs-chip-filter-gap",
2832
+ "description": "Gap between icon/label/caret. Aliased to --bs-spacing-50."
2903
2833
  },
2904
2834
  {
2905
- "name": "attach",
2906
- "description": "The \"+\" attach button."
2835
+ "name": "--bs-chip-filter-height-lg",
2836
+ "description": "Height at size=\"lg\". Aliased to --bs-spacing-400."
2907
2837
  },
2908
2838
  {
2909
- "name": "attachments",
2910
- "description": "The wrapper around the `attachments` slot."
2839
+ "name": "--bs-chip-filter-height-md",
2840
+ "description": "Height at size=\"md\". Aliased to --bs-spacing-300."
2911
2841
  },
2912
2842
  {
2913
- "name": "input",
2914
- "description": "The native text `<textarea>`."
2843
+ "name": "--bs-chip-filter-icon-size",
2844
+ "description": "Icon/caret glyph size. 16px, matching Figma exactly -- constant across both sizes, only the chip's own height changes."
2915
2845
  },
2916
2846
  {
2917
- "name": "mic",
2918
- "description": "The secondary icon button (microphone, or the stop-recording square while `state=\"recording\"`)."
2847
+ "name": "--bs-chip-filter-line-height",
2848
+ "description": "Aliased to --bs-line-height-body-sm."
2849
+ },
2850
+ {
2851
+ "name": "--bs-chip-filter-padding-x-glyph-side",
2852
+ "description": "Horizontal padding on an edge adjacent to the icon or the caret. Aliased to --bs-spacing-100."
2853
+ },
2854
+ {
2855
+ "name": "--bs-chip-filter-padding-x-plain-side",
2856
+ "description": "Horizontal padding on a label-only edge, when the opposite edge has a glyph. Aliased to --bs-spacing-150."
2857
+ },
2858
+ {
2859
+ "name": "--bs-chip-filter-padding-x-text-only",
2860
+ "description": "Horizontal padding on both edges, when neither has a glyph. Aliased to --bs-spacing-200 -- deliberately not the same as --bs-chip-filter-padding-x-plain-side; verified against Figma that a plain-text chip (no icon, no dropdown) uses a bigger value on both sides rather than the smaller one-sided compensating value used when only one edge lacks a glyph."
2919
2861
  }
2920
2862
  ]
2921
2863
  }
@@ -2923,202 +2865,184 @@
2923
2865
  "exports": [
2924
2866
  {
2925
2867
  "kind": "js",
2926
- "name": "BsComposer",
2868
+ "name": "BsChipFilter",
2927
2869
  "declaration": {
2928
- "name": "BsComposer"
2870
+ "name": "BsChipFilter"
2929
2871
  }
2930
2872
  },
2931
2873
  {
2932
2874
  "kind": "custom-element-definition",
2933
- "name": "bs-composer",
2875
+ "name": "bs-chip-filter",
2934
2876
  "declaration": {
2935
- "name": "BsComposer"
2877
+ "name": "BsChipFilter"
2936
2878
  }
2937
2879
  }
2938
2880
  ]
2939
2881
  },
2940
2882
  {
2941
2883
  "kind": "javascript-module",
2942
- "path": "src/components/bs-composer-status-banner/bs-composer-status-banner.tsx",
2884
+ "path": "src/components/bs-chip/bs-chip-informative/bs-chip-informative.tsx",
2943
2885
  "declarations": [
2944
2886
  {
2945
2887
  "kind": "class",
2946
2888
  "customElement": true,
2947
- "tagName": "bs-composer-status-banner",
2948
- "name": "BsComposerStatusBanner",
2949
- "description": "A full-width status banner for use directly above `bs-composer`, surfacing a message about the\ncomposer's current state (e.g. a send failure, an informational notice) with an optional\n\"Continue\"-style action button and an optional close button.\n\n## When to use\n- A message tied to the composer itself (send failed, rate-limited, draft restored, etc.) that\n needs to sit directly above it, not a general-purpose alert -- see `CONVENTIONS.md` if this\n library gains a generic banner/alert component later, and prefer that instead once it exists.\n\n## When not to use\n- A toast/snackbar notification unrelated to the composer -- this component is not\n self-dismissing and has no positioning of its own (it's a static block, not an overlay).\n\n## Accessibility\nSets `role=\"status\"` for `type=\"info\"`/`type=\"neutral\"` and `role=\"alert\"` for\n`type=\"error\"`/`type=\"warning\"` on its own root element automatically -- no opt-in prop needed.\nBoth roles carry implicit ARIA live-region semantics (`status` is polite, `alert` is assertive),\nso a screen reader announces the message as soon as this banner is inserted into the DOM,\nwithout a consumer having to remember to add `role`/`aria-live` themselves.",
2889
+ "tagName": "bs-chip-informative",
2890
+ "name": "BsChipInformative",
2891
+ "description": "A pill-shaped, non-interactive label for conveying a category or status at a glance, optionally\npaired with a leading icon. Unlike `bs-chip-filter`/`bs-chip-input`, this is purely informational\n-- no click/select/remove behavior, no hover/focus/pressed states.\n\n## When to use\n- Conveying a category or status inline with other content, with more color options and an\n optional icon than `bs-badge` offers.\n\n## When not to use\n- Anything clickable/selectable -- use `bs-chip-filter`.\n- A short, fixed status label with no color/icon needs -- `bs-badge` is the simpler choice.",
2950
2892
  "attributes": [
2951
2893
  {
2952
- "name": "action-label",
2953
- "description": "Label for the action button, only rendered when `showButton` is true.",
2954
- "type": {
2955
- "text": "string"
2956
- },
2957
- "default": "'Continue'",
2958
- "fieldName": "actionLabel"
2959
- },
2960
- {
2961
- "name": "allow-close",
2962
- "description": "Whether the close button is rendered.",
2963
- "type": {
2964
- "text": "boolean"
2965
- },
2966
- "default": "true",
2967
- "fieldName": "allowClose"
2968
- },
2969
- {
2970
- "name": "message",
2971
- "description": "The message text.",
2894
+ "name": "color",
2895
+ "description": "Semantic color. Maps directly to the brandsync-tokens `--bs-chip-bg-*-container`/\n`--bs-chip-text-*` sets. Ignored (in favor of the disabled token set) when `disabled` is\nset -- same override relationship `bs-stepper-step`'s `error`/`disabled` props have.",
2972
2896
  "type": {
2973
- "text": "string"
2897
+ "text": "\"error\" | \"info\" | \"neutral\" | \"success\" | \"warning\"",
2898
+ "references": [
2899
+ {
2900
+ "name": "BsChipInformativeColor"
2901
+ }
2902
+ ]
2974
2903
  },
2975
- "default": "'This is a message'",
2976
- "fieldName": "message"
2904
+ "default": "'neutral'",
2905
+ "fieldName": "color"
2977
2906
  },
2978
2907
  {
2979
- "name": "show-button",
2980
- "description": "Whether the \"Continue\"-style action button is rendered.",
2908
+ "name": "disabled",
2909
+ "description": "Overrides `color` with the disabled token set, regardless of its value. Reflected so\n`:host([disabled])` can apply it in CSS.",
2981
2910
  "type": {
2982
2911
  "text": "boolean"
2983
2912
  },
2984
2913
  "default": "false",
2985
- "fieldName": "showButton"
2986
- },
2987
- {
2988
- "name": "show-icon",
2989
- "description": "Whether the leading icon (default: clock) is rendered.",
2990
- "type": {
2991
- "text": "boolean"
2992
- },
2993
- "default": "true",
2994
- "fieldName": "showIcon"
2914
+ "fieldName": "disabled"
2995
2915
  },
2996
2916
  {
2997
- "name": "type",
2998
- "description": "Which severity/style to render. Drives background, text/icon color, and the action button's color.",
2917
+ "name": "size",
2918
+ "description": "Sizing scale. Controls height and font-size/line-height together -- unlike\n`bs-chip-filter`/`bs-chip-input`, Figma specs a distinct (smaller) font at `size=\"sm\"`, not\njust a shorter pill.",
2999
2919
  "type": {
3000
- "text": "\"error\" | \"info\" | \"neutral\" | \"warning\"",
2920
+ "text": "\"lg\" | \"md\" | \"sm\"",
3001
2921
  "references": [
3002
2922
  {
3003
- "name": "BsComposerStatusBannerType"
2923
+ "name": "BsChipInformativeSize"
3004
2924
  }
3005
2925
  ]
3006
2926
  },
3007
- "default": "'error'",
3008
- "fieldName": "type"
2927
+ "default": "'lg'",
2928
+ "fieldName": "size"
3009
2929
  }
3010
2930
  ],
3011
2931
  "members": [
3012
2932
  {
3013
2933
  "kind": "field",
3014
- "name": "actionLabel",
3015
- "description": "Label for the action button, only rendered when `showButton` is true.",
2934
+ "name": "color",
2935
+ "description": "Semantic color. Maps directly to the brandsync-tokens `--bs-chip-bg-*-container`/\n`--bs-chip-text-*` sets. Ignored (in favor of the disabled token set) when `disabled` is\nset -- same override relationship `bs-stepper-step`'s `error`/`disabled` props have.",
3016
2936
  "type": {
3017
- "text": "string"
2937
+ "text": "\"error\" | \"info\" | \"neutral\" | \"success\" | \"warning\"",
2938
+ "references": [
2939
+ {
2940
+ "name": "BsChipInformativeColor"
2941
+ }
2942
+ ]
3018
2943
  },
3019
- "default": "'Continue'",
3020
- "readonly": true,
3021
- "attribute": "action-label"
2944
+ "default": "'neutral'",
2945
+ "attribute": "color"
3022
2946
  },
3023
2947
  {
3024
2948
  "kind": "field",
3025
- "name": "allowClose",
3026
- "description": "Whether the close button is rendered.",
2949
+ "name": "disabled",
2950
+ "description": "Overrides `color` with the disabled token set, regardless of its value. Reflected so\n`:host([disabled])` can apply it in CSS.",
3027
2951
  "type": {
3028
2952
  "text": "boolean"
3029
2953
  },
3030
- "default": "true",
3031
- "readonly": true,
3032
- "attribute": "allow-close"
2954
+ "default": "false",
2955
+ "attribute": "disabled",
2956
+ "reflects": true
3033
2957
  },
3034
2958
  {
3035
2959
  "kind": "field",
3036
- "name": "message",
3037
- "description": "The message text.",
2960
+ "name": "size",
2961
+ "description": "Sizing scale. Controls height and font-size/line-height together -- unlike\n`bs-chip-filter`/`bs-chip-input`, Figma specs a distinct (smaller) font at `size=\"sm\"`, not\njust a shorter pill.",
3038
2962
  "type": {
3039
- "text": "string"
2963
+ "text": "\"lg\" | \"md\" | \"sm\"",
2964
+ "references": [
2965
+ {
2966
+ "name": "BsChipInformativeSize"
2967
+ }
2968
+ ]
3040
2969
  },
3041
- "default": "'This is a message'",
3042
- "readonly": true,
3043
- "attribute": "message"
2970
+ "default": "'lg'",
2971
+ "attribute": "size"
2972
+ }
2973
+ ],
2974
+ "slots": [
2975
+ {
2976
+ "name": "",
2977
+ "description": "Default slot: the chip's label content."
3044
2978
  },
3045
2979
  {
3046
- "kind": "field",
3047
- "name": "showButton",
3048
- "description": "Whether the \"Continue\"-style action button is rendered.",
3049
- "type": {
3050
- "text": "boolean"
3051
- },
3052
- "default": "false",
3053
- "readonly": true,
3054
- "attribute": "show-button"
3055
- },
2980
+ "name": "icon",
2981
+ "description": "Optional leading icon."
2982
+ }
2983
+ ],
2984
+ "cssParts": [
3056
2985
  {
3057
- "kind": "field",
3058
- "name": "showIcon",
3059
- "description": "Whether the leading icon (default: clock) is rendered.",
3060
- "type": {
3061
- "text": "boolean"
3062
- },
3063
- "default": "true",
3064
- "readonly": true,
3065
- "attribute": "show-icon"
2986
+ "name": "icon",
2987
+ "description": "The icon wrapper element."
3066
2988
  },
3067
2989
  {
3068
- "kind": "field",
3069
- "name": "type",
3070
- "description": "Which severity/style to render. Drives background, text/icon color, and the action button's color.",
3071
- "type": {
3072
- "text": "\"error\" | \"info\" | \"neutral\" | \"warning\"",
3073
- "references": [
3074
- {
3075
- "name": "BsComposerStatusBannerType"
3076
- }
3077
- ]
3078
- },
3079
- "default": "'error'",
3080
- "readonly": true,
3081
- "attribute": "type"
2990
+ "name": "label",
2991
+ "description": "The text label element."
3082
2992
  }
3083
2993
  ],
3084
- "events": [
2994
+ "cssProperties": [
3085
2995
  {
3086
- "name": "bsAction",
3087
- "description": "Fires when the action button is clicked. Only relevant when `showButton` is true.",
3088
- "type": {
3089
- "text": "CustomEvent<void>"
3090
- }
2996
+ "name": "--bs-chip-informative-font-size",
2997
+ "description": "Aliased to --bs-font-size-sm (size=\"md\"/\"lg\")."
3091
2998
  },
3092
2999
  {
3093
- "name": "bsClose",
3094
- "description": "Fires when the close button is clicked. Only relevant when `allowClose` is true.",
3095
- "type": {
3096
- "text": "CustomEvent<void>"
3097
- }
3098
- }
3099
- ],
3100
- "slots": [
3000
+ "name": "--bs-chip-informative-font-size-sm",
3001
+ "description": "Aliased to --bs-font-size-xs (size=\"sm\" only -- every other size uses --bs-chip-informative-font-size below)."
3002
+ },
3101
3003
  {
3102
- "name": "icon",
3103
- "description": "Overrides the default leading icon. Only rendered when `showIcon` is true."
3104
- }
3105
- ],
3106
- "cssParts": [
3004
+ "name": "--bs-chip-informative-font-weight",
3005
+ "description": "Aliased to --bs-font-weight-regular. Color (background/text per color/disabled) comes directly from brandsync-tokens' own pre-built chip token set below -- shared across the whole bs-chip family, not local to this component, consumed directly rather than re-aliased under a bs-chip-informative-specific name."
3006
+ },
3107
3007
  {
3108
- "name": "action",
3109
- "description": "The optional \"Continue\"-style action button."
3008
+ "name": "--bs-chip-informative-gap",
3009
+ "description": "Gap between icon and label. Aliased to --bs-spacing-50."
3110
3010
  },
3111
3011
  {
3112
- "name": "close",
3113
- "description": "The optional close button."
3012
+ "name": "--bs-chip-informative-height-lg",
3013
+ "description": "Height at size=\"lg\". Aliased to --bs-spacing-400."
3114
3014
  },
3115
3015
  {
3116
- "name": "icon",
3117
- "description": "The leading icon wrapper."
3016
+ "name": "--bs-chip-informative-height-md",
3017
+ "description": "Height at size=\"md\". Aliased to --bs-spacing-300."
3118
3018
  },
3119
3019
  {
3120
- "name": "message",
3121
- "description": "The message text."
3020
+ "name": "--bs-chip-informative-height-sm",
3021
+ "description": "Height at size=\"sm\". Aliased to --bs-spacing-250."
3022
+ },
3023
+ {
3024
+ "name": "--bs-chip-informative-icon-size",
3025
+ "description": "Icon glyph size. 16px, matching Figma exactly -- constant across all sizes, only the chip's own height/font changes."
3026
+ },
3027
+ {
3028
+ "name": "--bs-chip-informative-line-height",
3029
+ "description": "Aliased to --bs-line-height-body-sm (size=\"md\"/\"lg\")."
3030
+ },
3031
+ {
3032
+ "name": "--bs-chip-informative-line-height-sm",
3033
+ "description": "Aliased to --bs-line-height-caption-sm (size=\"sm\" only)."
3034
+ },
3035
+ {
3036
+ "name": "--bs-chip-informative-padding-right-icon-variant",
3037
+ "description": "Right-edge padding specifically when there's a leading icon (the label-only edge in that case). Aliased to --bs-spacing-150."
3038
+ },
3039
+ {
3040
+ "name": "--bs-chip-informative-padding-x-glyph-side",
3041
+ "description": "Left-edge padding when there's a leading icon. Aliased to --bs-spacing-100."
3042
+ },
3043
+ {
3044
+ "name": "--bs-chip-informative-padding-x-plain-side",
3045
+ "description": "Both edges' padding when there's no leading icon. Aliased to --bs-spacing-200 -- deliberately not the icon variant's own right-edge value (--bs-spacing-150) below; verified against Figma that the no-icon variant uses a bigger value on both sides rather than reusing the icon variant's smaller one-sided value."
3122
3046
  }
3123
3047
  ]
3124
3048
  }
@@ -3126,171 +3050,179 @@
3126
3050
  "exports": [
3127
3051
  {
3128
3052
  "kind": "js",
3129
- "name": "BsComposerStatusBanner",
3053
+ "name": "BsChipInformative",
3130
3054
  "declaration": {
3131
- "name": "BsComposerStatusBanner"
3055
+ "name": "BsChipInformative"
3132
3056
  }
3133
3057
  },
3134
3058
  {
3135
3059
  "kind": "custom-element-definition",
3136
- "name": "bs-composer-status-banner",
3060
+ "name": "bs-chip-informative",
3137
3061
  "declaration": {
3138
- "name": "BsComposerStatusBanner"
3062
+ "name": "BsChipInformative"
3139
3063
  }
3140
3064
  }
3141
3065
  ]
3142
3066
  },
3143
3067
  {
3144
3068
  "kind": "javascript-module",
3145
- "path": "src/components/bs-data-table/bs-data-table.tsx",
3069
+ "path": "src/components/bs-chip/bs-chip-input/bs-chip-input.tsx",
3146
3070
  "declarations": [
3147
3071
  {
3148
3072
  "kind": "class",
3149
3073
  "customElement": true,
3150
- "tagName": "bs-data-table",
3151
- "name": "BsDataTable",
3152
- "description": "A sortable, optionally row-selectable table for tabular data.\n\n`columns`, `rows`, and `cellRenderer` are JS-property-only — HTML attributes can only carry\nstrings, so arrays/objects/functions must be set via `element.rows = [...]` etc., not as\nattributes. See CONVENTIONS.md.\n\n## When to use\n- Comparing structured records across the same set of fields (a list of people, bookings, etc.).\n\n## When not to use\n- A handful of unrelated key/value pairs — a simple list or card is lighter-weight.\n- Deeply nested/hierarchical data — this component renders one flat row per record.",
3074
+ "tagName": "bs-chip-input",
3075
+ "name": "BsChipInput",
3076
+ "description": "A pill-shaped, removable representation of a discrete piece of user-entered data (e.g. a tag,\na selected filter value, an invited email address), optionally paired with a leading icon or\navatar. Unlike `bs-chip-filter`, this is a compound control -- the body toggles `selected`, and\na separate trailing button removes the chip entirely.\n\n## When to use\n- Representing one entry in a list the user built themselves (tags, recipients, multi-select\n values) that they need to be able to remove individually.\n\n## When not to use\n- A single toggleable filter, with no removal affordance -- use `bs-chip-filter`.\n- A static, non-interactive status/category label -- use `bs-badge`.",
3153
3077
  "attributes": [
3154
3078
  {
3155
- "name": "selectable",
3079
+ "name": "disabled",
3080
+ "description": "Disables both the body and the remove button, and reflected so `:host([disabled])` can\napply the disabled token set (a plain CSS pseudo-class can't target the host itself here,\nsince :host isn't a native form control).",
3156
3081
  "type": {
3157
3082
  "text": "boolean"
3158
3083
  },
3159
3084
  "default": "false",
3160
- "fieldName": "selectable"
3085
+ "fieldName": "disabled"
3161
3086
  },
3162
3087
  {
3163
- "name": "sort-column",
3088
+ "name": "selected",
3089
+ "description": "Whether the chip reads as toggled on. Mutable so clicking the body toggles directly, and\nreflected so consumers can target `bs-chip-input[selected]` via CSS.",
3164
3090
  "type": {
3165
- "text": "string"
3091
+ "text": "boolean"
3166
3092
  },
3167
- "fieldName": "sortColumn"
3093
+ "default": "false",
3094
+ "fieldName": "selected"
3168
3095
  },
3169
3096
  {
3170
- "name": "sort-direction",
3097
+ "name": "size",
3098
+ "description": "Sizing scale. Controls the chip's height only -- icon size, gap, and font size stay\nconstant across sizes, matching the Figma spec exactly.",
3171
3099
  "type": {
3172
- "text": "\"asc\" | \"desc\""
3100
+ "text": "\"lg\" | \"md\"",
3101
+ "references": [
3102
+ {
3103
+ "name": "BsChipInputSize"
3104
+ }
3105
+ ]
3173
3106
  },
3174
- "default": "'asc'",
3175
- "fieldName": "sortDirection"
3107
+ "default": "'lg'",
3108
+ "fieldName": "size"
3176
3109
  }
3177
3110
  ],
3178
3111
  "members": [
3179
3112
  {
3180
3113
  "kind": "field",
3181
- "name": "cellRenderer",
3182
- "description": "Optional custom cell renderer, e.g. for an actions column. Function props are JS-property-only,\nsame as array props -- there is no attribute equivalent. Falls back to the raw cell value.",
3114
+ "name": "disabled",
3115
+ "description": "Disables both the body and the remove button, and reflected so `:host([disabled])` can\napply the disabled token set (a plain CSS pseudo-class can't target the host itself here,\nsince :host isn't a native form control).",
3183
3116
  "type": {
3184
- "text": "(row: BsDataTableRow, column: BsDataTableColumn) => string",
3185
- "references": [
3186
- {
3187
- "name": "BsDataTableRow"
3188
- },
3189
- {
3190
- "name": "BsDataTableColumn"
3191
- }
3192
- ]
3117
+ "text": "boolean"
3193
3118
  },
3194
- "readonly": true
3119
+ "default": "false",
3120
+ "attribute": "disabled",
3121
+ "reflects": true
3195
3122
  },
3196
3123
  {
3197
3124
  "kind": "field",
3198
- "name": "columns",
3199
- "description": "Array prop -- must be set as a JS property (`el.columns = [...]`), not an HTML attribute,\nsince attributes can only carry strings. See CONVENTIONS.md.",
3125
+ "name": "selected",
3126
+ "description": "Whether the chip reads as toggled on. Mutable so clicking the body toggles directly, and\nreflected so consumers can target `bs-chip-input[selected]` via CSS.",
3200
3127
  "type": {
3201
- "text": "BsDataTableColumn[]",
3202
- "references": [
3203
- {
3204
- "name": "BsDataTableColumn"
3205
- }
3206
- ]
3128
+ "text": "boolean"
3207
3129
  },
3208
- "default": "[]",
3209
- "readonly": true
3130
+ "default": "false",
3131
+ "attribute": "selected",
3132
+ "reflects": true
3210
3133
  },
3211
3134
  {
3212
3135
  "kind": "field",
3213
- "name": "rows",
3214
- "description": "Array prop -- same JS-property-only rule as `columns`.",
3136
+ "name": "size",
3137
+ "description": "Sizing scale. Controls the chip's height only -- icon size, gap, and font size stay\nconstant across sizes, matching the Figma spec exactly.",
3215
3138
  "type": {
3216
- "text": "BsDataTableRow[]",
3139
+ "text": "\"lg\" | \"md\"",
3217
3140
  "references": [
3218
3141
  {
3219
- "name": "BsDataTableRow"
3142
+ "name": "BsChipInputSize"
3220
3143
  }
3221
3144
  ]
3222
3145
  },
3223
- "default": "[]",
3224
- "readonly": true
3225
- },
3226
- {
3227
- "kind": "field",
3228
- "name": "selectable",
3229
- "type": {
3230
- "text": "boolean"
3231
- },
3232
- "default": "false",
3233
- "readonly": true,
3234
- "attribute": "selectable"
3235
- },
3236
- {
3237
- "kind": "field",
3238
- "name": "sortColumn",
3239
- "type": {
3240
- "text": "string"
3241
- },
3242
- "readonly": true,
3243
- "attribute": "sort-column"
3244
- },
3245
- {
3246
- "kind": "field",
3247
- "name": "sortDirection",
3248
- "type": {
3249
- "text": "\"asc\" | \"desc\""
3250
- },
3251
- "default": "'asc'",
3252
- "readonly": true,
3253
- "attribute": "sort-direction"
3146
+ "default": "'lg'",
3147
+ "attribute": "size"
3254
3148
  }
3255
3149
  ],
3256
3150
  "events": [
3257
3151
  {
3258
- "name": "bsRowSelect",
3152
+ "name": "bsChange",
3153
+ "description": "Emitted when `selected` changes via clicking the body, with the new value.",
3259
3154
  "type": {
3260
- "text": "CustomEvent<{ id: string | number; selected: boolean; }>"
3155
+ "text": "CustomEvent<boolean>"
3261
3156
  }
3262
3157
  },
3263
3158
  {
3264
- "name": "bsSort",
3159
+ "name": "bsRemove",
3160
+ "description": "Emitted when the remove button is clicked. No payload -- unlike bs-input's own chip-entry\nmode (which tracks a `chips: string[]` array internally and can identify which string was\nremoved), a standalone chip doesn't know its own \"value\" to a consumer; whatever's rendering\na list of these already has that context via closure/key.",
3265
3161
  "type": {
3266
- "text": "CustomEvent<{ column: string; direction: \"desc\" | \"asc\"; }>"
3162
+ "text": "CustomEvent<void>"
3267
3163
  }
3268
3164
  }
3269
3165
  ],
3166
+ "slots": [
3167
+ {
3168
+ "name": "",
3169
+ "description": "Default slot: the chip's label content."
3170
+ },
3171
+ {
3172
+ "name": "icon",
3173
+ "description": "Optional leading visual. Defaults to 16px (a plain icon), except a\n`<bs-avatar size=\"xs\">` specifically keeps its own natural 24px sizing instead -- Figma specs\na plain icon and an avatar (with its own existing border ring) at two different sizes."
3174
+ }
3175
+ ],
3270
3176
  "cssParts": [
3271
3177
  {
3272
3178
  "name": "body",
3273
- "description": "The `<tbody>` element."
3179
+ "description": "The button that toggles `selected`."
3274
3180
  },
3275
3181
  {
3276
- "name": "cell",
3277
- "description": "Each `<td>` in a body row."
3182
+ "name": "icon",
3183
+ "description": "The icon wrapper element."
3278
3184
  },
3279
3185
  {
3280
- "name": "head",
3281
- "description": "The `<thead>` element."
3186
+ "name": "label",
3187
+ "description": "The text label element."
3282
3188
  },
3283
3189
  {
3284
- "name": "header-cell",
3285
- "description": "Each `<th>` in the header row."
3190
+ "name": "remove",
3191
+ "description": "The trailing remove button."
3192
+ }
3193
+ ],
3194
+ "cssProperties": [
3195
+ {
3196
+ "name": "--bs-chip-input-font-size",
3197
+ "description": "Aliased to --bs-font-size-sm."
3286
3198
  },
3287
3199
  {
3288
- "name": "row",
3289
- "description": "Each `<tr>` in the body."
3200
+ "name": "--bs-chip-input-font-weight",
3201
+ "description": "Aliased to --bs-font-weight-regular. Color (background/text per selected/hover/focus/pressed/disabled state) comes directly from brandsync-tokens' own pre-built chip token set (--bs-chip-bg-..., --bs-chip-text-..., --bs-chip-border-...) below -- shared across the whole bs-chip family, not local to this component, consumed directly rather than re-aliased under a bs-chip-input-specific name."
3290
3202
  },
3291
3203
  {
3292
- "name": "table",
3293
- "description": "The `<table>` element."
3204
+ "name": "--bs-chip-input-gap",
3205
+ "description": "Gap between icon/label/remove. Aliased to --bs-spacing-50."
3206
+ },
3207
+ {
3208
+ "name": "--bs-chip-input-height-lg",
3209
+ "description": "Height at size=\"lg\". Aliased to --bs-spacing-400."
3210
+ },
3211
+ {
3212
+ "name": "--bs-chip-input-height-md",
3213
+ "description": "Height at size=\"md\". Aliased to --bs-spacing-300."
3214
+ },
3215
+ {
3216
+ "name": "--bs-chip-input-line-height",
3217
+ "description": "Aliased to --bs-line-height-body-sm."
3218
+ },
3219
+ {
3220
+ "name": "--bs-chip-input-padding-x-glyph-side",
3221
+ "description": "Horizontal padding on an edge adjacent to a glyph (the icon on the left, or the remove button on the right, which is always present). Aliased to --bs-spacing-100."
3222
+ },
3223
+ {
3224
+ "name": "--bs-chip-input-padding-x-plain-side",
3225
+ "description": "Left-edge padding when there's no leading icon. Aliased to --bs-spacing-150."
3294
3226
  }
3295
3227
  ]
3296
3228
  }
@@ -3298,177 +3230,221 @@
3298
3230
  "exports": [
3299
3231
  {
3300
3232
  "kind": "js",
3301
- "name": "BsDataTable",
3233
+ "name": "BsChipInput",
3302
3234
  "declaration": {
3303
- "name": "BsDataTable"
3235
+ "name": "BsChipInput"
3304
3236
  }
3305
3237
  },
3306
3238
  {
3307
3239
  "kind": "custom-element-definition",
3308
- "name": "bs-data-table",
3240
+ "name": "bs-chip-input",
3309
3241
  "declaration": {
3310
- "name": "BsDataTable"
3242
+ "name": "BsChipInput"
3311
3243
  }
3312
3244
  }
3313
3245
  ]
3314
3246
  },
3315
3247
  {
3316
3248
  "kind": "javascript-module",
3317
- "path": "src/components/bs-dialog/bs-dialog.tsx",
3249
+ "path": "src/components/bs-composer/bs-composer.tsx",
3318
3250
  "declarations": [
3319
3251
  {
3320
3252
  "kind": "class",
3321
3253
  "customElement": true,
3322
- "tagName": "bs-dialog",
3323
- "name": "BsDialog",
3324
- "description": "An overlay dialog that interrupts the current flow for a focused task or confirmation.\nCloses itself on backdrop click, Escape, or its own close button, and emits `bsClose`.\n\n## When to use\n- Confirming a consequential action (e.g. \"Confirm booking\") before it takes effect.\n- A short, focused task that doesn't warrant navigating to a new page.\n\n## When not to use\n- For non-blocking status messages — use a toast/notification instead of interrupting the user.\n- For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a\n dialog that just gets taller and taller.\n\nTwo additional slots cover the Figma \"Dialog\" component's other states: `image` (a hero image\nacross the top, close button floats over it instead of sitting in the header row) and `icon`\n(only rendered when `centered` is set, e.g. a success checkmark above a centered heading). The\nclose button \"floats\" (absolute-positioned, top-right of the dialog, with its own background)\nwhenever `centered` is true or the `image` slot has content -- otherwise it's the plain inline\nbutton in the header row next to the heading, same as before this addition.",
3254
+ "tagName": "bs-composer",
3255
+ "name": "BsComposer",
3256
+ "description": "A chat composer input for Genie AI-style conversational interfaces: a text field\nplus an attach button, a mic/voice-recording toggle, and a single primary action button whose\nicon and behavior change with `state` (send, stop generating, or confirm a voice recording).\n\n## When to use\n- The message-entry bar for an AI chat/assistant or human support conversation.\n\n## When not to use\n- A general-purpose text field — use `bs-input` instead; this component's layout and states are\n purpose-built for a chat composer, not a generic form field.\n\n## Focus\nUses `shadow: { delegatesFocus: true }`, so calling `.focus()` on the `<bs-composer>` host\nelement itself (not just its internal `<input>`) moves focus into the shadow-DOM text field --\nuseful for e.g. focusing the composer after a parent view mounts, without reaching into its\nshadow root.",
3325
3257
  "attributes": [
3326
3258
  {
3327
- "name": "centered",
3328
- "description": "Switches to the Figma \"Icon Centered\" layout: heading/body text centered, the `icon` slot\nrendered above the heading, and the close button floating top-right of the dialog instead of\ninline in the header row. Doesn't hide a slotted `image` if one is also provided -- Figma's\nspec doesn't show the two combined, so this is unspecified rather than actively blocked.\nReflected so consumers/CSS can target `bs-dialog[centered]`.",
3259
+ "name": "aria-label",
3260
+ "description": "Accessible name for the text field. This component has no visible `<label>` (chat composers\ndon't show one in the design), so `ariaLabel` is the only way a consumer gives the textbox an\naccessible name -- set it in every real usage.",
3329
3261
  "type": {
3330
- "text": "boolean"
3262
+ "text": "string"
3331
3263
  },
3332
- "default": "false",
3333
- "fieldName": "centered"
3264
+ "default": "null",
3265
+ "fieldName": "ariaLabel"
3334
3266
  },
3335
3267
  {
3336
- "name": "heading",
3268
+ "name": "placeholder",
3269
+ "description": "Overrides the variant's default placeholder.",
3337
3270
  "type": {
3338
3271
  "text": "string"
3339
3272
  },
3340
- "fieldName": "heading"
3273
+ "fieldName": "placeholder"
3341
3274
  },
3342
3275
  {
3343
- "name": "open",
3344
- "description": "Mutable + reflected so the component can close itself (backdrop click, Escape, close button)\nthe same way a native `<dialog>` does, while still emitting `bsClose` for the consumer to react to.",
3276
+ "name": "state",
3277
+ "description": "Which of the four mutually-exclusive composer states to render: `idle` (send, enabled),\n`generating` (stop, while the AI is responding), `disabled` (send, but not interactive), or\n`recording` (voice input in progress -- shows a waveform and a confirm action).",
3345
3278
  "type": {
3346
- "text": "boolean"
3347
- },
3348
- "default": "false",
3349
- "fieldName": "open"
3350
- },
3351
- {
3352
- "name": "size",
3279
+ "text": "\"disabled\" | \"generating\" | \"idle\" | \"recording\"",
3280
+ "references": [
3281
+ {
3282
+ "name": "BsComposerState"
3283
+ }
3284
+ ]
3285
+ },
3286
+ "default": "'idle'",
3287
+ "fieldName": "state"
3288
+ },
3289
+ {
3290
+ "name": "value",
3291
+ "description": "Current text value. Native `input` events don't cross the Shadow DOM boundary, so this\ncomponent re-dispatches them as a `bsInput` custom event instead.\n\nThe field is a `<textarea>` (not a single-line `<input>`) that grows with its content, up to\n`--bs-composer-input-max-lines` (10 by default) -- beyond that it scrolls internally instead\nof growing further. Setting `value` as a prop (not just typing) also re-triggers the resize,\nso e.g. programmatically clearing the field after submit correctly shrinks it back down.",
3353
3292
  "type": {
3354
- "text": "\"lg\" | \"md\" | \"sm\"",
3293
+ "text": "string"
3294
+ },
3295
+ "default": "''",
3296
+ "fieldName": "value"
3297
+ },
3298
+ {
3299
+ "name": "variant",
3300
+ "description": "Which flavor of composer this is: changes the *default* placeholder text (set `placeholder`\ndirectly to override it) and, per the Figma design, renders the container border dashed\ninstead of solid for `'human'` -- a deliberate visual cue distinguishing a human-support\ncomposer from the AI one, not a layout/token difference.",
3301
+ "type": {
3302
+ "text": "\"ai\" | \"human\"",
3355
3303
  "references": [
3356
3304
  {
3357
- "name": "BsDialogSize"
3305
+ "name": "BsComposerVariant"
3358
3306
  }
3359
3307
  ]
3360
3308
  },
3361
- "default": "'md'",
3362
- "fieldName": "size"
3309
+ "default": "'ai'",
3310
+ "fieldName": "variant"
3363
3311
  }
3364
3312
  ],
3365
3313
  "members": [
3366
3314
  {
3367
3315
  "kind": "field",
3368
- "name": "centered",
3369
- "description": "Switches to the Figma \"Icon Centered\" layout: heading/body text centered, the `icon` slot\nrendered above the heading, and the close button floating top-right of the dialog instead of\ninline in the header row. Doesn't hide a slotted `image` if one is also provided -- Figma's\nspec doesn't show the two combined, so this is unspecified rather than actively blocked.\nReflected so consumers/CSS can target `bs-dialog[centered]`.",
3316
+ "name": "ariaLabel",
3317
+ "description": "Accessible name for the text field. This component has no visible `<label>` (chat composers\ndon't show one in the design), so `ariaLabel` is the only way a consumer gives the textbox an\naccessible name -- set it in every real usage.",
3370
3318
  "type": {
3371
- "text": "boolean"
3319
+ "text": "string"
3372
3320
  },
3373
- "default": "false",
3374
- "readonly": true,
3375
- "attribute": "centered",
3376
- "reflects": true
3321
+ "default": "null",
3322
+ "attribute": "aria-label"
3377
3323
  },
3378
3324
  {
3379
3325
  "kind": "field",
3380
- "name": "heading",
3326
+ "name": "placeholder",
3327
+ "description": "Overrides the variant's default placeholder.",
3381
3328
  "type": {
3382
3329
  "text": "string"
3383
3330
  },
3384
- "readonly": true,
3385
- "attribute": "heading"
3331
+ "attribute": "placeholder"
3386
3332
  },
3387
3333
  {
3388
3334
  "kind": "field",
3389
- "name": "open",
3390
- "description": "Mutable + reflected so the component can close itself (backdrop click, Escape, close button)\nthe same way a native `<dialog>` does, while still emitting `bsClose` for the consumer to react to.",
3335
+ "name": "state",
3336
+ "description": "Which of the four mutually-exclusive composer states to render: `idle` (send, enabled),\n`generating` (stop, while the AI is responding), `disabled` (send, but not interactive), or\n`recording` (voice input in progress -- shows a waveform and a confirm action).",
3391
3337
  "type": {
3392
- "text": "boolean"
3338
+ "text": "\"disabled\" | \"generating\" | \"idle\" | \"recording\"",
3339
+ "references": [
3340
+ {
3341
+ "name": "BsComposerState"
3342
+ }
3343
+ ]
3393
3344
  },
3394
- "default": "false",
3395
- "attribute": "open",
3396
- "reflects": true
3345
+ "default": "'idle'",
3346
+ "attribute": "state"
3397
3347
  },
3398
3348
  {
3399
3349
  "kind": "field",
3400
- "name": "size",
3350
+ "name": "value",
3351
+ "description": "Current text value. Native `input` events don't cross the Shadow DOM boundary, so this\ncomponent re-dispatches them as a `bsInput` custom event instead.\n\nThe field is a `<textarea>` (not a single-line `<input>`) that grows with its content, up to\n`--bs-composer-input-max-lines` (10 by default) -- beyond that it scrolls internally instead\nof growing further. Setting `value` as a prop (not just typing) also re-triggers the resize,\nso e.g. programmatically clearing the field after submit correctly shrinks it back down.",
3401
3352
  "type": {
3402
- "text": "\"lg\" | \"md\" | \"sm\"",
3353
+ "text": "string"
3354
+ },
3355
+ "default": "''",
3356
+ "attribute": "value"
3357
+ },
3358
+ {
3359
+ "kind": "field",
3360
+ "name": "variant",
3361
+ "description": "Which flavor of composer this is: changes the *default* placeholder text (set `placeholder`\ndirectly to override it) and, per the Figma design, renders the container border dashed\ninstead of solid for `'human'` -- a deliberate visual cue distinguishing a human-support\ncomposer from the AI one, not a layout/token difference.",
3362
+ "type": {
3363
+ "text": "\"ai\" | \"human\"",
3403
3364
  "references": [
3404
3365
  {
3405
- "name": "BsDialogSize"
3366
+ "name": "BsComposerVariant"
3406
3367
  }
3407
3368
  ]
3408
3369
  },
3409
- "default": "'md'",
3410
- "readonly": true,
3411
- "attribute": "size"
3370
+ "default": "'ai'",
3371
+ "attribute": "variant"
3412
3372
  }
3413
3373
  ],
3414
3374
  "events": [
3415
3375
  {
3416
- "name": "bsClose",
3376
+ "name": "bsAttach",
3377
+ "description": "Fires when the \"+\" attach button is clicked.",
3417
3378
  "type": {
3418
3379
  "text": "CustomEvent<void>"
3419
3380
  }
3420
- }
3421
- ],
3422
- "slots": [
3381
+ },
3423
3382
  {
3424
- "name": "",
3425
- "description": "Default slot: the dialog body content."
3383
+ "name": "bsInput",
3384
+ "description": "Fires on every keystroke in the text field, with the current value.",
3385
+ "type": {
3386
+ "text": "CustomEvent<string>"
3387
+ }
3426
3388
  },
3427
3389
  {
3428
- "name": "footer",
3429
- "description": "Optional footer content (typically action buttons)."
3390
+ "name": "bsMicToggle",
3391
+ "description": "Fires when the mic/stop-recording button is clicked. The consumer decides what that means\n(e.g. start recording when idle/generating, or stop recording when `state=\"recording\"`).",
3392
+ "type": {
3393
+ "text": "CustomEvent<void>"
3394
+ }
3430
3395
  },
3431
3396
  {
3432
- "name": "icon",
3433
- "description": "Optional icon shown above the heading, only rendered at all when `centered` is true."
3397
+ "name": "bsStop",
3398
+ "description": "Fires when the primary action button is clicked while `state=\"generating\"`.",
3399
+ "type": {
3400
+ "text": "CustomEvent<void>"
3401
+ }
3434
3402
  },
3435
3403
  {
3436
- "name": "image",
3437
- "description": "Optional hero image across the top of the dialog. Presence of assigned content\nswitches the close button to float over it; doesn't affect layout when empty."
3404
+ "name": "bsSubmit",
3405
+ "description": "Fires when the primary action button is clicked while `state=\"idle\"`.",
3406
+ "type": {
3407
+ "text": "CustomEvent<void>"
3408
+ }
3409
+ },
3410
+ {
3411
+ "name": "bsVoiceConfirm",
3412
+ "description": "Fires when the primary action button is clicked while `state=\"recording\"`.",
3413
+ "type": {
3414
+ "text": "CustomEvent<void>"
3415
+ }
3438
3416
  }
3439
3417
  ],
3440
- "cssParts": [
3441
- {
3442
- "name": "backdrop",
3443
- "description": "The full-viewport overlay behind the dialog."
3444
- },
3418
+ "slots": [
3445
3419
  {
3446
- "name": "body",
3447
- "description": "The body content wrapper."
3420
+ "name": "actions-end",
3421
+ "description": "Extra consumer-supplied controls appended after the primary action button\nin the controls row (e.g. a product-specific \"Tools\" button). Slotted content is placed\ninline in the same flex row as attach/mic/action, so a slotted element should size itself to\nroughly match `--bs-composer-button-size` to align visually."
3448
3422
  },
3449
3423
  {
3450
- "name": "close",
3451
- "description": "The close button (inline in the header, or floating -- see the class doc above)."
3452
- },
3424
+ "name": "attachments",
3425
+ "description": "A `bs-attachment-list` (or other content) rendered inside the composer's own\nbordered container, above the text field -- only takes up space/padding when it has assigned\ncontent, so leaving it empty renders identically to not having the slot at all."
3426
+ }
3427
+ ],
3428
+ "cssParts": [
3453
3429
  {
3454
- "name": "dialog",
3455
- "description": "The dialog box itself."
3430
+ "name": "action",
3431
+ "description": "The primary circular action button (send, stop, or confirm depending on `state`)."
3456
3432
  },
3457
3433
  {
3458
- "name": "footer",
3459
- "description": "The footer wrapper (only visible when the footer slot has content)."
3434
+ "name": "attach",
3435
+ "description": "The \"+\" attach button."
3460
3436
  },
3461
3437
  {
3462
- "name": "header",
3463
- "description": "The header row (heading + close button, when the close button isn't floating)."
3438
+ "name": "attachments",
3439
+ "description": "The wrapper around the `attachments` slot."
3464
3440
  },
3465
3441
  {
3466
- "name": "icon",
3467
- "description": "The icon wrapper (only rendered when `centered` is true)."
3442
+ "name": "input",
3443
+ "description": "The native text `<textarea>`."
3468
3444
  },
3469
3445
  {
3470
- "name": "image",
3471
- "description": "The hero image wrapper (only visible when the `image` slot has content)."
3446
+ "name": "mic",
3447
+ "description": "The secondary icon button (microphone, or the stop-recording square while `state=\"recording\"`)."
3472
3448
  }
3473
3449
  ]
3474
3450
  }
@@ -3476,109 +3452,645 @@
3476
3452
  "exports": [
3477
3453
  {
3478
3454
  "kind": "js",
3479
- "name": "BsDialog",
3455
+ "name": "BsComposer",
3480
3456
  "declaration": {
3481
- "name": "BsDialog"
3457
+ "name": "BsComposer"
3482
3458
  }
3483
3459
  },
3484
3460
  {
3485
3461
  "kind": "custom-element-definition",
3486
- "name": "bs-dialog",
3462
+ "name": "bs-composer",
3487
3463
  "declaration": {
3488
- "name": "BsDialog"
3464
+ "name": "BsComposer"
3489
3465
  }
3490
3466
  }
3491
3467
  ]
3492
3468
  },
3493
3469
  {
3494
3470
  "kind": "javascript-module",
3495
- "path": "src/components/bs-button/bs-icon-button/bs-icon-button.tsx",
3471
+ "path": "src/components/bs-composer-status-banner/bs-composer-status-banner.tsx",
3496
3472
  "declarations": [
3497
3473
  {
3498
3474
  "kind": "class",
3499
3475
  "customElement": true,
3500
- "tagName": "bs-icon-button",
3501
- "name": "BsIconButton",
3502
- "description": "A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same\n8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.\n\n## When to use\n- A compact action where the icon alone is unambiguous (e.g. a close/dismiss control, a toolbar\n action) and adding a text label would take up more space than the context allows.\n- The same variant guidance as `bs-button` applies: `primary` for the single most important\n action, `neutral`/`subtle`/`outlined` for lower-emphasis alternatives, `error` reserved for\n destructive/irreversible actions (never `neutral`, per BrandSync guidance), `success`/\n `warning`/`info` only when the action's own outcome is predictable and clearly communicated.\n\n## When not to use\n- When the action isn't self-evident from the icon alone -- use `bs-button` with a visible label\n instead, don't rely on a tooltip to compensate for an unclear icon.\n- For navigation between pages -- use a link/nav component instead.\n\nBecause this component is always icon-only, `ariaLabel` is required for every real usage (not\njust conditionally, unlike `bs-button`) -- there's no visible label text to fall back on for an\naccessible name.",
3476
+ "tagName": "bs-composer-status-banner",
3477
+ "name": "BsComposerStatusBanner",
3478
+ "description": "A full-width status banner for use directly above `bs-composer`, surfacing a message about the\ncomposer's current state (e.g. a send failure, an informational notice) with an optional\n\"Continue\"-style action button and an optional close button.\n\n## When to use\n- A message tied to the composer itself (send failed, rate-limited, draft restored, etc.) that\n needs to sit directly above it, not a general-purpose alert -- see `CONVENTIONS.md` if this\n library gains a generic banner/alert component later, and prefer that instead once it exists.\n\n## When not to use\n- A toast/snackbar notification unrelated to the composer -- this component is not\n self-dismissing and has no positioning of its own (it's a static block, not an overlay).\n\n## Accessibility\nSets `role=\"status\"` for `type=\"info\"`/`type=\"neutral\"` and `role=\"alert\"` for\n`type=\"error\"`/`type=\"warning\"` on its own root element automatically -- no opt-in prop needed.\nBoth roles carry implicit ARIA live-region semantics (`status` is polite, `alert` is assertive),\nso a screen reader announces the message as soon as this banner is inserted into the DOM,\nwithout a consumer having to remember to add `role`/`aria-live` themselves.",
3503
3479
  "attributes": [
3504
3480
  {
3505
- "name": "aria-label",
3506
- "description": "Accessible name for the button. Required -- this component is always icon-only, so there's\nno visible label text for screen readers to fall back on. Stencil reflects this camelCase\nprop to the `aria-label` HTML attribute automatically.",
3481
+ "name": "action-label",
3482
+ "description": "Label for the action button, only rendered when `showButton` is true.",
3507
3483
  "type": {
3508
3484
  "text": "string"
3509
3485
  },
3510
- "default": "null",
3511
- "fieldName": "ariaLabel"
3486
+ "default": "'Continue'",
3487
+ "fieldName": "actionLabel"
3512
3488
  },
3513
3489
  {
3514
- "name": "disabled",
3515
- "description": "Disables the button and applies the disabled token set.",
3490
+ "name": "allow-close",
3491
+ "description": "Whether the close button is rendered.",
3516
3492
  "type": {
3517
3493
  "text": "boolean"
3518
3494
  },
3519
- "default": "false",
3520
- "fieldName": "disabled"
3495
+ "default": "true",
3496
+ "fieldName": "allowClose"
3521
3497
  },
3522
3498
  {
3523
- "name": "size",
3524
- "description": "Sizing scale. `xs` (16px, an 8px icon) is a distinct, much smaller tier meant for compact\nchip/tag \"remove\" controls, not just a smaller toolbar button -- verified against a separate\nFigma redline (EG BrandSync UI Kit v1.5, node 20731:18427) from the one `sm`/`md`/`lg` were\nbuilt against.",
3499
+ "name": "message",
3500
+ "description": "The message text.",
3525
3501
  "type": {
3526
- "text": "\"lg\" | \"md\" | \"sm\" | \"xs\"",
3527
- "references": [
3528
- {
3529
- "name": "BsIconButtonSize"
3530
- }
3531
- ]
3502
+ "text": "string"
3532
3503
  },
3533
- "default": "'md'",
3534
- "fieldName": "size"
3504
+ "default": "'This is a message'",
3505
+ "fieldName": "message"
3535
3506
  },
3536
3507
  {
3537
- "name": "type",
3538
- "description": "Native `<button>` type.",
3508
+ "name": "show-button",
3509
+ "description": "Whether the \"Continue\"-style action button is rendered.",
3539
3510
  "type": {
3540
- "text": "\"button\" | \"reset\" | \"submit\""
3511
+ "text": "boolean"
3541
3512
  },
3542
- "default": "'button'",
3543
- "fieldName": "type"
3513
+ "default": "false",
3514
+ "fieldName": "showButton"
3544
3515
  },
3545
3516
  {
3546
- "name": "variant",
3547
- "description": "Visual style. Maps to the same semantic token families as `bs-button`'s `variant`.\n`error` is for destructive/irreversible actions per BrandSync guidance, not a stronger\nemphasis alternative to `primary`.",
3517
+ "name": "show-icon",
3518
+ "description": "Whether the leading icon (default: clock) is rendered.",
3548
3519
  "type": {
3549
- "text": "\"error\" | \"info\" | \"neutral\" | \"outlined\" | \"primary\" | \"subtle\" | \"success\" | \"warning\"",
3520
+ "text": "boolean"
3521
+ },
3522
+ "default": "true",
3523
+ "fieldName": "showIcon"
3524
+ },
3525
+ {
3526
+ "name": "type",
3527
+ "description": "Which severity/style to render. Drives background, text/icon color, and the action button's color.",
3528
+ "type": {
3529
+ "text": "\"error\" | \"info\" | \"neutral\" | \"warning\"",
3550
3530
  "references": [
3551
3531
  {
3552
- "name": "BsIconButtonVariant"
3532
+ "name": "BsComposerStatusBannerType"
3553
3533
  }
3554
3534
  ]
3555
3535
  },
3556
- "default": "'primary'",
3557
- "fieldName": "variant"
3536
+ "default": "'error'",
3537
+ "fieldName": "type"
3558
3538
  }
3559
3539
  ],
3560
3540
  "members": [
3561
3541
  {
3562
3542
  "kind": "field",
3563
- "name": "ariaLabel",
3564
- "description": "Accessible name for the button. Required -- this component is always icon-only, so there's\nno visible label text for screen readers to fall back on. Stencil reflects this camelCase\nprop to the `aria-label` HTML attribute automatically.",
3543
+ "name": "actionLabel",
3544
+ "description": "Label for the action button, only rendered when `showButton` is true.",
3565
3545
  "type": {
3566
3546
  "text": "string"
3567
3547
  },
3568
- "default": "null",
3569
- "readonly": true,
3570
- "attribute": "aria-label"
3548
+ "default": "'Continue'",
3549
+ "attribute": "action-label"
3571
3550
  },
3572
3551
  {
3573
3552
  "kind": "field",
3574
- "name": "disabled",
3575
- "description": "Disables the button and applies the disabled token set.",
3553
+ "name": "allowClose",
3554
+ "description": "Whether the close button is rendered.",
3576
3555
  "type": {
3577
3556
  "text": "boolean"
3578
3557
  },
3579
- "default": "false",
3580
- "readonly": true,
3581
- "attribute": "disabled"
3558
+ "default": "true",
3559
+ "attribute": "allow-close"
3560
+ },
3561
+ {
3562
+ "kind": "field",
3563
+ "name": "message",
3564
+ "description": "The message text.",
3565
+ "type": {
3566
+ "text": "string"
3567
+ },
3568
+ "default": "'This is a message'",
3569
+ "attribute": "message"
3570
+ },
3571
+ {
3572
+ "kind": "field",
3573
+ "name": "showButton",
3574
+ "description": "Whether the \"Continue\"-style action button is rendered.",
3575
+ "type": {
3576
+ "text": "boolean"
3577
+ },
3578
+ "default": "false",
3579
+ "attribute": "show-button"
3580
+ },
3581
+ {
3582
+ "kind": "field",
3583
+ "name": "showIcon",
3584
+ "description": "Whether the leading icon (default: clock) is rendered.",
3585
+ "type": {
3586
+ "text": "boolean"
3587
+ },
3588
+ "default": "true",
3589
+ "attribute": "show-icon"
3590
+ },
3591
+ {
3592
+ "kind": "field",
3593
+ "name": "type",
3594
+ "description": "Which severity/style to render. Drives background, text/icon color, and the action button's color.",
3595
+ "type": {
3596
+ "text": "\"error\" | \"info\" | \"neutral\" | \"warning\"",
3597
+ "references": [
3598
+ {
3599
+ "name": "BsComposerStatusBannerType"
3600
+ }
3601
+ ]
3602
+ },
3603
+ "default": "'error'",
3604
+ "attribute": "type"
3605
+ }
3606
+ ],
3607
+ "events": [
3608
+ {
3609
+ "name": "bsAction",
3610
+ "description": "Fires when the action button is clicked. Only relevant when `showButton` is true.",
3611
+ "type": {
3612
+ "text": "CustomEvent<void>"
3613
+ }
3614
+ },
3615
+ {
3616
+ "name": "bsClose",
3617
+ "description": "Fires when the close button is clicked. Only relevant when `allowClose` is true.",
3618
+ "type": {
3619
+ "text": "CustomEvent<void>"
3620
+ }
3621
+ }
3622
+ ],
3623
+ "slots": [
3624
+ {
3625
+ "name": "icon",
3626
+ "description": "Overrides the default leading icon. Only rendered when `showIcon` is true."
3627
+ }
3628
+ ],
3629
+ "cssParts": [
3630
+ {
3631
+ "name": "action",
3632
+ "description": "The optional \"Continue\"-style action button."
3633
+ },
3634
+ {
3635
+ "name": "close",
3636
+ "description": "The optional close button."
3637
+ },
3638
+ {
3639
+ "name": "icon",
3640
+ "description": "The leading icon wrapper."
3641
+ },
3642
+ {
3643
+ "name": "message",
3644
+ "description": "The message text."
3645
+ }
3646
+ ]
3647
+ }
3648
+ ],
3649
+ "exports": [
3650
+ {
3651
+ "kind": "js",
3652
+ "name": "BsComposerStatusBanner",
3653
+ "declaration": {
3654
+ "name": "BsComposerStatusBanner"
3655
+ }
3656
+ },
3657
+ {
3658
+ "kind": "custom-element-definition",
3659
+ "name": "bs-composer-status-banner",
3660
+ "declaration": {
3661
+ "name": "BsComposerStatusBanner"
3662
+ }
3663
+ }
3664
+ ]
3665
+ },
3666
+ {
3667
+ "kind": "javascript-module",
3668
+ "path": "src/components/bs-data-table/bs-data-table.tsx",
3669
+ "declarations": [
3670
+ {
3671
+ "kind": "class",
3672
+ "customElement": true,
3673
+ "tagName": "bs-data-table",
3674
+ "name": "BsDataTable",
3675
+ "description": "A sortable, optionally row-selectable table for tabular data.\n\n`columns`, `rows`, and `cellRenderer` are JS-property-only — HTML attributes can only carry\nstrings, so arrays/objects/functions must be set via `element.rows = [...]` etc., not as\nattributes. See CONVENTIONS.md.\n\n## When to use\n- Comparing structured records across the same set of fields (a list of people, bookings, etc.).\n\n## When not to use\n- A handful of unrelated key/value pairs — a simple list or card is lighter-weight.\n- Deeply nested/hierarchical data — this component renders one flat row per record.",
3676
+ "attributes": [
3677
+ {
3678
+ "name": "selectable",
3679
+ "type": {
3680
+ "text": "boolean"
3681
+ },
3682
+ "default": "false",
3683
+ "fieldName": "selectable"
3684
+ },
3685
+ {
3686
+ "name": "sort-column",
3687
+ "type": {
3688
+ "text": "string"
3689
+ },
3690
+ "fieldName": "sortColumn"
3691
+ },
3692
+ {
3693
+ "name": "sort-direction",
3694
+ "type": {
3695
+ "text": "\"asc\" | \"desc\""
3696
+ },
3697
+ "default": "'asc'",
3698
+ "fieldName": "sortDirection"
3699
+ }
3700
+ ],
3701
+ "members": [
3702
+ {
3703
+ "kind": "field",
3704
+ "name": "cellRenderer",
3705
+ "description": "Optional custom cell renderer, e.g. for an actions column. Function props are JS-property-only,\nsame as array props -- there is no attribute equivalent. Falls back to the raw cell value.",
3706
+ "type": {
3707
+ "text": "(row: BsDataTableRow, column: BsDataTableColumn) => string",
3708
+ "references": [
3709
+ {
3710
+ "name": "BsDataTableRow"
3711
+ },
3712
+ {
3713
+ "name": "BsDataTableColumn"
3714
+ }
3715
+ ]
3716
+ }
3717
+ },
3718
+ {
3719
+ "kind": "field",
3720
+ "name": "columns",
3721
+ "description": "Array prop -- must be set as a JS property (`el.columns = [...]`), not an HTML attribute,\nsince attributes can only carry strings. See CONVENTIONS.md.",
3722
+ "type": {
3723
+ "text": "BsDataTableColumn[]",
3724
+ "references": [
3725
+ {
3726
+ "name": "BsDataTableColumn"
3727
+ }
3728
+ ]
3729
+ },
3730
+ "default": "[]"
3731
+ },
3732
+ {
3733
+ "kind": "field",
3734
+ "name": "rows",
3735
+ "description": "Array prop -- same JS-property-only rule as `columns`.",
3736
+ "type": {
3737
+ "text": "BsDataTableRow[]",
3738
+ "references": [
3739
+ {
3740
+ "name": "BsDataTableRow"
3741
+ }
3742
+ ]
3743
+ },
3744
+ "default": "[]"
3745
+ },
3746
+ {
3747
+ "kind": "field",
3748
+ "name": "selectable",
3749
+ "type": {
3750
+ "text": "boolean"
3751
+ },
3752
+ "default": "false",
3753
+ "attribute": "selectable"
3754
+ },
3755
+ {
3756
+ "kind": "field",
3757
+ "name": "sortColumn",
3758
+ "type": {
3759
+ "text": "string"
3760
+ },
3761
+ "attribute": "sort-column"
3762
+ },
3763
+ {
3764
+ "kind": "field",
3765
+ "name": "sortDirection",
3766
+ "type": {
3767
+ "text": "\"asc\" | \"desc\""
3768
+ },
3769
+ "default": "'asc'",
3770
+ "attribute": "sort-direction"
3771
+ }
3772
+ ],
3773
+ "events": [
3774
+ {
3775
+ "name": "bsRowSelect",
3776
+ "type": {
3777
+ "text": "CustomEvent<{ id: string | number; selected: boolean; }>"
3778
+ }
3779
+ },
3780
+ {
3781
+ "name": "bsSort",
3782
+ "type": {
3783
+ "text": "CustomEvent<{ column: string; direction: \"desc\" | \"asc\"; }>"
3784
+ }
3785
+ }
3786
+ ],
3787
+ "cssParts": [
3788
+ {
3789
+ "name": "body",
3790
+ "description": "The `<tbody>` element."
3791
+ },
3792
+ {
3793
+ "name": "cell",
3794
+ "description": "Each `<td>` in a body row."
3795
+ },
3796
+ {
3797
+ "name": "head",
3798
+ "description": "The `<thead>` element."
3799
+ },
3800
+ {
3801
+ "name": "header-cell",
3802
+ "description": "Each `<th>` in the header row."
3803
+ },
3804
+ {
3805
+ "name": "row",
3806
+ "description": "Each `<tr>` in the body."
3807
+ },
3808
+ {
3809
+ "name": "table",
3810
+ "description": "The `<table>` element."
3811
+ }
3812
+ ]
3813
+ }
3814
+ ],
3815
+ "exports": [
3816
+ {
3817
+ "kind": "js",
3818
+ "name": "BsDataTable",
3819
+ "declaration": {
3820
+ "name": "BsDataTable"
3821
+ }
3822
+ },
3823
+ {
3824
+ "kind": "custom-element-definition",
3825
+ "name": "bs-data-table",
3826
+ "declaration": {
3827
+ "name": "BsDataTable"
3828
+ }
3829
+ }
3830
+ ]
3831
+ },
3832
+ {
3833
+ "kind": "javascript-module",
3834
+ "path": "src/components/bs-dialog/bs-dialog.tsx",
3835
+ "declarations": [
3836
+ {
3837
+ "kind": "class",
3838
+ "customElement": true,
3839
+ "tagName": "bs-dialog",
3840
+ "name": "BsDialog",
3841
+ "description": "An overlay dialog that interrupts the current flow for a focused task or confirmation.\nCloses itself on backdrop click, Escape, or its own close button, and emits `bsClose`.\n\n## When to use\n- Confirming a consequential action (e.g. \"Confirm booking\") before it takes effect.\n- A short, focused task that doesn't warrant navigating to a new page.\n\n## When not to use\n- For non-blocking status messages — use a toast/notification instead of interrupting the user.\n- For a long, multi-step flow — a full page or a dedicated route is usually a better fit than a\n dialog that just gets taller and taller.\n\nTwo additional slots cover the Figma \"Dialog\" component's other states: `image` (a hero image\nacross the top, close button floats over it instead of sitting in the header row) and `icon`\n(only rendered when `centered` is set, e.g. a success checkmark above a centered heading). The\nclose button \"floats\" (absolute-positioned, top-right of the dialog, with its own background)\nwhenever `centered` is true or the `image` slot has content -- otherwise it's the plain inline\nbutton in the header row next to the heading, same as before this addition.",
3842
+ "attributes": [
3843
+ {
3844
+ "name": "centered",
3845
+ "description": "Switches to the Figma \"Icon Centered\" layout: heading/body text centered, the `icon` slot\nrendered above the heading, and the close button floating top-right of the dialog instead of\ninline in the header row. Doesn't hide a slotted `image` if one is also provided -- Figma's\nspec doesn't show the two combined, so this is unspecified rather than actively blocked.\nReflected so consumers/CSS can target `bs-dialog[centered]`.",
3846
+ "type": {
3847
+ "text": "boolean"
3848
+ },
3849
+ "default": "false",
3850
+ "fieldName": "centered"
3851
+ },
3852
+ {
3853
+ "name": "heading",
3854
+ "type": {
3855
+ "text": "string"
3856
+ },
3857
+ "fieldName": "heading"
3858
+ },
3859
+ {
3860
+ "name": "open",
3861
+ "description": "Mutable + reflected so the component can close itself (backdrop click, Escape, close button)\nthe same way a native `<dialog>` does, while still emitting `bsClose` for the consumer to react to.",
3862
+ "type": {
3863
+ "text": "boolean"
3864
+ },
3865
+ "default": "false",
3866
+ "fieldName": "open"
3867
+ },
3868
+ {
3869
+ "name": "size",
3870
+ "type": {
3871
+ "text": "\"lg\" | \"md\" | \"sm\"",
3872
+ "references": [
3873
+ {
3874
+ "name": "BsDialogSize"
3875
+ }
3876
+ ]
3877
+ },
3878
+ "default": "'md'",
3879
+ "fieldName": "size"
3880
+ }
3881
+ ],
3882
+ "members": [
3883
+ {
3884
+ "kind": "field",
3885
+ "name": "centered",
3886
+ "description": "Switches to the Figma \"Icon Centered\" layout: heading/body text centered, the `icon` slot\nrendered above the heading, and the close button floating top-right of the dialog instead of\ninline in the header row. Doesn't hide a slotted `image` if one is also provided -- Figma's\nspec doesn't show the two combined, so this is unspecified rather than actively blocked.\nReflected so consumers/CSS can target `bs-dialog[centered]`.",
3887
+ "type": {
3888
+ "text": "boolean"
3889
+ },
3890
+ "default": "false",
3891
+ "attribute": "centered",
3892
+ "reflects": true
3893
+ },
3894
+ {
3895
+ "kind": "field",
3896
+ "name": "heading",
3897
+ "type": {
3898
+ "text": "string"
3899
+ },
3900
+ "attribute": "heading"
3901
+ },
3902
+ {
3903
+ "kind": "field",
3904
+ "name": "open",
3905
+ "description": "Mutable + reflected so the component can close itself (backdrop click, Escape, close button)\nthe same way a native `<dialog>` does, while still emitting `bsClose` for the consumer to react to.",
3906
+ "type": {
3907
+ "text": "boolean"
3908
+ },
3909
+ "default": "false",
3910
+ "attribute": "open",
3911
+ "reflects": true
3912
+ },
3913
+ {
3914
+ "kind": "field",
3915
+ "name": "size",
3916
+ "type": {
3917
+ "text": "\"lg\" | \"md\" | \"sm\"",
3918
+ "references": [
3919
+ {
3920
+ "name": "BsDialogSize"
3921
+ }
3922
+ ]
3923
+ },
3924
+ "default": "'md'",
3925
+ "attribute": "size"
3926
+ }
3927
+ ],
3928
+ "events": [
3929
+ {
3930
+ "name": "bsClose",
3931
+ "type": {
3932
+ "text": "CustomEvent<void>"
3933
+ }
3934
+ }
3935
+ ],
3936
+ "slots": [
3937
+ {
3938
+ "name": "",
3939
+ "description": "Default slot: the dialog body content."
3940
+ },
3941
+ {
3942
+ "name": "footer",
3943
+ "description": "Optional footer content (typically action buttons)."
3944
+ },
3945
+ {
3946
+ "name": "icon",
3947
+ "description": "Optional icon shown above the heading, only rendered at all when `centered` is true."
3948
+ },
3949
+ {
3950
+ "name": "image",
3951
+ "description": "Optional hero image across the top of the dialog. Presence of assigned content\nswitches the close button to float over it; doesn't affect layout when empty."
3952
+ }
3953
+ ],
3954
+ "cssParts": [
3955
+ {
3956
+ "name": "backdrop",
3957
+ "description": "The full-viewport overlay behind the dialog."
3958
+ },
3959
+ {
3960
+ "name": "body",
3961
+ "description": "The body content wrapper."
3962
+ },
3963
+ {
3964
+ "name": "close",
3965
+ "description": "The close button (inline in the header, or floating -- see the class doc above)."
3966
+ },
3967
+ {
3968
+ "name": "dialog",
3969
+ "description": "The dialog box itself."
3970
+ },
3971
+ {
3972
+ "name": "footer",
3973
+ "description": "The footer wrapper (only visible when the footer slot has content)."
3974
+ },
3975
+ {
3976
+ "name": "header",
3977
+ "description": "The header row (heading + close button, when the close button isn't floating)."
3978
+ },
3979
+ {
3980
+ "name": "icon",
3981
+ "description": "The icon wrapper (only rendered when `centered` is true)."
3982
+ },
3983
+ {
3984
+ "name": "image",
3985
+ "description": "The hero image wrapper (only visible when the `image` slot has content)."
3986
+ }
3987
+ ]
3988
+ }
3989
+ ],
3990
+ "exports": [
3991
+ {
3992
+ "kind": "js",
3993
+ "name": "BsDialog",
3994
+ "declaration": {
3995
+ "name": "BsDialog"
3996
+ }
3997
+ },
3998
+ {
3999
+ "kind": "custom-element-definition",
4000
+ "name": "bs-dialog",
4001
+ "declaration": {
4002
+ "name": "BsDialog"
4003
+ }
4004
+ }
4005
+ ]
4006
+ },
4007
+ {
4008
+ "kind": "javascript-module",
4009
+ "path": "src/components/bs-button/bs-icon-button/bs-icon-button.tsx",
4010
+ "declarations": [
4011
+ {
4012
+ "kind": "class",
4013
+ "customElement": true,
4014
+ "tagName": "bs-icon-button",
4015
+ "name": "BsIconButton",
4016
+ "description": "A clickable, icon-only action element -- the icon-only sibling of `bs-button`, sharing the same\n8 visual variants and color language, but ALWAYS rendering just a single icon, never a label.\n\n## When to use\n- A compact action where the icon alone is unambiguous (e.g. a close/dismiss control, a toolbar\n action) and adding a text label would take up more space than the context allows.\n- The same variant guidance as `bs-button` applies: `primary` for the single most important\n action, `neutral`/`subtle`/`outlined` for lower-emphasis alternatives, `error` reserved for\n destructive/irreversible actions (never `neutral`, per BrandSync guidance), `success`/\n `warning`/`info` only when the action's own outcome is predictable and clearly communicated.\n\n## When not to use\n- When the action isn't self-evident from the icon alone -- use `bs-button` with a visible label\n instead, don't rely on a tooltip to compensate for an unclear icon.\n- For navigation between pages -- use a link/nav component instead.\n\nBecause this component is always icon-only, `ariaLabel` is required for every real usage (not\njust conditionally, unlike `bs-button`) -- there's no visible label text to fall back on for an\naccessible name.",
4017
+ "attributes": [
4018
+ {
4019
+ "name": "aria-label",
4020
+ "description": "Accessible name for the button. Required -- this component is always icon-only, so there's\nno visible label text for screen readers to fall back on. Stencil reflects this camelCase\nprop to the `aria-label` HTML attribute automatically.",
4021
+ "type": {
4022
+ "text": "string"
4023
+ },
4024
+ "default": "null",
4025
+ "fieldName": "ariaLabel"
4026
+ },
4027
+ {
4028
+ "name": "disabled",
4029
+ "description": "Disables the button and applies the disabled token set.",
4030
+ "type": {
4031
+ "text": "boolean"
4032
+ },
4033
+ "default": "false",
4034
+ "fieldName": "disabled"
4035
+ },
4036
+ {
4037
+ "name": "size",
4038
+ "description": "Sizing scale. `xs` (16px, an 8px icon) is a distinct, much smaller tier meant for compact\nchip/tag \"remove\" controls, not just a smaller toolbar button -- verified against a separate\nFigma redline (EG BrandSync UI Kit v1.5, node 20731:18427) from the one `sm`/`md`/`lg` were\nbuilt against.",
4039
+ "type": {
4040
+ "text": "\"lg\" | \"md\" | \"sm\" | \"xs\"",
4041
+ "references": [
4042
+ {
4043
+ "name": "BsIconButtonSize"
4044
+ }
4045
+ ]
4046
+ },
4047
+ "default": "'md'",
4048
+ "fieldName": "size"
4049
+ },
4050
+ {
4051
+ "name": "type",
4052
+ "description": "Native `<button>` type.",
4053
+ "type": {
4054
+ "text": "\"button\" | \"reset\" | \"submit\""
4055
+ },
4056
+ "default": "'button'",
4057
+ "fieldName": "type"
4058
+ },
4059
+ {
4060
+ "name": "variant",
4061
+ "description": "Visual style. Maps to the same semantic token families as `bs-button`'s `variant`.\n`error` is for destructive/irreversible actions per BrandSync guidance, not a stronger\nemphasis alternative to `primary`.",
4062
+ "type": {
4063
+ "text": "\"error\" | \"info\" | \"neutral\" | \"outlined\" | \"primary\" | \"subtle\" | \"success\" | \"warning\"",
4064
+ "references": [
4065
+ {
4066
+ "name": "BsIconButtonVariant"
4067
+ }
4068
+ ]
4069
+ },
4070
+ "default": "'primary'",
4071
+ "fieldName": "variant"
4072
+ }
4073
+ ],
4074
+ "members": [
4075
+ {
4076
+ "kind": "field",
4077
+ "name": "ariaLabel",
4078
+ "description": "Accessible name for the button. Required -- this component is always icon-only, so there's\nno visible label text for screen readers to fall back on. Stencil reflects this camelCase\nprop to the `aria-label` HTML attribute automatically.",
4079
+ "type": {
4080
+ "text": "string"
4081
+ },
4082
+ "default": "null",
4083
+ "attribute": "aria-label"
4084
+ },
4085
+ {
4086
+ "kind": "field",
4087
+ "name": "disabled",
4088
+ "description": "Disables the button and applies the disabled token set.",
4089
+ "type": {
4090
+ "text": "boolean"
4091
+ },
4092
+ "default": "false",
4093
+ "attribute": "disabled"
3582
4094
  },
3583
4095
  {
3584
4096
  "kind": "field",
@@ -3593,7 +4105,6 @@
3593
4105
  ]
3594
4106
  },
3595
4107
  "default": "'md'",
3596
- "readonly": true,
3597
4108
  "attribute": "size"
3598
4109
  },
3599
4110
  {
@@ -3604,7 +4115,6 @@
3604
4115
  "text": "\"button\" | \"reset\" | \"submit\""
3605
4116
  },
3606
4117
  "default": "'button'",
3607
- "readonly": true,
3608
4118
  "attribute": "type"
3609
4119
  },
3610
4120
  {
@@ -3620,7 +4130,6 @@
3620
4130
  ]
3621
4131
  },
3622
4132
  "default": "'primary'",
3623
- "readonly": true,
3624
4133
  "attribute": "variant"
3625
4134
  }
3626
4135
  ],
@@ -3901,7 +4410,6 @@
3901
4410
  "text": "string"
3902
4411
  },
3903
4412
  "default": "null",
3904
- "readonly": true,
3905
4413
  "attribute": "aria-label"
3906
4414
  },
3907
4415
  {
@@ -3912,7 +4420,6 @@
3912
4420
  "text": "boolean"
3913
4421
  },
3914
4422
  "default": "false",
3915
- "readonly": true,
3916
4423
  "attribute": "disabled"
3917
4424
  },
3918
4425
  {
@@ -3923,7 +4430,6 @@
3923
4430
  "text": "boolean"
3924
4431
  },
3925
4432
  "default": "false",
3926
- "readonly": true,
3927
4433
  "attribute": "selected",
3928
4434
  "reflects": true
3929
4435
  }
@@ -4226,8 +4732,7 @@
4226
4732
  "type": {
4227
4733
  "text": "string[]"
4228
4734
  },
4229
- "default": "[]",
4230
- "readonly": true
4735
+ "default": "[]"
4231
4736
  },
4232
4737
  {
4233
4738
  "kind": "field",
@@ -4237,7 +4742,6 @@
4237
4742
  "text": "string"
4238
4743
  },
4239
4744
  "default": "''",
4240
- "readonly": true,
4241
4745
  "attribute": "country"
4242
4746
  },
4243
4747
  {
@@ -4247,8 +4751,7 @@
4247
4751
  "type": {
4248
4752
  "text": "{ code: string; label: string; flagIcon?: string; }[]"
4249
4753
  },
4250
- "default": "[]",
4251
- "readonly": true
4754
+ "default": "[]"
4252
4755
  },
4253
4756
  {
4254
4757
  "kind": "field",
@@ -4256,7 +4759,6 @@
4256
4759
  "type": {
4257
4760
  "text": "string"
4258
4761
  },
4259
- "readonly": true,
4260
4762
  "attribute": "description"
4261
4763
  },
4262
4764
  {
@@ -4266,7 +4768,6 @@
4266
4768
  "text": "boolean"
4267
4769
  },
4268
4770
  "default": "false",
4269
- "readonly": true,
4270
4771
  "attribute": "disabled"
4271
4772
  },
4272
4773
  {
@@ -4275,7 +4776,6 @@
4275
4776
  "type": {
4276
4777
  "text": "string"
4277
4778
  },
4278
- "readonly": true,
4279
4779
  "attribute": "error"
4280
4780
  },
4281
4781
  {
@@ -4286,7 +4786,6 @@
4286
4786
  "text": "string"
4287
4787
  },
4288
4788
  "default": "''",
4289
- "readonly": true,
4290
4789
  "attribute": "initials-title"
4291
4790
  },
4292
4791
  {
@@ -4295,7 +4794,6 @@
4295
4794
  "type": {
4296
4795
  "text": "string"
4297
4796
  },
4298
- "readonly": true,
4299
4797
  "attribute": "label"
4300
4798
  },
4301
4799
  {
@@ -4306,7 +4804,6 @@
4306
4804
  "text": "number"
4307
4805
  },
4308
4806
  "default": "4",
4309
- "readonly": true,
4310
4807
  "attribute": "length"
4311
4808
  },
4312
4809
  {
@@ -4316,7 +4813,6 @@
4316
4813
  "type": {
4317
4814
  "text": "number"
4318
4815
  },
4319
- "readonly": true,
4320
4816
  "attribute": "max"
4321
4817
  },
4322
4818
  {
@@ -4326,7 +4822,6 @@
4326
4822
  "type": {
4327
4823
  "text": "number"
4328
4824
  },
4329
- "readonly": true,
4330
4825
  "attribute": "min"
4331
4826
  },
4332
4827
  {
@@ -4347,8 +4842,7 @@
4347
4842
  "type": {
4348
4843
  "text": "{ label: string; value: string; }[]"
4349
4844
  },
4350
- "default": "[]",
4351
- "readonly": true
4845
+ "default": "[]"
4352
4846
  },
4353
4847
  {
4354
4848
  "kind": "field",
@@ -4356,7 +4850,6 @@
4356
4850
  "type": {
4357
4851
  "text": "string"
4358
4852
  },
4359
- "readonly": true,
4360
4853
  "attribute": "placeholder"
4361
4854
  },
4362
4855
  {
@@ -4367,7 +4860,6 @@
4367
4860
  "text": "boolean"
4368
4861
  },
4369
4862
  "default": "false",
4370
- "readonly": true,
4371
4863
  "attribute": "required"
4372
4864
  },
4373
4865
  {
@@ -4378,7 +4870,6 @@
4378
4870
  "text": "number"
4379
4871
  },
4380
4872
  "default": "3",
4381
- "readonly": true,
4382
4873
  "attribute": "rows"
4383
4874
  },
4384
4875
  {
@@ -4389,7 +4880,6 @@
4389
4880
  "text": "number"
4390
4881
  },
4391
4882
  "default": "1",
4392
- "readonly": true,
4393
4883
  "attribute": "step"
4394
4884
  },
4395
4885
  {
@@ -4399,8 +4889,7 @@
4399
4889
  "type": {
4400
4890
  "text": "string[]"
4401
4891
  },
4402
- "default": "[]",
4403
- "readonly": true
4892
+ "default": "[]"
4404
4893
  },
4405
4894
  {
4406
4895
  "kind": "field",
@@ -4409,7 +4898,6 @@
4409
4898
  "text": "\"chip\" | \"country\" | \"date\" | \"dropdown\" | \"email\" | \"initials\" | \"number\" | \"password\" | \"pin\" | \"search\" | \"select\" | \"text\" | \"textarea\""
4410
4899
  },
4411
4900
  "default": "'text'",
4412
- "readonly": true,
4413
4901
  "attribute": "type"
4414
4902
  },
4415
4903
  {
@@ -4720,7 +5208,6 @@
4720
5208
  "text": "string"
4721
5209
  },
4722
5210
  "default": "null",
4723
- "readonly": true,
4724
5211
  "attribute": "alt"
4725
5212
  },
4726
5213
  {
@@ -4736,7 +5223,6 @@
4736
5223
  ]
4737
5224
  },
4738
5225
  "default": "'auto'",
4739
- "readonly": true,
4740
5226
  "attribute": "background"
4741
5227
  },
4742
5228
  {
@@ -4747,7 +5233,6 @@
4747
5233
  "text": "string"
4748
5234
  },
4749
5235
  "default": "null",
4750
- "readonly": true,
4751
5236
  "attribute": "src"
4752
5237
  },
4753
5238
  {
@@ -4763,7 +5248,6 @@
4763
5248
  ]
4764
5249
  },
4765
5250
  "default": "'full'",
4766
- "readonly": true,
4767
5251
  "attribute": "variant"
4768
5252
  }
4769
5253
  ],
@@ -4893,7 +5377,6 @@
4893
5377
  "text": "boolean"
4894
5378
  },
4895
5379
  "default": "false",
4896
- "readonly": true,
4897
5380
  "attribute": "disabled"
4898
5381
  }
4899
5382
  ],
@@ -5026,7 +5509,6 @@
5026
5509
  "text": "boolean"
5027
5510
  },
5028
5511
  "default": "true",
5029
- "readonly": true,
5030
5512
  "attribute": "collapsible"
5031
5513
  },
5032
5514
  {
@@ -5037,7 +5519,6 @@
5037
5519
  "text": "string"
5038
5520
  },
5039
5521
  "default": "'Main Menu'",
5040
- "readonly": true,
5041
5522
  "attribute": "heading"
5042
5523
  },
5043
5524
  {
@@ -5048,7 +5529,6 @@
5048
5529
  "text": "\"auto\" | \"dark\" | \"light\""
5049
5530
  },
5050
5531
  "default": "'auto'",
5051
- "readonly": true,
5052
5532
  "attribute": "logo-background"
5053
5533
  },
5054
5534
  {
@@ -5059,7 +5539,6 @@
5059
5539
  "text": "boolean"
5060
5540
  },
5061
5541
  "default": "true",
5062
- "readonly": true,
5063
5542
  "attribute": "show-logo"
5064
5543
  }
5065
5544
  ],
@@ -5303,7 +5782,6 @@
5303
5782
  "text": "string"
5304
5783
  },
5305
5784
  "default": "null",
5306
- "readonly": true,
5307
5785
  "attribute": "aria-label"
5308
5786
  },
5309
5787
  {
@@ -5314,7 +5792,6 @@
5314
5792
  "text": "boolean"
5315
5793
  },
5316
5794
  "default": "false",
5317
- "readonly": true,
5318
5795
  "attribute": "collapsed",
5319
5796
  "reflects": true
5320
5797
  },
@@ -5326,7 +5803,6 @@
5326
5803
  "text": "boolean"
5327
5804
  },
5328
5805
  "default": "false",
5329
- "readonly": true,
5330
5806
  "attribute": "expandable"
5331
5807
  },
5332
5808
  {
@@ -5348,7 +5824,6 @@
5348
5824
  "text": "boolean"
5349
5825
  },
5350
5826
  "default": "false",
5351
- "readonly": true,
5352
5827
  "attribute": "nested"
5353
5828
  },
5354
5829
  {
@@ -5359,7 +5834,6 @@
5359
5834
  "text": "boolean"
5360
5835
  },
5361
5836
  "default": "false",
5362
- "readonly": true,
5363
5837
  "attribute": "selected",
5364
5838
  "reflects": true
5365
5839
  }
@@ -5617,7 +6091,6 @@
5617
6091
  ]
5618
6092
  },
5619
6093
  "default": "'default'",
5620
- "readonly": true,
5621
6094
  "attribute": "alignment"
5622
6095
  },
5623
6096
  {
@@ -5628,7 +6101,6 @@
5628
6101
  "text": "string"
5629
6102
  },
5630
6103
  "default": "null",
5631
- "readonly": true,
5632
6104
  "attribute": "aria-label"
5633
6105
  },
5634
6106
  {
@@ -5639,7 +6111,6 @@
5639
6111
  "text": "\"auto\" | \"dark\" | \"light\""
5640
6112
  },
5641
6113
  "default": "'auto'",
5642
- "readonly": true,
5643
6114
  "attribute": "logo-background"
5644
6115
  },
5645
6116
  {
@@ -5650,7 +6121,6 @@
5650
6121
  "text": "string"
5651
6122
  },
5652
6123
  "default": "null",
5653
- "readonly": true,
5654
6124
  "attribute": "skip-to-content-href"
5655
6125
  },
5656
6126
  {
@@ -5661,7 +6131,6 @@
5661
6131
  "text": "string"
5662
6132
  },
5663
6133
  "default": "'Skip to main content'",
5664
- "readonly": true,
5665
6134
  "attribute": "skip-to-content-label"
5666
6135
  }
5667
6136
  ],
@@ -5831,7 +6300,6 @@
5831
6300
  "text": "string"
5832
6301
  },
5833
6302
  "default": "'Next page'",
5834
- "readonly": true,
5835
6303
  "attribute": "next-label"
5836
6304
  },
5837
6305
  {
@@ -5842,7 +6310,6 @@
5842
6310
  "text": "string"
5843
6311
  },
5844
6312
  "default": "'Previous page'",
5845
- "readonly": true,
5846
6313
  "attribute": "previous-label"
5847
6314
  },
5848
6315
  {
@@ -5853,7 +6320,6 @@
5853
6320
  "text": "number"
5854
6321
  },
5855
6322
  "default": "1",
5856
- "readonly": true,
5857
6323
  "attribute": "sibling-count"
5858
6324
  },
5859
6325
  {
@@ -5864,7 +6330,6 @@
5864
6330
  "text": "number"
5865
6331
  },
5866
6332
  "default": "1",
5867
- "readonly": true,
5868
6333
  "attribute": "total-pages"
5869
6334
  }
5870
6335
  ],
@@ -6050,7 +6515,6 @@
6050
6515
  "text": "boolean"
6051
6516
  },
6052
6517
  "default": "false",
6053
- "readonly": true,
6054
6518
  "attribute": "disabled"
6055
6519
  },
6056
6520
  {
@@ -6060,7 +6524,6 @@
6060
6524
  "type": {
6061
6525
  "text": "string"
6062
6526
  },
6063
- "readonly": true,
6064
6527
  "attribute": "name"
6065
6528
  },
6066
6529
  {
@@ -6070,7 +6533,6 @@
6070
6533
  "type": {
6071
6534
  "text": "string"
6072
6535
  },
6073
- "readonly": true,
6074
6536
  "attribute": "value"
6075
6537
  }
6076
6538
  ],
@@ -6276,7 +6738,6 @@
6276
6738
  "text": "string"
6277
6739
  },
6278
6740
  "default": "null",
6279
- "readonly": true,
6280
6741
  "attribute": "aria-label"
6281
6742
  },
6282
6743
  {
@@ -6287,7 +6748,6 @@
6287
6748
  "text": "boolean"
6288
6749
  },
6289
6750
  "default": "false",
6290
- "readonly": true,
6291
6751
  "attribute": "disabled"
6292
6752
  },
6293
6753
  {
@@ -6298,7 +6758,6 @@
6298
6758
  "text": "string"
6299
6759
  },
6300
6760
  "default": "'Label'",
6301
- "readonly": true,
6302
6761
  "attribute": "label"
6303
6762
  },
6304
6763
  {
@@ -6309,7 +6768,6 @@
6309
6768
  "text": "number"
6310
6769
  },
6311
6770
  "default": "100",
6312
- "readonly": true,
6313
6771
  "attribute": "max"
6314
6772
  },
6315
6773
  {
@@ -6320,7 +6778,6 @@
6320
6778
  "text": "number"
6321
6779
  },
6322
6780
  "default": "0",
6323
- "readonly": true,
6324
6781
  "attribute": "min"
6325
6782
  },
6326
6783
  {
@@ -6331,7 +6788,6 @@
6331
6788
  "text": "number"
6332
6789
  },
6333
6790
  "default": "10",
6334
- "readonly": true,
6335
6791
  "attribute": "segments"
6336
6792
  },
6337
6793
  {
@@ -6342,7 +6798,6 @@
6342
6798
  "text": "boolean"
6343
6799
  },
6344
6800
  "default": "true",
6345
- "readonly": true,
6346
6801
  "attribute": "show-label"
6347
6802
  },
6348
6803
  {
@@ -6353,7 +6808,6 @@
6353
6808
  "text": "number"
6354
6809
  },
6355
6810
  "default": "1",
6356
- "readonly": true,
6357
6811
  "attribute": "step"
6358
6812
  },
6359
6813
  {
@@ -6369,7 +6823,6 @@
6369
6823
  ]
6370
6824
  },
6371
6825
  "default": "'default'",
6372
- "readonly": true,
6373
6826
  "attribute": "type"
6374
6827
  },
6375
6828
  {
@@ -6631,7 +7084,6 @@
6631
7084
  "type": {
6632
7085
  "text": "string"
6633
7086
  },
6634
- "readonly": true,
6635
7087
  "attribute": "action-label"
6636
7088
  },
6637
7089
  {
@@ -6642,7 +7094,6 @@
6642
7094
  "text": "boolean"
6643
7095
  },
6644
7096
  "default": "false",
6645
- "readonly": true,
6646
7097
  "attribute": "loading"
6647
7098
  },
6648
7099
  {
@@ -6658,7 +7109,6 @@
6658
7109
  ]
6659
7110
  },
6660
7111
  "default": "'default'",
6661
- "readonly": true,
6662
7112
  "attribute": "variant"
6663
7113
  }
6664
7114
  ],
@@ -6844,36 +7294,310 @@
6844
7294
  "description": "Bar background, variant=\"default\". Aliased to --bs-snackbar-bg-default (brandsync-tokens)."
6845
7295
  },
6846
7296
  {
6847
- "name": "--bs-snackbar-surface-error",
6848
- "description": "Bar background, variant=\"error\". Aliased to --bs-color-error-container."
7297
+ "name": "--bs-snackbar-surface-error",
7298
+ "description": "Bar background, variant=\"error\". Aliased to --bs-color-error-container."
7299
+ },
7300
+ {
7301
+ "name": "--bs-snackbar-surface-info",
7302
+ "description": "Bar background, variant=\"info\". Aliased to --bs-color-info-container."
7303
+ },
7304
+ {
7305
+ "name": "--bs-snackbar-surface-success",
7306
+ "description": "Bar background, variant=\"success\". Aliased to --bs-color-success-container."
7307
+ },
7308
+ {
7309
+ "name": "--bs-snackbar-surface-warning",
7310
+ "description": "Bar background, variant=\"warning\". Aliased to --bs-color-warning-container."
7311
+ },
7312
+ {
7313
+ "name": "--bs-snackbar-text-error",
7314
+ "description": "Icon/message/close color, variant=\"error\". Aliased to --bs-text-error."
7315
+ },
7316
+ {
7317
+ "name": "--bs-snackbar-text-info",
7318
+ "description": "Icon/message/close color, variant=\"info\". Aliased to --bs-text-info."
7319
+ },
7320
+ {
7321
+ "name": "--bs-snackbar-text-success",
7322
+ "description": "Icon/message/close color, variant=\"success\". Aliased to --bs-text-success."
7323
+ },
7324
+ {
7325
+ "name": "--bs-snackbar-text-warning",
7326
+ "description": "Icon/message/close color, variant=\"warning\". Aliased to --bs-text-warning."
7327
+ }
7328
+ ]
7329
+ }
7330
+ ],
7331
+ "exports": [
7332
+ {
7333
+ "kind": "js",
7334
+ "name": "BsSnackbar",
7335
+ "declaration": {
7336
+ "name": "BsSnackbar"
7337
+ }
7338
+ },
7339
+ {
7340
+ "kind": "custom-element-definition",
7341
+ "name": "bs-snackbar",
7342
+ "declaration": {
7343
+ "name": "BsSnackbar"
7344
+ }
7345
+ }
7346
+ ]
7347
+ },
7348
+ {
7349
+ "kind": "javascript-module",
7350
+ "path": "src/components/bs-source-link/bs-source-link.tsx",
7351
+ "declarations": [
7352
+ {
7353
+ "kind": "class",
7354
+ "customElement": true,
7355
+ "tagName": "bs-source-link",
7356
+ "name": "BsSourceLink",
7357
+ "description": "A single citation row inside `bs-chatbot-sources-drawer` -- a file icon + filename on the first\nline, the originating system and version on the second, and a trailing \"open\" arrow.\n\n## When to use\n- One row per source Genie cited in a response, slotted into `bs-chatbot-sources-drawer`.\n\n## When not to use\n- Outside the sources drawer context -- this is a purpose-built citation row, not a generic\n link/list-item component.",
7358
+ "attributes": [
7359
+ {
7360
+ "name": "file-name",
7361
+ "description": "The cited document's filename.",
7362
+ "type": {
7363
+ "text": "string"
7364
+ },
7365
+ "default": "'Source'",
7366
+ "fieldName": "fileName"
7367
+ },
7368
+ {
7369
+ "name": "href",
7370
+ "description": "If set, renders the row as a link that opens this URL; otherwise as a button that only emits `bsOpen`.",
7371
+ "type": {
7372
+ "text": "string"
7373
+ },
7374
+ "fieldName": "href"
7375
+ },
7376
+ {
7377
+ "name": "source-name",
7378
+ "description": "The system/app the document came from (e.g. \"HoltePortalen\").",
7379
+ "type": {
7380
+ "text": "string"
7381
+ },
7382
+ "fieldName": "sourceName"
7383
+ },
7384
+ {
7385
+ "name": "target",
7386
+ "description": "`target` used when `href` is set.",
7387
+ "type": {
7388
+ "text": "string"
7389
+ },
7390
+ "default": "'_blank'",
7391
+ "fieldName": "target"
7392
+ },
7393
+ {
7394
+ "name": "version",
7395
+ "description": "The document's version label (e.g. \"v3.2\"). Omit if the source has no version.",
7396
+ "type": {
7397
+ "text": "string"
7398
+ },
7399
+ "fieldName": "version"
7400
+ }
7401
+ ],
7402
+ "members": [
7403
+ {
7404
+ "kind": "field",
7405
+ "name": "fileName",
7406
+ "description": "The cited document's filename.",
7407
+ "type": {
7408
+ "text": "string"
7409
+ },
7410
+ "default": "'Source'",
7411
+ "attribute": "file-name"
7412
+ },
7413
+ {
7414
+ "kind": "field",
7415
+ "name": "href",
7416
+ "description": "If set, renders the row as a link that opens this URL; otherwise as a button that only emits `bsOpen`.",
7417
+ "type": {
7418
+ "text": "string"
7419
+ },
7420
+ "attribute": "href"
7421
+ },
7422
+ {
7423
+ "kind": "field",
7424
+ "name": "sourceName",
7425
+ "description": "The system/app the document came from (e.g. \"HoltePortalen\").",
7426
+ "type": {
7427
+ "text": "string"
7428
+ },
7429
+ "attribute": "source-name"
7430
+ },
7431
+ {
7432
+ "kind": "field",
7433
+ "name": "target",
7434
+ "description": "`target` used when `href` is set.",
7435
+ "type": {
7436
+ "text": "string"
7437
+ },
7438
+ "default": "'_blank'",
7439
+ "attribute": "target"
7440
+ },
7441
+ {
7442
+ "kind": "field",
7443
+ "name": "version",
7444
+ "description": "The document's version label (e.g. \"v3.2\"). Omit if the source has no version.",
7445
+ "type": {
7446
+ "text": "string"
7447
+ },
7448
+ "attribute": "version"
7449
+ }
7450
+ ],
7451
+ "events": [
7452
+ {
7453
+ "name": "bsOpen",
7454
+ "description": "Fires on click/activation, whether or not `href` is set -- lets the consuming app log or handle the open.",
7455
+ "type": {
7456
+ "text": "CustomEvent<void>"
7457
+ }
7458
+ }
7459
+ ],
7460
+ "slots": [
7461
+ {
7462
+ "name": "icon",
7463
+ "description": "Overrides the default file icon."
7464
+ }
7465
+ ],
7466
+ "cssParts": [
7467
+ {
7468
+ "name": "arrow",
7469
+ "description": "The trailing \"open\" arrow icon."
7470
+ },
7471
+ {
7472
+ "name": "filename",
7473
+ "description": "The filename text."
7474
+ },
7475
+ {
7476
+ "name": "icon",
7477
+ "description": "The leading file-type icon."
7478
+ },
7479
+ {
7480
+ "name": "source",
7481
+ "description": "The source system name."
7482
+ },
7483
+ {
7484
+ "name": "version",
7485
+ "description": "The version label."
7486
+ }
7487
+ ]
7488
+ }
7489
+ ],
7490
+ "exports": [
7491
+ {
7492
+ "kind": "js",
7493
+ "name": "BsSourceLink",
7494
+ "declaration": {
7495
+ "name": "BsSourceLink"
7496
+ }
7497
+ },
7498
+ {
7499
+ "kind": "custom-element-definition",
7500
+ "name": "bs-source-link",
7501
+ "declaration": {
7502
+ "name": "BsSourceLink"
7503
+ }
7504
+ }
7505
+ ]
7506
+ },
7507
+ {
7508
+ "kind": "javascript-module",
7509
+ "path": "src/components/bs-stepper/bs-stepper/bs-stepper.tsx",
7510
+ "declarations": [
7511
+ {
7512
+ "kind": "class",
7513
+ "customElement": true,
7514
+ "tagName": "bs-stepper",
7515
+ "name": "BsStepper",
7516
+ "description": "A sequence of named steps showing overall progress through a multi-step flow (e.g. a checkout,\nan onboarding wizard) -- each step reads as enabled (not yet reached), current, done, error, or\ndisabled, connected by a rail between them.\n\nThis container is intentionally thin: it renders a `<slot>` for `<bs-stepper-step>` children and\npropagates `currentStep`/`direction`/`showDescription` down to them as JS properties whenever any\nof those change or the slotted children themselves change -- the same \"container pushes state\nonto its slotted children\" pattern `bs-tabs` uses for `selected` and `bs-breadcrumbs` uses for\n`size`. Each step computes its own `enabled`/`current`/`done` state from its position among its\nsiblings relative to `currentStep`, unless that step's own `error`/`disabled` prop overrides it.\n\nThis is a static status display, not an interactive control -- Figma's spec shows no\nhover/pressed treatment on any step, so nothing here is clickable.\n\n## When to use\n- Showing where the user is in a fixed, ordered, multi-step flow.\n\n## When not to use\n- A flow whose steps aren't fixed/known in advance -- a stepper implies the full sequence is\n already known.\n- As a substitute for actual in-page navigation between steps -- pair this with real controls\n (Next/Back buttons) elsewhere in the flow, this component only displays status.",
7517
+ "attributes": [
7518
+ {
7519
+ "name": "current-step",
7520
+ "description": "0-indexed: which step is current. Every step before this index reads as \"done\" (unless that\nstep's own `error`/`disabled` overrides it), every step after reads as \"enabled\".",
7521
+ "type": {
7522
+ "text": "number"
7523
+ },
7524
+ "default": "0",
7525
+ "fieldName": "currentStep"
6849
7526
  },
6850
7527
  {
6851
- "name": "--bs-snackbar-surface-info",
6852
- "description": "Bar background, variant=\"info\". Aliased to --bs-color-info-container."
7528
+ "name": "direction",
7529
+ "description": "`horizontal` (icon above name/description, connected by a horizontal rail) or `vertical`\n(icon beside name/description, connected by a vertical rail). Propagated to every slotted\n`bs-stepper-step`, and reflected as an attribute so this container's own `:host` CSS can switch\nits `flex-direction` to match -- a bare `<slot>` with no wrapping element (see `render()`)\nmeans the slotted steps' flex-row/column layout comes directly from `:host` here, not from any\nwrapper div.",
7530
+ "type": {
7531
+ "text": "\"horizontal\" | \"vertical\"",
7532
+ "references": [
7533
+ {
7534
+ "name": "BsStepperDirection",
7535
+ "module": "../bs-stepper-step/bs-stepper-step"
7536
+ }
7537
+ ]
7538
+ },
7539
+ "default": "'horizontal'",
7540
+ "fieldName": "direction"
6853
7541
  },
6854
7542
  {
6855
- "name": "--bs-snackbar-surface-success",
6856
- "description": "Bar background, variant=\"success\". Aliased to --bs-color-success-container."
6857
- },
7543
+ "name": "show-description",
7544
+ "description": "Whether each step's description renders at all. Propagated to every slotted\n`bs-stepper-step`.",
7545
+ "type": {
7546
+ "text": "boolean"
7547
+ },
7548
+ "default": "true",
7549
+ "fieldName": "showDescription"
7550
+ }
7551
+ ],
7552
+ "members": [
6858
7553
  {
6859
- "name": "--bs-snackbar-surface-warning",
6860
- "description": "Bar background, variant=\"warning\". Aliased to --bs-color-warning-container."
7554
+ "kind": "field",
7555
+ "name": "currentStep",
7556
+ "description": "0-indexed: which step is current. Every step before this index reads as \"done\" (unless that\nstep's own `error`/`disabled` overrides it), every step after reads as \"enabled\".",
7557
+ "type": {
7558
+ "text": "number"
7559
+ },
7560
+ "default": "0",
7561
+ "attribute": "current-step"
6861
7562
  },
6862
7563
  {
6863
- "name": "--bs-snackbar-text-error",
6864
- "description": "Icon/message/close color, variant=\"error\". Aliased to --bs-text-error."
7564
+ "kind": "field",
7565
+ "name": "direction",
7566
+ "description": "`horizontal` (icon above name/description, connected by a horizontal rail) or `vertical`\n(icon beside name/description, connected by a vertical rail). Propagated to every slotted\n`bs-stepper-step`, and reflected as an attribute so this container's own `:host` CSS can switch\nits `flex-direction` to match -- a bare `<slot>` with no wrapping element (see `render()`)\nmeans the slotted steps' flex-row/column layout comes directly from `:host` here, not from any\nwrapper div.",
7567
+ "type": {
7568
+ "text": "\"horizontal\" | \"vertical\"",
7569
+ "references": [
7570
+ {
7571
+ "name": "BsStepperDirection",
7572
+ "module": "../bs-stepper-step/bs-stepper-step"
7573
+ }
7574
+ ]
7575
+ },
7576
+ "default": "'horizontal'",
7577
+ "attribute": "direction",
7578
+ "reflects": true
6865
7579
  },
6866
7580
  {
6867
- "name": "--bs-snackbar-text-info",
6868
- "description": "Icon/message/close color, variant=\"info\". Aliased to --bs-text-info."
6869
- },
7581
+ "kind": "field",
7582
+ "name": "showDescription",
7583
+ "description": "Whether each step's description renders at all. Propagated to every slotted\n`bs-stepper-step`.",
7584
+ "type": {
7585
+ "text": "boolean"
7586
+ },
7587
+ "default": "true",
7588
+ "attribute": "show-description"
7589
+ }
7590
+ ],
7591
+ "slots": [
6870
7592
  {
6871
- "name": "--bs-snackbar-text-success",
6872
- "description": "Icon/message/close color, variant=\"success\". Aliased to --bs-text-success."
6873
- },
7593
+ "name": "",
7594
+ "description": "Default slot: the `<bs-stepper-step>` elements making up the sequence, in order."
7595
+ }
7596
+ ],
7597
+ "cssProperties": [
6874
7598
  {
6875
- "name": "--bs-snackbar-text-warning",
6876
- "description": "Icon/message/close color, variant=\"warning\". Aliased to --bs-text-warning."
7599
+ "name": "--bs-stepper-edge-padding",
7600
+ "description": "Horizontal padding, direction=\"horizontal\" only. Aliased to --bs-spacing-800. Every step's name/description centers under its own icon (see bs-stepper-step.css), including the first and last steps -- whose icons sit flush against this container's own edges. Without this padding, a first/last step's centered text has room to overflow in only one direction and clips against the container edge (confirmed by measuring a real render: a description clipped to a negative x position). This padding exists purely to give that overflow somewhere to go; it isn't a general \"breathing room\" affordance for content that fits."
6877
7601
  }
6878
7602
  ]
6879
7603
  }
@@ -6881,163 +7605,293 @@
6881
7605
  "exports": [
6882
7606
  {
6883
7607
  "kind": "js",
6884
- "name": "BsSnackbar",
7608
+ "name": "BsStepper",
6885
7609
  "declaration": {
6886
- "name": "BsSnackbar"
7610
+ "name": "BsStepper"
6887
7611
  }
6888
7612
  },
6889
7613
  {
6890
7614
  "kind": "custom-element-definition",
6891
- "name": "bs-snackbar",
7615
+ "name": "bs-stepper",
6892
7616
  "declaration": {
6893
- "name": "BsSnackbar"
7617
+ "name": "BsStepper"
6894
7618
  }
6895
7619
  }
6896
7620
  ]
6897
7621
  },
6898
7622
  {
6899
7623
  "kind": "javascript-module",
6900
- "path": "src/components/bs-source-link/bs-source-link.tsx",
7624
+ "path": "src/components/bs-stepper/bs-stepper-step/bs-stepper-step.tsx",
6901
7625
  "declarations": [
6902
7626
  {
6903
7627
  "kind": "class",
6904
7628
  "customElement": true,
6905
- "tagName": "bs-source-link",
6906
- "name": "BsSourceLink",
6907
- "description": "A single citation row inside `bs-chatbot-sources-drawer` -- a file icon + filename on the first\nline, the originating system and version on the second, and a trailing \"open\" arrow.\n\n## When to use\n- One row per source Genie cited in a response, slotted into `bs-chatbot-sources-drawer`.\n\n## When not to use\n- Outside the sources drawer context -- this is a purpose-built citation row, not a generic\n link/list-item component.",
7629
+ "tagName": "bs-stepper-step",
7630
+ "name": "BsStepperStep",
7631
+ "description": "A single step within a `<bs-stepper>` sequence: an icon/indicator plus a name and optional\ndescription, connected to the next step by a trailing rail.\n\n`computedState` is set automatically by the parent `<bs-stepper>` based on this step's position\nrelative to its `currentStep` (before it = \"done\", at it = \"current\", after it = \"enabled\") --\nsame \"container pushes state onto its slotted children\" pattern `bs-tabs` uses for `selected`\nand `bs-breadcrumbs` uses for `size`. This step's own `error`/`disabled` props, when set directly\nby the consumer, override that computed value -- e.g. a step before `currentStep` would normally\nread as \"done\", but `error` on that step wins regardless.\n\nThe trailing rail is owned by this component, not the container: `:host(:last-child)` hides it\non whichever step is visually last, mirroring `bs-breadcrumb`'s own `:host(:first-child)` rule\nfor its leading separator (same technique, opposite end -- see that component for why pure DOM\nposition, not CSS `:last-of-type`, is what actually needs checking here too).\n\n## When to use\n- As a child of `<bs-stepper>`, one per step in the sequence.\n\n## When not to use\n- Standalone, outside a `<bs-stepper>` wrapper -- `computedState`/`direction`/`showDescription`\n depend on that parent propagating them; alone, this defaults to `enabled`/`horizontal`/`true`.",
6908
7632
  "attributes": [
6909
7633
  {
6910
- "name": "file-name",
6911
- "description": "The cited document's filename.",
7634
+ "name": "computed-state",
7635
+ "description": "Set automatically by the parent `<bs-stepper>` from this step's position relative to its\n`currentStep` -- see the class doc above. Can be set directly for a standalone step.",
6912
7636
  "type": {
6913
- "text": "string"
7637
+ "text": "\"current\" | \"done\" | \"enabled\"",
7638
+ "references": [
7639
+ {
7640
+ "name": "BsStepperStepComputedState"
7641
+ }
7642
+ ]
6914
7643
  },
6915
- "default": "'Source'",
6916
- "fieldName": "fileName"
7644
+ "default": "'enabled'",
7645
+ "fieldName": "computedState"
6917
7646
  },
6918
7647
  {
6919
- "name": "href",
6920
- "description": "If set, renders the row as a link that opens this URL; otherwise as a button that only emits `bsOpen`.",
7648
+ "name": "description",
7649
+ "description": "Optional supporting text below the name. Only rendered when `showDescription` (propagated\nfrom the parent `<bs-stepper>`) is also true.",
6921
7650
  "type": {
6922
7651
  "text": "string"
6923
7652
  },
6924
- "fieldName": "href"
7653
+ "fieldName": "description"
6925
7654
  },
6926
7655
  {
6927
- "name": "source-name",
6928
- "description": "The system/app the document came from (e.g. \"HoltePortalen\").",
7656
+ "name": "direction",
7657
+ "description": "Set automatically by the parent `<bs-stepper>`, propagated to every slotted step.",
6929
7658
  "type": {
6930
- "text": "string"
7659
+ "text": "\"horizontal\" | \"vertical\"",
7660
+ "references": [
7661
+ {
7662
+ "name": "BsStepperDirection"
7663
+ }
7664
+ ]
6931
7665
  },
6932
- "fieldName": "sourceName"
7666
+ "default": "'horizontal'",
7667
+ "fieldName": "direction"
6933
7668
  },
6934
7669
  {
6935
- "name": "target",
6936
- "description": "`target` used when `href` is set.",
7670
+ "name": "disabled",
7671
+ "description": "Shows the disabled treatment for this step, regardless of its `computedState`. Takes priority\nover `error` if both are somehow set.",
6937
7672
  "type": {
6938
- "text": "string"
7673
+ "text": "boolean"
6939
7674
  },
6940
- "default": "'_blank'",
6941
- "fieldName": "target"
7675
+ "default": "false",
7676
+ "fieldName": "disabled"
6942
7677
  },
6943
7678
  {
6944
- "name": "version",
6945
- "description": "The document's version label (e.g. \"v3.2\"). Omit if the source has no version.",
7679
+ "name": "error",
7680
+ "description": "Shows the error treatment for this step, regardless of its `computedState`.",
7681
+ "type": {
7682
+ "text": "boolean"
7683
+ },
7684
+ "default": "false",
7685
+ "fieldName": "error"
7686
+ },
7687
+ {
7688
+ "name": "name",
7689
+ "description": "This step's name/title.",
6946
7690
  "type": {
6947
7691
  "text": "string"
6948
7692
  },
6949
- "fieldName": "version"
7693
+ "default": "''",
7694
+ "fieldName": "name"
7695
+ },
7696
+ {
7697
+ "name": "show-description",
7698
+ "description": "Set automatically by the parent `<bs-stepper>`, propagated to every slotted step.",
7699
+ "type": {
7700
+ "text": "boolean"
7701
+ },
7702
+ "default": "true",
7703
+ "fieldName": "showDescription"
6950
7704
  }
6951
7705
  ],
6952
7706
  "members": [
6953
7707
  {
6954
7708
  "kind": "field",
6955
- "name": "fileName",
6956
- "description": "The cited document's filename.",
7709
+ "name": "computedState",
7710
+ "description": "Set automatically by the parent `<bs-stepper>` from this step's position relative to its\n`currentStep` -- see the class doc above. Can be set directly for a standalone step.",
6957
7711
  "type": {
6958
- "text": "string"
7712
+ "text": "\"current\" | \"done\" | \"enabled\"",
7713
+ "references": [
7714
+ {
7715
+ "name": "BsStepperStepComputedState"
7716
+ }
7717
+ ]
6959
7718
  },
6960
- "default": "'Source'",
6961
- "readonly": true,
6962
- "attribute": "file-name"
7719
+ "default": "'enabled'",
7720
+ "attribute": "computed-state"
6963
7721
  },
6964
7722
  {
6965
7723
  "kind": "field",
6966
- "name": "href",
6967
- "description": "If set, renders the row as a link that opens this URL; otherwise as a button that only emits `bsOpen`.",
7724
+ "name": "description",
7725
+ "description": "Optional supporting text below the name. Only rendered when `showDescription` (propagated\nfrom the parent `<bs-stepper>`) is also true.",
6968
7726
  "type": {
6969
7727
  "text": "string"
6970
7728
  },
6971
- "readonly": true,
6972
- "attribute": "href"
7729
+ "attribute": "description"
6973
7730
  },
6974
7731
  {
6975
7732
  "kind": "field",
6976
- "name": "sourceName",
6977
- "description": "The system/app the document came from (e.g. \"HoltePortalen\").",
7733
+ "name": "direction",
7734
+ "description": "Set automatically by the parent `<bs-stepper>`, propagated to every slotted step.",
6978
7735
  "type": {
6979
- "text": "string"
7736
+ "text": "\"horizontal\" | \"vertical\"",
7737
+ "references": [
7738
+ {
7739
+ "name": "BsStepperDirection"
7740
+ }
7741
+ ]
6980
7742
  },
6981
- "readonly": true,
6982
- "attribute": "source-name"
7743
+ "default": "'horizontal'",
7744
+ "attribute": "direction"
6983
7745
  },
6984
7746
  {
6985
7747
  "kind": "field",
6986
- "name": "target",
6987
- "description": "`target` used when `href` is set.",
7748
+ "name": "disabled",
7749
+ "description": "Shows the disabled treatment for this step, regardless of its `computedState`. Takes priority\nover `error` if both are somehow set.",
6988
7750
  "type": {
6989
- "text": "string"
7751
+ "text": "boolean"
6990
7752
  },
6991
- "default": "'_blank'",
6992
- "readonly": true,
6993
- "attribute": "target"
7753
+ "default": "false",
7754
+ "attribute": "disabled"
6994
7755
  },
6995
7756
  {
6996
7757
  "kind": "field",
6997
- "name": "version",
6998
- "description": "The document's version label (e.g. \"v3.2\"). Omit if the source has no version.",
7758
+ "name": "error",
7759
+ "description": "Shows the error treatment for this step, regardless of its `computedState`.",
7760
+ "type": {
7761
+ "text": "boolean"
7762
+ },
7763
+ "default": "false",
7764
+ "attribute": "error"
7765
+ },
7766
+ {
7767
+ "kind": "field",
7768
+ "name": "name",
7769
+ "description": "This step's name/title.",
6999
7770
  "type": {
7000
7771
  "text": "string"
7001
7772
  },
7002
- "readonly": true,
7003
- "attribute": "version"
7004
- }
7005
- ],
7006
- "events": [
7773
+ "default": "''",
7774
+ "attribute": "name"
7775
+ },
7007
7776
  {
7008
- "name": "bsOpen",
7009
- "description": "Fires on click/activation, whether or not `href` is set -- lets the consuming app log or handle the open.",
7777
+ "kind": "field",
7778
+ "name": "showDescription",
7779
+ "description": "Set automatically by the parent `<bs-stepper>`, propagated to every slotted step.",
7010
7780
  "type": {
7011
- "text": "CustomEvent<void>"
7012
- }
7781
+ "text": "boolean"
7782
+ },
7783
+ "default": "true",
7784
+ "attribute": "show-description"
7013
7785
  }
7014
7786
  ],
7015
7787
  "slots": [
7016
7788
  {
7017
- "name": "icon",
7018
- "description": "Overrides the default file icon."
7789
+ "name": "",
7790
+ "description": "None: `name`/`description` fully drive the label content."
7019
7791
  }
7020
7792
  ],
7021
7793
  "cssParts": [
7022
7794
  {
7023
- "name": "arrow",
7024
- "description": "The trailing \"open\" arrow icon."
7795
+ "name": "connector",
7796
+ "description": "The trailing rail segment (not rendered on the last step)."
7025
7797
  },
7026
7798
  {
7027
- "name": "filename",
7028
- "description": "The filename text."
7799
+ "name": "description",
7800
+ "description": "The description text (only rendered when `showDescription` is true and\n`description` is set)."
7029
7801
  },
7030
7802
  {
7031
7803
  "name": "icon",
7032
- "description": "The leading file-type icon."
7804
+ "description": "The icon/indicator wrapper."
7033
7805
  },
7034
7806
  {
7035
- "name": "source",
7036
- "description": "The source system name."
7807
+ "name": "label",
7808
+ "description": "The name+description wrapper."
7037
7809
  },
7038
7810
  {
7039
- "name": "version",
7040
- "description": "The version label."
7811
+ "name": "name",
7812
+ "description": "The name text."
7813
+ }
7814
+ ],
7815
+ "cssProperties": [
7816
+ {
7817
+ "name": "--bs-stepper-step-connector-color",
7818
+ "description": "Rail color to the next step. Aliased to --bs-border-default. Figma's spec shows one static rail color regardless of adjacent steps' state -- completion is conveyed by the icons, not the rail."
7819
+ },
7820
+ {
7821
+ "name": "--bs-stepper-step-connector-thickness",
7822
+ "description": "Rail line thickness. 2px, matching Figma exactly."
7823
+ },
7824
+ {
7825
+ "name": "--bs-stepper-step-description-font-weight",
7826
+ "description": "Aliased to --bs-font-weight-regular."
7827
+ },
7828
+ {
7829
+ "name": "--bs-stepper-step-font-size",
7830
+ "description": "Aliased to --bs-font-size-md."
7831
+ },
7832
+ {
7833
+ "name": "--bs-stepper-step-gap",
7834
+ "description": "Gap between the icon/connector row (or column) and the label. Aliased to --bs-spacing-100."
7835
+ },
7836
+ {
7837
+ "name": "--bs-stepper-step-icon-bg-done",
7838
+ "description": "Icon background, state=\"done\". Aliased to --bs-color-primary-default."
7839
+ },
7840
+ {
7841
+ "name": "--bs-stepper-step-icon-border-current",
7842
+ "description": "Icon border, state=\"current\". Aliased to --bs-color-primary-default."
7843
+ },
7844
+ {
7845
+ "name": "--bs-stepper-step-icon-border-disabled",
7846
+ "description": "Icon border, state=\"disabled\". Aliased to --bs-border-neutral-disabled."
7847
+ },
7848
+ {
7849
+ "name": "--bs-stepper-step-icon-border-enabled",
7850
+ "description": "Icon border, state=\"enabled\" (not yet reached). Aliased to --bs-border-default."
7851
+ },
7852
+ {
7853
+ "name": "--bs-stepper-step-icon-border-error",
7854
+ "description": "Icon border, state=\"error\". Aliased to --bs-border-error."
7855
+ },
7856
+ {
7857
+ "name": "--bs-stepper-step-icon-border-width",
7858
+ "description": "Border width of the icon circle. 1.5px, matching Figma exactly."
7859
+ },
7860
+ {
7861
+ "name": "--bs-stepper-step-icon-color-done",
7862
+ "description": "Checkmark icon color, state=\"done\". Aliased to --bs-text-on-action."
7863
+ },
7864
+ {
7865
+ "name": "--bs-stepper-step-icon-color-error",
7866
+ "description": "Exclamation icon color, state=\"error\". Aliased to --bs-border-error."
7867
+ },
7868
+ {
7869
+ "name": "--bs-stepper-step-icon-dot-current",
7870
+ "description": "Inner filled dot color, state=\"current\". Aliased to --bs-color-primary-default."
7871
+ },
7872
+ {
7873
+ "name": "--bs-stepper-step-icon-size",
7874
+ "description": "Width/height of the icon/indicator circle. 24px, matching Figma exactly."
7875
+ },
7876
+ {
7877
+ "name": "--bs-stepper-step-line-height",
7878
+ "description": "Aliased to --bs-line-height-body-md."
7879
+ },
7880
+ {
7881
+ "name": "--bs-stepper-step-name-font-weight",
7882
+ "description": "Aliased to --bs-font-weight-semibold."
7883
+ },
7884
+ {
7885
+ "name": "--bs-stepper-step-text-active",
7886
+ "description": "Name/description color, state=\"current\"/\"done\". Aliased to --bs-text-default."
7887
+ },
7888
+ {
7889
+ "name": "--bs-stepper-step-text-disabled",
7890
+ "description": "Name/description color, state=\"disabled\". Aliased to --bs-text-on-disabled."
7891
+ },
7892
+ {
7893
+ "name": "--bs-stepper-step-text-enabled",
7894
+ "description": "Name/description color, state=\"enabled\"/\"error\". Aliased to --bs-text-muted."
7041
7895
  }
7042
7896
  ]
7043
7897
  }
@@ -7045,16 +7899,16 @@
7045
7899
  "exports": [
7046
7900
  {
7047
7901
  "kind": "js",
7048
- "name": "BsSourceLink",
7902
+ "name": "BsStepperStep",
7049
7903
  "declaration": {
7050
- "name": "BsSourceLink"
7904
+ "name": "BsStepperStep"
7051
7905
  }
7052
7906
  },
7053
7907
  {
7054
7908
  "kind": "custom-element-definition",
7055
- "name": "bs-source-link",
7909
+ "name": "bs-stepper-step",
7056
7910
  "declaration": {
7057
- "name": "BsSourceLink"
7911
+ "name": "BsStepperStep"
7058
7912
  }
7059
7913
  }
7060
7914
  ]
@@ -7121,7 +7975,6 @@
7121
7975
  "text": "string"
7122
7976
  },
7123
7977
  "default": "null",
7124
- "readonly": true,
7125
7978
  "attribute": "aria-label"
7126
7979
  },
7127
7980
  {
@@ -7143,7 +7996,6 @@
7143
7996
  "text": "boolean"
7144
7997
  },
7145
7998
  "default": "false",
7146
- "readonly": true,
7147
7999
  "attribute": "disabled"
7148
8000
  },
7149
8001
  {
@@ -7159,7 +8011,6 @@
7159
8011
  ]
7160
8012
  },
7161
8013
  "default": "'lg'",
7162
- "readonly": true,
7163
8014
  "attribute": "size"
7164
8015
  }
7165
8016
  ],
@@ -7375,7 +8226,6 @@
7375
8226
  "text": "string"
7376
8227
  },
7377
8228
  "default": "null",
7378
- "readonly": true,
7379
8229
  "attribute": "aria-label"
7380
8230
  },
7381
8231
  {
@@ -7386,7 +8236,6 @@
7386
8236
  "text": "boolean"
7387
8237
  },
7388
8238
  "default": "false",
7389
- "readonly": true,
7390
8239
  "attribute": "disabled"
7391
8240
  },
7392
8241
  {
@@ -7402,7 +8251,6 @@
7402
8251
  ]
7403
8252
  },
7404
8253
  "default": "'start'",
7405
- "readonly": true,
7406
8254
  "attribute": "icon-position"
7407
8255
  },
7408
8256
  {
@@ -7413,7 +8261,6 @@
7413
8261
  "text": "boolean"
7414
8262
  },
7415
8263
  "default": "false",
7416
- "readonly": true,
7417
8264
  "attribute": "selected",
7418
8265
  "reflects": true
7419
8266
  }
@@ -7622,7 +8469,6 @@
7622
8469
  ]
7623
8470
  },
7624
8471
  "default": "'horizontal'",
7625
- "readonly": true,
7626
8472
  "attribute": "orientation"
7627
8473
  },
7628
8474
  {
@@ -7638,7 +8484,6 @@
7638
8484
  ]
7639
8485
  },
7640
8486
  "default": "'bs-tab'",
7641
- "readonly": true,
7642
8487
  "attribute": "type"
7643
8488
  }
7644
8489
  ],
@@ -7725,7 +8570,6 @@
7725
8570
  "text": "\"top\""
7726
8571
  },
7727
8572
  "default": "'top'",
7728
- "readonly": true,
7729
8573
  "attribute": "placement"
7730
8574
  }
7731
8575
  ],