@brandsync/wc 1.9.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 (440) hide show
  1. package/custom-elements.json +8864 -3754
  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-107b1c5d.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-7c94e6ae.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-0e39b9cc.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-6bf2f116.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-6fd7dd6a.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-33e44094.entry.js → p-2368a92e.entry.js} +1 -1
  19. package/dist/brandsync-wc/{p-29027559.entry.js → p-247e36ad.entry.js} +1 -1
  20. package/dist/brandsync-wc/{p-ae978c9a.entry.js → p-2497d128.entry.js} +1 -1
  21. package/dist/brandsync-wc/{p-fc240aa0.entry.js → p-282ddbee.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-0eed6813.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-062cfa34.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-3ec74d35.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-a09e157f.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-cfcf3f0a.entry.js → p-69c0a85d.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-9f65f998.entry.js → p-6a696161.entry.js} +1 -1
  37. package/dist/brandsync-wc/{p-8ee0153b.entry.js → p-6c6cdf77.entry.js} +1 -1
  38. package/dist/brandsync-wc/{p-051d3064.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-27bbed83.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-de7c946d.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-70f64b25.entry.js → p-a9169157.entry.js} +1 -1
  49. package/dist/brandsync-wc/{p-05c7de28.entry.js → p-afb07368.entry.js} +1 -1
  50. package/dist/brandsync-wc/{p-235ae012.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-c0a92750.entry.js +1 -0
  55. package/dist/brandsync-wc/{p-6331de9c.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-3176d1d3.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-4574a707.entry.js → p-e5daa6ca.entry.js} +1 -1
  61. package/dist/brandsync-wc/{p-c4de155c.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-114d2fd8.entry.js → p-f7d15fbe.entry.js} +1 -1
  64. package/dist/brandsync-wc/{p-a0d5a620.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 +414 -0
  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.cjs.entry.js → bs-input_3.cjs.entry.js} +74 -6
  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 +209 -0
  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 +11 -0
  131. package/dist/collection/components/bs-a11y.cmp.test.js +26 -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 +191 -0
  156. package/dist/collection/components/bs-datepicker/bs-datepicker.css +325 -0
  157. package/dist/collection/components/bs-datepicker/bs-datepicker.js +788 -0
  158. package/dist/collection/components/bs-datepicker/bs-datepicker.stories.js +64 -0
  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 +7 -4
  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.cmp.test.js +141 -0
  207. package/dist/collection/components/bs-timepicker/bs-timepicker.css +204 -0
  208. package/dist/collection/components/bs-timepicker/bs-timepicker.js +511 -0
  209. package/dist/collection/components/bs-timepicker/bs-timepicker.stories.js +44 -0
  210. package/dist/collection/components/bs-toast/bs-toast.js +1 -1
  211. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  212. package/dist/collection/components/bs-whats-new/bs-whats-new.cmp.test.js +200 -0
  213. package/dist/collection/components/bs-whats-new/bs-whats-new.css +315 -0
  214. package/dist/collection/components/bs-whats-new/bs-whats-new.js +790 -0
  215. package/dist/collection/components/bs-whats-new/bs-whats-new.stories.js +105 -0
  216. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.cmp.test.js +79 -0
  217. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.css +131 -0
  218. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.js +295 -0
  219. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.stories.js +67 -0
  220. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +2 -2
  221. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  222. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +1 -1
  223. package/dist/components/bs-accordion.js +1 -1
  224. package/dist/components/bs-ai-disclaimer.js +1 -1
  225. package/dist/components/bs-ai-greeting.js +1 -1
  226. package/dist/components/bs-ai-thinking.js +1 -1
  227. package/dist/components/bs-attachment-list.js +1 -1
  228. package/dist/components/bs-attachment.js +1 -1
  229. package/dist/components/bs-avatar.js +1 -1
  230. package/dist/components/bs-badge.js +1 -1
  231. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  232. package/dist/components/bs-breadcrumb.js +1 -1
  233. package/dist/components/bs-breadcrumbs.js +1 -1
  234. package/dist/components/bs-button-skeleton.js +1 -1
  235. package/dist/components/bs-button.js +1 -1
  236. package/dist/components/bs-card.js +1 -1
  237. package/dist/components/bs-carousel.js +1 -1
  238. package/dist/components/bs-chatbot-feedback.js +1 -1
  239. package/dist/components/bs-chatbot-header.js +1 -1
  240. package/dist/components/bs-chatbot-response-action.js +1 -1
  241. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  242. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  243. package/dist/components/bs-checkbox-skeleton.js +1 -1
  244. package/dist/components/bs-checkbox.js +1 -1
  245. package/dist/components/bs-chip-filter.js +1 -1
  246. package/dist/components/bs-chip-informative.js +1 -1
  247. package/dist/components/bs-chip-input.js +1 -1
  248. package/dist/components/bs-composer-status-banner.js +1 -1
  249. package/dist/components/bs-composer.js +1 -1
  250. package/dist/components/bs-cookie-consent.d.ts +11 -0
  251. package/dist/components/bs-cookie-consent.js +1 -0
  252. package/dist/components/bs-data-table.js +1 -1
  253. package/dist/components/bs-datepicker.d.ts +11 -0
  254. package/dist/components/bs-datepicker.js +1 -0
  255. package/dist/components/bs-dialog.js +1 -1
  256. package/dist/components/bs-error-page.d.ts +11 -0
  257. package/dist/components/bs-error-page.js +1 -0
  258. package/dist/components/bs-file-upload-item.js +1 -1
  259. package/dist/components/bs-file-upload.js +1 -1
  260. package/dist/components/bs-icon-button.js +1 -1
  261. package/dist/components/bs-icon-tile.d.ts +11 -0
  262. package/dist/components/bs-icon-tile.js +1 -0
  263. package/dist/components/bs-inline-tab.js +1 -1
  264. package/dist/components/bs-input.js +1 -1
  265. package/dist/components/bs-logo.js +1 -1
  266. package/dist/components/bs-menu-item.js +1 -1
  267. package/dist/components/bs-menu.js +1 -1
  268. package/dist/components/bs-navigation-drawer-item.js +1 -1
  269. package/dist/components/bs-navigation-drawer.js +1 -1
  270. package/dist/components/bs-navigation-header.js +1 -1
  271. package/dist/components/bs-onboarding-checklist.d.ts +11 -0
  272. package/dist/components/bs-onboarding-checklist.js +1 -0
  273. package/dist/components/bs-pagination.js +1 -1
  274. package/dist/components/bs-product-tour.d.ts +11 -0
  275. package/dist/components/bs-product-tour.js +1 -0
  276. package/dist/components/bs-progress-linear.js +1 -1
  277. package/dist/components/bs-progress.js +1 -1
  278. package/dist/components/bs-qr-code.d.ts +11 -0
  279. package/dist/components/bs-qr-code.js +1 -0
  280. package/dist/components/bs-radio.js +1 -1
  281. package/dist/components/bs-session-timeout.d.ts +11 -0
  282. package/dist/components/bs-session-timeout.js +1 -0
  283. package/dist/components/bs-slider.js +1 -1
  284. package/dist/components/bs-snackbar.js +1 -1
  285. package/dist/components/bs-source-link.js +1 -1
  286. package/dist/components/bs-stepper-step.js +1 -1
  287. package/dist/components/bs-stepper.js +1 -1
  288. package/dist/components/bs-switch.js +1 -1
  289. package/dist/components/bs-tab.js +1 -1
  290. package/dist/components/bs-tabs.js +1 -1
  291. package/dist/components/bs-timepicker.d.ts +11 -0
  292. package/dist/components/bs-timepicker.js +1 -0
  293. package/dist/components/bs-toast.js +1 -1
  294. package/dist/components/bs-tooltip.js +1 -1
  295. package/dist/components/bs-whats-new-entry.d.ts +11 -0
  296. package/dist/components/bs-whats-new-entry.js +1 -0
  297. package/dist/components/bs-whats-new.d.ts +11 -0
  298. package/dist/components/bs-whats-new.js +1 -0
  299. package/dist/components/index.js +1 -1
  300. package/dist/components/{p-R2MlkUzD.js → p-BEEoVNRu.js} +1 -1
  301. package/dist/components/{p-EtXc94lJ.js → p-BZ3M4lOU.js} +1 -1
  302. package/dist/components/p-B_I4UEMp.js +1 -0
  303. package/dist/components/{p-BfEyD6Ku.js → p-Be9L4_Fe.js} +1 -1
  304. package/dist/components/p-Be_Pmccm.js +1 -0
  305. package/dist/components/p-Bl_tVzeq.js +1 -0
  306. package/dist/components/p-C8yT2Ucq.js +1 -0
  307. package/dist/components/p-CA31vqjL.js +1 -0
  308. package/dist/components/p-CUfs0ROR.js +1 -0
  309. package/dist/components/{p-JYlmcxBn.js → p-CVrEuVFo.js} +1 -1
  310. package/dist/components/{p-BA3c9Rom.js → p-C_j_jDM6.js} +1 -1
  311. package/dist/components/p-CbimDNGY.js +1 -0
  312. package/dist/components/{p-Buly0d5G.js → p-CeUK3n7D.js} +1 -1
  313. package/dist/components/p-CncySD_-.js +1 -0
  314. package/dist/components/p-DE8K7fg0.js +1 -0
  315. package/dist/components/p-Dr0Qk9Zc.js +1 -0
  316. package/dist/components/p-DuLL7Ouw.js +1 -0
  317. package/dist/components/p-YsHQLXET.js +1 -0
  318. package/dist/components/p-qmS2CBqi.js +1 -0
  319. package/dist/components/{p-BoeorHNv.js → p-zTHlbyH6.js} +1 -1
  320. package/dist/esm/brandsync-wc.js +3 -3
  321. package/dist/esm/bs-accordion.entry.js +1 -1
  322. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  323. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  324. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  325. package/dist/esm/bs-attachment-list.entry.js +2 -2
  326. package/dist/esm/bs-attachment.entry.js +1 -1
  327. package/dist/esm/bs-avatar.entry.js +1 -1
  328. package/dist/esm/bs-badge.entry.js +1 -1
  329. package/dist/esm/bs-breadcrumb-overflow.entry.js +1 -1
  330. package/dist/esm/bs-breadcrumb.entry.js +1 -1
  331. package/dist/esm/bs-breadcrumbs.entry.js +2 -2
  332. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  333. package/dist/esm/bs-button.entry.js +3 -3
  334. package/dist/esm/bs-card.entry.js +3 -3
  335. package/dist/esm/bs-carousel.entry.js +1 -1
  336. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  337. package/dist/esm/bs-chatbot-header.entry.js +2 -2
  338. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  339. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  340. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  341. package/dist/esm/bs-checkbox-skeleton.entry.js +2 -2
  342. package/dist/esm/bs-checkbox.entry.js +1 -1
  343. package/dist/esm/bs-chip-filter.entry.js +1 -1
  344. package/dist/esm/bs-chip-informative.entry.js +1 -1
  345. package/dist/esm/bs-chip-input.entry.js +1 -1
  346. package/dist/esm/bs-composer-status-banner.entry.js +1 -1
  347. package/dist/esm/bs-composer.entry.js +1 -1
  348. package/dist/esm/bs-cookie-consent.entry.js +184 -0
  349. package/dist/esm/bs-data-table.entry.js +1 -1
  350. package/dist/esm/bs-datepicker.entry.js +412 -0
  351. package/dist/esm/bs-dialog.entry.js +1 -1
  352. package/dist/esm/bs-error-page.entry.js +101 -0
  353. package/dist/esm/bs-file-upload-item.entry.js +2 -2
  354. package/dist/esm/bs-file-upload.entry.js +2 -2
  355. package/dist/esm/bs-icon-button.entry.js +2 -2
  356. package/dist/esm/bs-icon-tile.entry.js +50 -0
  357. package/dist/esm/bs-inline-tab.entry.js +2 -2
  358. package/dist/esm/{bs-input.entry.js → bs-input_3.entry.js} +73 -7
  359. package/dist/esm/bs-logo.entry.js +1 -1
  360. package/dist/esm/bs-navigation-drawer-item.entry.js +2 -2
  361. package/dist/esm/bs-navigation-drawer.entry.js +3 -3
  362. package/dist/esm/bs-navigation-header.entry.js +2 -2
  363. package/dist/esm/bs-onboarding-checklist.entry.js +159 -0
  364. package/dist/esm/bs-pagination.entry.js +2 -2
  365. package/dist/esm/bs-product-tour.entry.js +76 -0
  366. package/dist/esm/bs-progress-linear.entry.js +4 -4
  367. package/dist/esm/bs-progress.entry.js +3 -3
  368. package/dist/esm/bs-qr-code.entry.js +146 -0
  369. package/dist/esm/bs-radio.entry.js +2 -2
  370. package/dist/esm/bs-session-timeout.entry.js +213 -0
  371. package/dist/esm/bs-slider.entry.js +2 -2
  372. package/dist/esm/bs-snackbar.entry.js +9 -3
  373. package/dist/esm/bs-source-link.entry.js +3 -3
  374. package/dist/esm/bs-stepper-step.entry.js +2 -2
  375. package/dist/esm/bs-stepper.entry.js +2 -2
  376. package/dist/esm/bs-switch.entry.js +2 -2
  377. package/dist/esm/bs-tab_3.entry.js +251 -0
  378. package/dist/esm/bs-timepicker.entry.js +207 -0
  379. package/dist/esm/bs-toast.entry.js +2 -2
  380. package/dist/esm/bs-tooltip.entry.js +2 -2
  381. package/dist/esm/bs-whats-new.entry.js +142 -0
  382. package/dist/esm/{index-AgoOSYvW.js → index-DqQRXQMx.js} +15 -3
  383. package/dist/esm/loader.js +3 -3
  384. package/dist/types/components/bs-button/bs-button/bs-button.d.ts +3 -0
  385. package/dist/types/components/bs-cookie-consent/bs-cookie-consent.cmp.test.d.ts +1 -0
  386. package/dist/types/components/bs-cookie-consent/bs-cookie-consent.d.ts +136 -0
  387. package/dist/types/components/bs-cookie-consent/bs-cookie-consent.stories.d.ts +16 -0
  388. package/dist/types/components/bs-datepicker/bs-datepicker.cmp.test.d.ts +1 -0
  389. package/dist/types/components/bs-datepicker/bs-datepicker.d.ts +138 -0
  390. package/dist/types/components/bs-datepicker/bs-datepicker.stories.d.ts +20 -0
  391. package/dist/types/components/bs-error-page/bs-error-page.cmp.test.d.ts +1 -0
  392. package/dist/types/components/bs-error-page/bs-error-page.d.ts +60 -0
  393. package/dist/types/components/bs-error-page/bs-error-page.stories.d.ts +22 -0
  394. package/dist/types/components/bs-icon-tile/bs-icon-tile.cmp.test.d.ts +1 -0
  395. package/dist/types/components/bs-icon-tile/bs-icon-tile.d.ts +40 -0
  396. package/dist/types/components/bs-icon-tile/bs-icon-tile.stories.d.ts +13 -0
  397. package/dist/types/components/bs-onboarding-checklist/bs-onboarding-checklist.cmp.test.d.ts +1 -0
  398. package/dist/types/components/bs-onboarding-checklist/bs-onboarding-checklist.d.ts +140 -0
  399. package/dist/types/components/bs-onboarding-checklist/bs-onboarding-checklist.stories.d.ts +18 -0
  400. package/dist/types/components/bs-product-tour/bs-product-tour.cmp.test.d.ts +1 -0
  401. package/dist/types/components/bs-product-tour/bs-product-tour.d.ts +78 -0
  402. package/dist/types/components/bs-product-tour/bs-product-tour.stories.d.ts +19 -0
  403. package/dist/types/components/bs-qr-code/bs-qr-code.cmp.test.d.ts +1 -0
  404. package/dist/types/components/bs-qr-code/bs-qr-code.d.ts +124 -0
  405. package/dist/types/components/bs-qr-code/bs-qr-code.stories.d.ts +28 -0
  406. package/dist/types/components/bs-session-timeout/bs-session-timeout.cmp.test.d.ts +1 -0
  407. package/dist/types/components/bs-session-timeout/bs-session-timeout.d.ts +141 -0
  408. package/dist/types/components/bs-session-timeout/bs-session-timeout.stories.d.ts +19 -0
  409. package/dist/types/components/bs-snackbar/bs-snackbar.d.ts +7 -0
  410. package/dist/types/components/bs-timepicker/bs-timepicker.cmp.test.d.ts +1 -0
  411. package/dist/types/components/bs-timepicker/bs-timepicker.d.ts +103 -0
  412. package/dist/types/components/bs-timepicker/bs-timepicker.stories.d.ts +14 -0
  413. package/dist/types/components/bs-whats-new/bs-whats-new.cmp.test.d.ts +1 -0
  414. package/dist/types/components/bs-whats-new/bs-whats-new.d.ts +147 -0
  415. package/dist/types/components/bs-whats-new/bs-whats-new.stories.d.ts +14 -0
  416. package/dist/types/components/bs-whats-new-entry/bs-whats-new-entry.cmp.test.d.ts +1 -0
  417. package/dist/types/components/bs-whats-new-entry/bs-whats-new-entry.d.ts +53 -0
  418. package/dist/types/components/bs-whats-new-entry/bs-whats-new-entry.stories.d.ts +18 -0
  419. package/dist/types/components.d.ts +3072 -17
  420. package/package.json +1 -1
  421. package/dist/brandsync-wc/p-2891d40b.entry.js +0 -1
  422. package/dist/brandsync-wc/p-36bf37d9.entry.js +0 -1
  423. package/dist/brandsync-wc/p-3b64e3cd.entry.js +0 -1
  424. package/dist/brandsync-wc/p-4e5dcaff.entry.js +0 -1
  425. package/dist/brandsync-wc/p-7b00dd36.entry.js +0 -1
  426. package/dist/brandsync-wc/p-c10d2529.entry.js +0 -1
  427. package/dist/brandsync-wc/p-f006d962.entry.js +0 -1
  428. package/dist/brandsync-wc/p-f074f94e.entry.js +0 -1
  429. package/dist/brandsync-wc/p-f7d47c17.entry.js +0 -1
  430. package/dist/brandsync-wc/p-fddc7bd1.entry.js +0 -1
  431. package/dist/cjs/bs-menu-item.cjs.entry.js +0 -34
  432. package/dist/cjs/bs-menu.cjs.entry.js +0 -39
  433. package/dist/cjs/bs-tab.cjs.entry.js +0 -88
  434. package/dist/cjs/bs-tabs.cjs.entry.js +0 -133
  435. package/dist/components/p-CpUHnsq9.js +0 -1
  436. package/dist/components/p-wei0Ija2.js +0 -1
  437. package/dist/esm/bs-menu-item.entry.js +0 -32
  438. package/dist/esm/bs-menu.entry.js +0 -37
  439. package/dist/esm/bs-tab.entry.js +0 -86
  440. 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,15 +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";
28
+ import { BsDatepickerChange } from "./components/bs-datepicker/bs-datepicker";
27
29
  import { BsDialogSize } from "./components/bs-dialog/bs-dialog";
30
+ import { BsErrorPageType } from "./components/bs-error-page/bs-error-page";
28
31
  import { BsFileUploadDirection } from "./components/bs-file-upload/bs-file-upload";
29
32
  import { BsFileUploadItemState } from "./components/bs-file-upload-item/bs-file-upload-item";
30
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";
31
35
  import { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
32
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";
33
39
  import { BsProgressSize, BsProgressStrokeWidth, BsProgressType } from "./components/bs-progress/bs-progress";
34
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";
35
43
  import { BsSliderType } from "./components/bs-slider/bs-slider";
36
44
  import { BsSnackbarVariant } from "./components/bs-snackbar/bs-snackbar";
37
45
  import { BsStepperDirection } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
@@ -39,7 +47,11 @@ import { BsStepperDirection as BsStepperDirection1, BsStepperStepComputedState }
39
47
  import { BsSwitchSize } from "./components/bs-switch/bs-switch";
40
48
  import { BsTabIconPosition } from "./components/bs-tab/bs-tab/bs-tab";
41
49
  import { BsTabsOrientation, BsTabsType } from "./components/bs-tab/bs-tabs/bs-tabs";
50
+ import { BsTimepickerChange } from "./components/bs-timepicker/bs-timepicker";
42
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";
43
55
  export { BsAccordionSize } from "./components/bs-accordion/bs-accordion";
44
56
  export { BsAttachmentType } from "./components/bs-attachment/bs-attachment";
45
57
  export { BsAvatarSize, BsAvatarType } from "./components/bs-avatar/bs-avatar";
@@ -48,7 +60,7 @@ export { BsBreadcrumbSize } from "./components/bs-breadcrumb/bs-breadcrumb/bs-br
48
60
  export { BsBreadcrumbOverflowItem } from "./components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow";
49
61
  export { BsBreadcrumbSize as BsBreadcrumbSize1 } from "./components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb";
50
62
  export { BsButtonSize, BsButtonVariant } from "./components/bs-button/bs-button/bs-button";
51
- 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";
52
64
  export { BsCardSurface } from "./components/bs-card/bs-card";
53
65
  export { BsCarouselTracker } from "./components/bs-carousel/bs-carousel";
54
66
  export { BsCheckboxSize } from "./components/bs-checkbox/bs-checkbox";
@@ -58,15 +70,23 @@ export { BsChipInformativeColor, BsChipInformativeSize } from "./components/bs-c
58
70
  export { BsChipInputSize } from "./components/bs-chip/bs-chip-input/bs-chip-input";
59
71
  export { BsComposerState, BsComposerVariant } from "./components/bs-composer/bs-composer";
60
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";
61
74
  export { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs-data-table";
75
+ export { BsDatepickerChange } from "./components/bs-datepicker/bs-datepicker";
62
76
  export { BsDialogSize } from "./components/bs-dialog/bs-dialog";
77
+ export { BsErrorPageType } from "./components/bs-error-page/bs-error-page";
63
78
  export { BsFileUploadDirection } from "./components/bs-file-upload/bs-file-upload";
64
79
  export { BsFileUploadItemState } from "./components/bs-file-upload-item/bs-file-upload-item";
65
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";
66
82
  export { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
67
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";
68
86
  export { BsProgressSize, BsProgressStrokeWidth, BsProgressType } from "./components/bs-progress/bs-progress";
69
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";
70
90
  export { BsSliderType } from "./components/bs-slider/bs-slider";
71
91
  export { BsSnackbarVariant } from "./components/bs-snackbar/bs-snackbar";
72
92
  export { BsStepperDirection } from "./components/bs-stepper/bs-stepper-step/bs-stepper-step";
@@ -74,7 +94,11 @@ export { BsStepperDirection as BsStepperDirection1, BsStepperStepComputedState }
74
94
  export { BsSwitchSize } from "./components/bs-switch/bs-switch";
75
95
  export { BsTabIconPosition } from "./components/bs-tab/bs-tab/bs-tab";
76
96
  export { BsTabsOrientation, BsTabsType } from "./components/bs-tab/bs-tabs/bs-tabs";
97
+ export { BsTimepickerChange } from "./components/bs-timepicker/bs-timepicker";
77
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";
78
102
  export namespace Components {
79
103
  /**
80
104
  * A single collapsible section -- a clickable header (optional leading icon, label, trailing
@@ -468,6 +492,9 @@ export namespace Components {
468
492
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
469
493
  * it for actions that actually delete/revoke/undo something.
470
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.
471
498
  * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
472
499
  * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
473
500
  * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
@@ -1174,6 +1201,103 @@ export namespace Components {
1174
1201
  */
1175
1202
  "type": BsComposerStatusBannerType;
1176
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
+ }
1177
1301
  /**
1178
1302
  * A sortable, optionally row-selectable table for tabular data.
1179
1303
  * `columns`, `rows`, and `cellRenderer` are JS-property-only — HTML attributes can only carry
@@ -1214,6 +1338,100 @@ export namespace Components {
1214
1338
  */
1215
1339
  "sortDirection": 'asc' | 'desc';
1216
1340
  }
1341
+ /**
1342
+ * An inline calendar for picking a single date, or a start/end date range. Matches the Figma
1343
+ * "Date picker" component's two types: "Default" (month and year dropdowns above the grid) and
1344
+ * "Range" (start and end date fields above the grid, with the days between highlighted).
1345
+ * Dates are always `YYYY-MM-DD` strings, interpreted in the user's local time zone -- never full
1346
+ * ISO timestamps -- so a date can't shift by a day across time zones.
1347
+ * The calendar renders inline at a fixed width; to show it as a popover, put it inside a
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).
1350
+ * ## When to use
1351
+ * - Picking a date where seeing the surrounding days of the week/month helps (a booking, a
1352
+ * deadline, a report window).
1353
+ * - Picking a period (`range`) such as a start and end date.
1354
+ * ## When not to use
1355
+ * - A date the user knows by heart and can type quickly (a birth date) -- `bs-input type="date"`
1356
+ * is faster there.
1357
+ * ## Keyboard
1358
+ * Arrow keys move by day/week, Home/End jump to the start/end of the week, PageUp/PageDown move by
1359
+ * month (with Shift, by year), Enter/Space select the focused day.
1360
+ */
1361
+ interface BsDatepicker {
1362
+ /**
1363
+ * The range end (`YYYY-MM-DD`) in `range` mode.
1364
+ * @default ''
1365
+ */
1366
+ "end": string;
1367
+ /**
1368
+ * Label above the end field in `range` mode.
1369
+ * @default 'End date'
1370
+ */
1371
+ "endLabel": string;
1372
+ /**
1373
+ * First column of the grid: `0` for Sunday (the Figma spec), `1` for Monday, ... `6`.
1374
+ * @default 0
1375
+ */
1376
+ "firstDayOfWeek": number;
1377
+ /**
1378
+ * BCP 47 locale used for month names, weekday names and the title.
1379
+ * @default 'en-GB'
1380
+ */
1381
+ "locale": string;
1382
+ /**
1383
+ * Latest selectable date (`YYYY-MM-DD`). Later days render disabled.
1384
+ */
1385
+ "max"?: string;
1386
+ /**
1387
+ * Earliest selectable date (`YYYY-MM-DD`). Earlier days render disabled.
1388
+ */
1389
+ "min"?: string;
1390
+ /**
1391
+ * Accessible name for the month dropdown (single mode).
1392
+ * @default 'Month'
1393
+ */
1394
+ "monthLabel": string;
1395
+ /**
1396
+ * The `name` the value is submitted under in a surrounding `<form>`. In `range` mode the dates are submitted as `<name>-start` and `<name>-end`.
1397
+ */
1398
+ "name"?: string;
1399
+ /**
1400
+ * Accessible name for the next-month button.
1401
+ * @default 'Next month'
1402
+ */
1403
+ "nextLabel": string;
1404
+ /**
1405
+ * Accessible name for the previous-month button.
1406
+ * @default 'Previous month'
1407
+ */
1408
+ "previousLabel": string;
1409
+ /**
1410
+ * Select a start/end range instead of a single date.
1411
+ * @default false
1412
+ */
1413
+ "range": boolean;
1414
+ /**
1415
+ * The range start (`YYYY-MM-DD`) in `range` mode.
1416
+ * @default ''
1417
+ */
1418
+ "start": string;
1419
+ /**
1420
+ * Label above the start field in `range` mode.
1421
+ * @default 'Start date'
1422
+ */
1423
+ "startLabel": string;
1424
+ /**
1425
+ * The selected date (`YYYY-MM-DD`) in single mode. Mutable so a click updates it directly; `bsChange` still fires for the consumer to react. Ignored when `range` is set.
1426
+ * @default ''
1427
+ */
1428
+ "value": string;
1429
+ /**
1430
+ * Accessible name for the year dropdown (single mode).
1431
+ * @default 'Year'
1432
+ */
1433
+ "yearLabel": string;
1434
+ }
1217
1435
  /**
1218
1436
  * An overlay dialog that interrupts the current flow for a focused task or confirmation.
1219
1437
  * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
@@ -1248,6 +1466,56 @@ export namespace Components {
1248
1466
  */
1249
1467
  "size": BsDialogSize;
1250
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
+ }
1251
1519
  /**
1252
1520
  * A file dropzone: drag files onto it, or press "Browse file" to open the file picker. It reports
1253
1521
  * the chosen files and does nothing else -- the consuming app owns the upload itself and shows its
@@ -1398,6 +1666,36 @@ export namespace Components {
1398
1666
  */
1399
1667
  "variant": BsIconButtonVariant;
1400
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
+ }
1401
1699
  /**
1402
1700
  * A pill-shaped tab button -- an optional leading icon plus a text label, rendered as a real
1403
1701
  * `<button>` so it participates correctly in tab order and native click/keyboard activation.
@@ -1829,6 +2127,119 @@ export namespace Components {
1829
2127
  */
1830
2128
  "skipToContentLabel": string;
1831
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
+ }
1832
2243
  /**
1833
2244
  * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
1834
2245
  * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
@@ -1871,6 +2282,76 @@ export namespace Components {
1871
2282
  */
1872
2283
  "totalPages": number;
1873
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
+ }
1874
2355
  /**
1875
2356
  * A circular progress indicator -- either a static ring showing a percentage sweep
1876
2357
  * (`type="determinate"`) or a continuously spinning ring signaling in-progress work with no known
@@ -1957,6 +2438,143 @@ export namespace Components {
1957
2438
  */
1958
2439
  "value": number;
1959
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
+ }
1960
2578
  /**
1961
2579
  * A single radio button with its label, for one mutually-exclusive choice within a group.
1962
2580
  * ## When to use
@@ -1987,6 +2605,130 @@ export namespace Components {
1987
2605
  */
1988
2606
  "value": string;
1989
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
+ }
1990
2732
  /**
1991
2733
  * A slider for picking a single numeric value (`type="default"`), a value snapped to evenly
1992
2734
  * spaced ticks (`type="segmented"`), or a min/max pair (`type="range"`) from within a bounded
@@ -2090,6 +2832,15 @@ export namespace Components {
2090
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.
2091
2833
  */
2092
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;
2093
2844
  /**
2094
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.
2095
2846
  * @default false
@@ -2364,6 +3115,80 @@ export namespace Components {
2364
3115
  */
2365
3116
  "value"?: string;
2366
3117
  }
3118
+ /**
3119
+ * An inline time picker: hour and minute spinners (up/down carets, or the arrow keys on the value),
3120
+ * an AM/PM dropdown in 12-hour mode, a 24h switch, and Cancel/Confirm buttons. Matches the Figma
3121
+ * "Time picker" component's two formats (12h with AM/PM, and 24h).
3122
+ * The picker works on a draft: nothing is committed until the user presses Confirm, which updates
3123
+ * `value` and fires `bsChange`. Cancel discards the draft and fires `bsCancel`.
3124
+ * `value` is always 24-hour `HH:mm` (e.g. `"14:30"`), regardless of the displayed `format`.
3125
+ * The picker renders inline at a fixed width; to show it as a popover, put it in your own overlay
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).
3128
+ * ## When to use
3129
+ * - Picking a time of day where the user steps through hours and minutes.
3130
+ * ## When not to use
3131
+ * - A time the user can type faster than step to -- a plain `bs-input` is quicker.
3132
+ * ## Keyboard
3133
+ * Tab to the hour or minute value, then ArrowUp/ArrowDown step it (wrapping), Home/End jump to the
3134
+ * first/last value, and typing digits sets it directly.
3135
+ */
3136
+ interface BsTimepicker {
3137
+ /**
3138
+ * Label of the Cancel button.
3139
+ * @default 'Cancel'
3140
+ */
3141
+ "cancelLabel": string;
3142
+ /**
3143
+ * Label of the Confirm button.
3144
+ * @default 'Confirm'
3145
+ */
3146
+ "confirmLabel": string;
3147
+ /**
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.
3149
+ * @default '12h'
3150
+ */
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
+ }
2367
3192
  /**
2368
3193
  * A transient status message for confirming the result of an action (e.g. "Files uploaded
2369
3194
  * successfully.") -- a state-specific icon, a message, and a close button.
@@ -2413,6 +3238,198 @@ export namespace Components {
2413
3238
  */
2414
3239
  "placement": 'top';
2415
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;
3369
+ /**
3370
+ * Which form: `feed`, `announcement` or `teaser`.
3371
+ * @default 'feed'
3372
+ */
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 {
3387
+ /**
3388
+ * Label of the action link (e.g. "Try it"). No action when empty.
3389
+ */
3390
+ "actionLabel"?: string;
3391
+ /**
3392
+ * The date as text, already formatted for the reader (e.g. "24.09.2026").
3393
+ */
3394
+ "date"?: string;
3395
+ /**
3396
+ * Short description under the title.
3397
+ */
3398
+ "description"?: string;
3399
+ /**
3400
+ * Draws a rule under the entry, to separate it from the next one.
3401
+ * @default false
3402
+ */
3403
+ "divider": boolean;
3404
+ /**
3405
+ * Title.
3406
+ */
3407
+ "heading"?: string;
3408
+ /**
3409
+ * HTML heading level for the title, 1-6.
3410
+ * @default 3
3411
+ */
3412
+ "headingLevel": number;
3413
+ /**
3414
+ * The tag text, e.g. "New feature". No tag when empty.
3415
+ */
3416
+ "tag"?: string;
3417
+ /**
3418
+ * Colour of the tag: `info` (default), `success`, `warning`, `error` or `neutral`.
3419
+ * @default 'info'
3420
+ */
3421
+ "tagColor": BsWhatsNewEntryTagColor1;
3422
+ /**
3423
+ * Shows a dot after the date for an update the user hasn't seen.
3424
+ * @default false
3425
+ */
3426
+ "unread": boolean;
3427
+ /**
3428
+ * Visually hidden text for the unread dot.
3429
+ * @default 'Unread'
3430
+ */
3431
+ "unreadLabel": string;
3432
+ }
2416
3433
  }
2417
3434
  export interface BsAccordionCustomEvent<T> extends CustomEvent<T> {
2418
3435
  detail: T;
@@ -2474,14 +3491,26 @@ export interface BsComposerStatusBannerCustomEvent<T> extends CustomEvent<T> {
2474
3491
  detail: T;
2475
3492
  target: HTMLBsComposerStatusBannerElement;
2476
3493
  }
3494
+ export interface BsCookieConsentCustomEvent<T> extends CustomEvent<T> {
3495
+ detail: T;
3496
+ target: HTMLBsCookieConsentElement;
3497
+ }
2477
3498
  export interface BsDataTableCustomEvent<T> extends CustomEvent<T> {
2478
3499
  detail: T;
2479
3500
  target: HTMLBsDataTableElement;
2480
3501
  }
3502
+ export interface BsDatepickerCustomEvent<T> extends CustomEvent<T> {
3503
+ detail: T;
3504
+ target: HTMLBsDatepickerElement;
3505
+ }
2481
3506
  export interface BsDialogCustomEvent<T> extends CustomEvent<T> {
2482
3507
  detail: T;
2483
3508
  target: HTMLBsDialogElement;
2484
3509
  }
3510
+ export interface BsErrorPageCustomEvent<T> extends CustomEvent<T> {
3511
+ detail: T;
3512
+ target: HTMLBsErrorPageElement;
3513
+ }
2485
3514
  export interface BsFileUploadCustomEvent<T> extends CustomEvent<T> {
2486
3515
  detail: T;
2487
3516
  target: HTMLBsFileUploadElement;
@@ -2510,14 +3539,30 @@ export interface BsNavigationDrawerItemCustomEvent<T> extends CustomEvent<T> {
2510
3539
  detail: T;
2511
3540
  target: HTMLBsNavigationDrawerItemElement;
2512
3541
  }
3542
+ export interface BsOnboardingChecklistCustomEvent<T> extends CustomEvent<T> {
3543
+ detail: T;
3544
+ target: HTMLBsOnboardingChecklistElement;
3545
+ }
2513
3546
  export interface BsPaginationCustomEvent<T> extends CustomEvent<T> {
2514
3547
  detail: T;
2515
3548
  target: HTMLBsPaginationElement;
2516
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
+ }
2517
3558
  export interface BsRadioCustomEvent<T> extends CustomEvent<T> {
2518
3559
  detail: T;
2519
3560
  target: HTMLBsRadioElement;
2520
3561
  }
3562
+ export interface BsSessionTimeoutCustomEvent<T> extends CustomEvent<T> {
3563
+ detail: T;
3564
+ target: HTMLBsSessionTimeoutElement;
3565
+ }
2521
3566
  export interface BsSliderCustomEvent<T> extends CustomEvent<T> {
2522
3567
  detail: T;
2523
3568
  target: HTMLBsSliderElement;
@@ -2542,10 +3587,22 @@ export interface BsTabsCustomEvent<T> extends CustomEvent<T> {
2542
3587
  detail: T;
2543
3588
  target: HTMLBsTabsElement;
2544
3589
  }
3590
+ export interface BsTimepickerCustomEvent<T> extends CustomEvent<T> {
3591
+ detail: T;
3592
+ target: HTMLBsTimepickerElement;
3593
+ }
2545
3594
  export interface BsToastCustomEvent<T> extends CustomEvent<T> {
2546
3595
  detail: T;
2547
3596
  target: HTMLBsToastElement;
2548
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
+ }
2549
3606
  declare global {
2550
3607
  interface HTMLBsAccordionElementEventMap {
2551
3608
  "bsToggle": boolean;
@@ -2875,6 +3932,9 @@ declare global {
2875
3932
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
2876
3933
  * it for actions that actually delete/revoke/undo something.
2877
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.
2878
3938
  * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
2879
3939
  * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
2880
3940
  * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
@@ -3473,14 +4533,60 @@ declare global {
3473
4533
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3474
4534
  addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3475
4535
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3476
- removeEventListener<K extends keyof HTMLBsComposerStatusBannerElementEventMap>(type: K, listener: (this: HTMLBsComposerStatusBannerElement, ev: BsComposerStatusBannerCustomEvent<HTMLBsComposerStatusBannerElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
4536
+ removeEventListener<K extends keyof HTMLBsComposerStatusBannerElementEventMap>(type: K, listener: (this: HTMLBsComposerStatusBannerElement, ev: BsComposerStatusBannerCustomEvent<HTMLBsComposerStatusBannerElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
4537
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4538
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4539
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4540
+ }
4541
+ var HTMLBsComposerStatusBannerElement: {
4542
+ prototype: HTMLBsComposerStatusBannerElement;
4543
+ new (): HTMLBsComposerStatusBannerElement;
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;
3477
4583
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3478
4584
  removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3479
4585
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3480
4586
  }
3481
- var HTMLBsComposerStatusBannerElement: {
3482
- prototype: HTMLBsComposerStatusBannerElement;
3483
- new (): HTMLBsComposerStatusBannerElement;
4587
+ var HTMLBsCookieConsentElement: {
4588
+ prototype: HTMLBsCookieConsentElement;
4589
+ new (): HTMLBsCookieConsentElement;
3484
4590
  };
3485
4591
  interface HTMLBsDataTableElementEventMap {
3486
4592
  "bsSort": { column: string; direction: 'asc' | 'desc' };
@@ -3511,6 +4617,43 @@ declare global {
3511
4617
  prototype: HTMLBsDataTableElement;
3512
4618
  new (): HTMLBsDataTableElement;
3513
4619
  };
4620
+ interface HTMLBsDatepickerElementEventMap {
4621
+ "bsChange": BsDatepickerChange;
4622
+ }
4623
+ /**
4624
+ * An inline calendar for picking a single date, or a start/end date range. Matches the Figma
4625
+ * "Date picker" component's two types: "Default" (month and year dropdowns above the grid) and
4626
+ * "Range" (start and end date fields above the grid, with the days between highlighted).
4627
+ * Dates are always `YYYY-MM-DD` strings, interpreted in the user's local time zone -- never full
4628
+ * ISO timestamps -- so a date can't shift by a day across time zones.
4629
+ * The calendar renders inline at a fixed width; to show it as a popover, put it inside a
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).
4632
+ * ## When to use
4633
+ * - Picking a date where seeing the surrounding days of the week/month helps (a booking, a
4634
+ * deadline, a report window).
4635
+ * - Picking a period (`range`) such as a start and end date.
4636
+ * ## When not to use
4637
+ * - A date the user knows by heart and can type quickly (a birth date) -- `bs-input type="date"`
4638
+ * is faster there.
4639
+ * ## Keyboard
4640
+ * Arrow keys move by day/week, Home/End jump to the start/end of the week, PageUp/PageDown move by
4641
+ * month (with Shift, by year), Enter/Space select the focused day.
4642
+ */
4643
+ interface HTMLBsDatepickerElement extends Components.BsDatepicker, HTMLStencilElement {
4644
+ addEventListener<K extends keyof HTMLBsDatepickerElementEventMap>(type: K, listener: (this: HTMLBsDatepickerElement, ev: BsDatepickerCustomEvent<HTMLBsDatepickerElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
4645
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4646
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4647
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4648
+ removeEventListener<K extends keyof HTMLBsDatepickerElementEventMap>(type: K, listener: (this: HTMLBsDatepickerElement, ev: BsDatepickerCustomEvent<HTMLBsDatepickerElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
4649
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4650
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4651
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4652
+ }
4653
+ var HTMLBsDatepickerElement: {
4654
+ prototype: HTMLBsDatepickerElement;
4655
+ new (): HTMLBsDatepickerElement;
4656
+ };
3514
4657
  interface HTMLBsDialogElementEventMap {
3515
4658
  "bsClose": void;
3516
4659
  }
@@ -3545,6 +4688,38 @@ declare global {
3545
4688
  prototype: HTMLBsDialogElement;
3546
4689
  new (): HTMLBsDialogElement;
3547
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
+ };
3548
4723
  interface HTMLBsFileUploadElementEventMap {
3549
4724
  "bsFilesSelect": File[];
3550
4725
  "bsFilesReject": File[];
@@ -3627,6 +4802,26 @@ declare global {
3627
4802
  prototype: HTMLBsIconButtonElement;
3628
4803
  new (): HTMLBsIconButtonElement;
3629
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
+ };
3630
4825
  interface HTMLBsInlineTabElementEventMap {
3631
4826
  "bsSelect": void;
3632
4827
  }
@@ -3925,6 +5120,52 @@ declare global {
3925
5120
  prototype: HTMLBsNavigationHeaderElement;
3926
5121
  new (): HTMLBsNavigationHeaderElement;
3927
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
+ };
3928
5169
  interface HTMLBsPaginationElementEventMap {
3929
5170
  "bsPageChange": number;
3930
5171
  }
@@ -3957,6 +5198,42 @@ declare global {
3957
5198
  prototype: HTMLBsPaginationElement;
3958
5199
  new (): HTMLBsPaginationElement;
3959
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
+ };
3960
5237
  /**
3961
5238
  * A circular progress indicator -- either a static ring showing a percentage sweep
3962
5239
  * (`type="determinate"`) or a continuously spinning ring signaling in-progress work with no known
@@ -3996,6 +5273,48 @@ declare global {
3996
5273
  prototype: HTMLBsProgressLinearElement;
3997
5274
  new (): HTMLBsProgressLinearElement;
3998
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
+ };
3999
5318
  interface HTMLBsRadioElementEventMap {
4000
5319
  "bsChange": string;
4001
5320
  }
@@ -4023,6 +5342,53 @@ declare global {
4023
5342
  prototype: HTMLBsRadioElement;
4024
5343
  new (): HTMLBsRadioElement;
4025
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
+ };
4026
5392
  interface HTMLBsSliderElementEventMap {
4027
5393
  "bsChange": number;
4028
5394
  "bsRangeChange": { start: number; end: number };
@@ -4282,6 +5648,42 @@ declare global {
4282
5648
  prototype: HTMLBsTabsElement;
4283
5649
  new (): HTMLBsTabsElement;
4284
5650
  };
5651
+ interface HTMLBsTimepickerElementEventMap {
5652
+ "bsChange": BsTimepickerChange;
5653
+ "bsCancel": void;
5654
+ }
5655
+ /**
5656
+ * An inline time picker: hour and minute spinners (up/down carets, or the arrow keys on the value),
5657
+ * an AM/PM dropdown in 12-hour mode, a 24h switch, and Cancel/Confirm buttons. Matches the Figma
5658
+ * "Time picker" component's two formats (12h with AM/PM, and 24h).
5659
+ * The picker works on a draft: nothing is committed until the user presses Confirm, which updates
5660
+ * `value` and fires `bsChange`. Cancel discards the draft and fires `bsCancel`.
5661
+ * `value` is always 24-hour `HH:mm` (e.g. `"14:30"`), regardless of the displayed `format`.
5662
+ * The picker renders inline at a fixed width; to show it as a popover, put it in your own overlay
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).
5665
+ * ## When to use
5666
+ * - Picking a time of day where the user steps through hours and minutes.
5667
+ * ## When not to use
5668
+ * - A time the user can type faster than step to -- a plain `bs-input` is quicker.
5669
+ * ## Keyboard
5670
+ * Tab to the hour or minute value, then ArrowUp/ArrowDown step it (wrapping), Home/End jump to the
5671
+ * first/last value, and typing digits sets it directly.
5672
+ */
5673
+ interface HTMLBsTimepickerElement extends Components.BsTimepicker, HTMLStencilElement {
5674
+ addEventListener<K extends keyof HTMLBsTimepickerElementEventMap>(type: K, listener: (this: HTMLBsTimepickerElement, ev: BsTimepickerCustomEvent<HTMLBsTimepickerElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
5675
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5676
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5677
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5678
+ removeEventListener<K extends keyof HTMLBsTimepickerElementEventMap>(type: K, listener: (this: HTMLBsTimepickerElement, ev: BsTimepickerCustomEvent<HTMLBsTimepickerElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
5679
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5680
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5681
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5682
+ }
5683
+ var HTMLBsTimepickerElement: {
5684
+ prototype: HTMLBsTimepickerElement;
5685
+ new (): HTMLBsTimepickerElement;
5686
+ };
4285
5687
  interface HTMLBsToastElementEventMap {
4286
5688
  "bsDismiss": void;
4287
5689
  }
@@ -4340,6 +5742,75 @@ declare global {
4340
5742
  prototype: HTMLBsTooltipElement;
4341
5743
  new (): HTMLBsTooltipElement;
4342
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
+ };
4343
5814
  interface HTMLElementTagNameMap {
4344
5815
  "bs-accordion": HTMLBsAccordionElement;
4345
5816
  "bs-ai-disclaimer": HTMLBsAiDisclaimerElement;
@@ -4368,11 +5839,15 @@ declare global {
4368
5839
  "bs-chip-input": HTMLBsChipInputElement;
4369
5840
  "bs-composer": HTMLBsComposerElement;
4370
5841
  "bs-composer-status-banner": HTMLBsComposerStatusBannerElement;
5842
+ "bs-cookie-consent": HTMLBsCookieConsentElement;
4371
5843
  "bs-data-table": HTMLBsDataTableElement;
5844
+ "bs-datepicker": HTMLBsDatepickerElement;
4372
5845
  "bs-dialog": HTMLBsDialogElement;
5846
+ "bs-error-page": HTMLBsErrorPageElement;
4373
5847
  "bs-file-upload": HTMLBsFileUploadElement;
4374
5848
  "bs-file-upload-item": HTMLBsFileUploadItemElement;
4375
5849
  "bs-icon-button": HTMLBsIconButtonElement;
5850
+ "bs-icon-tile": HTMLBsIconTileElement;
4376
5851
  "bs-inline-tab": HTMLBsInlineTabElement;
4377
5852
  "bs-input": HTMLBsInputElement;
4378
5853
  "bs-logo": HTMLBsLogoElement;
@@ -4381,10 +5856,14 @@ declare global {
4381
5856
  "bs-navigation-drawer": HTMLBsNavigationDrawerElement;
4382
5857
  "bs-navigation-drawer-item": HTMLBsNavigationDrawerItemElement;
4383
5858
  "bs-navigation-header": HTMLBsNavigationHeaderElement;
5859
+ "bs-onboarding-checklist": HTMLBsOnboardingChecklistElement;
4384
5860
  "bs-pagination": HTMLBsPaginationElement;
5861
+ "bs-product-tour": HTMLBsProductTourElement;
4385
5862
  "bs-progress": HTMLBsProgressElement;
4386
5863
  "bs-progress-linear": HTMLBsProgressLinearElement;
5864
+ "bs-qr-code": HTMLBsQrCodeElement;
4387
5865
  "bs-radio": HTMLBsRadioElement;
5866
+ "bs-session-timeout": HTMLBsSessionTimeoutElement;
4388
5867
  "bs-slider": HTMLBsSliderElement;
4389
5868
  "bs-snackbar": HTMLBsSnackbarElement;
4390
5869
  "bs-source-link": HTMLBsSourceLinkElement;
@@ -4393,8 +5872,11 @@ declare global {
4393
5872
  "bs-switch": HTMLBsSwitchElement;
4394
5873
  "bs-tab": HTMLBsTabElement;
4395
5874
  "bs-tabs": HTMLBsTabsElement;
5875
+ "bs-timepicker": HTMLBsTimepickerElement;
4396
5876
  "bs-toast": HTMLBsToastElement;
4397
5877
  "bs-tooltip": HTMLBsTooltipElement;
5878
+ "bs-whats-new": HTMLBsWhatsNewElement;
5879
+ "bs-whats-new-entry": HTMLBsWhatsNewEntryElement;
4398
5880
  }
4399
5881
  }
4400
5882
  declare namespace LocalJSX {
@@ -4806,6 +6288,9 @@ declare namespace LocalJSX {
4806
6288
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
4807
6289
  * it for actions that actually delete/revoke/undo something.
4808
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.
4809
6294
  * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
4810
6295
  * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
4811
6296
  * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
@@ -5648,6 +7133,131 @@ declare namespace LocalJSX {
5648
7133
  */
5649
7134
  "type"?: BsComposerStatusBannerType;
5650
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'
7188
+ */
7189
+ "customiseLabel"?: string;
7190
+ /**
7191
+ * Paragraph under the heading (the message, for `saved`). Defaults per `type`.
7192
+ */
7193
+ "description"?: string;
7194
+ /**
7195
+ * Heading. Defaults per `type`.
7196
+ */
7197
+ "heading"?: string;
7198
+ /**
7199
+ * HTML heading level, 1-6.
7200
+ * @default 2
7201
+ */
7202
+ "headingLevel"?: number;
7203
+ /**
7204
+ * Fires when Accept all is pressed. `{ choices }` has every category on.
7205
+ */
7206
+ "onBsAccept"?: (event: BsCookieConsentCustomEvent<{ choices: BsCookieChoices }>) => void;
7207
+ /**
7208
+ * Fires when a category switch is toggled (`preferences`).
7209
+ */
7210
+ "onBsChoice"?: (event: BsCookieConsentCustomEvent<{ id: string; enabled: boolean }>) => void;
7211
+ /**
7212
+ * Fires when the close button is pressed (`preferences`).
7213
+ */
7214
+ "onBsClose"?: (event: BsCookieConsentCustomEvent<void>) => void;
7215
+ /**
7216
+ * Fires when Customise is pressed -- show the `preferences` form.
7217
+ */
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;
7260
+ }
5651
7261
  /**
5652
7262
  * A sortable, optionally row-selectable table for tabular data.
5653
7263
  * `columns`, `rows`, and `cellRenderer` are JS-property-only — HTML attributes can only carry
@@ -5686,6 +7296,112 @@ declare namespace LocalJSX {
5686
7296
  */
5687
7297
  "sortDirection"?: 'asc' | 'desc';
5688
7298
  }
7299
+ /**
7300
+ * An inline calendar for picking a single date, or a start/end date range. Matches the Figma
7301
+ * "Date picker" component's two types: "Default" (month and year dropdowns above the grid) and
7302
+ * "Range" (start and end date fields above the grid, with the days between highlighted).
7303
+ * Dates are always `YYYY-MM-DD` strings, interpreted in the user's local time zone -- never full
7304
+ * ISO timestamps -- so a date can't shift by a day across time zones.
7305
+ * The calendar renders inline at a fixed width; to show it as a popover, put it inside a
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).
7308
+ * ## When to use
7309
+ * - Picking a date where seeing the surrounding days of the week/month helps (a booking, a
7310
+ * deadline, a report window).
7311
+ * - Picking a period (`range`) such as a start and end date.
7312
+ * ## When not to use
7313
+ * - A date the user knows by heart and can type quickly (a birth date) -- `bs-input type="date"`
7314
+ * is faster there.
7315
+ * ## Keyboard
7316
+ * Arrow keys move by day/week, Home/End jump to the start/end of the week, PageUp/PageDown move by
7317
+ * month (with Shift, by year), Enter/Space select the focused day.
7318
+ */
7319
+ interface BsDatepicker {
7320
+ /**
7321
+ * If `true`, the user cannot interact with the element.
7322
+ */
7323
+ "disabled"?: boolean;
7324
+ /**
7325
+ * The range end (`YYYY-MM-DD`) in `range` mode.
7326
+ * @default ''
7327
+ */
7328
+ "end"?: string;
7329
+ /**
7330
+ * Label above the end field in `range` mode.
7331
+ * @default 'End date'
7332
+ */
7333
+ "endLabel"?: string;
7334
+ /**
7335
+ * First column of the grid: `0` for Sunday (the Figma spec), `1` for Monday, ... `6`.
7336
+ * @default 0
7337
+ */
7338
+ "firstDayOfWeek"?: number;
7339
+ /**
7340
+ * The `id` of a `<form>` element to associate this element with.
7341
+ */
7342
+ "form"?: string;
7343
+ /**
7344
+ * BCP 47 locale used for month names, weekday names and the title.
7345
+ * @default 'en-GB'
7346
+ */
7347
+ "locale"?: string;
7348
+ /**
7349
+ * Latest selectable date (`YYYY-MM-DD`). Later days render disabled.
7350
+ */
7351
+ "max"?: string;
7352
+ /**
7353
+ * Earliest selectable date (`YYYY-MM-DD`). Earlier days render disabled.
7354
+ */
7355
+ "min"?: string;
7356
+ /**
7357
+ * Accessible name for the month dropdown (single mode).
7358
+ * @default 'Month'
7359
+ */
7360
+ "monthLabel"?: string;
7361
+ /**
7362
+ * The `name` the value is submitted under in a surrounding `<form>`. In `range` mode the dates are submitted as `<name>-start` and `<name>-end`.
7363
+ */
7364
+ "name"?: string;
7365
+ /**
7366
+ * Accessible name for the next-month button.
7367
+ * @default 'Next month'
7368
+ */
7369
+ "nextLabel"?: string;
7370
+ /**
7371
+ * Fires when the user changes the selection. Single mode: `{ value }`. Range mode: `{ start, end }` -- fired once for the first click (with an empty `end`) and again when the range is completed. Not fired when the props are set programmatically.
7372
+ */
7373
+ "onBsChange"?: (event: BsDatepickerCustomEvent<BsDatepickerChange>) => void;
7374
+ /**
7375
+ * Accessible name for the previous-month button.
7376
+ * @default 'Previous month'
7377
+ */
7378
+ "previousLabel"?: string;
7379
+ /**
7380
+ * Select a start/end range instead of a single date.
7381
+ * @default false
7382
+ */
7383
+ "range"?: boolean;
7384
+ /**
7385
+ * The range start (`YYYY-MM-DD`) in `range` mode.
7386
+ * @default ''
7387
+ */
7388
+ "start"?: string;
7389
+ /**
7390
+ * Label above the start field in `range` mode.
7391
+ * @default 'Start date'
7392
+ */
7393
+ "startLabel"?: string;
7394
+ /**
7395
+ * The selected date (`YYYY-MM-DD`) in single mode. Mutable so a click updates it directly; `bsChange` still fires for the consumer to react. Ignored when `range` is set.
7396
+ * @default ''
7397
+ */
7398
+ "value"?: string;
7399
+ /**
7400
+ * Accessible name for the year dropdown (single mode).
7401
+ * @default 'Year'
7402
+ */
7403
+ "yearLabel"?: string;
7404
+ }
5689
7405
  /**
5690
7406
  * An overlay dialog that interrupts the current flow for a focused task or confirmation.
5691
7407
  * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
@@ -5715,11 +7431,69 @@ declare namespace LocalJSX {
5715
7431
  * Mutable + reflected so the component can close itself (backdrop click, Escape, close button) the same way a native `<dialog>` does, while still emitting `bsClose` for the consumer to react to.
5716
7432
  * @default false
5717
7433
  */
5718
- "open"?: boolean;
7434
+ "open"?: boolean;
7435
+ /**
7436
+ * @default 'md'
7437
+ */
7438
+ "size"?: BsDialogSize;
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;
5719
7492
  /**
5720
- * @default 'md'
7493
+ * Which error: `not-found` (404), `server-error` (500), `no-access` (403), `maintenance` or `offline`.
7494
+ * @default 'not-found'
5721
7495
  */
5722
- "size"?: BsDialogSize;
7496
+ "type"?: BsErrorPageType;
5723
7497
  }
5724
7498
  /**
5725
7499
  * A file dropzone: drag files onto it, or press "Browse file" to open the file picker. It reports
@@ -5895,6 +7669,36 @@ declare namespace LocalJSX {
5895
7669
  */
5896
7670
  "variant"?: BsIconButtonVariant;
5897
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
+ }
5898
7702
  /**
5899
7703
  * A pill-shaped tab button -- an optional leading icon plus a text label, rendered as a real
5900
7704
  * `<button>` so it participates correctly in tab order and native click/keyboard activation.
@@ -6380,6 +8184,143 @@ declare namespace LocalJSX {
6380
8184
  */
6381
8185
  "skipToContentLabel"?: string;
6382
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
+ }
6383
8324
  /**
6384
8325
  * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
6385
8326
  * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
@@ -6426,6 +8367,88 @@ declare namespace LocalJSX {
6426
8367
  */
6427
8368
  "totalPages"?: number;
6428
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
+ }
6429
8452
  /**
6430
8453
  * A circular progress indicator -- either a static ring showing a percentage sweep
6431
8454
  * (`type="determinate"`) or a continuously spinning ring signaling in-progress work with no known
@@ -6512,6 +8535,163 @@ declare namespace LocalJSX {
6512
8535
  */
6513
8536
  "value"?: number;
6514
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;
8690
+ /**
8691
+ * The link shown as text under the code (`type="default"`), and copied by Copy link.
8692
+ */
8693
+ "url"?: string;
8694
+ }
6515
8695
  /**
6516
8696
  * A single radio button with its label, for one mutually-exclusive choice within a group.
6517
8697
  * ## When to use
@@ -6534,21 +8714,165 @@ declare namespace LocalJSX {
6534
8714
  */
6535
8715
  "disabled"?: boolean;
6536
8716
  /**
6537
- * The `id` of a `<form>` element to associate this element with.
8717
+ * The `id` of a `<form>` element to associate this element with.
8718
+ */
8719
+ "form"?: string;
8720
+ /**
8721
+ * The native radio input's `name` attribute. Passed straight through to the native input inside. Also the group key: `bs-radio` elements sharing a `name` within the same root (document or shadow root) behave as one radio group -- checking one unchecks the others, arrow keys move between them, and only one is in the tab order. Native grouping can't cross each radio's own shadow root, so this component implements it itself.
8722
+ */
8723
+ "name"?: string;
8724
+ /**
8725
+ * Emitted with this radio's own `value` when it becomes checked via user interaction. Since native same-`name` grouping doesn't cross shadow-root boundaries (see the `name` prop's doc), a consumer wiring up a group of `bs-radio`s does not need to un-check the others itself.
8726
+ */
8727
+ "onBsChange"?: (event: BsRadioCustomEvent<string>) => void;
8728
+ /**
8729
+ * The native radio input's `value` attribute -- read from `event.target.value`, or used when wiring the group up to a form.
8730
+ */
8731
+ "value"?: string;
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'
6538
8859
  */
6539
- "form"?: string;
8860
+ "secondsLeftLabel"?: string;
6540
8861
  /**
6541
- * The native radio input's `name` attribute. Passed straight through to the native input inside. Also the group key: `bs-radio` elements sharing a `name` within the same root (document or shadow root) behave as one radio group -- checking one unchecks the others, arrow keys move between them, and only one is in the tab order. Native grouping can't cross each radio's own shadow root, so this component implements it itself.
8862
+ * Text next to the time while a minute or more is left.
8863
+ * @default 'minutes left'
6542
8864
  */
6543
- "name"?: string;
8865
+ "timeLeftLabel"?: string;
6544
8866
  /**
6545
- * Emitted with this radio's own `value` when it becomes checked via user interaction. Since native same-`name` grouping doesn't cross shadow-root boundaries (see the `name` prop's doc), a consumer wiring up a group of `bs-radio`s does not need to un-check the others itself.
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
6546
8869
  */
6547
- "onBsChange"?: (event: BsRadioCustomEvent<string>) => void;
8870
+ "totalSeconds"?: number;
6548
8871
  /**
6549
- * The native radio input's `value` attribute -- read from `event.target.value`, or used when wiring the group up to a form.
8872
+ * Which moment: `warning`, `signed-out` or `confirm-identity`.
8873
+ * @default 'warning'
6550
8874
  */
6551
- "value"?: string;
8875
+ "type"?: BsSessionTimeoutType;
6552
8876
  }
6553
8877
  /**
6554
8878
  * A slider for picking a single numeric value (`type="default"`), a value snapped to evenly
@@ -6665,6 +8989,15 @@ declare namespace LocalJSX {
6665
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.
6666
8990
  */
6667
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;
6668
9001
  /**
6669
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.
6670
9003
  * @default false
@@ -6967,6 +9300,96 @@ declare namespace LocalJSX {
6967
9300
  */
6968
9301
  "value"?: string;
6969
9302
  }
9303
+ /**
9304
+ * An inline time picker: hour and minute spinners (up/down carets, or the arrow keys on the value),
9305
+ * an AM/PM dropdown in 12-hour mode, a 24h switch, and Cancel/Confirm buttons. Matches the Figma
9306
+ * "Time picker" component's two formats (12h with AM/PM, and 24h).
9307
+ * The picker works on a draft: nothing is committed until the user presses Confirm, which updates
9308
+ * `value` and fires `bsChange`. Cancel discards the draft and fires `bsCancel`.
9309
+ * `value` is always 24-hour `HH:mm` (e.g. `"14:30"`), regardless of the displayed `format`.
9310
+ * The picker renders inline at a fixed width; to show it as a popover, put it in your own overlay
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).
9313
+ * ## When to use
9314
+ * - Picking a time of day where the user steps through hours and minutes.
9315
+ * ## When not to use
9316
+ * - A time the user can type faster than step to -- a plain `bs-input` is quicker.
9317
+ * ## Keyboard
9318
+ * Tab to the hour or minute value, then ArrowUp/ArrowDown step it (wrapping), Home/End jump to the
9319
+ * first/last value, and typing digits sets it directly.
9320
+ */
9321
+ interface BsTimepicker {
9322
+ /**
9323
+ * Label of the Cancel button.
9324
+ * @default 'Cancel'
9325
+ */
9326
+ "cancelLabel"?: string;
9327
+ /**
9328
+ * Label of the Confirm button.
9329
+ * @default 'Confirm'
9330
+ */
9331
+ "confirmLabel"?: string;
9332
+ /**
9333
+ * If `true`, the user cannot interact with the element.
9334
+ */
9335
+ "disabled"?: boolean;
9336
+ /**
9337
+ * The `id` of a `<form>` element to associate this element with.
9338
+ */
9339
+ "form"?: string;
9340
+ /**
9341
+ * 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.
9342
+ * @default '12h'
9343
+ */
9344
+ "format"?: '12h' | '24h';
9345
+ /**
9346
+ * Label of the 24h switch.
9347
+ * @default '24h'
9348
+ */
9349
+ "formatLabel"?: string;
9350
+ /**
9351
+ * Heading text.
9352
+ * @default 'Select Time'
9353
+ */
9354
+ "heading"?: string;
9355
+ /**
9356
+ * Accessible name of the hour spinner.
9357
+ * @default 'Hour'
9358
+ */
9359
+ "hourLabel"?: string;
9360
+ /**
9361
+ * Accessible name of the minute spinner.
9362
+ * @default 'Minute'
9363
+ */
9364
+ "minuteLabel"?: string;
9365
+ /**
9366
+ * Step, in minutes, of the minute spinner's carets and arrow keys. Typing is not constrained.
9367
+ * @default 1
9368
+ */
9369
+ "minuteStep"?: number;
9370
+ /**
9371
+ * The `name` the confirmed value is submitted under in a surrounding `<form>`.
9372
+ */
9373
+ "name"?: string;
9374
+ /**
9375
+ * Fires when the user presses Cancel. The draft is reset to `value`.
9376
+ */
9377
+ "onBsCancel"?: (event: BsTimepickerCustomEvent<void>) => void;
9378
+ /**
9379
+ * Fires when the user presses Confirm: `{ value }` as 24-hour `HH:mm`. Not fired when `value` is set programmatically.
9380
+ */
9381
+ "onBsChange"?: (event: BsTimepickerCustomEvent<BsTimepickerChange>) => void;
9382
+ /**
9383
+ * Accessible name of the AM/PM dropdown.
9384
+ * @default 'AM/PM'
9385
+ */
9386
+ "periodLabel"?: string;
9387
+ /**
9388
+ * 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.
9389
+ * @default ''
9390
+ */
9391
+ "value"?: string;
9392
+ }
6970
9393
  /**
6971
9394
  * A transient status message for confirming the result of an action (e.g. "Files uploaded
6972
9395
  * successfully.") -- a state-specific icon, a message, and a close button.
@@ -7020,6 +9443,230 @@ declare namespace LocalJSX {
7020
9443
  */
7021
9444
  "placement"?: 'top';
7022
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
+ }
7023
9670
 
7024
9671
  interface BsAccordionAttributes {
7025
9672
  "expanded": boolean;
@@ -7165,17 +9812,60 @@ declare namespace LocalJSX {
7165
9812
  "actionLabel": string;
7166
9813
  "allowClose": boolean;
7167
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
+ }
7168
9831
  interface BsDataTableAttributes {
7169
9832
  "sortColumn": string;
7170
9833
  "sortDirection": 'asc' | 'desc';
7171
9834
  "selectable": boolean;
7172
9835
  }
9836
+ interface BsDatepickerAttributes {
9837
+ "name": string;
9838
+ "range": boolean;
9839
+ "value": string;
9840
+ "start": string;
9841
+ "end": string;
9842
+ "min": string;
9843
+ "max": string;
9844
+ "locale": string;
9845
+ "firstDayOfWeek": number;
9846
+ "startLabel": string;
9847
+ "endLabel": string;
9848
+ "monthLabel": string;
9849
+ "yearLabel": string;
9850
+ "previousLabel": string;
9851
+ "nextLabel": string;
9852
+ }
7173
9853
  interface BsDialogAttributes {
7174
9854
  "open": boolean;
7175
9855
  "heading": string;
7176
9856
  "size": BsDialogSize;
7177
9857
  "centered": boolean;
7178
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
+ }
7179
9869
  interface BsFileUploadAttributes {
7180
9870
  "direction": BsFileUploadDirection;
7181
9871
  "heading": string;
@@ -7204,6 +9894,11 @@ declare namespace LocalJSX {
7204
9894
  "type": 'button' | 'submit' | 'reset';
7205
9895
  "ariaLabel": string | null;
7206
9896
  }
9897
+ interface BsIconTileAttributes {
9898
+ "size": BsIconTileSize;
9899
+ "intent": BsIconTileIntent;
9900
+ "label": string;
9901
+ }
7207
9902
  interface BsInlineTabAttributes {
7208
9903
  "selected": boolean;
7209
9904
  "disabled": boolean;
@@ -7274,6 +9969,25 @@ declare namespace LocalJSX {
7274
9969
  "skipToContentLabel": string;
7275
9970
  "logoBackground": 'auto' | 'light' | 'dark';
7276
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
+ }
7277
9991
  interface BsPaginationAttributes {
7278
9992
  "totalPages": number;
7279
9993
  "currentPage": number;
@@ -7281,6 +9995,19 @@ declare namespace LocalJSX {
7281
9995
  "previousLabel": string;
7282
9996
  "nextLabel": string;
7283
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
+ }
7284
10011
  interface BsProgressAttributes {
7285
10012
  "type": BsProgressType;
7286
10013
  "size": BsProgressSize;
@@ -7296,12 +10023,59 @@ declare namespace LocalJSX {
7296
10023
  "showLabel": boolean;
7297
10024
  "ariaLabel": string | null;
7298
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
+ }
7299
10051
  interface BsRadioAttributes {
7300
10052
  "name": string;
7301
10053
  "value": string;
7302
10054
  "checked": boolean;
7303
10055
  "disabled": boolean;
7304
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
+ }
7305
10079
  interface BsSliderAttributes {
7306
10080
  "type": BsSliderType;
7307
10081
  "name": string;
@@ -7321,6 +10095,8 @@ declare namespace LocalJSX {
7321
10095
  "variant": BsSnackbarVariant;
7322
10096
  "loading": boolean;
7323
10097
  "actionLabel": string;
10098
+ "actionVariant": BsButtonVariant;
10099
+ "hideClose": boolean;
7324
10100
  }
7325
10101
  interface BsSourceLinkAttributes {
7326
10102
  "fileName": string;
@@ -7364,12 +10140,60 @@ declare namespace LocalJSX {
7364
10140
  "orientation": BsTabsOrientation;
7365
10141
  "value": string;
7366
10142
  }
10143
+ interface BsTimepickerAttributes {
10144
+ "name": string;
10145
+ "value": string;
10146
+ "format": '12h' | '24h';
10147
+ "minuteStep": number;
10148
+ "heading": string;
10149
+ "formatLabel": string;
10150
+ "confirmLabel": string;
10151
+ "cancelLabel": string;
10152
+ "hourLabel": string;
10153
+ "minuteLabel": string;
10154
+ "periodLabel": string;
10155
+ }
7367
10156
  interface BsToastAttributes {
7368
10157
  "state": BsToastState;
7369
10158
  }
7370
10159
  interface BsTooltipAttributes {
7371
10160
  "placement": 'top';
7372
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
+ }
7373
10197
 
7374
10198
  interface IntrinsicElements {
7375
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] };
@@ -7399,11 +10223,15 @@ declare namespace LocalJSX {
7399
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] };
7400
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] };
7401
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] };
7402
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] };
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] };
7403
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] };
7404
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] };
7405
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] };
7406
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] };
7407
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] };
7408
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] };
7409
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] };
@@ -7412,10 +10240,14 @@ declare namespace LocalJSX {
7412
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] };
7413
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] };
7414
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] };
7415
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] };
7416
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] };
7417
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] };
7418
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] };
7419
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] };
7420
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] };
7421
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] };
@@ -7424,8 +10256,11 @@ declare namespace LocalJSX {
7424
10256
  "bs-switch": Omit<BsSwitch, keyof BsSwitchAttributes> & { [K in keyof BsSwitch & keyof BsSwitchAttributes]?: BsSwitch[K] } & { [K in keyof BsSwitch & keyof BsSwitchAttributes as `attr:${K}`]?: BsSwitchAttributes[K] } & { [K in keyof BsSwitch & keyof BsSwitchAttributes as `prop:${K}`]?: BsSwitch[K] };
7425
10257
  "bs-tab": Omit<BsTab, keyof BsTabAttributes> & { [K in keyof BsTab & keyof BsTabAttributes]?: BsTab[K] } & { [K in keyof BsTab & keyof BsTabAttributes as `attr:${K}`]?: BsTabAttributes[K] } & { [K in keyof BsTab & keyof BsTabAttributes as `prop:${K}`]?: BsTab[K] };
7426
10258
  "bs-tabs": Omit<BsTabs, keyof BsTabsAttributes> & { [K in keyof BsTabs & keyof BsTabsAttributes]?: BsTabs[K] } & { [K in keyof BsTabs & keyof BsTabsAttributes as `attr:${K}`]?: BsTabsAttributes[K] } & { [K in keyof BsTabs & keyof BsTabsAttributes as `prop:${K}`]?: BsTabs[K] };
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] };
7427
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] };
7428
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] };
7429
10264
  }
7430
10265
  }
7431
10266
  export { LocalJSX as JSX };
@@ -7661,6 +10496,9 @@ declare module "@stencil/core" {
7661
10496
  * - `error` purely for visual emphasis — it signals a destructive action to the user, so reserve
7662
10497
  * it for actions that actually delete/revoke/undo something.
7663
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.
7664
10502
  * @prop --bs-button-height-sm - Height at `size="sm"`. Aliased to `--bs-spacing-500`.
7665
10503
  * @prop --bs-button-height-md - Height at `size="md"`. Aliased to `--bs-spacing-600`.
7666
10504
  * @prop --bs-button-height-lg - Height at `size="lg"`. Aliased to `--bs-spacing-700`.
@@ -8047,6 +10885,30 @@ declare module "@stencil/core" {
8047
10885
  * every `type`). Aliased to `--bs-color-neutral-container-hover`.
8048
10886
  */
8049
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>;
8050
10912
  /**
8051
10913
  * A sortable, optionally row-selectable table for tabular data.
8052
10914
  * `columns`, `rows`, and `cellRenderer` are JS-property-only — HTML attributes can only carry
@@ -8059,6 +10921,27 @@ declare module "@stencil/core" {
8059
10921
  * - Deeply nested/hierarchical data — this component renders one flat row per record.
8060
10922
  */
8061
10923
  "bs-data-table": LocalJSX.IntrinsicElements["bs-data-table"] & JSXBase.HTMLAttributes<HTMLBsDataTableElement>;
10924
+ /**
10925
+ * An inline calendar for picking a single date, or a start/end date range. Matches the Figma
10926
+ * "Date picker" component's two types: "Default" (month and year dropdowns above the grid) and
10927
+ * "Range" (start and end date fields above the grid, with the days between highlighted).
10928
+ * Dates are always `YYYY-MM-DD` strings, interpreted in the user's local time zone -- never full
10929
+ * ISO timestamps -- so a date can't shift by a day across time zones.
10930
+ * The calendar renders inline at a fixed width; to show it as a popover, put it inside a
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).
10933
+ * ## When to use
10934
+ * - Picking a date where seeing the surrounding days of the week/month helps (a booking, a
10935
+ * deadline, a report window).
10936
+ * - Picking a period (`range`) such as a start and end date.
10937
+ * ## When not to use
10938
+ * - A date the user knows by heart and can type quickly (a birth date) -- `bs-input type="date"`
10939
+ * is faster there.
10940
+ * ## Keyboard
10941
+ * Arrow keys move by day/week, Home/End jump to the start/end of the week, PageUp/PageDown move by
10942
+ * month (with Shift, by year), Enter/Space select the focused day.
10943
+ */
10944
+ "bs-datepicker": LocalJSX.IntrinsicElements["bs-datepicker"] & JSXBase.HTMLAttributes<HTMLBsDatepickerElement>;
8062
10945
  /**
8063
10946
  * An overlay dialog that interrupts the current flow for a focused task or confirmation.
8064
10947
  * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
@@ -8077,6 +10960,21 @@ declare module "@stencil/core" {
8077
10960
  * button in the header row next to the heading, same as before this addition.
8078
10961
  */
8079
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>;
8080
10978
  /**
8081
10979
  * A file dropzone: drag files onto it, or press "Browse file" to open the file picker. It reports
8082
10980
  * the chosen files and does nothing else -- the consuming app owns the upload itself and shows its
@@ -8120,6 +11018,21 @@ declare module "@stencil/core" {
8120
11018
  * accessible name.
8121
11019
  */
8122
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>;
8123
11036
  /**
8124
11037
  * A pill-shaped tab button -- an optional leading icon plus a text label, rendered as a real
8125
11038
  * `<button>` so it participates correctly in tab order and native click/keyboard activation.
@@ -8314,6 +11227,31 @@ declare module "@stencil/core" {
8314
11227
  * `right` slot content pushed to the far right.
8315
11228
  */
8316
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>;
8317
11255
  /**
8318
11256
  * A numbered page control -- previous/next chevrons, page-number buttons, and `...` overflow for
8319
11257
  * large page counts. Matches the Figma "Pagination" component's "Default" type (the classic
@@ -8330,6 +11268,24 @@ declare module "@stencil/core" {
8330
11268
  * plain prev/next controls (no numbers) are simpler there.
8331
11269
  */
8332
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>;
8333
11289
  /**
8334
11290
  * A circular progress indicator -- either a static ring showing a percentage sweep
8335
11291
  * (`type="determinate"`) or a continuously spinning ring signaling in-progress work with no known
@@ -8359,6 +11315,28 @@ declare module "@stencil/core" {
8359
11315
  * weight of a bar.
8360
11316
  */
8361
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>;
8362
11340
  /**
8363
11341
  * A single radio button with its label, for one mutually-exclusive choice within a group.
8364
11342
  * ## When to use
@@ -8370,6 +11348,33 @@ declare module "@stencil/core" {
8370
11348
  * - An on/off setting that takes effect immediately (no explicit form submission) -- use `bs-switch`.
8371
11349
  */
8372
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>;
8373
11378
  /**
8374
11379
  * A slider for picking a single numeric value (`type="default"`), a value snapped to evenly
8375
11380
  * spaced ticks (`type="segmented"`), or a min/max pair (`type="range"`) from within a bounded
@@ -8521,6 +11526,25 @@ declare module "@stencil/core" {
8521
11526
  * directly.
8522
11527
  */
8523
11528
  "bs-tabs": LocalJSX.IntrinsicElements["bs-tabs"] & JSXBase.HTMLAttributes<HTMLBsTabsElement>;
11529
+ /**
11530
+ * An inline time picker: hour and minute spinners (up/down carets, or the arrow keys on the value),
11531
+ * an AM/PM dropdown in 12-hour mode, a 24h switch, and Cancel/Confirm buttons. Matches the Figma
11532
+ * "Time picker" component's two formats (12h with AM/PM, and 24h).
11533
+ * The picker works on a draft: nothing is committed until the user presses Confirm, which updates
11534
+ * `value` and fires `bsChange`. Cancel discards the draft and fires `bsCancel`.
11535
+ * `value` is always 24-hour `HH:mm` (e.g. `"14:30"`), regardless of the displayed `format`.
11536
+ * The picker renders inline at a fixed width; to show it as a popover, put it in your own overlay
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).
11539
+ * ## When to use
11540
+ * - Picking a time of day where the user steps through hours and minutes.
11541
+ * ## When not to use
11542
+ * - A time the user can type faster than step to -- a plain `bs-input` is quicker.
11543
+ * ## Keyboard
11544
+ * Tab to the hour or minute value, then ArrowUp/ArrowDown step it (wrapping), Home/End jump to the
11545
+ * first/last value, and typing digits sets it directly.
11546
+ */
11547
+ "bs-timepicker": LocalJSX.IntrinsicElements["bs-timepicker"] & JSXBase.HTMLAttributes<HTMLBsTimepickerElement>;
8524
11548
  /**
8525
11549
  * A transient status message for confirming the result of an action (e.g. "Files uploaded
8526
11550
  * successfully.") -- a state-specific icon, a message, and a close button.
@@ -8558,6 +11582,37 @@ declare module "@stencil/core" {
8558
11582
  * `--bs-line-height-body-sm`.
8559
11583
  */
8560
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>;
8561
11616
  }
8562
11617
  }
8563
11618
  }