@brandsync/wc 1.12.0 → 1.13.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 (500) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/CONVENTIONS.md +109 -0
  3. package/REFERENCE.md +1357 -0
  4. package/custom-elements.json +2628 -338
  5. package/dist/brandsync-wc/brandsync-wc.css +1 -1783
  6. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  7. package/dist/brandsync-wc/{p-83c90489.entry.js → p-00be9a64.entry.js} +1 -1
  8. package/dist/brandsync-wc/{p-b9ccd9d1.entry.js → p-020cb767.entry.js} +1 -1
  9. package/dist/brandsync-wc/p-046a53de.entry.js +1 -0
  10. package/dist/brandsync-wc/{p-282ddbee.entry.js → p-07966676.entry.js} +1 -1
  11. package/dist/brandsync-wc/p-0cb6fc39.entry.js +1 -0
  12. package/dist/brandsync-wc/{p-2497d128.entry.js → p-0e940ee1.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-e5daa6ca.entry.js → p-10290c41.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-e2556b4e.entry.js → p-144b6ac8.entry.js} +1 -1
  15. package/dist/brandsync-wc/p-1b5cc9b8.entry.js +1 -0
  16. package/dist/brandsync-wc/p-23b56775.entry.js +1 -0
  17. package/dist/brandsync-wc/{p-a9169157.entry.js → p-23cc532f.entry.js} +1 -1
  18. package/dist/brandsync-wc/{p-81605b82.entry.js → p-361aef36.entry.js} +1 -1
  19. package/dist/brandsync-wc/{p-89fabf27.entry.js → p-3789c7a5.entry.js} +1 -1
  20. package/dist/brandsync-wc/p-3f6682f8.entry.js +1 -0
  21. package/dist/brandsync-wc/{p-f5180578.entry.js → p-4054a944.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-fc069773.entry.js → p-45cb3e6d.entry.js} +1 -1
  23. package/dist/brandsync-wc/{p-de110ad0.entry.js → p-47b7fe76.entry.js} +1 -1
  24. package/dist/brandsync-wc/{p-2f4e08e1.entry.js → p-47cd19aa.entry.js} +1 -1
  25. package/dist/brandsync-wc/{p-3a1af63a.entry.js → p-4bbc4809.entry.js} +1 -1
  26. package/dist/brandsync-wc/{p-247e36ad.entry.js → p-4ea435a6.entry.js} +1 -1
  27. package/dist/brandsync-wc/{p-56c37e0a.entry.js → p-4ea9b6a1.entry.js} +1 -1
  28. package/dist/brandsync-wc/{p-1978e63c.entry.js → p-53362609.entry.js} +1 -1
  29. package/dist/brandsync-wc/p-658532b7.entry.js +1 -0
  30. package/dist/brandsync-wc/p-68f0be29.entry.js +1 -0
  31. package/dist/brandsync-wc/{p-09bc1923.entry.js → p-694fe468.entry.js} +1 -1
  32. package/dist/brandsync-wc/{p-78f4fcf0.entry.js → p-6ca1e51b.entry.js} +1 -1
  33. package/dist/brandsync-wc/{p-52cb2358.entry.js → p-6e923ebc.entry.js} +1 -1
  34. package/dist/brandsync-wc/p-7e24dbd7.entry.js +1 -0
  35. package/dist/brandsync-wc/{p-00a0d489.entry.js → p-8048d033.entry.js} +1 -1
  36. package/dist/brandsync-wc/{p-2368a92e.entry.js → p-8184d7de.entry.js} +1 -1
  37. package/dist/brandsync-wc/p-8390a155.entry.js +1 -0
  38. package/dist/brandsync-wc/{p-0b2d3b7e.entry.js → p-86028548.entry.js} +1 -1
  39. package/dist/brandsync-wc/{p-fcee0dc4.entry.js → p-89fa7567.entry.js} +1 -1
  40. package/dist/brandsync-wc/{p-7796b93f.entry.js → p-8c9938a5.entry.js} +1 -1
  41. package/dist/brandsync-wc/{p-68fcd4a4.entry.js → p-9125632c.entry.js} +1 -1
  42. package/dist/brandsync-wc/{p-416322bd.entry.js → p-94d435a2.entry.js} +1 -1
  43. package/dist/brandsync-wc/{p-69c0a85d.entry.js → p-95f034fc.entry.js} +1 -1
  44. package/dist/brandsync-wc/p-9b58c0c5.entry.js +1 -0
  45. package/dist/brandsync-wc/{p-39a26c64.entry.js → p-9cf8274a.entry.js} +1 -1
  46. package/dist/brandsync-wc/p-9d12b1fb.entry.js +1 -0
  47. package/dist/brandsync-wc/{p-5ba90a13.entry.js → p-9d660c03.entry.js} +1 -1
  48. package/dist/brandsync-wc/p-D3SkQJpw.js +3 -0
  49. package/dist/brandsync-wc/{p-7f954939.entry.js → p-a28ef52e.entry.js} +1 -1
  50. package/dist/brandsync-wc/{p-09435f41.entry.js → p-a5659499.entry.js} +1 -1
  51. package/dist/brandsync-wc/p-ab07c9b5.entry.js +1 -0
  52. package/dist/brandsync-wc/p-b0b2e525.entry.js +1 -0
  53. package/dist/brandsync-wc/p-b6ac1b50.entry.js +1 -0
  54. package/dist/brandsync-wc/p-bee30626.entry.js +1 -0
  55. package/dist/brandsync-wc/p-bf8bd386.entry.js +1 -0
  56. package/dist/brandsync-wc/{p-1aab6d07.entry.js → p-c05ee501.entry.js} +1 -1
  57. package/dist/brandsync-wc/p-c3da3080.entry.js +1 -0
  58. package/dist/brandsync-wc/p-c679b631.entry.js +1 -0
  59. package/dist/brandsync-wc/p-cceb8484.entry.js +1 -0
  60. package/dist/brandsync-wc/p-cd53bba9.entry.js +1 -0
  61. package/dist/brandsync-wc/p-ce16f038.entry.js +1 -0
  62. package/dist/brandsync-wc/{p-491b51e6.entry.js → p-d5a6098d.entry.js} +1 -1
  63. package/dist/brandsync-wc/{p-f15d9524.entry.js → p-d64cae57.entry.js} +1 -1
  64. package/dist/brandsync-wc/p-dfad8c0a.entry.js +1 -0
  65. package/dist/brandsync-wc/p-e0504a4b.entry.js +1 -0
  66. package/dist/brandsync-wc/{p-0ee4126c.entry.js → p-e1b7bea7.entry.js} +1 -1
  67. package/dist/brandsync-wc/{p-0b7c77c1.entry.js → p-e65d286c.entry.js} +1 -1
  68. package/dist/brandsync-wc/p-ed5c2d97.entry.js +1 -0
  69. package/dist/brandsync-wc/p-f134a502.entry.js +1 -0
  70. package/dist/brandsync-wc/p-f271e1d2.entry.js +1 -0
  71. package/dist/brandsync-wc/{p-3f09296a.entry.js → p-f3eca1ce.entry.js} +1 -1
  72. package/dist/brandsync-wc/{p-617bd13a.entry.js → p-f8d47004.entry.js} +1 -1
  73. package/dist/brandsync-wc/p-fa34fe20.entry.js +1 -0
  74. package/dist/brandsync-wc/{p-2177042f.entry.js → p-fa6b9750.entry.js} +1 -1
  75. package/dist/brandsync-wc/p-fb4d0093.entry.js +1 -0
  76. package/dist/brandsync-wc/{p-78a69a59.entry.js → p-fc76031e.entry.js} +1 -1
  77. package/dist/brandsync-wc/{p-be3dd446.entry.js → p-ffc07eb5.entry.js} +1 -1
  78. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  79. package/dist/cjs/bs-accordion-group.cjs.entry.js +33 -0
  80. package/dist/cjs/bs-accordion.cjs.entry.js +1 -1
  81. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +2 -2
  82. package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
  83. package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
  84. package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
  85. package/dist/cjs/bs-attachment.cjs.entry.js +9 -5
  86. package/dist/cjs/bs-avatar.cjs.entry.js +1 -1
  87. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  88. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +1 -1
  89. package/dist/cjs/bs-breadcrumb.cjs.entry.js +1 -1
  90. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +2 -2
  91. package/dist/cjs/bs-button-skeleton.cjs.entry.js +4 -2
  92. package/dist/cjs/bs-button.cjs.entry.js +1 -1
  93. package/dist/cjs/bs-card.cjs.entry.js +1 -1
  94. package/dist/cjs/bs-carousel.cjs.entry.js +1 -1
  95. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +18 -2
  96. package/dist/cjs/bs-chatbot-header.cjs.entry.js +20 -2
  97. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +25 -3
  98. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +4 -2
  99. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +3 -3
  100. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +4 -2
  101. package/dist/cjs/bs-checkbox.cjs.entry.js +1 -1
  102. package/dist/cjs/bs-chip-filter.cjs.entry.js +1 -1
  103. package/dist/cjs/bs-chip-informative.cjs.entry.js +1 -1
  104. package/dist/cjs/bs-chip-input.cjs.entry.js +4 -2
  105. package/dist/cjs/bs-citation-preview.cjs.entry.js +29 -0
  106. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +11 -3
  107. package/dist/cjs/bs-composer.cjs.entry.js +36 -7
  108. package/dist/cjs/bs-cookie-consent.cjs.entry.js +1 -1
  109. package/dist/cjs/bs-data-table.cjs.entry.js +5 -3
  110. package/dist/cjs/bs-datepicker.cjs.entry.js +1 -1
  111. package/dist/cjs/bs-dialog.cjs.entry.js +4 -2
  112. package/dist/cjs/bs-error-page.cjs.entry.js +1 -1
  113. package/dist/cjs/bs-file-upload-item.cjs.entry.js +1 -1
  114. package/dist/cjs/bs-file-upload.cjs.entry.js +1 -1
  115. package/dist/cjs/bs-icon-button.cjs.entry.js +1 -1
  116. package/dist/cjs/bs-icon-tile.cjs.entry.js +1 -1
  117. package/dist/cjs/bs-inline-tab.cjs.entry.js +2 -2
  118. package/dist/cjs/bs-input_3.cjs.entry.js +16 -8
  119. package/dist/cjs/bs-logo.cjs.entry.js +1 -1
  120. package/dist/cjs/bs-message-list.cjs.entry.js +71 -0
  121. package/dist/cjs/bs-message.cjs.entry.js +25 -0
  122. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +2 -2
  123. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +9 -3
  124. package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
  125. package/dist/cjs/bs-onboarding-checklist.cjs.entry.js +1 -1
  126. package/dist/cjs/bs-pagination.cjs.entry.js +6 -2
  127. package/dist/cjs/bs-popover.cjs.entry.js +153 -0
  128. package/dist/cjs/bs-product-tour.cjs.entry.js +1 -1
  129. package/dist/cjs/bs-progress-linear.cjs.entry.js +3 -3
  130. package/dist/cjs/bs-progress.cjs.entry.js +3 -3
  131. package/dist/cjs/bs-qr-code.cjs.entry.js +2 -2
  132. package/dist/cjs/bs-radio.cjs.entry.js +2 -2
  133. package/dist/cjs/bs-session-timeout.cjs.entry.js +2 -2
  134. package/dist/cjs/bs-side-panel.cjs.entry.js +164 -0
  135. package/dist/cjs/bs-skeleton.cjs.entry.js +51 -0
  136. package/dist/cjs/bs-slider.cjs.entry.js +7 -3
  137. package/dist/cjs/bs-snackbar.cjs.entry.js +2 -2
  138. package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
  139. package/dist/cjs/bs-spinner.cjs.entry.js +24 -0
  140. package/dist/cjs/bs-stepper-step.cjs.entry.js +2 -2
  141. package/dist/cjs/bs-stepper.cjs.entry.js +2 -2
  142. package/dist/cjs/bs-switch.cjs.entry.js +2 -2
  143. package/dist/cjs/bs-tab_3.cjs.entry.js +4 -4
  144. package/dist/cjs/bs-timepicker.cjs.entry.js +8 -4
  145. package/dist/cjs/bs-toast.cjs.entry.js +4 -2
  146. package/dist/cjs/bs-tooltip-trigger.cjs.entry.js +46 -0
  147. package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
  148. package/dist/cjs/bs-whats-new.cjs.entry.js +1 -1
  149. package/dist/cjs/index-BYfMRtlW.js +1863 -0
  150. package/dist/cjs/loader.cjs.js +2 -2
  151. package/dist/collection/collection-manifest.json +9 -0
  152. package/dist/collection/components/bs-accordion-group/bs-accordion-group.cmp.test.js +39 -0
  153. package/dist/collection/components/bs-accordion-group/bs-accordion-group.css +10 -0
  154. package/dist/collection/components/bs-accordion-group/bs-accordion-group.js +86 -0
  155. package/dist/collection/components/bs-accordion-group/bs-accordion-group.stories.js +18 -0
  156. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  157. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  158. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  159. package/dist/collection/components/bs-attachment/bs-attachment.js +48 -4
  160. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  161. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -1
  162. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +23 -1
  163. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.cmp.test.js +10 -0
  164. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +178 -2
  165. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.cmp.test.js +6 -0
  166. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +200 -1
  167. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.cmp.test.js +8 -0
  168. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.css +4 -0
  169. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +223 -1
  170. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +24 -2
  171. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.css +1 -4
  172. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +3 -6
  173. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +23 -1
  174. package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +23 -1
  175. package/dist/collection/components/bs-citation-preview/bs-citation-preview.cmp.test.js +34 -0
  176. package/dist/collection/components/bs-citation-preview/bs-citation-preview.css +36 -0
  177. package/dist/collection/components/bs-citation-preview/bs-citation-preview.js +154 -0
  178. package/dist/collection/components/bs-citation-preview/bs-citation-preview.stories.js +22 -0
  179. package/dist/collection/components/bs-composer/bs-composer.cmp.test.js +29 -2
  180. package/dist/collection/components/bs-composer/bs-composer.css +16 -0
  181. package/dist/collection/components/bs-composer/bs-composer.js +234 -6
  182. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.cmp.test.js +5 -0
  183. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.css +16 -0
  184. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +49 -1
  185. package/dist/collection/components/bs-data-table/bs-data-table.js +24 -2
  186. package/dist/collection/components/bs-dialog/bs-dialog.js +23 -1
  187. package/dist/collection/components/bs-input/bs-input.js +93 -5
  188. package/dist/collection/components/bs-input/bs-input.stories.js +7 -23
  189. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  190. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  191. package/dist/collection/components/bs-message/bs-message.cmp.test.js +36 -0
  192. package/dist/collection/components/bs-message/bs-message.css +77 -0
  193. package/dist/collection/components/bs-message/bs-message.js +156 -0
  194. package/dist/collection/components/bs-message/bs-message.stories.js +33 -0
  195. package/dist/collection/components/bs-message-list/bs-message-list.cmp.test.js +58 -0
  196. package/dist/collection/components/bs-message-list/bs-message-list.css +40 -0
  197. package/dist/collection/components/bs-message-list/bs-message-list.js +161 -0
  198. package/dist/collection/components/bs-message-list/bs-message-list.stories.js +17 -0
  199. package/dist/collection/components/bs-pagination/bs-pagination.cmp.test.js +5 -0
  200. package/dist/collection/components/bs-pagination/bs-pagination.js +45 -1
  201. package/dist/collection/components/bs-popover/bs-popover.cmp.test.js +107 -0
  202. package/dist/collection/components/bs-popover/bs-popover.css +61 -0
  203. package/dist/collection/components/bs-popover/bs-popover.js +247 -0
  204. package/dist/collection/components/bs-popover/bs-popover.stories.js +26 -0
  205. package/dist/collection/components/bs-progress/bs-progress.js +2 -2
  206. package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +2 -2
  207. package/dist/collection/components/bs-qr-code/bs-qr-code.js +1 -1
  208. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  209. package/dist/collection/components/bs-session-timeout/bs-session-timeout.js +1 -1
  210. package/dist/collection/components/bs-side-panel/bs-side-panel.cmp.test.js +117 -0
  211. package/dist/collection/components/bs-side-panel/bs-side-panel.css +77 -0
  212. package/dist/collection/components/bs-side-panel/bs-side-panel.js +325 -0
  213. package/dist/collection/components/bs-side-panel/bs-side-panel.stories.js +24 -0
  214. package/dist/collection/components/bs-skeleton/bs-skeleton.cmp.test.js +49 -0
  215. package/dist/collection/components/bs-skeleton/bs-skeleton.css +62 -0
  216. package/dist/collection/components/bs-skeleton/bs-skeleton.js +204 -0
  217. package/dist/collection/components/bs-skeleton/bs-skeleton.stories.js +43 -0
  218. package/dist/collection/components/bs-slider/bs-slider.js +46 -2
  219. package/dist/collection/components/bs-snackbar/bs-snackbar.js +1 -1
  220. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  221. package/dist/collection/components/bs-spinner/bs-spinner.cmp.test.js +32 -0
  222. package/dist/collection/components/bs-spinner/bs-spinner.css +61 -0
  223. package/dist/collection/components/bs-spinner/bs-spinner.js +96 -0
  224. package/dist/collection/components/bs-spinner/bs-spinner.stories.js +30 -0
  225. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
  226. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
  227. package/dist/collection/components/bs-switch/bs-switch.js +1 -1
  228. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  229. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
  230. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +1 -1
  231. package/dist/collection/components/bs-timepicker/bs-timepicker.js +48 -4
  232. package/dist/collection/components/bs-toast/bs-toast.js +23 -1
  233. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  234. package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.cmp.test.js +73 -0
  235. package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.css +52 -0
  236. package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.js +140 -0
  237. package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.stories.js +21 -0
  238. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.js +1 -1
  239. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +68 -2
  240. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  241. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +1 -1
  242. package/dist/collection/global/brand-theming.cmp.test.js +44 -0
  243. package/dist/components/bs-accordion-group.d.ts +11 -0
  244. package/dist/components/bs-accordion-group.js +1 -0
  245. package/dist/components/bs-accordion.js +1 -1
  246. package/dist/components/bs-ai-disclaimer.js +1 -1
  247. package/dist/components/bs-ai-greeting.js +1 -1
  248. package/dist/components/bs-ai-thinking.js +1 -1
  249. package/dist/components/bs-attachment-list.js +1 -1
  250. package/dist/components/bs-attachment.js +1 -1
  251. package/dist/components/bs-avatar.js +1 -1
  252. package/dist/components/bs-badge.js +1 -1
  253. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  254. package/dist/components/bs-breadcrumb.js +1 -1
  255. package/dist/components/bs-breadcrumbs.js +1 -1
  256. package/dist/components/bs-button-skeleton.js +1 -1
  257. package/dist/components/bs-button.js +1 -1
  258. package/dist/components/bs-card.js +1 -1
  259. package/dist/components/bs-carousel.js +1 -1
  260. package/dist/components/bs-chatbot-feedback.js +1 -1
  261. package/dist/components/bs-chatbot-header.js +1 -1
  262. package/dist/components/bs-chatbot-response-action.js +1 -1
  263. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  264. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  265. package/dist/components/bs-checkbox-skeleton.js +1 -1
  266. package/dist/components/bs-checkbox.js +1 -1
  267. package/dist/components/bs-chip-filter.js +1 -1
  268. package/dist/components/bs-chip-informative.js +1 -1
  269. package/dist/components/bs-chip-input.js +1 -1
  270. package/dist/components/bs-citation-preview.d.ts +11 -0
  271. package/dist/components/bs-citation-preview.js +1 -0
  272. package/dist/components/bs-composer-status-banner.js +1 -1
  273. package/dist/components/bs-composer.js +1 -1
  274. package/dist/components/bs-cookie-consent.js +1 -1
  275. package/dist/components/bs-data-table.js +1 -1
  276. package/dist/components/bs-datepicker.js +1 -1
  277. package/dist/components/bs-dialog.js +1 -1
  278. package/dist/components/bs-error-page.js +1 -1
  279. package/dist/components/bs-file-upload-item.js +1 -1
  280. package/dist/components/bs-file-upload.js +1 -1
  281. package/dist/components/bs-icon-button.js +1 -1
  282. package/dist/components/bs-icon-tile.js +1 -1
  283. package/dist/components/bs-inline-tab.js +1 -1
  284. package/dist/components/bs-input.js +1 -1
  285. package/dist/components/bs-logo.js +1 -1
  286. package/dist/components/bs-menu-item.js +1 -1
  287. package/dist/components/bs-menu.js +1 -1
  288. package/dist/components/bs-message-list.d.ts +11 -0
  289. package/dist/components/bs-message-list.js +1 -0
  290. package/dist/components/bs-message.d.ts +11 -0
  291. package/dist/components/bs-message.js +1 -0
  292. package/dist/components/bs-navigation-drawer-item.js +1 -1
  293. package/dist/components/bs-navigation-drawer.js +1 -1
  294. package/dist/components/bs-navigation-header.js +1 -1
  295. package/dist/components/bs-onboarding-checklist.js +1 -1
  296. package/dist/components/bs-pagination.js +1 -1
  297. package/dist/components/bs-popover.d.ts +11 -0
  298. package/dist/components/bs-popover.js +1 -0
  299. package/dist/components/bs-product-tour.js +1 -1
  300. package/dist/components/bs-progress-linear.js +1 -1
  301. package/dist/components/bs-progress.js +1 -1
  302. package/dist/components/bs-qr-code.js +1 -1
  303. package/dist/components/bs-radio.js +1 -1
  304. package/dist/components/bs-session-timeout.js +1 -1
  305. package/dist/components/bs-side-panel.d.ts +11 -0
  306. package/dist/components/bs-side-panel.js +1 -0
  307. package/dist/components/bs-skeleton.d.ts +11 -0
  308. package/dist/components/bs-skeleton.js +1 -0
  309. package/dist/components/bs-slider.js +1 -1
  310. package/dist/components/bs-snackbar.js +1 -1
  311. package/dist/components/bs-source-link.js +1 -1
  312. package/dist/components/bs-spinner.d.ts +11 -0
  313. package/dist/components/bs-spinner.js +1 -0
  314. package/dist/components/bs-stepper-step.js +1 -1
  315. package/dist/components/bs-stepper.js +1 -1
  316. package/dist/components/bs-switch.js +1 -1
  317. package/dist/components/bs-tab.js +1 -1
  318. package/dist/components/bs-tabs.js +1 -1
  319. package/dist/components/bs-timepicker.js +1 -1
  320. package/dist/components/bs-toast.js +1 -1
  321. package/dist/components/bs-tooltip-trigger.d.ts +11 -0
  322. package/dist/components/bs-tooltip-trigger.js +1 -0
  323. package/dist/components/bs-tooltip.js +1 -1
  324. package/dist/components/bs-whats-new-entry.js +1 -1
  325. package/dist/components/bs-whats-new.js +1 -1
  326. package/dist/components/index.js +1 -1
  327. package/dist/components/p-B2gx7SZk.js +1 -0
  328. package/dist/components/{p-BEEoVNRu.js → p-BTPdjnXT.js} +1 -1
  329. package/dist/components/{p-Be9L4_Fe.js → p-BVhF8cZQ.js} +1 -1
  330. package/dist/components/{p-C_j_jDM6.js → p-Bfq5YVOv.js} +1 -1
  331. package/dist/components/{p-DE8K7fg0.js → p-C2NR1v3p.js} +1 -1
  332. package/dist/components/{p-YsHQLXET.js → p-C9jIMBG3.js} +1 -1
  333. package/dist/components/{p-DuLL7Ouw.js → p-CRtvJlh8.js} +1 -1
  334. package/dist/components/{p-Dr0Qk9Zc.js → p-ChcaPfNL.js} +1 -1
  335. package/dist/components/{p-CbimDNGY.js → p-CrmEXUwm.js} +1 -1
  336. package/dist/components/p-Cu-aeY9t.js +1 -0
  337. package/dist/components/{p-zTHlbyH6.js → p-DAwSBMeM.js} +1 -1
  338. package/dist/components/{p-qmS2CBqi.js → p-DYuzgzxI.js} +1 -1
  339. package/dist/components/p-DfzrJKwN.js +1 -0
  340. package/dist/components/{p-CUfs0ROR.js → p-DpVeeIko.js} +1 -1
  341. package/dist/components/p-DqXI9V2A.js +1 -0
  342. package/dist/components/p-Dqg8l1y6.js +1 -0
  343. package/dist/components/{p-CA31vqjL.js → p-DvNED6Lb.js} +1 -1
  344. package/dist/components/{p-C8yT2Ucq.js → p-QnTjSed5.js} +1 -1
  345. package/dist/components/{p-CncySD_-.js → p-Rx4bpeYN.js} +1 -1
  346. package/dist/components/{p-Be_Pmccm.js → p-owdeCW0M.js} +1 -1
  347. package/dist/components/{p-Bl_tVzeq.js → p-uHvS81XA.js} +1 -1
  348. package/dist/esm/brandsync-wc.js +3 -3
  349. package/dist/esm/bs-accordion-group.entry.js +31 -0
  350. package/dist/esm/bs-accordion.entry.js +1 -1
  351. package/dist/esm/bs-ai-disclaimer.entry.js +2 -2
  352. package/dist/esm/bs-ai-greeting.entry.js +2 -2
  353. package/dist/esm/bs-ai-thinking.entry.js +2 -2
  354. package/dist/esm/bs-attachment-list.entry.js +2 -2
  355. package/dist/esm/bs-attachment.entry.js +9 -5
  356. package/dist/esm/bs-avatar.entry.js +1 -1
  357. package/dist/esm/bs-badge.entry.js +1 -1
  358. package/dist/esm/bs-breadcrumb-overflow.entry.js +1 -1
  359. package/dist/esm/bs-breadcrumb.entry.js +1 -1
  360. package/dist/esm/bs-breadcrumbs.entry.js +2 -2
  361. package/dist/esm/bs-button-skeleton.entry.js +4 -2
  362. package/dist/esm/bs-button.entry.js +1 -1
  363. package/dist/esm/bs-card.entry.js +1 -1
  364. package/dist/esm/bs-carousel.entry.js +1 -1
  365. package/dist/esm/bs-chatbot-feedback.entry.js +18 -2
  366. package/dist/esm/bs-chatbot-header.entry.js +20 -2
  367. package/dist/esm/bs-chatbot-response-action.entry.js +25 -3
  368. package/dist/esm/bs-chatbot-sources-drawer.entry.js +4 -2
  369. package/dist/esm/bs-chatbot-suggestion-button.entry.js +3 -3
  370. package/dist/esm/bs-checkbox-skeleton.entry.js +4 -2
  371. package/dist/esm/bs-checkbox.entry.js +1 -1
  372. package/dist/esm/bs-chip-filter.entry.js +1 -1
  373. package/dist/esm/bs-chip-informative.entry.js +1 -1
  374. package/dist/esm/bs-chip-input.entry.js +4 -2
  375. package/dist/esm/bs-citation-preview.entry.js +27 -0
  376. package/dist/esm/bs-composer-status-banner.entry.js +11 -3
  377. package/dist/esm/bs-composer.entry.js +36 -7
  378. package/dist/esm/bs-cookie-consent.entry.js +1 -1
  379. package/dist/esm/bs-data-table.entry.js +5 -3
  380. package/dist/esm/bs-datepicker.entry.js +1 -1
  381. package/dist/esm/bs-dialog.entry.js +4 -2
  382. package/dist/esm/bs-error-page.entry.js +1 -1
  383. package/dist/esm/bs-file-upload-item.entry.js +1 -1
  384. package/dist/esm/bs-file-upload.entry.js +1 -1
  385. package/dist/esm/bs-icon-button.entry.js +1 -1
  386. package/dist/esm/bs-icon-tile.entry.js +1 -1
  387. package/dist/esm/bs-inline-tab.entry.js +2 -2
  388. package/dist/esm/bs-input_3.entry.js +16 -8
  389. package/dist/esm/bs-logo.entry.js +1 -1
  390. package/dist/esm/bs-message-list.entry.js +69 -0
  391. package/dist/esm/bs-message.entry.js +23 -0
  392. package/dist/esm/bs-navigation-drawer-item.entry.js +2 -2
  393. package/dist/esm/bs-navigation-drawer.entry.js +9 -3
  394. package/dist/esm/bs-navigation-header.entry.js +2 -2
  395. package/dist/esm/bs-onboarding-checklist.entry.js +1 -1
  396. package/dist/esm/bs-pagination.entry.js +6 -2
  397. package/dist/esm/bs-popover.entry.js +151 -0
  398. package/dist/esm/bs-product-tour.entry.js +1 -1
  399. package/dist/esm/bs-progress-linear.entry.js +3 -3
  400. package/dist/esm/bs-progress.entry.js +3 -3
  401. package/dist/esm/bs-qr-code.entry.js +2 -2
  402. package/dist/esm/bs-radio.entry.js +2 -2
  403. package/dist/esm/bs-session-timeout.entry.js +2 -2
  404. package/dist/esm/bs-side-panel.entry.js +162 -0
  405. package/dist/esm/bs-skeleton.entry.js +49 -0
  406. package/dist/esm/bs-slider.entry.js +7 -3
  407. package/dist/esm/bs-snackbar.entry.js +2 -2
  408. package/dist/esm/bs-source-link.entry.js +3 -3
  409. package/dist/esm/bs-spinner.entry.js +22 -0
  410. package/dist/esm/bs-stepper-step.entry.js +2 -2
  411. package/dist/esm/bs-stepper.entry.js +2 -2
  412. package/dist/esm/bs-switch.entry.js +2 -2
  413. package/dist/esm/bs-tab_3.entry.js +4 -4
  414. package/dist/esm/bs-timepicker.entry.js +8 -4
  415. package/dist/esm/bs-toast.entry.js +4 -2
  416. package/dist/esm/bs-tooltip-trigger.entry.js +44 -0
  417. package/dist/esm/bs-tooltip.entry.js +2 -2
  418. package/dist/esm/bs-whats-new.entry.js +1 -1
  419. package/dist/esm/index-D3SkQJpw.js +1853 -0
  420. package/dist/esm/loader.js +3 -3
  421. package/dist/types/components/bs-accordion-group/bs-accordion-group.cmp.test.d.ts +1 -0
  422. package/dist/types/components/bs-accordion-group/bs-accordion-group.d.ts +25 -0
  423. package/dist/types/components/bs-accordion-group/bs-accordion-group.stories.d.ts +9 -0
  424. package/dist/types/components/bs-attachment/bs-attachment.d.ts +4 -0
  425. package/dist/types/components/bs-button-skeleton/bs-button-skeleton.d.ts +2 -0
  426. package/dist/types/components/bs-chatbot-feedback/bs-chatbot-feedback.d.ts +16 -0
  427. package/dist/types/components/bs-chatbot-header/bs-chatbot-header.d.ts +19 -0
  428. package/dist/types/components/bs-chatbot-response-action/bs-chatbot-response-action.d.ts +22 -0
  429. package/dist/types/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.d.ts +2 -0
  430. package/dist/types/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.d.ts +2 -5
  431. package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.d.ts +2 -0
  432. package/dist/types/components/bs-chip/bs-chip-input/bs-chip-input.d.ts +2 -0
  433. package/dist/types/components/bs-citation-preview/bs-citation-preview.cmp.test.d.ts +1 -0
  434. package/dist/types/components/bs-citation-preview/bs-citation-preview.d.ts +40 -0
  435. package/dist/types/components/bs-citation-preview/bs-citation-preview.stories.d.ts +13 -0
  436. package/dist/types/components/bs-composer/bs-composer.d.ts +25 -1
  437. package/dist/types/components/bs-composer-status-banner/bs-composer-status-banner.d.ts +5 -0
  438. package/dist/types/components/bs-data-table/bs-data-table.d.ts +2 -0
  439. package/dist/types/components/bs-dialog/bs-dialog.d.ts +2 -0
  440. package/dist/types/components/bs-input/bs-input.d.ts +8 -0
  441. package/dist/types/components/bs-message/bs-message.cmp.test.d.ts +1 -0
  442. package/dist/types/components/bs-message/bs-message.d.ts +49 -0
  443. package/dist/types/components/bs-message/bs-message.stories.d.ts +15 -0
  444. package/dist/types/components/bs-message-list/bs-message-list.cmp.test.d.ts +1 -0
  445. package/dist/types/components/bs-message-list/bs-message-list.d.ts +44 -0
  446. package/dist/types/components/bs-message-list/bs-message-list.stories.d.ts +8 -0
  447. package/dist/types/components/bs-pagination/bs-pagination.d.ts +4 -0
  448. package/dist/types/components/bs-popover/bs-popover.cmp.test.d.ts +1 -0
  449. package/dist/types/components/bs-popover/bs-popover.d.ts +58 -0
  450. package/dist/types/components/bs-popover/bs-popover.stories.d.ts +11 -0
  451. package/dist/types/components/bs-side-panel/bs-side-panel.cmp.test.d.ts +1 -0
  452. package/dist/types/components/bs-side-panel/bs-side-panel.d.ts +67 -0
  453. package/dist/types/components/bs-side-panel/bs-side-panel.stories.d.ts +14 -0
  454. package/dist/types/components/bs-skeleton/bs-skeleton.cmp.test.d.ts +1 -0
  455. package/dist/types/components/bs-skeleton/bs-skeleton.d.ts +44 -0
  456. package/dist/types/components/bs-skeleton/bs-skeleton.stories.d.ts +17 -0
  457. package/dist/types/components/bs-slider/bs-slider.d.ts +4 -0
  458. package/dist/types/components/bs-spinner/bs-spinner.cmp.test.d.ts +1 -0
  459. package/dist/types/components/bs-spinner/bs-spinner.d.ts +32 -0
  460. package/dist/types/components/bs-spinner/bs-spinner.stories.d.ts +12 -0
  461. package/dist/types/components/bs-timepicker/bs-timepicker.d.ts +4 -0
  462. package/dist/types/components/bs-toast/bs-toast.d.ts +2 -0
  463. package/dist/types/components/bs-tooltip-trigger/bs-tooltip-trigger.cmp.test.d.ts +1 -0
  464. package/dist/types/components/bs-tooltip-trigger/bs-tooltip-trigger.d.ts +35 -0
  465. package/dist/types/components/bs-tooltip-trigger/bs-tooltip-trigger.stories.d.ts +10 -0
  466. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.d.ts +6 -0
  467. package/dist/types/components.d.ts +1778 -38
  468. package/dist/types/global/brand-theming.cmp.test.d.ts +1 -0
  469. package/package.json +21 -5
  470. package/reference.d.ts +242 -0
  471. package/reference.json +4176 -0
  472. package/reference.mjs +2 -0
  473. package/tailwind-preset.cjs +36 -0
  474. package/testing/vitest-setup.mjs +41 -0
  475. package/dist/brandsync-wc/p-09cbf05b.entry.js +0 -1
  476. package/dist/brandsync-wc/p-0f8cd2e8.entry.js +0 -1
  477. package/dist/brandsync-wc/p-1261f0b0.entry.js +0 -1
  478. package/dist/brandsync-wc/p-20030f4d.entry.js +0 -1
  479. package/dist/brandsync-wc/p-34e5feaf.entry.js +0 -1
  480. package/dist/brandsync-wc/p-452f9c1c.entry.js +0 -1
  481. package/dist/brandsync-wc/p-6a696161.entry.js +0 -1
  482. package/dist/brandsync-wc/p-6c6cdf77.entry.js +0 -1
  483. package/dist/brandsync-wc/p-6e735e37.entry.js +0 -1
  484. package/dist/brandsync-wc/p-73f214ed.entry.js +0 -1
  485. package/dist/brandsync-wc/p-823ab3b2.entry.js +0 -1
  486. package/dist/brandsync-wc/p-89099a39.entry.js +0 -1
  487. package/dist/brandsync-wc/p-DqQRXQMx.js +0 -3
  488. package/dist/brandsync-wc/p-b84366a7.entry.js +0 -1
  489. package/dist/brandsync-wc/p-b8d2ce91.entry.js +0 -1
  490. package/dist/brandsync-wc/p-b9a4042e.entry.js +0 -1
  491. package/dist/brandsync-wc/p-d754ee13.entry.js +0 -1
  492. package/dist/brandsync-wc/p-d75f3f87.entry.js +0 -1
  493. package/dist/brandsync-wc/p-d8b29a53.entry.js +0 -1
  494. package/dist/brandsync-wc/p-f7d15fbe.entry.js +0 -1
  495. package/dist/cjs/index-tFJjflK5.js +0 -1863
  496. package/dist/components/p-BUskqBR6.js +0 -1
  497. package/dist/components/p-BZ3M4lOU.js +0 -1
  498. package/dist/components/p-CVrEuVFo.js +0 -1
  499. package/dist/components/p-CeUK3n7D.js +0 -1
  500. package/dist/esm/index-DqQRXQMx.js +0 -1853
@@ -0,0 +1,204 @@
1
+ import { h } from "@stencil/core";
2
+ /**
3
+ * A general-purpose loading placeholder for content whose shape isn't covered by a dedicated
4
+ * skeleton (e.g. `bs-button-skeleton`). Renders a pulsing text line (or several), rectangle or circle.
5
+ *
6
+ * Decorative by default (`aria-hidden="true"`). Set `label` to expose it to assistive tech as a
7
+ * `role="status"` live region with that accessible name -- do this on one placeholder per loading
8
+ * region, not on every placeholder, so screen readers don't announce it repeatedly.
9
+ *
10
+ * ## When to use
11
+ * - Standing in for text, images, avatars or other blocks while their data loads.
12
+ *
13
+ * ## When not to use
14
+ * - For a `bs-button` or `bs-checkbox` placeholder -- use `bs-button-skeleton` / `bs-checkbox-skeleton`.
15
+ * - For an in-progress action on already-rendered UI -- use `bs-spinner` or `bs-progress`.
16
+ *
17
+ * @part container - The outer wrapper.
18
+ * @part line - Each pulsing placeholder element (one per line for `variant="text"`).
19
+ * @prop --bs-skeleton-bg - Placeholder color. Aliased to `--bs-color-neutral-container`.
20
+ * @prop --bs-skeleton-radius - Corner radius for `text`/`rect`. Aliased to `--bs-border-radius-100`.
21
+ * @prop --bs-skeleton-width - Width when the `width` prop is not set. Defaults to `100%`.
22
+ * @prop --bs-skeleton-text-height - Height of each text line when `height` is not set. Defaults to `1em`.
23
+ * @prop --bs-skeleton-rect-height - Height of `rect`/`circle` when `height` is not set. Defaults to `96px`.
24
+ * @prop --bs-skeleton-gap - Gap between text lines. Aliased to `--bs-spacing-100`.
25
+ * @prop --bs-skeleton-duration - Pulse duration. Defaults to `1.5s`.
26
+ */
27
+ export class BsSkeleton {
28
+ /** Shape of the placeholder. */
29
+ variant = 'text';
30
+ /** Any CSS length (e.g. `200px`, `50%`). Falls back to `--bs-skeleton-width`. For `circle`, if
31
+ * only one of `width`/`height` is set the other matches it. */
32
+ width;
33
+ /** Any CSS length. Falls back to the variant's default height custom property. */
34
+ height;
35
+ /** Number of text lines (`variant="text"` only). The last line of a multi-line block is shorter.
36
+ * Values below 1 are treated as 1. */
37
+ lines = 1;
38
+ /** Whether the placeholder pulses. Disabled automatically under `prefers-reduced-motion`. */
39
+ animated = true;
40
+ /** When set, the placeholder gets `role="status"` and this as its `aria-label`; otherwise it is
41
+ * `aria-hidden="true"`. */
42
+ label;
43
+ render() {
44
+ const isText = this.variant === 'text';
45
+ const count = isText ? Math.max(1, Math.floor(Number(this.lines)) || 1) : 1;
46
+ let width = this.width;
47
+ let height = this.height;
48
+ if (this.variant === 'circle') {
49
+ width = width ?? height;
50
+ height = height ?? width;
51
+ }
52
+ const style = {};
53
+ if (width)
54
+ style.width = width;
55
+ if (height)
56
+ style.height = height;
57
+ const lines = [];
58
+ for (let i = 0; i < count; i++) {
59
+ const isShortLast = isText && count > 1 && i === count - 1 && !this.width;
60
+ lines.push(h("span", { part: "line", class: { 'bs-skeleton__line': true, [`bs-skeleton__line--${this.variant}`]: true, 'bs-skeleton__line--short': isShortLast }, style: style }));
61
+ }
62
+ const hasLabel = !!this.label;
63
+ return (h("span", { key: 'dc80e4fbb6d9da6387f5bb674595469e7566ce2c', part: "container", class: { 'bs-skeleton': true, 'bs-skeleton--animated': this.animated, [`bs-skeleton--${this.variant}`]: true }, role: hasLabel ? 'status' : undefined, "aria-label": hasLabel ? this.label : undefined, "aria-hidden": hasLabel ? undefined : 'true' }, lines));
64
+ }
65
+ static get is() { return "bs-skeleton"; }
66
+ static get encapsulation() { return "shadow"; }
67
+ static get originalStyleUrls() {
68
+ return {
69
+ "$": ["bs-skeleton.css"]
70
+ };
71
+ }
72
+ static get styleUrls() {
73
+ return {
74
+ "$": ["bs-skeleton.css"]
75
+ };
76
+ }
77
+ static get properties() {
78
+ return {
79
+ "variant": {
80
+ "type": "string",
81
+ "mutable": false,
82
+ "complexType": {
83
+ "original": "BsSkeletonVariant",
84
+ "resolved": "\"circle\" | \"rect\" | \"text\"",
85
+ "references": {
86
+ "BsSkeletonVariant": {
87
+ "location": "local",
88
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-skeleton/bs-skeleton.tsx",
89
+ "id": "src/components/bs-skeleton/bs-skeleton.tsx::BsSkeletonVariant"
90
+ }
91
+ }
92
+ },
93
+ "required": false,
94
+ "optional": false,
95
+ "docs": {
96
+ "tags": [],
97
+ "text": "Shape of the placeholder."
98
+ },
99
+ "getter": false,
100
+ "setter": false,
101
+ "reflect": false,
102
+ "attribute": "variant",
103
+ "defaultValue": "'text'"
104
+ },
105
+ "width": {
106
+ "type": "string",
107
+ "mutable": false,
108
+ "complexType": {
109
+ "original": "string",
110
+ "resolved": "string",
111
+ "references": {}
112
+ },
113
+ "required": false,
114
+ "optional": true,
115
+ "docs": {
116
+ "tags": [],
117
+ "text": "Any CSS length (e.g. `200px`, `50%`). Falls back to `--bs-skeleton-width`. For `circle`, if\nonly one of `width`/`height` is set the other matches it."
118
+ },
119
+ "getter": false,
120
+ "setter": false,
121
+ "reflect": false,
122
+ "attribute": "width"
123
+ },
124
+ "height": {
125
+ "type": "string",
126
+ "mutable": false,
127
+ "complexType": {
128
+ "original": "string",
129
+ "resolved": "string",
130
+ "references": {}
131
+ },
132
+ "required": false,
133
+ "optional": true,
134
+ "docs": {
135
+ "tags": [],
136
+ "text": "Any CSS length. Falls back to the variant's default height custom property."
137
+ },
138
+ "getter": false,
139
+ "setter": false,
140
+ "reflect": false,
141
+ "attribute": "height"
142
+ },
143
+ "lines": {
144
+ "type": "number",
145
+ "mutable": false,
146
+ "complexType": {
147
+ "original": "number",
148
+ "resolved": "number",
149
+ "references": {}
150
+ },
151
+ "required": false,
152
+ "optional": false,
153
+ "docs": {
154
+ "tags": [],
155
+ "text": "Number of text lines (`variant=\"text\"` only). The last line of a multi-line block is shorter.\nValues below 1 are treated as 1."
156
+ },
157
+ "getter": false,
158
+ "setter": false,
159
+ "reflect": false,
160
+ "attribute": "lines",
161
+ "defaultValue": "1"
162
+ },
163
+ "animated": {
164
+ "type": "boolean",
165
+ "mutable": false,
166
+ "complexType": {
167
+ "original": "boolean",
168
+ "resolved": "boolean",
169
+ "references": {}
170
+ },
171
+ "required": false,
172
+ "optional": false,
173
+ "docs": {
174
+ "tags": [],
175
+ "text": "Whether the placeholder pulses. Disabled automatically under `prefers-reduced-motion`."
176
+ },
177
+ "getter": false,
178
+ "setter": false,
179
+ "reflect": false,
180
+ "attribute": "animated",
181
+ "defaultValue": "true"
182
+ },
183
+ "label": {
184
+ "type": "string",
185
+ "mutable": false,
186
+ "complexType": {
187
+ "original": "string",
188
+ "resolved": "string",
189
+ "references": {}
190
+ },
191
+ "required": false,
192
+ "optional": true,
193
+ "docs": {
194
+ "tags": [],
195
+ "text": "When set, the placeholder gets `role=\"status\"` and this as its `aria-label`; otherwise it is\n`aria-hidden=\"true\"`."
196
+ },
197
+ "getter": false,
198
+ "setter": false,
199
+ "reflect": false,
200
+ "attribute": "label"
201
+ }
202
+ };
203
+ }
204
+ }
@@ -0,0 +1,43 @@
1
+ import { html } from "lit";
2
+ import { componentDescription, propDescription } from "../../stories-utils";
3
+ const variants = ['text', 'rect', 'circle'];
4
+ const meta = {
5
+ title: 'Components/bs-skeleton',
6
+ parameters: { docs: { description: { component: componentDescription('bs-skeleton') } } },
7
+ render: args => html `
8
+ <bs-skeleton
9
+ variant=${args.variant}
10
+ width=${args.width || undefined}
11
+ height=${args.height || undefined}
12
+ lines=${args.lines}
13
+ .animated=${args.animated}
14
+ label=${args.label || undefined}
15
+ ></bs-skeleton>
16
+ `,
17
+ argTypes: {
18
+ variant: { control: 'select', options: variants, description: propDescription('bs-skeleton', 'variant') },
19
+ width: { control: 'text', description: propDescription('bs-skeleton', 'width') },
20
+ height: { control: 'text', description: propDescription('bs-skeleton', 'height') },
21
+ lines: { control: 'number', description: propDescription('bs-skeleton', 'lines') },
22
+ animated: { control: 'boolean', description: propDescription('bs-skeleton', 'animated') },
23
+ label: { control: 'text', description: propDescription('bs-skeleton', 'label') },
24
+ },
25
+ args: { variant: 'text', width: '', height: '', lines: 1, animated: true, label: '' },
26
+ };
27
+ export default meta;
28
+ export const Default = {};
29
+ export const Variants = {
30
+ render: () => html `
31
+ <div style="display:flex; flex-direction:column; gap:16px; width:320px;">
32
+ <bs-skeleton variant="text"></bs-skeleton>
33
+ <bs-skeleton variant="rect" height="80px"></bs-skeleton>
34
+ <bs-skeleton variant="circle" width="48px"></bs-skeleton>
35
+ </div>
36
+ `,
37
+ };
38
+ export const MultiLineText = {
39
+ render: () => html `<div style="width:320px;"><bs-skeleton variant="text" lines="4"></bs-skeleton></div>`,
40
+ };
41
+ export const WithLabel = {
42
+ render: () => html `<div style="width:320px;"><bs-skeleton variant="rect" height="80px" label="Loading content"></bs-skeleton></div>`,
43
+ };
@@ -65,6 +65,10 @@ export class BsSlider {
65
65
  /** Disables the slider: sets the native `disabled` attribute on the range input(s), suppresses
66
66
  * hover/focus/drag styling and the value tooltip, and prevents interaction. */
67
67
  disabled = false;
68
+ /** Accessible name of the lower-bound thumb / percent field when `ariaLabel` is unset. */
69
+ startValueLabel = 'Start value';
70
+ /** Accessible name of the upper-bound thumb / percent field when `ariaLabel` is unset. */
71
+ endValueLabel = 'End value';
68
72
  /**
69
73
  * Accessible name for the slider's native range input(s). Required whenever `showLabel` is
70
74
  * `false` (a bare track with no visible "Label" text) -- without it, the internal native
@@ -224,12 +228,12 @@ export class BsSlider {
224
228
  // near one end, only the topmost one is reachable by click, and the topmost one is always the
225
229
  // one rendered last (the end thumb) unless we compensate.
226
230
  const startOnTop = this.percent(start) > 50;
227
- return (h("div", { class: "bs-slider__track-wrapper", style: { '--bs-slider-fill-start': `${fillStart}%`, '--bs-slider-fill-end': `${fillEnd}%` } }, h("div", { part: "track", class: "bs-slider__track" }, h("div", { part: "fill", class: "bs-slider__track-fill" })), h("input", { type: "range", part: "control", class: "bs-slider__input bs-slider__input--start", style: { zIndex: startOnTop ? '4' : '3' }, min: this.min, max: this.max, step: this.step, value: start, disabled: this.disabled, "aria-label": this.ariaLabel ?? 'Start value', onInput: this.onStartInputChange, onChange: this.onStartInputChange }), h("input", { type: "range", part: "control", class: "bs-slider__input bs-slider__input--end", style: { zIndex: startOnTop ? '3' : '4' }, min: this.min, max: this.max, step: this.step, value: end, disabled: this.disabled, "aria-label": this.ariaLabel ? `${this.ariaLabel} end` : 'End value', onInput: this.onEndInputChange, onChange: this.onEndInputChange }), h("span", { class: "bs-slider__tooltip bs-slider__tooltip--start", part: "tooltip", style: { left: `${fillStart}%` }, "aria-hidden": "true" }, Math.round(this.percent(start)), "%"), h("span", { class: "bs-slider__tooltip bs-slider__tooltip--end", part: "tooltip", style: { left: `${fillEnd}%` }, "aria-hidden": "true" }, Math.round(this.percent(end)), "%")));
231
+ return (h("div", { class: "bs-slider__track-wrapper", style: { '--bs-slider-fill-start': `${fillStart}%`, '--bs-slider-fill-end': `${fillEnd}%` } }, h("div", { part: "track", class: "bs-slider__track" }, h("div", { part: "fill", class: "bs-slider__track-fill" })), h("input", { type: "range", part: "control", class: "bs-slider__input bs-slider__input--start", style: { zIndex: startOnTop ? '4' : '3' }, min: this.min, max: this.max, step: this.step, value: start, disabled: this.disabled, "aria-label": this.ariaLabel ?? this.startValueLabel, onInput: this.onStartInputChange, onChange: this.onStartInputChange }), h("input", { type: "range", part: "control", class: "bs-slider__input bs-slider__input--end", style: { zIndex: startOnTop ? '3' : '4' }, min: this.min, max: this.max, step: this.step, value: end, disabled: this.disabled, "aria-label": this.ariaLabel ? `${this.ariaLabel} end` : this.endValueLabel, onInput: this.onEndInputChange, onChange: this.onEndInputChange }), h("span", { class: "bs-slider__tooltip bs-slider__tooltip--start", part: "tooltip", style: { left: `${fillStart}%` }, "aria-hidden": "true" }, Math.round(this.percent(start)), "%"), h("span", { class: "bs-slider__tooltip bs-slider__tooltip--end", part: "tooltip", style: { left: `${fillEnd}%` }, "aria-hidden": "true" }, Math.round(this.percent(end)), "%")));
228
232
  }
229
233
  render() {
230
234
  const isRange = this.type === 'range';
231
235
  const rootClasses = ['bs-slider', this.disabled ? 'bs-slider--disabled' : ''].filter(Boolean).join(' ');
232
- return (h("div", { key: '7fb6a534e41e91efe00bcba839641550398eed13', class: rootClasses }, this.showLabel && (h("div", { key: '5892936540c9e4f74dfadd3ad9088ffd2c04fef5', class: "bs-slider__header" }, h("span", { key: '220c0db8a2cc5f5f29cf99830fa0b4d30ec90d32', id: "bs-slider-label", part: "label", class: "bs-slider__label" }, this.label), isRange ? (h("span", { class: "bs-slider__value-fields" }, this.renderPercentField(this.percent(this.effectiveValueStart), this.onStartPercentFieldChange, this.ariaLabel ?? 'Start value'), h("span", { class: "bs-slider__separator" }, "\u2013"), this.renderPercentField(this.percent(this.effectiveValueEnd), this.onEndPercentFieldChange, this.ariaLabel ? `${this.ariaLabel} end` : 'End value'))) : (this.renderPercentField(this.percent(this.value), this.onPercentFieldChange, this.ariaLabel ? `${this.ariaLabel} value` : 'Value')))), h("div", { key: '67830218b3aa9d927ab87c4c6ca419b3a24ca0af', class: "bs-slider__row" }, this.showLabel && (h("span", { key: 'b2569e64400853a503d1566825500f8d10fe0318', part: "bound", class: "bs-slider__bound" }, this.min)), isRange ? this.renderRangeThumbs() : this.renderSingleThumb(), this.showLabel && (h("span", { key: '2b5ac8ff8dd48f4db7a0d4db3698bb64a4f9277a', part: "bound", class: "bs-slider__bound" }, this.max)))));
236
+ return (h("div", { key: '24883c8b7d1f00df7a700de4e296ecdfc293bf47', class: rootClasses }, this.showLabel && (h("div", { key: 'd41690990898df937f99a5285f2f407b550d881c', class: "bs-slider__header" }, h("span", { key: '2519779a06f6bb9911be0bdb4539b36c3c16f725', id: "bs-slider-label", part: "label", class: "bs-slider__label" }, this.label), isRange ? (h("span", { class: "bs-slider__value-fields" }, this.renderPercentField(this.percent(this.effectiveValueStart), this.onStartPercentFieldChange, this.ariaLabel ?? this.startValueLabel), h("span", { class: "bs-slider__separator" }, "\u2013"), this.renderPercentField(this.percent(this.effectiveValueEnd), this.onEndPercentFieldChange, this.ariaLabel ? `${this.ariaLabel} end` : this.endValueLabel))) : (this.renderPercentField(this.percent(this.value), this.onPercentFieldChange, this.ariaLabel ? `${this.ariaLabel} value` : 'Value')))), h("div", { key: 'd0525503f51fc1dc3f9753fce131e008db7ded54', class: "bs-slider__row" }, this.showLabel && (h("span", { key: '98ecbdd3462da354a2fb7c719b8eb48c81a0c809', part: "bound", class: "bs-slider__bound" }, this.min)), isRange ? this.renderRangeThumbs() : this.renderSingleThumb(), this.showLabel && (h("span", { key: '3e1690be98b45b3f595991d5cdde35f0abfe0da3', part: "bound", class: "bs-slider__bound" }, this.max)))));
233
237
  }
234
238
  static get is() { return "bs-slider"; }
235
239
  static get encapsulation() { return "shadow"; }
@@ -490,6 +494,46 @@ export class BsSlider {
490
494
  "attribute": "disabled",
491
495
  "defaultValue": "false"
492
496
  },
497
+ "startValueLabel": {
498
+ "type": "string",
499
+ "mutable": false,
500
+ "complexType": {
501
+ "original": "string",
502
+ "resolved": "string",
503
+ "references": {}
504
+ },
505
+ "required": false,
506
+ "optional": false,
507
+ "docs": {
508
+ "tags": [],
509
+ "text": "Accessible name of the lower-bound thumb / percent field when `ariaLabel` is unset."
510
+ },
511
+ "getter": false,
512
+ "setter": false,
513
+ "reflect": false,
514
+ "attribute": "start-value-label",
515
+ "defaultValue": "'Start value'"
516
+ },
517
+ "endValueLabel": {
518
+ "type": "string",
519
+ "mutable": false,
520
+ "complexType": {
521
+ "original": "string",
522
+ "resolved": "string",
523
+ "references": {}
524
+ },
525
+ "required": false,
526
+ "optional": false,
527
+ "docs": {
528
+ "tags": [],
529
+ "text": "Accessible name of the upper-bound thumb / percent field when `ariaLabel` is unset."
530
+ },
531
+ "getter": false,
532
+ "setter": false,
533
+ "reflect": false,
534
+ "attribute": "end-value-label",
535
+ "defaultValue": "'End value'"
536
+ },
493
537
  "ariaLabel": {
494
538
  "type": "string",
495
539
  "mutable": false,
@@ -67,7 +67,7 @@ export class BsSnackbar {
67
67
  this.bsDismiss.emit();
68
68
  };
69
69
  render() {
70
- return (h("div", { key: '291914fd21d4d8634f49aad410f8cda212c7d07c', part: "container", class: `bs-snackbar bs-snackbar--${this.variant}`, role: "status", "aria-live": this.variant === 'error' ? 'assertive' : 'polite' }, h("div", { key: '5d50b75478197ad433c96d66ed9de3fd22360b56', class: "bs-snackbar__content" }, h("span", { key: 'd625eb5d139d7811a28d781b8eb4fffa370debab', part: "icon", class: "bs-snackbar__icon", "aria-hidden": "true" }, this.loading ? h("span", { class: "bs-snackbar__spinner" }) : h(CheckCircleIcon, null)), h("span", { key: '6c7666f8cd8d3bddf44d35a7d8e9d9c645def13f', part: "message", class: "bs-snackbar__message" }, h("slot", { key: '96e8eb40bb7a6c9292d948ac47f6e630dc843bb5' }))), h("div", { key: '60380f06bc10c964155c7cc97eb036a84506a103', class: "bs-snackbar__actions" }, this.actionLabel && (h("bs-button", { key: '843054ee154c565034ddaf7b000419d7ecc4bf63', part: "action", variant: this.actionVariant ?? ACTION_VARIANT[this.variant], size: "sm", onClick: this.onAction }, this.actionLabel)), !this.hideClose && (h("bs-icon-button", { key: '383ea23e7e5f7681651b7a6394cb39b453e5f8cb', part: "close", variant: "subtle", size: "md", ariaLabel: "Dismiss", onClick: this.onDismiss }, h(CloseIcon, { key: '6ec39615ed1e82f3bb6e45a5917fa6a35166d3f1' }))))));
70
+ return (h("div", { key: '869f548001524a78fa66a0b295c177a43160531e', part: "container", class: `bs-snackbar bs-snackbar--${this.variant}`, role: "status", "aria-live": this.variant === 'error' ? 'assertive' : 'polite' }, h("div", { key: 'eca8a98a1ae3dff7ecadd7e370bd59c855a56025', class: "bs-snackbar__content" }, h("span", { key: 'ffba923b45ff59cd8501f7d3da9bd5260113de83', part: "icon", class: "bs-snackbar__icon", "aria-hidden": "true" }, this.loading ? h("span", { class: "bs-snackbar__spinner" }) : h(CheckCircleIcon, null)), h("span", { key: '803f3247af157e79e2e2c2822977ae55cc058a98', part: "message", class: "bs-snackbar__message" }, h("slot", { key: 'fd66b14457361cca63be3a152003a098b56aa43e' }))), h("div", { key: 'ba808bf880cfb2f0c32a70f53ff4e0b2df05eb17', class: "bs-snackbar__actions" }, this.actionLabel && (h("bs-button", { key: '4e7ca40abdfd155cd064d153fee866e87ad64e26', part: "action", variant: this.actionVariant ?? ACTION_VARIANT[this.variant], size: "sm", onClick: this.onAction }, this.actionLabel)), !this.hideClose && (h("bs-icon-button", { key: '89ba5909db07c9e910136e5723bb5df25d0a4b51', part: "close", variant: "subtle", size: "md", ariaLabel: "Dismiss", onClick: this.onDismiss }, h(CloseIcon, { key: '6e3f8d010cf3f234d0e199b3a5d96c8200b25bcc' }))))));
71
71
  }
72
72
  static get is() { return "bs-snackbar"; }
73
73
  static get encapsulation() { return "shadow"; }
@@ -51,8 +51,8 @@ export class BsSourceLink {
51
51
  };
52
52
  render() {
53
53
  const inner = [
54
- h("span", { key: '4f7296f4d35b7779c91e791a7e674fff3f963239', class: "bs-source-link__left" }, h("span", { key: 'e8a03fb6ee46d64d8d9b2e86a39d15d36164a23d', class: "bs-source-link__filename-row" }, h("span", { key: '16ed535a5ab56b54edab2a39d02659c9be9cfc69', part: "icon", class: "bs-source-link__icon" }, h("slot", { key: '56661ab02c9628fd407f364c95db3832d9b86fdd', name: "icon" }, h(FileTextIcon, { key: 'c7a6f19c9dfee1c8b1e4ef24334c541fd8c88cbd' }))), h("p", { key: '5dac08dcde183f2a714c04cc0e700c4b2778bf7e', part: "filename", class: "bs-source-link__filename" }, this.fileName)), h("span", { key: 'bc4cd84ea0d990b5c456d7962bce8881cdaaf1b7', class: "bs-source-link__meta" }, this.sourceName && (h("span", { key: '94efb5a9ff386f86546ce56dbe2a8b386a342d16', part: "source", class: "bs-source-link__source" }, this.sourceName)), this.sourceName && this.version && h("span", { key: 'd084d96de4afe4522fc9ef28c6f870fa49ca68bc', class: "bs-source-link__dot", "aria-hidden": "true" }), this.version && (h("span", { key: 'e2b976a66185a53dbd682081399ed946e1bbb318', part: "version", class: "bs-source-link__version" }, this.version)))),
55
- h("span", { key: '23f361d9af84c4804e88d7f019623e2223fe7a33', part: "arrow", class: "bs-source-link__arrow", "aria-hidden": "true" }, h(ArrowUpRightIcon, { key: '0316db74234f0c66afc0372d5299b8fd19691163' })),
54
+ h("span", { key: '317598fbe8a1bde8ca8dcf867e833760b5db55bb', class: "bs-source-link__left" }, h("span", { key: '1f378730e6ef4526a32b91ac5409fef9d0477ac6', class: "bs-source-link__filename-row" }, h("span", { key: 'd3a7ec6ad3636c421607d79c2a4da5db3e318357', part: "icon", class: "bs-source-link__icon" }, h("slot", { key: 'c7d0127901da55d9fc2ac9a96bae37e3fcc45ef7', name: "icon" }, h(FileTextIcon, { key: 'c0b966da9fca5f6c6022d676236a215d8a400c5f' }))), h("p", { key: '1d763e41b6596ff46b0278e10bcce665ab8b783f', part: "filename", class: "bs-source-link__filename" }, this.fileName)), h("span", { key: '5c5826e11bd5d39cb506f3ce55f81c6fc4598c50', class: "bs-source-link__meta" }, this.sourceName && (h("span", { key: 'd0096ff3a88f4f78bd0c65b14c50c033a81709e1', part: "source", class: "bs-source-link__source" }, this.sourceName)), this.sourceName && this.version && h("span", { key: '0f11dbd4198a12756bbb662c0d98fdae1eaf69c4', class: "bs-source-link__dot", "aria-hidden": "true" }), this.version && (h("span", { key: '1408af4d964a1bdf03d8f5db5638cfcb79a0896a', part: "version", class: "bs-source-link__version" }, this.version)))),
55
+ h("span", { key: 'ce4b707c7a7ab5b8239f1d7fd703a6a720b08a2e', part: "arrow", class: "bs-source-link__arrow", "aria-hidden": "true" }, h(ArrowUpRightIcon, { key: 'ef5d07febc81b561892f4814bc62d1d1d551becf' })),
56
56
  ];
57
57
  return this.href ? (h("a", { class: "bs-source-link", href: this.href, target: this.target, rel: "noopener noreferrer", onClick: this.onClick }, inner)) : (h("button", { type: "button", class: "bs-source-link", onClick: this.onClick }, inner));
58
58
  }
@@ -0,0 +1,32 @@
1
+ import { render, h, describe, it, expect } from "@stencil/vitest";
2
+ describe('bs-spinner', () => {
3
+ it('defaults to size inherit and is aria-hidden without a label', async () => {
4
+ const { root } = await render(h("bs-spinner", null));
5
+ const c = root.shadowRoot.querySelector('[part="container"]');
6
+ expect(c).toHaveClass('bs-spinner--inherit');
7
+ expect(c).toEqualAttribute('aria-hidden', 'true');
8
+ expect(c.hasAttribute('role')).toBe(false);
9
+ });
10
+ it('uses role="status" and aria-label when label is set', async () => {
11
+ const { root } = await render(h("bs-spinner", { label: "Saving" }));
12
+ const c = root.shadowRoot.querySelector('[part="container"]');
13
+ expect(c).toEqualAttribute('role', 'status');
14
+ expect(c).toEqualAttribute('aria-label', 'Saving');
15
+ expect(c.hasAttribute('aria-hidden')).toBe(false);
16
+ });
17
+ it('applies the size class for each size', async () => {
18
+ const { root, setProps } = await render(h("bs-spinner", { size: "xs" }));
19
+ const c = root.shadowRoot.querySelector('[part="container"]');
20
+ expect(c).toHaveClass('bs-spinner--xs');
21
+ await setProps({ size: 'sm' });
22
+ expect(c).toHaveClass('bs-spinner--sm');
23
+ await setProps({ size: 'md' });
24
+ expect(c).toHaveClass('bs-spinner--md');
25
+ });
26
+ it('renders an svg with track and arc', async () => {
27
+ const { root } = await render(h("bs-spinner", null));
28
+ expect(root.shadowRoot.querySelector('svg[part="svg"]')).not.toBeNull();
29
+ expect(root.shadowRoot.querySelector('.bs-spinner__track')).not.toBeNull();
30
+ expect(root.shadowRoot.querySelector('.bs-spinner__arc')).not.toBeNull();
31
+ });
32
+ });
@@ -0,0 +1,61 @@
1
+ :host {
2
+ display: inline-block;
3
+ vertical-align: middle;
4
+ --bs-spinner-size-xs: var(--bs-spacing-200);
5
+ --bs-spinner-size-sm: var(--bs-spacing-250);
6
+ --bs-spinner-size-md: var(--bs-spacing-300);
7
+ --bs-spinner-color: currentColor;
8
+ --bs-spinner-track-opacity: 0.25;
9
+ --bs-spinner-duration: 0.8s;
10
+ }
11
+
12
+ .bs-spinner {
13
+ display: inline-flex;
14
+ width: 1em;
15
+ height: 1em;
16
+ color: inherit;
17
+ }
18
+
19
+ .bs-spinner--xs {
20
+ width: var(--bs-spinner-size-xs);
21
+ height: var(--bs-spinner-size-xs);
22
+ }
23
+
24
+ .bs-spinner--sm {
25
+ width: var(--bs-spinner-size-sm);
26
+ height: var(--bs-spinner-size-sm);
27
+ }
28
+
29
+ .bs-spinner--md {
30
+ width: var(--bs-spinner-size-md);
31
+ height: var(--bs-spinner-size-md);
32
+ }
33
+
34
+ .bs-spinner__svg {
35
+ width: 100%;
36
+ height: 100%;
37
+ animation: bs-spinner-spin var(--bs-spinner-duration) linear infinite;
38
+ }
39
+
40
+ .bs-spinner__track {
41
+ stroke: var(--bs-spinner-color);
42
+ opacity: var(--bs-spinner-track-opacity);
43
+ }
44
+
45
+ .bs-spinner__arc {
46
+ stroke: var(--bs-spinner-color);
47
+ }
48
+
49
+ @keyframes bs-spinner-spin {
50
+ to {
51
+ transform: rotate(360deg);
52
+ }
53
+ }
54
+
55
+ /* Reduced motion: slow the rotation rather than stopping it, so "busy" is still conveyed
56
+ (same approach as bs-progress's indeterminate ring). */
57
+ @media (prefers-reduced-motion: reduce) {
58
+ .bs-spinner__svg {
59
+ animation-duration: calc(var(--bs-spinner-duration) * 4);
60
+ }
61
+ }
@@ -0,0 +1,96 @@
1
+ import { h } from "@stencil/core";
2
+ /**
3
+ * A small inline spinner sized for text. By default (`size="inherit"`) it is `1em` square so it
4
+ * scales with the surrounding font size, and it draws in `currentColor` so it matches the
5
+ * surrounding text. Built as plain inline SVG: `bs-progress` has fixed pixel diameters and a
6
+ * block layout, so it can't sit inline with text.
7
+ *
8
+ * ## When to use
9
+ * - Inline "busy" feedback next to or inside text, e.g. "Saving..." or within a button label.
10
+ *
11
+ * ## When not to use
12
+ * - For a large or standalone loading indicator, or one with a known percentage -- use `bs-progress`.
13
+ * - As a content placeholder -- use `bs-skeleton`.
14
+ *
15
+ * @part container - The outer inline wrapper (carries the status role).
16
+ * @part svg - The spinner SVG.
17
+ * @prop --bs-spinner-size-xs - Diameter at `size="xs"`. Aliased to `--bs-spacing-200`.
18
+ * @prop --bs-spinner-size-sm - Diameter at `size="sm"`. Aliased to `--bs-spacing-250`.
19
+ * @prop --bs-spinner-size-md - Diameter at `size="md"`. Aliased to `--bs-spacing-300`.
20
+ * @prop --bs-spinner-color - Spinner color. Defaults to `currentColor`.
21
+ * @prop --bs-spinner-track-opacity - Opacity of the background track ring. Defaults to `0.25`.
22
+ * @prop --bs-spinner-duration - Rotation duration. Defaults to `0.8s`.
23
+ */
24
+ export class BsSpinner {
25
+ /** `xs`/`sm`/`md` use fixed token sizes; `inherit` (default) is `1em`, following the font size. */
26
+ size = 'inherit';
27
+ /** Accessible name (e.g. "Loading"). When set, the spinner gets `role="status"` and this
28
+ * `aria-label`; when omitted it is `aria-hidden="true"` (use it next to visible text that already
29
+ * says what is happening). */
30
+ label;
31
+ render() {
32
+ const hasLabel = !!this.label;
33
+ return (h("span", { key: '31531b80418f912ded9ffabafc1ad36b48e1c4e1', part: "container", class: `bs-spinner bs-spinner--${this.size}`, role: hasLabel ? 'status' : undefined, "aria-label": hasLabel ? this.label : undefined, "aria-hidden": hasLabel ? undefined : 'true' }, h("svg", { key: '7c820016daa154c8e8486a8d5a60505a39d37bde', part: "svg", class: "bs-spinner__svg", viewBox: "0 0 24 24", fill: "none", focusable: "false" }, h("circle", { key: '60b8dce8ac87753a2a9d3c3521ce387bcf6e9491', class: "bs-spinner__track", cx: "12", cy: "12", r: "9", "stroke-width": "3" }), h("path", { key: '3548aee65c89828fed57465a95b72e15c50807f4', class: "bs-spinner__arc", d: "M12 3a9 9 0 0 1 9 9", "stroke-width": "3", "stroke-linecap": "round" }))));
34
+ }
35
+ static get is() { return "bs-spinner"; }
36
+ static get encapsulation() { return "shadow"; }
37
+ static get originalStyleUrls() {
38
+ return {
39
+ "$": ["bs-spinner.css"]
40
+ };
41
+ }
42
+ static get styleUrls() {
43
+ return {
44
+ "$": ["bs-spinner.css"]
45
+ };
46
+ }
47
+ static get properties() {
48
+ return {
49
+ "size": {
50
+ "type": "string",
51
+ "mutable": false,
52
+ "complexType": {
53
+ "original": "BsSpinnerSize",
54
+ "resolved": "\"inherit\" | \"md\" | \"sm\" | \"xs\"",
55
+ "references": {
56
+ "BsSpinnerSize": {
57
+ "location": "local",
58
+ "path": "/home/runner/work/eg-brandsync-storybook/eg-brandsync-storybook/packages/wc/src/components/bs-spinner/bs-spinner.tsx",
59
+ "id": "src/components/bs-spinner/bs-spinner.tsx::BsSpinnerSize"
60
+ }
61
+ }
62
+ },
63
+ "required": false,
64
+ "optional": false,
65
+ "docs": {
66
+ "tags": [],
67
+ "text": "`xs`/`sm`/`md` use fixed token sizes; `inherit` (default) is `1em`, following the font size."
68
+ },
69
+ "getter": false,
70
+ "setter": false,
71
+ "reflect": false,
72
+ "attribute": "size",
73
+ "defaultValue": "'inherit'"
74
+ },
75
+ "label": {
76
+ "type": "string",
77
+ "mutable": false,
78
+ "complexType": {
79
+ "original": "string",
80
+ "resolved": "string",
81
+ "references": {}
82
+ },
83
+ "required": false,
84
+ "optional": true,
85
+ "docs": {
86
+ "tags": [],
87
+ "text": "Accessible name (e.g. \"Loading\"). When set, the spinner gets `role=\"status\"` and this\n`aria-label`; when omitted it is `aria-hidden=\"true\"` (use it next to visible text that already\nsays what is happening)."
88
+ },
89
+ "getter": false,
90
+ "setter": false,
91
+ "reflect": false,
92
+ "attribute": "label"
93
+ }
94
+ };
95
+ }
96
+ }
@@ -0,0 +1,30 @@
1
+ import { html } from "lit";
2
+ import { componentDescription, propDescription } from "../../stories-utils";
3
+ const sizes = ['xs', 'sm', 'md', 'inherit'];
4
+ const meta = {
5
+ title: 'Components/bs-spinner',
6
+ parameters: { docs: { description: { component: componentDescription('bs-spinner') } } },
7
+ render: args => html `<bs-spinner size=${args.size} label=${args.label || undefined}></bs-spinner>`,
8
+ argTypes: {
9
+ size: { control: 'select', options: sizes, description: propDescription('bs-spinner', 'size') },
10
+ label: { control: 'text', description: propDescription('bs-spinner', 'label') },
11
+ },
12
+ args: { size: 'inherit', label: 'Loading' },
13
+ };
14
+ export default meta;
15
+ export const Default = {};
16
+ export const Sizes = {
17
+ render: () => html `
18
+ <div style="display:flex; gap:16px; align-items:center;">
19
+ <bs-spinner size="xs" label="Loading"></bs-spinner>
20
+ <bs-spinner size="sm" label="Loading"></bs-spinner>
21
+ <bs-spinner size="md" label="Loading"></bs-spinner>
22
+ </div>
23
+ `,
24
+ };
25
+ export const InlineWithText = {
26
+ render: () => html `
27
+ <p style="font-size:14px;"><bs-spinner></bs-spinner> Saving...</p>
28
+ <p style="font-size:24px; color:var(--bs-color-primary-default);"><bs-spinner></bs-spinner> Uploading...</p>
29
+ `,
30
+ };
@@ -62,7 +62,7 @@ export class BsStepper {
62
62
  }
63
63
  render() {
64
64
  // role="list" so each bs-stepper-step's role="listitem" has the required parent.
65
- return (h(Host, { key: '8a3c0b5ce7ffd6dfc34b0c5ae602ef4bca42e33c', role: "list" }, h("slot", { key: 'fcc69d5e89dfa5f1ae7aa2ae38667a7826fee89d', onSlotchange: this.onSlotChange })));
65
+ return (h(Host, { key: '94662e1c7a6539f13c9405e638fb2713d1cadf6c', role: "list" }, h("slot", { key: 'ed491d1b2e37e8b4f581bf0cc06063414c9aac59', onSlotchange: this.onSlotChange })));
66
66
  }
67
67
  static get is() { return "bs-stepper"; }
68
68
  static get encapsulation() { return "shadow"; }
@@ -57,7 +57,7 @@ export class BsStepperStep {
57
57
  }
58
58
  render() {
59
59
  const state = this.state;
60
- return (h(Host, { key: '07f068e7e9d54124e72e6f3c395532b1df28bf4d', role: "listitem", class: `bs-stepper-step--${this.direction}` }, h("div", { key: 'aa2c8cf568f8823be576b7cd8453db51dbc28ca3', class: "bs-stepper-step__top" }, h("span", { key: '55053a617f92b0f300987fad2f171d0c5a00cb48', part: "icon", class: `bs-stepper-step__icon bs-stepper-step__icon--${state}` }, state === 'current' && h("span", { key: '83f5206192f6e3363ee37c1819e2c7584d2b4395', class: "bs-stepper-step__icon-dot" }), state === 'done' && h(CheckIcon, { key: '19960813f546d3bed470d486d64cda1f4f9ae05d' }), state === 'error' && h(ExclamationIcon, { key: '5dff15dc5e8183b6ebe75592dddd0710fe6318f3' })), h("span", { key: 'aa91c2544a472e836d79361453eccc6cc3c0ded2', part: "connector", class: "bs-stepper-step__connector", "aria-hidden": "true" }, h("span", { key: 'b4db85cdeed8fcd895ce5fe38fa98aaf9e40401d', class: "bs-stepper-step__connector-line" }))), h("span", { key: 'c4dcd488f9c177eab29d8d9cedee9ff139844049', part: "label", class: `bs-stepper-step__label bs-stepper-step__label--${state}` }, h("span", { key: 'd486ade27072093c9bf90824e89b24ab4ff5b8a5', part: "name", class: "bs-stepper-step__name" }, this.name), this.showDescription && this.description && (h("span", { key: 'eae26f6a683805ebc8eeb780df82060cf3ec699f', part: "description", class: "bs-stepper-step__description" }, this.description)))));
60
+ return (h(Host, { key: '1c5694e67c967484efa955425ec3ed12d8f7a03e', role: "listitem", class: `bs-stepper-step--${this.direction}` }, h("div", { key: 'fe84861fb98c195f54b0032bfdeb0f1002ed9ebb', class: "bs-stepper-step__top" }, h("span", { key: '2d3d16b27bb87230f14ccda2442614db65f703d8', part: "icon", class: `bs-stepper-step__icon bs-stepper-step__icon--${state}` }, state === 'current' && h("span", { key: 'c547471f2fe4e5a75a255ce09cc6a0c2f2bc11ec', class: "bs-stepper-step__icon-dot" }), state === 'done' && h(CheckIcon, { key: 'da0d947ad7661120b764257e3dbd7ae7c9940e75' }), state === 'error' && h(ExclamationIcon, { key: 'a5004b5d62b18e34b34d0c81eb53a4dbd65bc1c2' })), h("span", { key: 'b7e9d951076dfa1aa62bcde535a29d877cc618d3', part: "connector", class: "bs-stepper-step__connector", "aria-hidden": "true" }, h("span", { key: '415ecffabac4da1354660d508db420dbb2610a0a', class: "bs-stepper-step__connector-line" }))), h("span", { key: '99d30eb3bb209f1d4cb98bd8fcc3821c70508a1f', part: "label", class: `bs-stepper-step__label bs-stepper-step__label--${state}` }, h("span", { key: '82c9c1e5fac460d45f7aaa6e1ecdaf4a717c408f', part: "name", class: "bs-stepper-step__name" }, this.name), this.showDescription && this.description && (h("span", { key: 'c782b740f87d29aee56c523fccbeeff4a2032562', part: "description", class: "bs-stepper-step__description" }, this.description)))));
61
61
  }
62
62
  static get is() { return "bs-stepper-step"; }
63
63
  static get encapsulation() { return "shadow"; }
@@ -75,7 +75,7 @@ export class BsSwitch {
75
75
  const knobClasses = ['bs-switch__knob', `bs-switch__knob--${this.size}`, this.disabled ? 'bs-switch__knob--disabled' : '']
76
76
  .filter(Boolean)
77
77
  .join(' ');
78
- return (h("label", { key: '3c1ef40b924c852077b0e82e6f177c3ef029d578', class: `bs-switch ${this.disabled ? 'bs-switch--disabled' : ''}` }, h("input", { key: '05b9d74d9264d85efad043d3fed9582294245e14', class: "bs-switch__input", type: "checkbox", role: "switch", checked: this.checked, disabled: this.disabled, "aria-checked": String(this.checked), "aria-label": this.ariaLabel, onChange: this.onChange }), h("span", { key: '1df589ae299b9d78841b66964803be1431a902f0', part: "track", class: trackClasses }, h("span", { key: '56f65a6b2c672c13b566eeb94bed37985dd225e1', part: "knob", class: knobClasses })), h("span", { key: '293393bcd0c93a6b67fee20761f2fec6ae350d1f', part: "label", class: "bs-switch__label" }, h("slot", { key: 'a4a89ba0581cb44382b9f81564adb6dd1e3809bc' }))));
78
+ return (h("label", { key: 'c0b36dcd360b286a7b926268f15389c327071ff5', class: `bs-switch ${this.disabled ? 'bs-switch--disabled' : ''}` }, h("input", { key: 'b6194c6f6c247aa59f56677e0a8505baebe4cd20', class: "bs-switch__input", type: "checkbox", role: "switch", checked: this.checked, disabled: this.disabled, "aria-checked": String(this.checked), "aria-label": this.ariaLabel, onChange: this.onChange }), h("span", { key: 'bd49a6013acddfff26cdcbbd412725b7b4b0d1d9', part: "track", class: trackClasses }, h("span", { key: '3973bc2716435c5aaf050f772b43a35827362d39', part: "knob", class: knobClasses })), h("span", { key: 'b7dd216fed4ebc98bd83cc7934523ef25e91f9a4', part: "label", class: "bs-switch__label" }, h("slot", { key: '24a8cd4c77ed2fc3038f46e0e619de19a536b8c0' }))));
79
79
  }
80
80
  static get is() { return "bs-switch"; }
81
81
  static get encapsulation() { return "shadow"; }
@@ -94,7 +94,7 @@ export class BsInlineTab {
94
94
  };
95
95
  render() {
96
96
  const iconOnly = this.hasIcon && !this.hasLabel;
97
- return (h("button", { key: '84e1e70ea67dba9c45e55cfcbc9afecb5be41b7e', type: "button", part: "tab", role: "tab", class: `bs-inline-tab ${this.selected ? 'bs-inline-tab--selected' : ''} ${this.disabled ? 'bs-inline-tab--disabled' : ''} ${iconOnly ? 'bs-inline-tab--icon-only' : ''} ${this.hasIcon ? 'bs-inline-tab--has-icon' : ''}`, 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 }, h("span", { key: '118ed482a69348bf7ed5b633df36d714c643eea2', part: "icon", class: `bs-inline-tab__icon ${this.hasIcon ? 'bs-inline-tab__icon--has-content' : ''}` }, h("slot", { key: 'bde742484441571b7e907702c90dff00ff12a515', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'c1c0df916c0d6bbc3c51f74ffc4a659cc731cb5d', part: "label", class: `bs-inline-tab__label ${this.hasLabel ? 'bs-inline-tab__label--has-content' : ''}` }, h("slot", { key: 'f3ed571ab6a28cd43f08b479eca9a5d70b4851ea', onSlotchange: this.onLabelSlotchange }))));
97
+ return (h("button", { key: '3c512a80e93fec29f2cfd70cf921477b323064fa', type: "button", part: "tab", role: "tab", class: `bs-inline-tab ${this.selected ? 'bs-inline-tab--selected' : ''} ${this.disabled ? 'bs-inline-tab--disabled' : ''} ${iconOnly ? 'bs-inline-tab--icon-only' : ''} ${this.hasIcon ? 'bs-inline-tab--has-icon' : ''}`, 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 }, h("span", { key: 'a206bde98f6b17c667c3e9690b6dcd3715376f99', part: "icon", class: `bs-inline-tab__icon ${this.hasIcon ? 'bs-inline-tab__icon--has-content' : ''}` }, h("slot", { key: '9a8ef173b7d97db176c66de0a8f7215c967f07bc', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '53d9fd3a06976bb9366829864ae7f1e86c39ef50', part: "label", class: `bs-inline-tab__label ${this.hasLabel ? 'bs-inline-tab__label--has-content' : ''}` }, h("slot", { key: '37a6840ad59a98a0bdc13dfc1c87ece5e8d8ec54', onSlotchange: this.onLabelSlotchange }))));
98
98
  }
99
99
  static get is() { return "bs-inline-tab"; }
100
100
  static get encapsulation() { return "shadow"; }