@brandsync/wc 1.10.0 → 1.11.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 (432) hide show
  1. package/custom-elements.json +8335 -4132
  2. package/dist/brandsync-wc/brandsync-wc.css +33 -0
  3. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  4. package/dist/brandsync-wc/{p-9f8852a0.entry.js → p-00a0d489.entry.js} +1 -1
  5. package/dist/brandsync-wc/{p-a5feaad4.entry.js → p-061ddc46.entry.js} +1 -1
  6. package/dist/brandsync-wc/{p-360452c2.entry.js → p-09435f41.entry.js} +1 -1
  7. package/dist/brandsync-wc/{p-dbcbe682.entry.js → p-09bc1923.entry.js} +1 -1
  8. package/dist/brandsync-wc/{p-1f7208cb.entry.js → p-09cbf05b.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-c99b6a66.entry.js → p-0b2d3b7e.entry.js} +1 -1
  10. package/dist/brandsync-wc/p-0b7c77c1.entry.js +1 -0
  11. package/dist/brandsync-wc/p-0ee4126c.entry.js +1 -0
  12. package/dist/brandsync-wc/{p-5f3cd501.entry.js → p-0f8cd2e8.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-1c0db4d6.entry.js → p-1261f0b0.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-b2074a32.entry.js → p-1978e63c.entry.js} +1 -1
  15. package/dist/brandsync-wc/p-1aab6d07.entry.js +1 -0
  16. package/dist/brandsync-wc/{p-96ed9386.entry.js → p-20030f4d.entry.js} +1 -1
  17. package/dist/brandsync-wc/p-2177042f.entry.js +1 -0
  18. package/dist/brandsync-wc/{p-a8e2a829.entry.js → p-2368a92e.entry.js} +1 -1
  19. package/dist/brandsync-wc/{p-2e958566.entry.js → p-247e36ad.entry.js} +1 -1
  20. package/dist/brandsync-wc/p-2497d128.entry.js +1 -0
  21. package/dist/brandsync-wc/{p-701ebf4a.entry.js → p-282ddbee.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-763876f5.entry.js → p-2f4e08e1.entry.js} +1 -1
  23. package/dist/brandsync-wc/{p-c3f72584.entry.js → p-34e5feaf.entry.js} +1 -1
  24. package/dist/brandsync-wc/{p-ea4e20ef.entry.js → p-39a26c64.entry.js} +1 -1
  25. package/dist/brandsync-wc/p-3a1af63a.entry.js +1 -0
  26. package/dist/brandsync-wc/{p-9f6fe37d.entry.js → p-3f09296a.entry.js} +1 -1
  27. package/dist/brandsync-wc/p-416322bd.entry.js +1 -0
  28. package/dist/brandsync-wc/{p-bbcc47b0.entry.js → p-491b51e6.entry.js} +1 -1
  29. package/dist/brandsync-wc/p-52cb2358.entry.js +1 -0
  30. package/dist/brandsync-wc/{p-daab6b22.entry.js → p-56c37e0a.entry.js} +1 -1
  31. package/dist/brandsync-wc/p-5ba90a13.entry.js +1 -0
  32. package/dist/brandsync-wc/{p-2181378f.entry.js → p-5f27f04d.entry.js} +1 -1
  33. package/dist/brandsync-wc/{p-08c99a60.entry.js → p-617bd13a.entry.js} +1 -1
  34. package/dist/brandsync-wc/p-68fcd4a4.entry.js +1 -0
  35. package/dist/brandsync-wc/{p-9e88f19c.entry.js → p-69c0a85d.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-d3f44cb7.entry.js → p-6a696161.entry.js} +1 -1
  37. package/dist/brandsync-wc/{p-32cd69f1.entry.js → p-6c6cdf77.entry.js} +1 -1
  38. package/dist/brandsync-wc/{p-041776c0.entry.js → p-6e735e37.entry.js} +1 -1
  39. package/dist/brandsync-wc/{p-fc58c663.entry.js → p-73f214ed.entry.js} +1 -1
  40. package/dist/brandsync-wc/{p-be2c1740.entry.js → p-7796b93f.entry.js} +1 -1
  41. package/dist/brandsync-wc/p-78a69a59.entry.js +1 -0
  42. package/dist/brandsync-wc/{p-f370b8fa.entry.js → p-78f4fcf0.entry.js} +1 -1
  43. package/dist/brandsync-wc/p-7f954939.entry.js +1 -0
  44. package/dist/brandsync-wc/{p-835a8dc7.entry.js → p-81605b82.entry.js} +1 -1
  45. package/dist/brandsync-wc/{p-a71d2811.entry.js → p-823ab3b2.entry.js} +1 -1
  46. package/dist/brandsync-wc/{p-a92eec48.entry.js → p-89fabf27.entry.js} +1 -1
  47. package/dist/brandsync-wc/{p-AgoOSYvW.js → p-DqQRXQMx.js} +2 -2
  48. package/dist/brandsync-wc/{p-18c3c22c.entry.js → p-a9169157.entry.js} +1 -1
  49. package/dist/brandsync-wc/{p-f89de457.entry.js → p-afb07368.entry.js} +1 -1
  50. package/dist/brandsync-wc/{p-301b2455.entry.js → p-b84366a7.entry.js} +1 -1
  51. package/dist/brandsync-wc/p-b9a4042e.entry.js +1 -0
  52. package/dist/brandsync-wc/{p-275072dd.entry.js → p-b9ccd9d1.entry.js} +1 -1
  53. package/dist/brandsync-wc/{p-61c1a2a3.entry.js → p-be3dd446.entry.js} +1 -1
  54. package/dist/brandsync-wc/{p-d42b1c2b.entry.js → p-c0a92750.entry.js} +1 -1
  55. package/dist/brandsync-wc/{p-8eba7f90.entry.js → p-d754ee13.entry.js} +1 -1
  56. package/dist/brandsync-wc/{p-e9b43754.entry.js → p-d75f3f87.entry.js} +1 -1
  57. package/dist/brandsync-wc/{p-e8a5b8eb.entry.js → p-d8b29a53.entry.js} +1 -1
  58. package/dist/brandsync-wc/p-de110ad0.entry.js +1 -0
  59. package/dist/brandsync-wc/p-e2556b4e.entry.js +1 -0
  60. package/dist/brandsync-wc/{p-af2bf957.entry.js → p-e5daa6ca.entry.js} +1 -1
  61. package/dist/brandsync-wc/{p-0132a2d1.entry.js → p-f15d9524.entry.js} +1 -1
  62. package/dist/brandsync-wc/p-f5180578.entry.js +1 -0
  63. package/dist/brandsync-wc/{p-fd254972.entry.js → p-f7d15fbe.entry.js} +1 -1
  64. package/dist/brandsync-wc/{p-50a251a4.entry.js → p-fc069773.entry.js} +1 -1
  65. package/dist/brandsync-wc/p-fcee0dc4.entry.js +1 -0
  66. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  67. package/dist/cjs/bs-accordion.cjs.entry.js +1 -1
  68. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +2 -2
  69. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  70. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  71. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  72. package/dist/cjs/bs-attachment.cjs.entry.js +1 -1
  73. package/dist/cjs/bs-avatar.cjs.entry.js +1 -1
  74. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  75. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +1 -1
  76. package/dist/cjs/bs-breadcrumb.cjs.entry.js +1 -1
  77. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +2 -2
  78. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  79. package/dist/cjs/bs-button.cjs.entry.js +3 -3
  80. package/dist/cjs/bs-card.cjs.entry.js +3 -3
  81. package/dist/cjs/bs-carousel.cjs.entry.js +1 -1
  82. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
  83. package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
  84. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  85. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  86. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
  87. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +2 -2
  88. package/dist/cjs/bs-checkbox.cjs.entry.js +1 -1
  89. package/dist/cjs/bs-chip-filter.cjs.entry.js +1 -1
  90. package/dist/cjs/bs-chip-informative.cjs.entry.js +1 -1
  91. package/dist/cjs/bs-chip-input.cjs.entry.js +1 -1
  92. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +1 -1
  93. package/dist/cjs/bs-composer.cjs.entry.js +1 -1
  94. package/dist/cjs/bs-cookie-consent.cjs.entry.js +186 -0
  95. package/dist/cjs/bs-data-table.cjs.entry.js +1 -1
  96. package/dist/cjs/bs-datepicker.cjs.entry.js +13 -9
  97. package/dist/cjs/bs-dialog.cjs.entry.js +1 -1
  98. package/dist/cjs/bs-error-page.cjs.entry.js +103 -0
  99. package/dist/cjs/bs-file-upload-item.cjs.entry.js +2 -2
  100. package/dist/cjs/bs-file-upload.cjs.entry.js +2 -2
  101. package/dist/cjs/bs-icon-button.cjs.entry.js +2 -2
  102. package/dist/cjs/bs-icon-tile.cjs.entry.js +52 -0
  103. package/dist/cjs/bs-inline-tab.cjs.entry.js +2 -2
  104. package/dist/cjs/{bs-input_2.cjs.entry.js → bs-input_3.cjs.entry.js} +40 -5
  105. package/dist/cjs/bs-logo.cjs.entry.js +1 -1
  106. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +2 -2
  107. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +3 -3
  108. package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
  109. package/dist/cjs/bs-onboarding-checklist.cjs.entry.js +161 -0
  110. package/dist/cjs/bs-pagination.cjs.entry.js +2 -2
  111. package/dist/cjs/bs-product-tour.cjs.entry.js +78 -0
  112. package/dist/cjs/bs-progress-linear.cjs.entry.js +4 -4
  113. package/dist/cjs/bs-progress.cjs.entry.js +3 -3
  114. package/dist/cjs/bs-qr-code.cjs.entry.js +148 -0
  115. package/dist/cjs/bs-radio.cjs.entry.js +2 -2
  116. package/dist/cjs/bs-session-timeout.cjs.entry.js +215 -0
  117. package/dist/cjs/bs-slider.cjs.entry.js +2 -2
  118. package/dist/cjs/bs-snackbar.cjs.entry.js +9 -3
  119. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  120. package/dist/cjs/bs-stepper-step.cjs.entry.js +2 -2
  121. package/dist/cjs/bs-stepper.cjs.entry.js +2 -2
  122. package/dist/cjs/bs-switch.cjs.entry.js +2 -2
  123. package/dist/cjs/bs-tab_3.cjs.entry.js +255 -0
  124. package/dist/cjs/bs-timepicker.cjs.entry.js +4 -4
  125. package/dist/cjs/bs-toast.cjs.entry.js +2 -2
  126. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  127. package/dist/cjs/bs-whats-new.cjs.entry.js +144 -0
  128. package/dist/cjs/{index-kk9YXF2S.js → index-tFJjflK5.js} +15 -3
  129. package/dist/cjs/loader.cjs.js +2 -2
  130. package/dist/collection/collection-manifest.json +9 -0
  131. package/dist/collection/components/bs-a11y.cmp.test.js +22 -0
  132. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  133. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  134. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  135. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  136. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -1
  137. package/dist/collection/components/bs-button/bs-button/bs-button.cmp.test.js +28 -0
  138. package/dist/collection/components/bs-button/bs-button/bs-button.css +8 -2
  139. package/dist/collection/components/bs-button/bs-button/bs-button.js +4 -1
  140. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +1 -1
  141. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  142. package/dist/collection/components/bs-card/bs-card.cmp.test.js +48 -0
  143. package/dist/collection/components/bs-card/bs-card.css +37 -16
  144. package/dist/collection/components/bs-card/bs-card.js +2 -2
  145. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  146. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  147. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  148. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  149. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  150. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
  151. package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.cmp.test.js +217 -0
  152. package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.css +350 -0
  153. package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.js +668 -0
  154. package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.stories.js +103 -0
  155. package/dist/collection/components/bs-datepicker/bs-datepicker.cmp.test.js +9 -0
  156. package/dist/collection/components/bs-datepicker/bs-datepicker.css +21 -11
  157. package/dist/collection/components/bs-datepicker/bs-datepicker.js +13 -7
  158. package/dist/collection/components/bs-datepicker/bs-datepicker.stories.js +3 -2
  159. package/dist/collection/components/bs-error-page/bs-error-page.cmp.test.js +99 -0
  160. package/dist/collection/components/bs-error-page/bs-error-page.css +105 -0
  161. package/dist/collection/components/bs-error-page/bs-error-page.js +328 -0
  162. package/dist/collection/components/bs-error-page/bs-error-page.stories.js +57 -0
  163. package/dist/collection/components/bs-file-upload/bs-file-upload.js +1 -1
  164. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +1 -1
  165. package/dist/collection/components/bs-icon-tile/bs-icon-tile.cmp.test.js +175 -0
  166. package/dist/collection/components/bs-icon-tile/bs-icon-tile.css +112 -0
  167. package/dist/collection/components/bs-icon-tile/bs-icon-tile.js +158 -0
  168. package/dist/collection/components/bs-icon-tile/bs-icon-tile.stories.js +45 -0
  169. package/dist/collection/components/bs-input/bs-input.cmp.test.js +14 -0
  170. package/dist/collection/components/bs-input/bs-input.css +9 -2
  171. package/dist/collection/components/bs-input/bs-input.js +2 -2
  172. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  173. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  174. package/dist/collection/components/bs-onboarding-checklist/bs-onboarding-checklist.cmp.test.js +280 -0
  175. package/dist/collection/components/bs-onboarding-checklist/bs-onboarding-checklist.css +488 -0
  176. package/dist/collection/components/bs-onboarding-checklist/bs-onboarding-checklist.js +674 -0
  177. package/dist/collection/components/bs-onboarding-checklist/bs-onboarding-checklist.stories.js +92 -0
  178. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  179. package/dist/collection/components/bs-product-tour/bs-product-tour.cmp.test.js +116 -0
  180. package/dist/collection/components/bs-product-tour/bs-product-tour.css +265 -0
  181. package/dist/collection/components/bs-product-tour/bs-product-tour.js +391 -0
  182. package/dist/collection/components/bs-product-tour/bs-product-tour.stories.js +68 -0
  183. package/dist/collection/components/bs-progress/bs-progress.js +2 -2
  184. package/dist/collection/components/bs-progress-linear/bs-progress-linear.css +1 -1
  185. package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +2 -2
  186. package/dist/collection/components/bs-qr-code/bs-qr-code.cmp.test.js +152 -0
  187. package/dist/collection/components/bs-qr-code/bs-qr-code.css +307 -0
  188. package/dist/collection/components/bs-qr-code/bs-qr-code.js +767 -0
  189. package/dist/collection/components/bs-qr-code/bs-qr-code.stories.js +99 -0
  190. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  191. package/dist/collection/components/bs-session-timeout/bs-session-timeout.cmp.test.js +202 -0
  192. package/dist/collection/components/bs-session-timeout/bs-session-timeout.css +239 -0
  193. package/dist/collection/components/bs-session-timeout/bs-session-timeout.js +772 -0
  194. package/dist/collection/components/bs-session-timeout/bs-session-timeout.stories.js +88 -0
  195. package/dist/collection/components/bs-slider/bs-slider.js +1 -1
  196. package/dist/collection/components/bs-snackbar/bs-snackbar.cmp.test.js +20 -0
  197. package/dist/collection/components/bs-snackbar/bs-snackbar.css +6 -4
  198. package/dist/collection/components/bs-snackbar/bs-snackbar.js +53 -1
  199. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  200. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
  201. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
  202. package/dist/collection/components/bs-switch/bs-switch.js +1 -1
  203. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  204. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
  205. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +1 -1
  206. package/dist/collection/components/bs-timepicker/bs-timepicker.css +15 -11
  207. package/dist/collection/components/bs-timepicker/bs-timepicker.js +4 -2
  208. package/dist/collection/components/bs-toast/bs-toast.js +1 -1
  209. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  210. package/dist/collection/components/bs-whats-new/bs-whats-new.cmp.test.js +200 -0
  211. package/dist/collection/components/bs-whats-new/bs-whats-new.css +315 -0
  212. package/dist/collection/components/bs-whats-new/bs-whats-new.js +790 -0
  213. package/dist/collection/components/bs-whats-new/bs-whats-new.stories.js +105 -0
  214. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.cmp.test.js +79 -0
  215. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.css +131 -0
  216. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.js +295 -0
  217. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.stories.js +67 -0
  218. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +2 -2
  219. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  220. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +1 -1
  221. package/dist/components/bs-accordion.js +1 -1
  222. package/dist/components/bs-ai-disclaimer.js +1 -1
  223. package/dist/components/bs-ai-greeting.js +1 -1
  224. package/dist/components/bs-ai-thinking.js +1 -1
  225. package/dist/components/bs-attachment-list.js +1 -1
  226. package/dist/components/bs-attachment.js +1 -1
  227. package/dist/components/bs-avatar.js +1 -1
  228. package/dist/components/bs-badge.js +1 -1
  229. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  230. package/dist/components/bs-breadcrumb.js +1 -1
  231. package/dist/components/bs-breadcrumbs.js +1 -1
  232. package/dist/components/bs-button-skeleton.js +1 -1
  233. package/dist/components/bs-button.js +1 -1
  234. package/dist/components/bs-card.js +1 -1
  235. package/dist/components/bs-carousel.js +1 -1
  236. package/dist/components/bs-chatbot-feedback.js +1 -1
  237. package/dist/components/bs-chatbot-header.js +1 -1
  238. package/dist/components/bs-chatbot-response-action.js +1 -1
  239. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  240. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  241. package/dist/components/bs-checkbox-skeleton.js +1 -1
  242. package/dist/components/bs-checkbox.js +1 -1
  243. package/dist/components/bs-chip-filter.js +1 -1
  244. package/dist/components/bs-chip-informative.js +1 -1
  245. package/dist/components/bs-chip-input.js +1 -1
  246. package/dist/components/bs-composer-status-banner.js +1 -1
  247. package/dist/components/bs-composer.js +1 -1
  248. package/dist/components/bs-cookie-consent.d.ts +11 -0
  249. package/dist/components/bs-cookie-consent.js +1 -0
  250. package/dist/components/bs-data-table.js +1 -1
  251. package/dist/components/bs-datepicker.js +1 -1
  252. package/dist/components/bs-dialog.js +1 -1
  253. package/dist/components/bs-error-page.d.ts +11 -0
  254. package/dist/components/bs-error-page.js +1 -0
  255. package/dist/components/bs-file-upload-item.js +1 -1
  256. package/dist/components/bs-file-upload.js +1 -1
  257. package/dist/components/bs-icon-button.js +1 -1
  258. package/dist/components/bs-icon-tile.d.ts +11 -0
  259. package/dist/components/bs-icon-tile.js +1 -0
  260. package/dist/components/bs-inline-tab.js +1 -1
  261. package/dist/components/bs-input.js +1 -1
  262. package/dist/components/bs-logo.js +1 -1
  263. package/dist/components/bs-menu-item.js +1 -1
  264. package/dist/components/bs-menu.js +1 -1
  265. package/dist/components/bs-navigation-drawer-item.js +1 -1
  266. package/dist/components/bs-navigation-drawer.js +1 -1
  267. package/dist/components/bs-navigation-header.js +1 -1
  268. package/dist/components/bs-onboarding-checklist.d.ts +11 -0
  269. package/dist/components/bs-onboarding-checklist.js +1 -0
  270. package/dist/components/bs-pagination.js +1 -1
  271. package/dist/components/bs-product-tour.d.ts +11 -0
  272. package/dist/components/bs-product-tour.js +1 -0
  273. package/dist/components/bs-progress-linear.js +1 -1
  274. package/dist/components/bs-progress.js +1 -1
  275. package/dist/components/bs-qr-code.d.ts +11 -0
  276. package/dist/components/bs-qr-code.js +1 -0
  277. package/dist/components/bs-radio.js +1 -1
  278. package/dist/components/bs-session-timeout.d.ts +11 -0
  279. package/dist/components/bs-session-timeout.js +1 -0
  280. package/dist/components/bs-slider.js +1 -1
  281. package/dist/components/bs-snackbar.js +1 -1
  282. package/dist/components/bs-source-link.js +1 -1
  283. package/dist/components/bs-stepper-step.js +1 -1
  284. package/dist/components/bs-stepper.js +1 -1
  285. package/dist/components/bs-switch.js +1 -1
  286. package/dist/components/bs-tab.js +1 -1
  287. package/dist/components/bs-tabs.js +1 -1
  288. package/dist/components/bs-timepicker.js +1 -1
  289. package/dist/components/bs-toast.js +1 -1
  290. package/dist/components/bs-tooltip.js +1 -1
  291. package/dist/components/bs-whats-new-entry.d.ts +11 -0
  292. package/dist/components/bs-whats-new-entry.js +1 -0
  293. package/dist/components/bs-whats-new.d.ts +11 -0
  294. package/dist/components/bs-whats-new.js +1 -0
  295. package/dist/components/index.js +1 -1
  296. package/dist/components/{p-R2MlkUzD.js → p-BEEoVNRu.js} +1 -1
  297. package/dist/components/{p-DkIVyFOP.js → p-BZ3M4lOU.js} +1 -1
  298. package/dist/components/{p-Ba860ej1.js → p-B_I4UEMp.js} +1 -1
  299. package/dist/components/{p-ZK8p5zax.js → p-Be9L4_Fe.js} +1 -1
  300. package/dist/components/p-Be_Pmccm.js +1 -0
  301. package/dist/components/{p-CPvqZNO8.js → p-Bl_tVzeq.js} +1 -1
  302. package/dist/components/p-C8yT2Ucq.js +1 -0
  303. package/dist/components/p-CA31vqjL.js +1 -0
  304. package/dist/components/p-CUfs0ROR.js +1 -0
  305. package/dist/components/{p-JYlmcxBn.js → p-CVrEuVFo.js} +1 -1
  306. package/dist/components/{p-B7Icv1ho.js → p-C_j_jDM6.js} +1 -1
  307. package/dist/components/p-CbimDNGY.js +1 -0
  308. package/dist/components/p-CeUK3n7D.js +1 -0
  309. package/dist/components/p-CncySD_-.js +1 -0
  310. package/dist/components/p-DE8K7fg0.js +1 -0
  311. package/dist/components/p-Dr0Qk9Zc.js +1 -0
  312. package/dist/components/p-DuLL7Ouw.js +1 -0
  313. package/dist/components/p-YsHQLXET.js +1 -0
  314. package/dist/components/p-qmS2CBqi.js +1 -0
  315. package/dist/components/{p-BYR_ZC8v.js → p-zTHlbyH6.js} +1 -1
  316. package/dist/esm/brandsync-wc.js +3 -3
  317. package/dist/esm/bs-accordion.entry.js +1 -1
  318. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  319. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  320. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  321. package/dist/esm/bs-attachment-list.entry.js +2 -2
  322. package/dist/esm/bs-attachment.entry.js +1 -1
  323. package/dist/esm/bs-avatar.entry.js +1 -1
  324. package/dist/esm/bs-badge.entry.js +1 -1
  325. package/dist/esm/bs-breadcrumb-overflow.entry.js +1 -1
  326. package/dist/esm/bs-breadcrumb.entry.js +1 -1
  327. package/dist/esm/bs-breadcrumbs.entry.js +2 -2
  328. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  329. package/dist/esm/bs-button.entry.js +3 -3
  330. package/dist/esm/bs-card.entry.js +3 -3
  331. package/dist/esm/bs-carousel.entry.js +1 -1
  332. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  333. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  334. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  335. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  336. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  337. package/dist/esm/bs-checkbox-skeleton.entry.js +2 -2
  338. package/dist/esm/bs-checkbox.entry.js +1 -1
  339. package/dist/esm/bs-chip-filter.entry.js +1 -1
  340. package/dist/esm/bs-chip-informative.entry.js +1 -1
  341. package/dist/esm/bs-chip-input.entry.js +1 -1
  342. package/dist/esm/bs-composer-status-banner.entry.js +1 -1
  343. package/dist/esm/bs-composer.entry.js +1 -1
  344. package/dist/esm/bs-cookie-consent.entry.js +184 -0
  345. package/dist/esm/bs-data-table.entry.js +1 -1
  346. package/dist/esm/bs-datepicker.entry.js +13 -9
  347. package/dist/esm/bs-dialog.entry.js +1 -1
  348. package/dist/esm/bs-error-page.entry.js +101 -0
  349. package/dist/esm/bs-file-upload-item.entry.js +2 -2
  350. package/dist/esm/bs-file-upload.entry.js +2 -2
  351. package/dist/esm/bs-icon-button.entry.js +2 -2
  352. package/dist/esm/bs-icon-tile.entry.js +50 -0
  353. package/dist/esm/bs-inline-tab.entry.js +2 -2
  354. package/dist/esm/{bs-input_2.entry.js → bs-input_3.entry.js} +40 -6
  355. package/dist/esm/bs-logo.entry.js +1 -1
  356. package/dist/esm/bs-navigation-drawer-item.entry.js +2 -2
  357. package/dist/esm/bs-navigation-drawer.entry.js +3 -3
  358. package/dist/esm/bs-navigation-header.entry.js +2 -2
  359. package/dist/esm/bs-onboarding-checklist.entry.js +159 -0
  360. package/dist/esm/bs-pagination.entry.js +2 -2
  361. package/dist/esm/bs-product-tour.entry.js +76 -0
  362. package/dist/esm/bs-progress-linear.entry.js +4 -4
  363. package/dist/esm/bs-progress.entry.js +3 -3
  364. package/dist/esm/bs-qr-code.entry.js +146 -0
  365. package/dist/esm/bs-radio.entry.js +2 -2
  366. package/dist/esm/bs-session-timeout.entry.js +213 -0
  367. package/dist/esm/bs-slider.entry.js +2 -2
  368. package/dist/esm/bs-snackbar.entry.js +9 -3
  369. package/dist/esm/bs-source-link.entry.js +3 -3
  370. package/dist/esm/bs-stepper-step.entry.js +2 -2
  371. package/dist/esm/bs-stepper.entry.js +2 -2
  372. package/dist/esm/bs-switch.entry.js +2 -2
  373. package/dist/esm/bs-tab_3.entry.js +251 -0
  374. package/dist/esm/bs-timepicker.entry.js +4 -4
  375. package/dist/esm/bs-toast.entry.js +2 -2
  376. package/dist/esm/bs-tooltip.entry.js +2 -2
  377. package/dist/esm/bs-whats-new.entry.js +142 -0
  378. package/dist/esm/{index-AgoOSYvW.js → index-DqQRXQMx.js} +15 -3
  379. package/dist/esm/loader.js +3 -3
  380. package/dist/types/components/bs-button/bs-button/bs-button.d.ts +3 -0
  381. package/dist/types/components/bs-cookie-consent/bs-cookie-consent.cmp.test.d.ts +1 -0
  382. package/dist/types/components/bs-cookie-consent/bs-cookie-consent.d.ts +136 -0
  383. package/dist/types/components/bs-cookie-consent/bs-cookie-consent.stories.d.ts +16 -0
  384. package/dist/types/components/bs-datepicker/bs-datepicker.d.ts +2 -0
  385. package/dist/types/components/bs-error-page/bs-error-page.cmp.test.d.ts +1 -0
  386. package/dist/types/components/bs-error-page/bs-error-page.d.ts +60 -0
  387. package/dist/types/components/bs-error-page/bs-error-page.stories.d.ts +22 -0
  388. package/dist/types/components/bs-icon-tile/bs-icon-tile.cmp.test.d.ts +1 -0
  389. package/dist/types/components/bs-icon-tile/bs-icon-tile.d.ts +40 -0
  390. package/dist/types/components/bs-icon-tile/bs-icon-tile.stories.d.ts +13 -0
  391. package/dist/types/components/bs-onboarding-checklist/bs-onboarding-checklist.cmp.test.d.ts +1 -0
  392. package/dist/types/components/bs-onboarding-checklist/bs-onboarding-checklist.d.ts +140 -0
  393. package/dist/types/components/bs-onboarding-checklist/bs-onboarding-checklist.stories.d.ts +18 -0
  394. package/dist/types/components/bs-product-tour/bs-product-tour.cmp.test.d.ts +1 -0
  395. package/dist/types/components/bs-product-tour/bs-product-tour.d.ts +78 -0
  396. package/dist/types/components/bs-product-tour/bs-product-tour.stories.d.ts +19 -0
  397. package/dist/types/components/bs-qr-code/bs-qr-code.cmp.test.d.ts +1 -0
  398. package/dist/types/components/bs-qr-code/bs-qr-code.d.ts +124 -0
  399. package/dist/types/components/bs-qr-code/bs-qr-code.stories.d.ts +28 -0
  400. package/dist/types/components/bs-session-timeout/bs-session-timeout.cmp.test.d.ts +1 -0
  401. package/dist/types/components/bs-session-timeout/bs-session-timeout.d.ts +141 -0
  402. package/dist/types/components/bs-session-timeout/bs-session-timeout.stories.d.ts +19 -0
  403. package/dist/types/components/bs-snackbar/bs-snackbar.d.ts +7 -0
  404. package/dist/types/components/bs-timepicker/bs-timepicker.d.ts +2 -0
  405. package/dist/types/components/bs-whats-new/bs-whats-new.cmp.test.d.ts +1 -0
  406. package/dist/types/components/bs-whats-new/bs-whats-new.d.ts +147 -0
  407. package/dist/types/components/bs-whats-new/bs-whats-new.stories.d.ts +14 -0
  408. package/dist/types/components/bs-whats-new-entry/bs-whats-new-entry.cmp.test.d.ts +1 -0
  409. package/dist/types/components/bs-whats-new-entry/bs-whats-new-entry.d.ts +53 -0
  410. package/dist/types/components/bs-whats-new-entry/bs-whats-new-entry.stories.d.ts +18 -0
  411. package/dist/types/components.d.ts +2636 -96
  412. package/package.json +1 -1
  413. package/dist/brandsync-wc/p-1c3a43c7.entry.js +0 -1
  414. package/dist/brandsync-wc/p-1c427ffb.entry.js +0 -1
  415. package/dist/brandsync-wc/p-4f2c4929.entry.js +0 -1
  416. package/dist/brandsync-wc/p-76e1c295.entry.js +0 -1
  417. package/dist/brandsync-wc/p-790db8b3.entry.js +0 -1
  418. package/dist/brandsync-wc/p-796a1860.entry.js +0 -1
  419. package/dist/brandsync-wc/p-806a5347.entry.js +0 -1
  420. package/dist/brandsync-wc/p-addfa0a0.entry.js +0 -1
  421. package/dist/brandsync-wc/p-c9a72416.entry.js +0 -1
  422. package/dist/brandsync-wc/p-f006d962.entry.js +0 -1
  423. package/dist/brandsync-wc/p-f074f94e.entry.js +0 -1
  424. package/dist/cjs/bs-menu.cjs.entry.js +0 -39
  425. package/dist/cjs/bs-tab.cjs.entry.js +0 -88
  426. package/dist/cjs/bs-tabs.cjs.entry.js +0 -133
  427. package/dist/components/p-BTvme8CE.js +0 -1
  428. package/dist/components/p-CpUHnsq9.js +0 -1
  429. package/dist/components/p-jDO25SfF.js +0 -1
  430. package/dist/esm/bs-menu.entry.js +0 -37
  431. package/dist/esm/bs-tab.entry.js +0 -86
  432. package/dist/esm/bs-tabs.entry.js +0 -131
@@ -13,7 +13,7 @@ import { BsBreadcrumbSize } from "./components/bs-breadcrumb/bs-breadcrumb/bs-br
13
13
  import { BsBreadcrumbOverflowItem } from "./components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow";
14
14
  import { BsBreadcrumbSize as BsBreadcrumbSize1 } from "./components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb";
15
15
  import { BsButtonSize, BsButtonVariant } from "./components/bs-button/bs-button/bs-button";
16
- import { BsButtonSize as BsButtonSize1 } from "./components/bs-button/bs-button/bs-button";
16
+ import { BsButtonSize as BsButtonSize1, BsButtonVariant as BsButtonVariant1 } from "./components/bs-button/bs-button/bs-button";
17
17
  import { BsCardSurface } from "./components/bs-card/bs-card";
18
18
  import { BsCarouselTracker } from "./components/bs-carousel/bs-carousel";
19
19
  import { BsCheckboxSize } from "./components/bs-checkbox/bs-checkbox";
@@ -23,16 +23,23 @@ import { BsChipInformativeColor, BsChipInformativeSize } from "./components/bs-c
23
23
  import { BsChipInputSize } from "./components/bs-chip/bs-chip-input/bs-chip-input";
24
24
  import { BsComposerState, BsComposerVariant } from "./components/bs-composer/bs-composer";
25
25
  import { BsComposerStatusBannerType } from "./components/bs-composer-status-banner/bs-composer-status-banner";
26
+ import { BsCookieCategory, BsCookieChoices, BsCookieConsentType } from "./components/bs-cookie-consent/bs-cookie-consent";
26
27
  import { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs-data-table";
27
28
  import { BsDatepickerChange } from "./components/bs-datepicker/bs-datepicker";
28
29
  import { BsDialogSize } from "./components/bs-dialog/bs-dialog";
30
+ import { BsErrorPageType } from "./components/bs-error-page/bs-error-page";
29
31
  import { BsFileUploadDirection } from "./components/bs-file-upload/bs-file-upload";
30
32
  import { BsFileUploadItemState } from "./components/bs-file-upload-item/bs-file-upload-item";
31
33
  import { BsIconButtonSize, BsIconButtonVariant } from "./components/bs-button/bs-icon-button/bs-icon-button";
34
+ import { BsIconTileIntent, BsIconTileSize } from "./components/bs-icon-tile/bs-icon-tile";
32
35
  import { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
33
36
  import { BsNavigationHeaderAlignment } from "./components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header";
37
+ import { BsOnboardingChecklistType, BsOnboardingLauncherLayout, BsOnboardingStep } from "./components/bs-onboarding-checklist/bs-onboarding-checklist";
38
+ import { BsProductTourDirection, BsProductTourType } from "./components/bs-product-tour/bs-product-tour";
34
39
  import { BsProgressSize, BsProgressStrokeWidth, BsProgressType } from "./components/bs-progress/bs-progress";
35
40
  import { BsProgressLinearSize, BsProgressLinearType } from "./components/bs-progress-linear/bs-progress-linear";
41
+ import { BsQrCodeSize, BsQrCodeState, BsQrCodeType } from "./components/bs-qr-code/bs-qr-code";
42
+ import { BsSessionTimeoutAlternative, BsSessionTimeoutType } from "./components/bs-session-timeout/bs-session-timeout";
36
43
  import { BsSliderType } from "./components/bs-slider/bs-slider";
37
44
  import { BsSnackbarVariant } from "./components/bs-snackbar/bs-snackbar";
38
45
  import { BsStepperDirection } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
@@ -42,6 +49,9 @@ import { BsTabIconPosition } from "./components/bs-tab/bs-tab/bs-tab";
42
49
  import { BsTabsOrientation, BsTabsType } from "./components/bs-tab/bs-tabs/bs-tabs";
43
50
  import { BsTimepickerChange } from "./components/bs-timepicker/bs-timepicker";
44
51
  import { BsToastState } from "./components/bs-toast/bs-toast";
52
+ import { BsWhatsNewFilter, BsWhatsNewItem, BsWhatsNewType } from "./components/bs-whats-new/bs-whats-new";
53
+ import { BsWhatsNewEntryTagColor } from "./components/bs-whats-new-entry/bs-whats-new-entry";
54
+ import { BsWhatsNewEntryTagColor as BsWhatsNewEntryTagColor1 } from "./components/bs-whats-new-entry/bs-whats-new-entry";
45
55
  export { BsAccordionSize } from "./components/bs-accordion/bs-accordion";
46
56
  export { BsAttachmentType } from "./components/bs-attachment/bs-attachment";
47
57
  export { BsAvatarSize, BsAvatarType } from "./components/bs-avatar/bs-avatar";
@@ -50,7 +60,7 @@ export { BsBreadcrumbSize } from "./components/bs-breadcrumb/bs-breadcrumb/bs-br
50
60
  export { BsBreadcrumbOverflowItem } from "./components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow";
51
61
  export { BsBreadcrumbSize as BsBreadcrumbSize1 } from "./components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb";
52
62
  export { BsButtonSize, BsButtonVariant } from "./components/bs-button/bs-button/bs-button";
53
- export { BsButtonSize as BsButtonSize1 } from "./components/bs-button/bs-button/bs-button";
63
+ export { BsButtonSize as BsButtonSize1, BsButtonVariant as BsButtonVariant1 } from "./components/bs-button/bs-button/bs-button";
54
64
  export { BsCardSurface } from "./components/bs-card/bs-card";
55
65
  export { BsCarouselTracker } from "./components/bs-carousel/bs-carousel";
56
66
  export { BsCheckboxSize } from "./components/bs-checkbox/bs-checkbox";
@@ -60,16 +70,23 @@ export { BsChipInformativeColor, BsChipInformativeSize } from "./components/bs-c
60
70
  export { BsChipInputSize } from "./components/bs-chip/bs-chip-input/bs-chip-input";
61
71
  export { BsComposerState, BsComposerVariant } from "./components/bs-composer/bs-composer";
62
72
  export { BsComposerStatusBannerType } from "./components/bs-composer-status-banner/bs-composer-status-banner";
73
+ export { BsCookieCategory, BsCookieChoices, BsCookieConsentType } from "./components/bs-cookie-consent/bs-cookie-consent";
63
74
  export { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs-data-table";
64
75
  export { BsDatepickerChange } from "./components/bs-datepicker/bs-datepicker";
65
76
  export { BsDialogSize } from "./components/bs-dialog/bs-dialog";
77
+ export { BsErrorPageType } from "./components/bs-error-page/bs-error-page";
66
78
  export { BsFileUploadDirection } from "./components/bs-file-upload/bs-file-upload";
67
79
  export { BsFileUploadItemState } from "./components/bs-file-upload-item/bs-file-upload-item";
68
80
  export { BsIconButtonSize, BsIconButtonVariant } from "./components/bs-button/bs-icon-button/bs-icon-button";
81
+ export { BsIconTileIntent, BsIconTileSize } from "./components/bs-icon-tile/bs-icon-tile";
69
82
  export { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
70
83
  export { BsNavigationHeaderAlignment } from "./components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header";
84
+ export { BsOnboardingChecklistType, BsOnboardingLauncherLayout, BsOnboardingStep } from "./components/bs-onboarding-checklist/bs-onboarding-checklist";
85
+ export { BsProductTourDirection, BsProductTourType } from "./components/bs-product-tour/bs-product-tour";
71
86
  export { BsProgressSize, BsProgressStrokeWidth, BsProgressType } from "./components/bs-progress/bs-progress";
72
87
  export { BsProgressLinearSize, BsProgressLinearType } from "./components/bs-progress-linear/bs-progress-linear";
88
+ export { BsQrCodeSize, BsQrCodeState, BsQrCodeType } from "./components/bs-qr-code/bs-qr-code";
89
+ export { BsSessionTimeoutAlternative, BsSessionTimeoutType } from "./components/bs-session-timeout/bs-session-timeout";
73
90
  export { BsSliderType } from "./components/bs-slider/bs-slider";
74
91
  export { BsSnackbarVariant } from "./components/bs-snackbar/bs-snackbar";
75
92
  export { BsStepperDirection } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
@@ -79,6 +96,9 @@ export { BsTabIconPosition } from "./components/bs-tab/bs-tab/bs-tab";
79
96
  export { BsTabsOrientation, BsTabsType } from "./components/bs-tab/bs-tabs/bs-tabs";
80
97
  export { BsTimepickerChange } from "./components/bs-timepicker/bs-timepicker";
81
98
  export { BsToastState } from "./components/bs-toast/bs-toast";
99
+ export { BsWhatsNewFilter, BsWhatsNewItem, BsWhatsNewType } from "./components/bs-whats-new/bs-whats-new";
100
+ export { BsWhatsNewEntryTagColor } from "./components/bs-whats-new-entry/bs-whats-new-entry";
101
+ export { BsWhatsNewEntryTagColor as BsWhatsNewEntryTagColor1 } from "./components/bs-whats-new-entry/bs-whats-new-entry";
82
102
  export namespace Components {
83
103
  /**
84
104
  * A single collapsible section -- a clickable header (optional leading icon, label, trailing
@@ -472,6 +492,9 @@ export namespace Components {
472
492
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
473
493
  * it for actions that actually delete/revoke/undo something.
474
494
  * @prop --bs-button-radius - Corner radius. Aliased to `--bs-border-radius-100` by default.
495
+ * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-300`.
496
+ * @prop --bs-button-width - Width of the button. `auto` by default (fits its content); set `100%` for a full-width button, e.g. `bs-button { --bs-button-width: 100%; }`.
497
+ * @prop --bs-button-subtle-color - Label/icon colour, `variant="subtle"`. Aliased to `--bs-color-neutral-default`; set it to `var(--bs-text-action)` for a blue text button.
475
498
  * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
476
499
  * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
477
500
  * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
@@ -1178,6 +1201,103 @@ export namespace Components {
1178
1201
  */
1179
1202
  "type": BsComposerStatusBannerType;
1180
1203
  }
1204
+ /**
1205
+ * A cookie consent prompt in four forms, matching the Figma "Cookie consent" component:
1206
+ * - `banner` -- a wide bar: icon, heading, text, policy link, and Customise / Reject optional / Accept
1207
+ * all. Stacks into a column on narrow containers (its own width, not the viewport's).
1208
+ * - `card` -- the compact version of the same question, in a card.
1209
+ * - `preferences` -- the detailed dialog: one row per cookie category with a switch (strictly
1210
+ * necessary is "Always on"), an expandable list of the cookies in each, and Reject optional /
1211
+ * Accept all / Save choices.
1212
+ * - `saved` -- a dark confirmation bar ("Cookie choices saved") with a Change action.
1213
+ * The component only collects the choice. It doesn't set, read or delete cookies, remember that the
1214
+ * user answered, or decide when to show itself: your app does that from the events, and swaps `type`
1215
+ * (e.g. `banner` -> `preferences` on `bsCustomise`, `preferences` -> `saved` on `bsSave`).
1216
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions),
1217
+ * `bs-switch` (the category switches), `bs-chip-informative` (the "Always on" badge), `bs-icon-button`
1218
+ * (the close button), `bs-snackbar` (the saved confirmation).
1219
+ * ## When to use
1220
+ * - Asking for consent to optional cookies or similar tracking, as the law of your market requires.
1221
+ * ## When not to use
1222
+ * - Telling people about necessary cookies only -- that needs no consent prompt.
1223
+ * ## Fair choice
1224
+ * "Reject optional" has the same prominence as "Accept all" (same size, both always visible). Keep it
1225
+ * that way: a prompt that makes refusing harder than accepting isn't valid consent in most places.
1226
+ */
1227
+ interface BsCookieConsent {
1228
+ /**
1229
+ * Label of the Accept all button.
1230
+ * @default 'Accept all'
1231
+ */
1232
+ "acceptLabel": string;
1233
+ /**
1234
+ * Text of the badge on required categories (`preferences`).
1235
+ * @default 'Always on'
1236
+ */
1237
+ "alwaysOnLabel": string;
1238
+ /**
1239
+ * The categories in the preferences dialog (`preferences`): `[{ id, label, description?, required?, enabled?, cookies? }]`. Defaults to Strictly necessary, Preferences, Analytics and Marketing. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
1240
+ * @default [ { id: 'necessary', label: 'Strictly necessary', description: 'Needed for sign-in, security and to keep the service running. These cannot be turned off.', required: true, cookies: [ 'Session cookie — keeps you signed in as you move between pages.', 'Security cookie — helps prevent fraud and unauthorized access.', 'Consent cookie — remembers your cookie consent choices.', ], }, { id: 'preferences', label: 'Preferences', description: 'Remember your language, theme and table layouts on this device.', enabled: true }, { id: 'analytics', label: 'Analytics', description: 'Help us understand which features are used so we can improve them. Data is anonymised.' }, { id: 'marketing', label: 'Marketing', description: 'Show relevant products on other websites.' }, ]
1241
+ */
1242
+ "categories": BsCookieCategory[];
1243
+ /**
1244
+ * Label of the action on the confirmation (`saved`).
1245
+ * @default 'Change'
1246
+ */
1247
+ "changeLabel": string;
1248
+ /**
1249
+ * Accessible name of the close button (`preferences`).
1250
+ * @default 'Close'
1251
+ */
1252
+ "closeLabel": string;
1253
+ /**
1254
+ * Label of the Customise button.
1255
+ * @default 'Customise'
1256
+ */
1257
+ "customiseLabel": string;
1258
+ /**
1259
+ * Paragraph under the heading (the message, for `saved`). Defaults per `type`.
1260
+ */
1261
+ "description"?: string;
1262
+ /**
1263
+ * Heading. Defaults per `type`.
1264
+ */
1265
+ "heading"?: string;
1266
+ /**
1267
+ * HTML heading level, 1-6.
1268
+ * @default 2
1269
+ */
1270
+ "headingLevel": number;
1271
+ /**
1272
+ * Text of the policy link.
1273
+ * @default 'Read the cookie policy'
1274
+ */
1275
+ "policyLabel": string;
1276
+ /**
1277
+ * URL of your cookie policy. The "Read the cookie policy" link is only shown when this is set.
1278
+ */
1279
+ "policyUrl"?: string;
1280
+ /**
1281
+ * Label of the Reject optional button.
1282
+ * @default 'Reject optional'
1283
+ */
1284
+ "rejectLabel": string;
1285
+ /**
1286
+ * Label of the Save choices button (`preferences`).
1287
+ * @default 'Save choices'
1288
+ */
1289
+ "saveLabel": string;
1290
+ /**
1291
+ * Label of a category's disclosure; `{count}` is replaced by the number of cookies.
1292
+ * @default 'See {count} cookies'
1293
+ */
1294
+ "seeCookiesLabel": string;
1295
+ /**
1296
+ * Which form: `banner`, `card`, `preferences` or `saved`.
1297
+ * @default 'banner'
1298
+ */
1299
+ "type": BsCookieConsentType;
1300
+ }
1181
1301
  /**
1182
1302
  * A sortable, optionally row-selectable table for tabular data.
1183
1303
  * `columns`, `rows`, and `cellRenderer` are JS-property-only — HTML attributes can only carry
@@ -1226,6 +1346,7 @@ export namespace Components {
1226
1346
  * ISO timestamps -- so a date can't shift by a day across time zones.
1227
1347
  * The calendar renders inline at a fixed width; to show it as a popover, put it inside a
1228
1348
  * `bs-menu` or your own overlay.
1349
+ * **Built from:** `bs-card` (the surface), `bs-input` (the month/year dropdown triggers and the range date fields), `bs-menu` and `bs-menu-item` (the month/year lists).
1229
1350
  * ## When to use
1230
1351
  * - Picking a date where seeing the surrounding days of the week/month helps (a booking, a
1231
1352
  * deadline, a report window).
@@ -1345,6 +1466,56 @@ export namespace Components {
1345
1466
  */
1346
1467
  "size": BsDialogSize;
1347
1468
  }
1469
+ /**
1470
+ * A full-block page for when the user can't get to what they asked for: page not found (404), a server
1471
+ * error (500), no access (403), planned maintenance, or no internet connection. Matches the Figma
1472
+ * "Error page" component's five states.
1473
+ * Each `type` brings its own icon, tint, code label ("404", "Maintenance", ...), heading, paragraph and
1474
+ * buttons, all overridable by props. The component doesn't navigate or retry anything: it emits
1475
+ * `bsPrimary` / `bsSecondary` and your app decides what "Go to Overview" or "Try again" does.
1476
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions).
1477
+ * ## When to use
1478
+ * - Replacing the content of a page or panel that can't be shown, with a clear way forward.
1479
+ * ## When not to use
1480
+ * - A problem with one field or one action -- use inline validation or a `bs-snackbar`.
1481
+ * - A blocking question the user must answer -- use `bs-dialog`.
1482
+ */
1483
+ interface BsErrorPage {
1484
+ /**
1485
+ * The small label under the icon, e.g. "404". Defaults per `type` ("404", "500", "403", "Maintenance", "Offline"). Set it to an empty string to hide it.
1486
+ */
1487
+ "code"?: string;
1488
+ /**
1489
+ * Paragraph under the heading. Defaults per `type`.
1490
+ */
1491
+ "description"?: string;
1492
+ /**
1493
+ * Heading. Defaults per `type`.
1494
+ */
1495
+ "heading"?: string;
1496
+ /**
1497
+ * HTML heading level for the heading, 1-6. Use 1 when this replaces the whole page; lower when it sits inside a section that already has a heading above it.
1498
+ * @default 1
1499
+ */
1500
+ "headingLevel": number;
1501
+ /**
1502
+ * Label of the primary button. Defaults per `type`. Set it to an empty string to hide it.
1503
+ */
1504
+ "primaryLabel"?: string;
1505
+ /**
1506
+ * A small reference line under the buttons, e.g. `"Error ID: 7f3c-21a9 · 30.09.2026 10:42"`, for support to look up. Nothing is shown when empty.
1507
+ */
1508
+ "reference"?: string;
1509
+ /**
1510
+ * Label of the secondary button. Defaults per `type` (only `not-found`, `server-error` and `no-access` have one). Set it to an empty string to hide it.
1511
+ */
1512
+ "secondaryLabel"?: string;
1513
+ /**
1514
+ * Which error: `not-found` (404), `server-error` (500), `no-access` (403), `maintenance` or `offline`.
1515
+ * @default 'not-found'
1516
+ */
1517
+ "type": BsErrorPageType;
1518
+ }
1348
1519
  /**
1349
1520
  * A file dropzone: drag files onto it, or press "Browse file" to open the file picker. It reports
1350
1521
  * the chosen files and does nothing else -- the consuming app owns the upload itself and shows its
@@ -1495,6 +1666,36 @@ export namespace Components {
1495
1666
  */
1496
1667
  "variant": BsIconButtonVariant;
1497
1668
  }
1669
+ /**
1670
+ * A small rounded square holding an icon, tinted by intent -- the visual marker next to a status,
1671
+ * a list item or a feature. Matches the Figma "Icon tile" component (3 sizes x 6 intents).
1672
+ * Each intent shows a default glyph (house, check, warning, cross, grid, info); put your own icon in
1673
+ * the default slot to replace it. A slotted icon is sized to the tile (12/16/24px) and coloured
1674
+ * with the intent's icon colour, as long as it draws with `currentColor`.
1675
+ * The tile is decorative by default (hidden from assistive tech). Don't rely on the colour or glyph
1676
+ * alone to convey status: slot text into `text` (it sits beside the square, in
1677
+ * `--bs-icon-tile-text-color`), or set `label` to give the tile its own accessible name.
1678
+ * ## When to use
1679
+ * - Marking a row, card or message with a status or category icon.
1680
+ * ## When not to use
1681
+ * - As a button -- it isn't interactive. Use `bs-icon-button`.
1682
+ */
1683
+ interface BsIconTile {
1684
+ /**
1685
+ * Colour and default glyph. `brand` uses the brand colours; `information` the info palette.
1686
+ * @default 'default'
1687
+ */
1688
+ "intent": BsIconTileIntent;
1689
+ /**
1690
+ * Accessible name. When set, the tile is exposed as an image with this name; when empty it is decorative and hidden from assistive tech.
1691
+ */
1692
+ "label"?: string;
1693
+ /**
1694
+ * Tile size: `sm` 24px, `md` 32px, `lg` 48px.
1695
+ * @default 'sm'
1696
+ */
1697
+ "size": BsIconTileSize;
1698
+ }
1498
1699
  /**
1499
1700
  * A pill-shaped tab button -- an optional leading icon plus a text label, rendered as a real
1500
1701
  * `<button>` so it participates correctly in tab order and native click/keyboard activation.
@@ -1926,6 +2127,119 @@ export namespace Components {
1926
2127
  */
1927
2128
  "skipToContentLabel": string;
1928
2129
  }
2130
+ /**
2131
+ * A "get set up" checklist, in four forms that matching the Figma "Onboarding checklist" component:
2132
+ * - `panel` -- the full list: heading, progress, every step with a status icon, and the current step
2133
+ * expanded with its description, time estimate, Skip for now and a primary action.
2134
+ * - `dashboard` -- a wide card for the top of a page: summary and progress on the left, the current step
2135
+ * and the next ones as small cards on the right, and a "See all steps" link.
2136
+ * - `launcher` -- a small always-visible chip that reopens the checklist; three layouts (`icon`, `ring`,
2137
+ * `inline`).
2138
+ * - `completion` -- the "You're all set" card once every step is done.
2139
+ * The component shows progress and reports what the user pressed. It doesn't know what a step means,
2140
+ * run it, or remember anything: your app owns the steps (`steps`, each with `done`), marks them done, and
2141
+ * decides which form to show.
2142
+ * **Built from:** `bs-card` (every surface), `bs-icon-tile` (the icons), `bs-button` (the actions),
2143
+ * `bs-icon-button` (the close button), `bs-progress-linear` (the progress bar), `bs-progress` (the launcher
2144
+ * ring).
2145
+ * ## When to use
2146
+ * - Guiding a new account or user through a short list of setup tasks they can do in any order or later.
2147
+ * ## When not to use
2148
+ * - A strict, linear flow where each step needs the one before -- use `bs-stepper`.
2149
+ * - A tour of the interface itself -- use `bs-product-tour`.
2150
+ * ## Accessibility
2151
+ * Steps are an ordered list; the current one has `aria-current="step"`, and each step carries a visually
2152
+ * hidden "Done" / "Not done". The progress bar is named with the progress text.
2153
+ */
2154
+ interface BsOnboardingChecklist {
2155
+ /**
2156
+ * Caption on the cards of steps that come after the current one (`dashboard`).
2157
+ * @default 'After the step before'
2158
+ */
2159
+ "afterLabel": string;
2160
+ /**
2161
+ * Shows a close button (`panel`, `dashboard`).
2162
+ * @default false
2163
+ */
2164
+ "closable": boolean;
2165
+ /**
2166
+ * Accessible name of the close button.
2167
+ * @default 'Close'
2168
+ */
2169
+ "closeLabel": string;
2170
+ /**
2171
+ * Paragraph under the heading. Defaults to a summary of the progress for `dashboard`. Nothing for `launcher`.
2172
+ */
2173
+ "description"?: string;
2174
+ /**
2175
+ * Label of the main button (`completion`).
2176
+ * @default 'Go to dashboard'
2177
+ */
2178
+ "doneLabel": string;
2179
+ /**
2180
+ * Heading. Defaults per `type` ("Get started", "Finish setting up", "Setup", "You're all set").
2181
+ */
2182
+ "heading"?: string;
2183
+ /**
2184
+ * HTML heading level, 1-6.
2185
+ * @default 2
2186
+ */
2187
+ "headingLevel": number;
2188
+ /**
2189
+ * Label of the secondary button (`completion`).
2190
+ * @default 'Hide checklist'
2191
+ */
2192
+ "hideLabel": string;
2193
+ /**
2194
+ * Layout of the `launcher`: `icon` (tile, title, progress text), `ring` (circular progress, title, text) or `inline` (tile, title and text on one line, with a chevron).
2195
+ * @default 'icon'
2196
+ */
2197
+ "launcherLayout": BsOnboardingLauncherLayout;
2198
+ /**
2199
+ * Template of the progress label; `{done}` and `{total}` are replaced.
2200
+ * @default '{done} of {total} done'
2201
+ */
2202
+ "progressLabel": string;
2203
+ /**
2204
+ * Text under the launcher title. Defaults to "N% complete".
2205
+ */
2206
+ "progressText"?: string;
2207
+ /**
2208
+ * Label of the link that opens the whole checklist (`dashboard`).
2209
+ * @default 'See all steps'
2210
+ */
2211
+ "seeAllLabel": string;
2212
+ /**
2213
+ * Label of "Skip for now" on the current step (`panel`).
2214
+ * @default 'Skip for now'
2215
+ */
2216
+ "skipLabel": string;
2217
+ /**
2218
+ * Label of the Start link on the current step's card (`dashboard`).
2219
+ * @default 'Start'
2220
+ */
2221
+ "startLabel": string;
2222
+ /**
2223
+ * Visually hidden text on a finished step.
2224
+ * @default 'Done'
2225
+ */
2226
+ "statusDoneLabel": string;
2227
+ /**
2228
+ * Visually hidden text on an unfinished step.
2229
+ * @default 'Not done'
2230
+ */
2231
+ "statusTodoLabel": string;
2232
+ /**
2233
+ * The steps: `[{ id, label, description?, done?, estimate?, actionLabel?, skippable? }]`. The first step that isn't `done` is the current one. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
2234
+ * @default []
2235
+ */
2236
+ "steps": BsOnboardingStep[];
2237
+ /**
2238
+ * Which form: `panel`, `dashboard`, `launcher` or `completion`.
2239
+ * @default 'panel'
2240
+ */
2241
+ "type": BsOnboardingChecklistType;
2242
+ }
1929
2243
  /**
1930
2244
  * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
1931
2245
  * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
@@ -1968,6 +2282,76 @@ export namespace Components {
1968
2282
  */
1969
2283
  "totalPages": number;
1970
2284
  }
2285
+ /**
2286
+ * One step of a product tour: a centred **welcome** or **success** card with an art tile, or a
2287
+ * **pointer** card -- a compact step with a close button, a "1 of 3" progress label and Back/Next
2288
+ * actions -- whose arrow points at the thing it describes. Matches the Figma "Product Tour" and
2289
+ * "Pointer" components.
2290
+ * This is the step *card* only. It doesn't run a tour: it has no overlay, no spotlight, no
2291
+ * positioning against a target and no step sequencing. Your code decides which step is showing,
2292
+ * places the card next to its target (the arrow can sit on any of 12 positions via `direction`),
2293
+ * and moves on from `bsPrimary`/`bsSecondary`.
2294
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the art tile), `bs-button` (the actions), `bs-icon-button` (the close button).
2295
+ * ## When to use
2296
+ * - Introducing a feature on first run (`welcome`), confirming a finished tour (`success`), or
2297
+ * walking through the UI one pointer at a time (`pointer`).
2298
+ * ## When not to use
2299
+ * - A blocking decision or form -- use `bs-dialog`.
2300
+ * - A hint on hover or focus -- use `bs-tooltip`.
2301
+ */
2302
+ interface BsProductTour {
2303
+ /**
2304
+ * Shows a close button in the corner (`pointer`).
2305
+ * @default false
2306
+ */
2307
+ "closable": boolean;
2308
+ /**
2309
+ * Accessible name of the close button.
2310
+ * @default 'Close'
2311
+ */
2312
+ "closeLabel": string;
2313
+ /**
2314
+ * Paragraph under the heading.
2315
+ */
2316
+ "description"?: string;
2317
+ /**
2318
+ * Where the arrow sits (`pointer` only): the side of the card it's on, and for corners/edges which end it's near, e.g. `top-left` = on the top edge, near the left corner.
2319
+ * @default 'top'
2320
+ */
2321
+ "direction": BsProductTourDirection;
2322
+ /**
2323
+ * Heading.
2324
+ */
2325
+ "heading"?: string;
2326
+ /**
2327
+ * Label of the primary button. Defaults to "Start" (`welcome`), "Done" (`success`) or "Next" (`pointer`). Set it to an empty string to hide the button.
2328
+ */
2329
+ "primaryLabel"?: string;
2330
+ /**
2331
+ * Template of the progress label; `{step}` and `{total}` are replaced.
2332
+ * @default '{step} of {total}'
2333
+ */
2334
+ "progressLabel": string;
2335
+ /**
2336
+ * Label of the secondary button. Defaults to "Later" (`welcome`) or "Back" (`pointer`); none for `success`. Set it to an empty string to hide the button.
2337
+ */
2338
+ "secondaryLabel"?: string;
2339
+ /**
2340
+ * Current step, 1-based (`pointer`). Used with `total` for the progress label.
2341
+ * @default 1
2342
+ */
2343
+ "step": number;
2344
+ /**
2345
+ * Number of steps (`pointer`). The progress label is hidden when this is 0.
2346
+ * @default 0
2347
+ */
2348
+ "total": number;
2349
+ /**
2350
+ * `welcome` and `success` are centred cards with an art tile; `pointer` is the compact step with an arrow.
2351
+ * @default 'welcome'
2352
+ */
2353
+ "type": BsProductTourType;
2354
+ }
1971
2355
  /**
1972
2356
  * A circular progress indicator -- either a static ring showing a percentage sweep
1973
2357
  * (`type="determinate"`) or a continuously spinning ring signaling in-progress work with no known
@@ -2054,6 +2438,143 @@ export namespace Components {
2054
2438
  */
2055
2439
  "value": number;
2056
2440
  }
2441
+ /**
2442
+ * A block for sharing a link or taking a payment by QR code: a heading, the code on a white quiet
2443
+ * zone, the URL (or the amount, for payments) as text, an optional expiry chip, and Download and
2444
+ * Copy link actions. Matches the Figma "QR code" component (3 sizes x 2 types x 5 states, plus the
2445
+ * "with logo" variant).
2446
+ * **This component draws a code, it doesn't encode one.** Generate the real code in your product
2447
+ * with a QR library and hand it over either as a `matrix` (a square `boolean[][]`, `true` = dark
2448
+ * module) or as your own element in the `code` slot (an `<img>`, `<svg>` or `<canvas>`).
2449
+ * The code always sits on a white quiet zone with black modules, in dark mode too -- scanners need
2450
+ * the contrast.
2451
+ * **Built from:** `bs-card` (the surface), `bs-button` (Download, Copy link, Retry, Refresh), `bs-progress` (the loading spinner), `bs-chip-informative` (the expiry chip), `bs-icon-button` (the close button).
2452
+ * ## When to use
2453
+ * - Sharing a link to an order, document or page that someone will open on a phone.
2454
+ * - Taking a payment with an amount (`type="payment"`).
2455
+ * ## When not to use
2456
+ * - Encoding long text blobs -- a QR code that dense is hard to scan at the sizes here.
2457
+ * ## States
2458
+ * `loading` (generating the code), `error` (couldn't generate it; Retry), `expired` (Refresh) and
2459
+ * `scanned` (done: "Scanned", or "Payment received" for payments). Download and Copy link are disabled
2460
+ * in every state but `default`, and hidden once `scanned`.
2461
+ */
2462
+ interface BsQrCode {
2463
+ /**
2464
+ * The amount shown under the code (`type="payment"`), e.g. `"148,00 kr"`.
2465
+ */
2466
+ "amount"?: string;
2467
+ /**
2468
+ * Small label above the amount.
2469
+ * @default 'Total'
2470
+ */
2471
+ "amountLabel": string;
2472
+ /**
2473
+ * Shows a close button in the corner.
2474
+ * @default false
2475
+ */
2476
+ "closable": boolean;
2477
+ /**
2478
+ * Accessible name of the close button.
2479
+ * @default 'Close'
2480
+ */
2481
+ "closeLabel": string;
2482
+ /**
2483
+ * Accessible name for the code image, e.g. `"QR code for order SO-10482"`. Applies to `matrix`; give a slotted `<img>` its own `alt`.
2484
+ * @default 'QR code'
2485
+ */
2486
+ "codeLabel": string;
2487
+ /**
2488
+ * Label of the Copy link button.
2489
+ * @default 'Copy link'
2490
+ */
2491
+ "copyLabel": string;
2492
+ /**
2493
+ * Line under the heading.
2494
+ */
2495
+ "description"?: string;
2496
+ /**
2497
+ * Label of the Download button.
2498
+ * @default 'Download PNG'
2499
+ */
2500
+ "downloadLabel": string;
2501
+ /**
2502
+ * Text in the `error` overlay.
2503
+ * @default "Couldn't load code"
2504
+ */
2505
+ "errorLabel": string;
2506
+ /**
2507
+ * Text in the `expired` overlay.
2508
+ * @default 'Code expired'
2509
+ */
2510
+ "expiredLabel": string;
2511
+ /**
2512
+ * Text of the expiry chip, e.g. `"Expires in 04:59"`. No chip when empty.
2513
+ */
2514
+ "expiry"?: string;
2515
+ /**
2516
+ * Heading text.
2517
+ * @default 'Share the order'
2518
+ */
2519
+ "heading": string;
2520
+ /**
2521
+ * Hides the Download and Copy link row.
2522
+ * @default false
2523
+ */
2524
+ "hideActions": boolean;
2525
+ /**
2526
+ * Hides the Copy link button.
2527
+ * @default false
2528
+ */
2529
+ "hideCopy": boolean;
2530
+ /**
2531
+ * Hides the Download button.
2532
+ * @default false
2533
+ */
2534
+ "hideDownload": boolean;
2535
+ /**
2536
+ * Text in the `loading` overlay.
2537
+ * @default 'Generating code'
2538
+ */
2539
+ "loadingLabel": string;
2540
+ /**
2541
+ * The code as a square matrix of modules, `true` = dark. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule. Ignored when the `code` slot is used.
2542
+ */
2543
+ "matrix"?: boolean[][];
2544
+ /**
2545
+ * Label of the Refresh button (`expired`).
2546
+ * @default 'Refresh'
2547
+ */
2548
+ "refreshLabel": string;
2549
+ /**
2550
+ * Label of the Retry button (`error`).
2551
+ * @default 'Retry'
2552
+ */
2553
+ "retryLabel": string;
2554
+ /**
2555
+ * Text in the `scanned` overlay. Defaults to "Payment received" for `type="payment"` and "Scanned" otherwise.
2556
+ */
2557
+ "scannedLabel"?: string;
2558
+ /**
2559
+ * Card size: `sm`, `md` (default) or `lg`.
2560
+ * @default 'md'
2561
+ */
2562
+ "size": BsQrCodeSize;
2563
+ /**
2564
+ * `default`, or one of the overlay states: `loading`, `error`, `expired`, `scanned`.
2565
+ * @default 'default'
2566
+ */
2567
+ "state": BsQrCodeState;
2568
+ /**
2569
+ * `default` shows the URL under the code; `payment` shows the amount instead.
2570
+ * @default 'default'
2571
+ */
2572
+ "type": BsQrCodeType;
2573
+ /**
2574
+ * The link shown as text under the code (`type="default"`), and copied by Copy link.
2575
+ */
2576
+ "url"?: string;
2577
+ }
2057
2578
  /**
2058
2579
  * A single radio button with its label, for one mutually-exclusive choice within a group.
2059
2580
  * ## When to use
@@ -2084,6 +2605,130 @@ export namespace Components {
2084
2605
  */
2085
2606
  "value": string;
2086
2607
  }
2608
+ /**
2609
+ * The three moments around an expiring session, as one card. Matches the Figma "Session timeout"
2610
+ * component's three types:
2611
+ * - `warning` -- "You'll be signed out soon": a live countdown with a draining bar, an optional
2612
+ * "your work is saved" note, and Sign out now / Stay signed in.
2613
+ * - `signed-out` -- "You've been signed out": who was signed in, with Sign in again and Use a different
2614
+ * account.
2615
+ * - `confirm-identity` -- "Confirm it's you": a fresh password check before a sensitive action, with
2616
+ * passkey / BankID alternatives and Cancel.
2617
+ * The component never signs anyone in or out. It shows the state and emits `bsPrimary`, `bsSecondary`,
2618
+ * `bsAlternative`, `bsCancel` and `bsExpire`; your app talks to the identity provider.
2619
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions),
2620
+ * `bs-progress-linear` (the countdown bar), `bs-avatar` (the signed-in account), `bs-input` (the
2621
+ * password field).
2622
+ * ## When to use
2623
+ * - Warning someone, before it happens, that an inactivity timeout is about to end their session.
2624
+ * - Telling someone their session ended, and letting them pick up where they left off.
2625
+ * - Asking for a fresh credential before a sensitive action.
2626
+ * ## When not to use
2627
+ * - A first-time sign-in page -- this assumes there was a session.
2628
+ * - Anything that is not about the session or the user's identity -- use `bs-dialog`.
2629
+ * ## Accessibility
2630
+ * The card is a labelled region. The countdown is a `timer` and is *not* announced every second; a polite
2631
+ * live region announces the time left at 60, 30 and 10 seconds instead. Wrap the card in your own modal
2632
+ * (`bs-dialog`) if the warning must trap focus.
2633
+ */
2634
+ interface BsSessionTimeout {
2635
+ /**
2636
+ * Email of the account that was signed in (`signed-out`).
2637
+ */
2638
+ "accountEmail"?: string;
2639
+ /**
2640
+ * Initials in the avatar (`signed-out`). Derived from `accountName` when not set.
2641
+ */
2642
+ "accountInitials"?: string;
2643
+ /**
2644
+ * Name of the account that was signed in (`signed-out`).
2645
+ */
2646
+ "accountName"?: string;
2647
+ /**
2648
+ * Other ways to confirm, shown as outlined buttons under the divider: `[{ id, label, icon? }]`. Defaults to a passkey and a BankID button. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule. Set `[]` to hide them.
2649
+ * @default [ { id: 'passkey', label: 'Use passkey', icon: 'fingerprint' }, { id: 'bankid', label: 'Use BankID', icon: 'key' }, ]
2650
+ */
2651
+ "alternatives": BsSessionTimeoutAlternative[];
2652
+ /**
2653
+ * Label of the Cancel button (`confirm-identity`). Set to an empty string to hide it.
2654
+ * @default 'Cancel'
2655
+ */
2656
+ "cancelLabel": string;
2657
+ /**
2658
+ * Count `secondsLeft` down once a second (`warning`), firing `bsExpire` at zero.
2659
+ * @default false
2660
+ */
2661
+ "countdown": boolean;
2662
+ /**
2663
+ * Paragraph under the heading. Defaults per `type`.
2664
+ */
2665
+ "description"?: string;
2666
+ /**
2667
+ * Label of the divider between the password and the alternatives.
2668
+ * @default 'or'
2669
+ */
2670
+ "dividerLabel": string;
2671
+ /**
2672
+ * Heading. Defaults per `type`.
2673
+ */
2674
+ "heading"?: string;
2675
+ /**
2676
+ * HTML heading level, 1-6.
2677
+ * @default 2
2678
+ */
2679
+ "headingLevel": number;
2680
+ /**
2681
+ * Hides the icon tile.
2682
+ * @default false
2683
+ */
2684
+ "hideIcon": boolean;
2685
+ /**
2686
+ * Error shown under the password field, e.g. after a wrong password.
2687
+ */
2688
+ "passwordError"?: string;
2689
+ /**
2690
+ * Label of the password field.
2691
+ * @default 'Password'
2692
+ */
2693
+ "passwordLabel": string;
2694
+ /**
2695
+ * Label of the primary button. Defaults per `type` ("Stay signed in", "Sign in again", "Confirm").
2696
+ */
2697
+ "primaryLabel"?: string;
2698
+ /**
2699
+ * Note under the countdown, e.g. "Your draft of INV-2041 is saved automatically." Hidden when empty.
2700
+ */
2701
+ "savedMessage"?: string;
2702
+ /**
2703
+ * Label of the secondary button. Defaults per `type` ("Sign out now", "Use a different account"); none for `confirm-identity`. Set to an empty string to hide it.
2704
+ */
2705
+ "secondaryLabel"?: string;
2706
+ /**
2707
+ * Seconds left before the session ends (`warning`). Mutable: with `countdown` the component decrements it itself; otherwise drive it from your own timer.
2708
+ * @default 0
2709
+ */
2710
+ "secondsLeft": number;
2711
+ /**
2712
+ * Text next to the time under a minute.
2713
+ * @default 'seconds left'
2714
+ */
2715
+ "secondsLeftLabel": string;
2716
+ /**
2717
+ * Text next to the time while a minute or more is left.
2718
+ * @default 'minutes left'
2719
+ */
2720
+ "timeLeftLabel": string;
2721
+ /**
2722
+ * Length of the warning window in seconds, for the bar: it shows `secondsLeft / totalSeconds`. Defaults to the `secondsLeft` it first had.
2723
+ * @default 0
2724
+ */
2725
+ "totalSeconds": number;
2726
+ /**
2727
+ * Which moment: `warning`, `signed-out` or `confirm-identity`.
2728
+ * @default 'warning'
2729
+ */
2730
+ "type": BsSessionTimeoutType;
2731
+ }
2087
2732
  /**
2088
2733
  * A slider for picking a single numeric value (`type="default"`), a value snapped to evenly
2089
2734
  * spaced ticks (`type="segmented"`), or a min/max pair (`type="range"`) from within a bounded
@@ -2187,6 +2832,15 @@ export namespace Components {
2187
2832
  * Label for the optional action button (e.g. "Undo", "Retry"). Omit this prop entirely to render no action button at all -- its presence, not a boolean flag, is what shows it.
2188
2833
  */
2189
2834
  "actionLabel"?: string;
2835
+ /**
2836
+ * Variant of the action button. Defaults to the one that matches `variant` (outlined for `default`). Use `subtle` for a plain text action; colour it with `--bs-button-subtle-color` on `::part(action)`.
2837
+ */
2838
+ "actionVariant"?: BsButtonVariant1;
2839
+ /**
2840
+ * Hides the close button, for a confirmation that goes away on its own or whose only control is the action. A snackbar with no way to dismiss it must be removed by the consumer.
2841
+ * @default false
2842
+ */
2843
+ "hideClose": boolean;
2190
2844
  /**
2191
2845
  * Replaces the checkmark icon with a spinning loading indicator, for a message describing in-progress work (e.g. "Uploading files...") rather than a completed result.
2192
2846
  * @default false
@@ -2470,6 +3124,7 @@ export namespace Components {
2470
3124
  * `value` is always 24-hour `HH:mm` (e.g. `"14:30"`), regardless of the displayed `format`.
2471
3125
  * The picker renders inline at a fixed width; to show it as a popover, put it in your own overlay
2472
3126
  * and close that overlay from `bsChange`/`bsCancel`.
3127
+ * **Built from:** `bs-card` (the surface), `bs-switch` (the 24h toggle), `bs-input` (the AM/PM dropdown), `bs-button` (Cancel/Confirm).
2473
3128
  * ## When to use
2474
3129
  * - Picking a time of day where the user steps through hours and minutes.
2475
3130
  * ## When not to use
@@ -2493,95 +3148,287 @@ export namespace Components {
2493
3148
  * Display format: `12h` (with an AM/PM dropdown) or `24h`. The user can switch it with the 24h switch. Does not change `value`, which is always 24-hour.
2494
3149
  * @default '12h'
2495
3150
  */
2496
- "format": '12h' | '24h';
3151
+ "format": '12h' | '24h';
3152
+ /**
3153
+ * Label of the 24h switch.
3154
+ * @default '24h'
3155
+ */
3156
+ "formatLabel": string;
3157
+ /**
3158
+ * Heading text.
3159
+ * @default 'Select Time'
3160
+ */
3161
+ "heading": string;
3162
+ /**
3163
+ * Accessible name of the hour spinner.
3164
+ * @default 'Hour'
3165
+ */
3166
+ "hourLabel": string;
3167
+ /**
3168
+ * Accessible name of the minute spinner.
3169
+ * @default 'Minute'
3170
+ */
3171
+ "minuteLabel": string;
3172
+ /**
3173
+ * Step, in minutes, of the minute spinner's carets and arrow keys. Typing is not constrained.
3174
+ * @default 1
3175
+ */
3176
+ "minuteStep": number;
3177
+ /**
3178
+ * The `name` the confirmed value is submitted under in a surrounding `<form>`.
3179
+ */
3180
+ "name"?: string;
3181
+ /**
3182
+ * Accessible name of the AM/PM dropdown.
3183
+ * @default 'AM/PM'
3184
+ */
3185
+ "periodLabel": string;
3186
+ /**
3187
+ * The confirmed time, 24-hour `HH:mm`. Empty means no time chosen yet (the picker opens on 00:00). Mutable so Confirm updates it directly; `bsChange` still fires.
3188
+ * @default ''
3189
+ */
3190
+ "value": string;
3191
+ }
3192
+ /**
3193
+ * A transient status message for confirming the result of an action (e.g. "Files uploaded
3194
+ * successfully.") -- a state-specific icon, a message, and a close button.
3195
+ * This component only renders the toast itself -- it doesn't manage its own visibility, timing, or
3196
+ * stacking. A consumer (typically a small "toast manager" utility) creates one per message and
3197
+ * removes it from the DOM again, whether on a timer or on `bsDismiss`. Figma's spec doesn't show
3198
+ * auto-dismiss timing at all (it's a static visual spec), so this deliberately doesn't invent one.
3199
+ */
3200
+ interface BsToast {
3201
+ /**
3202
+ * Semantic state. Each state has its own icon and matching container/text tokens -- there is no neutral/default state.
3203
+ * @default 'info'
3204
+ */
3205
+ "state": BsToastState;
3206
+ }
3207
+ /**
3208
+ * A dark tooltip bubble with a pointer arrow, used to surface a short hint of extra information
3209
+ * next to a trigger element.
3210
+ * `bs-tooltip` is a purely presentational bubble -- like `bs-menu`, it does not manage its own
3211
+ * visibility, hover/focus triggering, or positioning relative to a trigger element. A consuming
3212
+ * app is responsible for showing/hiding it and for positioning it against its trigger (e.g. via a
3213
+ * wrapping `position: relative`/`absolute` pattern, the same approach used by
3214
+ * `bs-chatbot-response-action` for its own `menu` slot).
3215
+ * ## When to use
3216
+ * - A short, contextual hint of extra information shown next to a trigger element on hover/focus,
3217
+ * where the host app owns the show/hide and positioning logic.
3218
+ * ## When not to use
3219
+ * - A component that manages its own trigger interaction (hover/focus listeners) or positioning --
3220
+ * this component intentionally does not do that; wire that up in the consuming app instead.
3221
+ * @prop --bs-tooltip-bg - Background of the bubble and arrow. Aliased to `--bs-surface-inverse`.
3222
+ * @prop --bs-tooltip-color - Text color of the slotted content. Aliased to `--bs-text-inverse`.
3223
+ * @prop --bs-tooltip-radius - Corner radius of the bubble. Aliased to `--bs-border-radius-50`.
3224
+ * @prop --bs-tooltip-padding-x - Left/right padding of the bubble. Aliased to `--bs-spacing-200`.
3225
+ * @prop --bs-tooltip-padding-y - Top/bottom padding of the bubble. Aliased to `--bs-spacing-100`.
3226
+ * @prop --bs-tooltip-max-width - Max width of the bubble. Aliased to `200px`, Figma's own reference
3227
+ * width (the bubble's width is otherwise variable based on content).
3228
+ * @prop --bs-tooltip-shadow - Elevation shadow of the bubble. See `bs-tooltip.css` for why this is
3229
+ * a literal value rather than a `--bs-shadow-*` token alias.
3230
+ * @prop --bs-tooltip-font-size - Font size of the slotted content. Aliased to `--bs-font-size-sm`.
3231
+ * @prop --bs-tooltip-line-height - Line height of the slotted content. Aliased to
3232
+ * `--bs-line-height-body-sm`.
3233
+ */
3234
+ interface BsTooltip {
3235
+ /**
3236
+ * Which edge of the bubble the arrow points from, and therefore which side of a trigger the bubble should be placed on. `'top'` is the only value implemented -- it is the only variant confirmed from the Figma "EG Tooltip" component (arrow at the top of the bubble, pointing up). Bottom/left/right variants aren't implemented pending further Figma design confirmation.
3237
+ * @default 'top'
3238
+ */
3239
+ "placement": 'top';
3240
+ }
3241
+ /**
3242
+ * A product's "What's new" surface, in three forms matching the Figma component:
3243
+ * - `feed` -- a docked panel: heading, "Mark all as read", filter tabs, the list of updates (each a
3244
+ * `bs-whats-new-entry`) and a link to the full release notes.
3245
+ * - `announcement` -- one big update, with a hero image, a tag, a heading, a few bullet points, "1 of 3"
3246
+ * and Remind me later / Next.
3247
+ * - `teaser` -- a small card pointing at the feed: tag, date, heading, a line of text and "Open What's new".
3248
+ * The component only shows what you give it and reports what the user pressed. It doesn't fetch updates,
3249
+ * track which the user has seen, or decide when to appear: your app owns `entries` (with their `unread`
3250
+ * flags) and reacts to the events.
3251
+ * **Built from:** `bs-card` (the surface), `bs-whats-new-entry` (each update), `bs-tabs` (the filters),
3252
+ * `bs-chip-informative` (the tags), `bs-button`, `bs-icon-button`.
3253
+ * ## When to use
3254
+ * - Telling users about changes to the product, in a place they can come back to.
3255
+ * ## When not to use
3256
+ * - Messages about the user's own data or an action they just took -- use `bs-snackbar`, `bs-toast`.
3257
+ * - A guided walk through the interface -- use `bs-product-tour`.
3258
+ */
3259
+ interface BsWhatsNew {
3260
+ /**
3261
+ * Label of the link (`teaser`).
3262
+ * @default 'Open What’s new'
3263
+ */
3264
+ "actionLabel": string;
3265
+ /**
3266
+ * Shows a close button.
3267
+ * @default false
3268
+ */
3269
+ "closable": boolean;
3270
+ /**
3271
+ * Accessible name of the close button.
3272
+ * @default 'Close'
3273
+ */
3274
+ "closeLabel": string;
3275
+ /**
3276
+ * The date as text (`teaser`).
3277
+ */
3278
+ "date"?: string;
3279
+ /**
3280
+ * The line under the heading (`teaser`).
3281
+ */
3282
+ "description"?: string;
3283
+ /**
3284
+ * Text shown when the selected filter has no entries.
3285
+ * @default 'Nothing new here yet.'
3286
+ */
3287
+ "emptyLabel": string;
3288
+ /**
3289
+ * The updates in the feed: `[{ id, category?, tag?, tagColor?, date?, unread?, heading, description?, actionLabel?, image? }]`. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
3290
+ * @default []
3291
+ */
3292
+ "entries": BsWhatsNewItem[];
3293
+ /**
3294
+ * The selected filter's `value`. Mutable: choosing a tab updates it.
3295
+ * @default 'all'
3296
+ */
3297
+ "filter": string;
3298
+ /**
3299
+ * The filter tabs: `[{ value, label }]`. `value: "all"` shows every entry; any other value shows the entries whose `category` matches. Defaults to All, New Features, Improvements and Fixes (categories `features`, `improvements`, `fixes`). Set `[]` for no tabs.
3300
+ * @default [ { value: 'all', label: 'All' }, { value: 'features', label: 'New Features' }, { value: 'improvements', label: 'Improvements' }, { value: 'fixes', label: 'Fixes' }, ]
3301
+ */
3302
+ "filters": BsWhatsNewFilter[];
3303
+ /**
3304
+ * Heading. Defaults to "What's new" for `feed`; set it for the other forms.
3305
+ */
3306
+ "heading"?: string;
3307
+ /**
3308
+ * HTML heading level, 1-6.
3309
+ * @default 2
3310
+ */
3311
+ "headingLevel": number;
3312
+ /**
3313
+ * URL of the hero image (`announcement`). Or slot your own into `hero`.
3314
+ */
3315
+ "image"?: string;
3316
+ /**
3317
+ * Label of the "Mark all as read" button, shown while any entry is `unread`.
3318
+ * @default 'Mark all as read'
3319
+ */
3320
+ "markAllReadLabel": string;
3321
+ /**
3322
+ * The bullet points (`announcement`). Must be set as a JS property -- see CONVENTIONS.md.
3323
+ * @default []
3324
+ */
3325
+ "points": string[];
3326
+ /**
3327
+ * Label of the primary button (`announcement`). Empty hides it.
3328
+ * @default 'Next'
3329
+ */
3330
+ "primaryLabel": string;
3331
+ /**
3332
+ * Text of the release notes link.
3333
+ * @default 'See all release notes'
3334
+ */
3335
+ "releaseNotesLabel": string;
3336
+ /**
3337
+ * URL of the full release notes. The link is only shown when this is set.
3338
+ */
3339
+ "releaseNotesUrl"?: string;
3340
+ /**
3341
+ * Label of the secondary button (`announcement`). Empty hides it.
3342
+ * @default 'Remind me later'
3343
+ */
3344
+ "secondaryLabel": string;
3345
+ /**
3346
+ * Current step, 1-based (`announcement`). Used with `total`.
3347
+ * @default 1
3348
+ */
3349
+ "step": number;
3350
+ /**
3351
+ * Template of the step label; `{step}` and `{total}` are replaced.
3352
+ * @default '{step} of {total}'
3353
+ */
3354
+ "stepLabel": string;
3355
+ /**
3356
+ * Tag text (`announcement`, `teaser`), e.g. "New feature".
3357
+ */
3358
+ "tag"?: string;
3359
+ /**
3360
+ * Colour of the tag.
3361
+ * @default 'info'
3362
+ */
3363
+ "tagColor": BsWhatsNewEntryTagColor;
3364
+ /**
3365
+ * Number of announcements in the sequence (`announcement`). The step label is hidden when 0.
3366
+ * @default 0
3367
+ */
3368
+ "total": number;
2497
3369
  /**
2498
- * Label of the 24h switch.
2499
- * @default '24h'
3370
+ * Which form: `feed`, `announcement` or `teaser`.
3371
+ * @default 'feed'
2500
3372
  */
2501
- "formatLabel": string;
3373
+ "type": BsWhatsNewType;
3374
+ }
3375
+ /**
3376
+ * One update in a "What's new" list: a tag ("New feature", "Improvement", "Fix"), a date, an unread dot,
3377
+ * an optional image, a title, a short description and an optional action link ("Try it"). Matches the Figma
3378
+ * "What's new / Entry" component. It is a plain block of content -- no card -- so it can sit in a feed
3379
+ * (`bs-whats-new`), a list, or a page of release notes.
3380
+ * **Built from:** `bs-chip-informative` (the tag) and `bs-button` (the action).
3381
+ * ## When to use
3382
+ * - Announcing a change to the product, with enough detail to know whether it matters.
3383
+ * ## When not to use
3384
+ * - A message about the user's own data or an action they just took -- use `bs-snackbar` or `bs-toast`.
3385
+ */
3386
+ interface BsWhatsNewEntry {
2502
3387
  /**
2503
- * Heading text.
2504
- * @default 'Select Time'
3388
+ * Label of the action link (e.g. "Try it"). No action when empty.
2505
3389
  */
2506
- "heading": string;
3390
+ "actionLabel"?: string;
2507
3391
  /**
2508
- * Accessible name of the hour spinner.
2509
- * @default 'Hour'
3392
+ * The date as text, already formatted for the reader (e.g. "24.09.2026").
2510
3393
  */
2511
- "hourLabel": string;
3394
+ "date"?: string;
2512
3395
  /**
2513
- * Accessible name of the minute spinner.
2514
- * @default 'Minute'
3396
+ * Short description under the title.
2515
3397
  */
2516
- "minuteLabel": string;
3398
+ "description"?: string;
2517
3399
  /**
2518
- * Step, in minutes, of the minute spinner's carets and arrow keys. Typing is not constrained.
2519
- * @default 1
3400
+ * Draws a rule under the entry, to separate it from the next one.
3401
+ * @default false
2520
3402
  */
2521
- "minuteStep": number;
3403
+ "divider": boolean;
2522
3404
  /**
2523
- * The `name` the confirmed value is submitted under in a surrounding `<form>`.
3405
+ * Title.
2524
3406
  */
2525
- "name"?: string;
3407
+ "heading"?: string;
2526
3408
  /**
2527
- * Accessible name of the AM/PM dropdown.
2528
- * @default 'AM/PM'
3409
+ * HTML heading level for the title, 1-6.
3410
+ * @default 3
2529
3411
  */
2530
- "periodLabel": string;
3412
+ "headingLevel": number;
2531
3413
  /**
2532
- * The confirmed time, 24-hour `HH:mm`. Empty means no time chosen yet (the picker opens on 00:00). Mutable so Confirm updates it directly; `bsChange` still fires.
2533
- * @default ''
3414
+ * The tag text, e.g. "New feature". No tag when empty.
2534
3415
  */
2535
- "value": string;
2536
- }
2537
- /**
2538
- * A transient status message for confirming the result of an action (e.g. "Files uploaded
2539
- * successfully.") -- a state-specific icon, a message, and a close button.
2540
- * This component only renders the toast itself -- it doesn't manage its own visibility, timing, or
2541
- * stacking. A consumer (typically a small "toast manager" utility) creates one per message and
2542
- * removes it from the DOM again, whether on a timer or on `bsDismiss`. Figma's spec doesn't show
2543
- * auto-dismiss timing at all (it's a static visual spec), so this deliberately doesn't invent one.
2544
- */
2545
- interface BsToast {
3416
+ "tag"?: string;
2546
3417
  /**
2547
- * Semantic state. Each state has its own icon and matching container/text tokens -- there is no neutral/default state.
3418
+ * Colour of the tag: `info` (default), `success`, `warning`, `error` or `neutral`.
2548
3419
  * @default 'info'
2549
3420
  */
2550
- "state": BsToastState;
2551
- }
2552
- /**
2553
- * A dark tooltip bubble with a pointer arrow, used to surface a short hint of extra information
2554
- * next to a trigger element.
2555
- * `bs-tooltip` is a purely presentational bubble -- like `bs-menu`, it does not manage its own
2556
- * visibility, hover/focus triggering, or positioning relative to a trigger element. A consuming
2557
- * app is responsible for showing/hiding it and for positioning it against its trigger (e.g. via a
2558
- * wrapping `position: relative`/`absolute` pattern, the same approach used by
2559
- * `bs-chatbot-response-action` for its own `menu` slot).
2560
- * ## When to use
2561
- * - A short, contextual hint of extra information shown next to a trigger element on hover/focus,
2562
- * where the host app owns the show/hide and positioning logic.
2563
- * ## When not to use
2564
- * - A component that manages its own trigger interaction (hover/focus listeners) or positioning --
2565
- * this component intentionally does not do that; wire that up in the consuming app instead.
2566
- * @prop --bs-tooltip-bg - Background of the bubble and arrow. Aliased to `--bs-surface-inverse`.
2567
- * @prop --bs-tooltip-color - Text color of the slotted content. Aliased to `--bs-text-inverse`.
2568
- * @prop --bs-tooltip-radius - Corner radius of the bubble. Aliased to `--bs-border-radius-50`.
2569
- * @prop --bs-tooltip-padding-x - Left/right padding of the bubble. Aliased to `--bs-spacing-200`.
2570
- * @prop --bs-tooltip-padding-y - Top/bottom padding of the bubble. Aliased to `--bs-spacing-100`.
2571
- * @prop --bs-tooltip-max-width - Max width of the bubble. Aliased to `200px`, Figma's own reference
2572
- * width (the bubble's width is otherwise variable based on content).
2573
- * @prop --bs-tooltip-shadow - Elevation shadow of the bubble. See `bs-tooltip.css` for why this is
2574
- * a literal value rather than a `--bs-shadow-*` token alias.
2575
- * @prop --bs-tooltip-font-size - Font size of the slotted content. Aliased to `--bs-font-size-sm`.
2576
- * @prop --bs-tooltip-line-height - Line height of the slotted content. Aliased to
2577
- * `--bs-line-height-body-sm`.
2578
- */
2579
- interface BsTooltip {
3421
+ "tagColor": BsWhatsNewEntryTagColor1;
2580
3422
  /**
2581
- * Which edge of the bubble the arrow points from, and therefore which side of a trigger the bubble should be placed on. `'top'` is the only value implemented -- it is the only variant confirmed from the Figma "EG Tooltip" component (arrow at the top of the bubble, pointing up). Bottom/left/right variants aren't implemented pending further Figma design confirmation.
2582
- * @default 'top'
3423
+ * Shows a dot after the date for an update the user hasn't seen.
3424
+ * @default false
2583
3425
  */
2584
- "placement": 'top';
3426
+ "unread": boolean;
3427
+ /**
3428
+ * Visually hidden text for the unread dot.
3429
+ * @default 'Unread'
3430
+ */
3431
+ "unreadLabel": string;
2585
3432
  }
2586
3433
  }
2587
3434
  export interface BsAccordionCustomEvent<T> extends CustomEvent<T> {
@@ -2644,6 +3491,10 @@ export interface BsComposerStatusBannerCustomEvent<T> extends CustomEvent<T> {
2644
3491
  detail: T;
2645
3492
  target: HTMLBsComposerStatusBannerElement;
2646
3493
  }
3494
+ export interface BsCookieConsentCustomEvent<T> extends CustomEvent<T> {
3495
+ detail: T;
3496
+ target: HTMLBsCookieConsentElement;
3497
+ }
2647
3498
  export interface BsDataTableCustomEvent<T> extends CustomEvent<T> {
2648
3499
  detail: T;
2649
3500
  target: HTMLBsDataTableElement;
@@ -2656,6 +3507,10 @@ export interface BsDialogCustomEvent<T> extends CustomEvent<T> {
2656
3507
  detail: T;
2657
3508
  target: HTMLBsDialogElement;
2658
3509
  }
3510
+ export interface BsErrorPageCustomEvent<T> extends CustomEvent<T> {
3511
+ detail: T;
3512
+ target: HTMLBsErrorPageElement;
3513
+ }
2659
3514
  export interface BsFileUploadCustomEvent<T> extends CustomEvent<T> {
2660
3515
  detail: T;
2661
3516
  target: HTMLBsFileUploadElement;
@@ -2684,14 +3539,30 @@ export interface BsNavigationDrawerItemCustomEvent<T> extends CustomEvent<T> {
2684
3539
  detail: T;
2685
3540
  target: HTMLBsNavigationDrawerItemElement;
2686
3541
  }
3542
+ export interface BsOnboardingChecklistCustomEvent<T> extends CustomEvent<T> {
3543
+ detail: T;
3544
+ target: HTMLBsOnboardingChecklistElement;
3545
+ }
2687
3546
  export interface BsPaginationCustomEvent<T> extends CustomEvent<T> {
2688
3547
  detail: T;
2689
3548
  target: HTMLBsPaginationElement;
2690
3549
  }
3550
+ export interface BsProductTourCustomEvent<T> extends CustomEvent<T> {
3551
+ detail: T;
3552
+ target: HTMLBsProductTourElement;
3553
+ }
3554
+ export interface BsQrCodeCustomEvent<T> extends CustomEvent<T> {
3555
+ detail: T;
3556
+ target: HTMLBsQrCodeElement;
3557
+ }
2691
3558
  export interface BsRadioCustomEvent<T> extends CustomEvent<T> {
2692
3559
  detail: T;
2693
3560
  target: HTMLBsRadioElement;
2694
3561
  }
3562
+ export interface BsSessionTimeoutCustomEvent<T> extends CustomEvent<T> {
3563
+ detail: T;
3564
+ target: HTMLBsSessionTimeoutElement;
3565
+ }
2695
3566
  export interface BsSliderCustomEvent<T> extends CustomEvent<T> {
2696
3567
  detail: T;
2697
3568
  target: HTMLBsSliderElement;
@@ -2724,6 +3595,14 @@ export interface BsToastCustomEvent<T> extends CustomEvent<T> {
2724
3595
  detail: T;
2725
3596
  target: HTMLBsToastElement;
2726
3597
  }
3598
+ export interface BsWhatsNewCustomEvent<T> extends CustomEvent<T> {
3599
+ detail: T;
3600
+ target: HTMLBsWhatsNewElement;
3601
+ }
3602
+ export interface BsWhatsNewEntryCustomEvent<T> extends CustomEvent<T> {
3603
+ detail: T;
3604
+ target: HTMLBsWhatsNewEntryElement;
3605
+ }
2727
3606
  declare global {
2728
3607
  interface HTMLBsAccordionElementEventMap {
2729
3608
  "bsToggle": boolean;
@@ -3053,6 +3932,9 @@ declare global {
3053
3932
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
3054
3933
  * it for actions that actually delete/revoke/undo something.
3055
3934
  * @prop --bs-button-radius - Corner radius. Aliased to `--bs-border-radius-100` by default.
3935
+ * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-300`.
3936
+ * @prop --bs-button-width - Width of the button. `auto` by default (fits its content); set `100%` for a full-width button, e.g. `bs-button { --bs-button-width: 100%; }`.
3937
+ * @prop --bs-button-subtle-color - Label/icon colour, `variant="subtle"`. Aliased to `--bs-color-neutral-default`; set it to `var(--bs-text-action)` for a blue text button.
3056
3938
  * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
3057
3939
  * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
3058
3940
  * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
@@ -3660,6 +4542,52 @@ declare global {
3660
4542
  prototype: HTMLBsComposerStatusBannerElement;
3661
4543
  new (): HTMLBsComposerStatusBannerElement;
3662
4544
  };
4545
+ interface HTMLBsCookieConsentElementEventMap {
4546
+ "bsAccept": { choices: BsCookieChoices };
4547
+ "bsReject": { choices: BsCookieChoices };
4548
+ "bsCustomise": void;
4549
+ "bsSave": { choices: BsCookieChoices };
4550
+ "bsChoice": { id: string; enabled: boolean };
4551
+ "bsClose": void;
4552
+ "bsManage": void;
4553
+ }
4554
+ /**
4555
+ * A cookie consent prompt in four forms, matching the Figma "Cookie consent" component:
4556
+ * - `banner` -- a wide bar: icon, heading, text, policy link, and Customise / Reject optional / Accept
4557
+ * all. Stacks into a column on narrow containers (its own width, not the viewport's).
4558
+ * - `card` -- the compact version of the same question, in a card.
4559
+ * - `preferences` -- the detailed dialog: one row per cookie category with a switch (strictly
4560
+ * necessary is "Always on"), an expandable list of the cookies in each, and Reject optional /
4561
+ * Accept all / Save choices.
4562
+ * - `saved` -- a dark confirmation bar ("Cookie choices saved") with a Change action.
4563
+ * The component only collects the choice. It doesn't set, read or delete cookies, remember that the
4564
+ * user answered, or decide when to show itself: your app does that from the events, and swaps `type`
4565
+ * (e.g. `banner` -> `preferences` on `bsCustomise`, `preferences` -> `saved` on `bsSave`).
4566
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions),
4567
+ * `bs-switch` (the category switches), `bs-chip-informative` (the "Always on" badge), `bs-icon-button`
4568
+ * (the close button), `bs-snackbar` (the saved confirmation).
4569
+ * ## When to use
4570
+ * - Asking for consent to optional cookies or similar tracking, as the law of your market requires.
4571
+ * ## When not to use
4572
+ * - Telling people about necessary cookies only -- that needs no consent prompt.
4573
+ * ## Fair choice
4574
+ * "Reject optional" has the same prominence as "Accept all" (same size, both always visible). Keep it
4575
+ * that way: a prompt that makes refusing harder than accepting isn't valid consent in most places.
4576
+ */
4577
+ interface HTMLBsCookieConsentElement extends Components.BsCookieConsent, HTMLStencilElement {
4578
+ addEventListener<K extends keyof HTMLBsCookieConsentElementEventMap>(type: K, listener: (this: HTMLBsCookieConsentElement, ev: BsCookieConsentCustomEvent<HTMLBsCookieConsentElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
4579
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4580
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4581
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4582
+ removeEventListener<K extends keyof HTMLBsCookieConsentElementEventMap>(type: K, listener: (this: HTMLBsCookieConsentElement, ev: BsCookieConsentCustomEvent<HTMLBsCookieConsentElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
4583
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4584
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4585
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4586
+ }
4587
+ var HTMLBsCookieConsentElement: {
4588
+ prototype: HTMLBsCookieConsentElement;
4589
+ new (): HTMLBsCookieConsentElement;
4590
+ };
3663
4591
  interface HTMLBsDataTableElementEventMap {
3664
4592
  "bsSort": { column: string; direction: 'asc' | 'desc' };
3665
4593
  "bsRowSelect": { id: string | number; selected: boolean };
@@ -3700,6 +4628,7 @@ declare global {
3700
4628
  * ISO timestamps -- so a date can't shift by a day across time zones.
3701
4629
  * The calendar renders inline at a fixed width; to show it as a popover, put it inside a
3702
4630
  * `bs-menu` or your own overlay.
4631
+ * **Built from:** `bs-card` (the surface), `bs-input` (the month/year dropdown triggers and the range date fields), `bs-menu` and `bs-menu-item` (the month/year lists).
3703
4632
  * ## When to use
3704
4633
  * - Picking a date where seeing the surrounding days of the week/month helps (a booking, a
3705
4634
  * deadline, a report window).
@@ -3759,6 +4688,38 @@ declare global {
3759
4688
  prototype: HTMLBsDialogElement;
3760
4689
  new (): HTMLBsDialogElement;
3761
4690
  };
4691
+ interface HTMLBsErrorPageElementEventMap {
4692
+ "bsPrimary": void;
4693
+ "bsSecondary": void;
4694
+ }
4695
+ /**
4696
+ * A full-block page for when the user can't get to what they asked for: page not found (404), a server
4697
+ * error (500), no access (403), planned maintenance, or no internet connection. Matches the Figma
4698
+ * "Error page" component's five states.
4699
+ * Each `type` brings its own icon, tint, code label ("404", "Maintenance", ...), heading, paragraph and
4700
+ * buttons, all overridable by props. The component doesn't navigate or retry anything: it emits
4701
+ * `bsPrimary` / `bsSecondary` and your app decides what "Go to Overview" or "Try again" does.
4702
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions).
4703
+ * ## When to use
4704
+ * - Replacing the content of a page or panel that can't be shown, with a clear way forward.
4705
+ * ## When not to use
4706
+ * - A problem with one field or one action -- use inline validation or a `bs-snackbar`.
4707
+ * - A blocking question the user must answer -- use `bs-dialog`.
4708
+ */
4709
+ interface HTMLBsErrorPageElement extends Components.BsErrorPage, HTMLStencilElement {
4710
+ addEventListener<K extends keyof HTMLBsErrorPageElementEventMap>(type: K, listener: (this: HTMLBsErrorPageElement, ev: BsErrorPageCustomEvent<HTMLBsErrorPageElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
4711
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4712
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4713
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4714
+ removeEventListener<K extends keyof HTMLBsErrorPageElementEventMap>(type: K, listener: (this: HTMLBsErrorPageElement, ev: BsErrorPageCustomEvent<HTMLBsErrorPageElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
4715
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4716
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4717
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4718
+ }
4719
+ var HTMLBsErrorPageElement: {
4720
+ prototype: HTMLBsErrorPageElement;
4721
+ new (): HTMLBsErrorPageElement;
4722
+ };
3762
4723
  interface HTMLBsFileUploadElementEventMap {
3763
4724
  "bsFilesSelect": File[];
3764
4725
  "bsFilesReject": File[];
@@ -3841,6 +4802,26 @@ declare global {
3841
4802
  prototype: HTMLBsIconButtonElement;
3842
4803
  new (): HTMLBsIconButtonElement;
3843
4804
  };
4805
+ /**
4806
+ * A small rounded square holding an icon, tinted by intent -- the visual marker next to a status,
4807
+ * a list item or a feature. Matches the Figma "Icon tile" component (3 sizes x 6 intents).
4808
+ * Each intent shows a default glyph (house, check, warning, cross, grid, info); put your own icon in
4809
+ * the default slot to replace it. A slotted icon is sized to the tile (12/16/24px) and coloured
4810
+ * with the intent's icon colour, as long as it draws with `currentColor`.
4811
+ * The tile is decorative by default (hidden from assistive tech). Don't rely on the colour or glyph
4812
+ * alone to convey status: slot text into `text` (it sits beside the square, in
4813
+ * `--bs-icon-tile-text-color`), or set `label` to give the tile its own accessible name.
4814
+ * ## When to use
4815
+ * - Marking a row, card or message with a status or category icon.
4816
+ * ## When not to use
4817
+ * - As a button -- it isn't interactive. Use `bs-icon-button`.
4818
+ */
4819
+ interface HTMLBsIconTileElement extends Components.BsIconTile, HTMLStencilElement {
4820
+ }
4821
+ var HTMLBsIconTileElement: {
4822
+ prototype: HTMLBsIconTileElement;
4823
+ new (): HTMLBsIconTileElement;
4824
+ };
3844
4825
  interface HTMLBsInlineTabElementEventMap {
3845
4826
  "bsSelect": void;
3846
4827
  }
@@ -4139,6 +5120,52 @@ declare global {
4139
5120
  prototype: HTMLBsNavigationHeaderElement;
4140
5121
  new (): HTMLBsNavigationHeaderElement;
4141
5122
  };
5123
+ interface HTMLBsOnboardingChecklistElementEventMap {
5124
+ "bsStepAction": { id: string };
5125
+ "bsStepSkip": { id: string };
5126
+ "bsClose": void;
5127
+ "bsOpen": void;
5128
+ "bsDone": void;
5129
+ "bsHide": void;
5130
+ }
5131
+ /**
5132
+ * A "get set up" checklist, in four forms that matching the Figma "Onboarding checklist" component:
5133
+ * - `panel` -- the full list: heading, progress, every step with a status icon, and the current step
5134
+ * expanded with its description, time estimate, Skip for now and a primary action.
5135
+ * - `dashboard` -- a wide card for the top of a page: summary and progress on the left, the current step
5136
+ * and the next ones as small cards on the right, and a "See all steps" link.
5137
+ * - `launcher` -- a small always-visible chip that reopens the checklist; three layouts (`icon`, `ring`,
5138
+ * `inline`).
5139
+ * - `completion` -- the "You're all set" card once every step is done.
5140
+ * The component shows progress and reports what the user pressed. It doesn't know what a step means,
5141
+ * run it, or remember anything: your app owns the steps (`steps`, each with `done`), marks them done, and
5142
+ * decides which form to show.
5143
+ * **Built from:** `bs-card` (every surface), `bs-icon-tile` (the icons), `bs-button` (the actions),
5144
+ * `bs-icon-button` (the close button), `bs-progress-linear` (the progress bar), `bs-progress` (the launcher
5145
+ * ring).
5146
+ * ## When to use
5147
+ * - Guiding a new account or user through a short list of setup tasks they can do in any order or later.
5148
+ * ## When not to use
5149
+ * - A strict, linear flow where each step needs the one before -- use `bs-stepper`.
5150
+ * - A tour of the interface itself -- use `bs-product-tour`.
5151
+ * ## Accessibility
5152
+ * Steps are an ordered list; the current one has `aria-current="step"`, and each step carries a visually
5153
+ * hidden "Done" / "Not done". The progress bar is named with the progress text.
5154
+ */
5155
+ interface HTMLBsOnboardingChecklistElement extends Components.BsOnboardingChecklist, HTMLStencilElement {
5156
+ addEventListener<K extends keyof HTMLBsOnboardingChecklistElementEventMap>(type: K, listener: (this: HTMLBsOnboardingChecklistElement, ev: BsOnboardingChecklistCustomEvent<HTMLBsOnboardingChecklistElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
5157
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5158
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5159
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5160
+ removeEventListener<K extends keyof HTMLBsOnboardingChecklistElementEventMap>(type: K, listener: (this: HTMLBsOnboardingChecklistElement, ev: BsOnboardingChecklistCustomEvent<HTMLBsOnboardingChecklistElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
5161
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5162
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5163
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5164
+ }
5165
+ var HTMLBsOnboardingChecklistElement: {
5166
+ prototype: HTMLBsOnboardingChecklistElement;
5167
+ new (): HTMLBsOnboardingChecklistElement;
5168
+ };
4142
5169
  interface HTMLBsPaginationElementEventMap {
4143
5170
  "bsPageChange": number;
4144
5171
  }
@@ -4171,6 +5198,42 @@ declare global {
4171
5198
  prototype: HTMLBsPaginationElement;
4172
5199
  new (): HTMLBsPaginationElement;
4173
5200
  };
5201
+ interface HTMLBsProductTourElementEventMap {
5202
+ "bsPrimary": void;
5203
+ "bsSecondary": void;
5204
+ "bsClose": void;
5205
+ }
5206
+ /**
5207
+ * One step of a product tour: a centred **welcome** or **success** card with an art tile, or a
5208
+ * **pointer** card -- a compact step with a close button, a "1 of 3" progress label and Back/Next
5209
+ * actions -- whose arrow points at the thing it describes. Matches the Figma "Product Tour" and
5210
+ * "Pointer" components.
5211
+ * This is the step *card* only. It doesn't run a tour: it has no overlay, no spotlight, no
5212
+ * positioning against a target and no step sequencing. Your code decides which step is showing,
5213
+ * places the card next to its target (the arrow can sit on any of 12 positions via `direction`),
5214
+ * and moves on from `bsPrimary`/`bsSecondary`.
5215
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the art tile), `bs-button` (the actions), `bs-icon-button` (the close button).
5216
+ * ## When to use
5217
+ * - Introducing a feature on first run (`welcome`), confirming a finished tour (`success`), or
5218
+ * walking through the UI one pointer at a time (`pointer`).
5219
+ * ## When not to use
5220
+ * - A blocking decision or form -- use `bs-dialog`.
5221
+ * - A hint on hover or focus -- use `bs-tooltip`.
5222
+ */
5223
+ interface HTMLBsProductTourElement extends Components.BsProductTour, HTMLStencilElement {
5224
+ addEventListener<K extends keyof HTMLBsProductTourElementEventMap>(type: K, listener: (this: HTMLBsProductTourElement, ev: BsProductTourCustomEvent<HTMLBsProductTourElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
5225
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5226
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5227
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5228
+ removeEventListener<K extends keyof HTMLBsProductTourElementEventMap>(type: K, listener: (this: HTMLBsProductTourElement, ev: BsProductTourCustomEvent<HTMLBsProductTourElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
5229
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5230
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5231
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5232
+ }
5233
+ var HTMLBsProductTourElement: {
5234
+ prototype: HTMLBsProductTourElement;
5235
+ new (): HTMLBsProductTourElement;
5236
+ };
4174
5237
  /**
4175
5238
  * A circular progress indicator -- either a static ring showing a percentage sweep
4176
5239
  * (`type="determinate"`) or a continuously spinning ring signaling in-progress work with no known
@@ -4210,6 +5273,48 @@ declare global {
4210
5273
  prototype: HTMLBsProgressLinearElement;
4211
5274
  new (): HTMLBsProgressLinearElement;
4212
5275
  };
5276
+ interface HTMLBsQrCodeElementEventMap {
5277
+ "bsDownload": void;
5278
+ "bsCopy": { url?: string };
5279
+ "bsRetry": void;
5280
+ "bsRefresh": void;
5281
+ "bsClose": void;
5282
+ }
5283
+ /**
5284
+ * A block for sharing a link or taking a payment by QR code: a heading, the code on a white quiet
5285
+ * zone, the URL (or the amount, for payments) as text, an optional expiry chip, and Download and
5286
+ * Copy link actions. Matches the Figma "QR code" component (3 sizes x 2 types x 5 states, plus the
5287
+ * "with logo" variant).
5288
+ * **This component draws a code, it doesn't encode one.** Generate the real code in your product
5289
+ * with a QR library and hand it over either as a `matrix` (a square `boolean[][]`, `true` = dark
5290
+ * module) or as your own element in the `code` slot (an `<img>`, `<svg>` or `<canvas>`).
5291
+ * The code always sits on a white quiet zone with black modules, in dark mode too -- scanners need
5292
+ * the contrast.
5293
+ * **Built from:** `bs-card` (the surface), `bs-button` (Download, Copy link, Retry, Refresh), `bs-progress` (the loading spinner), `bs-chip-informative` (the expiry chip), `bs-icon-button` (the close button).
5294
+ * ## When to use
5295
+ * - Sharing a link to an order, document or page that someone will open on a phone.
5296
+ * - Taking a payment with an amount (`type="payment"`).
5297
+ * ## When not to use
5298
+ * - Encoding long text blobs -- a QR code that dense is hard to scan at the sizes here.
5299
+ * ## States
5300
+ * `loading` (generating the code), `error` (couldn't generate it; Retry), `expired` (Refresh) and
5301
+ * `scanned` (done: "Scanned", or "Payment received" for payments). Download and Copy link are disabled
5302
+ * in every state but `default`, and hidden once `scanned`.
5303
+ */
5304
+ interface HTMLBsQrCodeElement extends Components.BsQrCode, HTMLStencilElement {
5305
+ addEventListener<K extends keyof HTMLBsQrCodeElementEventMap>(type: K, listener: (this: HTMLBsQrCodeElement, ev: BsQrCodeCustomEvent<HTMLBsQrCodeElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
5306
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5307
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5308
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5309
+ removeEventListener<K extends keyof HTMLBsQrCodeElementEventMap>(type: K, listener: (this: HTMLBsQrCodeElement, ev: BsQrCodeCustomEvent<HTMLBsQrCodeElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
5310
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5311
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5312
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5313
+ }
5314
+ var HTMLBsQrCodeElement: {
5315
+ prototype: HTMLBsQrCodeElement;
5316
+ new (): HTMLBsQrCodeElement;
5317
+ };
4213
5318
  interface HTMLBsRadioElementEventMap {
4214
5319
  "bsChange": string;
4215
5320
  }
@@ -4237,6 +5342,53 @@ declare global {
4237
5342
  prototype: HTMLBsRadioElement;
4238
5343
  new (): HTMLBsRadioElement;
4239
5344
  };
5345
+ interface HTMLBsSessionTimeoutElementEventMap {
5346
+ "bsPrimary": { password?: string } | void;
5347
+ "bsSecondary": void;
5348
+ "bsAlternative": { id: string };
5349
+ "bsCancel": void;
5350
+ "bsExpire": void;
5351
+ }
5352
+ /**
5353
+ * The three moments around an expiring session, as one card. Matches the Figma "Session timeout"
5354
+ * component's three types:
5355
+ * - `warning` -- "You'll be signed out soon": a live countdown with a draining bar, an optional
5356
+ * "your work is saved" note, and Sign out now / Stay signed in.
5357
+ * - `signed-out` -- "You've been signed out": who was signed in, with Sign in again and Use a different
5358
+ * account.
5359
+ * - `confirm-identity` -- "Confirm it's you": a fresh password check before a sensitive action, with
5360
+ * passkey / BankID alternatives and Cancel.
5361
+ * The component never signs anyone in or out. It shows the state and emits `bsPrimary`, `bsSecondary`,
5362
+ * `bsAlternative`, `bsCancel` and `bsExpire`; your app talks to the identity provider.
5363
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions),
5364
+ * `bs-progress-linear` (the countdown bar), `bs-avatar` (the signed-in account), `bs-input` (the
5365
+ * password field).
5366
+ * ## When to use
5367
+ * - Warning someone, before it happens, that an inactivity timeout is about to end their session.
5368
+ * - Telling someone their session ended, and letting them pick up where they left off.
5369
+ * - Asking for a fresh credential before a sensitive action.
5370
+ * ## When not to use
5371
+ * - A first-time sign-in page -- this assumes there was a session.
5372
+ * - Anything that is not about the session or the user's identity -- use `bs-dialog`.
5373
+ * ## Accessibility
5374
+ * The card is a labelled region. The countdown is a `timer` and is *not* announced every second; a polite
5375
+ * live region announces the time left at 60, 30 and 10 seconds instead. Wrap the card in your own modal
5376
+ * (`bs-dialog`) if the warning must trap focus.
5377
+ */
5378
+ interface HTMLBsSessionTimeoutElement extends Components.BsSessionTimeout, HTMLStencilElement {
5379
+ addEventListener<K extends keyof HTMLBsSessionTimeoutElementEventMap>(type: K, listener: (this: HTMLBsSessionTimeoutElement, ev: BsSessionTimeoutCustomEvent<HTMLBsSessionTimeoutElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
5380
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5381
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5382
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5383
+ removeEventListener<K extends keyof HTMLBsSessionTimeoutElementEventMap>(type: K, listener: (this: HTMLBsSessionTimeoutElement, ev: BsSessionTimeoutCustomEvent<HTMLBsSessionTimeoutElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
5384
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5385
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5386
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5387
+ }
5388
+ var HTMLBsSessionTimeoutElement: {
5389
+ prototype: HTMLBsSessionTimeoutElement;
5390
+ new (): HTMLBsSessionTimeoutElement;
5391
+ };
4240
5392
  interface HTMLBsSliderElementEventMap {
4241
5393
  "bsChange": number;
4242
5394
  "bsRangeChange": { start: number; end: number };
@@ -4509,6 +5661,7 @@ declare global {
4509
5661
  * `value` is always 24-hour `HH:mm` (e.g. `"14:30"`), regardless of the displayed `format`.
4510
5662
  * The picker renders inline at a fixed width; to show it as a popover, put it in your own overlay
4511
5663
  * and close that overlay from `bsChange`/`bsCancel`.
5664
+ * **Built from:** `bs-card` (the surface), `bs-switch` (the 24h toggle), `bs-input` (the AM/PM dropdown), `bs-button` (Cancel/Confirm).
4512
5665
  * ## When to use
4513
5666
  * - Picking a time of day where the user steps through hours and minutes.
4514
5667
  * ## When not to use
@@ -4589,6 +5742,75 @@ declare global {
4589
5742
  prototype: HTMLBsTooltipElement;
4590
5743
  new (): HTMLBsTooltipElement;
4591
5744
  };
5745
+ interface HTMLBsWhatsNewElementEventMap {
5746
+ "bsMarkAllRead": void;
5747
+ "bsEntryAction": { id: string };
5748
+ "bsFilterChange": { value: string };
5749
+ "bsClose": void;
5750
+ "bsPrimary": void;
5751
+ "bsSecondary": void;
5752
+ "bsOpen": void;
5753
+ }
5754
+ /**
5755
+ * A product's "What's new" surface, in three forms matching the Figma component:
5756
+ * - `feed` -- a docked panel: heading, "Mark all as read", filter tabs, the list of updates (each a
5757
+ * `bs-whats-new-entry`) and a link to the full release notes.
5758
+ * - `announcement` -- one big update, with a hero image, a tag, a heading, a few bullet points, "1 of 3"
5759
+ * and Remind me later / Next.
5760
+ * - `teaser` -- a small card pointing at the feed: tag, date, heading, a line of text and "Open What's new".
5761
+ * The component only shows what you give it and reports what the user pressed. It doesn't fetch updates,
5762
+ * track which the user has seen, or decide when to appear: your app owns `entries` (with their `unread`
5763
+ * flags) and reacts to the events.
5764
+ * **Built from:** `bs-card` (the surface), `bs-whats-new-entry` (each update), `bs-tabs` (the filters),
5765
+ * `bs-chip-informative` (the tags), `bs-button`, `bs-icon-button`.
5766
+ * ## When to use
5767
+ * - Telling users about changes to the product, in a place they can come back to.
5768
+ * ## When not to use
5769
+ * - Messages about the user's own data or an action they just took -- use `bs-snackbar`, `bs-toast`.
5770
+ * - A guided walk through the interface -- use `bs-product-tour`.
5771
+ */
5772
+ interface HTMLBsWhatsNewElement extends Components.BsWhatsNew, HTMLStencilElement {
5773
+ addEventListener<K extends keyof HTMLBsWhatsNewElementEventMap>(type: K, listener: (this: HTMLBsWhatsNewElement, ev: BsWhatsNewCustomEvent<HTMLBsWhatsNewElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
5774
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5775
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5776
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5777
+ removeEventListener<K extends keyof HTMLBsWhatsNewElementEventMap>(type: K, listener: (this: HTMLBsWhatsNewElement, ev: BsWhatsNewCustomEvent<HTMLBsWhatsNewElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
5778
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5779
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5780
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5781
+ }
5782
+ var HTMLBsWhatsNewElement: {
5783
+ prototype: HTMLBsWhatsNewElement;
5784
+ new (): HTMLBsWhatsNewElement;
5785
+ };
5786
+ interface HTMLBsWhatsNewEntryElementEventMap {
5787
+ "bsAction": void;
5788
+ }
5789
+ /**
5790
+ * One update in a "What's new" list: a tag ("New feature", "Improvement", "Fix"), a date, an unread dot,
5791
+ * an optional image, a title, a short description and an optional action link ("Try it"). Matches the Figma
5792
+ * "What's new / Entry" component. It is a plain block of content -- no card -- so it can sit in a feed
5793
+ * (`bs-whats-new`), a list, or a page of release notes.
5794
+ * **Built from:** `bs-chip-informative` (the tag) and `bs-button` (the action).
5795
+ * ## When to use
5796
+ * - Announcing a change to the product, with enough detail to know whether it matters.
5797
+ * ## When not to use
5798
+ * - A message about the user's own data or an action they just took -- use `bs-snackbar` or `bs-toast`.
5799
+ */
5800
+ interface HTMLBsWhatsNewEntryElement extends Components.BsWhatsNewEntry, HTMLStencilElement {
5801
+ addEventListener<K extends keyof HTMLBsWhatsNewEntryElementEventMap>(type: K, listener: (this: HTMLBsWhatsNewEntryElement, ev: BsWhatsNewEntryCustomEvent<HTMLBsWhatsNewEntryElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
5802
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5803
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5804
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5805
+ removeEventListener<K extends keyof HTMLBsWhatsNewEntryElementEventMap>(type: K, listener: (this: HTMLBsWhatsNewEntryElement, ev: BsWhatsNewEntryCustomEvent<HTMLBsWhatsNewEntryElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
5806
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5807
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5808
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5809
+ }
5810
+ var HTMLBsWhatsNewEntryElement: {
5811
+ prototype: HTMLBsWhatsNewEntryElement;
5812
+ new (): HTMLBsWhatsNewEntryElement;
5813
+ };
4592
5814
  interface HTMLElementTagNameMap {
4593
5815
  "bs-accordion": HTMLBsAccordionElement;
4594
5816
  "bs-ai-disclaimer": HTMLBsAiDisclaimerElement;
@@ -4617,12 +5839,15 @@ declare global {
4617
5839
  "bs-chip-input": HTMLBsChipInputElement;
4618
5840
  "bs-composer": HTMLBsComposerElement;
4619
5841
  "bs-composer-status-banner": HTMLBsComposerStatusBannerElement;
5842
+ "bs-cookie-consent": HTMLBsCookieConsentElement;
4620
5843
  "bs-data-table": HTMLBsDataTableElement;
4621
5844
  "bs-datepicker": HTMLBsDatepickerElement;
4622
5845
  "bs-dialog": HTMLBsDialogElement;
5846
+ "bs-error-page": HTMLBsErrorPageElement;
4623
5847
  "bs-file-upload": HTMLBsFileUploadElement;
4624
5848
  "bs-file-upload-item": HTMLBsFileUploadItemElement;
4625
5849
  "bs-icon-button": HTMLBsIconButtonElement;
5850
+ "bs-icon-tile": HTMLBsIconTileElement;
4626
5851
  "bs-inline-tab": HTMLBsInlineTabElement;
4627
5852
  "bs-input": HTMLBsInputElement;
4628
5853
  "bs-logo": HTMLBsLogoElement;
@@ -4631,10 +5856,14 @@ declare global {
4631
5856
  "bs-navigation-drawer": HTMLBsNavigationDrawerElement;
4632
5857
  "bs-navigation-drawer-item": HTMLBsNavigationDrawerItemElement;
4633
5858
  "bs-navigation-header": HTMLBsNavigationHeaderElement;
5859
+ "bs-onboarding-checklist": HTMLBsOnboardingChecklistElement;
4634
5860
  "bs-pagination": HTMLBsPaginationElement;
5861
+ "bs-product-tour": HTMLBsProductTourElement;
4635
5862
  "bs-progress": HTMLBsProgressElement;
4636
5863
  "bs-progress-linear": HTMLBsProgressLinearElement;
5864
+ "bs-qr-code": HTMLBsQrCodeElement;
4637
5865
  "bs-radio": HTMLBsRadioElement;
5866
+ "bs-session-timeout": HTMLBsSessionTimeoutElement;
4638
5867
  "bs-slider": HTMLBsSliderElement;
4639
5868
  "bs-snackbar": HTMLBsSnackbarElement;
4640
5869
  "bs-source-link": HTMLBsSourceLinkElement;
@@ -4646,6 +5875,8 @@ declare global {
4646
5875
  "bs-timepicker": HTMLBsTimepickerElement;
4647
5876
  "bs-toast": HTMLBsToastElement;
4648
5877
  "bs-tooltip": HTMLBsTooltipElement;
5878
+ "bs-whats-new": HTMLBsWhatsNewElement;
5879
+ "bs-whats-new-entry": HTMLBsWhatsNewEntryElement;
4649
5880
  }
4650
5881
  }
4651
5882
  declare namespace LocalJSX {
@@ -5057,6 +6288,9 @@ declare namespace LocalJSX {
5057
6288
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
5058
6289
  * it for actions that actually delete/revoke/undo something.
5059
6290
  * @prop --bs-button-radius - Corner radius. Aliased to `--bs-border-radius-100` by default.
6291
+ * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-300`.
6292
+ * @prop --bs-button-width - Width of the button. `auto` by default (fits its content); set `100%` for a full-width button, e.g. `bs-button { --bs-button-width: 100%; }`.
6293
+ * @prop --bs-button-subtle-color - Label/icon colour, `variant="subtle"`. Aliased to `--bs-color-neutral-default`; set it to `var(--bs-text-action)` for a blue text button.
5060
6294
  * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
5061
6295
  * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
5062
6296
  * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
@@ -5861,43 +7095,168 @@ declare namespace LocalJSX {
5861
7095
  */
5862
7096
  interface BsComposerStatusBanner {
5863
7097
  /**
5864
- * Label for the action button, only rendered when `showButton` is true.
5865
- * @default 'Continue'
7098
+ * Label for the action button, only rendered when `showButton` is true.
7099
+ * @default 'Continue'
7100
+ */
7101
+ "actionLabel"?: string;
7102
+ /**
7103
+ * Whether the close button is rendered.
7104
+ * @default true
7105
+ */
7106
+ "allowClose"?: boolean;
7107
+ /**
7108
+ * The message text.
7109
+ * @default 'This is a message'
7110
+ */
7111
+ "message"?: string;
7112
+ /**
7113
+ * Fires when the action button is clicked. Only relevant when `showButton` is true.
7114
+ */
7115
+ "onBsAction"?: (event: BsComposerStatusBannerCustomEvent<void>) => void;
7116
+ /**
7117
+ * Fires when the close button is clicked. Only relevant when `allowClose` is true.
7118
+ */
7119
+ "onBsClose"?: (event: BsComposerStatusBannerCustomEvent<void>) => void;
7120
+ /**
7121
+ * Whether the "Continue"-style action button is rendered.
7122
+ * @default false
7123
+ */
7124
+ "showButton"?: boolean;
7125
+ /**
7126
+ * Whether the leading icon (default: clock) is rendered.
7127
+ * @default true
7128
+ */
7129
+ "showIcon"?: boolean;
7130
+ /**
7131
+ * Which severity/style to render. Drives background, text/icon color, and the action button's color.
7132
+ * @default 'error'
7133
+ */
7134
+ "type"?: BsComposerStatusBannerType;
7135
+ }
7136
+ /**
7137
+ * A cookie consent prompt in four forms, matching the Figma "Cookie consent" component:
7138
+ * - `banner` -- a wide bar: icon, heading, text, policy link, and Customise / Reject optional / Accept
7139
+ * all. Stacks into a column on narrow containers (its own width, not the viewport's).
7140
+ * - `card` -- the compact version of the same question, in a card.
7141
+ * - `preferences` -- the detailed dialog: one row per cookie category with a switch (strictly
7142
+ * necessary is "Always on"), an expandable list of the cookies in each, and Reject optional /
7143
+ * Accept all / Save choices.
7144
+ * - `saved` -- a dark confirmation bar ("Cookie choices saved") with a Change action.
7145
+ * The component only collects the choice. It doesn't set, read or delete cookies, remember that the
7146
+ * user answered, or decide when to show itself: your app does that from the events, and swaps `type`
7147
+ * (e.g. `banner` -> `preferences` on `bsCustomise`, `preferences` -> `saved` on `bsSave`).
7148
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions),
7149
+ * `bs-switch` (the category switches), `bs-chip-informative` (the "Always on" badge), `bs-icon-button`
7150
+ * (the close button), `bs-snackbar` (the saved confirmation).
7151
+ * ## When to use
7152
+ * - Asking for consent to optional cookies or similar tracking, as the law of your market requires.
7153
+ * ## When not to use
7154
+ * - Telling people about necessary cookies only -- that needs no consent prompt.
7155
+ * ## Fair choice
7156
+ * "Reject optional" has the same prominence as "Accept all" (same size, both always visible). Keep it
7157
+ * that way: a prompt that makes refusing harder than accepting isn't valid consent in most places.
7158
+ */
7159
+ interface BsCookieConsent {
7160
+ /**
7161
+ * Label of the Accept all button.
7162
+ * @default 'Accept all'
7163
+ */
7164
+ "acceptLabel"?: string;
7165
+ /**
7166
+ * Text of the badge on required categories (`preferences`).
7167
+ * @default 'Always on'
7168
+ */
7169
+ "alwaysOnLabel"?: string;
7170
+ /**
7171
+ * The categories in the preferences dialog (`preferences`): `[{ id, label, description?, required?, enabled?, cookies? }]`. Defaults to Strictly necessary, Preferences, Analytics and Marketing. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
7172
+ * @default [ { id: 'necessary', label: 'Strictly necessary', description: 'Needed for sign-in, security and to keep the service running. These cannot be turned off.', required: true, cookies: [ 'Session cookie — keeps you signed in as you move between pages.', 'Security cookie — helps prevent fraud and unauthorized access.', 'Consent cookie — remembers your cookie consent choices.', ], }, { id: 'preferences', label: 'Preferences', description: 'Remember your language, theme and table layouts on this device.', enabled: true }, { id: 'analytics', label: 'Analytics', description: 'Help us understand which features are used so we can improve them. Data is anonymised.' }, { id: 'marketing', label: 'Marketing', description: 'Show relevant products on other websites.' }, ]
7173
+ */
7174
+ "categories"?: BsCookieCategory[];
7175
+ /**
7176
+ * Label of the action on the confirmation (`saved`).
7177
+ * @default 'Change'
7178
+ */
7179
+ "changeLabel"?: string;
7180
+ /**
7181
+ * Accessible name of the close button (`preferences`).
7182
+ * @default 'Close'
7183
+ */
7184
+ "closeLabel"?: string;
7185
+ /**
7186
+ * Label of the Customise button.
7187
+ * @default 'Customise'
5866
7188
  */
5867
- "actionLabel"?: string;
7189
+ "customiseLabel"?: string;
5868
7190
  /**
5869
- * Whether the close button is rendered.
5870
- * @default true
7191
+ * Paragraph under the heading (the message, for `saved`). Defaults per `type`.
5871
7192
  */
5872
- "allowClose"?: boolean;
7193
+ "description"?: string;
5873
7194
  /**
5874
- * The message text.
5875
- * @default 'This is a message'
7195
+ * Heading. Defaults per `type`.
5876
7196
  */
5877
- "message"?: string;
7197
+ "heading"?: string;
5878
7198
  /**
5879
- * Fires when the action button is clicked. Only relevant when `showButton` is true.
7199
+ * HTML heading level, 1-6.
7200
+ * @default 2
5880
7201
  */
5881
- "onBsAction"?: (event: BsComposerStatusBannerCustomEvent<void>) => void;
7202
+ "headingLevel"?: number;
5882
7203
  /**
5883
- * Fires when the close button is clicked. Only relevant when `allowClose` is true.
7204
+ * Fires when Accept all is pressed. `{ choices }` has every category on.
5884
7205
  */
5885
- "onBsClose"?: (event: BsComposerStatusBannerCustomEvent<void>) => void;
7206
+ "onBsAccept"?: (event: BsCookieConsentCustomEvent<{ choices: BsCookieChoices }>) => void;
5886
7207
  /**
5887
- * Whether the "Continue"-style action button is rendered.
5888
- * @default false
7208
+ * Fires when a category switch is toggled (`preferences`).
5889
7209
  */
5890
- "showButton"?: boolean;
7210
+ "onBsChoice"?: (event: BsCookieConsentCustomEvent<{ id: string; enabled: boolean }>) => void;
5891
7211
  /**
5892
- * Whether the leading icon (default: clock) is rendered.
5893
- * @default true
7212
+ * Fires when the close button is pressed (`preferences`).
5894
7213
  */
5895
- "showIcon"?: boolean;
7214
+ "onBsClose"?: (event: BsCookieConsentCustomEvent<void>) => void;
5896
7215
  /**
5897
- * Which severity/style to render. Drives background, text/icon color, and the action button's color.
5898
- * @default 'error'
7216
+ * Fires when Customise is pressed -- show the `preferences` form.
5899
7217
  */
5900
- "type"?: BsComposerStatusBannerType;
7218
+ "onBsCustomise"?: (event: BsCookieConsentCustomEvent<void>) => void;
7219
+ /**
7220
+ * Fires when the action on the confirmation is pressed (`saved`) -- reopen the preferences.
7221
+ */
7222
+ "onBsManage"?: (event: BsCookieConsentCustomEvent<void>) => void;
7223
+ /**
7224
+ * Fires when Reject optional is pressed. `{ choices }` has only the required categories on.
7225
+ */
7226
+ "onBsReject"?: (event: BsCookieConsentCustomEvent<{ choices: BsCookieChoices }>) => void;
7227
+ /**
7228
+ * Fires when Save choices is pressed (`preferences`), with the current switches.
7229
+ */
7230
+ "onBsSave"?: (event: BsCookieConsentCustomEvent<{ choices: BsCookieChoices }>) => void;
7231
+ /**
7232
+ * Text of the policy link.
7233
+ * @default 'Read the cookie policy'
7234
+ */
7235
+ "policyLabel"?: string;
7236
+ /**
7237
+ * URL of your cookie policy. The "Read the cookie policy" link is only shown when this is set.
7238
+ */
7239
+ "policyUrl"?: string;
7240
+ /**
7241
+ * Label of the Reject optional button.
7242
+ * @default 'Reject optional'
7243
+ */
7244
+ "rejectLabel"?: string;
7245
+ /**
7246
+ * Label of the Save choices button (`preferences`).
7247
+ * @default 'Save choices'
7248
+ */
7249
+ "saveLabel"?: string;
7250
+ /**
7251
+ * Label of a category's disclosure; `{count}` is replaced by the number of cookies.
7252
+ * @default 'See {count} cookies'
7253
+ */
7254
+ "seeCookiesLabel"?: string;
7255
+ /**
7256
+ * Which form: `banner`, `card`, `preferences` or `saved`.
7257
+ * @default 'banner'
7258
+ */
7259
+ "type"?: BsCookieConsentType;
5901
7260
  }
5902
7261
  /**
5903
7262
  * A sortable, optionally row-selectable table for tabular data.
@@ -5945,6 +7304,7 @@ declare namespace LocalJSX {
5945
7304
  * ISO timestamps -- so a date can't shift by a day across time zones.
5946
7305
  * The calendar renders inline at a fixed width; to show it as a popover, put it inside a
5947
7306
  * `bs-menu` or your own overlay.
7307
+ * **Built from:** `bs-card` (the surface), `bs-input` (the month/year dropdown triggers and the range date fields), `bs-menu` and `bs-menu-item` (the month/year lists).
5948
7308
  * ## When to use
5949
7309
  * - Picking a date where seeing the surrounding days of the week/month helps (a booking, a
5950
7310
  * deadline, a report window).
@@ -6077,6 +7437,64 @@ declare namespace LocalJSX {
6077
7437
  */
6078
7438
  "size"?: BsDialogSize;
6079
7439
  }
7440
+ /**
7441
+ * A full-block page for when the user can't get to what they asked for: page not found (404), a server
7442
+ * error (500), no access (403), planned maintenance, or no internet connection. Matches the Figma
7443
+ * "Error page" component's five states.
7444
+ * Each `type` brings its own icon, tint, code label ("404", "Maintenance", ...), heading, paragraph and
7445
+ * buttons, all overridable by props. The component doesn't navigate or retry anything: it emits
7446
+ * `bsPrimary` / `bsSecondary` and your app decides what "Go to Overview" or "Try again" does.
7447
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions).
7448
+ * ## When to use
7449
+ * - Replacing the content of a page or panel that can't be shown, with a clear way forward.
7450
+ * ## When not to use
7451
+ * - A problem with one field or one action -- use inline validation or a `bs-snackbar`.
7452
+ * - A blocking question the user must answer -- use `bs-dialog`.
7453
+ */
7454
+ interface BsErrorPage {
7455
+ /**
7456
+ * The small label under the icon, e.g. "404". Defaults per `type` ("404", "500", "403", "Maintenance", "Offline"). Set it to an empty string to hide it.
7457
+ */
7458
+ "code"?: string;
7459
+ /**
7460
+ * Paragraph under the heading. Defaults per `type`.
7461
+ */
7462
+ "description"?: string;
7463
+ /**
7464
+ * Heading. Defaults per `type`.
7465
+ */
7466
+ "heading"?: string;
7467
+ /**
7468
+ * HTML heading level for the heading, 1-6. Use 1 when this replaces the whole page; lower when it sits inside a section that already has a heading above it.
7469
+ * @default 1
7470
+ */
7471
+ "headingLevel"?: number;
7472
+ /**
7473
+ * Fires when the primary button is pressed.
7474
+ */
7475
+ "onBsPrimary"?: (event: BsErrorPageCustomEvent<void>) => void;
7476
+ /**
7477
+ * Fires when the secondary button is pressed.
7478
+ */
7479
+ "onBsSecondary"?: (event: BsErrorPageCustomEvent<void>) => void;
7480
+ /**
7481
+ * Label of the primary button. Defaults per `type`. Set it to an empty string to hide it.
7482
+ */
7483
+ "primaryLabel"?: string;
7484
+ /**
7485
+ * A small reference line under the buttons, e.g. `"Error ID: 7f3c-21a9 · 30.09.2026 10:42"`, for support to look up. Nothing is shown when empty.
7486
+ */
7487
+ "reference"?: string;
7488
+ /**
7489
+ * Label of the secondary button. Defaults per `type` (only `not-found`, `server-error` and `no-access` have one). Set it to an empty string to hide it.
7490
+ */
7491
+ "secondaryLabel"?: string;
7492
+ /**
7493
+ * Which error: `not-found` (404), `server-error` (500), `no-access` (403), `maintenance` or `offline`.
7494
+ * @default 'not-found'
7495
+ */
7496
+ "type"?: BsErrorPageType;
7497
+ }
6080
7498
  /**
6081
7499
  * A file dropzone: drag files onto it, or press "Browse file" to open the file picker. It reports
6082
7500
  * the chosen files and does nothing else -- the consuming app owns the upload itself and shows its
@@ -6251,6 +7669,36 @@ declare namespace LocalJSX {
6251
7669
  */
6252
7670
  "variant"?: BsIconButtonVariant;
6253
7671
  }
7672
+ /**
7673
+ * A small rounded square holding an icon, tinted by intent -- the visual marker next to a status,
7674
+ * a list item or a feature. Matches the Figma "Icon tile" component (3 sizes x 6 intents).
7675
+ * Each intent shows a default glyph (house, check, warning, cross, grid, info); put your own icon in
7676
+ * the default slot to replace it. A slotted icon is sized to the tile (12/16/24px) and coloured
7677
+ * with the intent's icon colour, as long as it draws with `currentColor`.
7678
+ * The tile is decorative by default (hidden from assistive tech). Don't rely on the colour or glyph
7679
+ * alone to convey status: slot text into `text` (it sits beside the square, in
7680
+ * `--bs-icon-tile-text-color`), or set `label` to give the tile its own accessible name.
7681
+ * ## When to use
7682
+ * - Marking a row, card or message with a status or category icon.
7683
+ * ## When not to use
7684
+ * - As a button -- it isn't interactive. Use `bs-icon-button`.
7685
+ */
7686
+ interface BsIconTile {
7687
+ /**
7688
+ * Colour and default glyph. `brand` uses the brand colours; `information` the info palette.
7689
+ * @default 'default'
7690
+ */
7691
+ "intent"?: BsIconTileIntent;
7692
+ /**
7693
+ * Accessible name. When set, the tile is exposed as an image with this name; when empty it is decorative and hidden from assistive tech.
7694
+ */
7695
+ "label"?: string;
7696
+ /**
7697
+ * Tile size: `sm` 24px, `md` 32px, `lg` 48px.
7698
+ * @default 'sm'
7699
+ */
7700
+ "size"?: BsIconTileSize;
7701
+ }
6254
7702
  /**
6255
7703
  * A pill-shaped tab button -- an optional leading icon plus a text label, rendered as a real
6256
7704
  * `<button>` so it participates correctly in tab order and native click/keyboard activation.
@@ -6736,6 +8184,143 @@ declare namespace LocalJSX {
6736
8184
  */
6737
8185
  "skipToContentLabel"?: string;
6738
8186
  }
8187
+ /**
8188
+ * A "get set up" checklist, in four forms that matching the Figma "Onboarding checklist" component:
8189
+ * - `panel` -- the full list: heading, progress, every step with a status icon, and the current step
8190
+ * expanded with its description, time estimate, Skip for now and a primary action.
8191
+ * - `dashboard` -- a wide card for the top of a page: summary and progress on the left, the current step
8192
+ * and the next ones as small cards on the right, and a "See all steps" link.
8193
+ * - `launcher` -- a small always-visible chip that reopens the checklist; three layouts (`icon`, `ring`,
8194
+ * `inline`).
8195
+ * - `completion` -- the "You're all set" card once every step is done.
8196
+ * The component shows progress and reports what the user pressed. It doesn't know what a step means,
8197
+ * run it, or remember anything: your app owns the steps (`steps`, each with `done`), marks them done, and
8198
+ * decides which form to show.
8199
+ * **Built from:** `bs-card` (every surface), `bs-icon-tile` (the icons), `bs-button` (the actions),
8200
+ * `bs-icon-button` (the close button), `bs-progress-linear` (the progress bar), `bs-progress` (the launcher
8201
+ * ring).
8202
+ * ## When to use
8203
+ * - Guiding a new account or user through a short list of setup tasks they can do in any order or later.
8204
+ * ## When not to use
8205
+ * - A strict, linear flow where each step needs the one before -- use `bs-stepper`.
8206
+ * - A tour of the interface itself -- use `bs-product-tour`.
8207
+ * ## Accessibility
8208
+ * Steps are an ordered list; the current one has `aria-current="step"`, and each step carries a visually
8209
+ * hidden "Done" / "Not done". The progress bar is named with the progress text.
8210
+ */
8211
+ interface BsOnboardingChecklist {
8212
+ /**
8213
+ * Caption on the cards of steps that come after the current one (`dashboard`).
8214
+ * @default 'After the step before'
8215
+ */
8216
+ "afterLabel"?: string;
8217
+ /**
8218
+ * Shows a close button (`panel`, `dashboard`).
8219
+ * @default false
8220
+ */
8221
+ "closable"?: boolean;
8222
+ /**
8223
+ * Accessible name of the close button.
8224
+ * @default 'Close'
8225
+ */
8226
+ "closeLabel"?: string;
8227
+ /**
8228
+ * Paragraph under the heading. Defaults to a summary of the progress for `dashboard`. Nothing for `launcher`.
8229
+ */
8230
+ "description"?: string;
8231
+ /**
8232
+ * Label of the main button (`completion`).
8233
+ * @default 'Go to dashboard'
8234
+ */
8235
+ "doneLabel"?: string;
8236
+ /**
8237
+ * Heading. Defaults per `type` ("Get started", "Finish setting up", "Setup", "You're all set").
8238
+ */
8239
+ "heading"?: string;
8240
+ /**
8241
+ * HTML heading level, 1-6.
8242
+ * @default 2
8243
+ */
8244
+ "headingLevel"?: number;
8245
+ /**
8246
+ * Label of the secondary button (`completion`).
8247
+ * @default 'Hide checklist'
8248
+ */
8249
+ "hideLabel"?: string;
8250
+ /**
8251
+ * Layout of the `launcher`: `icon` (tile, title, progress text), `ring` (circular progress, title, text) or `inline` (tile, title and text on one line, with a chevron).
8252
+ * @default 'icon'
8253
+ */
8254
+ "launcherLayout"?: BsOnboardingLauncherLayout;
8255
+ /**
8256
+ * Fires when the close button is pressed.
8257
+ */
8258
+ "onBsClose"?: (event: BsOnboardingChecklistCustomEvent<void>) => void;
8259
+ /**
8260
+ * Fires when the main button is pressed (`completion`).
8261
+ */
8262
+ "onBsDone"?: (event: BsOnboardingChecklistCustomEvent<void>) => void;
8263
+ /**
8264
+ * Fires when Hide checklist is pressed (`completion`).
8265
+ */
8266
+ "onBsHide"?: (event: BsOnboardingChecklistCustomEvent<void>) => void;
8267
+ /**
8268
+ * Fires when the user asks to open the full checklist: "See all steps" (`dashboard`) or the launcher.
8269
+ */
8270
+ "onBsOpen"?: (event: BsOnboardingChecklistCustomEvent<void>) => void;
8271
+ /**
8272
+ * Fires when a step's primary action is pressed (`panel` button, `dashboard` Start): `{ id }`.
8273
+ */
8274
+ "onBsStepAction"?: (event: BsOnboardingChecklistCustomEvent<{ id: string }>) => void;
8275
+ /**
8276
+ * Fires when "Skip for now" is pressed on the current step (`panel`): `{ id }`.
8277
+ */
8278
+ "onBsStepSkip"?: (event: BsOnboardingChecklistCustomEvent<{ id: string }>) => void;
8279
+ /**
8280
+ * Template of the progress label; `{done}` and `{total}` are replaced.
8281
+ * @default '{done} of {total} done'
8282
+ */
8283
+ "progressLabel"?: string;
8284
+ /**
8285
+ * Text under the launcher title. Defaults to "N% complete".
8286
+ */
8287
+ "progressText"?: string;
8288
+ /**
8289
+ * Label of the link that opens the whole checklist (`dashboard`).
8290
+ * @default 'See all steps'
8291
+ */
8292
+ "seeAllLabel"?: string;
8293
+ /**
8294
+ * Label of "Skip for now" on the current step (`panel`).
8295
+ * @default 'Skip for now'
8296
+ */
8297
+ "skipLabel"?: string;
8298
+ /**
8299
+ * Label of the Start link on the current step's card (`dashboard`).
8300
+ * @default 'Start'
8301
+ */
8302
+ "startLabel"?: string;
8303
+ /**
8304
+ * Visually hidden text on a finished step.
8305
+ * @default 'Done'
8306
+ */
8307
+ "statusDoneLabel"?: string;
8308
+ /**
8309
+ * Visually hidden text on an unfinished step.
8310
+ * @default 'Not done'
8311
+ */
8312
+ "statusTodoLabel"?: string;
8313
+ /**
8314
+ * The steps: `[{ id, label, description?, done?, estimate?, actionLabel?, skippable? }]`. The first step that isn't `done` is the current one. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
8315
+ * @default []
8316
+ */
8317
+ "steps"?: BsOnboardingStep[];
8318
+ /**
8319
+ * Which form: `panel`, `dashboard`, `launcher` or `completion`.
8320
+ * @default 'panel'
8321
+ */
8322
+ "type"?: BsOnboardingChecklistType;
8323
+ }
6739
8324
  /**
6740
8325
  * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
6741
8326
  * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
@@ -6782,6 +8367,88 @@ declare namespace LocalJSX {
6782
8367
  */
6783
8368
  "totalPages"?: number;
6784
8369
  }
8370
+ /**
8371
+ * One step of a product tour: a centred **welcome** or **success** card with an art tile, or a
8372
+ * **pointer** card -- a compact step with a close button, a "1 of 3" progress label and Back/Next
8373
+ * actions -- whose arrow points at the thing it describes. Matches the Figma "Product Tour" and
8374
+ * "Pointer" components.
8375
+ * This is the step *card* only. It doesn't run a tour: it has no overlay, no spotlight, no
8376
+ * positioning against a target and no step sequencing. Your code decides which step is showing,
8377
+ * places the card next to its target (the arrow can sit on any of 12 positions via `direction`),
8378
+ * and moves on from `bsPrimary`/`bsSecondary`.
8379
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the art tile), `bs-button` (the actions), `bs-icon-button` (the close button).
8380
+ * ## When to use
8381
+ * - Introducing a feature on first run (`welcome`), confirming a finished tour (`success`), or
8382
+ * walking through the UI one pointer at a time (`pointer`).
8383
+ * ## When not to use
8384
+ * - A blocking decision or form -- use `bs-dialog`.
8385
+ * - A hint on hover or focus -- use `bs-tooltip`.
8386
+ */
8387
+ interface BsProductTour {
8388
+ /**
8389
+ * Shows a close button in the corner (`pointer`).
8390
+ * @default false
8391
+ */
8392
+ "closable"?: boolean;
8393
+ /**
8394
+ * Accessible name of the close button.
8395
+ * @default 'Close'
8396
+ */
8397
+ "closeLabel"?: string;
8398
+ /**
8399
+ * Paragraph under the heading.
8400
+ */
8401
+ "description"?: string;
8402
+ /**
8403
+ * Where the arrow sits (`pointer` only): the side of the card it's on, and for corners/edges which end it's near, e.g. `top-left` = on the top edge, near the left corner.
8404
+ * @default 'top'
8405
+ */
8406
+ "direction"?: BsProductTourDirection;
8407
+ /**
8408
+ * Heading.
8409
+ */
8410
+ "heading"?: string;
8411
+ /**
8412
+ * Fires when the close button is pressed.
8413
+ */
8414
+ "onBsClose"?: (event: BsProductTourCustomEvent<void>) => void;
8415
+ /**
8416
+ * Fires when the primary button is pressed.
8417
+ */
8418
+ "onBsPrimary"?: (event: BsProductTourCustomEvent<void>) => void;
8419
+ /**
8420
+ * Fires when the secondary button is pressed.
8421
+ */
8422
+ "onBsSecondary"?: (event: BsProductTourCustomEvent<void>) => void;
8423
+ /**
8424
+ * Label of the primary button. Defaults to "Start" (`welcome`), "Done" (`success`) or "Next" (`pointer`). Set it to an empty string to hide the button.
8425
+ */
8426
+ "primaryLabel"?: string;
8427
+ /**
8428
+ * Template of the progress label; `{step}` and `{total}` are replaced.
8429
+ * @default '{step} of {total}'
8430
+ */
8431
+ "progressLabel"?: string;
8432
+ /**
8433
+ * Label of the secondary button. Defaults to "Later" (`welcome`) or "Back" (`pointer`); none for `success`. Set it to an empty string to hide the button.
8434
+ */
8435
+ "secondaryLabel"?: string;
8436
+ /**
8437
+ * Current step, 1-based (`pointer`). Used with `total` for the progress label.
8438
+ * @default 1
8439
+ */
8440
+ "step"?: number;
8441
+ /**
8442
+ * Number of steps (`pointer`). The progress label is hidden when this is 0.
8443
+ * @default 0
8444
+ */
8445
+ "total"?: number;
8446
+ /**
8447
+ * `welcome` and `success` are centred cards with an art tile; `pointer` is the compact step with an arrow.
8448
+ * @default 'welcome'
8449
+ */
8450
+ "type"?: BsProductTourType;
8451
+ }
6785
8452
  /**
6786
8453
  * A circular progress indicator -- either a static ring showing a percentage sweep
6787
8454
  * (`type="determinate"`) or a continuously spinning ring signaling in-progress work with no known
@@ -6861,12 +8528,169 @@ declare namespace LocalJSX {
6861
8528
  * `determinate` renders a static fill reflecting `value`; `indeterminate` renders a continuously sliding gradient bar and ignores `value`.
6862
8529
  * @default 'determinate'
6863
8530
  */
6864
- "type"?: BsProgressLinearType;
8531
+ "type"?: BsProgressLinearType;
8532
+ /**
8533
+ * Progress percentage, `0`-`100`. Only meaningful for `type="determinate"` -- ignored (and never rendered) for `type="indeterminate"`. Out-of-range values are clamped defensively.
8534
+ * @default 0
8535
+ */
8536
+ "value"?: number;
8537
+ }
8538
+ /**
8539
+ * A block for sharing a link or taking a payment by QR code: a heading, the code on a white quiet
8540
+ * zone, the URL (or the amount, for payments) as text, an optional expiry chip, and Download and
8541
+ * Copy link actions. Matches the Figma "QR code" component (3 sizes x 2 types x 5 states, plus the
8542
+ * "with logo" variant).
8543
+ * **This component draws a code, it doesn't encode one.** Generate the real code in your product
8544
+ * with a QR library and hand it over either as a `matrix` (a square `boolean[][]`, `true` = dark
8545
+ * module) or as your own element in the `code` slot (an `<img>`, `<svg>` or `<canvas>`).
8546
+ * The code always sits on a white quiet zone with black modules, in dark mode too -- scanners need
8547
+ * the contrast.
8548
+ * **Built from:** `bs-card` (the surface), `bs-button` (Download, Copy link, Retry, Refresh), `bs-progress` (the loading spinner), `bs-chip-informative` (the expiry chip), `bs-icon-button` (the close button).
8549
+ * ## When to use
8550
+ * - Sharing a link to an order, document or page that someone will open on a phone.
8551
+ * - Taking a payment with an amount (`type="payment"`).
8552
+ * ## When not to use
8553
+ * - Encoding long text blobs -- a QR code that dense is hard to scan at the sizes here.
8554
+ * ## States
8555
+ * `loading` (generating the code), `error` (couldn't generate it; Retry), `expired` (Refresh) and
8556
+ * `scanned` (done: "Scanned", or "Payment received" for payments). Download and Copy link are disabled
8557
+ * in every state but `default`, and hidden once `scanned`.
8558
+ */
8559
+ interface BsQrCode {
8560
+ /**
8561
+ * The amount shown under the code (`type="payment"`), e.g. `"148,00 kr"`.
8562
+ */
8563
+ "amount"?: string;
8564
+ /**
8565
+ * Small label above the amount.
8566
+ * @default 'Total'
8567
+ */
8568
+ "amountLabel"?: string;
8569
+ /**
8570
+ * Shows a close button in the corner.
8571
+ * @default false
8572
+ */
8573
+ "closable"?: boolean;
8574
+ /**
8575
+ * Accessible name of the close button.
8576
+ * @default 'Close'
8577
+ */
8578
+ "closeLabel"?: string;
8579
+ /**
8580
+ * Accessible name for the code image, e.g. `"QR code for order SO-10482"`. Applies to `matrix`; give a slotted `<img>` its own `alt`.
8581
+ * @default 'QR code'
8582
+ */
8583
+ "codeLabel"?: string;
8584
+ /**
8585
+ * Label of the Copy link button.
8586
+ * @default 'Copy link'
8587
+ */
8588
+ "copyLabel"?: string;
8589
+ /**
8590
+ * Line under the heading.
8591
+ */
8592
+ "description"?: string;
8593
+ /**
8594
+ * Label of the Download button.
8595
+ * @default 'Download PNG'
8596
+ */
8597
+ "downloadLabel"?: string;
8598
+ /**
8599
+ * Text in the `error` overlay.
8600
+ * @default "Couldn't load code"
8601
+ */
8602
+ "errorLabel"?: string;
8603
+ /**
8604
+ * Text in the `expired` overlay.
8605
+ * @default 'Code expired'
8606
+ */
8607
+ "expiredLabel"?: string;
8608
+ /**
8609
+ * Text of the expiry chip, e.g. `"Expires in 04:59"`. No chip when empty.
8610
+ */
8611
+ "expiry"?: string;
8612
+ /**
8613
+ * Heading text.
8614
+ * @default 'Share the order'
8615
+ */
8616
+ "heading"?: string;
8617
+ /**
8618
+ * Hides the Download and Copy link row.
8619
+ * @default false
8620
+ */
8621
+ "hideActions"?: boolean;
8622
+ /**
8623
+ * Hides the Copy link button.
8624
+ * @default false
8625
+ */
8626
+ "hideCopy"?: boolean;
8627
+ /**
8628
+ * Hides the Download button.
8629
+ * @default false
8630
+ */
8631
+ "hideDownload"?: boolean;
8632
+ /**
8633
+ * Text in the `loading` overlay.
8634
+ * @default 'Generating code'
8635
+ */
8636
+ "loadingLabel"?: string;
8637
+ /**
8638
+ * The code as a square matrix of modules, `true` = dark. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule. Ignored when the `code` slot is used.
8639
+ */
8640
+ "matrix"?: boolean[][];
8641
+ /**
8642
+ * Fires when the close button is pressed.
8643
+ */
8644
+ "onBsClose"?: (event: BsQrCodeCustomEvent<void>) => void;
8645
+ /**
8646
+ * Fires when Copy link is pressed, after the component tries to put `url` on the clipboard. `{ url }` is the `url` prop.
8647
+ */
8648
+ "onBsCopy"?: (event: BsQrCodeCustomEvent<{ url?: string }>) => void;
8649
+ /**
8650
+ * Fires when Download is pressed. The component doesn't render a file; produce it from the code you generated.
8651
+ */
8652
+ "onBsDownload"?: (event: BsQrCodeCustomEvent<void>) => void;
8653
+ /**
8654
+ * Fires when Refresh is pressed (`expired` state). Set `state` back to `loading` yourself.
8655
+ */
8656
+ "onBsRefresh"?: (event: BsQrCodeCustomEvent<void>) => void;
8657
+ /**
8658
+ * Fires when Retry is pressed (`error` state). Set `state` back to `loading` yourself.
8659
+ */
8660
+ "onBsRetry"?: (event: BsQrCodeCustomEvent<void>) => void;
8661
+ /**
8662
+ * Label of the Refresh button (`expired`).
8663
+ * @default 'Refresh'
8664
+ */
8665
+ "refreshLabel"?: string;
8666
+ /**
8667
+ * Label of the Retry button (`error`).
8668
+ * @default 'Retry'
8669
+ */
8670
+ "retryLabel"?: string;
8671
+ /**
8672
+ * Text in the `scanned` overlay. Defaults to "Payment received" for `type="payment"` and "Scanned" otherwise.
8673
+ */
8674
+ "scannedLabel"?: string;
8675
+ /**
8676
+ * Card size: `sm`, `md` (default) or `lg`.
8677
+ * @default 'md'
8678
+ */
8679
+ "size"?: BsQrCodeSize;
8680
+ /**
8681
+ * `default`, or one of the overlay states: `loading`, `error`, `expired`, `scanned`.
8682
+ * @default 'default'
8683
+ */
8684
+ "state"?: BsQrCodeState;
8685
+ /**
8686
+ * `default` shows the URL under the code; `payment` shows the amount instead.
8687
+ * @default 'default'
8688
+ */
8689
+ "type"?: BsQrCodeType;
6865
8690
  /**
6866
- * Progress percentage, `0`-`100`. Only meaningful for `type="determinate"` -- ignored (and never rendered) for `type="indeterminate"`. Out-of-range values are clamped defensively.
6867
- * @default 0
8691
+ * The link shown as text under the code (`type="default"`), and copied by Copy link.
6868
8692
  */
6869
- "value"?: number;
8693
+ "url"?: string;
6870
8694
  }
6871
8695
  /**
6872
8696
  * A single radio button with its label, for one mutually-exclusive choice within a group.
@@ -6906,6 +8730,150 @@ declare namespace LocalJSX {
6906
8730
  */
6907
8731
  "value"?: string;
6908
8732
  }
8733
+ /**
8734
+ * The three moments around an expiring session, as one card. Matches the Figma "Session timeout"
8735
+ * component's three types:
8736
+ * - `warning` -- "You'll be signed out soon": a live countdown with a draining bar, an optional
8737
+ * "your work is saved" note, and Sign out now / Stay signed in.
8738
+ * - `signed-out` -- "You've been signed out": who was signed in, with Sign in again and Use a different
8739
+ * account.
8740
+ * - `confirm-identity` -- "Confirm it's you": a fresh password check before a sensitive action, with
8741
+ * passkey / BankID alternatives and Cancel.
8742
+ * The component never signs anyone in or out. It shows the state and emits `bsPrimary`, `bsSecondary`,
8743
+ * `bsAlternative`, `bsCancel` and `bsExpire`; your app talks to the identity provider.
8744
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions),
8745
+ * `bs-progress-linear` (the countdown bar), `bs-avatar` (the signed-in account), `bs-input` (the
8746
+ * password field).
8747
+ * ## When to use
8748
+ * - Warning someone, before it happens, that an inactivity timeout is about to end their session.
8749
+ * - Telling someone their session ended, and letting them pick up where they left off.
8750
+ * - Asking for a fresh credential before a sensitive action.
8751
+ * ## When not to use
8752
+ * - A first-time sign-in page -- this assumes there was a session.
8753
+ * - Anything that is not about the session or the user's identity -- use `bs-dialog`.
8754
+ * ## Accessibility
8755
+ * The card is a labelled region. The countdown is a `timer` and is *not* announced every second; a polite
8756
+ * live region announces the time left at 60, 30 and 10 seconds instead. Wrap the card in your own modal
8757
+ * (`bs-dialog`) if the warning must trap focus.
8758
+ */
8759
+ interface BsSessionTimeout {
8760
+ /**
8761
+ * Email of the account that was signed in (`signed-out`).
8762
+ */
8763
+ "accountEmail"?: string;
8764
+ /**
8765
+ * Initials in the avatar (`signed-out`). Derived from `accountName` when not set.
8766
+ */
8767
+ "accountInitials"?: string;
8768
+ /**
8769
+ * Name of the account that was signed in (`signed-out`).
8770
+ */
8771
+ "accountName"?: string;
8772
+ /**
8773
+ * Other ways to confirm, shown as outlined buttons under the divider: `[{ id, label, icon? }]`. Defaults to a passkey and a BankID button. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule. Set `[]` to hide them.
8774
+ * @default [ { id: 'passkey', label: 'Use passkey', icon: 'fingerprint' }, { id: 'bankid', label: 'Use BankID', icon: 'key' }, ]
8775
+ */
8776
+ "alternatives"?: BsSessionTimeoutAlternative[];
8777
+ /**
8778
+ * Label of the Cancel button (`confirm-identity`). Set to an empty string to hide it.
8779
+ * @default 'Cancel'
8780
+ */
8781
+ "cancelLabel"?: string;
8782
+ /**
8783
+ * Count `secondsLeft` down once a second (`warning`), firing `bsExpire` at zero.
8784
+ * @default false
8785
+ */
8786
+ "countdown"?: boolean;
8787
+ /**
8788
+ * Paragraph under the heading. Defaults per `type`.
8789
+ */
8790
+ "description"?: string;
8791
+ /**
8792
+ * Label of the divider between the password and the alternatives.
8793
+ * @default 'or'
8794
+ */
8795
+ "dividerLabel"?: string;
8796
+ /**
8797
+ * Heading. Defaults per `type`.
8798
+ */
8799
+ "heading"?: string;
8800
+ /**
8801
+ * HTML heading level, 1-6.
8802
+ * @default 2
8803
+ */
8804
+ "headingLevel"?: number;
8805
+ /**
8806
+ * Hides the icon tile.
8807
+ * @default false
8808
+ */
8809
+ "hideIcon"?: boolean;
8810
+ /**
8811
+ * Fires when an alternative method is pressed (`confirm-identity`): `{ id }`.
8812
+ */
8813
+ "onBsAlternative"?: (event: BsSessionTimeoutCustomEvent<{ id: string }>) => void;
8814
+ /**
8815
+ * Fires when Cancel is pressed (`confirm-identity`).
8816
+ */
8817
+ "onBsCancel"?: (event: BsSessionTimeoutCustomEvent<void>) => void;
8818
+ /**
8819
+ * Fires once when `countdown` reaches zero.
8820
+ */
8821
+ "onBsExpire"?: (event: BsSessionTimeoutCustomEvent<void>) => void;
8822
+ /**
8823
+ * Fires when the primary button is pressed. For `confirm-identity` the detail is `{ password }`; otherwise it is empty.
8824
+ */
8825
+ "onBsPrimary"?: (event: BsSessionTimeoutCustomEvent<{ password?: string } | void>) => void;
8826
+ /**
8827
+ * Fires when the secondary button is pressed.
8828
+ */
8829
+ "onBsSecondary"?: (event: BsSessionTimeoutCustomEvent<void>) => void;
8830
+ /**
8831
+ * Error shown under the password field, e.g. after a wrong password.
8832
+ */
8833
+ "passwordError"?: string;
8834
+ /**
8835
+ * Label of the password field.
8836
+ * @default 'Password'
8837
+ */
8838
+ "passwordLabel"?: string;
8839
+ /**
8840
+ * Label of the primary button. Defaults per `type` ("Stay signed in", "Sign in again", "Confirm").
8841
+ */
8842
+ "primaryLabel"?: string;
8843
+ /**
8844
+ * Note under the countdown, e.g. "Your draft of INV-2041 is saved automatically." Hidden when empty.
8845
+ */
8846
+ "savedMessage"?: string;
8847
+ /**
8848
+ * Label of the secondary button. Defaults per `type` ("Sign out now", "Use a different account"); none for `confirm-identity`. Set to an empty string to hide it.
8849
+ */
8850
+ "secondaryLabel"?: string;
8851
+ /**
8852
+ * Seconds left before the session ends (`warning`). Mutable: with `countdown` the component decrements it itself; otherwise drive it from your own timer.
8853
+ * @default 0
8854
+ */
8855
+ "secondsLeft"?: number;
8856
+ /**
8857
+ * Text next to the time under a minute.
8858
+ * @default 'seconds left'
8859
+ */
8860
+ "secondsLeftLabel"?: string;
8861
+ /**
8862
+ * Text next to the time while a minute or more is left.
8863
+ * @default 'minutes left'
8864
+ */
8865
+ "timeLeftLabel"?: string;
8866
+ /**
8867
+ * Length of the warning window in seconds, for the bar: it shows `secondsLeft / totalSeconds`. Defaults to the `secondsLeft` it first had.
8868
+ * @default 0
8869
+ */
8870
+ "totalSeconds"?: number;
8871
+ /**
8872
+ * Which moment: `warning`, `signed-out` or `confirm-identity`.
8873
+ * @default 'warning'
8874
+ */
8875
+ "type"?: BsSessionTimeoutType;
8876
+ }
6909
8877
  /**
6910
8878
  * A slider for picking a single numeric value (`type="default"`), a value snapped to evenly
6911
8879
  * spaced ticks (`type="segmented"`), or a min/max pair (`type="range"`) from within a bounded
@@ -7021,6 +8989,15 @@ declare namespace LocalJSX {
7021
8989
  * Label for the optional action button (e.g. "Undo", "Retry"). Omit this prop entirely to render no action button at all -- its presence, not a boolean flag, is what shows it.
7022
8990
  */
7023
8991
  "actionLabel"?: string;
8992
+ /**
8993
+ * Variant of the action button. Defaults to the one that matches `variant` (outlined for `default`). Use `subtle` for a plain text action; colour it with `--bs-button-subtle-color` on `::part(action)`.
8994
+ */
8995
+ "actionVariant"?: BsButtonVariant1;
8996
+ /**
8997
+ * Hides the close button, for a confirmation that goes away on its own or whose only control is the action. A snackbar with no way to dismiss it must be removed by the consumer.
8998
+ * @default false
8999
+ */
9000
+ "hideClose"?: boolean;
7024
9001
  /**
7025
9002
  * Replaces the checkmark icon with a spinning loading indicator, for a message describing in-progress work (e.g. "Uploading files...") rather than a completed result.
7026
9003
  * @default false
@@ -7332,6 +9309,7 @@ declare namespace LocalJSX {
7332
9309
  * `value` is always 24-hour `HH:mm` (e.g. `"14:30"`), regardless of the displayed `format`.
7333
9310
  * The picker renders inline at a fixed width; to show it as a popover, put it in your own overlay
7334
9311
  * and close that overlay from `bsChange`/`bsCancel`.
9312
+ * **Built from:** `bs-card` (the surface), `bs-switch` (the 24h toggle), `bs-input` (the AM/PM dropdown), `bs-button` (Cancel/Confirm).
7335
9313
  * ## When to use
7336
9314
  * - Picking a time of day where the user steps through hours and minutes.
7337
9315
  * ## When not to use
@@ -7465,6 +9443,230 @@ declare namespace LocalJSX {
7465
9443
  */
7466
9444
  "placement"?: 'top';
7467
9445
  }
9446
+ /**
9447
+ * A product's "What's new" surface, in three forms matching the Figma component:
9448
+ * - `feed` -- a docked panel: heading, "Mark all as read", filter tabs, the list of updates (each a
9449
+ * `bs-whats-new-entry`) and a link to the full release notes.
9450
+ * - `announcement` -- one big update, with a hero image, a tag, a heading, a few bullet points, "1 of 3"
9451
+ * and Remind me later / Next.
9452
+ * - `teaser` -- a small card pointing at the feed: tag, date, heading, a line of text and "Open What's new".
9453
+ * The component only shows what you give it and reports what the user pressed. It doesn't fetch updates,
9454
+ * track which the user has seen, or decide when to appear: your app owns `entries` (with their `unread`
9455
+ * flags) and reacts to the events.
9456
+ * **Built from:** `bs-card` (the surface), `bs-whats-new-entry` (each update), `bs-tabs` (the filters),
9457
+ * `bs-chip-informative` (the tags), `bs-button`, `bs-icon-button`.
9458
+ * ## When to use
9459
+ * - Telling users about changes to the product, in a place they can come back to.
9460
+ * ## When not to use
9461
+ * - Messages about the user's own data or an action they just took -- use `bs-snackbar`, `bs-toast`.
9462
+ * - A guided walk through the interface -- use `bs-product-tour`.
9463
+ */
9464
+ interface BsWhatsNew {
9465
+ /**
9466
+ * Label of the link (`teaser`).
9467
+ * @default 'Open What’s new'
9468
+ */
9469
+ "actionLabel"?: string;
9470
+ /**
9471
+ * Shows a close button.
9472
+ * @default false
9473
+ */
9474
+ "closable"?: boolean;
9475
+ /**
9476
+ * Accessible name of the close button.
9477
+ * @default 'Close'
9478
+ */
9479
+ "closeLabel"?: string;
9480
+ /**
9481
+ * The date as text (`teaser`).
9482
+ */
9483
+ "date"?: string;
9484
+ /**
9485
+ * The line under the heading (`teaser`).
9486
+ */
9487
+ "description"?: string;
9488
+ /**
9489
+ * Text shown when the selected filter has no entries.
9490
+ * @default 'Nothing new here yet.'
9491
+ */
9492
+ "emptyLabel"?: string;
9493
+ /**
9494
+ * The updates in the feed: `[{ id, category?, tag?, tagColor?, date?, unread?, heading, description?, actionLabel?, image? }]`. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's non-string props rule.
9495
+ * @default []
9496
+ */
9497
+ "entries"?: BsWhatsNewItem[];
9498
+ /**
9499
+ * The selected filter's `value`. Mutable: choosing a tab updates it.
9500
+ * @default 'all'
9501
+ */
9502
+ "filter"?: string;
9503
+ /**
9504
+ * The filter tabs: `[{ value, label }]`. `value: "all"` shows every entry; any other value shows the entries whose `category` matches. Defaults to All, New Features, Improvements and Fixes (categories `features`, `improvements`, `fixes`). Set `[]` for no tabs.
9505
+ * @default [ { value: 'all', label: 'All' }, { value: 'features', label: 'New Features' }, { value: 'improvements', label: 'Improvements' }, { value: 'fixes', label: 'Fixes' }, ]
9506
+ */
9507
+ "filters"?: BsWhatsNewFilter[];
9508
+ /**
9509
+ * Heading. Defaults to "What's new" for `feed`; set it for the other forms.
9510
+ */
9511
+ "heading"?: string;
9512
+ /**
9513
+ * HTML heading level, 1-6.
9514
+ * @default 2
9515
+ */
9516
+ "headingLevel"?: number;
9517
+ /**
9518
+ * URL of the hero image (`announcement`). Or slot your own into `hero`.
9519
+ */
9520
+ "image"?: string;
9521
+ /**
9522
+ * Label of the "Mark all as read" button, shown while any entry is `unread`.
9523
+ * @default 'Mark all as read'
9524
+ */
9525
+ "markAllReadLabel"?: string;
9526
+ /**
9527
+ * Fires when the close button is pressed.
9528
+ */
9529
+ "onBsClose"?: (event: BsWhatsNewCustomEvent<void>) => void;
9530
+ /**
9531
+ * Fires when an entry's action link is pressed (`feed`): `{ id }`.
9532
+ */
9533
+ "onBsEntryAction"?: (event: BsWhatsNewCustomEvent<{ id: string }>) => void;
9534
+ /**
9535
+ * Fires when the user picks a filter tab (`feed`): `{ value }`.
9536
+ */
9537
+ "onBsFilterChange"?: (event: BsWhatsNewCustomEvent<{ value: string }>) => void;
9538
+ /**
9539
+ * Fires when "Mark all as read" is pressed (`feed`). Update the entries' `unread` yourself.
9540
+ */
9541
+ "onBsMarkAllRead"?: (event: BsWhatsNewCustomEvent<void>) => void;
9542
+ /**
9543
+ * Fires when the teaser's link is pressed (`teaser`) -- open the feed.
9544
+ */
9545
+ "onBsOpen"?: (event: BsWhatsNewCustomEvent<void>) => void;
9546
+ /**
9547
+ * Fires when the primary button (`announcement`) is pressed.
9548
+ */
9549
+ "onBsPrimary"?: (event: BsWhatsNewCustomEvent<void>) => void;
9550
+ /**
9551
+ * Fires when the secondary button (`announcement`) is pressed.
9552
+ */
9553
+ "onBsSecondary"?: (event: BsWhatsNewCustomEvent<void>) => void;
9554
+ /**
9555
+ * The bullet points (`announcement`). Must be set as a JS property -- see CONVENTIONS.md.
9556
+ * @default []
9557
+ */
9558
+ "points"?: string[];
9559
+ /**
9560
+ * Label of the primary button (`announcement`). Empty hides it.
9561
+ * @default 'Next'
9562
+ */
9563
+ "primaryLabel"?: string;
9564
+ /**
9565
+ * Text of the release notes link.
9566
+ * @default 'See all release notes'
9567
+ */
9568
+ "releaseNotesLabel"?: string;
9569
+ /**
9570
+ * URL of the full release notes. The link is only shown when this is set.
9571
+ */
9572
+ "releaseNotesUrl"?: string;
9573
+ /**
9574
+ * Label of the secondary button (`announcement`). Empty hides it.
9575
+ * @default 'Remind me later'
9576
+ */
9577
+ "secondaryLabel"?: string;
9578
+ /**
9579
+ * Current step, 1-based (`announcement`). Used with `total`.
9580
+ * @default 1
9581
+ */
9582
+ "step"?: number;
9583
+ /**
9584
+ * Template of the step label; `{step}` and `{total}` are replaced.
9585
+ * @default '{step} of {total}'
9586
+ */
9587
+ "stepLabel"?: string;
9588
+ /**
9589
+ * Tag text (`announcement`, `teaser`), e.g. "New feature".
9590
+ */
9591
+ "tag"?: string;
9592
+ /**
9593
+ * Colour of the tag.
9594
+ * @default 'info'
9595
+ */
9596
+ "tagColor"?: BsWhatsNewEntryTagColor;
9597
+ /**
9598
+ * Number of announcements in the sequence (`announcement`). The step label is hidden when 0.
9599
+ * @default 0
9600
+ */
9601
+ "total"?: number;
9602
+ /**
9603
+ * Which form: `feed`, `announcement` or `teaser`.
9604
+ * @default 'feed'
9605
+ */
9606
+ "type"?: BsWhatsNewType;
9607
+ }
9608
+ /**
9609
+ * One update in a "What's new" list: a tag ("New feature", "Improvement", "Fix"), a date, an unread dot,
9610
+ * an optional image, a title, a short description and an optional action link ("Try it"). Matches the Figma
9611
+ * "What's new / Entry" component. It is a plain block of content -- no card -- so it can sit in a feed
9612
+ * (`bs-whats-new`), a list, or a page of release notes.
9613
+ * **Built from:** `bs-chip-informative` (the tag) and `bs-button` (the action).
9614
+ * ## When to use
9615
+ * - Announcing a change to the product, with enough detail to know whether it matters.
9616
+ * ## When not to use
9617
+ * - A message about the user's own data or an action they just took -- use `bs-snackbar` or `bs-toast`.
9618
+ */
9619
+ interface BsWhatsNewEntry {
9620
+ /**
9621
+ * Label of the action link (e.g. "Try it"). No action when empty.
9622
+ */
9623
+ "actionLabel"?: string;
9624
+ /**
9625
+ * The date as text, already formatted for the reader (e.g. "24.09.2026").
9626
+ */
9627
+ "date"?: string;
9628
+ /**
9629
+ * Short description under the title.
9630
+ */
9631
+ "description"?: string;
9632
+ /**
9633
+ * Draws a rule under the entry, to separate it from the next one.
9634
+ * @default false
9635
+ */
9636
+ "divider"?: boolean;
9637
+ /**
9638
+ * Title.
9639
+ */
9640
+ "heading"?: string;
9641
+ /**
9642
+ * HTML heading level for the title, 1-6.
9643
+ * @default 3
9644
+ */
9645
+ "headingLevel"?: number;
9646
+ /**
9647
+ * Fires when the action link is pressed.
9648
+ */
9649
+ "onBsAction"?: (event: BsWhatsNewEntryCustomEvent<void>) => void;
9650
+ /**
9651
+ * The tag text, e.g. "New feature". No tag when empty.
9652
+ */
9653
+ "tag"?: string;
9654
+ /**
9655
+ * Colour of the tag: `info` (default), `success`, `warning`, `error` or `neutral`.
9656
+ * @default 'info'
9657
+ */
9658
+ "tagColor"?: BsWhatsNewEntryTagColor1;
9659
+ /**
9660
+ * Shows a dot after the date for an update the user hasn't seen.
9661
+ * @default false
9662
+ */
9663
+ "unread"?: boolean;
9664
+ /**
9665
+ * Visually hidden text for the unread dot.
9666
+ * @default 'Unread'
9667
+ */
9668
+ "unreadLabel"?: string;
9669
+ }
7468
9670
 
7469
9671
  interface BsAccordionAttributes {
7470
9672
  "expanded": boolean;
@@ -7610,6 +9812,22 @@ declare namespace LocalJSX {
7610
9812
  "actionLabel": string;
7611
9813
  "allowClose": boolean;
7612
9814
  }
9815
+ interface BsCookieConsentAttributes {
9816
+ "type": BsCookieConsentType;
9817
+ "heading": string;
9818
+ "headingLevel": number;
9819
+ "description": string;
9820
+ "policyUrl": string;
9821
+ "policyLabel": string;
9822
+ "customiseLabel": string;
9823
+ "rejectLabel": string;
9824
+ "acceptLabel": string;
9825
+ "saveLabel": string;
9826
+ "changeLabel": string;
9827
+ "alwaysOnLabel": string;
9828
+ "seeCookiesLabel": string;
9829
+ "closeLabel": string;
9830
+ }
7613
9831
  interface BsDataTableAttributes {
7614
9832
  "sortColumn": string;
7615
9833
  "sortDirection": 'asc' | 'desc';
@@ -7638,6 +9856,16 @@ declare namespace LocalJSX {
7638
9856
  "size": BsDialogSize;
7639
9857
  "centered": boolean;
7640
9858
  }
9859
+ interface BsErrorPageAttributes {
9860
+ "type": BsErrorPageType;
9861
+ "code": string;
9862
+ "heading": string;
9863
+ "headingLevel": number;
9864
+ "description": string;
9865
+ "primaryLabel": string;
9866
+ "secondaryLabel": string;
9867
+ "reference": string;
9868
+ }
7641
9869
  interface BsFileUploadAttributes {
7642
9870
  "direction": BsFileUploadDirection;
7643
9871
  "heading": string;
@@ -7666,6 +9894,11 @@ declare namespace LocalJSX {
7666
9894
  "type": 'button' | 'submit' | 'reset';
7667
9895
  "ariaLabel": string | null;
7668
9896
  }
9897
+ interface BsIconTileAttributes {
9898
+ "size": BsIconTileSize;
9899
+ "intent": BsIconTileIntent;
9900
+ "label": string;
9901
+ }
7669
9902
  interface BsInlineTabAttributes {
7670
9903
  "selected": boolean;
7671
9904
  "disabled": boolean;
@@ -7736,6 +9969,25 @@ declare namespace LocalJSX {
7736
9969
  "skipToContentLabel": string;
7737
9970
  "logoBackground": 'auto' | 'light' | 'dark';
7738
9971
  }
9972
+ interface BsOnboardingChecklistAttributes {
9973
+ "type": BsOnboardingChecklistType;
9974
+ "launcherLayout": BsOnboardingLauncherLayout;
9975
+ "heading": string;
9976
+ "description": string;
9977
+ "headingLevel": number;
9978
+ "progressText": string;
9979
+ "closable": boolean;
9980
+ "progressLabel": string;
9981
+ "skipLabel": string;
9982
+ "startLabel": string;
9983
+ "seeAllLabel": string;
9984
+ "afterLabel": string;
9985
+ "doneLabel": string;
9986
+ "hideLabel": string;
9987
+ "closeLabel": string;
9988
+ "statusDoneLabel": string;
9989
+ "statusTodoLabel": string;
9990
+ }
7739
9991
  interface BsPaginationAttributes {
7740
9992
  "totalPages": number;
7741
9993
  "currentPage": number;
@@ -7743,6 +9995,19 @@ declare namespace LocalJSX {
7743
9995
  "previousLabel": string;
7744
9996
  "nextLabel": string;
7745
9997
  }
9998
+ interface BsProductTourAttributes {
9999
+ "type": BsProductTourType;
10000
+ "direction": BsProductTourDirection;
10001
+ "heading": string;
10002
+ "description": string;
10003
+ "step": number;
10004
+ "total": number;
10005
+ "progressLabel": string;
10006
+ "primaryLabel": string;
10007
+ "secondaryLabel": string;
10008
+ "closable": boolean;
10009
+ "closeLabel": string;
10010
+ }
7746
10011
  interface BsProgressAttributes {
7747
10012
  "type": BsProgressType;
7748
10013
  "size": BsProgressSize;
@@ -7758,12 +10023,59 @@ declare namespace LocalJSX {
7758
10023
  "showLabel": boolean;
7759
10024
  "ariaLabel": string | null;
7760
10025
  }
10026
+ interface BsQrCodeAttributes {
10027
+ "type": BsQrCodeType;
10028
+ "size": BsQrCodeSize;
10029
+ "state": BsQrCodeState;
10030
+ "heading": string;
10031
+ "description": string;
10032
+ "url": string;
10033
+ "amount": string;
10034
+ "amountLabel": string;
10035
+ "expiry": string;
10036
+ "codeLabel": string;
10037
+ "closable": boolean;
10038
+ "hideActions": boolean;
10039
+ "hideDownload": boolean;
10040
+ "hideCopy": boolean;
10041
+ "downloadLabel": string;
10042
+ "copyLabel": string;
10043
+ "retryLabel": string;
10044
+ "refreshLabel": string;
10045
+ "loadingLabel": string;
10046
+ "errorLabel": string;
10047
+ "expiredLabel": string;
10048
+ "scannedLabel": string;
10049
+ "closeLabel": string;
10050
+ }
7761
10051
  interface BsRadioAttributes {
7762
10052
  "name": string;
7763
10053
  "value": string;
7764
10054
  "checked": boolean;
7765
10055
  "disabled": boolean;
7766
10056
  }
10057
+ interface BsSessionTimeoutAttributes {
10058
+ "type": BsSessionTimeoutType;
10059
+ "heading": string;
10060
+ "headingLevel": number;
10061
+ "description": string;
10062
+ "hideIcon": boolean;
10063
+ "primaryLabel": string;
10064
+ "secondaryLabel": string;
10065
+ "secondsLeft": number;
10066
+ "totalSeconds": number;
10067
+ "countdown": boolean;
10068
+ "timeLeftLabel": string;
10069
+ "secondsLeftLabel": string;
10070
+ "savedMessage": string;
10071
+ "accountName": string;
10072
+ "accountEmail": string;
10073
+ "accountInitials": string;
10074
+ "passwordLabel": string;
10075
+ "passwordError": string;
10076
+ "dividerLabel": string;
10077
+ "cancelLabel": string;
10078
+ }
7767
10079
  interface BsSliderAttributes {
7768
10080
  "type": BsSliderType;
7769
10081
  "name": string;
@@ -7783,6 +10095,8 @@ declare namespace LocalJSX {
7783
10095
  "variant": BsSnackbarVariant;
7784
10096
  "loading": boolean;
7785
10097
  "actionLabel": string;
10098
+ "actionVariant": BsButtonVariant;
10099
+ "hideClose": boolean;
7786
10100
  }
7787
10101
  interface BsSourceLinkAttributes {
7788
10102
  "fileName": string;
@@ -7845,6 +10159,41 @@ declare namespace LocalJSX {
7845
10159
  interface BsTooltipAttributes {
7846
10160
  "placement": 'top';
7847
10161
  }
10162
+ interface BsWhatsNewAttributes {
10163
+ "type": BsWhatsNewType;
10164
+ "heading": string;
10165
+ "headingLevel": number;
10166
+ "closable": boolean;
10167
+ "closeLabel": string;
10168
+ "filter": string;
10169
+ "markAllReadLabel": string;
10170
+ "releaseNotesLabel": string;
10171
+ "releaseNotesUrl": string;
10172
+ "emptyLabel": string;
10173
+ "tag": string;
10174
+ "tagColor": BsWhatsNewEntryTagColor;
10175
+ "image": string;
10176
+ "step": number;
10177
+ "total": number;
10178
+ "stepLabel": string;
10179
+ "secondaryLabel": string;
10180
+ "primaryLabel": string;
10181
+ "date": string;
10182
+ "description": string;
10183
+ "actionLabel": string;
10184
+ }
10185
+ interface BsWhatsNewEntryAttributes {
10186
+ "tag": string;
10187
+ "tagColor": BsWhatsNewEntryTagColor;
10188
+ "date": string;
10189
+ "unread": boolean;
10190
+ "heading": string;
10191
+ "headingLevel": number;
10192
+ "description": string;
10193
+ "actionLabel": string;
10194
+ "divider": boolean;
10195
+ "unreadLabel": string;
10196
+ }
7848
10197
 
7849
10198
  interface IntrinsicElements {
7850
10199
  "bs-accordion": Omit<BsAccordion, keyof BsAccordionAttributes> & { [K in keyof BsAccordion & keyof BsAccordionAttributes]?: BsAccordion[K] } & { [K in keyof BsAccordion & keyof BsAccordionAttributes as `attr:${K}`]?: BsAccordionAttributes[K] } & { [K in keyof BsAccordion & keyof BsAccordionAttributes as `prop:${K}`]?: BsAccordion[K] };
@@ -7874,12 +10223,15 @@ declare namespace LocalJSX {
7874
10223
  "bs-chip-input": Omit<BsChipInput, keyof BsChipInputAttributes> & { [K in keyof BsChipInput & keyof BsChipInputAttributes]?: BsChipInput[K] } & { [K in keyof BsChipInput & keyof BsChipInputAttributes as `attr:${K}`]?: BsChipInputAttributes[K] } & { [K in keyof BsChipInput & keyof BsChipInputAttributes as `prop:${K}`]?: BsChipInput[K] };
7875
10224
  "bs-composer": Omit<BsComposer, keyof BsComposerAttributes> & { [K in keyof BsComposer & keyof BsComposerAttributes]?: BsComposer[K] } & { [K in keyof BsComposer & keyof BsComposerAttributes as `attr:${K}`]?: BsComposerAttributes[K] } & { [K in keyof BsComposer & keyof BsComposerAttributes as `prop:${K}`]?: BsComposer[K] };
7876
10225
  "bs-composer-status-banner": Omit<BsComposerStatusBanner, keyof BsComposerStatusBannerAttributes> & { [K in keyof BsComposerStatusBanner & keyof BsComposerStatusBannerAttributes]?: BsComposerStatusBanner[K] } & { [K in keyof BsComposerStatusBanner & keyof BsComposerStatusBannerAttributes as `attr:${K}`]?: BsComposerStatusBannerAttributes[K] } & { [K in keyof BsComposerStatusBanner & keyof BsComposerStatusBannerAttributes as `prop:${K}`]?: BsComposerStatusBanner[K] };
10226
+ "bs-cookie-consent": Omit<BsCookieConsent, keyof BsCookieConsentAttributes> & { [K in keyof BsCookieConsent & keyof BsCookieConsentAttributes]?: BsCookieConsent[K] } & { [K in keyof BsCookieConsent & keyof BsCookieConsentAttributes as `attr:${K}`]?: BsCookieConsentAttributes[K] } & { [K in keyof BsCookieConsent & keyof BsCookieConsentAttributes as `prop:${K}`]?: BsCookieConsent[K] };
7877
10227
  "bs-data-table": Omit<BsDataTable, keyof BsDataTableAttributes> & { [K in keyof BsDataTable & keyof BsDataTableAttributes]?: BsDataTable[K] } & { [K in keyof BsDataTable & keyof BsDataTableAttributes as `attr:${K}`]?: BsDataTableAttributes[K] } & { [K in keyof BsDataTable & keyof BsDataTableAttributes as `prop:${K}`]?: BsDataTable[K] };
7878
10228
  "bs-datepicker": Omit<BsDatepicker, keyof BsDatepickerAttributes> & { [K in keyof BsDatepicker & keyof BsDatepickerAttributes]?: BsDatepicker[K] } & { [K in keyof BsDatepicker & keyof BsDatepickerAttributes as `attr:${K}`]?: BsDatepickerAttributes[K] } & { [K in keyof BsDatepicker & keyof BsDatepickerAttributes as `prop:${K}`]?: BsDatepicker[K] };
7879
10229
  "bs-dialog": Omit<BsDialog, keyof BsDialogAttributes> & { [K in keyof BsDialog & keyof BsDialogAttributes]?: BsDialog[K] } & { [K in keyof BsDialog & keyof BsDialogAttributes as `attr:${K}`]?: BsDialogAttributes[K] } & { [K in keyof BsDialog & keyof BsDialogAttributes as `prop:${K}`]?: BsDialog[K] };
10230
+ "bs-error-page": Omit<BsErrorPage, keyof BsErrorPageAttributes> & { [K in keyof BsErrorPage & keyof BsErrorPageAttributes]?: BsErrorPage[K] } & { [K in keyof BsErrorPage & keyof BsErrorPageAttributes as `attr:${K}`]?: BsErrorPageAttributes[K] } & { [K in keyof BsErrorPage & keyof BsErrorPageAttributes as `prop:${K}`]?: BsErrorPage[K] };
7880
10231
  "bs-file-upload": Omit<BsFileUpload, keyof BsFileUploadAttributes> & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes]?: BsFileUpload[K] } & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes as `attr:${K}`]?: BsFileUploadAttributes[K] } & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes as `prop:${K}`]?: BsFileUpload[K] };
7881
10232
  "bs-file-upload-item": Omit<BsFileUploadItem, keyof BsFileUploadItemAttributes> & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes]?: BsFileUploadItem[K] } & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes as `attr:${K}`]?: BsFileUploadItemAttributes[K] } & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes as `prop:${K}`]?: BsFileUploadItem[K] };
7882
10233
  "bs-icon-button": Omit<BsIconButton, keyof BsIconButtonAttributes> & { [K in keyof BsIconButton & keyof BsIconButtonAttributes]?: BsIconButton[K] } & { [K in keyof BsIconButton & keyof BsIconButtonAttributes as `attr:${K}`]?: BsIconButtonAttributes[K] } & { [K in keyof BsIconButton & keyof BsIconButtonAttributes as `prop:${K}`]?: BsIconButton[K] };
10234
+ "bs-icon-tile": Omit<BsIconTile, keyof BsIconTileAttributes> & { [K in keyof BsIconTile & keyof BsIconTileAttributes]?: BsIconTile[K] } & { [K in keyof BsIconTile & keyof BsIconTileAttributes as `attr:${K}`]?: BsIconTileAttributes[K] } & { [K in keyof BsIconTile & keyof BsIconTileAttributes as `prop:${K}`]?: BsIconTile[K] };
7883
10235
  "bs-inline-tab": Omit<BsInlineTab, keyof BsInlineTabAttributes> & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes]?: BsInlineTab[K] } & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes as `attr:${K}`]?: BsInlineTabAttributes[K] } & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes as `prop:${K}`]?: BsInlineTab[K] };
7884
10236
  "bs-input": Omit<BsInput, keyof BsInputAttributes> & { [K in keyof BsInput & keyof BsInputAttributes]?: BsInput[K] } & { [K in keyof BsInput & keyof BsInputAttributes as `attr:${K}`]?: BsInputAttributes[K] } & { [K in keyof BsInput & keyof BsInputAttributes as `prop:${K}`]?: BsInput[K] };
7885
10237
  "bs-logo": Omit<BsLogo, keyof BsLogoAttributes> & { [K in keyof BsLogo & keyof BsLogoAttributes]?: BsLogo[K] } & { [K in keyof BsLogo & keyof BsLogoAttributes as `attr:${K}`]?: BsLogoAttributes[K] } & { [K in keyof BsLogo & keyof BsLogoAttributes as `prop:${K}`]?: BsLogo[K] };
@@ -7888,10 +10240,14 @@ declare namespace LocalJSX {
7888
10240
  "bs-navigation-drawer": Omit<BsNavigationDrawer, keyof BsNavigationDrawerAttributes> & { [K in keyof BsNavigationDrawer & keyof BsNavigationDrawerAttributes]?: BsNavigationDrawer[K] } & { [K in keyof BsNavigationDrawer & keyof BsNavigationDrawerAttributes as `attr:${K}`]?: BsNavigationDrawerAttributes[K] } & { [K in keyof BsNavigationDrawer & keyof BsNavigationDrawerAttributes as `prop:${K}`]?: BsNavigationDrawer[K] };
7889
10241
  "bs-navigation-drawer-item": Omit<BsNavigationDrawerItem, keyof BsNavigationDrawerItemAttributes> & { [K in keyof BsNavigationDrawerItem & keyof BsNavigationDrawerItemAttributes]?: BsNavigationDrawerItem[K] } & { [K in keyof BsNavigationDrawerItem & keyof BsNavigationDrawerItemAttributes as `attr:${K}`]?: BsNavigationDrawerItemAttributes[K] } & { [K in keyof BsNavigationDrawerItem & keyof BsNavigationDrawerItemAttributes as `prop:${K}`]?: BsNavigationDrawerItem[K] };
7890
10242
  "bs-navigation-header": Omit<BsNavigationHeader, keyof BsNavigationHeaderAttributes> & { [K in keyof BsNavigationHeader & keyof BsNavigationHeaderAttributes]?: BsNavigationHeader[K] } & { [K in keyof BsNavigationHeader & keyof BsNavigationHeaderAttributes as `attr:${K}`]?: BsNavigationHeaderAttributes[K] } & { [K in keyof BsNavigationHeader & keyof BsNavigationHeaderAttributes as `prop:${K}`]?: BsNavigationHeader[K] };
10243
+ "bs-onboarding-checklist": Omit<BsOnboardingChecklist, keyof BsOnboardingChecklistAttributes> & { [K in keyof BsOnboardingChecklist & keyof BsOnboardingChecklistAttributes]?: BsOnboardingChecklist[K] } & { [K in keyof BsOnboardingChecklist & keyof BsOnboardingChecklistAttributes as `attr:${K}`]?: BsOnboardingChecklistAttributes[K] } & { [K in keyof BsOnboardingChecklist & keyof BsOnboardingChecklistAttributes as `prop:${K}`]?: BsOnboardingChecklist[K] };
7891
10244
  "bs-pagination": Omit<BsPagination, keyof BsPaginationAttributes> & { [K in keyof BsPagination & keyof BsPaginationAttributes]?: BsPagination[K] } & { [K in keyof BsPagination & keyof BsPaginationAttributes as `attr:${K}`]?: BsPaginationAttributes[K] } & { [K in keyof BsPagination & keyof BsPaginationAttributes as `prop:${K}`]?: BsPagination[K] };
10245
+ "bs-product-tour": Omit<BsProductTour, keyof BsProductTourAttributes> & { [K in keyof BsProductTour & keyof BsProductTourAttributes]?: BsProductTour[K] } & { [K in keyof BsProductTour & keyof BsProductTourAttributes as `attr:${K}`]?: BsProductTourAttributes[K] } & { [K in keyof BsProductTour & keyof BsProductTourAttributes as `prop:${K}`]?: BsProductTour[K] };
7892
10246
  "bs-progress": Omit<BsProgress, keyof BsProgressAttributes> & { [K in keyof BsProgress & keyof BsProgressAttributes]?: BsProgress[K] } & { [K in keyof BsProgress & keyof BsProgressAttributes as `attr:${K}`]?: BsProgressAttributes[K] } & { [K in keyof BsProgress & keyof BsProgressAttributes as `prop:${K}`]?: BsProgress[K] };
7893
10247
  "bs-progress-linear": Omit<BsProgressLinear, keyof BsProgressLinearAttributes> & { [K in keyof BsProgressLinear & keyof BsProgressLinearAttributes]?: BsProgressLinear[K] } & { [K in keyof BsProgressLinear & keyof BsProgressLinearAttributes as `attr:${K}`]?: BsProgressLinearAttributes[K] } & { [K in keyof BsProgressLinear & keyof BsProgressLinearAttributes as `prop:${K}`]?: BsProgressLinear[K] };
10248
+ "bs-qr-code": Omit<BsQrCode, keyof BsQrCodeAttributes> & { [K in keyof BsQrCode & keyof BsQrCodeAttributes]?: BsQrCode[K] } & { [K in keyof BsQrCode & keyof BsQrCodeAttributes as `attr:${K}`]?: BsQrCodeAttributes[K] } & { [K in keyof BsQrCode & keyof BsQrCodeAttributes as `prop:${K}`]?: BsQrCode[K] };
7894
10249
  "bs-radio": Omit<BsRadio, keyof BsRadioAttributes> & { [K in keyof BsRadio & keyof BsRadioAttributes]?: BsRadio[K] } & { [K in keyof BsRadio & keyof BsRadioAttributes as `attr:${K}`]?: BsRadioAttributes[K] } & { [K in keyof BsRadio & keyof BsRadioAttributes as `prop:${K}`]?: BsRadio[K] };
10250
+ "bs-session-timeout": Omit<BsSessionTimeout, keyof BsSessionTimeoutAttributes> & { [K in keyof BsSessionTimeout & keyof BsSessionTimeoutAttributes]?: BsSessionTimeout[K] } & { [K in keyof BsSessionTimeout & keyof BsSessionTimeoutAttributes as `attr:${K}`]?: BsSessionTimeoutAttributes[K] } & { [K in keyof BsSessionTimeout & keyof BsSessionTimeoutAttributes as `prop:${K}`]?: BsSessionTimeout[K] };
7895
10251
  "bs-slider": Omit<BsSlider, keyof BsSliderAttributes> & { [K in keyof BsSlider & keyof BsSliderAttributes]?: BsSlider[K] } & { [K in keyof BsSlider & keyof BsSliderAttributes as `attr:${K}`]?: BsSliderAttributes[K] } & { [K in keyof BsSlider & keyof BsSliderAttributes as `prop:${K}`]?: BsSlider[K] };
7896
10252
  "bs-snackbar": Omit<BsSnackbar, keyof BsSnackbarAttributes> & { [K in keyof BsSnackbar & keyof BsSnackbarAttributes]?: BsSnackbar[K] } & { [K in keyof BsSnackbar & keyof BsSnackbarAttributes as `attr:${K}`]?: BsSnackbarAttributes[K] } & { [K in keyof BsSnackbar & keyof BsSnackbarAttributes as `prop:${K}`]?: BsSnackbar[K] };
7897
10253
  "bs-source-link": Omit<BsSourceLink, keyof BsSourceLinkAttributes> & { [K in keyof BsSourceLink & keyof BsSourceLinkAttributes]?: BsSourceLink[K] } & { [K in keyof BsSourceLink & keyof BsSourceLinkAttributes as `attr:${K}`]?: BsSourceLinkAttributes[K] } & { [K in keyof BsSourceLink & keyof BsSourceLinkAttributes as `prop:${K}`]?: BsSourceLink[K] };
@@ -7903,6 +10259,8 @@ declare namespace LocalJSX {
7903
10259
  "bs-timepicker": Omit<BsTimepicker, keyof BsTimepickerAttributes> & { [K in keyof BsTimepicker & keyof BsTimepickerAttributes]?: BsTimepicker[K] } & { [K in keyof BsTimepicker & keyof BsTimepickerAttributes as `attr:${K}`]?: BsTimepickerAttributes[K] } & { [K in keyof BsTimepicker & keyof BsTimepickerAttributes as `prop:${K}`]?: BsTimepicker[K] };
7904
10260
  "bs-toast": Omit<BsToast, keyof BsToastAttributes> & { [K in keyof BsToast & keyof BsToastAttributes]?: BsToast[K] } & { [K in keyof BsToast & keyof BsToastAttributes as `attr:${K}`]?: BsToastAttributes[K] } & { [K in keyof BsToast & keyof BsToastAttributes as `prop:${K}`]?: BsToast[K] };
7905
10261
  "bs-tooltip": Omit<BsTooltip, keyof BsTooltipAttributes> & { [K in keyof BsTooltip & keyof BsTooltipAttributes]?: BsTooltip[K] } & { [K in keyof BsTooltip & keyof BsTooltipAttributes as `attr:${K}`]?: BsTooltipAttributes[K] } & { [K in keyof BsTooltip & keyof BsTooltipAttributes as `prop:${K}`]?: BsTooltip[K] };
10262
+ "bs-whats-new": Omit<BsWhatsNew, keyof BsWhatsNewAttributes> & { [K in keyof BsWhatsNew & keyof BsWhatsNewAttributes]?: BsWhatsNew[K] } & { [K in keyof BsWhatsNew & keyof BsWhatsNewAttributes as `attr:${K}`]?: BsWhatsNewAttributes[K] } & { [K in keyof BsWhatsNew & keyof BsWhatsNewAttributes as `prop:${K}`]?: BsWhatsNew[K] };
10263
+ "bs-whats-new-entry": Omit<BsWhatsNewEntry, keyof BsWhatsNewEntryAttributes> & { [K in keyof BsWhatsNewEntry & keyof BsWhatsNewEntryAttributes]?: BsWhatsNewEntry[K] } & { [K in keyof BsWhatsNewEntry & keyof BsWhatsNewEntryAttributes as `attr:${K}`]?: BsWhatsNewEntryAttributes[K] } & { [K in keyof BsWhatsNewEntry & keyof BsWhatsNewEntryAttributes as `prop:${K}`]?: BsWhatsNewEntry[K] };
7906
10264
  }
7907
10265
  }
7908
10266
  export { LocalJSX as JSX };
@@ -8138,6 +10496,9 @@ declare module "@stencil/core" {
8138
10496
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
8139
10497
  * it for actions that actually delete/revoke/undo something.
8140
10498
  * @prop --bs-button-radius - Corner radius. Aliased to `--bs-border-radius-100` by default.
10499
+ * @prop --bs-button-padding-x-sm - Left/right padding of a label-only button at `size="sm"`. Aliased to `--bs-spacing-300`.
10500
+ * @prop --bs-button-width - Width of the button. `auto` by default (fits its content); set `100%` for a full-width button, e.g. `bs-button { --bs-button-width: 100%; }`.
10501
+ * @prop --bs-button-subtle-color - Label/icon colour, `variant="subtle"`. Aliased to `--bs-color-neutral-default`; set it to `var(--bs-text-action)` for a blue text button.
8141
10502
  * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
8142
10503
  * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
8143
10504
  * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
@@ -8524,6 +10885,30 @@ declare module "@stencil/core" {
8524
10885
  * every `type`). Aliased to `--bs-color-neutral-container-hover`.
8525
10886
  */
8526
10887
  "bs-composer-status-banner": LocalJSX.IntrinsicElements["bs-composer-status-banner"] & JSXBase.HTMLAttributes<HTMLBsComposerStatusBannerElement>;
10888
+ /**
10889
+ * A cookie consent prompt in four forms, matching the Figma "Cookie consent" component:
10890
+ * - `banner` -- a wide bar: icon, heading, text, policy link, and Customise / Reject optional / Accept
10891
+ * all. Stacks into a column on narrow containers (its own width, not the viewport's).
10892
+ * - `card` -- the compact version of the same question, in a card.
10893
+ * - `preferences` -- the detailed dialog: one row per cookie category with a switch (strictly
10894
+ * necessary is "Always on"), an expandable list of the cookies in each, and Reject optional /
10895
+ * Accept all / Save choices.
10896
+ * - `saved` -- a dark confirmation bar ("Cookie choices saved") with a Change action.
10897
+ * The component only collects the choice. It doesn't set, read or delete cookies, remember that the
10898
+ * user answered, or decide when to show itself: your app does that from the events, and swaps `type`
10899
+ * (e.g. `banner` -> `preferences` on `bsCustomise`, `preferences` -> `saved` on `bsSave`).
10900
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions),
10901
+ * `bs-switch` (the category switches), `bs-chip-informative` (the "Always on" badge), `bs-icon-button`
10902
+ * (the close button), `bs-snackbar` (the saved confirmation).
10903
+ * ## When to use
10904
+ * - Asking for consent to optional cookies or similar tracking, as the law of your market requires.
10905
+ * ## When not to use
10906
+ * - Telling people about necessary cookies only -- that needs no consent prompt.
10907
+ * ## Fair choice
10908
+ * "Reject optional" has the same prominence as "Accept all" (same size, both always visible). Keep it
10909
+ * that way: a prompt that makes refusing harder than accepting isn't valid consent in most places.
10910
+ */
10911
+ "bs-cookie-consent": LocalJSX.IntrinsicElements["bs-cookie-consent"] & JSXBase.HTMLAttributes<HTMLBsCookieConsentElement>;
8527
10912
  /**
8528
10913
  * A sortable, optionally row-selectable table for tabular data.
8529
10914
  * `columns`, `rows`, and `cellRenderer` are JS-property-only — HTML attributes can only carry
@@ -8544,6 +10929,7 @@ declare module "@stencil/core" {
8544
10929
  * ISO timestamps -- so a date can't shift by a day across time zones.
8545
10930
  * The calendar renders inline at a fixed width; to show it as a popover, put it inside a
8546
10931
  * `bs-menu` or your own overlay.
10932
+ * **Built from:** `bs-card` (the surface), `bs-input` (the month/year dropdown triggers and the range date fields), `bs-menu` and `bs-menu-item` (the month/year lists).
8547
10933
  * ## When to use
8548
10934
  * - Picking a date where seeing the surrounding days of the week/month helps (a booking, a
8549
10935
  * deadline, a report window).
@@ -8574,6 +10960,21 @@ declare module "@stencil/core" {
8574
10960
  * button in the header row next to the heading, same as before this addition.
8575
10961
  */
8576
10962
  "bs-dialog": LocalJSX.IntrinsicElements["bs-dialog"] & JSXBase.HTMLAttributes<HTMLBsDialogElement>;
10963
+ /**
10964
+ * A full-block page for when the user can't get to what they asked for: page not found (404), a server
10965
+ * error (500), no access (403), planned maintenance, or no internet connection. Matches the Figma
10966
+ * "Error page" component's five states.
10967
+ * Each `type` brings its own icon, tint, code label ("404", "Maintenance", ...), heading, paragraph and
10968
+ * buttons, all overridable by props. The component doesn't navigate or retry anything: it emits
10969
+ * `bsPrimary` / `bsSecondary` and your app decides what "Go to Overview" or "Try again" does.
10970
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions).
10971
+ * ## When to use
10972
+ * - Replacing the content of a page or panel that can't be shown, with a clear way forward.
10973
+ * ## When not to use
10974
+ * - A problem with one field or one action -- use inline validation or a `bs-snackbar`.
10975
+ * - A blocking question the user must answer -- use `bs-dialog`.
10976
+ */
10977
+ "bs-error-page": LocalJSX.IntrinsicElements["bs-error-page"] & JSXBase.HTMLAttributes<HTMLBsErrorPageElement>;
8577
10978
  /**
8578
10979
  * A file dropzone: drag files onto it, or press "Browse file" to open the file picker. It reports
8579
10980
  * the chosen files and does nothing else -- the consuming app owns the upload itself and shows its
@@ -8617,6 +11018,21 @@ declare module "@stencil/core" {
8617
11018
  * accessible name.
8618
11019
  */
8619
11020
  "bs-icon-button": LocalJSX.IntrinsicElements["bs-icon-button"] & JSXBase.HTMLAttributes<HTMLBsIconButtonElement>;
11021
+ /**
11022
+ * A small rounded square holding an icon, tinted by intent -- the visual marker next to a status,
11023
+ * a list item or a feature. Matches the Figma "Icon tile" component (3 sizes x 6 intents).
11024
+ * Each intent shows a default glyph (house, check, warning, cross, grid, info); put your own icon in
11025
+ * the default slot to replace it. A slotted icon is sized to the tile (12/16/24px) and coloured
11026
+ * with the intent's icon colour, as long as it draws with `currentColor`.
11027
+ * The tile is decorative by default (hidden from assistive tech). Don't rely on the colour or glyph
11028
+ * alone to convey status: slot text into `text` (it sits beside the square, in
11029
+ * `--bs-icon-tile-text-color`), or set `label` to give the tile its own accessible name.
11030
+ * ## When to use
11031
+ * - Marking a row, card or message with a status or category icon.
11032
+ * ## When not to use
11033
+ * - As a button -- it isn't interactive. Use `bs-icon-button`.
11034
+ */
11035
+ "bs-icon-tile": LocalJSX.IntrinsicElements["bs-icon-tile"] & JSXBase.HTMLAttributes<HTMLBsIconTileElement>;
8620
11036
  /**
8621
11037
  * A pill-shaped tab button -- an optional leading icon plus a text label, rendered as a real
8622
11038
  * `<button>` so it participates correctly in tab order and native click/keyboard activation.
@@ -8811,6 +11227,31 @@ declare module "@stencil/core" {
8811
11227
  * `right` slot content pushed to the far right.
8812
11228
  */
8813
11229
  "bs-navigation-header": LocalJSX.IntrinsicElements["bs-navigation-header"] & JSXBase.HTMLAttributes<HTMLBsNavigationHeaderElement>;
11230
+ /**
11231
+ * A "get set up" checklist, in four forms that matching the Figma "Onboarding checklist" component:
11232
+ * - `panel` -- the full list: heading, progress, every step with a status icon, and the current step
11233
+ * expanded with its description, time estimate, Skip for now and a primary action.
11234
+ * - `dashboard` -- a wide card for the top of a page: summary and progress on the left, the current step
11235
+ * and the next ones as small cards on the right, and a "See all steps" link.
11236
+ * - `launcher` -- a small always-visible chip that reopens the checklist; three layouts (`icon`, `ring`,
11237
+ * `inline`).
11238
+ * - `completion` -- the "You're all set" card once every step is done.
11239
+ * The component shows progress and reports what the user pressed. It doesn't know what a step means,
11240
+ * run it, or remember anything: your app owns the steps (`steps`, each with `done`), marks them done, and
11241
+ * decides which form to show.
11242
+ * **Built from:** `bs-card` (every surface), `bs-icon-tile` (the icons), `bs-button` (the actions),
11243
+ * `bs-icon-button` (the close button), `bs-progress-linear` (the progress bar), `bs-progress` (the launcher
11244
+ * ring).
11245
+ * ## When to use
11246
+ * - Guiding a new account or user through a short list of setup tasks they can do in any order or later.
11247
+ * ## When not to use
11248
+ * - A strict, linear flow where each step needs the one before -- use `bs-stepper`.
11249
+ * - A tour of the interface itself -- use `bs-product-tour`.
11250
+ * ## Accessibility
11251
+ * Steps are an ordered list; the current one has `aria-current="step"`, and each step carries a visually
11252
+ * hidden "Done" / "Not done". The progress bar is named with the progress text.
11253
+ */
11254
+ "bs-onboarding-checklist": LocalJSX.IntrinsicElements["bs-onboarding-checklist"] & JSXBase.HTMLAttributes<HTMLBsOnboardingChecklistElement>;
8814
11255
  /**
8815
11256
  * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
8816
11257
  * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
@@ -8827,6 +11268,24 @@ declare module "@stencil/core" {
8827
11268
  * plain prev/next controls (no numbers) are simpler there.
8828
11269
  */
8829
11270
  "bs-pagination": LocalJSX.IntrinsicElements["bs-pagination"] & JSXBase.HTMLAttributes<HTMLBsPaginationElement>;
11271
+ /**
11272
+ * One step of a product tour: a centred **welcome** or **success** card with an art tile, or a
11273
+ * **pointer** card -- a compact step with a close button, a "1 of 3" progress label and Back/Next
11274
+ * actions -- whose arrow points at the thing it describes. Matches the Figma "Product Tour" and
11275
+ * "Pointer" components.
11276
+ * This is the step *card* only. It doesn't run a tour: it has no overlay, no spotlight, no
11277
+ * positioning against a target and no step sequencing. Your code decides which step is showing,
11278
+ * places the card next to its target (the arrow can sit on any of 12 positions via `direction`),
11279
+ * and moves on from `bsPrimary`/`bsSecondary`.
11280
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the art tile), `bs-button` (the actions), `bs-icon-button` (the close button).
11281
+ * ## When to use
11282
+ * - Introducing a feature on first run (`welcome`), confirming a finished tour (`success`), or
11283
+ * walking through the UI one pointer at a time (`pointer`).
11284
+ * ## When not to use
11285
+ * - A blocking decision or form -- use `bs-dialog`.
11286
+ * - A hint on hover or focus -- use `bs-tooltip`.
11287
+ */
11288
+ "bs-product-tour": LocalJSX.IntrinsicElements["bs-product-tour"] & JSXBase.HTMLAttributes<HTMLBsProductTourElement>;
8830
11289
  /**
8831
11290
  * A circular progress indicator -- either a static ring showing a percentage sweep
8832
11291
  * (`type="determinate"`) or a continuously spinning ring signaling in-progress work with no known
@@ -8856,6 +11315,28 @@ declare module "@stencil/core" {
8856
11315
  * weight of a bar.
8857
11316
  */
8858
11317
  "bs-progress-linear": LocalJSX.IntrinsicElements["bs-progress-linear"] & JSXBase.HTMLAttributes<HTMLBsProgressLinearElement>;
11318
+ /**
11319
+ * A block for sharing a link or taking a payment by QR code: a heading, the code on a white quiet
11320
+ * zone, the URL (or the amount, for payments) as text, an optional expiry chip, and Download and
11321
+ * Copy link actions. Matches the Figma "QR code" component (3 sizes x 2 types x 5 states, plus the
11322
+ * "with logo" variant).
11323
+ * **This component draws a code, it doesn't encode one.** Generate the real code in your product
11324
+ * with a QR library and hand it over either as a `matrix` (a square `boolean[][]`, `true` = dark
11325
+ * module) or as your own element in the `code` slot (an `<img>`, `<svg>` or `<canvas>`).
11326
+ * The code always sits on a white quiet zone with black modules, in dark mode too -- scanners need
11327
+ * the contrast.
11328
+ * **Built from:** `bs-card` (the surface), `bs-button` (Download, Copy link, Retry, Refresh), `bs-progress` (the loading spinner), `bs-chip-informative` (the expiry chip), `bs-icon-button` (the close button).
11329
+ * ## When to use
11330
+ * - Sharing a link to an order, document or page that someone will open on a phone.
11331
+ * - Taking a payment with an amount (`type="payment"`).
11332
+ * ## When not to use
11333
+ * - Encoding long text blobs -- a QR code that dense is hard to scan at the sizes here.
11334
+ * ## States
11335
+ * `loading` (generating the code), `error` (couldn't generate it; Retry), `expired` (Refresh) and
11336
+ * `scanned` (done: "Scanned", or "Payment received" for payments). Download and Copy link are disabled
11337
+ * in every state but `default`, and hidden once `scanned`.
11338
+ */
11339
+ "bs-qr-code": LocalJSX.IntrinsicElements["bs-qr-code"] & JSXBase.HTMLAttributes<HTMLBsQrCodeElement>;
8859
11340
  /**
8860
11341
  * A single radio button with its label, for one mutually-exclusive choice within a group.
8861
11342
  * ## When to use
@@ -8867,6 +11348,33 @@ declare module "@stencil/core" {
8867
11348
  * - An on/off setting that takes effect immediately (no explicit form submission) -- use `bs-switch`.
8868
11349
  */
8869
11350
  "bs-radio": LocalJSX.IntrinsicElements["bs-radio"] & JSXBase.HTMLAttributes<HTMLBsRadioElement>;
11351
+ /**
11352
+ * The three moments around an expiring session, as one card. Matches the Figma "Session timeout"
11353
+ * component's three types:
11354
+ * - `warning` -- "You'll be signed out soon": a live countdown with a draining bar, an optional
11355
+ * "your work is saved" note, and Sign out now / Stay signed in.
11356
+ * - `signed-out` -- "You've been signed out": who was signed in, with Sign in again and Use a different
11357
+ * account.
11358
+ * - `confirm-identity` -- "Confirm it's you": a fresh password check before a sensitive action, with
11359
+ * passkey / BankID alternatives and Cancel.
11360
+ * The component never signs anyone in or out. It shows the state and emits `bsPrimary`, `bsSecondary`,
11361
+ * `bsAlternative`, `bsCancel` and `bsExpire`; your app talks to the identity provider.
11362
+ * **Built from:** `bs-card` (the surface), `bs-icon-tile` (the icon), `bs-button` (the actions),
11363
+ * `bs-progress-linear` (the countdown bar), `bs-avatar` (the signed-in account), `bs-input` (the
11364
+ * password field).
11365
+ * ## When to use
11366
+ * - Warning someone, before it happens, that an inactivity timeout is about to end their session.
11367
+ * - Telling someone their session ended, and letting them pick up where they left off.
11368
+ * - Asking for a fresh credential before a sensitive action.
11369
+ * ## When not to use
11370
+ * - A first-time sign-in page -- this assumes there was a session.
11371
+ * - Anything that is not about the session or the user's identity -- use `bs-dialog`.
11372
+ * ## Accessibility
11373
+ * The card is a labelled region. The countdown is a `timer` and is *not* announced every second; a polite
11374
+ * live region announces the time left at 60, 30 and 10 seconds instead. Wrap the card in your own modal
11375
+ * (`bs-dialog`) if the warning must trap focus.
11376
+ */
11377
+ "bs-session-timeout": LocalJSX.IntrinsicElements["bs-session-timeout"] & JSXBase.HTMLAttributes<HTMLBsSessionTimeoutElement>;
8870
11378
  /**
8871
11379
  * A slider for picking a single numeric value (`type="default"`), a value snapped to evenly
8872
11380
  * spaced ticks (`type="segmented"`), or a min/max pair (`type="range"`) from within a bounded
@@ -9027,6 +11535,7 @@ declare module "@stencil/core" {
9027
11535
  * `value` is always 24-hour `HH:mm` (e.g. `"14:30"`), regardless of the displayed `format`.
9028
11536
  * The picker renders inline at a fixed width; to show it as a popover, put it in your own overlay
9029
11537
  * and close that overlay from `bsChange`/`bsCancel`.
11538
+ * **Built from:** `bs-card` (the surface), `bs-switch` (the 24h toggle), `bs-input` (the AM/PM dropdown), `bs-button` (Cancel/Confirm).
9030
11539
  * ## When to use
9031
11540
  * - Picking a time of day where the user steps through hours and minutes.
9032
11541
  * ## When not to use
@@ -9073,6 +11582,37 @@ declare module "@stencil/core" {
9073
11582
  * `--bs-line-height-body-sm`.
9074
11583
  */
9075
11584
  "bs-tooltip": LocalJSX.IntrinsicElements["bs-tooltip"] & JSXBase.HTMLAttributes<HTMLBsTooltipElement>;
11585
+ /**
11586
+ * A product's "What's new" surface, in three forms matching the Figma component:
11587
+ * - `feed` -- a docked panel: heading, "Mark all as read", filter tabs, the list of updates (each a
11588
+ * `bs-whats-new-entry`) and a link to the full release notes.
11589
+ * - `announcement` -- one big update, with a hero image, a tag, a heading, a few bullet points, "1 of 3"
11590
+ * and Remind me later / Next.
11591
+ * - `teaser` -- a small card pointing at the feed: tag, date, heading, a line of text and "Open What's new".
11592
+ * The component only shows what you give it and reports what the user pressed. It doesn't fetch updates,
11593
+ * track which the user has seen, or decide when to appear: your app owns `entries` (with their `unread`
11594
+ * flags) and reacts to the events.
11595
+ * **Built from:** `bs-card` (the surface), `bs-whats-new-entry` (each update), `bs-tabs` (the filters),
11596
+ * `bs-chip-informative` (the tags), `bs-button`, `bs-icon-button`.
11597
+ * ## When to use
11598
+ * - Telling users about changes to the product, in a place they can come back to.
11599
+ * ## When not to use
11600
+ * - Messages about the user's own data or an action they just took -- use `bs-snackbar`, `bs-toast`.
11601
+ * - A guided walk through the interface -- use `bs-product-tour`.
11602
+ */
11603
+ "bs-whats-new": LocalJSX.IntrinsicElements["bs-whats-new"] & JSXBase.HTMLAttributes<HTMLBsWhatsNewElement>;
11604
+ /**
11605
+ * One update in a "What's new" list: a tag ("New feature", "Improvement", "Fix"), a date, an unread dot,
11606
+ * an optional image, a title, a short description and an optional action link ("Try it"). Matches the Figma
11607
+ * "What's new / Entry" component. It is a plain block of content -- no card -- so it can sit in a feed
11608
+ * (`bs-whats-new`), a list, or a page of release notes.
11609
+ * **Built from:** `bs-chip-informative` (the tag) and `bs-button` (the action).
11610
+ * ## When to use
11611
+ * - Announcing a change to the product, with enough detail to know whether it matters.
11612
+ * ## When not to use
11613
+ * - A message about the user's own data or an action they just took -- use `bs-snackbar` or `bs-toast`.
11614
+ */
11615
+ "bs-whats-new-entry": LocalJSX.IntrinsicElements["bs-whats-new-entry"] & JSXBase.HTMLAttributes<HTMLBsWhatsNewEntryElement>;
9076
11616
  }
9077
11617
  }
9078
11618
  }