@brandsync/wc 1.10.0 → 1.12.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 (443) hide show
  1. package/CHANGELOG.md +155 -0
  2. package/custom-elements.json +8333 -4134
  3. package/dist/brandsync-wc/brandsync-wc.css +33 -0
  4. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  5. package/dist/brandsync-wc/{p-9f8852a0.entry.js → p-00a0d489.entry.js} +1 -1
  6. package/dist/brandsync-wc/{p-360452c2.entry.js → p-09435f41.entry.js} +1 -1
  7. package/dist/brandsync-wc/{p-dbcbe682.entry.js → p-09bc1923.entry.js} +1 -1
  8. package/dist/brandsync-wc/{p-1f7208cb.entry.js → p-09cbf05b.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-c99b6a66.entry.js → p-0b2d3b7e.entry.js} +1 -1
  10. package/dist/brandsync-wc/p-0b7c77c1.entry.js +1 -0
  11. package/dist/brandsync-wc/p-0ee4126c.entry.js +1 -0
  12. package/dist/brandsync-wc/{p-5f3cd501.entry.js → p-0f8cd2e8.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-1c0db4d6.entry.js → p-1261f0b0.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-b2074a32.entry.js → p-1978e63c.entry.js} +1 -1
  15. package/dist/brandsync-wc/p-1aab6d07.entry.js +1 -0
  16. package/dist/brandsync-wc/{p-96ed9386.entry.js → p-20030f4d.entry.js} +1 -1
  17. package/dist/brandsync-wc/p-2177042f.entry.js +1 -0
  18. package/dist/brandsync-wc/{p-a8e2a829.entry.js → p-2368a92e.entry.js} +1 -1
  19. package/dist/brandsync-wc/{p-2e958566.entry.js → p-247e36ad.entry.js} +1 -1
  20. package/dist/brandsync-wc/p-2497d128.entry.js +1 -0
  21. package/dist/brandsync-wc/{p-701ebf4a.entry.js → p-282ddbee.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-763876f5.entry.js → p-2f4e08e1.entry.js} +1 -1
  23. package/dist/brandsync-wc/{p-c3f72584.entry.js → p-34e5feaf.entry.js} +1 -1
  24. package/dist/brandsync-wc/{p-ea4e20ef.entry.js → p-39a26c64.entry.js} +1 -1
  25. package/dist/brandsync-wc/p-3a1af63a.entry.js +1 -0
  26. package/dist/brandsync-wc/{p-9f6fe37d.entry.js → p-3f09296a.entry.js} +1 -1
  27. package/dist/brandsync-wc/p-416322bd.entry.js +1 -0
  28. package/dist/brandsync-wc/{p-f89de457.entry.js → p-452f9c1c.entry.js} +1 -1
  29. package/dist/brandsync-wc/{p-bbcc47b0.entry.js → p-491b51e6.entry.js} +1 -1
  30. package/dist/brandsync-wc/p-52cb2358.entry.js +1 -0
  31. package/dist/brandsync-wc/{p-daab6b22.entry.js → p-56c37e0a.entry.js} +1 -1
  32. package/dist/brandsync-wc/p-5ba90a13.entry.js +1 -0
  33. package/dist/brandsync-wc/{p-08c99a60.entry.js → p-617bd13a.entry.js} +1 -1
  34. package/dist/brandsync-wc/p-68fcd4a4.entry.js +1 -0
  35. package/dist/brandsync-wc/{p-9e88f19c.entry.js → p-69c0a85d.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-d3f44cb7.entry.js → p-6a696161.entry.js} +1 -1
  37. package/dist/brandsync-wc/{p-32cd69f1.entry.js → p-6c6cdf77.entry.js} +1 -1
  38. package/dist/brandsync-wc/{p-041776c0.entry.js → p-6e735e37.entry.js} +1 -1
  39. package/dist/brandsync-wc/{p-fc58c663.entry.js → p-73f214ed.entry.js} +1 -1
  40. package/dist/brandsync-wc/{p-be2c1740.entry.js → p-7796b93f.entry.js} +1 -1
  41. package/dist/brandsync-wc/p-78a69a59.entry.js +1 -0
  42. package/dist/brandsync-wc/{p-f370b8fa.entry.js → p-78f4fcf0.entry.js} +1 -1
  43. package/dist/brandsync-wc/p-7f954939.entry.js +1 -0
  44. package/dist/brandsync-wc/{p-835a8dc7.entry.js → p-81605b82.entry.js} +1 -1
  45. package/dist/brandsync-wc/{p-a71d2811.entry.js → p-823ab3b2.entry.js} +1 -1
  46. package/dist/brandsync-wc/{p-2181378f.entry.js → p-83c90489.entry.js} +1 -1
  47. package/dist/brandsync-wc/p-89099a39.entry.js +1 -0
  48. package/dist/brandsync-wc/{p-a92eec48.entry.js → p-89fabf27.entry.js} +1 -1
  49. package/dist/brandsync-wc/{p-AgoOSYvW.js → p-DqQRXQMx.js} +2 -2
  50. package/dist/brandsync-wc/{p-18c3c22c.entry.js → p-a9169157.entry.js} +1 -1
  51. package/dist/brandsync-wc/{p-301b2455.entry.js → p-b84366a7.entry.js} +1 -1
  52. package/dist/brandsync-wc/{p-a5feaad4.entry.js → p-b8d2ce91.entry.js} +1 -1
  53. package/dist/brandsync-wc/p-b9a4042e.entry.js +1 -0
  54. package/dist/brandsync-wc/{p-275072dd.entry.js → p-b9ccd9d1.entry.js} +1 -1
  55. package/dist/brandsync-wc/{p-61c1a2a3.entry.js → p-be3dd446.entry.js} +1 -1
  56. package/dist/brandsync-wc/{p-8eba7f90.entry.js → p-d754ee13.entry.js} +1 -1
  57. package/dist/brandsync-wc/{p-e9b43754.entry.js → p-d75f3f87.entry.js} +1 -1
  58. package/dist/brandsync-wc/{p-e8a5b8eb.entry.js → p-d8b29a53.entry.js} +1 -1
  59. package/dist/brandsync-wc/p-de110ad0.entry.js +1 -0
  60. package/dist/brandsync-wc/p-e2556b4e.entry.js +1 -0
  61. package/dist/brandsync-wc/{p-af2bf957.entry.js → p-e5daa6ca.entry.js} +1 -1
  62. package/dist/brandsync-wc/{p-0132a2d1.entry.js → p-f15d9524.entry.js} +1 -1
  63. package/dist/brandsync-wc/p-f5180578.entry.js +1 -0
  64. package/dist/brandsync-wc/{p-fd254972.entry.js → p-f7d15fbe.entry.js} +1 -1
  65. package/dist/brandsync-wc/{p-50a251a4.entry.js → p-fc069773.entry.js} +1 -1
  66. package/dist/brandsync-wc/p-fcee0dc4.entry.js +1 -0
  67. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  68. package/dist/cjs/bs-accordion.cjs.entry.js +1 -1
  69. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +2 -2
  70. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  71. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  72. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  73. package/dist/cjs/bs-attachment.cjs.entry.js +1 -1
  74. package/dist/cjs/bs-avatar.cjs.entry.js +1 -1
  75. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  76. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +1 -1
  77. package/dist/cjs/bs-breadcrumb.cjs.entry.js +6 -3
  78. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +2 -2
  79. package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
  80. package/dist/cjs/bs-button.cjs.entry.js +3 -3
  81. package/dist/cjs/bs-card.cjs.entry.js +3 -3
  82. package/dist/cjs/bs-carousel.cjs.entry.js +1 -1
  83. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
  84. package/dist/cjs/bs-chatbot-header.cjs.entry.js +3 -3
  85. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
  86. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
  87. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
  88. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +2 -2
  89. package/dist/cjs/bs-checkbox.cjs.entry.js +1 -1
  90. package/dist/cjs/bs-chip-filter.cjs.entry.js +1 -1
  91. package/dist/cjs/bs-chip-informative.cjs.entry.js +1 -1
  92. package/dist/cjs/bs-chip-input.cjs.entry.js +1 -1
  93. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +1 -1
  94. package/dist/cjs/bs-composer.cjs.entry.js +2 -2
  95. package/dist/cjs/bs-cookie-consent.cjs.entry.js +186 -0
  96. package/dist/cjs/bs-data-table.cjs.entry.js +1 -1
  97. package/dist/cjs/bs-datepicker.cjs.entry.js +13 -9
  98. package/dist/cjs/bs-dialog.cjs.entry.js +1 -1
  99. package/dist/cjs/bs-error-page.cjs.entry.js +103 -0
  100. package/dist/cjs/bs-file-upload-item.cjs.entry.js +2 -2
  101. package/dist/cjs/bs-file-upload.cjs.entry.js +2 -2
  102. package/dist/cjs/bs-icon-button.cjs.entry.js +2 -2
  103. package/dist/cjs/bs-icon-tile.cjs.entry.js +52 -0
  104. package/dist/cjs/bs-inline-tab.cjs.entry.js +2 -2
  105. package/dist/cjs/{bs-input_2.cjs.entry.js → bs-input_3.cjs.entry.js} +42 -6
  106. package/dist/cjs/bs-logo.cjs.entry.js +1 -1
  107. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +2 -2
  108. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +3 -3
  109. package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
  110. package/dist/cjs/bs-onboarding-checklist.cjs.entry.js +161 -0
  111. package/dist/cjs/bs-pagination.cjs.entry.js +2 -2
  112. package/dist/cjs/bs-product-tour.cjs.entry.js +78 -0
  113. package/dist/cjs/bs-progress-linear.cjs.entry.js +4 -4
  114. package/dist/cjs/bs-progress.cjs.entry.js +3 -3
  115. package/dist/cjs/bs-qr-code.cjs.entry.js +148 -0
  116. package/dist/cjs/bs-radio.cjs.entry.js +2 -2
  117. package/dist/cjs/bs-session-timeout.cjs.entry.js +215 -0
  118. package/dist/cjs/bs-slider.cjs.entry.js +2 -2
  119. package/dist/cjs/bs-snackbar.cjs.entry.js +9 -3
  120. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  121. package/dist/cjs/bs-stepper-step.cjs.entry.js +2 -2
  122. package/dist/cjs/bs-stepper.cjs.entry.js +2 -2
  123. package/dist/cjs/bs-switch.cjs.entry.js +2 -2
  124. package/dist/cjs/bs-tab_3.cjs.entry.js +255 -0
  125. package/dist/cjs/bs-timepicker.cjs.entry.js +4 -4
  126. package/dist/cjs/bs-toast.cjs.entry.js +2 -2
  127. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  128. package/dist/cjs/bs-whats-new.cjs.entry.js +144 -0
  129. package/dist/cjs/{index-kk9YXF2S.js → index-tFJjflK5.js} +15 -3
  130. package/dist/cjs/loader.cjs.js +2 -2
  131. package/dist/collection/collection-manifest.json +9 -0
  132. package/dist/collection/components/bs-a11y.cmp.test.js +22 -0
  133. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  134. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  135. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  136. package/dist/collection/components/bs-attachment/bs-attachment.stories.js +4 -3
  137. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  138. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +6 -3
  139. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -1
  140. package/dist/collection/components/bs-button/bs-button/bs-button.cmp.test.js +28 -0
  141. package/dist/collection/components/bs-button/bs-button/bs-button.css +8 -2
  142. package/dist/collection/components/bs-button/bs-button/bs-button.js +4 -1
  143. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +1 -1
  144. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  145. package/dist/collection/components/bs-card/bs-card.cmp.test.js +48 -0
  146. package/dist/collection/components/bs-card/bs-card.css +37 -16
  147. package/dist/collection/components/bs-card/bs-card.js +2 -2
  148. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  149. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.cmp.test.js +2 -2
  150. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.css +1 -1
  151. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  152. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  153. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  154. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  155. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
  156. package/dist/collection/components/bs-composer/bs-composer.css +4 -2
  157. package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.cmp.test.js +217 -0
  158. package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.css +350 -0
  159. package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.js +668 -0
  160. package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.stories.js +103 -0
  161. package/dist/collection/components/bs-datepicker/bs-datepicker.cmp.test.js +9 -0
  162. package/dist/collection/components/bs-datepicker/bs-datepicker.css +21 -11
  163. package/dist/collection/components/bs-datepicker/bs-datepicker.js +13 -7
  164. package/dist/collection/components/bs-datepicker/bs-datepicker.stories.js +3 -2
  165. package/dist/collection/components/bs-error-page/bs-error-page.cmp.test.js +99 -0
  166. package/dist/collection/components/bs-error-page/bs-error-page.css +105 -0
  167. package/dist/collection/components/bs-error-page/bs-error-page.js +328 -0
  168. package/dist/collection/components/bs-error-page/bs-error-page.stories.js +57 -0
  169. package/dist/collection/components/bs-file-upload/bs-file-upload.js +1 -1
  170. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +1 -1
  171. package/dist/collection/components/bs-icon-tile/bs-icon-tile.cmp.test.js +175 -0
  172. package/dist/collection/components/bs-icon-tile/bs-icon-tile.css +112 -0
  173. package/dist/collection/components/bs-icon-tile/bs-icon-tile.js +158 -0
  174. package/dist/collection/components/bs-icon-tile/bs-icon-tile.stories.js +45 -0
  175. package/dist/collection/components/bs-input/bs-input.cmp.test.js +16 -2
  176. package/dist/collection/components/bs-input/bs-input.css +15 -23
  177. package/dist/collection/components/bs-input/bs-input.js +8 -4
  178. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  179. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  180. package/dist/collection/components/bs-onboarding-checklist/bs-onboarding-checklist.cmp.test.js +280 -0
  181. package/dist/collection/components/bs-onboarding-checklist/bs-onboarding-checklist.css +488 -0
  182. package/dist/collection/components/bs-onboarding-checklist/bs-onboarding-checklist.js +674 -0
  183. package/dist/collection/components/bs-onboarding-checklist/bs-onboarding-checklist.stories.js +92 -0
  184. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  185. package/dist/collection/components/bs-product-tour/bs-product-tour.cmp.test.js +116 -0
  186. package/dist/collection/components/bs-product-tour/bs-product-tour.css +265 -0
  187. package/dist/collection/components/bs-product-tour/bs-product-tour.js +391 -0
  188. package/dist/collection/components/bs-product-tour/bs-product-tour.stories.js +68 -0
  189. package/dist/collection/components/bs-progress/bs-progress.js +2 -2
  190. package/dist/collection/components/bs-progress-linear/bs-progress-linear.css +1 -1
  191. package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +2 -2
  192. package/dist/collection/components/bs-qr-code/bs-qr-code.cmp.test.js +152 -0
  193. package/dist/collection/components/bs-qr-code/bs-qr-code.css +307 -0
  194. package/dist/collection/components/bs-qr-code/bs-qr-code.js +767 -0
  195. package/dist/collection/components/bs-qr-code/bs-qr-code.stories.js +99 -0
  196. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  197. package/dist/collection/components/bs-session-timeout/bs-session-timeout.cmp.test.js +202 -0
  198. package/dist/collection/components/bs-session-timeout/bs-session-timeout.css +239 -0
  199. package/dist/collection/components/bs-session-timeout/bs-session-timeout.js +772 -0
  200. package/dist/collection/components/bs-session-timeout/bs-session-timeout.stories.js +88 -0
  201. package/dist/collection/components/bs-slider/bs-slider.js +1 -1
  202. package/dist/collection/components/bs-snackbar/bs-snackbar.cmp.test.js +20 -0
  203. package/dist/collection/components/bs-snackbar/bs-snackbar.css +6 -4
  204. package/dist/collection/components/bs-snackbar/bs-snackbar.js +53 -1
  205. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  206. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
  207. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
  208. package/dist/collection/components/bs-switch/bs-switch.js +1 -1
  209. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  210. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
  211. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +1 -1
  212. package/dist/collection/components/bs-timepicker/bs-timepicker.css +15 -11
  213. package/dist/collection/components/bs-timepicker/bs-timepicker.js +4 -2
  214. package/dist/collection/components/bs-toast/bs-toast.js +1 -1
  215. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  216. package/dist/collection/components/bs-whats-new/bs-whats-new.cmp.test.js +200 -0
  217. package/dist/collection/components/bs-whats-new/bs-whats-new.css +315 -0
  218. package/dist/collection/components/bs-whats-new/bs-whats-new.js +790 -0
  219. package/dist/collection/components/bs-whats-new/bs-whats-new.stories.js +105 -0
  220. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.cmp.test.js +79 -0
  221. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.css +131 -0
  222. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.js +295 -0
  223. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.stories.js +67 -0
  224. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +2 -2
  225. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  226. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +1 -1
  227. package/dist/components/bs-accordion.js +1 -1
  228. package/dist/components/bs-ai-disclaimer.js +1 -1
  229. package/dist/components/bs-ai-greeting.js +1 -1
  230. package/dist/components/bs-ai-thinking.js +1 -1
  231. package/dist/components/bs-attachment-list.js +1 -1
  232. package/dist/components/bs-attachment.js +1 -1
  233. package/dist/components/bs-avatar.js +1 -1
  234. package/dist/components/bs-badge.js +1 -1
  235. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  236. package/dist/components/bs-breadcrumb.js +1 -1
  237. package/dist/components/bs-breadcrumbs.js +1 -1
  238. package/dist/components/bs-button-skeleton.js +1 -1
  239. package/dist/components/bs-button.js +1 -1
  240. package/dist/components/bs-card.js +1 -1
  241. package/dist/components/bs-carousel.js +1 -1
  242. package/dist/components/bs-chatbot-feedback.js +1 -1
  243. package/dist/components/bs-chatbot-header.js +1 -1
  244. package/dist/components/bs-chatbot-response-action.js +1 -1
  245. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  246. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  247. package/dist/components/bs-checkbox-skeleton.js +1 -1
  248. package/dist/components/bs-checkbox.js +1 -1
  249. package/dist/components/bs-chip-filter.js +1 -1
  250. package/dist/components/bs-chip-informative.js +1 -1
  251. package/dist/components/bs-chip-input.js +1 -1
  252. package/dist/components/bs-composer-status-banner.js +1 -1
  253. package/dist/components/bs-composer.js +1 -1
  254. package/dist/components/bs-cookie-consent.d.ts +11 -0
  255. package/dist/components/bs-cookie-consent.js +1 -0
  256. package/dist/components/bs-data-table.js +1 -1
  257. package/dist/components/bs-datepicker.js +1 -1
  258. package/dist/components/bs-dialog.js +1 -1
  259. package/dist/components/bs-error-page.d.ts +11 -0
  260. package/dist/components/bs-error-page.js +1 -0
  261. package/dist/components/bs-file-upload-item.js +1 -1
  262. package/dist/components/bs-file-upload.js +1 -1
  263. package/dist/components/bs-icon-button.js +1 -1
  264. package/dist/components/bs-icon-tile.d.ts +11 -0
  265. package/dist/components/bs-icon-tile.js +1 -0
  266. package/dist/components/bs-inline-tab.js +1 -1
  267. package/dist/components/bs-input.js +1 -1
  268. package/dist/components/bs-logo.js +1 -1
  269. package/dist/components/bs-menu-item.js +1 -1
  270. package/dist/components/bs-menu.js +1 -1
  271. package/dist/components/bs-navigation-drawer-item.js +1 -1
  272. package/dist/components/bs-navigation-drawer.js +1 -1
  273. package/dist/components/bs-navigation-header.js +1 -1
  274. package/dist/components/bs-onboarding-checklist.d.ts +11 -0
  275. package/dist/components/bs-onboarding-checklist.js +1 -0
  276. package/dist/components/bs-pagination.js +1 -1
  277. package/dist/components/bs-product-tour.d.ts +11 -0
  278. package/dist/components/bs-product-tour.js +1 -0
  279. package/dist/components/bs-progress-linear.js +1 -1
  280. package/dist/components/bs-progress.js +1 -1
  281. package/dist/components/bs-qr-code.d.ts +11 -0
  282. package/dist/components/bs-qr-code.js +1 -0
  283. package/dist/components/bs-radio.js +1 -1
  284. package/dist/components/bs-session-timeout.d.ts +11 -0
  285. package/dist/components/bs-session-timeout.js +1 -0
  286. package/dist/components/bs-slider.js +1 -1
  287. package/dist/components/bs-snackbar.js +1 -1
  288. package/dist/components/bs-source-link.js +1 -1
  289. package/dist/components/bs-stepper-step.js +1 -1
  290. package/dist/components/bs-stepper.js +1 -1
  291. package/dist/components/bs-switch.js +1 -1
  292. package/dist/components/bs-tab.js +1 -1
  293. package/dist/components/bs-tabs.js +1 -1
  294. package/dist/components/bs-timepicker.js +1 -1
  295. package/dist/components/bs-toast.js +1 -1
  296. package/dist/components/bs-tooltip.js +1 -1
  297. package/dist/components/bs-whats-new-entry.d.ts +11 -0
  298. package/dist/components/bs-whats-new-entry.js +1 -0
  299. package/dist/components/bs-whats-new.d.ts +11 -0
  300. package/dist/components/bs-whats-new.js +1 -0
  301. package/dist/components/index.js +1 -1
  302. package/dist/components/{p-R2MlkUzD.js → p-BEEoVNRu.js} +1 -1
  303. package/dist/components/p-BUskqBR6.js +1 -0
  304. package/dist/components/{p-DkIVyFOP.js → p-BZ3M4lOU.js} +1 -1
  305. package/dist/components/{p-ZK8p5zax.js → p-Be9L4_Fe.js} +1 -1
  306. package/dist/components/p-Be_Pmccm.js +1 -0
  307. package/dist/components/{p-CPvqZNO8.js → p-Bl_tVzeq.js} +1 -1
  308. package/dist/components/p-C8yT2Ucq.js +1 -0
  309. package/dist/components/p-CA31vqjL.js +1 -0
  310. package/dist/components/p-CUfs0ROR.js +1 -0
  311. package/dist/components/{p-JYlmcxBn.js → p-CVrEuVFo.js} +1 -1
  312. package/dist/components/{p-B7Icv1ho.js → p-C_j_jDM6.js} +1 -1
  313. package/dist/components/p-CbimDNGY.js +1 -0
  314. package/dist/components/p-CeUK3n7D.js +1 -0
  315. package/dist/components/p-CncySD_-.js +1 -0
  316. package/dist/components/p-DE8K7fg0.js +1 -0
  317. package/dist/components/p-Dr0Qk9Zc.js +1 -0
  318. package/dist/components/p-DuLL7Ouw.js +1 -0
  319. package/dist/components/p-YsHQLXET.js +1 -0
  320. package/dist/components/p-qmS2CBqi.js +1 -0
  321. package/dist/components/{p-BYR_ZC8v.js → p-zTHlbyH6.js} +1 -1
  322. package/dist/esm/brandsync-wc.js +3 -3
  323. package/dist/esm/bs-accordion.entry.js +1 -1
  324. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  325. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  326. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  327. package/dist/esm/bs-attachment-list.entry.js +2 -2
  328. package/dist/esm/bs-attachment.entry.js +1 -1
  329. package/dist/esm/bs-avatar.entry.js +1 -1
  330. package/dist/esm/bs-badge.entry.js +1 -1
  331. package/dist/esm/bs-breadcrumb-overflow.entry.js +1 -1
  332. package/dist/esm/bs-breadcrumb.entry.js +6 -3
  333. package/dist/esm/bs-breadcrumbs.entry.js +2 -2
  334. package/dist/esm/bs-button-skeleton.entry.js +2 -2
  335. package/dist/esm/bs-button.entry.js +3 -3
  336. package/dist/esm/bs-card.entry.js +3 -3
  337. package/dist/esm/bs-carousel.entry.js +1 -1
  338. package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
  339. package/dist/esm/bs-chatbot-header.entry.js +3 -3
  340. package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
  341. package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
  342. package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
  343. package/dist/esm/bs-checkbox-skeleton.entry.js +2 -2
  344. package/dist/esm/bs-checkbox.entry.js +1 -1
  345. package/dist/esm/bs-chip-filter.entry.js +1 -1
  346. package/dist/esm/bs-chip-informative.entry.js +1 -1
  347. package/dist/esm/bs-chip-input.entry.js +1 -1
  348. package/dist/esm/bs-composer-status-banner.entry.js +1 -1
  349. package/dist/esm/bs-composer.entry.js +2 -2
  350. package/dist/esm/bs-cookie-consent.entry.js +184 -0
  351. package/dist/esm/bs-data-table.entry.js +1 -1
  352. package/dist/esm/bs-datepicker.entry.js +13 -9
  353. package/dist/esm/bs-dialog.entry.js +1 -1
  354. package/dist/esm/bs-error-page.entry.js +101 -0
  355. package/dist/esm/bs-file-upload-item.entry.js +2 -2
  356. package/dist/esm/bs-file-upload.entry.js +2 -2
  357. package/dist/esm/bs-icon-button.entry.js +2 -2
  358. package/dist/esm/bs-icon-tile.entry.js +50 -0
  359. package/dist/esm/bs-inline-tab.entry.js +2 -2
  360. package/dist/esm/{bs-input_2.entry.js → bs-input_3.entry.js} +42 -7
  361. package/dist/esm/bs-logo.entry.js +1 -1
  362. package/dist/esm/bs-navigation-drawer-item.entry.js +2 -2
  363. package/dist/esm/bs-navigation-drawer.entry.js +3 -3
  364. package/dist/esm/bs-navigation-header.entry.js +2 -2
  365. package/dist/esm/bs-onboarding-checklist.entry.js +159 -0
  366. package/dist/esm/bs-pagination.entry.js +2 -2
  367. package/dist/esm/bs-product-tour.entry.js +76 -0
  368. package/dist/esm/bs-progress-linear.entry.js +4 -4
  369. package/dist/esm/bs-progress.entry.js +3 -3
  370. package/dist/esm/bs-qr-code.entry.js +146 -0
  371. package/dist/esm/bs-radio.entry.js +2 -2
  372. package/dist/esm/bs-session-timeout.entry.js +213 -0
  373. package/dist/esm/bs-slider.entry.js +2 -2
  374. package/dist/esm/bs-snackbar.entry.js +9 -3
  375. package/dist/esm/bs-source-link.entry.js +3 -3
  376. package/dist/esm/bs-stepper-step.entry.js +2 -2
  377. package/dist/esm/bs-stepper.entry.js +2 -2
  378. package/dist/esm/bs-switch.entry.js +2 -2
  379. package/dist/esm/bs-tab_3.entry.js +251 -0
  380. package/dist/esm/bs-timepicker.entry.js +4 -4
  381. package/dist/esm/bs-toast.entry.js +2 -2
  382. package/dist/esm/bs-tooltip.entry.js +2 -2
  383. package/dist/esm/bs-whats-new.entry.js +142 -0
  384. package/dist/esm/{index-AgoOSYvW.js → index-DqQRXQMx.js} +15 -3
  385. package/dist/esm/loader.js +3 -3
  386. package/dist/types/components/bs-attachment/bs-attachment.stories.d.ts +1 -1
  387. package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.d.ts +4 -1
  388. package/dist/types/components/bs-button/bs-button/bs-button.d.ts +3 -0
  389. package/dist/types/components/bs-cookie-consent/bs-cookie-consent.cmp.test.d.ts +1 -0
  390. package/dist/types/components/bs-cookie-consent/bs-cookie-consent.d.ts +136 -0
  391. package/dist/types/components/bs-cookie-consent/bs-cookie-consent.stories.d.ts +16 -0
  392. package/dist/types/components/bs-datepicker/bs-datepicker.d.ts +2 -0
  393. package/dist/types/components/bs-error-page/bs-error-page.cmp.test.d.ts +1 -0
  394. package/dist/types/components/bs-error-page/bs-error-page.d.ts +60 -0
  395. package/dist/types/components/bs-error-page/bs-error-page.stories.d.ts +22 -0
  396. package/dist/types/components/bs-icon-tile/bs-icon-tile.cmp.test.d.ts +1 -0
  397. package/dist/types/components/bs-icon-tile/bs-icon-tile.d.ts +40 -0
  398. package/dist/types/components/bs-icon-tile/bs-icon-tile.stories.d.ts +13 -0
  399. package/dist/types/components/bs-input/bs-input.d.ts +4 -1
  400. package/dist/types/components/bs-onboarding-checklist/bs-onboarding-checklist.cmp.test.d.ts +1 -0
  401. package/dist/types/components/bs-onboarding-checklist/bs-onboarding-checklist.d.ts +140 -0
  402. package/dist/types/components/bs-onboarding-checklist/bs-onboarding-checklist.stories.d.ts +18 -0
  403. package/dist/types/components/bs-product-tour/bs-product-tour.cmp.test.d.ts +1 -0
  404. package/dist/types/components/bs-product-tour/bs-product-tour.d.ts +78 -0
  405. package/dist/types/components/bs-product-tour/bs-product-tour.stories.d.ts +19 -0
  406. package/dist/types/components/bs-qr-code/bs-qr-code.cmp.test.d.ts +1 -0
  407. package/dist/types/components/bs-qr-code/bs-qr-code.d.ts +124 -0
  408. package/dist/types/components/bs-qr-code/bs-qr-code.stories.d.ts +28 -0
  409. package/dist/types/components/bs-session-timeout/bs-session-timeout.cmp.test.d.ts +1 -0
  410. package/dist/types/components/bs-session-timeout/bs-session-timeout.d.ts +141 -0
  411. package/dist/types/components/bs-session-timeout/bs-session-timeout.stories.d.ts +19 -0
  412. package/dist/types/components/bs-snackbar/bs-snackbar.d.ts +7 -0
  413. package/dist/types/components/bs-timepicker/bs-timepicker.d.ts +2 -0
  414. package/dist/types/components/bs-whats-new/bs-whats-new.cmp.test.d.ts +1 -0
  415. package/dist/types/components/bs-whats-new/bs-whats-new.d.ts +147 -0
  416. package/dist/types/components/bs-whats-new/bs-whats-new.stories.d.ts +14 -0
  417. package/dist/types/components/bs-whats-new-entry/bs-whats-new-entry.cmp.test.d.ts +1 -0
  418. package/dist/types/components/bs-whats-new-entry/bs-whats-new-entry.d.ts +53 -0
  419. package/dist/types/components/bs-whats-new-entry/bs-whats-new-entry.stories.d.ts +18 -0
  420. package/dist/types/components.d.ts +2642 -98
  421. package/package.json +3 -2
  422. package/dist/brandsync-wc/p-1c3a43c7.entry.js +0 -1
  423. package/dist/brandsync-wc/p-1c427ffb.entry.js +0 -1
  424. package/dist/brandsync-wc/p-4f2c4929.entry.js +0 -1
  425. package/dist/brandsync-wc/p-76e1c295.entry.js +0 -1
  426. package/dist/brandsync-wc/p-790db8b3.entry.js +0 -1
  427. package/dist/brandsync-wc/p-796a1860.entry.js +0 -1
  428. package/dist/brandsync-wc/p-806a5347.entry.js +0 -1
  429. package/dist/brandsync-wc/p-addfa0a0.entry.js +0 -1
  430. package/dist/brandsync-wc/p-c9a72416.entry.js +0 -1
  431. package/dist/brandsync-wc/p-d42b1c2b.entry.js +0 -1
  432. package/dist/brandsync-wc/p-f006d962.entry.js +0 -1
  433. package/dist/brandsync-wc/p-f074f94e.entry.js +0 -1
  434. package/dist/cjs/bs-menu.cjs.entry.js +0 -39
  435. package/dist/cjs/bs-tab.cjs.entry.js +0 -88
  436. package/dist/cjs/bs-tabs.cjs.entry.js +0 -133
  437. package/dist/components/p-BTvme8CE.js +0 -1
  438. package/dist/components/p-Ba860ej1.js +0 -1
  439. package/dist/components/p-CpUHnsq9.js +0 -1
  440. package/dist/components/p-jDO25SfF.js +0 -1
  441. package/dist/esm/bs-menu.entry.js +0 -37
  442. package/dist/esm/bs-tab.entry.js +0 -86
  443. package/dist/esm/bs-tabs.entry.js +0 -131
@@ -0,0 +1,255 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-tFJjflK5.js');
4
+
5
+ const bsTabCss = () => `:host{display:inline-block;--bs-tab-radius:var(--bs-border-radius-100);--bs-tab-padding-y:var(--bs-spacing-150);--bs-tab-padding-x:var(--bs-spacing-200);--bs-tab-gap:var(--bs-spacing-75);--bs-tab-gap-vertical:var(--bs-spacing-50);--bs-tab-color-default:var(--bs-text-muted);--bs-tab-icon-color-default:var(--bs-icon-muted);--bs-tab-color-hover:var(--bs-text-default);--bs-tab-icon-color-hover:var(--bs-icon-default);--bs-tab-indicator-hover:var(--bs-border-neutral-hover);--bs-tab-color-selected:var(--bs-color-primary-default);--bs-tab-color-selected-hover:var(--bs-color-primary-hover);--bs-tab-color-selected-pressed:var(--bs-color-primary-pressed);--bs-tab-indicator-selected:var(--bs-color-primary-default);--bs-tab-indicator-selected-hover:var(--bs-color-primary-hover);--bs-tab-indicator-selected-pressed:var(--bs-color-primary-pressed);--bs-tab-focus-ring-color:var(--bs-border-neutral-focus);--bs-tab-color-disabled:var(--bs-text-on-disabled);--bs-tab-icon-color-disabled:var(--bs-icon-disabled);--bs-tab-font-size:var(--bs-font-size-md);--bs-tab-line-height:var(--bs-line-height-body-md)}.bs-tab{box-sizing:border-box;position:relative;display:flex;flex-direction:row;align-items:center;justify-content:center;border:none;cursor:pointer;background:transparent;color:var(--bs-tab-color-default);font-family:inherit;border-radius:var(--bs-tab-radius);padding:var(--bs-tab-padding-y) var(--bs-tab-padding-x);gap:var(--bs-tab-gap);transition:color var(--bs-duration-fast) var(--bs-easing-standard), background-color var(--bs-duration-fast) var(--bs-easing-standard)}.bs-tab--vertical{flex-direction:column;gap:var(--bs-tab-gap-vertical)}.bs-tab:focus-visible{outline:2px solid var(--bs-tab-focus-ring-color);outline-offset:2px}.bs-tab:not(.bs-tab--selected):not(.bs-tab--disabled):hover,.bs-tab:not(.bs-tab--selected):not(.bs-tab--disabled):focus-visible,.bs-tab:not(.bs-tab--selected):not(.bs-tab--disabled):active{color:var(--bs-tab-color-hover)}.bs-tab:not(.bs-tab--selected):not(.bs-tab--disabled):hover .bs-tab__icon,.bs-tab:not(.bs-tab--selected):not(.bs-tab--disabled):focus-visible .bs-tab__icon,.bs-tab:not(.bs-tab--selected):not(.bs-tab--disabled):active .bs-tab__icon{color:var(--bs-tab-icon-color-hover)}.bs-tab:not(.bs-tab--selected):not(.bs-tab--disabled):hover .bs-tab__indicator,.bs-tab:not(.bs-tab--selected):not(.bs-tab--disabled):focus-visible .bs-tab__indicator,.bs-tab:not(.bs-tab--selected):not(.bs-tab--disabled):active .bs-tab__indicator{background:var(--bs-tab-indicator-hover)}.bs-tab--selected{color:var(--bs-tab-color-selected)}.bs-tab--selected .bs-tab__icon--has-content{color:var(--bs-tab-color-selected)}.bs-tab--selected .bs-tab__indicator{background:var(--bs-tab-indicator-selected)}.bs-tab--selected:not(.bs-tab--disabled):hover,.bs-tab--selected:not(.bs-tab--disabled):focus-visible{color:var(--bs-tab-color-selected-hover)}.bs-tab--selected:not(.bs-tab--disabled):hover .bs-tab__icon--has-content,.bs-tab--selected:not(.bs-tab--disabled):focus-visible .bs-tab__icon--has-content{color:var(--bs-tab-color-selected-hover)}.bs-tab--selected:not(.bs-tab--disabled):hover .bs-tab__indicator,.bs-tab--selected:not(.bs-tab--disabled):focus-visible .bs-tab__indicator{background:var(--bs-tab-indicator-selected-hover)}.bs-tab--selected:not(.bs-tab--disabled):active{color:var(--bs-tab-color-selected-pressed)}.bs-tab--selected:not(.bs-tab--disabled):active .bs-tab__icon--has-content{color:var(--bs-tab-color-selected-pressed)}.bs-tab--selected:not(.bs-tab--disabled):active .bs-tab__indicator{background:var(--bs-tab-indicator-selected-pressed)}.bs-tab--disabled{color:var(--bs-tab-color-disabled);cursor:not-allowed}.bs-tab--disabled .bs-tab__icon--has-content{color:var(--bs-tab-icon-color-disabled)}.bs-tab--disabled .bs-tab__indicator{background:transparent}.bs-tab__icon{display:none;width:24px;height:24px;flex-shrink:0;color:var(--bs-tab-icon-color-default)}.bs-tab__icon--has-content{display:inline-flex;align-items:center;justify-content:center}.bs-tab__icon ::slotted(svg){width:24px;height:24px}.bs-tab__label{display:none;font-size:var(--bs-tab-font-size);line-height:calc(var(--bs-tab-line-height) * 1px);white-space:nowrap}.bs-tab__label--has-content{display:inline-block}.bs-tab__badge{display:none}.bs-tab__badge--has-content{display:inline-flex;align-items:center}.bs-tab__indicator{position:absolute;inset-inline-start:var(--bs-tab-padding-x);inset-inline-end:var(--bs-tab-padding-x);bottom:0;height:2px;background:transparent;border-radius:var(--bs-border-radius-50, 2px)}`;
6
+
7
+ const BsTab = class {
8
+ constructor(hostRef) {
9
+ index.registerInstance(this, hostRef);
10
+ this.bsSelect = index.createEvent(this, "bsSelect");
11
+ }
12
+ get el() { return index.getElement(this); }
13
+ /** Whether this tab is the currently active one. NOT mutable and NOT self-toggling -- see the
14
+ * "Known gap" note in the class JSDoc. Still reflected as an attribute so consumers/CSS can
15
+ * target `bs-tab[selected]`. */
16
+ selected = false;
17
+ /** Disables the tab: sets the native `disabled` attribute, suppresses hover/focus styling, and
18
+ * prevents clicking from emitting `bsSelect`. */
19
+ disabled = false;
20
+ /** Where the icon sits relative to the label, when both `icon` and the default slot are
21
+ * populated. Ignored for icon-only/text-only layouts. */
22
+ iconPosition = 'start';
23
+ /** Accessible name for the tab. Required for icon-only usage (no visible label text via the
24
+ * default slot) so screen readers still announce what the tab does -- without it, an icon-only
25
+ * tab has no discernible name at all (axe-core flags this as a critical `button-name`
26
+ * violation). Stencil reflects this camelCase prop to the `aria-label` HTML attribute
27
+ * automatically, same as `bs-button`'s identical prop. */
28
+ ariaLabel = null;
29
+ /** Identifies this tab within a parent `bs-tabs`: the group's `value` is the selected tab's
30
+ * `value`, and `bsChange` reports it. Optional -- a tab without one is identified by its
31
+ * zero-based position in the group (`"0"`, `"1"`...). */
32
+ value;
33
+ /** Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the
34
+ * Tab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays
35
+ * a normal tab stop. */
36
+ tabbable;
37
+ /** Tracks whether the `icon` slot has assigned content. */
38
+ hasIcon = false;
39
+ /** Tracks whether the default (label) slot has assigned content. */
40
+ hasLabel = false;
41
+ /** Tracks whether the `badge` slot has assigned content. */
42
+ hasBadge = false;
43
+ /** Fires when the tab is clicked. Does not toggle `selected` itself -- see the class JSDoc. */
44
+ bsSelect;
45
+ /**
46
+ * Computes the initial `hasIcon`/`hasLabel`/`hasBadge` state directly from the host's light DOM
47
+ * children, before first render -- same reasoning as `bs-button.componentWillLoad` (a slot with
48
+ * zero assigned nodes from the start never fires `slotchange`).
49
+ */
50
+ componentWillLoad() {
51
+ this.hasIcon = this.hasSlottedContent('icon');
52
+ this.hasLabel = this.hasSlottedContent(null);
53
+ this.hasBadge = this.hasSlottedContent('badge');
54
+ }
55
+ hasSlottedContent(slotName) {
56
+ return Array.from(this.el.childNodes).some(node => {
57
+ if (node.nodeType === Node.ELEMENT_NODE) {
58
+ return node.getAttribute('slot') === slotName;
59
+ }
60
+ // Only elements can carry a `slot` attribute -- any other node type (text, comments) can
61
+ // only ever be assigned to the default slot.
62
+ return slotName === null;
63
+ });
64
+ }
65
+ onIconSlotchange = (ev) => {
66
+ this.hasIcon = ev.target.assignedNodes().length > 0;
67
+ };
68
+ onLabelSlotchange = (ev) => {
69
+ this.hasLabel = ev.target.assignedNodes().length > 0;
70
+ };
71
+ onBadgeSlotchange = (ev) => {
72
+ this.hasBadge = ev.target.assignedNodes().length > 0;
73
+ };
74
+ onClick = () => {
75
+ if (this.disabled)
76
+ return;
77
+ this.bsSelect.emit();
78
+ };
79
+ render() {
80
+ const iconOnly = this.hasIcon && !this.hasLabel;
81
+ const vertical = this.hasIcon && this.hasLabel && this.iconPosition === 'top';
82
+ const showBadge = this.hasBadge && !iconOnly && !vertical;
83
+ return (index.h("button", { key: '6cb94a173877a8e339585dd41bfca7cdb5152277', type: "button", part: "tab", role: "tab", class: `bs-tab ${this.selected ? 'bs-tab--selected' : ''} ${this.disabled ? 'bs-tab--disabled' : ''} ${iconOnly ? 'bs-tab--icon-only' : ''} ${vertical ? 'bs-tab--vertical' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, tabIndex: this.tabbable === undefined ? undefined : this.tabbable ? 0 : -1, onClick: this.onClick }, index.h("span", { key: '87fc3d0b1e958295bb3ff41c3a4f6a76803c4b31', part: "icon", class: `bs-tab__icon ${this.hasIcon ? 'bs-tab__icon--has-content' : ''}` }, index.h("slot", { key: '5fb74ca62c8f60b50d7f53cd5b77b02cfb547365', name: "icon", onSlotchange: this.onIconSlotchange })), index.h("span", { key: '4774748fa4d8d5f441914aaca0cc8729c3d85857', part: "label", class: `bs-tab__label ${this.hasLabel ? 'bs-tab__label--has-content' : ''}` }, index.h("slot", { key: '87d793b4e8088f51ff64dd388f3769aebd5c507d', onSlotchange: this.onLabelSlotchange })), index.h("span", { key: 'ddfc8532be46adab986a6f4a6b0e46d2c8fcc8f4', part: "badge", class: `bs-tab__badge ${showBadge ? 'bs-tab__badge--has-content' : ''}` }, index.h("slot", { key: '729a03df8dbca1814725d06ceb23d1d1c694cc63', name: "badge", onSlotchange: this.onBadgeSlotchange })), index.h("span", { key: 'd873545b4148383e3df42fe1ff76aab027d4a0f8', part: "indicator", class: "bs-tab__indicator" })));
84
+ }
85
+ };
86
+ BsTab.style = bsTabCss();
87
+
88
+ const bsTabsCss = () => `:host{display:inline-block;--bs-tabs-tab-gap:var(--bs-spacing-100);--bs-tabs-inline-tab-bg:var(--bs-color-neutral-container);--bs-tabs-inline-tab-padding-x:var(--bs-spacing-50);--bs-tabs-inline-tab-radius:var(--bs-border-radius-full);--bs-tabs-inline-tab-gap:var(--bs-spacing-50)}.bs-tabs{display:inline-flex;align-items:center}.bs-tabs--vertical{display:flex;flex-direction:column;align-items:flex-start}.bs-tabs--bs-tab{gap:var(--bs-tabs-tab-gap)}.bs-tabs--bs-inline-tab{background:var(--bs-tabs-inline-tab-bg);padding:0 var(--bs-tabs-inline-tab-padding-x);border-radius:var(--bs-tabs-inline-tab-radius);gap:var(--bs-tabs-inline-tab-gap)}`;
89
+
90
+ const BsTabs = class {
91
+ constructor(hostRef) {
92
+ index.registerInstance(this, hostRef);
93
+ this.bsChange = index.createEvent(this, "bsChange");
94
+ }
95
+ get el() { return index.getElement(this); }
96
+ /** Which tab-button family this group wraps. Governs the wrapper's own visual treatment (gap-only
97
+ * for `bs-tab`, a filled pill bar for `bs-inline-tab`). Not reflected as an attribute -- nothing
98
+ * external needs to target it via CSS attribute selector, it only drives internal class names. */
99
+ type = 'bs-tab';
100
+ /** Layout direction of the tab bar itself. Sets `aria-orientation` on the internal wrapper and
101
+ * switches `flex-direction`. */
102
+ orientation = 'horizontal';
103
+ /** The selected tab's `value`. Mutable and reflected: it follows the user's selection, and
104
+ * setting it from outside (attribute or property) selects the matching tab -- without emitting
105
+ * `bsChange`, which only fires for user-driven changes. A tab's value is its own `value` prop,
106
+ * or, for a tab without one, its zero-based position in the group as a string (`"0"`, `"1"`...).
107
+ * If unset, it is read from whichever tab is already `selected` once the group loads. */
108
+ value;
109
+ /** Fires when the user selects a different tab (click, or arrow/Home/End), with the new
110
+ * `value`. Does not fire when `value` is set programmatically. `bsSelect` on the individual tab
111
+ * still fires as before. */
112
+ bsChange;
113
+ /**
114
+ * Catches `bsSelect` bubbling up from any slotted `<bs-tab>`/`<bs-inline-tab>` (Stencil's
115
+ * `@Event()` defaults to `bubbles: true, composed: true`, and `@Listen` without a target listens
116
+ * on the host itself), and sets `selected` on the clicked child / `false` on its siblings.
117
+ * Disabled children never emit `bsSelect` in the first place (each's own `onClick` guards
118
+ * `if (this.disabled) return;`), so no special-casing is needed here.
119
+ */
120
+ onTabSelect(ev) {
121
+ const tabs = this.tabs();
122
+ tabs.forEach(tab => {
123
+ tab.selected = tab === ev.target;
124
+ });
125
+ this.syncRovingTabindex();
126
+ const index = tabs.findIndex(tab => tab === ev.target);
127
+ if (index === -1)
128
+ return;
129
+ const value = this.tabValue(tabs[index], index);
130
+ if (value !== this.value) {
131
+ this.value = value;
132
+ this.bsChange.emit({ value });
133
+ }
134
+ }
135
+ componentDidLoad() {
136
+ if (this.value !== undefined) {
137
+ this.applyValue();
138
+ }
139
+ else {
140
+ // Uncontrolled: report whichever tab the consumer already marked `selected`.
141
+ const tabs = this.tabs();
142
+ const index = tabs.findIndex(t => t.selected);
143
+ if (index !== -1)
144
+ this.value = this.tabValue(tabs[index], index);
145
+ }
146
+ this.syncRovingTabindex();
147
+ }
148
+ tabValue(tab, index) {
149
+ return tab.value ?? String(index);
150
+ }
151
+ /** Selects the tab whose value matches `this.value` (and deselects the rest). */
152
+ applyValue() {
153
+ this.tabs().forEach((tab, i) => {
154
+ tab.selected = this.tabValue(tab, i) === this.value;
155
+ });
156
+ this.syncRovingTabindex();
157
+ }
158
+ onValueChange() {
159
+ this.applyValue();
160
+ }
161
+ syncRovingTabindex() {
162
+ const tabs = this.tabs();
163
+ const anySelected = tabs.some(t => t.selected);
164
+ const firstEnabled = tabs.find(t => !t.disabled);
165
+ tabs.forEach(t => {
166
+ t.tabbable = anySelected ? t.selected : t === firstEnabled;
167
+ });
168
+ }
169
+ tabs() {
170
+ return Array.from(this.el.querySelectorAll(':scope > bs-tab, :scope > bs-inline-tab'));
171
+ }
172
+ /** WAI-ARIA tabs pattern (automatic activation): arrows move focus *and* selection to the
173
+ * previous/next enabled tab (wrapping), Home/End jump to the first/last. Arrow axis follows
174
+ * `orientation`; in RTL the horizontal arrows are mirrored. */
175
+ onKeyDown(ev) {
176
+ const vertical = this.orientation === 'vertical';
177
+ const rtl = getComputedStyle(this.el).direction === 'rtl';
178
+ const prevKey = vertical ? 'ArrowUp' : rtl ? 'ArrowRight' : 'ArrowLeft';
179
+ const nextKey = vertical ? 'ArrowDown' : rtl ? 'ArrowLeft' : 'ArrowRight';
180
+ if (![prevKey, nextKey, 'Home', 'End'].includes(ev.key))
181
+ return;
182
+ const enabled = this.tabs().filter(t => !t.disabled);
183
+ const current = enabled.findIndex(t => t === ev.target || t.contains(ev.target));
184
+ if (current === -1 || enabled.length === 0)
185
+ return;
186
+ ev.preventDefault();
187
+ let nextIdx = current;
188
+ if (ev.key === nextKey)
189
+ nextIdx = (current + 1) % enabled.length;
190
+ else if (ev.key === prevKey)
191
+ nextIdx = (current - 1 + enabled.length) % enabled.length;
192
+ else if (ev.key === 'Home')
193
+ nextIdx = 0;
194
+ else
195
+ nextIdx = enabled.length - 1;
196
+ const target = enabled[nextIdx];
197
+ const button = target.shadowRoot?.querySelector('button');
198
+ button?.focus();
199
+ button?.click();
200
+ }
201
+ render() {
202
+ const vertical = this.orientation === 'vertical';
203
+ return (index.h("div", { key: 'e7f42dc2b8504a99f03c35fa3617155ac430def0', part: "tablist", role: "tablist", "aria-orientation": this.orientation, class: `bs-tabs bs-tabs--${this.type} ${vertical ? 'bs-tabs--vertical' : ''}` }, index.h("slot", { key: 'a9a96d3fca150110a8490b42d516db9609677903', onSlotchange: () => this.syncRovingTabindex() })));
204
+ }
205
+ static get watchers() { return {
206
+ "value": [{
207
+ "onValueChange": 0
208
+ }],
209
+ "orientation": [{
210
+ "syncRovingTabindex": 0
211
+ }]
212
+ }; }
213
+ };
214
+ BsTabs.style = bsTabsCss();
215
+
216
+ const bsWhatsNewEntryCss = () => `:host{display:block;--bs-whats-new-entry-gap:var(--bs-spacing-100);--bs-whats-new-entry-color:var(--bs-text-default);--bs-whats-new-entry-color-secondary:var(--bs-text-secondary);--bs-whats-new-entry-unread:var(--bs-color-primary-default);--bs-whats-new-entry-image-bg:var(--bs-color-primary-container);--bs-whats-new-entry-image-height:140px;--bs-whats-new-entry-image-radius:var(--bs-border-radius-100);--bs-whats-new-entry-divider:var(--bs-border-default)}.bs-whats-new-entry{display:flex;flex-direction:column;gap:var(--bs-whats-new-entry-gap);color:var(--bs-whats-new-entry-color)}.bs-whats-new-entry p,.bs-whats-new-entry h1,.bs-whats-new-entry h2,.bs-whats-new-entry h3,.bs-whats-new-entry h4,.bs-whats-new-entry h5,.bs-whats-new-entry h6{margin:0}.bs-whats-new-entry__meta{display:flex;align-items:center;gap:var(--bs-spacing-100)}.bs-whats-new-entry__date{color:var(--bs-whats-new-entry-color-secondary);font-size:var(--bs-font-size-xs);line-height:16px;white-space:nowrap}.bs-whats-new-entry__unread{flex:none;width:8px;height:8px;border-radius:50%;background:var(--bs-whats-new-entry-unread)}.bs-whats-new-entry__sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.bs-whats-new-entry__image{display:none;height:var(--bs-whats-new-entry-image-height);border-radius:var(--bs-whats-new-entry-image-radius);background:var(--bs-whats-new-entry-image-bg);overflow:hidden}.bs-whats-new-entry__image--visible{display:block}::slotted([slot='image']){display:block;width:100%;height:100%;object-fit:cover}.bs-whats-new-entry__content{display:flex;flex-direction:column;gap:var(--bs-spacing-100);align-items:flex-start}.bs-whats-new-entry__heading{align-self:stretch;font-size:var(--bs-font-size-md);font-weight:var(--bs-font-weight-bold);line-height:20px}.bs-whats-new-entry__description{align-self:stretch;color:var(--bs-whats-new-entry-color-secondary);font-size:var(--bs-font-size-sm);line-height:20px}.bs-whats-new-entry__action{--bs-button-subtle-color:var(--bs-text-action);--bs-button-height-sm:var(--bs-spacing-400);--bs-button-padding-x-label-side:var(--bs-spacing-150);--bs-button-padding-x-icon-side:var(--bs-spacing-100)}.bs-whats-new-entry__action svg{width:20px;height:20px}.bs-whats-new-entry__divider{height:8px;background:linear-gradient(var(--bs-whats-new-entry-divider), var(--bs-whats-new-entry-divider)) center / 100% 1px no-repeat}`;
217
+
218
+ const BsWhatsNewEntry = class {
219
+ constructor(hostRef) {
220
+ index.registerInstance(this, hostRef);
221
+ this.bsAction = index.createEvent(this, "bsAction");
222
+ }
223
+ /** The tag text, e.g. "New feature". No tag when empty. */
224
+ tag;
225
+ /** Colour of the tag: `info` (default), `success`, `warning`, `error` or `neutral`. */
226
+ tagColor = 'info';
227
+ /** The date as text, already formatted for the reader (e.g. "24.09.2026"). */
228
+ date;
229
+ /** Shows a dot after the date for an update the user hasn't seen. */
230
+ unread = false;
231
+ /** Title. */
232
+ heading;
233
+ /** HTML heading level for the title, 1-6. */
234
+ headingLevel = 3;
235
+ /** Short description under the title. */
236
+ description;
237
+ /** Label of the action link (e.g. "Try it"). No action when empty. */
238
+ actionLabel;
239
+ /** Draws a rule under the entry, to separate it from the next one. */
240
+ divider = false;
241
+ /** Visually hidden text for the unread dot. */
242
+ unreadLabel = 'Unread';
243
+ /** Fires when the action link is pressed. */
244
+ bsAction;
245
+ hasImage = false;
246
+ render() {
247
+ const level = Math.min(6, Math.max(1, Math.trunc(Number(this.headingLevel)) || 3));
248
+ return (index.h("div", { key: 'f3b59b9886ee7dc0cff3ce37ef361081d268c301', class: "bs-whats-new-entry" }, (this.tag || this.date || this.unread) && (index.h("div", { key: '849ff3110f9b5e8862d2e8743c69e37a3913ba3f', part: "meta", class: "bs-whats-new-entry__meta" }, this.tag && (index.h("bs-chip-informative", { key: '1e3ab58124be4aac1785ac5094f607eebba06ada', part: "tag", size: "sm", color: this.tagColor }, this.tag)), this.date && (index.h("span", { key: '351f70bd49e94fd4848e34d2b134dda0a76aa3ce', part: "date", class: "bs-whats-new-entry__date" }, this.date)), this.unread && (index.h("span", { key: '9e5341acb5e4b5628ad9c567ca30d87f03c7c511', part: "unread", class: "bs-whats-new-entry__unread" }, index.h("span", { key: 'cca65aff39503436f75f7e1a6eada38975985b63', class: "bs-whats-new-entry__sr-only" }, this.unreadLabel))))), index.h("div", { key: '9c4e28e9687456fbe4b40fdba7e22dc162ea26c7', part: "image", class: { 'bs-whats-new-entry__image': true, 'bs-whats-new-entry__image--visible': this.hasImage } }, index.h("slot", { key: '4e698f6b9cd3bc68c4723877a6c257c2cdafb5a4', name: "image", onSlotchange: (ev) => (this.hasImage = ev.target.assignedNodes().length > 0) })), index.h("div", { key: '60e73438ed675a12159986ae8352b1c5b2735fb1', class: "bs-whats-new-entry__content" }, this.heading && index.h(`h${level}`, { part: 'heading', class: { 'bs-whats-new-entry__heading': true } }, this.heading), this.description && (index.h("p", { key: 'ddf69ede4112a2da4554b0ed4dae5664f739c055', part: "description", class: "bs-whats-new-entry__description" }, this.description)), this.actionLabel && (index.h("bs-button", { key: 'a6465a5bfab7ee0ccf8e26eb6221e566ad483b2e', part: "action", class: "bs-whats-new-entry__action", variant: "subtle", size: "sm", onClick: () => this.bsAction.emit() }, this.actionLabel, index.h("svg", { key: 'd45596c561a1366f54beaf3c5ba62084581742fe', slot: "end-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, index.h("path", { key: 'a87b5824ff0fe97c7c025096e432948864e1d19b', d: "M5 12H19" }), index.h("path", { key: '96659132bb0262ed354a33c2c33d48dde199a95b', d: "M13 6L19 12L13 18" }))))), this.divider && index.h("div", { key: '25381aa31681ccdb1e18fe74a019bd57e1fa8a62', part: "divider", class: "bs-whats-new-entry__divider" })));
249
+ }
250
+ };
251
+ BsWhatsNewEntry.style = bsWhatsNewEntryCss();
252
+
253
+ exports.bs_tab = BsTab;
254
+ exports.bs_tabs = BsTabs;
255
+ exports.bs_whats_new_entry = BsWhatsNewEntry;
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-kk9YXF2S.js');
3
+ var index = require('./index-tFJjflK5.js');
4
4
 
5
- const bsTimepickerCss = () => `:host{display:inline-block;--bs-timepicker-width:294px;--bs-timepicker-bg:var(--bs-surface-raised);--bs-timepicker-radius:var(--bs-border-radius-100);--bs-timepicker-padding-y:var(--bs-spacing-200);--bs-timepicker-padding-x:var(--bs-spacing-200);--bs-timepicker-gap:var(--bs-spacing-200);--bs-timepicker-shadow:var(--bs-shadow-md);--bs-timepicker-title-size:var(--bs-font-size-2xl);--bs-timepicker-title-line-height:var(--bs-line-height-heading-h6);--bs-timepicker-color:var(--bs-text-default);--bs-timepicker-color-secondary:var(--bs-text-secondary);--bs-timepicker-divider:var(--bs-border-neutral-container);--bs-timepicker-cell-size:var(--bs-spacing-550);--bs-timepicker-cell-radius:var(--bs-border-radius-100);--bs-timepicker-value-radius:var(--bs-border-radius-50);--bs-timepicker-hover:var(--bs-surface-hover);--bs-timepicker-pressed:var(--bs-surface-pressed);--bs-timepicker-focus-ring-color:var(--bs-border-neutral-container-focused)}.bs-timepicker{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--bs-timepicker-gap);width:var(--bs-timepicker-width);max-width:100%;padding:var(--bs-timepicker-padding-y) 0;border-radius:var(--bs-timepicker-radius);background:var(--bs-timepicker-bg);box-shadow:var(--bs-timepicker-shadow);color:var(--bs-timepicker-color);font-family:inherit;font-size:var(--bs-font-size-md)}.bs-timepicker__header{display:flex;align-items:center;gap:var(--bs-spacing-100);padding:0 var(--bs-timepicker-padding-x)}.bs-timepicker__title{flex:1 1 0;min-width:0;font-size:var(--bs-timepicker-title-size);font-weight:var(--bs-font-weight-bold);line-height:calc(var(--bs-timepicker-title-line-height) * 1px)}.bs-timepicker__format{display:flex;align-items:center;gap:var(--bs-spacing-50);color:var(--bs-timepicker-color-secondary);line-height:calc(var(--bs-line-height-body-md) * 1px)}.bs-timepicker__divider{height:1px;background:var(--bs-timepicker-divider)}.bs-timepicker__selector{display:flex;align-items:center;justify-content:center;gap:var(--bs-spacing-200);padding:0 var(--bs-timepicker-padding-x)}.bs-timepicker__spinner{display:flex;flex-direction:column;align-items:center;gap:var(--bs-spacing-100);width:var(--bs-timepicker-cell-size)}.bs-timepicker__step,.bs-timepicker__value{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--bs-timepicker-cell-size);height:var(--bs-timepicker-cell-size);padding:0;border:none;background:transparent;font-family:inherit}.bs-timepicker__step{border-radius:var(--bs-timepicker-cell-radius);color:var(--bs-timepicker-color-secondary);cursor:pointer}.bs-timepicker__step svg{width:24px;height:24px}.bs-timepicker__value{border-radius:var(--bs-timepicker-value-radius);color:var(--bs-timepicker-color);font-size:var(--bs-timepicker-title-size);font-weight:var(--bs-font-weight-bold);line-height:calc(var(--bs-timepicker-title-line-height) * 1px);font-variant-numeric:tabular-nums;cursor:pointer;user-select:none}.bs-timepicker__step:hover,.bs-timepicker__value:hover{background:var(--bs-timepicker-hover)}.bs-timepicker__step:active,.bs-timepicker__value:active{background:var(--bs-timepicker-pressed)}.bs-timepicker__step:focus-visible,.bs-timepicker__value:focus-visible{outline:2px solid var(--bs-timepicker-focus-ring-color);outline-offset:0}.bs-timepicker__separator{display:flex;align-items:center;color:var(--bs-timepicker-color)}.bs-timepicker__separator svg{width:4px;height:32px}.bs-timepicker__period::part(label){position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.bs-timepicker__period{width:112px}.bs-timepicker__period::part(control){caret-color:transparent;cursor:pointer;text-overflow:clip}.bs-timepicker__footer{display:flex;align-items:flex-start;justify-content:flex-end;gap:var(--bs-spacing-100);padding:0 var(--bs-timepicker-padding-x)}`;
5
+ const bsTimepickerCss = () => `:host{display:inline-block;--bs-timepicker-width:294px;--bs-timepicker-bg:var(--bs-paper-bg-raised);--bs-timepicker-radius:var(--bs-border-radius-100);--bs-timepicker-padding-y:var(--bs-spacing-200);--bs-timepicker-padding-x:var(--bs-spacing-200);--bs-timepicker-gap:var(--bs-spacing-200);--bs-timepicker-shadow:var(--bs-shadow-md);--bs-timepicker-title-size:var(--bs-font-size-2xl);--bs-timepicker-title-line-height:var(--bs-line-height-heading-h6);--bs-timepicker-color:var(--bs-text-default);--bs-timepicker-color-secondary:var(--bs-text-secondary);--bs-timepicker-divider:var(--bs-border-neutral-container);--bs-timepicker-cell-size:var(--bs-spacing-550);--bs-timepicker-cell-radius:var(--bs-border-radius-100);--bs-timepicker-value-radius:var(--bs-border-radius-50);--bs-timepicker-hover:var(--bs-surface-hover);--bs-timepicker-pressed:var(--bs-surface-pressed);--bs-timepicker-focus-ring-color:var(--bs-border-neutral-container-focused)}.bs-timepicker{width:var(--bs-timepicker-width);max-width:100%;color:var(--bs-timepicker-color);font-size:var(--bs-font-size-md);--bs-card-bg:var(--bs-timepicker-bg);--bs-card-radius:var(--bs-timepicker-radius);--bs-card-padding:var(--bs-timepicker-padding-y) 0;--bs-card-shadow:var(--bs-timepicker-shadow);--bs-card-overflow:visible}.bs-timepicker__body{display:flex;flex-direction:column;gap:var(--bs-timepicker-gap)}.bs-timepicker__header{display:flex;align-items:center;gap:var(--bs-spacing-100);padding:0 var(--bs-timepicker-padding-x)}.bs-timepicker__title{flex:1 1 0;min-width:0;font-size:var(--bs-timepicker-title-size);font-weight:var(--bs-font-weight-bold);line-height:calc(var(--bs-timepicker-title-line-height) * 1px)}.bs-timepicker__format{display:flex;align-items:center;gap:var(--bs-spacing-50);color:var(--bs-timepicker-color-secondary);line-height:calc(var(--bs-line-height-body-md) * 1px)}.bs-timepicker__divider{height:1px;background:var(--bs-timepicker-divider)}.bs-timepicker__selector{display:flex;align-items:center;justify-content:center;gap:var(--bs-spacing-200);padding:0 var(--bs-timepicker-padding-x)}.bs-timepicker__spinner{display:flex;flex-direction:column;align-items:center;gap:var(--bs-spacing-100);width:var(--bs-timepicker-cell-size)}.bs-timepicker__step,.bs-timepicker__value{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--bs-timepicker-cell-size);height:var(--bs-timepicker-cell-size);padding:0;border:none;background:transparent;font-family:inherit}.bs-timepicker__step{border-radius:var(--bs-timepicker-cell-radius);color:var(--bs-timepicker-color-secondary);cursor:pointer}.bs-timepicker__step svg{width:24px;height:24px}.bs-timepicker__value{border-radius:var(--bs-timepicker-value-radius);color:var(--bs-timepicker-color);font-size:var(--bs-timepicker-title-size);font-weight:var(--bs-font-weight-bold);line-height:calc(var(--bs-timepicker-title-line-height) * 1px);font-variant-numeric:tabular-nums;cursor:pointer;user-select:none}.bs-timepicker__step:hover,.bs-timepicker__value:hover{background:var(--bs-timepicker-hover)}.bs-timepicker__step:active,.bs-timepicker__value:active{background:var(--bs-timepicker-pressed)}.bs-timepicker__step:focus-visible,.bs-timepicker__value:focus-visible{outline:2px solid var(--bs-timepicker-focus-ring-color);outline-offset:0}.bs-timepicker__separator{display:flex;align-items:center;color:var(--bs-timepicker-color)}.bs-timepicker__separator svg{width:4px;height:32px}.bs-timepicker__period::part(label){position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.bs-timepicker__period{width:112px}.bs-timepicker__period::part(control){caret-color:transparent;cursor:pointer;text-overflow:clip}.bs-timepicker__footer{display:flex;align-items:flex-start;justify-content:flex-end;gap:var(--bs-spacing-100);padding:0 var(--bs-timepicker-padding-x)}`;
6
6
 
7
7
  const BsTimepicker = class {
8
8
  constructor(hostRef) {
@@ -174,14 +174,14 @@ const BsTimepicker = class {
174
174
  return (index.h("div", { part: "spinner", class: "bs-timepicker__spinner" }, index.h("button", { part: "step", type: "button", class: "bs-timepicker__step", "aria-label": stepLabel('Increase'), tabindex: -1, onClick: () => this.stepBy(col, 1) }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true" }, index.h("path", { d: "M18 15L12 9L6 15", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))), index.h("div", { part: "value", class: "bs-timepicker__value", role: "spinbutton", tabindex: 0, "aria-label": label, "aria-valuemin": min, "aria-valuemax": max, "aria-valuenow": n, "aria-valuetext": pad(n), onKeyDown: this.onKeyDown(col), onBlur: () => (this.typed = '') }, pad(n)), index.h("button", { part: "step", type: "button", class: "bs-timepicker__step", "aria-label": stepLabel('Decrease'), tabindex: -1, onClick: () => this.stepBy(col, -1) }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true" }, index.h("path", { d: "M6 9L12 15L18 9", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })))));
175
175
  }
176
176
  render() {
177
- return (index.h("div", { key: 'a2e5fe098763d32468ffc0bdd3c2df153385dfd7', part: "container", class: "bs-timepicker" }, index.h("div", { key: 'd7a3bcdb9585480d2f58b27d8499f6ef9c8d21e0', part: "header", class: "bs-timepicker__header" }, index.h("div", { key: '6183e6243df377936ddc2d5a92238720efc7a671', part: "title", class: "bs-timepicker__title" }, this.heading), index.h("label", { key: '4e95425e9f67d6575ef9572a9c385b9a5c887359', class: "bs-timepicker__format" }, index.h("span", { key: '29771986229fd68af07078e3528a12d75f4a5794' }, this.formatLabel), index.h("bs-switch", { key: '946ea660ff659d71ca2c3e024bff8eb05afdcfe8', part: "format-toggle", size: "md", ariaLabel: this.formatLabel, checked: !this.is12h, onBsChange: (ev) => (this.format = ev.detail ? '24h' : '12h') }))), index.h("div", { key: 'e6367ea101ae0981224129bc6c70c7bf5d2b6db9', class: "bs-timepicker__divider" }), index.h("div", { key: '20ab9cfd9702dae8bf097de642e61439489f6fb5', part: "selector", class: "bs-timepicker__selector" }, this.renderColumn('hour', this.hourLabel), index.h("div", { key: '5780f3fb2eb6f5b2e6d29ed4cd1585190051e3fd', part: "separator", class: "bs-timepicker__separator", "aria-hidden": "true" }, index.h("svg", { key: 'd35956df0f6f18f1472cc720f4ab876bbc41e515', viewBox: "0 0 4 32", fill: "currentColor" }, index.h("circle", { key: '4e6083df833bc3bf6390c80d7911219e61a51d37', cx: "2", cy: "10", r: "2" }), index.h("circle", { key: 'e3dea9bb879e7b4b09b9d37a0becbfd54f803169', cx: "2", cy: "22", r: "2" }))), this.renderColumn('minute', this.minuteLabel), this.is12h && (index.h("bs-input", { key: 'a9fb9ef6ff16d5c3f4aa4e067e3795a7ddc7d1e7', part: "period", class: "bs-timepicker__period", type: "dropdown", label: this.periodLabel, value: this.isPm ? 'PM' : 'AM', options: [
177
+ return (index.h("bs-card", { key: 'e0545d99e052005bcad5509f81505f628adb5dc4', part: "container", class: "bs-timepicker", surface: "raised" }, index.h("div", { key: '664c7184dcefe5c63f03afad3953787cbc3064cc', class: "bs-timepicker__body" }, index.h("div", { key: '602d4f0ca6975b22daa7c7a37a6d53a259c39768', part: "header", class: "bs-timepicker__header" }, index.h("div", { key: '1650464c84e066f14f6343f18f779e35932535c3', part: "title", class: "bs-timepicker__title" }, this.heading), index.h("label", { key: 'debc6155ccf39b90f281d49240203d642fb5039d', class: "bs-timepicker__format" }, index.h("span", { key: '147a6d85b4f0922b5c7d96ebef88b3c70d1fbe05' }, this.formatLabel), index.h("bs-switch", { key: 'ddb0be1751ce8246acbfd6c187e66fb6bc878cd5', part: "format-toggle", size: "md", ariaLabel: this.formatLabel, checked: !this.is12h, onBsChange: (ev) => (this.format = ev.detail ? '24h' : '12h') }))), index.h("div", { key: '35f13bd74133f2c1109df96aafdc456178e4a32f', class: "bs-timepicker__divider" }), index.h("div", { key: '9c979a8d3300a8f5dba7d8df784dc8ef691a40a6', part: "selector", class: "bs-timepicker__selector" }, this.renderColumn('hour', this.hourLabel), index.h("div", { key: '5b4af0371fd816067b92854da2b35e5a7de8e4ea', part: "separator", class: "bs-timepicker__separator", "aria-hidden": "true" }, index.h("svg", { key: 'a70450b5068add559c48e795ce6aca204b30d02d', viewBox: "0 0 4 32", fill: "currentColor" }, index.h("circle", { key: '26a760f4d4712eca3df48b97bde276ce241511d5', cx: "2", cy: "10", r: "2" }), index.h("circle", { key: '3c6eb56e2736353dc5e5bc4a1d6ef64242f6a367', cx: "2", cy: "22", r: "2" }))), this.renderColumn('minute', this.minuteLabel), this.is12h && (index.h("bs-input", { key: '948e724c331008bbd00fd84c516d02e919e622e1', part: "period", class: "bs-timepicker__period", type: "dropdown", label: this.periodLabel, value: this.isPm ? 'PM' : 'AM', options: [
178
178
  { label: 'AM', value: 'AM' },
179
179
  { label: 'PM', value: 'PM' },
180
180
  ], onBsChange: (ev) => {
181
181
  const pm = ev.detail === 'PM';
182
182
  if (pm !== this.isPm)
183
183
  this.hour = (this.hour + 12) % 24;
184
- } }))), index.h("div", { key: 'e4256dede407bec46c5da8e967001472ccd0f49b', class: "bs-timepicker__divider" }), index.h("div", { key: '9be6cade11a25c92c77f4313827f49ee8d89dfb4', part: "footer", class: "bs-timepicker__footer" }, index.h("bs-button", { key: '6ded59a284b389b5e4a259b1a238296ec83d6c27', part: "cancel", variant: "subtle", onClick: this.cancel }, this.cancelLabel), index.h("bs-button", { key: 'e1f566c9c34b3371783206910d91a9d49f8cdc41', part: "confirm", variant: "primary", onClick: this.confirm }, this.confirmLabel))));
184
+ } }))), index.h("div", { key: '08b57e8c0b895e272d98386fe5b2ac2e55a87de0', class: "bs-timepicker__divider" }), index.h("div", { key: '5b1af1da10c4333ef6b826eaafd75fa12ef2e785', part: "footer", class: "bs-timepicker__footer" }, index.h("bs-button", { key: 'ad24615dbe6ae46e00ca558f71cee030504573a5', part: "cancel", variant: "subtle", onClick: this.cancel }, this.cancelLabel), index.h("bs-button", { key: 'f76cd192e1e7e0bb524080cf54a655c5b4508a3c', part: "confirm", variant: "primary", onClick: this.confirm }, this.confirmLabel)))));
185
185
  }
186
186
  static get formAssociated() { return true; }
187
187
  static get watchers() { return {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-kk9YXF2S.js');
3
+ var index = require('./index-tFJjflK5.js');
4
4
 
5
5
  const bsToastCss = () => `:host{display:inline-flex;--bs-toast-radius:var(--bs-border-radius-100);--bs-toast-shadow:var(--bs-shadow-md);--bs-toast-content-padding-y:var(--bs-spacing-200);--bs-toast-content-padding-x:var(--bs-spacing-200);--bs-toast-content-gap:var(--bs-spacing-150);--bs-toast-font-size:var(--bs-font-size-md);--bs-toast-line-height:var(--bs-line-height-body-md);--bs-toast-actions-padding-y:var(--bs-spacing-50);--bs-toast-actions-padding-x:var(--bs-spacing-100);--bs-toast-close-radius:var(--bs-border-radius-100);--bs-toast-surface-info:var(--bs-color-info-container);--bs-toast-text-info:var(--bs-text-info);--bs-toast-surface-warning:var(--bs-color-warning-container);--bs-toast-text-warning:var(--bs-text-warning);--bs-toast-surface-success:var(--bs-color-success-container);--bs-toast-text-success:var(--bs-text-success);--bs-toast-surface-error:var(--bs-color-error-container);--bs-toast-text-error:var(--bs-text-error)}.bs-toast{display:flex;align-items:center;border-radius:var(--bs-toast-radius);box-shadow:var(--bs-toast-shadow);font-family:inherit}.bs-toast--info{background:var(--bs-toast-surface-info);color:var(--bs-toast-text-info)}.bs-toast--warning{background:var(--bs-toast-surface-warning);color:var(--bs-toast-text-warning)}.bs-toast--success{background:var(--bs-toast-surface-success);color:var(--bs-toast-text-success)}.bs-toast--error{background:var(--bs-toast-surface-error);color:var(--bs-toast-text-error)}.bs-toast__content{display:flex;align-items:center;gap:var(--bs-toast-content-gap);flex:1 1 auto;min-width:0;padding:var(--bs-toast-content-padding-y) 0 var(--bs-toast-content-padding-y) var(--bs-toast-content-padding-x)}.bs-toast__icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;color:inherit}.bs-toast__icon svg{width:24px;height:24px}.bs-toast__message{flex:1 1 auto;min-width:0;font-size:var(--bs-toast-font-size);line-height:calc(var(--bs-toast-line-height) * 1px)}.bs-toast__actions{display:flex;align-items:center;align-self:stretch;flex-shrink:0;padding:var(--bs-toast-actions-padding-y) var(--bs-toast-actions-padding-x) var(--bs-toast-actions-padding-y) 0}.bs-toast__close{display:flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0;padding:0;border:none;background:transparent;border-radius:var(--bs-toast-close-radius);color:inherit;cursor:pointer}.bs-toast__close svg{width:24px;height:24px}.bs-toast__close:hover{background:color-mix(in srgb, currentColor 12%, transparent)}.bs-toast__close:active{background:color-mix(in srgb, currentColor 24%, transparent)}.bs-toast__close:focus-visible{outline:2px solid currentColor;outline-offset:2px}`;
6
6
 
@@ -19,7 +19,7 @@ const BsToast = class {
19
19
  this.bsDismiss.emit();
20
20
  };
21
21
  render() {
22
- return (index.h("div", { key: 'e8da15f45d0491a0eb8568a8fc31e2b802cf30c3', part: "container", class: `bs-toast bs-toast--${this.state}`, role: "status", "aria-live": this.state === 'error' ? 'assertive' : 'polite' }, index.h("div", { key: '703099dfc85c56997a2cf6e5e86bd559d1a9d971', class: "bs-toast__content" }, index.h("span", { key: 'dacb887b5e7bdae27100399a80f9c2cc7a9970d6', part: "icon", class: "bs-toast__icon", "aria-hidden": "true" }, index.h(StateIcon, { key: '5d71c6abf0c68673c20de54162557a224cffd66b', state: this.state })), index.h("span", { key: '6587834edfbdf0188a8780ee0c5b93a572956da4', part: "message", class: "bs-toast__message" }, index.h("slot", { key: '559c2a397c140532185da397a7cab18f484fad19' }))), index.h("div", { key: '87f868f1b541432798de1f511f92091434c41e0f', class: "bs-toast__actions" }, index.h("button", { key: '6267c6dcc3114af0d9fecd250097416f80f661b1', part: "close", type: "button", class: "bs-toast__close", "aria-label": "Dismiss", onClick: this.onDismiss }, index.h(CloseIcon, { key: '8b6a5b9e2ce36d5cbbec7801df81fd125c7d0f27' })))));
22
+ return (index.h("div", { key: 'fcf10204b781318554bd1d1b65b3b003759f47ca', part: "container", class: `bs-toast bs-toast--${this.state}`, role: "status", "aria-live": this.state === 'error' ? 'assertive' : 'polite' }, index.h("div", { key: '77a9fc881d530b43aa93cd71ab00d79a402ac5df', class: "bs-toast__content" }, index.h("span", { key: '18b4ffee843c2f9f235477e729a7a5bca1044595', part: "icon", class: "bs-toast__icon", "aria-hidden": "true" }, index.h(StateIcon, { key: '62a78820785f12ccfa503d7690ae99d2b3b47aa2', state: this.state })), index.h("span", { key: 'b17882e4d5f4afe5bcfa5704b515c145df94799b', part: "message", class: "bs-toast__message" }, index.h("slot", { key: '678d2256cc21e6e07b099d417837b5891e7d6021' }))), index.h("div", { key: 'aba935f0a62a599b9eacfed9d13598f70a941283', class: "bs-toast__actions" }, index.h("button", { key: 'a9ee43cf75eca8e737d5e59507408de7f8bffaf1', part: "close", type: "button", class: "bs-toast__close", "aria-label": "Dismiss", onClick: this.onDismiss }, index.h(CloseIcon, { key: '4e4c5a25e6b25da2362385f1be5c4b86f02bbeb0' })))));
23
23
  }
24
24
  };
25
25
  const StateIcon = ({ state }) => {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-kk9YXF2S.js');
3
+ var index = require('./index-tFJjflK5.js');
4
4
 
5
5
  const bsTooltipCss = () => `:host{display:inline-block;--bs-tooltip-bg:var(--bs-surface-inverse);--bs-tooltip-color:var(--bs-text-inverse);--bs-tooltip-radius:var(--bs-border-radius-50);--bs-tooltip-padding-x:var(--bs-spacing-200);--bs-tooltip-padding-y:var(--bs-spacing-100);--bs-tooltip-max-width:200px;--bs-tooltip-shadow:-1px 4px 8px rgba(0, 0, 0, 0.08);--bs-tooltip-font-size:var(--bs-font-size-sm);--bs-tooltip-line-height:var(--bs-line-height-body-sm)}.bs-tooltip{position:relative;display:inline-block}.bs-tooltip__bubble{box-sizing:border-box;max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);background:var(--bs-tooltip-bg);color:var(--bs-tooltip-color);border-radius:var(--bs-tooltip-radius);box-shadow:var(--bs-tooltip-shadow);font-family:inherit;font-size:var(--bs-tooltip-font-size);line-height:calc(var(--bs-tooltip-line-height) * 1px)}.bs-tooltip__arrow{position:absolute;top:-6px;left:50%;transform:translateX(-50%);width:8px;height:8px;background:var(--bs-tooltip-bg);clip-path:polygon(50% 0, 0% 100%, 100% 100%)}`;
6
6
 
@@ -16,7 +16,7 @@ const BsTooltip = class {
16
16
  */
17
17
  placement = 'top';
18
18
  render() {
19
- return (index.h("div", { key: '6fdabb24080aa3e58a1054aa63f43878da2d0787', class: "bs-tooltip" }, index.h("span", { key: 'ec139068fd7714642215b47ffbd91318062cbb84', part: "arrow", class: "bs-tooltip__arrow" }), index.h("div", { key: 'c1e18985eeb5263b6faf9c14c1f6c93cfe6c1062', part: "bubble", class: "bs-tooltip__bubble" }, index.h("slot", { key: 'f521333b359cb1b30457753ee28379a064aeeae2' }))));
19
+ return (index.h("div", { key: '8fdc149cce564aa5531956eda52b81bedd9db1bb', class: "bs-tooltip" }, index.h("span", { key: '34234ea02b510a5a728bb97d259cfbd2c8f7f7b2', part: "arrow", class: "bs-tooltip__arrow" }), index.h("div", { key: '04d825a91dc6753a90b7daaf370e575c9ddee6d1', part: "bubble", class: "bs-tooltip__bubble" }, index.h("slot", { key: '81b8681507245e597177d169c1925dfb65aaeeab' }))));
20
20
  }
21
21
  };
22
22
  BsTooltip.style = bsTooltipCss();
@@ -0,0 +1,144 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-tFJjflK5.js');
4
+
5
+ const bsWhatsNewCss = () => `:host{display:block;max-width:100%;--bs-whats-new-width:400px;--bs-whats-new-padding:var(--bs-spacing-200);--bs-whats-new-color:var(--bs-text-default);--bs-whats-new-color-secondary:var(--bs-text-secondary);--bs-whats-new-border:var(--bs-border-default);--bs-whats-new-hero-bg:var(--bs-color-primary-container);--bs-whats-new-hero-height:220px;--bs-whats-new-link:var(--bs-text-link);--bs-whats-new-link-underline:var(--bs-border-info);width:var(--bs-whats-new-width)}:host([type='announcement']){--bs-whats-new-width:560px}:host([type='teaser']){--bs-whats-new-width:300px;--bs-whats-new-padding:var(--bs-spacing-150)}.bs-wn--feed{--bs-card-radius:0;--bs-card-padding:var(--bs-whats-new-padding);--bs-card-shadow:0 2px 2px var(--bs-elevation-medium), inset 1px 0 0 var(--bs-whats-new-border)}.bs-wn--announcement{position:relative;--bs-card-radius:var(--bs-border-radius-200);--bs-card-padding:0;--bs-card-shadow:0 2px 4px var(--bs-elevation-medium)}.bs-wn--teaser{--bs-card-radius:var(--bs-border-radius-100);--bs-card-padding:var(--bs-whats-new-padding);--bs-card-shadow:0 4px 4px var(--bs-elevation-high)}.bs-wn{color:var(--bs-whats-new-color)}.bs-wn p,.bs-wn ul,.bs-wn h1,.bs-wn h2,.bs-wn h3,.bs-wn h4,.bs-wn h5,.bs-wn h6{margin:0}.bs-wn__heading{font-size:var(--bs-font-size-2xl);font-weight:var(--bs-font-weight-bold);line-height:32px}.bs-wn__heading--lg{align-self:stretch}.bs-wn__heading--sm{font-size:var(--bs-font-size-sm);font-weight:var(--bs-font-weight-semibold);line-height:20px}.bs-wn__spacer{flex:1 1 0}.bs-wn__text-button{--bs-button-subtle-color:var(--bs-text-action);--bs-button-height-sm:var(--bs-spacing-400);--bs-button-padding-x-sm:var(--bs-spacing-150)}.bs-wn__text-button--md{--bs-button-height-md:var(--bs-spacing-550)}.bs-wn__close{flex:none}.bs-wn__close svg{width:20px;height:20px}.bs-wn__close--compact{--bs-icon-button-size-md:24px}.bs-wn__feed{display:flex;flex-direction:column;gap:var(--bs-spacing-100)}.bs-wn__head{display:flex;align-items:center;gap:var(--bs-spacing-100)}.bs-wn__filters{overflow-x:auto;scrollbar-width:none}.bs-wn__filters::-webkit-scrollbar{display:none}.bs-wn__entries{display:flex;flex-direction:column;padding-top:var(--bs-spacing-200);padding-bottom:var(--bs-spacing-100)}.bs-wn__empty{padding:var(--bs-spacing-300) 0;color:var(--bs-whats-new-color-secondary);font-size:var(--bs-font-size-sm);line-height:20px;text-align:center}.bs-wn__footer{display:flex;align-items:center;padding-top:var(--bs-spacing-150)}.bs-wn__link{display:inline-flex;align-items:center;gap:var(--bs-spacing-25);color:var(--bs-whats-new-link);font-size:var(--bs-font-size-xs);line-height:16px;text-decoration:none}.bs-wn__link-text{border-bottom:1px solid var(--bs-whats-new-link-underline)}.bs-wn__link svg{width:16px;height:16px}.bs-wn__link:focus-visible{outline:2px solid var(--bs-border-neutral-focus);outline-offset:2px}.bs-wn__announcement{display:flex;flex-direction:column}.bs-wn--announcement .bs-wn__close{position:absolute;z-index:1;top:var(--bs-spacing-50);inset-inline-end:var(--bs-spacing-50)}.bs-wn__hero{display:none;height:var(--bs-whats-new-hero-height);background:var(--bs-whats-new-hero-bg);overflow:hidden}.bs-wn__hero--visible{display:block}.bs-wn__hero img,::slotted([slot='hero']){display:block;width:100%;height:100%;object-fit:cover}.bs-wn__body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--bs-spacing-150);padding:var(--bs-whats-new-padding)}.bs-wn__points{display:flex;flex-direction:column;gap:var(--bs-spacing-150);align-self:stretch;padding:0;list-style:none;font-size:var(--bs-font-size-sm);line-height:20px}.bs-wn__points li{display:flex;align-items:center;gap:var(--bs-spacing-150)}.bs-wn__check{flex:none;width:18px;height:18px;color:var(--bs-icon-action)}.bs-wn__announcement-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--bs-spacing-100);align-self:stretch;padding-top:var(--bs-spacing-100)}.bs-wn__step{color:var(--bs-whats-new-color-secondary);font-size:var(--bs-font-size-xs);line-height:16px;white-space:nowrap}.bs-wn__actions{display:flex;align-items:center;gap:var(--bs-spacing-100);margin-inline-start:auto}.bs-wn__actions bs-button{--bs-button-height-md:var(--bs-spacing-550)}.bs-wn__teaser{display:flex;flex-direction:column;align-items:flex-start;gap:var(--bs-spacing-75)}.bs-wn__teaser-row{display:flex;align-items:center;gap:var(--bs-spacing-100);align-self:stretch}.bs-wn__date{color:var(--bs-whats-new-color-secondary);font-size:var(--bs-font-size-xs);line-height:16px;white-space:nowrap}.bs-wn__description{color:var(--bs-whats-new-color-secondary);font-size:var(--bs-font-size-sm);line-height:20px}.bs-wn__link-button{--bs-button-padding-x-label-side:var(--bs-spacing-150);--bs-button-padding-x-icon-side:var(--bs-spacing-100);margin-inline-start:calc(var(--bs-spacing-150) * -1)}.bs-wn__link-button svg{width:20px;height:20px}`;
6
+
7
+ const BsWhatsNew = class {
8
+ constructor(hostRef) {
9
+ index.registerInstance(this, hostRef);
10
+ this.bsMarkAllRead = index.createEvent(this, "bsMarkAllRead");
11
+ this.bsEntryAction = index.createEvent(this, "bsEntryAction");
12
+ this.bsFilterChange = index.createEvent(this, "bsFilterChange");
13
+ this.bsClose = index.createEvent(this, "bsClose");
14
+ this.bsPrimary = index.createEvent(this, "bsPrimary");
15
+ this.bsSecondary = index.createEvent(this, "bsSecondary");
16
+ this.bsOpen = index.createEvent(this, "bsOpen");
17
+ }
18
+ /** Which form: `feed`, `announcement` or `teaser`. */
19
+ type = 'feed';
20
+ /** Heading. Defaults to "What's new" for `feed`; set it for the other forms. */
21
+ heading;
22
+ /** HTML heading level, 1-6. */
23
+ headingLevel = 2;
24
+ /** Shows a close button. */
25
+ closable = false;
26
+ /** Accessible name of the close button. */
27
+ closeLabel = 'Close';
28
+ // --- feed --------------------------------------------------------------------------------
29
+ /** The updates in the feed: `[{ id, category?, tag?, tagColor?, date?, unread?, heading, description?,
30
+ * actionLabel?, image? }]`. Must be set as a JS property, not an HTML attribute -- see CONVENTIONS.md's
31
+ * non-string props rule. */
32
+ entries = [];
33
+ /** The filter tabs: `[{ value, label }]`. `value: "all"` shows every entry; any other value shows the
34
+ * entries whose `category` matches. Defaults to All, New Features, Improvements and Fixes
35
+ * (categories `features`, `improvements`, `fixes`). Set `[]` for no tabs. */
36
+ filters = [
37
+ { value: 'all', label: 'All' },
38
+ { value: 'features', label: 'New Features' },
39
+ { value: 'improvements', label: 'Improvements' },
40
+ { value: 'fixes', label: 'Fixes' },
41
+ ];
42
+ /** The selected filter's `value`. Mutable: choosing a tab updates it. */
43
+ filter = 'all';
44
+ /** Label of the "Mark all as read" button, shown while any entry is `unread`. */
45
+ markAllReadLabel = 'Mark all as read';
46
+ /** Text of the release notes link. */
47
+ releaseNotesLabel = 'See all release notes';
48
+ /** URL of the full release notes. The link is only shown when this is set. */
49
+ releaseNotesUrl;
50
+ /** Text shown when the selected filter has no entries. */
51
+ emptyLabel = 'Nothing new here yet.';
52
+ // --- announcement ------------------------------------------------------------------------
53
+ /** Tag text (`announcement`, `teaser`), e.g. "New feature". */
54
+ tag;
55
+ /** Colour of the tag. */
56
+ tagColor = 'info';
57
+ /** URL of the hero image (`announcement`). Or slot your own into `hero`. */
58
+ image;
59
+ /** The bullet points (`announcement`). Must be set as a JS property -- see CONVENTIONS.md. */
60
+ points = [];
61
+ /** Current step, 1-based (`announcement`). Used with `total`. */
62
+ step = 1;
63
+ /** Number of announcements in the sequence (`announcement`). The step label is hidden when 0. */
64
+ total = 0;
65
+ /** Template of the step label; `{step}` and `{total}` are replaced. */
66
+ stepLabel = '{step} of {total}';
67
+ /** Label of the secondary button (`announcement`). Empty hides it. */
68
+ secondaryLabel = 'Remind me later';
69
+ /** Label of the primary button (`announcement`). Empty hides it. */
70
+ primaryLabel = 'Next';
71
+ // --- teaser ------------------------------------------------------------------------------
72
+ /** The date as text (`teaser`). */
73
+ date;
74
+ /** The line under the heading (`teaser`). */
75
+ description;
76
+ /** Label of the link (`teaser`). */
77
+ actionLabel = 'Open What’s new';
78
+ // --- events ------------------------------------------------------------------------------
79
+ /** Fires when "Mark all as read" is pressed (`feed`). Update the entries' `unread` yourself. */
80
+ bsMarkAllRead;
81
+ /** Fires when an entry's action link is pressed (`feed`): `{ id }`. */
82
+ bsEntryAction;
83
+ /** Fires when the user picks a filter tab (`feed`): `{ value }`. */
84
+ bsFilterChange;
85
+ /** Fires when the close button is pressed. */
86
+ bsClose;
87
+ /** Fires when the primary button (`announcement`) is pressed. */
88
+ bsPrimary;
89
+ /** Fires when the secondary button (`announcement`) is pressed. */
90
+ bsSecondary;
91
+ /** Fires when the teaser's link is pressed (`teaser`) -- open the feed. */
92
+ bsOpen;
93
+ /** True while something is assigned to the `hero` slot, so the hero area only exists then. */
94
+ hasHeroSlot = false;
95
+ // --- pieces ------------------------------------------------------------------------------
96
+ heading_(text, cls = '') {
97
+ const level = Math.min(6, Math.max(1, Math.trunc(Number(this.headingLevel)) || 2));
98
+ return index.h(`h${level}`, { part: 'heading', id: 'heading', class: { 'bs-wn__heading': true, [cls]: !!cls } }, text);
99
+ }
100
+ renderClose(compact = false) {
101
+ if (!this.closable)
102
+ return null;
103
+ return (index.h("bs-icon-button", { part: "close", class: { 'bs-wn__close': true, 'bs-wn__close--compact': compact }, variant: "subtle", size: "md", ariaLabel: this.closeLabel, onClick: () => this.bsClose.emit() }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "1.8", "stroke-linecap": "round", "aria-hidden": "true" }, index.h("path", { d: "M6 6L18 18M18 6L6 18" }))));
104
+ }
105
+ renderTag() {
106
+ if (!this.tag)
107
+ return null;
108
+ return (index.h("bs-chip-informative", { part: "tag", size: "sm", color: this.tagColor }, this.tag));
109
+ }
110
+ renderFeed() {
111
+ const all = this.entries ?? [];
112
+ const visible = this.filter === 'all' ? all : all.filter(e => e.category === this.filter);
113
+ const anyUnread = all.some(e => e.unread);
114
+ const filters = this.filters ?? [];
115
+ return (index.h("bs-card", { part: "container", class: "bs-wn bs-wn--feed", surface: "base", role: "region", "aria-labelledby": "heading" }, index.h("div", { class: "bs-wn__feed" }, index.h("div", { class: "bs-wn__head" }, this.heading_(this.heading ?? 'What’s new'), index.h("span", { class: "bs-wn__spacer" }), anyUnread && (index.h("bs-button", { part: "mark-all-read", class: "bs-wn__text-button", variant: "subtle", size: "sm", onClick: () => this.bsMarkAllRead.emit() }, this.markAllReadLabel)), this.renderClose()), filters.length > 0 && (index.h("div", { part: "filters", class: "bs-wn__filters" }, index.h("bs-tabs", { value: this.filter, onBsChange: (ev) => this.onFilter(ev.detail.value) }, filters.map(f => (index.h("bs-tab", { key: f.value, value: f.value, selected: f.value === this.filter }, f.label)))))), visible.length === 0 ? (index.h("p", { class: "bs-wn__empty" }, this.emptyLabel)) : (index.h("div", { part: "entries", class: "bs-wn__entries" }, visible.map((e, i) => (index.h("bs-whats-new-entry", { key: e.id, part: "entry", tag: e.tag, tagColor: e.tagColor, date: e.date, unread: !!e.unread, heading: e.heading, headingLevel: Math.min(6, (Number(this.headingLevel) || 2) + 1), description: e.description, actionLabel: e.actionLabel, divider: i < visible.length - 1 || !!this.releaseNotesUrl, onBsAction: () => this.bsEntryAction.emit({ id: e.id }) }, e.image && index.h("img", { slot: "image", src: e.image, alt: "" })))))), this.releaseNotesUrl && (index.h("div", { class: "bs-wn__footer" }, index.h("a", { part: "release-notes", class: "bs-wn__link", href: this.releaseNotesUrl }, index.h("span", { class: "bs-wn__link-text" }, this.releaseNotesLabel), index.h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, index.h("path", { d: "M7 17L17 7" }), index.h("path", { d: "M8 7H17V16" }))))))));
116
+ }
117
+ onFilter(value) {
118
+ if (value === this.filter)
119
+ return;
120
+ this.filter = value;
121
+ this.bsFilterChange.emit({ value });
122
+ }
123
+ renderAnnouncement() {
124
+ const step = this.total > 0 ? this.stepLabel.replace('{step}', String(this.step)).replace('{total}', String(this.total)) : '';
125
+ const points = this.points ?? [];
126
+ return (index.h("bs-card", { part: "container", class: "bs-wn bs-wn--announcement", surface: "base", role: "region", "aria-labelledby": "heading" }, index.h("div", { class: "bs-wn__announcement" }, this.renderClose(), index.h("div", { part: "hero", class: { 'bs-wn__hero': true, 'bs-wn__hero--visible': !!this.image || this.hasHeroSlot } }, this.image && index.h("img", { src: this.image, alt: "" }), index.h("slot", { name: "hero", onSlotchange: (ev) => (this.hasHeroSlot = ev.target.assignedNodes().length > 0) })), index.h("div", { class: "bs-wn__body" }, this.renderTag(), this.heading_(this.heading ?? '', 'bs-wn__heading--lg'), points.length > 0 && (index.h("ul", { part: "points", class: "bs-wn__points" }, points.map(p => (index.h("li", null, index.h("svg", { class: "bs-wn__check", viewBox: "0 0 18 18", fill: "none", stroke: "currentColor", "stroke-width": "1.8", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, index.h("path", { d: "M3.5 9.5L7 13L14.5 5" })), index.h("span", null, p)))))), index.h("div", { class: "bs-wn__announcement-footer" }, index.h("span", { part: "step", class: "bs-wn__step" }, step), index.h("div", { class: "bs-wn__actions" }, this.secondaryLabel && (index.h("bs-button", { part: "secondary", class: "bs-wn__text-button bs-wn__text-button--md", variant: "subtle", onClick: () => this.bsSecondary.emit() }, this.secondaryLabel)), this.primaryLabel && (index.h("bs-button", { part: "primary", variant: "primary", onClick: () => this.bsPrimary.emit() }, this.primaryLabel))))))));
127
+ }
128
+ renderTeaser() {
129
+ return (index.h("bs-card", { part: "container", class: "bs-wn bs-wn--teaser", surface: "base", role: "region", "aria-labelledby": "heading" }, index.h("div", { class: "bs-wn__teaser" }, index.h("div", { class: "bs-wn__teaser-row" }, this.renderTag(), this.date && (index.h("span", { part: "date", class: "bs-wn__date" }, this.date)), index.h("span", { class: "bs-wn__spacer" }), this.renderClose(true)), this.heading_(this.heading ?? '', 'bs-wn__heading--sm'), this.description && (index.h("p", { part: "description", class: "bs-wn__description" }, this.description)), this.actionLabel && (index.h("bs-button", { part: "action", class: "bs-wn__text-button bs-wn__link-button", variant: "subtle", size: "sm", onClick: () => this.bsOpen.emit() }, this.actionLabel, index.h("svg", { slot: "end-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, index.h("path", { d: "M5 12H19" }), index.h("path", { d: "M13 6L19 12L13 18" })))))));
130
+ }
131
+ render() {
132
+ switch (this.type) {
133
+ case 'announcement':
134
+ return this.renderAnnouncement();
135
+ case 'teaser':
136
+ return this.renderTeaser();
137
+ default:
138
+ return this.renderFeed();
139
+ }
140
+ }
141
+ };
142
+ BsWhatsNew.style = bsWhatsNewCss();
143
+
144
+ exports.bs_whats_new = BsWhatsNew;