@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
@@ -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;
@@ -0,0 +1,209 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-tFJjflK5.js');
4
+
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
+
7
+ const BsTimepicker = class {
8
+ constructor(hostRef) {
9
+ index.registerInstance(this, hostRef);
10
+ this.bsChange = index.createEvent(this, "bsChange");
11
+ this.bsCancel = index.createEvent(this, "bsCancel");
12
+ if (hostRef.$hostElement$["s-ei"]) {
13
+ this.internals = hostRef.$hostElement$["s-ei"];
14
+ }
15
+ else {
16
+ this.internals = hostRef.$hostElement$.attachInternals();
17
+ hostRef.$hostElement$["s-ei"] = this.internals;
18
+ }
19
+ }
20
+ get el() { return index.getElement(this); }
21
+ internals;
22
+ initialValue = '';
23
+ typed = '';
24
+ /** The `name` the confirmed value is submitted under in a surrounding `<form>`. */
25
+ name;
26
+ /** The confirmed time, 24-hour `HH:mm`. Empty means no time chosen yet (the picker opens on
27
+ * 00:00). Mutable so Confirm updates it directly; `bsChange` still fires. */
28
+ value = '';
29
+ /** Display format: `12h` (with an AM/PM dropdown) or `24h`. The user can switch it with the
30
+ * 24h switch. Does not change `value`, which is always 24-hour. */
31
+ format = '12h';
32
+ /** Step, in minutes, of the minute spinner's carets and arrow keys. Typing is not constrained. */
33
+ minuteStep = 1;
34
+ /** Heading text. */
35
+ heading = 'Select Time';
36
+ /** Label of the 24h switch. */
37
+ formatLabel = '24h';
38
+ /** Label of the Confirm button. */
39
+ confirmLabel = 'Confirm';
40
+ /** Label of the Cancel button. */
41
+ cancelLabel = 'Cancel';
42
+ /** Accessible name of the hour spinner. */
43
+ hourLabel = 'Hour';
44
+ /** Accessible name of the minute spinner. */
45
+ minuteLabel = 'Minute';
46
+ /** Accessible name of the AM/PM dropdown. */
47
+ periodLabel = 'AM/PM';
48
+ /** Fires when the user presses Confirm: `{ value }` as 24-hour `HH:mm`. Not fired when `value` is
49
+ * set programmatically. */
50
+ bsChange;
51
+ /** Fires when the user presses Cancel. The draft is reset to `value`. */
52
+ bsCancel;
53
+ /** Draft hour, 0-23. */
54
+ hour = 0;
55
+ /** Draft minute, 0-59. */
56
+ minute = 0;
57
+ componentWillLoad() {
58
+ this.initialValue = this.value;
59
+ this.resetDraft();
60
+ this.syncFormValue();
61
+ }
62
+ onValueChange() {
63
+ this.resetDraft();
64
+ this.syncFormValue();
65
+ }
66
+ onNameChange() {
67
+ this.syncFormValue();
68
+ }
69
+ /** Called by the browser when the surrounding `<form>` is reset. */
70
+ formResetCallback() {
71
+ this.value = this.initialValue;
72
+ }
73
+ resetDraft() {
74
+ const t = parseTime(this.value);
75
+ this.hour = t ? t.hour : 0;
76
+ this.minute = t ? t.minute : 0;
77
+ }
78
+ syncFormValue() {
79
+ if (!this.internals?.setFormValue)
80
+ return;
81
+ this.internals.setFormValue(this.value ?? '');
82
+ }
83
+ get step() {
84
+ const n = Math.trunc(Number(this.minuteStep));
85
+ return Number.isFinite(n) && n >= 1 && n <= 59 ? n : 1;
86
+ }
87
+ get is12h() {
88
+ return this.format !== '24h';
89
+ }
90
+ get isPm() {
91
+ return this.hour >= 12;
92
+ }
93
+ // --- stepping ----------------------------------------------------------------------------
94
+ /** The number shown in a column. In 12h mode the hour reads 1-12. */
95
+ shown(col) {
96
+ if (col === 'minute')
97
+ return this.minute;
98
+ return this.is12h ? this.hour % 12 || 12 : this.hour;
99
+ }
100
+ bounds(col) {
101
+ if (col === 'minute')
102
+ return [0, 59];
103
+ return this.is12h ? [1, 12] : [0, 23];
104
+ }
105
+ setShown(col, n) {
106
+ if (col === 'minute') {
107
+ this.minute = n;
108
+ }
109
+ else {
110
+ // 12h keeps the current AM/PM; 12 AM is hour 0 and 12 PM is hour 12.
111
+ this.hour = this.is12h ? (n % 12) + (this.isPm ? 12 : 0) : n;
112
+ }
113
+ }
114
+ stepBy(col, dir) {
115
+ const [min, max] = this.bounds(col);
116
+ const size = max - min + 1;
117
+ const by = col === 'minute' ? this.step : 1;
118
+ let next = this.shown(col) + dir * by;
119
+ if (col === 'minute') {
120
+ // Snap onto the step grid when leaving an off-grid value (e.g. typed 07 with step 15).
121
+ const cur = this.shown(col);
122
+ next = dir === 1 ? Math.floor(cur / by) * by + by : Math.ceil(cur / by) * by - by;
123
+ }
124
+ this.setShown(col, ((((next - min) % size) + size) % size) + min);
125
+ }
126
+ onKeyDown = (col) => (ev) => {
127
+ const [min, max] = this.bounds(col);
128
+ if (ev.key === 'ArrowUp')
129
+ this.stepBy(col, 1);
130
+ else if (ev.key === 'ArrowDown')
131
+ this.stepBy(col, -1);
132
+ else if (ev.key === 'Home')
133
+ this.setShown(col, min);
134
+ else if (ev.key === 'End')
135
+ this.setShown(col, max);
136
+ else if (/^\d$/.test(ev.key)) {
137
+ // Two digits make a value; a lone digit that can't start a valid two-digit value commits
138
+ // immediately.
139
+ const candidate = Number((this.typed + ev.key).slice(-2));
140
+ this.typed = (this.typed + ev.key).slice(-2);
141
+ if (candidate >= min && candidate <= max)
142
+ this.setShown(col, candidate);
143
+ else {
144
+ this.typed = ev.key;
145
+ const single = Number(ev.key);
146
+ if (single >= min && single <= max)
147
+ this.setShown(col, single);
148
+ }
149
+ if (this.typed.length === 2)
150
+ this.typed = '';
151
+ ev.preventDefault();
152
+ return;
153
+ }
154
+ else
155
+ return;
156
+ this.typed = '';
157
+ ev.preventDefault();
158
+ };
159
+ // --- actions -----------------------------------------------------------------------------
160
+ confirm = () => {
161
+ const value = `${pad(this.hour)}:${pad(this.minute)}`;
162
+ this.value = value;
163
+ this.bsChange.emit({ value });
164
+ };
165
+ cancel = () => {
166
+ this.resetDraft();
167
+ this.bsCancel.emit();
168
+ };
169
+ // --- rendering ---------------------------------------------------------------------------
170
+ renderColumn(col, label) {
171
+ const [min, max] = this.bounds(col);
172
+ const n = this.shown(col);
173
+ const stepLabel = (dir) => `${dir} ${label.toLowerCase()}`;
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
+ }
176
+ render() {
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
+ { label: 'AM', value: 'AM' },
179
+ { label: 'PM', value: 'PM' },
180
+ ], onBsChange: (ev) => {
181
+ const pm = ev.detail === 'PM';
182
+ if (pm !== this.isPm)
183
+ this.hour = (this.hour + 12) % 24;
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
+ }
186
+ static get formAssociated() { return true; }
187
+ static get watchers() { return {
188
+ "value": [{
189
+ "onValueChange": 0
190
+ }],
191
+ "name": [{
192
+ "onNameChange": 0
193
+ }]
194
+ }; }
195
+ };
196
+ function pad(n) {
197
+ return String(n).padStart(2, '0');
198
+ }
199
+ function parseTime(s) {
200
+ const m = /^(\d{1,2}):(\d{2})$/.exec((s ?? '').trim());
201
+ if (!m)
202
+ return undefined;
203
+ const hour = Number(m[1]);
204
+ const minute = Number(m[2]);
205
+ return hour <= 23 && minute <= 59 ? { hour, minute } : undefined;
206
+ }
207
+ BsTimepicker.style = bsTimepickerCss();
208
+
209
+ exports.bs_timepicker = BsTimepicker;
@@ -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: '238f177a44aa2bd735432fe8f3fd1d761065d023', part: "container", class: `bs-toast bs-toast--${this.state}`, role: "status", "aria-live": this.state === 'error' ? 'assertive' : 'polite' }, index.h("div", { key: '717e222c7b271db0ff5aa57db8ce0efa15bfaf50', class: "bs-toast__content" }, index.h("span", { key: '316106f6efbcc8abe6bb155e77ec21343b93287c', part: "icon", class: "bs-toast__icon", "aria-hidden": "true" }, index.h(StateIcon, { key: '5973febbe8d7be889fd14cac847c417a22acb111', state: this.state })), index.h("span", { key: '1d16db1ba5c010ac5af237b4b399e0dda6f6df59', part: "message", class: "bs-toast__message" }, index.h("slot", { key: '40e97271fec790a850491be58ae87e54b4765a6a' }))), index.h("div", { key: '16744b9b6ad79d13aec16afa6593ab0de1ec5ee2', class: "bs-toast__actions" }, index.h("button", { key: '87adace9953b2dca831543132f3fe5590bc4c52f', part: "close", type: "button", class: "bs-toast__close", "aria-label": "Dismiss", onClick: this.onDismiss }, index.h(CloseIcon, { key: 'dcf5ffe7a5553ec2792d801c7f62ed367d1454ef' })))));
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: 'b7c2ee57db3a4e36cdd106d78f0f8d54c45a04c6', class: "bs-tooltip" }, index.h("span", { key: '22b738a760e9967233052ce4540c77da4ac9563e', part: "arrow", class: "bs-tooltip__arrow" }), index.h("div", { key: '69a8b07711478e699be4c8151d9f7dfd2e4e0bf4', part: "bubble", class: "bs-tooltip__bubble" }, index.h("slot", { key: 'b32c75a06582b8e8f99b973889450e9100b75323' }))));
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();