@beeq/core 1.9.0 → 1.10.0-beta.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 (580) hide show
  1. package/dist/beeq/beeq.css +1 -1
  2. package/dist/beeq/beeq.esm.js +1 -1
  3. package/dist/beeq/beeq.esm.js.map +1 -1
  4. package/dist/beeq/bq-accordion-group.entry.esm.js.map +1 -1
  5. package/dist/beeq/bq-accordion.entry.esm.js.map +1 -1
  6. package/dist/beeq/bq-alert.entry.esm.js.map +1 -1
  7. package/dist/beeq/bq-avatar.entry.esm.js.map +1 -1
  8. package/dist/beeq/bq-badge.entry.esm.js.map +1 -1
  9. package/dist/beeq/bq-breadcrumb-item.entry.esm.js.map +1 -1
  10. package/dist/beeq/bq-breadcrumb.entry.esm.js.map +1 -1
  11. package/dist/beeq/bq-button.bq-icon.entry.esm.js.map +1 -1
  12. package/dist/beeq/bq-card.entry.esm.js.map +1 -1
  13. package/dist/beeq/bq-checkbox.entry.esm.js.map +1 -1
  14. package/dist/beeq/bq-date-picker.entry.esm.js.map +1 -1
  15. package/dist/beeq/bq-dialog.entry.esm.js.map +1 -1
  16. package/dist/beeq/bq-divider.entry.esm.js.map +1 -1
  17. package/dist/beeq/bq-drawer.entry.esm.js.map +1 -1
  18. package/dist/beeq/bq-dropdown.bq-panel.entry.esm.js.map +1 -1
  19. package/dist/beeq/bq-empty-state.entry.esm.js.map +1 -1
  20. package/dist/beeq/bq-input.entry.esm.js.map +1 -1
  21. package/dist/beeq/bq-notification.entry.esm.js.map +1 -1
  22. package/dist/beeq/bq-option-group.entry.esm.js.map +1 -1
  23. package/dist/beeq/bq-option-list.bq-tag.entry.esm.js.map +1 -1
  24. package/dist/beeq/bq-option.entry.esm.js.map +1 -1
  25. package/dist/beeq/bq-page-title.entry.esm.js.map +1 -1
  26. package/dist/beeq/bq-progress.entry.esm.js.map +1 -1
  27. package/dist/beeq/bq-radio-group.entry.esm.js.map +1 -1
  28. package/dist/beeq/bq-radio.entry.esm.js.map +1 -1
  29. package/dist/beeq/bq-select.entry.esm.js.map +1 -1
  30. package/dist/beeq/bq-side-menu-item.entry.esm.js.map +1 -1
  31. package/dist/beeq/bq-side-menu.entry.esm.js.map +1 -1
  32. package/dist/beeq/bq-slider.entry.esm.js.map +1 -1
  33. package/dist/beeq/bq-spinner.entry.esm.js.map +1 -1
  34. package/dist/beeq/bq-status.entry.esm.js.map +1 -1
  35. package/dist/beeq/bq-step-item.entry.esm.js.map +1 -1
  36. package/dist/beeq/bq-steps.entry.esm.js.map +1 -1
  37. package/dist/beeq/bq-switch.entry.esm.js.map +1 -1
  38. package/dist/beeq/bq-tab-group.entry.esm.js.map +1 -1
  39. package/dist/beeq/bq-tab.entry.esm.js.map +1 -1
  40. package/dist/beeq/bq-textarea.entry.esm.js.map +1 -1
  41. package/dist/beeq/bq-toast.entry.esm.js.map +1 -1
  42. package/dist/beeq/bq-tooltip.entry.esm.js.map +1 -1
  43. package/dist/beeq/index.esm.js +1 -1
  44. package/dist/beeq/index.esm.js.map +1 -1
  45. package/dist/beeq/loader.esm.js.map +1 -1
  46. package/dist/beeq/p-078d8f91.entry.js +6 -0
  47. package/dist/beeq/{p-0d37b636.entry.js.map → p-078d8f91.entry.js.map} +1 -1
  48. package/dist/beeq/p-0949ff39.entry.js +6 -0
  49. package/dist/beeq/{p-0b25af76.entry.js.map → p-0949ff39.entry.js.map} +1 -1
  50. package/dist/beeq/p-189629c7.entry.js +6 -0
  51. package/dist/beeq/p-189629c7.entry.js.map +1 -0
  52. package/dist/beeq/p-20d9b09b.entry.js +6 -0
  53. package/dist/beeq/{p-a68fbc9a.entry.js.map → p-20d9b09b.entry.js.map} +1 -1
  54. package/dist/beeq/p-2219f451.entry.js +6 -0
  55. package/dist/beeq/{p-d153a008.entry.js.map → p-2219f451.entry.js.map} +1 -1
  56. package/dist/beeq/p-36f5231a.entry.js +6 -0
  57. package/dist/beeq/{p-999f9e20.entry.js.map → p-36f5231a.entry.js.map} +1 -1
  58. package/dist/beeq/p-388876c1.entry.js +6 -0
  59. package/dist/beeq/{p-a72768fd.entry.js.map → p-388876c1.entry.js.map} +1 -1
  60. package/dist/beeq/p-3c330710.entry.js +6 -0
  61. package/dist/beeq/{p-90fd4b0c.entry.js.map → p-3c330710.entry.js.map} +1 -1
  62. package/dist/beeq/p-3f7193fb.entry.js +6 -0
  63. package/dist/beeq/{p-fea2b8c2.entry.js.map → p-3f7193fb.entry.js.map} +1 -1
  64. package/dist/beeq/p-3fa6805d.entry.js +6 -0
  65. package/dist/beeq/{p-4f3809da.entry.js.map → p-3fa6805d.entry.js.map} +1 -1
  66. package/dist/beeq/p-41744618.entry.js +6 -0
  67. package/dist/beeq/{p-ccc302f0.entry.js.map → p-41744618.entry.js.map} +1 -1
  68. package/dist/beeq/p-4623461e.entry.js +6 -0
  69. package/dist/beeq/{p-b724504a.entry.js.map → p-4623461e.entry.js.map} +1 -1
  70. package/dist/beeq/p-49bda6bc.entry.js +6 -0
  71. package/dist/beeq/{p-542eb8fa.entry.js.map → p-49bda6bc.entry.js.map} +1 -1
  72. package/dist/beeq/p-4c4201e1.entry.js +6 -0
  73. package/dist/beeq/{p-da8596cf.entry.js.map → p-4c4201e1.entry.js.map} +1 -1
  74. package/dist/beeq/p-4f24e77c.entry.js +6 -0
  75. package/dist/beeq/{p-cfec306f.entry.js.map → p-4f24e77c.entry.js.map} +1 -1
  76. package/dist/beeq/p-50f9e2c0.entry.js +6 -0
  77. package/dist/beeq/{p-29209d90.entry.js.map → p-50f9e2c0.entry.js.map} +1 -1
  78. package/dist/beeq/p-604a001b.entry.js +6 -0
  79. package/dist/beeq/{p-d7564e29.entry.js.map → p-604a001b.entry.js.map} +1 -1
  80. package/dist/beeq/p-6bcae73b.entry.js +6 -0
  81. package/dist/beeq/p-6bcae73b.entry.js.map +1 -0
  82. package/dist/beeq/p-6e7734bb.entry.js +6 -0
  83. package/dist/beeq/{p-2bb8c586.entry.js.map → p-6e7734bb.entry.js.map} +1 -1
  84. package/dist/beeq/p-6ebad63f.entry.js +6 -0
  85. package/dist/beeq/{p-cd4f1493.entry.js.map → p-6ebad63f.entry.js.map} +1 -1
  86. package/dist/beeq/p-76ee57c6.entry.js +6 -0
  87. package/dist/beeq/{p-e0257fb4.entry.js.map → p-76ee57c6.entry.js.map} +1 -1
  88. package/dist/beeq/p-80916524.entry.js +6 -0
  89. package/dist/beeq/{p-3df3af93.entry.js.map → p-80916524.entry.js.map} +1 -1
  90. package/dist/beeq/p-90947d6b.entry.js +6 -0
  91. package/dist/beeq/{p-58c37e96.entry.js.map → p-90947d6b.entry.js.map} +1 -1
  92. package/dist/beeq/p-912955f0.entry.js +6 -0
  93. package/dist/beeq/{p-44c2a6b9.entry.js.map → p-912955f0.entry.js.map} +1 -1
  94. package/dist/beeq/p-98333265.entry.js +6 -0
  95. package/dist/beeq/{p-5ea58411.entry.js.map → p-98333265.entry.js.map} +1 -1
  96. package/dist/beeq/p-987c0ab6.entry.js +6 -0
  97. package/dist/beeq/{p-cab20c11.entry.js.map → p-987c0ab6.entry.js.map} +1 -1
  98. package/dist/beeq/p-CCNjsDdb.js +6 -0
  99. package/dist/beeq/p-CCNjsDdb.js.map +1 -0
  100. package/dist/beeq/p-a489f10f.entry.js +6 -0
  101. package/dist/beeq/{p-00022fe8.entry.js.map → p-a489f10f.entry.js.map} +1 -1
  102. package/dist/beeq/p-a6d2ceb4.entry.js +6 -0
  103. package/dist/beeq/{p-8570c34a.entry.js.map → p-a6d2ceb4.entry.js.map} +1 -1
  104. package/dist/beeq/p-ab352f43.entry.js +6 -0
  105. package/dist/beeq/{p-165744f3.entry.js.map → p-ab352f43.entry.js.map} +1 -1
  106. package/dist/beeq/p-af445f7e.entry.js +6 -0
  107. package/dist/beeq/{p-ab5ce46e.entry.js.map → p-af445f7e.entry.js.map} +1 -1
  108. package/dist/beeq/p-bf7a0a2d.entry.js +6 -0
  109. package/dist/beeq/{p-bee9cc2b.entry.js.map → p-bf7a0a2d.entry.js.map} +1 -1
  110. package/dist/beeq/p-c3f20d0e.entry.js +6 -0
  111. package/dist/beeq/{p-a96ffa70.entry.js.map → p-c3f20d0e.entry.js.map} +1 -1
  112. package/dist/beeq/p-d4b529aa.entry.js +6 -0
  113. package/dist/beeq/{p-ffcc02f7.entry.js.map → p-d4b529aa.entry.js.map} +1 -1
  114. package/dist/beeq/p-e5zjNNdI.js +7 -0
  115. package/dist/beeq/p-e5zjNNdI.js.map +1 -0
  116. package/dist/beeq/p-e8435655.entry.js +6 -0
  117. package/dist/beeq/{p-fd79697e.entry.js.map → p-e8435655.entry.js.map} +1 -1
  118. package/dist/beeq/p-e91d1052.entry.js +6 -0
  119. package/dist/beeq/{p-b07e39c4.entry.js.map → p-e91d1052.entry.js.map} +1 -1
  120. package/dist/beeq/p-ed10c8bf.entry.js +6 -0
  121. package/dist/beeq/{p-2ca0624c.entry.js.map → p-ed10c8bf.entry.js.map} +1 -1
  122. package/dist/beeq/p-ee31c3cb.entry.js +6 -0
  123. package/dist/beeq/{p-e29356c6.entry.js.map → p-ee31c3cb.entry.js.map} +1 -1
  124. package/dist/beeq/p-f683e400.entry.js +6 -0
  125. package/dist/beeq/p-f683e400.entry.js.map +1 -0
  126. package/dist/beeq/p-f9734e66.entry.js +6 -0
  127. package/dist/beeq/{p-0d137bf6.entry.js.map → p-f9734e66.entry.js.map} +1 -1
  128. package/dist/beeq.html-custom-data.json +116 -113
  129. package/dist/cjs/beeq.cjs.js +4 -5
  130. package/dist/cjs/beeq.cjs.js.map +1 -1
  131. package/dist/cjs/bq-accordion-group.cjs.entry.js +2 -2
  132. package/dist/cjs/bq-accordion-group.cjs.entry.js.map +1 -1
  133. package/dist/cjs/bq-accordion-group.entry.cjs.js.map +1 -1
  134. package/dist/cjs/bq-accordion.cjs.entry.js +2 -2
  135. package/dist/cjs/bq-accordion.cjs.entry.js.map +1 -1
  136. package/dist/cjs/bq-accordion.entry.cjs.js.map +1 -1
  137. package/dist/cjs/bq-alert.cjs.entry.js +2 -2
  138. package/dist/cjs/bq-alert.cjs.entry.js.map +1 -1
  139. package/dist/cjs/bq-alert.entry.cjs.js.map +1 -1
  140. package/dist/cjs/bq-avatar.cjs.entry.js +2 -2
  141. package/dist/cjs/bq-avatar.cjs.entry.js.map +1 -1
  142. package/dist/cjs/bq-avatar.entry.cjs.js.map +1 -1
  143. package/dist/cjs/bq-badge.cjs.entry.js +2 -2
  144. package/dist/cjs/bq-badge.cjs.entry.js.map +1 -1
  145. package/dist/cjs/bq-badge.entry.cjs.js.map +1 -1
  146. package/dist/cjs/bq-breadcrumb-item.cjs.entry.js +2 -2
  147. package/dist/cjs/bq-breadcrumb-item.cjs.entry.js.map +1 -1
  148. package/dist/cjs/bq-breadcrumb-item.entry.cjs.js.map +1 -1
  149. package/dist/cjs/bq-breadcrumb.cjs.entry.js +2 -2
  150. package/dist/cjs/bq-breadcrumb.cjs.entry.js.map +1 -1
  151. package/dist/cjs/bq-breadcrumb.entry.cjs.js.map +1 -1
  152. package/dist/cjs/bq-button.bq-icon.entry.cjs.js.map +1 -1
  153. package/dist/cjs/bq-button_2.cjs.entry.js +3 -3
  154. package/dist/cjs/bq-button_2.cjs.entry.js.map +1 -1
  155. package/dist/cjs/bq-card.cjs.entry.js +2 -2
  156. package/dist/cjs/bq-card.cjs.entry.js.map +1 -1
  157. package/dist/cjs/bq-card.entry.cjs.js.map +1 -1
  158. package/dist/cjs/bq-checkbox.cjs.entry.js +2 -2
  159. package/dist/cjs/bq-checkbox.cjs.entry.js.map +1 -1
  160. package/dist/cjs/bq-checkbox.entry.cjs.js.map +1 -1
  161. package/dist/cjs/bq-date-picker.cjs.entry.js +2 -2
  162. package/dist/cjs/bq-date-picker.cjs.entry.js.map +1 -1
  163. package/dist/cjs/bq-date-picker.entry.cjs.js.map +1 -1
  164. package/dist/cjs/bq-dialog.cjs.entry.js +2 -2
  165. package/dist/cjs/bq-dialog.cjs.entry.js.map +1 -1
  166. package/dist/cjs/bq-dialog.entry.cjs.js.map +1 -1
  167. package/dist/cjs/bq-divider.cjs.entry.js +2 -2
  168. package/dist/cjs/bq-divider.cjs.entry.js.map +1 -1
  169. package/dist/cjs/bq-divider.entry.cjs.js.map +1 -1
  170. package/dist/cjs/bq-drawer.cjs.entry.js +2 -2
  171. package/dist/cjs/bq-drawer.cjs.entry.js.map +1 -1
  172. package/dist/cjs/bq-drawer.entry.cjs.js.map +1 -1
  173. package/dist/cjs/bq-dropdown.bq-panel.entry.cjs.js.map +1 -1
  174. package/dist/cjs/bq-dropdown_2.cjs.entry.js +49 -19
  175. package/dist/cjs/bq-dropdown_2.cjs.entry.js.map +1 -1
  176. package/dist/cjs/bq-empty-state.cjs.entry.js +2 -2
  177. package/dist/cjs/bq-empty-state.cjs.entry.js.map +1 -1
  178. package/dist/cjs/bq-empty-state.entry.cjs.js.map +1 -1
  179. package/dist/cjs/bq-input.cjs.entry.js +2 -2
  180. package/dist/cjs/bq-input.cjs.entry.js.map +1 -1
  181. package/dist/cjs/bq-input.entry.cjs.js.map +1 -1
  182. package/dist/cjs/bq-notification.cjs.entry.js +2 -2
  183. package/dist/cjs/bq-notification.cjs.entry.js.map +1 -1
  184. package/dist/cjs/bq-notification.entry.cjs.js.map +1 -1
  185. package/dist/cjs/bq-option-group.cjs.entry.js +2 -2
  186. package/dist/cjs/bq-option-group.cjs.entry.js.map +1 -1
  187. package/dist/cjs/bq-option-group.entry.cjs.js.map +1 -1
  188. package/dist/cjs/bq-option-list.bq-tag.entry.cjs.js.map +1 -1
  189. package/dist/cjs/bq-option-list_2.cjs.entry.js +3 -3
  190. package/dist/cjs/bq-option-list_2.cjs.entry.js.map +1 -1
  191. package/dist/cjs/bq-option.cjs.entry.js +2 -2
  192. package/dist/cjs/bq-option.cjs.entry.js.map +1 -1
  193. package/dist/cjs/bq-option.entry.cjs.js.map +1 -1
  194. package/dist/cjs/bq-page-title.cjs.entry.js +2 -2
  195. package/dist/cjs/bq-page-title.cjs.entry.js.map +1 -1
  196. package/dist/cjs/bq-page-title.entry.cjs.js.map +1 -1
  197. package/dist/cjs/bq-progress.cjs.entry.js +2 -2
  198. package/dist/cjs/bq-progress.cjs.entry.js.map +1 -1
  199. package/dist/cjs/bq-progress.entry.cjs.js.map +1 -1
  200. package/dist/cjs/bq-radio-group.cjs.entry.js +2 -2
  201. package/dist/cjs/bq-radio-group.cjs.entry.js.map +1 -1
  202. package/dist/cjs/bq-radio-group.entry.cjs.js.map +1 -1
  203. package/dist/cjs/bq-radio.cjs.entry.js +2 -2
  204. package/dist/cjs/bq-radio.cjs.entry.js.map +1 -1
  205. package/dist/cjs/bq-radio.entry.cjs.js.map +1 -1
  206. package/dist/cjs/bq-select.cjs.entry.js +17 -6
  207. package/dist/cjs/bq-select.cjs.entry.js.map +1 -1
  208. package/dist/cjs/bq-select.entry.cjs.js.map +1 -1
  209. package/dist/cjs/bq-side-menu-item.cjs.entry.js +2 -2
  210. package/dist/cjs/bq-side-menu-item.cjs.entry.js.map +1 -1
  211. package/dist/cjs/bq-side-menu-item.entry.cjs.js.map +1 -1
  212. package/dist/cjs/bq-side-menu.cjs.entry.js +2 -2
  213. package/dist/cjs/bq-side-menu.cjs.entry.js.map +1 -1
  214. package/dist/cjs/bq-side-menu.entry.cjs.js.map +1 -1
  215. package/dist/cjs/bq-slider.cjs.entry.js +2 -2
  216. package/dist/cjs/bq-slider.cjs.entry.js.map +1 -1
  217. package/dist/cjs/bq-slider.entry.cjs.js.map +1 -1
  218. package/dist/cjs/bq-spinner.cjs.entry.js +2 -2
  219. package/dist/cjs/bq-spinner.cjs.entry.js.map +1 -1
  220. package/dist/cjs/bq-spinner.entry.cjs.js.map +1 -1
  221. package/dist/cjs/bq-status.cjs.entry.js +2 -2
  222. package/dist/cjs/bq-status.cjs.entry.js.map +1 -1
  223. package/dist/cjs/bq-status.entry.cjs.js.map +1 -1
  224. package/dist/cjs/bq-step-item.cjs.entry.js +2 -2
  225. package/dist/cjs/bq-step-item.cjs.entry.js.map +1 -1
  226. package/dist/cjs/bq-step-item.entry.cjs.js.map +1 -1
  227. package/dist/cjs/bq-steps.cjs.entry.js +2 -2
  228. package/dist/cjs/bq-steps.cjs.entry.js.map +1 -1
  229. package/dist/cjs/bq-steps.entry.cjs.js.map +1 -1
  230. package/dist/cjs/bq-switch.cjs.entry.js +2 -2
  231. package/dist/cjs/bq-switch.cjs.entry.js.map +1 -1
  232. package/dist/cjs/bq-switch.entry.cjs.js.map +1 -1
  233. package/dist/cjs/bq-tab-group.cjs.entry.js +2 -2
  234. package/dist/cjs/bq-tab-group.cjs.entry.js.map +1 -1
  235. package/dist/cjs/bq-tab-group.entry.cjs.js.map +1 -1
  236. package/dist/cjs/bq-tab.cjs.entry.js +2 -2
  237. package/dist/cjs/bq-tab.cjs.entry.js.map +1 -1
  238. package/dist/cjs/bq-tab.entry.cjs.js.map +1 -1
  239. package/dist/cjs/bq-textarea.cjs.entry.js +2 -2
  240. package/dist/cjs/bq-textarea.cjs.entry.js.map +1 -1
  241. package/dist/cjs/bq-textarea.entry.cjs.js.map +1 -1
  242. package/dist/cjs/bq-toast.cjs.entry.js +2 -2
  243. package/dist/cjs/bq-toast.cjs.entry.js.map +1 -1
  244. package/dist/cjs/bq-toast.entry.cjs.js.map +1 -1
  245. package/dist/cjs/bq-tooltip.cjs.entry.js +50 -27
  246. package/dist/cjs/bq-tooltip.cjs.entry.js.map +1 -1
  247. package/dist/cjs/bq-tooltip.entry.cjs.js.map +1 -1
  248. package/dist/cjs/{index-DkHCSxhS.js → index-bEOoX8tm.js} +70 -20
  249. package/dist/cjs/index-bEOoX8tm.js.map +1 -0
  250. package/dist/cjs/index.cjs.js +7 -0
  251. package/dist/cjs/index.cjs.js.map +1 -1
  252. package/dist/cjs/loader.cjs.js +3 -4
  253. package/dist/cjs/loader.cjs.js.map +1 -1
  254. package/dist/cjs/scrollLock-OTzU3x3y.js +110 -0
  255. package/dist/cjs/scrollLock-OTzU3x3y.js.map +1 -0
  256. package/dist/collection/collection-manifest.json +1 -1
  257. package/dist/collection/components/accordion/scss/bq-accordion.css +1 -1
  258. package/dist/collection/components/accordion-group/scss/bq-accordion-group.css +1 -1
  259. package/dist/collection/components/alert/scss/bq-alert.css +1 -1
  260. package/dist/collection/components/avatar/scss/bq-avatar.css +1 -1
  261. package/dist/collection/components/badge/scss/bq-badge.css +1 -1
  262. package/dist/collection/components/breadcrumb/scss/bq-breadcrumb.css +1 -1
  263. package/dist/collection/components/breadcrumb-item/scss/bq-breadcrumb-item.css +1 -1
  264. package/dist/collection/components/button/scss/bq-button.css +1 -1
  265. package/dist/collection/components/card/scss/bq-card.css +1 -1
  266. package/dist/collection/components/checkbox/scss/bq-checkbox.css +1 -1
  267. package/dist/collection/components/date-picker/scss/bq-date-picker.css +1 -1
  268. package/dist/collection/components/dialog/scss/bq-dialog.css +1 -1
  269. package/dist/collection/components/divider/scss/bq-divider.css +1 -1
  270. package/dist/collection/components/drawer/scss/bq-drawer.css +1 -1
  271. package/dist/collection/components/dropdown/bq-dropdown.js +49 -17
  272. package/dist/collection/components/dropdown/bq-dropdown.js.map +1 -1
  273. package/dist/collection/components/dropdown/scss/bq-dropdown.css +1 -1
  274. package/dist/collection/components/empty-state/scss/bq-empty-state.css +1 -1
  275. package/dist/collection/components/icon/scss/bq-icon.css +1 -1
  276. package/dist/collection/components/input/scss/bq-input.css +1 -1
  277. package/dist/collection/components/notification/scss/bq-notification.css +1 -1
  278. package/dist/collection/components/option/scss/bq-option.css +1 -1
  279. package/dist/collection/components/option-group/scss/bq-option-group.css +1 -1
  280. package/dist/collection/components/option-list/scss/bq-option-list.css +1 -1
  281. package/dist/collection/components/page-title/scss/bq-page-title.css +1 -1
  282. package/dist/collection/components/panel/bq-panel.js +44 -1
  283. package/dist/collection/components/panel/bq-panel.js.map +1 -1
  284. package/dist/collection/components/panel/scss/bq-panel.css +1 -1
  285. package/dist/collection/components/progress/scss/bq-progress.css +1 -1
  286. package/dist/collection/components/radio/scss/bq-radio.css +1 -1
  287. package/dist/collection/components/radio-group/scss/bq-radio-group.css +1 -1
  288. package/dist/collection/components/select/bq-select.js +43 -6
  289. package/dist/collection/components/select/bq-select.js.map +1 -1
  290. package/dist/collection/components/select/scss/bq-select.css +1 -1
  291. package/dist/collection/components/side-menu/scss/bq-side-menu.css +1 -1
  292. package/dist/collection/components/side-menu-item/scss/bq-side-menu-item.css +1 -1
  293. package/dist/collection/components/slider/scss/bq-slider.css +1 -1
  294. package/dist/collection/components/spinner/scss/bq-spinner.css +1 -1
  295. package/dist/collection/components/status/scss/bq-status.css +1 -1
  296. package/dist/collection/components/step-item/scss/bq-step-item.css +1 -1
  297. package/dist/collection/components/steps/scss/bq-steps.css +1 -1
  298. package/dist/collection/components/switch/scss/bq-switch.css +1 -1
  299. package/dist/collection/components/tab/scss/bq-tab.css +1 -1
  300. package/dist/collection/components/tab-group/scss/bq-tab-group.css +1 -1
  301. package/dist/collection/components/tag/scss/bq-tag.css +1 -1
  302. package/dist/collection/components/textarea/scss/bq-textarea.css +1 -1
  303. package/dist/collection/components/toast/scss/bq-toast.css +1 -1
  304. package/dist/collection/components/tooltip/bq-tooltip.js +60 -25
  305. package/dist/collection/components/tooltip/bq-tooltip.js.map +1 -1
  306. package/dist/collection/components/tooltip/scss/bq-tooltip.css +1 -1
  307. package/dist/collection/shared/utils/index.js +1 -0
  308. package/dist/collection/shared/utils/index.js.map +1 -1
  309. package/dist/collection/shared/utils/scrollLock.js +98 -0
  310. package/dist/collection/shared/utils/scrollLock.js.map +1 -0
  311. package/dist/components/bq-accordion-group.js +1 -1
  312. package/dist/components/bq-accordion-group.js.map +1 -1
  313. package/dist/components/bq-accordion.js +1 -1
  314. package/dist/components/bq-accordion.js.map +1 -1
  315. package/dist/components/bq-alert.js +1 -1
  316. package/dist/components/bq-alert.js.map +1 -1
  317. package/dist/components/bq-avatar.js +1 -1
  318. package/dist/components/bq-avatar.js.map +1 -1
  319. package/dist/components/bq-badge.js +1 -1
  320. package/dist/components/bq-breadcrumb-item.js +1 -1
  321. package/dist/components/bq-breadcrumb-item.js.map +1 -1
  322. package/dist/components/bq-breadcrumb.js +1 -1
  323. package/dist/components/bq-breadcrumb.js.map +1 -1
  324. package/dist/components/bq-button.js +1 -1
  325. package/dist/components/bq-card.js +1 -1
  326. package/dist/components/bq-card.js.map +1 -1
  327. package/dist/components/bq-checkbox.js +1 -1
  328. package/dist/components/bq-checkbox.js.map +1 -1
  329. package/dist/components/bq-date-picker.js +1 -1
  330. package/dist/components/bq-date-picker.js.map +1 -1
  331. package/dist/components/bq-dialog.js +1 -1
  332. package/dist/components/bq-dialog.js.map +1 -1
  333. package/dist/components/bq-divider.js +1 -1
  334. package/dist/components/bq-drawer.js +1 -1
  335. package/dist/components/bq-drawer.js.map +1 -1
  336. package/dist/components/bq-dropdown.js +1 -1
  337. package/dist/components/bq-empty-state.js +1 -1
  338. package/dist/components/bq-empty-state.js.map +1 -1
  339. package/dist/components/bq-icon.js +1 -1
  340. package/dist/components/bq-input.js +1 -1
  341. package/dist/components/bq-input.js.map +1 -1
  342. package/dist/components/bq-notification.js +1 -1
  343. package/dist/components/bq-notification.js.map +1 -1
  344. package/dist/components/bq-option-group.js +1 -1
  345. package/dist/components/bq-option-group.js.map +1 -1
  346. package/dist/components/bq-option-list.js +1 -1
  347. package/dist/components/bq-option.js +1 -1
  348. package/dist/components/bq-option.js.map +1 -1
  349. package/dist/components/bq-page-title.js +1 -1
  350. package/dist/components/bq-page-title.js.map +1 -1
  351. package/dist/components/bq-panel.js +1 -1
  352. package/dist/components/bq-progress.js +1 -1
  353. package/dist/components/bq-progress.js.map +1 -1
  354. package/dist/components/bq-radio-group.js +1 -1
  355. package/dist/components/bq-radio-group.js.map +1 -1
  356. package/dist/components/bq-radio.js +1 -1
  357. package/dist/components/bq-radio.js.map +1 -1
  358. package/dist/components/bq-select.js +1 -1
  359. package/dist/components/bq-select.js.map +1 -1
  360. package/dist/components/bq-side-menu-item.js +1 -1
  361. package/dist/components/bq-side-menu-item.js.map +1 -1
  362. package/dist/components/bq-side-menu.js +1 -1
  363. package/dist/components/bq-side-menu.js.map +1 -1
  364. package/dist/components/bq-slider.js +1 -1
  365. package/dist/components/bq-slider.js.map +1 -1
  366. package/dist/components/bq-spinner.js +1 -1
  367. package/dist/components/bq-spinner.js.map +1 -1
  368. package/dist/components/bq-status.js +1 -1
  369. package/dist/components/bq-status.js.map +1 -1
  370. package/dist/components/bq-step-item.js +1 -1
  371. package/dist/components/bq-step-item.js.map +1 -1
  372. package/dist/components/bq-steps.js +1 -1
  373. package/dist/components/bq-steps.js.map +1 -1
  374. package/dist/components/bq-switch.js +1 -1
  375. package/dist/components/bq-switch.js.map +1 -1
  376. package/dist/components/bq-tab-group.js +1 -1
  377. package/dist/components/bq-tab-group.js.map +1 -1
  378. package/dist/components/bq-tab.js +1 -1
  379. package/dist/components/bq-tab.js.map +1 -1
  380. package/dist/components/bq-tag.js +1 -1
  381. package/dist/components/bq-textarea.js +1 -1
  382. package/dist/components/bq-textarea.js.map +1 -1
  383. package/dist/components/bq-toast.js +1 -1
  384. package/dist/components/bq-toast.js.map +1 -1
  385. package/dist/components/bq-tooltip.js +1 -1
  386. package/dist/components/index.js +1 -1
  387. package/dist/components/index.js.map +1 -1
  388. package/dist/components/p-3sipvPdx.js +6 -0
  389. package/dist/components/{p-WHcChQx3.js.map → p-3sipvPdx.js.map} +1 -1
  390. package/dist/components/p-BV-P7QQT.js +6 -0
  391. package/dist/components/p-BV-P7QQT.js.map +1 -0
  392. package/dist/components/p-CBNE-LlA.js +6 -0
  393. package/dist/components/p-CBNE-LlA.js.map +1 -0
  394. package/dist/components/p-CJrRuo-b.js +6 -0
  395. package/dist/components/{p-DkbxITg_.js.map → p-CJrRuo-b.js.map} +1 -1
  396. package/dist/components/p-Cggonv2n.js +6 -0
  397. package/dist/components/{p-DBUH9nOd.js.map → p-Cggonv2n.js.map} +1 -1
  398. package/dist/components/p-CzunKNKG.js +6 -0
  399. package/dist/components/p-CzunKNKG.js.map +1 -0
  400. package/dist/components/p-DBkP6C_Q.js +6 -0
  401. package/dist/components/p-DBkP6C_Q.js.map +1 -0
  402. package/dist/components/p-DLp7W9zW.js +6 -0
  403. package/dist/components/{p-DWElqaGc.js.map → p-DLp7W9zW.js.map} +1 -1
  404. package/dist/components/p-NQu7tItb.js +6 -0
  405. package/dist/components/{p-vwcgzTkx.js.map → p-NQu7tItb.js.map} +1 -1
  406. package/dist/components/p-bqZ_kYEH.js +6 -0
  407. package/dist/components/{p-BzsDSFgf.js.map → p-bqZ_kYEH.js.map} +1 -1
  408. package/dist/custom-elements.json +1816 -1318
  409. package/dist/esm/beeq.js +4 -5
  410. package/dist/esm/beeq.js.map +1 -1
  411. package/dist/esm/bq-accordion-group.entry.js +2 -2
  412. package/dist/esm/bq-accordion-group.entry.js.map +1 -1
  413. package/dist/esm/bq-accordion.entry.js +2 -2
  414. package/dist/esm/bq-accordion.entry.js.map +1 -1
  415. package/dist/esm/bq-alert.entry.js +2 -2
  416. package/dist/esm/bq-alert.entry.js.map +1 -1
  417. package/dist/esm/bq-avatar.entry.js +2 -2
  418. package/dist/esm/bq-avatar.entry.js.map +1 -1
  419. package/dist/esm/bq-badge.entry.js +2 -2
  420. package/dist/esm/bq-badge.entry.js.map +1 -1
  421. package/dist/esm/bq-breadcrumb-item.entry.js +2 -2
  422. package/dist/esm/bq-breadcrumb-item.entry.js.map +1 -1
  423. package/dist/esm/bq-breadcrumb.entry.js +2 -2
  424. package/dist/esm/bq-breadcrumb.entry.js.map +1 -1
  425. package/dist/esm/bq-button.bq-icon.entry.js.map +1 -1
  426. package/dist/esm/bq-button_2.entry.js +3 -3
  427. package/dist/esm/bq-button_2.entry.js.map +1 -1
  428. package/dist/esm/bq-card.entry.js +2 -2
  429. package/dist/esm/bq-card.entry.js.map +1 -1
  430. package/dist/esm/bq-checkbox.entry.js +2 -2
  431. package/dist/esm/bq-checkbox.entry.js.map +1 -1
  432. package/dist/esm/bq-date-picker.entry.js +2 -2
  433. package/dist/esm/bq-date-picker.entry.js.map +1 -1
  434. package/dist/esm/bq-dialog.entry.js +2 -2
  435. package/dist/esm/bq-dialog.entry.js.map +1 -1
  436. package/dist/esm/bq-divider.entry.js +2 -2
  437. package/dist/esm/bq-divider.entry.js.map +1 -1
  438. package/dist/esm/bq-drawer.entry.js +2 -2
  439. package/dist/esm/bq-drawer.entry.js.map +1 -1
  440. package/dist/esm/bq-dropdown.bq-panel.entry.js.map +1 -1
  441. package/dist/esm/bq-dropdown_2.entry.js +47 -17
  442. package/dist/esm/bq-dropdown_2.entry.js.map +1 -1
  443. package/dist/esm/bq-empty-state.entry.js +2 -2
  444. package/dist/esm/bq-empty-state.entry.js.map +1 -1
  445. package/dist/esm/bq-input.entry.js +2 -2
  446. package/dist/esm/bq-input.entry.js.map +1 -1
  447. package/dist/esm/bq-notification.entry.js +2 -2
  448. package/dist/esm/bq-notification.entry.js.map +1 -1
  449. package/dist/esm/bq-option-group.entry.js +2 -2
  450. package/dist/esm/bq-option-group.entry.js.map +1 -1
  451. package/dist/esm/bq-option-list.bq-tag.entry.js.map +1 -1
  452. package/dist/esm/bq-option-list_2.entry.js +3 -3
  453. package/dist/esm/bq-option-list_2.entry.js.map +1 -1
  454. package/dist/esm/bq-option.entry.js +2 -2
  455. package/dist/esm/bq-option.entry.js.map +1 -1
  456. package/dist/esm/bq-page-title.entry.js +2 -2
  457. package/dist/esm/bq-page-title.entry.js.map +1 -1
  458. package/dist/esm/bq-progress.entry.js +2 -2
  459. package/dist/esm/bq-progress.entry.js.map +1 -1
  460. package/dist/esm/bq-radio-group.entry.js +2 -2
  461. package/dist/esm/bq-radio-group.entry.js.map +1 -1
  462. package/dist/esm/bq-radio.entry.js +2 -2
  463. package/dist/esm/bq-radio.entry.js.map +1 -1
  464. package/dist/esm/bq-select.entry.js +17 -6
  465. package/dist/esm/bq-select.entry.js.map +1 -1
  466. package/dist/esm/bq-side-menu-item.entry.js +2 -2
  467. package/dist/esm/bq-side-menu-item.entry.js.map +1 -1
  468. package/dist/esm/bq-side-menu.entry.js +2 -2
  469. package/dist/esm/bq-side-menu.entry.js.map +1 -1
  470. package/dist/esm/bq-slider.entry.js +2 -2
  471. package/dist/esm/bq-slider.entry.js.map +1 -1
  472. package/dist/esm/bq-spinner.entry.js +2 -2
  473. package/dist/esm/bq-spinner.entry.js.map +1 -1
  474. package/dist/esm/bq-status.entry.js +2 -2
  475. package/dist/esm/bq-status.entry.js.map +1 -1
  476. package/dist/esm/bq-step-item.entry.js +2 -2
  477. package/dist/esm/bq-step-item.entry.js.map +1 -1
  478. package/dist/esm/bq-steps.entry.js +2 -2
  479. package/dist/esm/bq-steps.entry.js.map +1 -1
  480. package/dist/esm/bq-switch.entry.js +2 -2
  481. package/dist/esm/bq-switch.entry.js.map +1 -1
  482. package/dist/esm/bq-tab-group.entry.js +2 -2
  483. package/dist/esm/bq-tab-group.entry.js.map +1 -1
  484. package/dist/esm/bq-tab.entry.js +2 -2
  485. package/dist/esm/bq-tab.entry.js.map +1 -1
  486. package/dist/esm/bq-textarea.entry.js +2 -2
  487. package/dist/esm/bq-textarea.entry.js.map +1 -1
  488. package/dist/esm/bq-toast.entry.js +2 -2
  489. package/dist/esm/bq-toast.entry.js.map +1 -1
  490. package/dist/esm/bq-tooltip.entry.js +50 -27
  491. package/dist/esm/bq-tooltip.entry.js.map +1 -1
  492. package/dist/esm/{index-DxsVp5np.js → index-e5zjNNdI.js} +51 -20
  493. package/dist/esm/index-e5zjNNdI.js.map +1 -0
  494. package/dist/esm/index.js +1 -0
  495. package/dist/esm/index.js.map +1 -1
  496. package/dist/esm/loader.js +3 -4
  497. package/dist/esm/loader.js.map +1 -1
  498. package/dist/esm/scrollLock-3vky8wTo.js +103 -0
  499. package/dist/esm/scrollLock-3vky8wTo.js.map +1 -0
  500. package/dist/hydrate/index.d.ts +26 -24
  501. package/dist/hydrate/index.js +289 -118
  502. package/dist/hydrate/index.mjs +289 -118
  503. package/dist/types/{home/runner/work/BEEQ/BEEQ → Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System}/.stencil/tailwind.config.d.ts +4 -1
  504. package/dist/types/components/dropdown/bq-dropdown.d.ts +4 -5
  505. package/dist/types/components/panel/bq-panel.d.ts +2 -0
  506. package/dist/types/components/select/bq-select.d.ts +3 -0
  507. package/dist/types/components/tooltip/bq-tooltip.d.ts +5 -1
  508. package/dist/types/components.d.ts +446 -0
  509. package/dist/types/shared/utils/index.d.ts +1 -0
  510. package/dist/types/shared/utils/scrollLock.d.ts +36 -0
  511. package/dist/types/stencil-public-runtime.d.ts +1 -1
  512. package/package.json +1 -1
  513. package/dist/beeq/p-00022fe8.entry.js +0 -6
  514. package/dist/beeq/p-0b25af76.entry.js +0 -6
  515. package/dist/beeq/p-0d137bf6.entry.js +0 -6
  516. package/dist/beeq/p-0d37b636.entry.js +0 -6
  517. package/dist/beeq/p-165744f3.entry.js +0 -6
  518. package/dist/beeq/p-217d6ad4.entry.js +0 -6
  519. package/dist/beeq/p-217d6ad4.entry.js.map +0 -1
  520. package/dist/beeq/p-29209d90.entry.js +0 -6
  521. package/dist/beeq/p-2bb8c586.entry.js +0 -6
  522. package/dist/beeq/p-2ca0624c.entry.js +0 -6
  523. package/dist/beeq/p-3df3af93.entry.js +0 -6
  524. package/dist/beeq/p-44c2a6b9.entry.js +0 -6
  525. package/dist/beeq/p-4f3809da.entry.js +0 -6
  526. package/dist/beeq/p-52ae6a62.entry.js +0 -6
  527. package/dist/beeq/p-52ae6a62.entry.js.map +0 -1
  528. package/dist/beeq/p-542eb8fa.entry.js +0 -6
  529. package/dist/beeq/p-58c37e96.entry.js +0 -6
  530. package/dist/beeq/p-5ea58411.entry.js +0 -6
  531. package/dist/beeq/p-8570c34a.entry.js +0 -6
  532. package/dist/beeq/p-90fd4b0c.entry.js +0 -6
  533. package/dist/beeq/p-999f9e20.entry.js +0 -6
  534. package/dist/beeq/p-BtYhUEAn.js +0 -6
  535. package/dist/beeq/p-BtYhUEAn.js.map +0 -1
  536. package/dist/beeq/p-DxsVp5np.js +0 -7
  537. package/dist/beeq/p-DxsVp5np.js.map +0 -1
  538. package/dist/beeq/p-a68fbc9a.entry.js +0 -6
  539. package/dist/beeq/p-a72768fd.entry.js +0 -6
  540. package/dist/beeq/p-a96ffa70.entry.js +0 -6
  541. package/dist/beeq/p-ab5ce46e.entry.js +0 -6
  542. package/dist/beeq/p-b07e39c4.entry.js +0 -6
  543. package/dist/beeq/p-b724504a.entry.js +0 -6
  544. package/dist/beeq/p-bee9cc2b.entry.js +0 -6
  545. package/dist/beeq/p-cab20c11.entry.js +0 -6
  546. package/dist/beeq/p-ccc302f0.entry.js +0 -6
  547. package/dist/beeq/p-cd4f1493.entry.js +0 -6
  548. package/dist/beeq/p-cfec306f.entry.js +0 -6
  549. package/dist/beeq/p-d153a008.entry.js +0 -6
  550. package/dist/beeq/p-d7564e29.entry.js +0 -6
  551. package/dist/beeq/p-da8596cf.entry.js +0 -6
  552. package/dist/beeq/p-e0257fb4.entry.js +0 -6
  553. package/dist/beeq/p-e29356c6.entry.js +0 -6
  554. package/dist/beeq/p-e5a52055.entry.js +0 -6
  555. package/dist/beeq/p-e5a52055.entry.js.map +0 -1
  556. package/dist/beeq/p-fd79697e.entry.js +0 -6
  557. package/dist/beeq/p-fea2b8c2.entry.js +0 -6
  558. package/dist/beeq/p-ffcc02f7.entry.js +0 -6
  559. package/dist/cjs/app-globals-BY_z0SzA.js +0 -12
  560. package/dist/cjs/app-globals-BY_z0SzA.js.map +0 -1
  561. package/dist/cjs/index-DkHCSxhS.js.map +0 -1
  562. package/dist/components/p-3yNfc1gW.js +0 -6
  563. package/dist/components/p-3yNfc1gW.js.map +0 -1
  564. package/dist/components/p-BzsDSFgf.js +0 -6
  565. package/dist/components/p-DBUH9nOd.js +0 -6
  566. package/dist/components/p-DFcM00d7.js +0 -6
  567. package/dist/components/p-DFcM00d7.js.map +0 -1
  568. package/dist/components/p-DWElqaGc.js +0 -6
  569. package/dist/components/p-DkbxITg_.js +0 -6
  570. package/dist/components/p-VAzCkxML.js +0 -6
  571. package/dist/components/p-VAzCkxML.js.map +0 -1
  572. package/dist/components/p-WHcChQx3.js +0 -6
  573. package/dist/components/p-iu8JIKCE.js +0 -6
  574. package/dist/components/p-iu8JIKCE.js.map +0 -1
  575. package/dist/components/p-vwcgzTkx.js +0 -6
  576. package/dist/esm/app-globals-BtYhUEAn.js +0 -10
  577. package/dist/esm/app-globals-BtYhUEAn.js.map +0 -1
  578. package/dist/esm/index-DxsVp5np.js.map +0 -1
  579. /package/dist/types/{home/runner/work/BEEQ/BEEQ → Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System}/.stencil/packages/beeq/jest.config.d.ts +0 -0
  580. /package/dist/types/{home/runner/work/BEEQ/BEEQ → Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System}/.stencil/packages/beeq/stencil.config.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"bq-alert.entry.esm.js","sources":["../../packages/beeq/src/components/alert/bq-alert.types.ts","../../packages/beeq/src/components/alert/scss/bq-alert.scss?tag=bq-alert&encapsulation=shadow","../../packages/beeq/src/components/alert/bq-alert.tsx"],"sourcesContent":["export const ALERT_TYPE = ['info', 'success', 'warning', 'error', 'default'] as const;\nexport type TAlertType = (typeof ALERT_TYPE)[number];\n\nexport const ALERT_BORDER_RADIUS = ['none', 'xs2', 'xs', 's', 'm', 'l', 'full'] as const;\nexport type TAlertBorderRadius = (typeof ALERT_BORDER_RADIUS)[number];\n","/* -------------------------------------------------------------------------- */\n/* Alert styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-alert.variables';\n\n:host {\n @apply block;\n}\n\n:host(.is-hidden) {\n @apply hidden;\n}\n\n:host(.is-sticky) {\n @apply fixed inset-0 z-[var(--bq-alert--z-index)] is-full inset-bs-0;\n\n .bq-alert {\n @apply items-center justify-center rounded-none;\n }\n}\n\n.bq-alert {\n @apply relative flex transition-all min-is-[--bq-alert--min-width] p-b-[--bq-alert--padding] p-i-[--bq-alert--padding];\n @apply rounded-[var(--bq-alert--border-radius)] border-[length:--bq-alert--border-width];\n\n border-style: var(--bq-alert--border-style);\n}\n\n/**\n * Set the alert background and border color based on the type value selected\n */\n\n.bq-alert__default {\n @apply border-[color:--bq-alert--border-default] bg-[color:--bq-alert--background-default];\n}\n\n.bq-alert__error {\n @apply border-[color:--bq-alert--border-error] bg-[color:--bq-alert--background-error];\n}\n\n.bq-alert__info {\n @apply border-[color:--bq-alert--border-info] bg-[color:--bq-alert--background-info];\n}\n\n.bq-alert__success {\n @apply border-[color:--bq-alert--border-success] bg-[color:--bq-alert--background-success];\n}\n\n.bq-alert__warning {\n @apply border-[color:--bq-alert--border-warning] bg-[color:--bq-alert--background-warning];\n}\n\n/**\n * Set the alert icon color based on the type value selected\n */\n.bq-alert__icon {\n &--default {\n @apply text-[color:--bq-alert--icon-color-default];\n }\n\n &--error {\n @apply text-[color:--bq-alert--icon-color-error];\n }\n\n &--info {\n @apply text-[color:--bq-alert--icon-color-info];\n }\n\n &--success {\n @apply text-[color:--bq-alert--icon-color-success];\n }\n\n &--warning {\n @apply text-[color:--bq-alert--icon-color-warning];\n }\n}\n\n/**\n * Tweak the close bq-button styles so it remain small without extra padding\n */\n.bq-alert__close::part(button) {\n @apply rounded-s border-0 bs-fit p-b-0 p-i-0;\n}\n","import { Component, Element, Event, h, Host, Method, Prop, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport { ALERT_TYPE } from './bq-alert.types';\nimport type { TAlertBorderRadius, TAlertType } from './bq-alert.types';\nimport { debounce, enter, hasSlotContent, leave, TDebounce, validatePropValue } from '../../shared/utils';\n\n/**\n * The Alert is a user interface component used to convey important information to the user in a clear and concise manner.\n * It can be used to notify users of success, failure, warning, or any other type of information that needs to be brought to their attention.\n *\n * @example How to use it\n * ```html\n * <bq-alert>\n * <bq-icon name=\"star\" slot=\"icon\"></bq-icon>\n * Title\n * <span slot=\"body\">\n * Description\n * <a class=\"bq-link\" href=\"https://example.com\">Link</a>\n * </span>\n * <div slot=\"footer\">\n * <bq-button appearance=\"primary\" size=\"small\">Button</bq-button>\n * <bq-button appearance=\"link\" size=\"small\">Button</bq-button>\n * </div>\n * </bq-alert>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/848a50-alert\n * @status stable\n *\n * @dependency bq-button\n * @dependency bq-icon\n *\n * @attr {boolean} [auto-dismiss=false] - If true, the alert will automatically hide after the specified amount of time\n * @attr {\"none\" | \"xs2\" | \"xs\" | \"s\" | \"m\" | \"l\" | \"full\"} [border='s'] - The corner radius of the alert component\n * @attr {boolean} [disable-close=false] - If true, the close button at the top right of the alert won't be shown\n * @attr {boolean} [hide-icon=false] - If true, the alert icon won't be shown\n * @attr {boolean} [open=false] - If true, the alert will be shown\n * @attr {number} [time=3000] - The length of time, in milliseconds, after which the alert will close itself. Only valid if `autoDismiss=\"true\"`\n * @attr {\"info\" | \"success\" | \"warning\" | \"error\" | \"default\"} [type='default'] - Type of Alert\n * @attr {boolean} [sticky=false] - If true, the alert component will remain fixed at the top of the page, occupying the full viewport\n *\n * @event bqHide - Callback handler to be called when the alert is hidden\n * @event bqShow - Callback handler to be called when the alert is shown\n * @event bqAfterShow - Callback handler to be called after the alert has been shown\n * @event bqAfterHide - Callback handler to be called after the alert has been hidden\n *\n * @slot - The alert title content (no slot name required)\n * @slot body - The alert description content\n * @slot footer - The alert footer content\n * @slot icon - The predefined icon based on the alert type (info, success, warning, error, default)\n * @slot btn-close - The close button of the alert\n *\n * @part base - The `<div>` container of the predefined bq-icon component\n * @part body - The container `<div>` that wraps the alert description content\n * @part btn-close - The `bq-button` used to close the alert\n * @part content - The container `<div>` that wraps all the alert content (title, description, footer)\n * @part footer - The container `<div>` that wraps the alert footer content\n * @part icon - The `<bq-icon>` element used to render a predefined icon based on the alert type (info, success, warning, error, default)\n * @part icon-outline - The container `<div>` that wraps the icon element\n * @part main - The container `<div>` that wraps the alert main content (title, description)\n * @part svg - The `<svg>` element of the predefined bq-icon component\n * @part title - The container `<div>` that wraps the alert title content\n * @part wrapper - The wrapper container `<div>` of the element inside the shadow DOM\n *\n * @cssprop --bq-alert--background - The alert background color\n * @cssprop --bq-alert--border-radius - The alert border radius\n * @cssprop --bq-alert--content-footer-gap - The alert content and footer gap\n * @cssprop --bq-alert--title-body-gap - The alert title and body gap\n *\n * @cssprop --bq-alert--border-color - The alert border color\n * @cssprop --bq-alert--border-style - The alert border style\n * @cssprop --bq-alert--border-width - The alert border width\n *\n * @cssprop --bq-alert--background-info - The alert background color for info type\n * @cssprop --bq-alert--background-success - The alert background color for success type\n * @cssprop --bq-alert--background-warning - The alert background color for warning type\n * @cssprop --bq-alert--background-error - The alert background color for error type\n *\n * @cssprop --bq-alert--border-info - The alert border color for info type\n * @cssprop --bq-alert--border-success - The alert border color for success type\n * @cssprop --bq-alert--border-warning - The alert border color for warning type\n * @cssprop --bq-alert--border-error - The alert border color for error type\n *\n * @cssprop --bq-alert--icon-color-info - The alert icon color for info type\n * @cssprop --bq-alert--icon-color-success - The alert icon color for success type\n * @cssprop --bq-alert--icon-color-warning - The alert icon color for warning type\n * @cssprop --bq-alert--icon-color-error - The alert icon color for error type\n *\n * @cssprop --bq-alert--padding - The alert padding\n * @cssprop --bq-alert--min-width - The alert min width\n */\n@Component({\n tag: 'bq-alert',\n styleUrl: './scss/bq-alert.scss',\n shadow: true,\n})\nexport class BqAlert {\n // Own Properties\n // ====================\n\n private autoDismissDebounce: TDebounce<void>;\n private bodyElem: HTMLDivElement;\n private footerElem: HTMLDivElement;\n private alertElement: HTMLDivElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqAlertElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasContent = false;\n @State() private hasFooter = false;\n\n // Public Property API\n // ========================\n\n /** If true, the alert will automatically hide after the specified amount of time */\n @Prop({ reflect: true }) autoDismiss: boolean;\n\n /** The corner radius of the alert component */\n @Prop({ reflect: true }) border: TAlertBorderRadius = 's';\n\n /** If true, the close button at the top right of the alert won't be shown */\n @Prop({ reflect: true }) disableClose: boolean;\n\n /** If true, the alert icon won't be shown */\n @Prop({ reflect: true }) hideIcon: boolean;\n\n /** If true, the alert will be shown */\n @Prop({ reflect: true, mutable: true }) open: boolean;\n\n /** The length of time, in milliseconds, after which the alert will close itself. Only valid if `autoDismiss=\"true\"` */\n @Prop({ reflect: true }) time: number = 3000;\n\n /** Type of Alert */\n @Prop({ reflect: true }) type: TAlertType = 'default';\n\n /** If true, the alert component will remain fixed at the top of the page, occupying the full viewport */\n @Prop({ reflect: true }) sticky: boolean;\n\n // Prop lifecycle events\n // =======================\n @Watch('autoDismiss')\n @Watch('time')\n handleTimeout() {\n this.autoDismissDebounce?.cancel();\n if (!this.autoDismiss) return;\n\n this.autoDismissDebounce = debounce(() => {\n this.hide();\n }, this.time);\n // Make sure to autodismiss the notification if the `auto-dismiss` value changed while open\n if (this.open) this.autoDismissDebounce();\n }\n\n @Watch('open')\n handleOpenChange() {\n this.autoDismissDebounce?.cancel();\n\n if (!this.open) {\n this.handleHide();\n return;\n }\n\n this.handleShow();\n\n if (this.autoDismiss) {\n this.autoDismissDebounce();\n }\n }\n\n @Watch('type')\n checkPropValues() {\n validatePropValue(ALERT_TYPE, 'info', this.el, 'type');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler to be called when the alert is hidden */\n @Event() bqHide!: EventEmitter;\n\n /** Callback handler to be called when the alert is shown */\n @Event() bqShow!: EventEmitter;\n\n /** Callback handler to be called after the alert has been shown */\n @Event() bqAfterShow!: EventEmitter;\n\n /** Callback handler to be called after the alert has been hidden */\n @Event() bqAfterHide!: EventEmitter;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.checkPropValues();\n this.handleTimeout();\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n\n if (!this.open) {\n this.el.classList.add('is-hidden');\n }\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n /** Method to be called to hide the alert component */\n @Method()\n async hide(): Promise<void> {\n this.open = false;\n }\n\n /** Method to be called to show the alert component */\n @Method()\n async show(): Promise<void> {\n this.open = true;\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleHide = async () => {\n const ev = this.bqHide.emit(this.el);\n if (!ev.defaultPrevented) {\n await leave(this.alertElement);\n this.el.classList.add('is-hidden');\n this.handleTransitionEnd();\n }\n };\n\n private handleShow = async () => {\n const ev = this.bqShow.emit(this.el);\n if (!ev.defaultPrevented) {\n this.el.classList.remove('is-hidden');\n await enter(this.alertElement);\n this.handleTransitionEnd();\n }\n };\n\n private handleTransitionEnd = () => {\n if (this.open) {\n this.bqAfterShow.emit();\n return;\n }\n\n this.bqAfterHide.emit();\n };\n\n private handleSlotChange = () => {\n this.hasContent = hasSlotContent(this.bodyElem, 'body');\n this.hasFooter = hasSlotContent(this.footerElem, 'footer');\n };\n\n private get iconName(): string {\n const iconName = {\n error: 'x-circle',\n success: 'check-circle',\n warning: 'warning-circle',\n };\n\n return iconName[this.type] || 'info';\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const style = {\n ...(this.border && { '--bq-alert--border-radius': `var(--bq-radius--${this.border})` }),\n };\n\n return (\n <Host\n style={style}\n class={{ 'is-sticky': this.sticky }}\n aria-hidden={!this.open ? 'true' : 'false'}\n hidden={!this.open ? 'true' : 'false'}\n role=\"alert\"\n >\n <div\n class={{\n [`bq-alert bq-alert__${this.type}`]: true,\n 'is-sticky': this.sticky,\n }}\n data-transition-enter=\"transition ease-out duration-300\"\n data-transition-enter-start=\"opacity-0\"\n data-transition-enter-end=\"opacity-100\"\n data-transition-leave=\"transition ease-in duration-200\"\n data-transition-leave-start=\"opacity-100\"\n data-transition-leave-end=\"opacity-0\"\n ref={(div) => (this.alertElement = div)}\n part=\"wrapper\"\n >\n {/* CLOSE BUTTON */}\n {!this.disableClose && (\n <bq-button\n class=\"bq-alert__close absolute end-5 focus-visible:focus [&::part(label)]:inline-flex\"\n appearance=\"text\"\n size=\"small\"\n onClick={this.hide.bind(this)}\n part=\"btn-close\"\n >\n <slot name=\"btn-close\">\n <bq-icon name=\"x\" />\n </slot>\n </bq-button>\n )}\n {/* ICON */}\n <div\n class={{\n [`bq-alert__icon--${this.type} me-s flex text-left align-top`]: true,\n '!hidden': this.hideIcon,\n }}\n part=\"icon-outline\"\n >\n <slot name=\"icon\">\n {this.type !== 'default' && <bq-icon name={this.iconName} part=\"icon\" exportparts=\"base,svg\" />}\n </slot>\n </div>\n {/* MAIN */}\n <div class=\"flex flex-col items-start gap-[--bq-alert--content-footer-gap]\" part=\"main\">\n <div class=\"flex flex-col gap-[--bq-alert--title-body-gap]\" part=\"content\">\n {/* TITLE */}\n <div\n class={{\n 'title-font font-semibold leading-regular text-primary': true,\n 'flex items-center': this.sticky,\n }}\n part=\"title\"\n >\n <slot />\n </div>\n {/* BODY */}\n <div\n class={{ 'text-s leading-regular': true, '!hidden': !this.hasContent }}\n ref={(div) => (this.bodyElem = div)}\n part=\"body\"\n >\n <slot name=\"body\" onSlotchange={this.handleSlotChange} />\n </div>\n </div>\n {/* FOOTER */}\n <div\n class={{ 'flex items-start gap-xs': true, '!hidden': !this.hasFooter }}\n ref={(div) => (this.footerElem = div)}\n part=\"footer\"\n >\n <slot name=\"footer\" onSlotchange={this.handleSlotChange} />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bq-alert.entry.esm.js","sources":["../../packages/beeq/src/components/alert/bq-alert.types.ts","../../packages/beeq/src/components/alert/scss/bq-alert.scss?tag=bq-alert&encapsulation=shadow","../../packages/beeq/src/components/alert/bq-alert.tsx"],"sourcesContent":["export const ALERT_TYPE = ['info', 'success', 'warning', 'error', 'default'] as const;\nexport type TAlertType = (typeof ALERT_TYPE)[number];\n\nexport const ALERT_BORDER_RADIUS = ['none', 'xs2', 'xs', 's', 'm', 'l', 'full'] as const;\nexport type TAlertBorderRadius = (typeof ALERT_BORDER_RADIUS)[number];\n","/* -------------------------------------------------------------------------- */\n/* Alert styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-alert.variables';\n\n:host {\n @apply block;\n}\n\n:host(.is-hidden) {\n @apply hidden;\n}\n\n:host(.is-sticky) {\n @apply fixed inset-0 z-[var(--bq-alert--z-index)] is-full inset-bs-0;\n\n .bq-alert {\n @apply items-center justify-center rounded-none;\n }\n}\n\n.bq-alert {\n @apply relative flex transition-all min-is-[--bq-alert--min-width] p-b-[--bq-alert--padding] p-i-[--bq-alert--padding];\n @apply rounded-[var(--bq-alert--border-radius)] border-[length:--bq-alert--border-width];\n\n border-style: var(--bq-alert--border-style);\n}\n\n/**\n * Set the alert background and border color based on the type value selected\n */\n\n.bq-alert__default {\n @apply border-[color:--bq-alert--border-default] bg-[color:--bq-alert--background-default];\n}\n\n.bq-alert__error {\n @apply border-[color:--bq-alert--border-error] bg-[color:--bq-alert--background-error];\n}\n\n.bq-alert__info {\n @apply border-[color:--bq-alert--border-info] bg-[color:--bq-alert--background-info];\n}\n\n.bq-alert__success {\n @apply border-[color:--bq-alert--border-success] bg-[color:--bq-alert--background-success];\n}\n\n.bq-alert__warning {\n @apply border-[color:--bq-alert--border-warning] bg-[color:--bq-alert--background-warning];\n}\n\n/**\n * Set the alert icon color based on the type value selected\n */\n.bq-alert__icon {\n &--default {\n @apply text-[color:--bq-alert--icon-color-default];\n }\n\n &--error {\n @apply text-[color:--bq-alert--icon-color-error];\n }\n\n &--info {\n @apply text-[color:--bq-alert--icon-color-info];\n }\n\n &--success {\n @apply text-[color:--bq-alert--icon-color-success];\n }\n\n &--warning {\n @apply text-[color:--bq-alert--icon-color-warning];\n }\n}\n\n/**\n * Tweak the close bq-button styles so it remain small without extra padding\n */\n.bq-alert__close::part(button) {\n @apply rounded-s border-0 bs-fit p-b-0 p-i-0;\n}\n","import { Component, Element, Event, h, Host, Method, Prop, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport { ALERT_TYPE } from './bq-alert.types';\nimport type { TAlertBorderRadius, TAlertType } from './bq-alert.types';\nimport { debounce, enter, hasSlotContent, leave, TDebounce, validatePropValue } from '../../shared/utils';\n\n/**\n * The Alert is a user interface component used to convey important information to the user in a clear and concise manner.\n * It can be used to notify users of success, failure, warning, or any other type of information that needs to be brought to their attention.\n *\n * @example How to use it\n * ```html\n * <bq-alert>\n * <bq-icon name=\"star\" slot=\"icon\"></bq-icon>\n * Title\n * <span slot=\"body\">\n * Description\n * <a class=\"bq-link\" href=\"https://example.com\">Link</a>\n * </span>\n * <div slot=\"footer\">\n * <bq-button appearance=\"primary\" size=\"small\">Button</bq-button>\n * <bq-button appearance=\"link\" size=\"small\">Button</bq-button>\n * </div>\n * </bq-alert>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/848a50-alert\n * @status stable\n *\n * @dependency bq-button\n * @dependency bq-icon\n *\n * @attr {boolean} [auto-dismiss=false] - If true, the alert will automatically hide after the specified amount of time\n * @attr {\"none\" | \"xs2\" | \"xs\" | \"s\" | \"m\" | \"l\" | \"full\"} [border='s'] - The corner radius of the alert component\n * @attr {boolean} [disable-close=false] - If true, the close button at the top right of the alert won't be shown\n * @attr {boolean} [hide-icon=false] - If true, the alert icon won't be shown\n * @attr {boolean} [open=false] - If true, the alert will be shown\n * @attr {number} [time=3000] - The length of time, in milliseconds, after which the alert will close itself. Only valid if `autoDismiss=\"true\"`\n * @attr {\"info\" | \"success\" | \"warning\" | \"error\" | \"default\"} [type='default'] - Type of Alert\n * @attr {boolean} [sticky=false] - If true, the alert component will remain fixed at the top of the page, occupying the full viewport\n *\n * @event bqHide - Callback handler to be called when the alert is hidden\n * @event bqShow - Callback handler to be called when the alert is shown\n * @event bqAfterShow - Callback handler to be called after the alert has been shown\n * @event bqAfterHide - Callback handler to be called after the alert has been hidden\n *\n * @slot - The alert title content (no slot name required)\n * @slot body - The alert description content\n * @slot footer - The alert footer content\n * @slot icon - The predefined icon based on the alert type (info, success, warning, error, default)\n * @slot btn-close - The close button of the alert\n *\n * @part base - The `<div>` container of the predefined bq-icon component\n * @part body - The container `<div>` that wraps the alert description content\n * @part btn-close - The `bq-button` used to close the alert\n * @part content - The container `<div>` that wraps all the alert content (title, description, footer)\n * @part footer - The container `<div>` that wraps the alert footer content\n * @part icon - The `<bq-icon>` element used to render a predefined icon based on the alert type (info, success, warning, error, default)\n * @part icon-outline - The container `<div>` that wraps the icon element\n * @part main - The container `<div>` that wraps the alert main content (title, description)\n * @part svg - The `<svg>` element of the predefined bq-icon component\n * @part title - The container `<div>` that wraps the alert title content\n * @part wrapper - The wrapper container `<div>` of the element inside the shadow DOM\n *\n * @cssprop --bq-alert--background - The alert background color\n * @cssprop --bq-alert--border-radius - The alert border radius\n * @cssprop --bq-alert--content-footer-gap - The alert content and footer gap\n * @cssprop --bq-alert--title-body-gap - The alert title and body gap\n *\n * @cssprop --bq-alert--border-color - The alert border color\n * @cssprop --bq-alert--border-style - The alert border style\n * @cssprop --bq-alert--border-width - The alert border width\n *\n * @cssprop --bq-alert--background-info - The alert background color for info type\n * @cssprop --bq-alert--background-success - The alert background color for success type\n * @cssprop --bq-alert--background-warning - The alert background color for warning type\n * @cssprop --bq-alert--background-error - The alert background color for error type\n *\n * @cssprop --bq-alert--border-info - The alert border color for info type\n * @cssprop --bq-alert--border-success - The alert border color for success type\n * @cssprop --bq-alert--border-warning - The alert border color for warning type\n * @cssprop --bq-alert--border-error - The alert border color for error type\n *\n * @cssprop --bq-alert--icon-color-info - The alert icon color for info type\n * @cssprop --bq-alert--icon-color-success - The alert icon color for success type\n * @cssprop --bq-alert--icon-color-warning - The alert icon color for warning type\n * @cssprop --bq-alert--icon-color-error - The alert icon color for error type\n *\n * @cssprop --bq-alert--padding - The alert padding\n * @cssprop --bq-alert--min-width - The alert min width\n */\n@Component({\n tag: 'bq-alert',\n styleUrl: './scss/bq-alert.scss',\n shadow: true,\n})\nexport class BqAlert {\n // Own Properties\n // ====================\n\n private autoDismissDebounce: TDebounce<void>;\n private bodyElem: HTMLDivElement;\n private footerElem: HTMLDivElement;\n private alertElement: HTMLDivElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqAlertElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasContent = false;\n @State() private hasFooter = false;\n\n // Public Property API\n // ========================\n\n /** If true, the alert will automatically hide after the specified amount of time */\n @Prop({ reflect: true }) autoDismiss: boolean;\n\n /** The corner radius of the alert component */\n @Prop({ reflect: true }) border: TAlertBorderRadius = 's';\n\n /** If true, the close button at the top right of the alert won't be shown */\n @Prop({ reflect: true }) disableClose: boolean;\n\n /** If true, the alert icon won't be shown */\n @Prop({ reflect: true }) hideIcon: boolean;\n\n /** If true, the alert will be shown */\n @Prop({ reflect: true, mutable: true }) open: boolean;\n\n /** The length of time, in milliseconds, after which the alert will close itself. Only valid if `autoDismiss=\"true\"` */\n @Prop({ reflect: true }) time: number = 3000;\n\n /** Type of Alert */\n @Prop({ reflect: true }) type: TAlertType = 'default';\n\n /** If true, the alert component will remain fixed at the top of the page, occupying the full viewport */\n @Prop({ reflect: true }) sticky: boolean;\n\n // Prop lifecycle events\n // =======================\n @Watch('autoDismiss')\n @Watch('time')\n handleTimeout() {\n this.autoDismissDebounce?.cancel();\n if (!this.autoDismiss) return;\n\n this.autoDismissDebounce = debounce(() => {\n this.hide();\n }, this.time);\n // Make sure to autodismiss the notification if the `auto-dismiss` value changed while open\n if (this.open) this.autoDismissDebounce();\n }\n\n @Watch('open')\n handleOpenChange() {\n this.autoDismissDebounce?.cancel();\n\n if (!this.open) {\n this.handleHide();\n return;\n }\n\n this.handleShow();\n\n if (this.autoDismiss) {\n this.autoDismissDebounce();\n }\n }\n\n @Watch('type')\n checkPropValues() {\n validatePropValue(ALERT_TYPE, 'info', this.el, 'type');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler to be called when the alert is hidden */\n @Event() bqHide!: EventEmitter;\n\n /** Callback handler to be called when the alert is shown */\n @Event() bqShow!: EventEmitter;\n\n /** Callback handler to be called after the alert has been shown */\n @Event() bqAfterShow!: EventEmitter;\n\n /** Callback handler to be called after the alert has been hidden */\n @Event() bqAfterHide!: EventEmitter;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.checkPropValues();\n this.handleTimeout();\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n\n if (!this.open) {\n this.el.classList.add('is-hidden');\n }\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n /** Method to be called to hide the alert component */\n @Method()\n async hide(): Promise<void> {\n this.open = false;\n }\n\n /** Method to be called to show the alert component */\n @Method()\n async show(): Promise<void> {\n this.open = true;\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleHide = async () => {\n const ev = this.bqHide.emit(this.el);\n if (!ev.defaultPrevented) {\n await leave(this.alertElement);\n this.el.classList.add('is-hidden');\n this.handleTransitionEnd();\n }\n };\n\n private handleShow = async () => {\n const ev = this.bqShow.emit(this.el);\n if (!ev.defaultPrevented) {\n this.el.classList.remove('is-hidden');\n await enter(this.alertElement);\n this.handleTransitionEnd();\n }\n };\n\n private handleTransitionEnd = () => {\n if (this.open) {\n this.bqAfterShow.emit();\n return;\n }\n\n this.bqAfterHide.emit();\n };\n\n private handleSlotChange = () => {\n this.hasContent = hasSlotContent(this.bodyElem, 'body');\n this.hasFooter = hasSlotContent(this.footerElem, 'footer');\n };\n\n private get iconName(): string {\n const iconName = {\n error: 'x-circle',\n success: 'check-circle',\n warning: 'warning-circle',\n };\n\n return iconName[this.type] || 'info';\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const style = {\n ...(this.border && { '--bq-alert--border-radius': `var(--bq-radius--${this.border})` }),\n };\n\n return (\n <Host\n style={style}\n class={{ 'is-sticky': this.sticky }}\n aria-hidden={!this.open ? 'true' : 'false'}\n hidden={!this.open ? 'true' : 'false'}\n role=\"alert\"\n >\n <div\n class={{\n [`bq-alert bq-alert__${this.type}`]: true,\n 'is-sticky': this.sticky,\n }}\n data-transition-enter=\"transition ease-out duration-300\"\n data-transition-enter-start=\"opacity-0\"\n data-transition-enter-end=\"opacity-100\"\n data-transition-leave=\"transition ease-in duration-200\"\n data-transition-leave-start=\"opacity-100\"\n data-transition-leave-end=\"opacity-0\"\n ref={(div) => (this.alertElement = div)}\n part=\"wrapper\"\n >\n {/* CLOSE BUTTON */}\n {!this.disableClose && (\n <bq-button\n class=\"bq-alert__close absolute end-5 focus-visible:focus [&::part(label)]:inline-flex\"\n appearance=\"text\"\n size=\"small\"\n onClick={this.hide.bind(this)}\n part=\"btn-close\"\n >\n <slot name=\"btn-close\">\n <bq-icon name=\"x\" />\n </slot>\n </bq-button>\n )}\n {/* ICON */}\n <div\n class={{\n [`bq-alert__icon--${this.type} me-s flex text-left align-top`]: true,\n '!hidden': this.hideIcon,\n }}\n part=\"icon-outline\"\n >\n <slot name=\"icon\">\n {this.type !== 'default' && <bq-icon name={this.iconName} part=\"icon\" exportparts=\"base,svg\" />}\n </slot>\n </div>\n {/* MAIN */}\n <div class=\"flex flex-col items-start gap-[--bq-alert--content-footer-gap]\" part=\"main\">\n <div class=\"flex flex-col gap-[--bq-alert--title-body-gap]\" part=\"content\">\n {/* TITLE */}\n <div\n class={{\n 'title-font font-semibold leading-regular text-primary': true,\n 'flex items-center': this.sticky,\n }}\n part=\"title\"\n >\n <slot />\n </div>\n {/* BODY */}\n <div\n class={{ 'text-s leading-regular': true, '!hidden': !this.hasContent }}\n ref={(div) => (this.bodyElem = div)}\n part=\"body\"\n >\n <slot name=\"body\" onSlotchange={this.handleSlotChange} />\n </div>\n </div>\n {/* FOOTER */}\n <div\n class={{ 'flex items-start gap-xs': true, '!hidden': !this.hasFooter }}\n ref={(div) => (this.footerElem = div)}\n part=\"footer\"\n >\n <slot name=\"footer\" onSlotchange={this.handleSlotChange} />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bq-avatar.entry.esm.js","sources":["../../packages/beeq/src/components/avatar/bq-avatar.types.ts","../../packages/beeq/src/components/avatar/scss/bq-avatar.scss?tag=bq-avatar&encapsulation=shadow","../../packages/beeq/src/components/avatar/bq-avatar.tsx"],"sourcesContent":["export const AVATAR_SIZE = ['xsmall', 'small', 'medium', 'large'] as const;\nexport type TAvatarSize = (typeof AVATAR_SIZE)[number];\n\nexport const AVATAR_SHAPE = ['circle', 'square'] as const;\nexport type TAvatarShape = (typeof AVATAR_SHAPE)[number];\n","/* -------------------------------------------------------------------------- */\n/* Avatar styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-avatar.variables';\n\n:host {\n @apply relative inline-block;\n}\n\n.bq-avatar {\n @apply relative overflow-hidden bg-[var(--bq-avatar-background)];\n @apply border-[length:var(--bq-avatar--border-width)] border-[color:var(--bq-avatar--border-color)];\n\n border-style: var(--bq-avatar--border-style);\n}\n\n.size {\n &--xsmall {\n @apply text-[length:var(--bq-avatar--font-size-xsmall)] bs-[--bq-avatar--size-xsmall] is-[--bq-avatar--size-xsmall];\n }\n\n &--small {\n @apply text-[length:var(--bq-avatar--font-size-small)] bs-[--bq-avatar--size-small] is-[--bq-avatar--size-small];\n }\n\n &--medium {\n @apply text-[length:var(--bq-avatar--font-size-medium)] bs-[--bq-avatar--size-medium] is-[--bq-avatar--size-medium];\n }\n\n &--large {\n @apply text-[length:var(--bq-avatar--font-size-large)] bs-[--bq-avatar--size-large] is-[--bq-avatar--size-large];\n }\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport { AVATAR_SHAPE, AVATAR_SIZE } from './bq-avatar.types';\nimport type { TAvatarShape, TAvatarSize } from './bq-avatar.types';\nimport { validatePropValue } from '../../shared/utils';\n\n/**\n * The Avatar component is a simple and customizable element that displays an image or initials in a circular or square shape.\n * This component is useful for displaying user profile pictures or any other image that represents a person or an entity.\n *\n * @example How to use it\n * ```html\n * <bq-avatar\n * alt-text=\"John Doe profile picture\"\n * image=\"/image/url/photo-1524593689594.jpeg\"\n * label=\"John Doe profile picture\"\n * shape=\"circle\"\n * size=\"medium\"\n * >\n * <bq-badge slot=\"badge\" text-color=\"#fff\">9</bq-badge>\n * </bq-avatar>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/148da7-avatar\n * @status stable\n *\n * @attr {string} alt-text - Alternate text for the avatar image if the image cannot be displayed.\n * @attr {string} image - The image source to load on the avatar (this can be also a base64 encoded image).\n * @attr {string} label - A text to use for describing the avatar on assistive devices.\n * @attr {string} initials - The text to display on avatar.\n * @attr {\"circle\" | \"square\"} shape - The shape of the avatar.\n * @attr {\"xsmall\" | \"small\" | \"medium\" | \"large\"} size - The size of the avatar.\n *\n * @slot badge - The badge slot is used to add a badge to the avatar. The badge is a small circle or square that can be used to display a number or a status.\n *\n * @part base - The component's internal wrapper.\n * @part img - The `<image>` tag element that load the image source.\n * @part text - The `<span>` tag element that rendered the `Initials` text string.\n * @part badge - The container that wraps the badge slot element.\n *\n * @cssprop --bq-avatar--background - Avatar background color\n *\n * @cssprop --bq-avatar--border-color - Avatar border color\n * @cssprop --bq-avatar--border-style - Avatar border style\n * @cssprop --bq-avatar--border-width - Avatar border width\n *\n * @cssprop --bq-avatar--border-radius-circle - Avatar border radius for circle & any size\n * @cssprop --bq-avatar--border-radius-squareXs - Avatar border radius for square & size xsmall\n * @cssprop --bq-avatar--border-radius-squareS - Avatar border radius for square & size small\n * @cssprop --bq-avatar--border-radius-squareM - Avatar border radius for square & size medium/large\n *\n * @cssprop --bq-avatar--size-xsmall - Avatar xsmall size\n * @cssprop --bq-avatar--size-small - Avatar small size\n * @cssprop --bq-avatar--size-medium - Avatar medium size\n * @cssprop --bq-avatar--size-large - Avatar large size\n *\n * @cssprop --bq-avatar--badge-top-square - Badge top position shape square\n * @cssprop --bq-avatar--badge-left-square - Badge left position shape square\n * @cssprop --bq-avatar--badge-top-circle - Badge top position shape circle\n * @cssprop --bq-avatar--badge-left-circle - Badge left position shape circle\n */\n@Component({\n tag: 'bq-avatar',\n styleUrl: './scss/bq-avatar.scss',\n shadow: true,\n})\nexport class BqAvatar {\n // Own Properties\n // ====================\n\n trimmedInitials: string;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqAvatarElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() hasError: boolean;\n\n // Public Property API\n // ========================\n\n /** Alternate text for the avatar image if the image cannot be displayed */\n @Prop({ reflect: true }) altText: string;\n\n /** The image source to load on the avatar (this can be also a base64 encoded image) */\n @Prop({ reflect: true }) image: string;\n\n /** A text to use for describing the avatar on assistive devices */\n @Prop({ reflect: true }) label: string;\n\n /** The text to display on avatar */\n @Prop({ reflect: true }) initials: string;\n\n /** The shape of the avatar */\n @Prop({ reflect: true }) shape: TAvatarShape = 'circle';\n\n /** The size of the avatar */\n @Prop({ reflect: true, mutable: true }) size: TAvatarSize = 'medium';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('image')\n handleImagePropChange() {\n // Reset the error when a new image source is provided\n this.hasError = false;\n }\n\n @Watch('shape')\n @Watch('size')\n checkPropValues() {\n validatePropValue(AVATAR_SHAPE, 'circle', this.el, 'shape');\n validatePropValue(AVATAR_SIZE, 'medium', this.el, 'size');\n }\n\n @Watch('initials')\n @Watch('size')\n onInitialsChange() {\n this.trimInitialsBasedOnSize();\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.trimInitialsBasedOnSize();\n this.checkPropValues();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private onImageError = () => {\n this.hasError = true;\n };\n\n private trimInitialsBasedOnSize = (): void => {\n if (!this.initials) return;\n\n AVATAR_SIZE.forEach((size: TAvatarSize) => {\n if (this.size === size) {\n this.trimmedInitials = this.initials.substring(0, this.getIndex(size));\n }\n });\n };\n\n private getIndex = (size: TAvatarSize): number => {\n const sizeIndexMap = {\n xsmall: 1,\n small: 2,\n medium: 3,\n large: 4,\n };\n return sizeIndexMap[size] ?? sizeIndexMap.xsmall;\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'bq-avatar': true,\n [`size--${this.size}`]: true,\n 'rounded-[--bq-avatar--border-radius-circle]': this.shape === 'circle',\n 'rounded-[--bq-avatar--border-radius-squareXs]': this.shape === 'square' && this.size === 'xsmall',\n 'rounded-[--bq-avatar--border-radius-squareS]': this.shape === 'square' && this.size === 'small',\n 'rounded-[--bq-avatar--border-radius-squareM]':\n this.shape === 'square' && (this.size === 'medium' || this.size === 'large'),\n }}\n aria-label={this.label}\n role=\"img\"\n part=\"base\"\n >\n {this.initials && (\n <span\n class=\"absolute start-0 inline-flex items-center justify-center font-bold bs-full is-full inset-bs-0\"\n part=\"text\"\n >\n {this.trimmedInitials}\n </span>\n )}\n {this.image && !this.hasError && (\n <img\n class=\"absolute start-0 object-cover bs-full is-full inset-bs-0\"\n alt={this.altText ?? undefined}\n src={this.image}\n onError={this.onImageError}\n part=\"img\"\n />\n )}\n </div>\n <div\n class={{\n 'absolute flex items-center justify-center': true,\n 'start-[--bq-avatar--badge-left-square] inset-bs-[--bq-avatar--badge-top-square]': this.shape === 'square',\n 'start-[--bq-avatar--badge-left-circle] inset-bs-[--bq-avatar--badge-top-circle]': this.shape === 'circle',\n }}\n part=\"badge\"\n >\n <slot name=\"badge\"></slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bq-avatar.entry.esm.js","sources":["../../packages/beeq/src/components/avatar/bq-avatar.types.ts","../../packages/beeq/src/components/avatar/scss/bq-avatar.scss?tag=bq-avatar&encapsulation=shadow","../../packages/beeq/src/components/avatar/bq-avatar.tsx"],"sourcesContent":["export const AVATAR_SIZE = ['xsmall', 'small', 'medium', 'large'] as const;\nexport type TAvatarSize = (typeof AVATAR_SIZE)[number];\n\nexport const AVATAR_SHAPE = ['circle', 'square'] as const;\nexport type TAvatarShape = (typeof AVATAR_SHAPE)[number];\n","/* -------------------------------------------------------------------------- */\n/* Avatar styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-avatar.variables';\n\n:host {\n @apply relative inline-block;\n}\n\n.bq-avatar {\n @apply relative overflow-hidden bg-[var(--bq-avatar-background)];\n @apply border-[length:var(--bq-avatar--border-width)] border-[color:var(--bq-avatar--border-color)];\n\n border-style: var(--bq-avatar--border-style);\n}\n\n.size {\n &--xsmall {\n @apply text-[length:var(--bq-avatar--font-size-xsmall)] bs-[--bq-avatar--size-xsmall] is-[--bq-avatar--size-xsmall];\n }\n\n &--small {\n @apply text-[length:var(--bq-avatar--font-size-small)] bs-[--bq-avatar--size-small] is-[--bq-avatar--size-small];\n }\n\n &--medium {\n @apply text-[length:var(--bq-avatar--font-size-medium)] bs-[--bq-avatar--size-medium] is-[--bq-avatar--size-medium];\n }\n\n &--large {\n @apply text-[length:var(--bq-avatar--font-size-large)] bs-[--bq-avatar--size-large] is-[--bq-avatar--size-large];\n }\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport { AVATAR_SHAPE, AVATAR_SIZE } from './bq-avatar.types';\nimport type { TAvatarShape, TAvatarSize } from './bq-avatar.types';\nimport { validatePropValue } from '../../shared/utils';\n\n/**\n * The Avatar component is a simple and customizable element that displays an image or initials in a circular or square shape.\n * This component is useful for displaying user profile pictures or any other image that represents a person or an entity.\n *\n * @example How to use it\n * ```html\n * <bq-avatar\n * alt-text=\"John Doe profile picture\"\n * image=\"/image/url/photo-1524593689594.jpeg\"\n * label=\"John Doe profile picture\"\n * shape=\"circle\"\n * size=\"medium\"\n * >\n * <bq-badge slot=\"badge\" text-color=\"#fff\">9</bq-badge>\n * </bq-avatar>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/148da7-avatar\n * @status stable\n *\n * @attr {string} alt-text - Alternate text for the avatar image if the image cannot be displayed.\n * @attr {string} image - The image source to load on the avatar (this can be also a base64 encoded image).\n * @attr {string} label - A text to use for describing the avatar on assistive devices.\n * @attr {string} initials - The text to display on avatar.\n * @attr {\"circle\" | \"square\"} shape - The shape of the avatar.\n * @attr {\"xsmall\" | \"small\" | \"medium\" | \"large\"} size - The size of the avatar.\n *\n * @slot badge - The badge slot is used to add a badge to the avatar. The badge is a small circle or square that can be used to display a number or a status.\n *\n * @part base - The component's internal wrapper.\n * @part img - The `<image>` tag element that load the image source.\n * @part text - The `<span>` tag element that rendered the `Initials` text string.\n * @part badge - The container that wraps the badge slot element.\n *\n * @cssprop --bq-avatar--background - Avatar background color\n *\n * @cssprop --bq-avatar--border-color - Avatar border color\n * @cssprop --bq-avatar--border-style - Avatar border style\n * @cssprop --bq-avatar--border-width - Avatar border width\n *\n * @cssprop --bq-avatar--border-radius-circle - Avatar border radius for circle & any size\n * @cssprop --bq-avatar--border-radius-squareXs - Avatar border radius for square & size xsmall\n * @cssprop --bq-avatar--border-radius-squareS - Avatar border radius for square & size small\n * @cssprop --bq-avatar--border-radius-squareM - Avatar border radius for square & size medium/large\n *\n * @cssprop --bq-avatar--size-xsmall - Avatar xsmall size\n * @cssprop --bq-avatar--size-small - Avatar small size\n * @cssprop --bq-avatar--size-medium - Avatar medium size\n * @cssprop --bq-avatar--size-large - Avatar large size\n *\n * @cssprop --bq-avatar--badge-top-square - Badge top position shape square\n * @cssprop --bq-avatar--badge-left-square - Badge left position shape square\n * @cssprop --bq-avatar--badge-top-circle - Badge top position shape circle\n * @cssprop --bq-avatar--badge-left-circle - Badge left position shape circle\n */\n@Component({\n tag: 'bq-avatar',\n styleUrl: './scss/bq-avatar.scss',\n shadow: true,\n})\nexport class BqAvatar {\n // Own Properties\n // ====================\n\n trimmedInitials: string;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqAvatarElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() hasError: boolean;\n\n // Public Property API\n // ========================\n\n /** Alternate text for the avatar image if the image cannot be displayed */\n @Prop({ reflect: true }) altText: string;\n\n /** The image source to load on the avatar (this can be also a base64 encoded image) */\n @Prop({ reflect: true }) image: string;\n\n /** A text to use for describing the avatar on assistive devices */\n @Prop({ reflect: true }) label: string;\n\n /** The text to display on avatar */\n @Prop({ reflect: true }) initials: string;\n\n /** The shape of the avatar */\n @Prop({ reflect: true }) shape: TAvatarShape = 'circle';\n\n /** The size of the avatar */\n @Prop({ reflect: true, mutable: true }) size: TAvatarSize = 'medium';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('image')\n handleImagePropChange() {\n // Reset the error when a new image source is provided\n this.hasError = false;\n }\n\n @Watch('shape')\n @Watch('size')\n checkPropValues() {\n validatePropValue(AVATAR_SHAPE, 'circle', this.el, 'shape');\n validatePropValue(AVATAR_SIZE, 'medium', this.el, 'size');\n }\n\n @Watch('initials')\n @Watch('size')\n onInitialsChange() {\n this.trimInitialsBasedOnSize();\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.trimInitialsBasedOnSize();\n this.checkPropValues();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private onImageError = () => {\n this.hasError = true;\n };\n\n private trimInitialsBasedOnSize = (): void => {\n if (!this.initials) return;\n\n AVATAR_SIZE.forEach((size: TAvatarSize) => {\n if (this.size === size) {\n this.trimmedInitials = this.initials.substring(0, this.getIndex(size));\n }\n });\n };\n\n private getIndex = (size: TAvatarSize): number => {\n const sizeIndexMap = {\n xsmall: 1,\n small: 2,\n medium: 3,\n large: 4,\n };\n return sizeIndexMap[size] ?? sizeIndexMap.xsmall;\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'bq-avatar': true,\n [`size--${this.size}`]: true,\n 'rounded-[--bq-avatar--border-radius-circle]': this.shape === 'circle',\n 'rounded-[--bq-avatar--border-radius-squareXs]': this.shape === 'square' && this.size === 'xsmall',\n 'rounded-[--bq-avatar--border-radius-squareS]': this.shape === 'square' && this.size === 'small',\n 'rounded-[--bq-avatar--border-radius-squareM]':\n this.shape === 'square' && (this.size === 'medium' || this.size === 'large'),\n }}\n aria-label={this.label}\n role=\"img\"\n part=\"base\"\n >\n {this.initials && (\n <span\n class=\"absolute start-0 inline-flex items-center justify-center font-bold bs-full is-full inset-bs-0\"\n part=\"text\"\n >\n {this.trimmedInitials}\n </span>\n )}\n {this.image && !this.hasError && (\n <img\n class=\"absolute start-0 object-cover bs-full is-full inset-bs-0\"\n alt={this.altText ?? undefined}\n src={this.image}\n onError={this.onImageError}\n part=\"img\"\n />\n )}\n </div>\n <div\n class={{\n 'absolute flex items-center justify-center': true,\n 'start-[--bq-avatar--badge-left-square] inset-bs-[--bq-avatar--badge-top-square]': this.shape === 'square',\n 'start-[--bq-avatar--badge-left-circle] inset-bs-[--bq-avatar--badge-top-circle]': this.shape === 'circle',\n }}\n part=\"badge\"\n >\n <slot name=\"badge\"></slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bq-badge.entry.esm.js","sources":["../../packages/beeq/src/components/badge/bq-badge.types.ts","../../packages/beeq/src/components/badge/scss/bq-badge.scss?tag=bq-badge&encapsulation=shadow","../../packages/beeq/src/components/badge/bq-badge.tsx"],"sourcesContent":["export const BADGE_SIZE = ['small', 'medium'] as const;\nexport type TBadgeSize = (typeof BADGE_SIZE)[number];\n","/* -------------------------------------------------------------------------- */\n/* Badge styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-badge.variables';\n\n:host {\n @apply inline-block;\n}\n\n.bq-badge {\n @apply flex items-center justify-center bg-[color:--bq-badge--background-color] text-[color:--bq-badge--text-color];\n @apply rounded-[--bq-badge--border-radius] border-[length:--bq-badge--border-width] border-[color:--bq-badge--border-color];\n\n border-style: var(--bq-badge--border-style);\n box-shadow: var(--bq-badge--box-shadow);\n}\n\n.size {\n &--small {\n @apply bs-[--bq-badge--size-small] is-[--bq-badge--size-small];\n }\n\n &--medium {\n @apply bs-[--bq-badge--size-medium] is-[--bq-badge--size-medium];\n }\n}\n\n.digit {\n @apply min-bs-[--bq-badge--size-large] min-is-[--bq-badge--size-large];\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport { BADGE_SIZE } from './bq-badge.types';\nimport type { TBadgeSize } from './bq-badge.types';\nimport { getColorCSSVariable, getTextContent, isNil, validatePropValue } from '../../shared/utils';\n\n/**\n * The Badge component is a visual indicator that can be added to various elements within a user interface.\n * It is typically used to highlight important or relevant information, such as alerts, notifications, or statuses.\n *\n * @example How to use it\n * ```html\n * <bq-badge background-color=\"ui--success\" text-color=\"text--inverse\" size=\"small\">9</bq-badge>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/194fd1-badge\n * @status stable\n *\n * @attr {string} background-color - Badge background color. The value should be a valid value of the palette color.\n * @attr {string} text-color - Badge number color. The value should be a valid value of the palette color.\n * @attr {\"small\" | \"medium\" | \"large\"} size - The size of the badge. Relevant if badge has no content.\n *\n * @slot - The default slot is used to add content to the badge. The content can be a number or a text.\n *\n * @part base - The component's internal wrapper that holds the count.\n * @part number - The component's internal wrapper that holds the slot.\n *\n * @cssprop --bq-badge--background-color - The badge background color\n * @cssprop --bq-badge--box-shadow - The badge box shadow\n * @cssprop --bq-badge--border-color - The badge border color\n * @cssprop --bq-badge--border-radius - The badge border radius\n * @cssprop --bq-badge--border-style - The badge border style\n * @cssprop --bq-badge--border-width - The badge border width\n * @cssprop --bq-badge--size-small - The badge small size\n * @cssprop --bq-badge--size-medium - The badge medium size\n * @cssprop --bq-badge--size-large - The badge large size\n * @cssprop --bq-badge--text-color - The badge text color\n */\n@Component({\n tag: 'bq-badge',\n styleUrl: './scss/bq-badge.scss',\n shadow: true,\n})\nexport class BqBadge {\n // Own Properties\n // ====================\n\n private spanElement?: HTMLSpanElement;\n\n private observer: MutationObserver = new MutationObserver((mutations) => {\n const [mutation] = mutations;\n this.contentLength = mutation.target.textContent.length;\n });\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el: HTMLBqBadgeElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private contentLength = 0;\n\n // Public Property API\n // ========================\n\n /** Badge background color. The value should be a valid value of the palette color */\n @Prop({ mutable: true, reflect: true }) backgroundColor? = 'ui--danger';\n\n /** Badge number color. The value should be a valid value of the palette color */\n @Prop({ mutable: true, reflect: true }) textColor? = 'text--inverse';\n\n /** The size of the badge. Relevant if badge has no content. */\n @Prop({ reflect: true, mutable: true }) size?: TBadgeSize = 'small';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('size')\n handleSizePropChange() {\n validatePropValue(BADGE_SIZE, 'small', this.el, 'size');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.handleSizePropChange();\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleSlotChange = () => {\n const slot = this.slot;\n\n if (isNil(slot)) return;\n\n this.contentLength = getTextContent(slot, { recurse: true }).length;\n const [node] = slot.assignedNodes({ flatten: true });\n\n if (isNil(node)) {\n this.observer.takeRecords();\n return;\n }\n\n this.observer.observe(node, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n };\n\n private get slot(): HTMLSlotElement | null {\n return this.spanElement?.querySelector('slot') ?? null;\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const styles = {\n ...(this.backgroundColor && { '--bq-badge--background-color': getColorCSSVariable(this.backgroundColor) }),\n ...(this.textColor && { '--bq-badge--text-color': getColorCSSVariable(this.textColor) }),\n };\n\n return (\n <Host style={styles}>\n <div\n class={{\n 'bq-badge': true,\n [`size--${this.size}`]: this.contentLength === 0,\n digit: this.contentLength > 0,\n 'p-i-xs2': this.contentLength > 1,\n }}\n part=\"base\"\n >\n <span ref={(element) => (this.spanElement = element)} class=\"text-xs font-bold leading-small\" part=\"number\">\n <slot onSlotchange={this.handleSlotChange}></slot>\n </span>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bq-badge.entry.esm.js","sources":["../../packages/beeq/src/components/badge/bq-badge.types.ts","../../packages/beeq/src/components/badge/scss/bq-badge.scss?tag=bq-badge&encapsulation=shadow","../../packages/beeq/src/components/badge/bq-badge.tsx"],"sourcesContent":["export const BADGE_SIZE = ['small', 'medium'] as const;\nexport type TBadgeSize = (typeof BADGE_SIZE)[number];\n","/* -------------------------------------------------------------------------- */\n/* Badge styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-badge.variables';\n\n:host {\n @apply inline-block;\n}\n\n.bq-badge {\n @apply flex items-center justify-center bg-[color:--bq-badge--background-color] text-[color:--bq-badge--text-color];\n @apply rounded-[--bq-badge--border-radius] border-[length:--bq-badge--border-width] border-[color:--bq-badge--border-color];\n\n border-style: var(--bq-badge--border-style);\n box-shadow: var(--bq-badge--box-shadow);\n}\n\n.size {\n &--small {\n @apply bs-[--bq-badge--size-small] is-[--bq-badge--size-small];\n }\n\n &--medium {\n @apply bs-[--bq-badge--size-medium] is-[--bq-badge--size-medium];\n }\n}\n\n.digit {\n @apply min-bs-[--bq-badge--size-large] min-is-[--bq-badge--size-large];\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport { BADGE_SIZE } from './bq-badge.types';\nimport type { TBadgeSize } from './bq-badge.types';\nimport { getColorCSSVariable, getTextContent, isNil, validatePropValue } from '../../shared/utils';\n\n/**\n * The Badge component is a visual indicator that can be added to various elements within a user interface.\n * It is typically used to highlight important or relevant information, such as alerts, notifications, or statuses.\n *\n * @example How to use it\n * ```html\n * <bq-badge background-color=\"ui--success\" text-color=\"text--inverse\" size=\"small\">9</bq-badge>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/194fd1-badge\n * @status stable\n *\n * @attr {string} background-color - Badge background color. The value should be a valid value of the palette color.\n * @attr {string} text-color - Badge number color. The value should be a valid value of the palette color.\n * @attr {\"small\" | \"medium\" | \"large\"} size - The size of the badge. Relevant if badge has no content.\n *\n * @slot - The default slot is used to add content to the badge. The content can be a number or a text.\n *\n * @part base - The component's internal wrapper that holds the count.\n * @part number - The component's internal wrapper that holds the slot.\n *\n * @cssprop --bq-badge--background-color - The badge background color\n * @cssprop --bq-badge--box-shadow - The badge box shadow\n * @cssprop --bq-badge--border-color - The badge border color\n * @cssprop --bq-badge--border-radius - The badge border radius\n * @cssprop --bq-badge--border-style - The badge border style\n * @cssprop --bq-badge--border-width - The badge border width\n * @cssprop --bq-badge--size-small - The badge small size\n * @cssprop --bq-badge--size-medium - The badge medium size\n * @cssprop --bq-badge--size-large - The badge large size\n * @cssprop --bq-badge--text-color - The badge text color\n */\n@Component({\n tag: 'bq-badge',\n styleUrl: './scss/bq-badge.scss',\n shadow: true,\n})\nexport class BqBadge {\n // Own Properties\n // ====================\n\n private spanElement?: HTMLSpanElement;\n\n private observer: MutationObserver = new MutationObserver((mutations) => {\n const [mutation] = mutations;\n this.contentLength = mutation.target.textContent.length;\n });\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el: HTMLBqBadgeElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private contentLength = 0;\n\n // Public Property API\n // ========================\n\n /** Badge background color. The value should be a valid value of the palette color */\n @Prop({ mutable: true, reflect: true }) backgroundColor? = 'ui--danger';\n\n /** Badge number color. The value should be a valid value of the palette color */\n @Prop({ mutable: true, reflect: true }) textColor? = 'text--inverse';\n\n /** The size of the badge. Relevant if badge has no content. */\n @Prop({ reflect: true, mutable: true }) size?: TBadgeSize = 'small';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('size')\n handleSizePropChange() {\n validatePropValue(BADGE_SIZE, 'small', this.el, 'size');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.handleSizePropChange();\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleSlotChange = () => {\n const slot = this.slot;\n\n if (isNil(slot)) return;\n\n this.contentLength = getTextContent(slot, { recurse: true }).length;\n const [node] = slot.assignedNodes({ flatten: true });\n\n if (isNil(node)) {\n this.observer.takeRecords();\n return;\n }\n\n this.observer.observe(node, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n };\n\n private get slot(): HTMLSlotElement | null {\n return this.spanElement?.querySelector('slot') ?? null;\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const styles = {\n ...(this.backgroundColor && { '--bq-badge--background-color': getColorCSSVariable(this.backgroundColor) }),\n ...(this.textColor && { '--bq-badge--text-color': getColorCSSVariable(this.textColor) }),\n };\n\n return (\n <Host style={styles}>\n <div\n class={{\n 'bq-badge': true,\n [`size--${this.size}`]: this.contentLength === 0,\n digit: this.contentLength > 0,\n 'p-i-xs2': this.contentLength > 1,\n }}\n part=\"base\"\n >\n <span ref={(element) => (this.spanElement = element)} class=\"text-xs font-bold leading-small\" part=\"number\">\n <slot onSlotchange={this.handleSlotChange}></slot>\n </span>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bq-breadcrumb-item.entry.esm.js","sources":["../../packages/beeq/src/components/breadcrumb-item/scss/bq-breadcrumb-item.scss?tag=bq-breadcrumb-item&encapsulation=shadow","../../packages/beeq/src/components/breadcrumb-item/bq-breadcrumb-item.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Breadcrumb item styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-breadcrumb-item.variables';\n\n:host([aria-current='page']) {\n .breadcrumb-item {\n @apply text-[color:--bq-breadcrumb-item--text-color-current];\n }\n}\n\n.breadcrumb-item {\n @apply border-[length:--bq-breadcrumb-item--border-width] border-[color:--bq-breadcrumb-item--border-color];\n @apply rounded-[--bq-breadcrumb-item--border-radius] bg-[--bq-breadcrumb-item--background] shadow-[shadow:--bq-breadcrumb-item--box-shadow];\n @apply pe-[--bq-breadcrumb-item--padding-end] ps-[--bq-breadcrumb-item--padding-start] p-b-[--bq-breadcrumb-item--paddingY];\n @apply text-[length:--bq-breadcrumb-item--text-size] font-regular leading-[--bq-breadcrumb-item--line-height] text-[color:--bq-breadcrumb-item--text-color];\n @apply focus-visible:focus hover:text-hover-brand active:outline-none;\n @apply transition-colors duration-300 ease-in-out;\n @apply cursor-pointer no-underline;\n\n border-style: var(--bq-avatar--border-style);\n}\n\n.breadcrumb-separator {\n @apply flex items-center text-[length:--bq-breadcrumb-item--text-size-separator];\n @apply pe-[--bq-breadcrumb-item--padding-end-separator] ps-[--bq-breadcrumb-item--padding-start-separator];\n}\n","import { Component, Element, Event, h, Prop } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport { isDefined } from '../../shared/utils';\n\n/**\n * The Breadcrumb Item helps users understand their current location within a website or application's hierarchical structure.\n *\n * @example How to use it\n * ```html\n * <bq-breadcrumb-item label=\"Home page\">\n * <bq-icon name=\"house-line\" size=\"16\"></bq-icon>\n * Home\n * </bq-breadcrumb-item>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/61d6c0-breadcrumb\n * @status stable\n *\n * @attr {string} href - If set, the breadcrumb item will be rendered as an `<a>` with this `href`, otherwise, a `<button>` will be rendered.\n * @attr {string} target - Where to display the link in the browser context. Relevant only if `href` is set.\n * @attr {string} rel - Where to display the link in the browser context. Relevant only if `href` is set.\n *\n * @event bqFocus - Handler to be called when item is focused\n * @event bqClick - Handler to be called when item is clicked\n * @event bqBlur - Handler to be called when item loses focus\n *\n * @slot - The default slot is used to add content to the breadcrumb item.\n *\n * @part base - The component wrapper container\n * @part content - The `span` tag that wraps the content item\n * @part item - The breadcrumb item wrapper (`button` or `a`)\n * @part separator - The `span` tag that wraps the separator element\n *\n * @cssprop --bq-breadcrumb-item--background - Background color of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--box-shadow - Box shadow of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--border-color - Border color of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--border-style - Border style of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--border-width - Border width of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--border-radius - Border radius of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--line-height - Line height of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--text-color - Text color of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--text-color-current - Text color of the current breadcrumb item (active)\n * @cssprop --bq-breadcrumb-item--text-size - Text size of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--text-size-separator - Text size of the breadcrumb item separator\n * @cssprop --bq-breadcrumb-item--padding-start - Padding start of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--padding-end - Padding end of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--paddingY - Padding top and bottom of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--padding-start-separator - Padding start of the breadcrumb item separator\n * @cssprop --bq-breadcrumb-item--padding-end-separator - Padding end of the breadcrumb item separator\n */\n@Component({\n tag: 'bq-breadcrumb-item',\n styleUrl: './scss/bq-breadcrumb-item.scss',\n shadow: true,\n})\nexport class BqBreadcrumbItem {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqBreadcrumbItemElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** If set, the breadcrumb item will be rendered as an `<a>` with this `href`, otherwise, a `<button>` will be rendered. */\n @Prop({ reflect: true }) href: string;\n\n /** Where to display the link in the browser context. Relevant only if `href` is set. */\n @Prop({ reflect: true }) target: '_blank' | '_parent' | '_self' | '_top';\n\n /** Where to display the link in the browser context. Relevant only if `href` is set. */\n @Prop({ reflect: true }) rel: string = 'noreferrer noopener';\n\n // Prop lifecycle events\n // =======================\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when item loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqBreadcrumbItemElement>;\n\n /** Handler to be called when item is focused */\n @Event() bqFocus: EventEmitter<HTMLBqBreadcrumbItemElement>;\n\n /** Handler to be called when item is clicked */\n @Event() bqClick: EventEmitter<HTMLBqBreadcrumbItemElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private onBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n private onFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private onClick = () => {\n this.bqClick.emit(this.el);\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const isLink = isDefined(this.href);\n const TagElem = isLink ? 'a' : 'button';\n\n return (\n <div class=\"flex items-center\" part=\"base\">\n <TagElem\n class=\"breadcrumb-item\"\n href={isLink ? this.href : undefined}\n rel={isLink && this.target ? 'noreferrer noopener' : undefined}\n target={isLink ? this.target : undefined}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onClick={this.onClick}\n part=\"item\"\n >\n <span class=\"flex items-center gap-xs2\" part=\"content\">\n <slot></slot>\n </span>\n </TagElem>\n {/* @internal use only */}\n <span class=\"breadcrumb-separator\" part=\"separator\">\n <slot name=\"separator\"></slot>\n </span>\n </div>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAAA,MAAM,mBAAmB,GAAG,45vBAA45vB;;MCwD36vB,gBAAgB,GAAA,MAAA;;;;;;;;;;;;;;AAiBF,IAAA,IAAI;;AAGJ,IAAA,MAAM;;IAGN,GAAG,GAAW,qBAAqB;;;;;;;AAUnD,IAAA,MAAM;;AAGN,IAAA,OAAO;;AAGP,IAAA,OAAO;;;;;;;;;;;;;;;;IAqBR,MAAM,GAAG,MAAK;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3B,KAAC;IAEO,OAAO,GAAG,MAAK;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5B,KAAC;IAEO,OAAO,GAAG,MAAK;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5B,KAAC;;;;IAMD,MAAM,GAAA;QACJ,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,QAAQ;AAEvC,QAAA,QACE,4DAAK,KAAK,EAAC,mBAAmB,EAAC,IAAI,EAAC,MAAM,EAAA,EACxC,CAAA,CAAC,OAAO,EAAA,EAAA,GAAA,EAAA,0CAAA,EACN,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,EACpC,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,qBAAqB,GAAG,SAAS,EAC9D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,EACxC,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAC,MAAM,EAAA,EAEX,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,2BAA2B,EAAC,IAAI,EAAC,SAAS,EAAA,EACpD,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACR,CACC,EAEV,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,sBAAsB,EAAC,IAAI,EAAC,WAAW,EAAA,EACjD,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,WAAW,GAAQ,CACzB,CACH;;;;;;;"}
1
+ {"version":3,"file":"bq-breadcrumb-item.entry.esm.js","sources":["../../packages/beeq/src/components/breadcrumb-item/scss/bq-breadcrumb-item.scss?tag=bq-breadcrumb-item&encapsulation=shadow","../../packages/beeq/src/components/breadcrumb-item/bq-breadcrumb-item.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Breadcrumb item styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-breadcrumb-item.variables';\n\n:host([aria-current='page']) {\n .breadcrumb-item {\n @apply text-[color:--bq-breadcrumb-item--text-color-current];\n }\n}\n\n.breadcrumb-item {\n @apply border-[length:--bq-breadcrumb-item--border-width] border-[color:--bq-breadcrumb-item--border-color];\n @apply rounded-[--bq-breadcrumb-item--border-radius] bg-[--bq-breadcrumb-item--background] shadow-[shadow:--bq-breadcrumb-item--box-shadow];\n @apply pe-[--bq-breadcrumb-item--padding-end] ps-[--bq-breadcrumb-item--padding-start] p-b-[--bq-breadcrumb-item--paddingY];\n @apply text-[length:--bq-breadcrumb-item--text-size] font-regular leading-[--bq-breadcrumb-item--line-height] text-[color:--bq-breadcrumb-item--text-color];\n @apply focus-visible:focus hover:text-hover-brand active:outline-none;\n @apply transition-colors duration-300 ease-in-out;\n @apply cursor-pointer no-underline;\n\n border-style: var(--bq-avatar--border-style);\n}\n\n.breadcrumb-separator {\n @apply flex items-center text-[length:--bq-breadcrumb-item--text-size-separator];\n @apply pe-[--bq-breadcrumb-item--padding-end-separator] ps-[--bq-breadcrumb-item--padding-start-separator];\n}\n","import { Component, Element, Event, h, Prop } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport { isDefined } from '../../shared/utils';\n\n/**\n * The Breadcrumb Item helps users understand their current location within a website or application's hierarchical structure.\n *\n * @example How to use it\n * ```html\n * <bq-breadcrumb-item label=\"Home page\">\n * <bq-icon name=\"house-line\" size=\"16\"></bq-icon>\n * Home\n * </bq-breadcrumb-item>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/61d6c0-breadcrumb\n * @status stable\n *\n * @attr {string} href - If set, the breadcrumb item will be rendered as an `<a>` with this `href`, otherwise, a `<button>` will be rendered.\n * @attr {string} target - Where to display the link in the browser context. Relevant only if `href` is set.\n * @attr {string} rel - Where to display the link in the browser context. Relevant only if `href` is set.\n *\n * @event bqFocus - Handler to be called when item is focused\n * @event bqClick - Handler to be called when item is clicked\n * @event bqBlur - Handler to be called when item loses focus\n *\n * @slot - The default slot is used to add content to the breadcrumb item.\n *\n * @part base - The component wrapper container\n * @part content - The `span` tag that wraps the content item\n * @part item - The breadcrumb item wrapper (`button` or `a`)\n * @part separator - The `span` tag that wraps the separator element\n *\n * @cssprop --bq-breadcrumb-item--background - Background color of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--box-shadow - Box shadow of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--border-color - Border color of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--border-style - Border style of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--border-width - Border width of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--border-radius - Border radius of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--line-height - Line height of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--text-color - Text color of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--text-color-current - Text color of the current breadcrumb item (active)\n * @cssprop --bq-breadcrumb-item--text-size - Text size of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--text-size-separator - Text size of the breadcrumb item separator\n * @cssprop --bq-breadcrumb-item--padding-start - Padding start of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--padding-end - Padding end of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--paddingY - Padding top and bottom of the breadcrumb item\n * @cssprop --bq-breadcrumb-item--padding-start-separator - Padding start of the breadcrumb item separator\n * @cssprop --bq-breadcrumb-item--padding-end-separator - Padding end of the breadcrumb item separator\n */\n@Component({\n tag: 'bq-breadcrumb-item',\n styleUrl: './scss/bq-breadcrumb-item.scss',\n shadow: true,\n})\nexport class BqBreadcrumbItem {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqBreadcrumbItemElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** If set, the breadcrumb item will be rendered as an `<a>` with this `href`, otherwise, a `<button>` will be rendered. */\n @Prop({ reflect: true }) href: string;\n\n /** Where to display the link in the browser context. Relevant only if `href` is set. */\n @Prop({ reflect: true }) target: '_blank' | '_parent' | '_self' | '_top';\n\n /** Where to display the link in the browser context. Relevant only if `href` is set. */\n @Prop({ reflect: true }) rel: string = 'noreferrer noopener';\n\n // Prop lifecycle events\n // =======================\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when item loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqBreadcrumbItemElement>;\n\n /** Handler to be called when item is focused */\n @Event() bqFocus: EventEmitter<HTMLBqBreadcrumbItemElement>;\n\n /** Handler to be called when item is clicked */\n @Event() bqClick: EventEmitter<HTMLBqBreadcrumbItemElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private onBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n private onFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private onClick = () => {\n this.bqClick.emit(this.el);\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const isLink = isDefined(this.href);\n const TagElem = isLink ? 'a' : 'button';\n\n return (\n <div class=\"flex items-center\" part=\"base\">\n <TagElem\n class=\"breadcrumb-item\"\n href={isLink ? this.href : undefined}\n rel={isLink && this.target ? 'noreferrer noopener' : undefined}\n target={isLink ? this.target : undefined}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onClick={this.onClick}\n part=\"item\"\n >\n <span class=\"flex items-center gap-xs2\" part=\"content\">\n <slot></slot>\n </span>\n </TagElem>\n {/* @internal use only */}\n <span class=\"breadcrumb-separator\" part=\"separator\">\n <slot name=\"separator\"></slot>\n </span>\n </div>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAAA,MAAM,mBAAmB,GAAG,o8vBAAo8vB;;MCwDn9vB,gBAAgB,GAAA,MAAA;;;;;;;;;;;;;;AAiBF,IAAA,IAAI;;AAGJ,IAAA,MAAM;;IAGN,GAAG,GAAW,qBAAqB;;;;;;;AAUnD,IAAA,MAAM;;AAGN,IAAA,OAAO;;AAGP,IAAA,OAAO;;;;;;;;;;;;;;;;IAqBR,MAAM,GAAG,MAAK;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3B,KAAC;IAEO,OAAO,GAAG,MAAK;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5B,KAAC;IAEO,OAAO,GAAG,MAAK;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5B,KAAC;;;;IAMD,MAAM,GAAA;QACJ,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,QAAQ;AAEvC,QAAA,QACE,4DAAK,KAAK,EAAC,mBAAmB,EAAC,IAAI,EAAC,MAAM,EAAA,EACxC,CAAA,CAAC,OAAO,EAAA,EAAA,GAAA,EAAA,0CAAA,EACN,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,EACpC,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,qBAAqB,GAAG,SAAS,EAC9D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,EACxC,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAC,MAAM,EAAA,EAEX,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,2BAA2B,EAAC,IAAI,EAAC,SAAS,EAAA,EACpD,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACR,CACC,EAEV,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,sBAAsB,EAAC,IAAI,EAAC,WAAW,EAAA,EACjD,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,WAAW,GAAQ,CACzB,CACH;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"bq-breadcrumb.entry.esm.js","sources":["../../packages/beeq/src/components/breadcrumb/scss/bq-breadcrumb.scss?tag=bq-breadcrumb&encapsulation=shadow","../../packages/beeq/src/components/breadcrumb/bq-breadcrumb.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Breadcrumb styles */\n/* -------------------------------------------------------------------------- */\n\n:host {\n @apply block;\n}\n","import { Component, Element, h, Host, Prop } from '@stencil/core';\n\n/**\n * The Breadcrumb is used to wraps a series of breadcrumb items to indicate the current page's location within a navigational hierarchy.\n *\n * @example How to use it\n * ```html\n * <bq-breadcrumb label=\"Breadcrumb\">\n * <bq-breadcrumb-item>Home</bq-breadcrumb-item>\n * <bq-breadcrumb-item>Men's clothing</bq-breadcrumb-item>\n * <bq-breadcrumb-item>Shirt</bq-breadcrumb-item>\n * <bq-breadcrumb-item>Casual shirts</bq-breadcrumb-item>\n * </bq-breadcrumb>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/194fd1-breadcrumb\n * @status stable\n *\n * @attr {string} label - The `aria-label` attribute to describe the type of navigation\n *\n * @slot - The default slot is used to add `bq-breadcrumb-item` items to the breadcrumb.\n * @slot separator - The slot to add a separator between breadcrumb items. Default separator is `/`.\n *\n * @part navigation - The `nav` tag that loads the breadcrumb items\n * @part separator - The container that wraps the separator element\n */\n@Component({\n tag: 'bq-breadcrumb',\n styleUrl: './scss/bq-breadcrumb.scss',\n shadow: true,\n})\nexport class BqBreadcrumb {\n // Own Properties\n // ====================\n\n private navElem: HTMLElement;\n private spanElem: HTMLElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqBreadcrumbElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** The `aria-label` attribute to describe the type of navigation */\n @Prop({ reflect: true }) label: string = 'Breadcrumbs';\n\n // Prop lifecycle events\n // =======================\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleSlotChange = (): void => {\n const breadcrumbItems = this.breadcrumbItems;\n const itemCount = breadcrumbItems.length;\n const separatorElem = this.getSeparatorElem();\n\n breadcrumbItems.forEach((item, index) => {\n const isLastItem = index === itemCount - 1;\n const separatorSlot = item.querySelector('[slot=\"separator\"]');\n\n if (!separatorSlot && !isLastItem) {\n item.append(separatorElem.cloneNode(true));\n }\n\n item.setAttribute('aria-current', isLastItem ? 'page' : '');\n });\n };\n\n private getSeparatorElem = (): HTMLElement => {\n const clone = this.separatorFromSlot.cloneNode(true) as HTMLElement;\n clone.slot = 'separator';\n\n return clone;\n };\n\n private get separatorFromSlot() {\n return this.spanElem\n .querySelector<HTMLSlotElement>('slot[name=\"separator\"]')\n .assignedElements({ flatten: true })[0] as HTMLElement;\n }\n\n private get breadcrumbItems(): HTMLBqBreadcrumbItemElement[] {\n return this.navElem\n .querySelector<HTMLSlotElement>('slot')\n .assignedElements({ flatten: true }) as HTMLBqBreadcrumbItemElement[];\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <Host>\n <nav class=\"flex items-center\" aria-label={this.label} ref={(elem) => (this.navElem = elem)} part=\"navigation\">\n <slot onSlotchange={this.handleSlotChange}></slot>\n </nav>\n <span hidden aria-hidden=\"true\" ref={(element) => (this.spanElem = element)} part=\"separator\">\n <slot name=\"separator\">\n <span class=\"flex items-center justify-center is-3\">/</span>\n </slot>\n </span>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;AAAA,MAAM,eAAe,GAAG,8hlBAA8hlB;;MC+BzilB,YAAY,GAAA,MAAA;;;;;;AAIf,IAAA,OAAO;AACP,IAAA,QAAQ;;;;;;;;IAeS,KAAK,GAAW,aAAa;;;;;;;;;IAatD,gBAAgB,GAAA;QACd,IAAI,CAAC,gBAAgB,EAAE;;;;;;;;;;;;;;IAkBjB,gBAAgB,GAAG,MAAW;AACpC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe;AAC5C,QAAA,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM;AACxC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAE7C,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACtC,YAAA,MAAM,UAAU,GAAG,KAAK,KAAK,SAAS,GAAG,CAAC;YAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;AAE9D,YAAA,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,EAAE;gBACjC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;AAG5C,YAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;AAC7D,SAAC,CAAC;AACJ,KAAC;IAEO,gBAAgB,GAAG,MAAkB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAgB;AACnE,QAAA,KAAK,CAAC,IAAI,GAAG,WAAW;AAExB,QAAA,OAAO,KAAK;AACd,KAAC;AAED,IAAA,IAAY,iBAAiB,GAAA;QAC3B,OAAO,IAAI,CAAC;aACT,aAAa,CAAkB,wBAAwB;aACvD,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAgB;;AAG1D,IAAA,IAAY,eAAe,GAAA;QACzB,OAAO,IAAI,CAAC;aACT,aAAa,CAAkB,MAAM;AACrC,aAAA,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAkC;;;;;IAOzE,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,mBAAmB,EAAa,YAAA,EAAA,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,EAAC,YAAY,EAAA,EAC5G,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,YAAY,EAAE,IAAI,CAAC,gBAAgB,GAAS,CAC9C,EACN,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,MAAM,uBAAa,MAAM,EAAC,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE,IAAI,EAAC,WAAW,EAAA,EAC3F,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,WAAW,EAAA,EACpB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,uCAAuC,EAAA,EAAA,GAAA,CAAS,CACvD,CACF,CACF;;;;;;;"}
1
+ {"version":3,"file":"bq-breadcrumb.entry.esm.js","sources":["../../packages/beeq/src/components/breadcrumb/scss/bq-breadcrumb.scss?tag=bq-breadcrumb&encapsulation=shadow","../../packages/beeq/src/components/breadcrumb/bq-breadcrumb.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Breadcrumb styles */\n/* -------------------------------------------------------------------------- */\n\n:host {\n @apply block;\n}\n","import { Component, Element, h, Host, Prop } from '@stencil/core';\n\n/**\n * The Breadcrumb is used to wraps a series of breadcrumb items to indicate the current page's location within a navigational hierarchy.\n *\n * @example How to use it\n * ```html\n * <bq-breadcrumb label=\"Breadcrumb\">\n * <bq-breadcrumb-item>Home</bq-breadcrumb-item>\n * <bq-breadcrumb-item>Men's clothing</bq-breadcrumb-item>\n * <bq-breadcrumb-item>Shirt</bq-breadcrumb-item>\n * <bq-breadcrumb-item>Casual shirts</bq-breadcrumb-item>\n * </bq-breadcrumb>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/194fd1-breadcrumb\n * @status stable\n *\n * @attr {string} label - The `aria-label` attribute to describe the type of navigation\n *\n * @slot - The default slot is used to add `bq-breadcrumb-item` items to the breadcrumb.\n * @slot separator - The slot to add a separator between breadcrumb items. Default separator is `/`.\n *\n * @part navigation - The `nav` tag that loads the breadcrumb items\n * @part separator - The container that wraps the separator element\n */\n@Component({\n tag: 'bq-breadcrumb',\n styleUrl: './scss/bq-breadcrumb.scss',\n shadow: true,\n})\nexport class BqBreadcrumb {\n // Own Properties\n // ====================\n\n private navElem: HTMLElement;\n private spanElem: HTMLElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqBreadcrumbElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** The `aria-label` attribute to describe the type of navigation */\n @Prop({ reflect: true }) label: string = 'Breadcrumbs';\n\n // Prop lifecycle events\n // =======================\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleSlotChange = (): void => {\n const breadcrumbItems = this.breadcrumbItems;\n const itemCount = breadcrumbItems.length;\n const separatorElem = this.getSeparatorElem();\n\n breadcrumbItems.forEach((item, index) => {\n const isLastItem = index === itemCount - 1;\n const separatorSlot = item.querySelector('[slot=\"separator\"]');\n\n if (!separatorSlot && !isLastItem) {\n item.append(separatorElem.cloneNode(true));\n }\n\n item.setAttribute('aria-current', isLastItem ? 'page' : '');\n });\n };\n\n private getSeparatorElem = (): HTMLElement => {\n const clone = this.separatorFromSlot.cloneNode(true) as HTMLElement;\n clone.slot = 'separator';\n\n return clone;\n };\n\n private get separatorFromSlot() {\n return this.spanElem\n .querySelector<HTMLSlotElement>('slot[name=\"separator\"]')\n .assignedElements({ flatten: true })[0] as HTMLElement;\n }\n\n private get breadcrumbItems(): HTMLBqBreadcrumbItemElement[] {\n return this.navElem\n .querySelector<HTMLSlotElement>('slot')\n .assignedElements({ flatten: true }) as HTMLBqBreadcrumbItemElement[];\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <Host>\n <nav class=\"flex items-center\" aria-label={this.label} ref={(elem) => (this.navElem = elem)} part=\"navigation\">\n <slot onSlotchange={this.handleSlotChange}></slot>\n </nav>\n <span hidden aria-hidden=\"true\" ref={(element) => (this.spanElem = element)} part=\"separator\">\n <slot name=\"separator\">\n <span class=\"flex items-center justify-center is-3\">/</span>\n </slot>\n </span>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;AAAA,MAAM,eAAe,GAAG,sklBAAsklB;;MC+BjllB,YAAY,GAAA,MAAA;;;;;;AAIf,IAAA,OAAO;AACP,IAAA,QAAQ;;;;;;;;IAeS,KAAK,GAAW,aAAa;;;;;;;;;IAatD,gBAAgB,GAAA;QACd,IAAI,CAAC,gBAAgB,EAAE;;;;;;;;;;;;;;IAkBjB,gBAAgB,GAAG,MAAW;AACpC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe;AAC5C,QAAA,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM;AACxC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAE7C,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACtC,YAAA,MAAM,UAAU,GAAG,KAAK,KAAK,SAAS,GAAG,CAAC;YAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;AAE9D,YAAA,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,EAAE;gBACjC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;AAG5C,YAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;AAC7D,SAAC,CAAC;AACJ,KAAC;IAEO,gBAAgB,GAAG,MAAkB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAgB;AACnE,QAAA,KAAK,CAAC,IAAI,GAAG,WAAW;AAExB,QAAA,OAAO,KAAK;AACd,KAAC;AAED,IAAA,IAAY,iBAAiB,GAAA;QAC3B,OAAO,IAAI,CAAC;aACT,aAAa,CAAkB,wBAAwB;aACvD,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAgB;;AAG1D,IAAA,IAAY,eAAe,GAAA;QACzB,OAAO,IAAI,CAAC;aACT,aAAa,CAAkB,MAAM;AACrC,aAAA,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAkC;;;;;IAOzE,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,mBAAmB,EAAa,YAAA,EAAA,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,EAAC,YAAY,EAAA,EAC5G,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,YAAY,EAAE,IAAI,CAAC,gBAAgB,GAAS,CAC9C,EACN,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,MAAM,uBAAa,MAAM,EAAC,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE,IAAI,EAAC,WAAW,EAAA,EAC3F,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,WAAW,EAAA,EACpB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,uCAAuC,EAAA,EAAA,GAAA,CAAS,CACvD,CACF,CACF;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"bq-button.bq-icon.entry.esm.js","sources":["../../packages/beeq/src/components/button/bq-button.types.ts","../../packages/beeq/src/components/button/scss/bq-button.scss?tag=bq-button&encapsulation=shadow","../../packages/beeq/src/components/button/bq-button.tsx","../../packages/beeq/src/components/icon/helper/request.ts","../../packages/beeq/src/components/icon/scss/bq-icon.scss?tag=bq-icon&encapsulation=shadow","../../packages/beeq/src/components/icon/bq-icon.tsx"],"sourcesContent":["export const BUTTON_SIZE = ['small', 'medium', 'large'] as const;\nexport type TButtonSize = (typeof BUTTON_SIZE)[number];\n\nexport const BUTTON_TYPE = ['button', 'submit', 'reset'] as const;\nexport type TButtonType = (typeof BUTTON_TYPE)[number];\n\nexport const BUTTON_APPEARANCE = ['primary', 'secondary', 'link', 'text'] as const;\nexport type TButtonAppearance = (typeof BUTTON_APPEARANCE)[number];\n\nexport const BUTTON_VARIANT = ['standard', 'ghost', 'danger'] as const;\nexport type TButtonVariant = (typeof BUTTON_VARIANT)[number];\n\nexport const BUTTON_BORDER_RADIUS = ['none', 'xs2', 'xs', 's', 'm', 'l', 'full'] as const;\nexport type TButtonBorderRadius = (typeof BUTTON_BORDER_RADIUS)[number];\n","/* -------------------------------------------------------------------------- */\n/* Button styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-button.variables';\n\n@layer components {\n // Common button base style\n .bq-button {\n @apply box-border flex cursor-[inherit] items-center justify-center font-medium leading-regular;\n @apply rounded-[--bq-button--border-radius] border-[length:--bq-button--border-width] border-[color:--bq-button--border-color];\n @apply transition-[background-color,border-color,color] duration-300 ease-in-out;\n // `DISABLED` state\n @apply disabled:cursor-not-allowed disabled:opacity-60;\n // `FOCUS` state\n @apply focus-visible:focus;\n }\n}\n\n:host {\n @apply relative inline-block cursor-pointer is-auto;\n}\n\n:host([block]),\n.block {\n @apply is-full;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Appearance */\n/* -------------------------------------------------------------------------- */\n\n.bq-button--primary {\n @apply bg-ui-brand text-alt;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-brand;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-brand active:enabled:hover:bg-active-ui-brand;\n}\n\n.bq-button--primary.ghost {\n @apply border-m border-solid border-brand bg-transparent text-brand;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-primary active:enabled:hover:bg-active-ui-primary;\n}\n\n.bq-button--primary.danger {\n @apply bg-ui-danger text-alt;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-danger;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-danger active:enabled:hover:bg-active-ui-danger;\n}\n\n.bq-button--secondary {\n @apply bg-ui-secondary text-primary;\n // Secondary `HOVER` state\n @apply hover:enabled:bg-hover-ui-secondary;\n // Secondary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n.bq-button--secondary.ghost {\n @apply border-m border-solid border-tertiary bg-transparent text-primary;\n // Secondary `HOVER` state\n @apply hover:enabled:bg-hover-ui-secondary;\n // Secondary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n.bq-button--link {\n @apply bg-transparent text-brand no-underline;\n // Primary `HOVER` state\n @apply [&:not(.disabled)]:hover:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply [&:not(.disabled)]:active:bg-active-ui-secondary [&:not(.disabled)]:active:hover:bg-active-ui-secondary;\n // HTML `<a>` elements does not have a `disabled` state so we need to handle it manually\n &.disabled {\n @apply cursor-not-allowed opacity-60;\n }\n}\n\n.bq-button--text {\n @apply bg-transparent text-primary;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Size */\n/* -------------------------------------------------------------------------- */\n\n.small {\n @apply text-[length:--bq-button--small-font-size] bs-[--bq-button--small-height] p-b-[--bq-button--small-paddingY] p-i-[--bq-button--small-paddingX];\n}\n\n.medium {\n @apply text-[length:--bq-button--medium-font-size] bs-[--bq-button--medium-height] p-b-[--bq-button--medium-paddingY] p-i-[--bq-button--medium-paddingX];\n}\n\n.large {\n @apply text-[length:--bq-button--large-font-size] bs-[--bq-button--large-height] p-b-[--bq-button--large-paddingY] p-i-[--bq-button--large-paddingX];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Label */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__label ::slotted(bq-icon) {\n @apply flex;\n}\n\n.content-left {\n @apply justify-start;\n}\n\n.content-right {\n @apply justify-end;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Prefix and Suffix slots */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__prefix,\n.bq-button__suffix {\n @apply pointer-events-none flex shrink-0 grow-0 basis-auto items-center;\n}\n\n.bq-button.has-prefix .bq-button__label {\n @apply ps-xs2;\n}\n\n.bq-button.has-suffix .bq-button__label {\n @apply pe-xs2;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Loading */\n/* -------------------------------------------------------------------------- */\n\n.bq-button.loading {\n @apply relative cursor-wait;\n}\n\n.bq-button.loading .bq-button__prefix,\n.bq-button.loading .bq-button__label,\n.bq-button.loading .bq-button__suffix {\n @apply invisible;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Spinner icon */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__loader {\n @include animation-spin;\n @apply absolute;\n}\n","import { AttachInternals, Component, Element, Event, h, Host, Prop, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport { BUTTON_APPEARANCE, BUTTON_SIZE, BUTTON_TYPE, BUTTON_VARIANT } from './bq-button.types';\nimport type {\n TButtonAppearance,\n TButtonBorderRadius,\n TButtonSize,\n TButtonType,\n TButtonVariant,\n} from './bq-button.types';\nimport { hasSlotContent, isClient, isDefined, isNil, validatePropValue } from '../../shared/utils';\n\n/**\n * Buttons are designed for users to take action on a page or a screen.\n *\n * @example How to use it\n * ```html\n * <bq-button appearance=\"primary\" border=\"m\" size=\"medium\">\n * <bq-icon name=\"arrow-circle-left\" slot=\"prefix\"></bq-icon>\n * Go back\n * </bq-button>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/286b43-buttons\n * @status stable\n *\n * @dependency bq-icon\n *\n * @attr {\"primary\" | \"secondary\" | \"link\" | \"text\"} appearance - The appearance style to apply to the button\n * @attr {boolean} block - If `true`, it will make the button fit to its parent width.\n * @attr {string} border - The corner radius of the button\n * @attr {boolean} disabled - If `true`, the button will be disabled (no interaction allowed)\n * @attr {string} download - Tells the browser to treat the linked URL as a download. Only used when `href` is set.\n * @attr {string} href - When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`\n * @attr {\"left\" | \"center\" | \"right\"} justify-content - It determinate how the content should be aligned\n * @attr {boolean} loading - If `true` it will display the button in a loading state\n * @attr {\"small\" | \"medium\" | \"large\"} size - The size of the button\n * @attr {\"_blank\" | \"_parent\" | \"_self\" | \"_top\"} target - Where to display the linked URL, as the name for a browsing context (a `tab`, `window`, or `<iframe>`)\n * @attr {\"button\" | \"submit\" | \"reset\"} type - The default behavior of the button\n * @attr {\"standard\" | \"ghost\" | \"danger\"} variant - The variant of button to apply on top of the appearance (applicable only to `appearance=\"primary\"`)\n *\n * @event bqBlur - Handler to be called when the button loses focus\n * @event bqFocus - Handler to be called when button gets focus\n * @event bqClick - Handler to be called when the button is clicked\n *\n * @slot prefix - The prefix content to be displayed before the button label\n * @slot - The button label content\n * @slot suffix - The suffix content to be displayed after the button label\n *\n * @part button - The `<a>` or `<button>` HTML element used under the hood.\n * @part prefix - The `<span>` tag element that acts as prefix container.\n * @part label - The `<span>` tag element that renders the text of the button.\n * @part suffix - The `<span>` tag element that acts as suffix container.\n *\n * @cssprop --bq-button--border-color - Button border color\n * @cssprop --bq-button--border-radius - Button border radius\n * @cssprop --bq-button--border-style - Button border style\n * @cssprop --bq-button--border-width - Button border width\n * @cssprop --bq-button--small-height - Button small height\n * @cssprop --bq-button--small-paddingX - Button small padding block (top and bottom)\n * @cssprop --bq-button--small-paddingY - Button small padding inline (left and right)\n * @cssprop --bq-button--small-font-size - Button small font size\n * @cssprop --bq-button--medium-height - Button medium height\n * @cssprop --bq-button--medium-paddingX - Button medium padding block (top and bottom)\n * @cssprop --bq-button--medium-paddingY - Button medium padding inline (left and right)\n * @cssprop --bq-button--medium-font-size - Button medium font size\n * @cssprop --bq-button--large-height - Button large height\n * @cssprop --bq-button--large-paddingX - Button large padding block (top and bottom)\n * @cssprop --bq-button--large-paddingY - Button large padding inline (left and right)\n * @cssprop --bq-button--large-font-size - Button large font size\n */\n@Component({\n tag: 'bq-button',\n styleUrl: './scss/bq-button.scss',\n formAssociated: true,\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqButton {\n // Own Properties\n // ====================\n\n private prefixElem: HTMLElement;\n private suffixElem: HTMLElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqButtonElement;\n @AttachInternals() internals!: ElementInternals;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasPrefix = false;\n @State() private hasSuffix = false;\n\n // Public Property API\n // ========================\n\n /** The appearance style to apply to the button */\n @Prop({ reflect: true }) appearance: TButtonAppearance = 'primary';\n\n /** If `true`, it will make the button fit to its parent width. */\n @Prop({ reflect: true }) block: boolean = false;\n\n /** The corner radius of the button */\n @Prop({ reflect: true }) border: TButtonBorderRadius = 'm';\n\n /** If true, the button will be disabled (no interaction allowed) */\n @Prop() disabled = false;\n\n /**\n * Tells the browser to treat the linked URL as a download. Only used when `href` is set.\n * Details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download\n */\n @Prop() download?: string;\n\n /** When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>` */\n @Prop({ reflect: true }) href: string;\n\n /** It determinate how the content should be aligned */\n @Prop({ reflect: true }) justifyContent: 'left' | 'center' | 'right' = 'center';\n\n /** If `true` it will display the button in a loading state */\n @Prop() loading = false;\n\n /** The size of the button */\n @Prop({ reflect: true }) size: TButtonSize = 'medium';\n\n /**\n * Where to display the linked URL, as the name for a browsing context (a `tab`, `window`, or `<iframe>`)\n * Details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target\n */\n @Prop({ reflect: true }) target: '_blank' | '_parent' | '_self' | '_top';\n\n /** The default behavior of the button */\n @Prop({ reflect: true }) type: TButtonType = 'button';\n\n /** The variant of button to apply on top of the appearance (applicable only to `appearance=\"primary\"`) */\n @Prop({ reflect: true }) variant: TButtonVariant = 'standard';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('appearance')\n @Watch('type')\n @Watch('size')\n @Watch('variant')\n checkPropValues() {\n validatePropValue(BUTTON_APPEARANCE, 'primary', this.el, 'appearance');\n validatePropValue(BUTTON_TYPE, 'button', this.el, 'type');\n validatePropValue(BUTTON_SIZE, 'medium', this.el, 'size');\n validatePropValue(BUTTON_VARIANT, 'standard', this.el, 'variant');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when the button loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqButtonElement>;\n\n /** Handler to be called when the button is clicked */\n @Event() bqFocus: EventEmitter<HTMLBqButtonElement>;\n\n /** Handler to be called when button gets focus */\n @Event() bqClick: EventEmitter<HTMLBqButtonElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.checkPropValues();\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private handleClick = (ev: Event) => {\n const { disabled, loading, bqClick, el } = this;\n\n if (disabled || loading) {\n this.preventEvent(ev);\n return;\n }\n\n const bqClickEvent = bqClick.emit(el);\n if (bqClickEvent.defaultPrevented) {\n this.preventEvent(ev);\n return;\n }\n\n this.handleFormAction();\n };\n\n private handleFormAction() {\n const {\n type,\n internals: { form },\n } = this;\n if (isNil(form)) return;\n\n const formAction = this.formActions(form)[type];\n if (isNil(formAction)) return;\n\n formAction();\n }\n\n private formActions = (form: HTMLFormElement) => ({\n submit: () => this.submitAssociatedForm(form),\n reset: () => form.reset(),\n });\n\n private submitAssociatedForm = (form: HTMLFormElement) => {\n if (!isClient() || isNil(form)) return;\n\n const btn = document.createElement('button');\n btn.type = this.type;\n btn.hidden = true;\n form.append(btn);\n\n btn.click();\n btn.remove();\n };\n\n private handleSlotChange = () => {\n this.hasPrefix = hasSlotContent(this.prefixElem, 'prefix');\n this.hasSuffix = hasSlotContent(this.suffixElem, 'suffix');\n };\n\n private preventEvent(ev: Event) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const isLink = isDefined(this.href);\n const TagElem = isLink ? 'a' : 'button';\n const style = {\n ...(this.border && { '--bq-button--border-radius': `var(--bq-radius--${this.border})` }),\n };\n\n return (\n <Host style={style}>\n <TagElem\n class={{\n 'bq-button': true,\n [`bq-button--${this.appearance}`]: true,\n [`content-${this.justifyContent}`]: true,\n [`${this.variant}`]: true,\n [`${this.size}`]: true,\n block: this.block,\n disabled: this.disabled,\n 'has-prefix': this.hasPrefix,\n 'has-suffix': this.hasSuffix,\n loading: this.loading,\n }}\n aria-disabled={this.disabled ? 'true' : 'false'}\n disabled={this.disabled}\n download={isLink ? this.download : undefined}\n href={isLink ? this.href : undefined}\n part=\"button\"\n rel={isLink && this.target ? 'noreferrer noopener' : undefined}\n target={isLink ? this.target : undefined}\n type={this.type}\n tabIndex={this.disabled ? -1 : 0}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.handleClick}\n >\n <span class=\"bq-button__prefix\" ref={(spanElem) => (this.prefixElem = spanElem)} part=\"prefix\">\n <slot name=\"prefix\" onSlotchange={this.handleSlotChange} />\n </span>\n <span class=\"bq-button__label\" part=\"label\">\n <slot />\n </span>\n <span class=\"bq-button__suffix\" ref={(spanElem) => (this.suffixElem = spanElem)} part=\"suffix\">\n <slot name=\"suffix\" onSlotchange={this.handleSlotChange} />\n </span>\n {this.loading && <bq-icon class=\"bq-button__loader\" name=\"spinner-gap\" />}\n </TagElem>\n </Host>\n );\n }\n}\n","/* -------------------------------------------------------------------------- */\n/* Icon request helper */\n/* -------------------------------------------------------------------------- */\n\nimport { isNil, isString } from '../../../shared/utils';\n\nconst requests = new Map<string, Promise<unknown>>();\nexport const iconContent = new Map<string, string>();\n\n/**\n * Fetches SVG content from a given URL and optionally sanitizes it.\n * @param {string} url - The URL to fetch the SVG from.\n * @param {boolean} sanitize - Whether to sanitize the SVG content.\n * @returns {Promise<unknown>} - A promise that resolves to the SVG content.\n */\nconst fetchSvg = async (url: string, sanitize: boolean): Promise<unknown> => {\n if (isNil(url) || typeof fetch === 'undefined' || typeof window === 'undefined') {\n return undefined;\n }\n\n if (requests.has(url)) return requests.get(url);\n\n try {\n const response = await fetch(url);\n\n if (!response.ok) {\n iconContent.set(url, '');\n return undefined;\n }\n\n let svgContent = await response.text();\n\n if (sanitize !== false) {\n svgContent = validateContent(svgContent);\n }\n\n iconContent.set(url, svgContent);\n return svgContent;\n } catch (error) {\n console.error(`[BqIcon] Failed to fetch SVG from ${url}:`, error);\n iconContent.set(url, '');\n return undefined;\n }\n};\n\n/**\n * Retrieves the SVG content for a given URL, fetching and caching it if necessary.\n * @param {string} url - The URL to fetch the SVG from.\n * @param {boolean} sanitize - Whether to sanitize the SVG content.\n * @returns {Promise<unknown>} - A promise that resolves to the SVG content.\n */\nexport const getSvgContent = async (url: string, sanitize: boolean): Promise<unknown> => {\n if (isNil(url)) return undefined;\n\n let req = requests.get(url);\n\n if (isNil(req)) {\n req = fetchSvg(url, sanitize);\n requests.set(url, req);\n }\n return req;\n};\n\n/**\n * Validates and sanitizes the SVG content.\n * @param {string} svgContent - The SVG content to validate.\n * @returns {string} - The sanitized SVG content.\n */\nexport const validateContent = (svgContent: string): string => {\n if (typeof window === 'undefined' || isNil(svgContent)) return '';\n\n const svgTag = 'svg';\n const iconCssClass = 'bq-icon__svg';\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n const svgElm = div.querySelector(svgTag);\n\n if (svgElm) {\n const existingClasses = svgElm.getAttribute('class') || '';\n svgElm.setAttribute('class', `${existingClasses} ${iconCssClass}`.trim());\n svgElm.setAttribute('part', svgTag);\n svgElm.removeAttribute('height');\n svgElm.removeAttribute('width');\n\n if (isValid(svgElm)) {\n return div.innerHTML;\n }\n }\n\n return '';\n};\n\n/**\n * Checks if an HTML element is valid (i.e., does not contain scripts or event handlers).\n * @param {HTMLElement} elm - The element to check.\n * @returns {boolean} - True if the element is valid, false otherwise.\n */\nexport const isValid = (elm: Element): boolean => {\n if (!elm) return false;\n if (elm.nodeType !== Node.ELEMENT_NODE) return false;\n if (elm.nodeName.toLowerCase() === 'script') return false;\n\n for (const attribute of Array.from(elm.attributes)) {\n if (isString(attribute.value) && attribute.value.toLowerCase().startsWith('on')) {\n return false;\n }\n }\n\n for (const childNode of Array.from(elm.children) as HTMLElement[]) {\n if (!isValid(childNode)) return false;\n }\n\n return true;\n};\n","/* -------------------------------------------------------------------------- */\n/* Icon styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-icon.variables';\n\n:host {\n @apply inline-block;\n}\n\n/**\n * This class is added on packages/beeq/src/components/icon/helper/request.ts\n * See lines 42 and 58 for details.\n */\n.bq-icon__svg {\n @apply scale-x-[--bq-icon--direction];\n}\n","import { Component, Event, h, Host, Prop, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport type { TIconWeight } from './bq-icon.types';\nimport { getSvgContent, iconContent } from './helper/request';\nimport { getBasePath, getColorCSSVariable, isNil } from '../../shared/utils';\n\n/**\n * The Icon component is an image that provides a visual representation of an object, action, or concept displayed on the screen.\n * It is a small graphical element that is used to enhance the user interface and improve user experience.\n *\n * @example How to use it\n * ```html\n * <bq-icon color=\"text--brand\" name=\"bell-ringing\" size=\"24\"></bq-icon>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/675fad-icon\n * @status stable\n *\n * @attr {string} color - Set the stroke color of the SVG. The value should be a valid value of the palette color.\n * @attr {string} label - Label for the icon, used for accessibility.\n * @attr {string} name - Icon name to load. Please check all available icons [here](https://phosphoricons.com/).\n * @attr {string | number} size - Set the size of the SVG.\n * @attr {string} src - Set the source of the SVG. If the source is set, the name property will be ignored.\n *\n * @event svgLoaded - Callback handler to be called when the SVG has loaded.\n *\n * @part base - The component's internal wrapper that holds the icon SVG content.\n * @part svg - The `<svg>` tag element inside the component.\n *\n * @cssprop --bq-icon--color - The stroke color of the SVG.\n * @cssprop --bq-icon--size - The size of the SVG.\n */\n@Component({\n assetsDirs: ['svg'],\n tag: 'bq-icon',\n styleUrl: './scss/bq-icon.scss',\n shadow: true,\n})\nexport class BqIcon {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private _svgContent: string;\n\n // Public Property API\n // ========================\n\n /** Label for the icon, used for accessibility */\n @Prop({ reflect: true }) label?: string;\n\n /** Set the stroke color of the SVG. The value should be a valid value of the palette color */\n @Prop({ reflect: true }) color?: string;\n\n /** Icon name to load. Please check all available icons [here](https://phosphoricons.com/) */\n @Prop({ reflect: true }) name?: string;\n\n /** Set the size of the SVG */\n @Prop({ reflect: true }) size?: string | number = 24;\n\n /** Set the source of the SVG. If the source is set, the name property will be ignored */\n @Prop({ reflect: true }) src?: string;\n\n /** @deprecated It set the icon weight/style */\n @Prop({ reflect: true }) weight?: TIconWeight = undefined;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('color')\n @Watch('name')\n @Watch('size')\n handlePropsChange() {\n this.loadIcon(this.name);\n }\n\n /**\n * !TO BE REMOVED: Delete this `@Watch()` once the deprecated `weight` property is removed\n * We need to maintain retro-compatibility until the next major release\n */\n @Watch('weight')\n handleWeightChange() {\n if (this.name.includes(this.weight)) return;\n\n console.warn(\n `❗️ [bq-icon]: the 'weight' property is deprecated, you should add the weight to the icon name.\\n\n For example, '<bq-icon name=\"bell-fill\"></bq-icon>' instead of '<bq-icon name=\"bell\" weight=\"fill\"></bq-icon>'`,\n );\n // Check if the icon is weighted. An icon is considered weighted if its weight is not 'regular' and ENV_SVG_PATH is not set.\n // Eg: if the weight is 'bold' and ENV_SVG_PATH is not set, isWeightedIcon will be true.\n const REGULAR = 'regular';\n const isWeightedIcon = !isNil(this.weight) && this.weight !== REGULAR;\n // If the icon is weighted, append the weight to the icon name. Otherwise, append nothing.\n // Eg: if isWeightedIcon is true and the weight is 'bold', weightSuffix will be '-bold'.\n const weightSuffix = isWeightedIcon ? `-${this.weight}` : '';\n // Construct the icon name by appending the weight suffix (if any) and the file extension.\n // Eg: if the name is 'my-icon' and weightSuffix is '-bold', iconName will be 'my-icon-bold.svg'.\n const iconName = `${this.name}${weightSuffix}`;\n this.loadIcon(iconName);\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler to be called when the SVG has loaded */\n @Event() svgLoaded: EventEmitter;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n connectedCallback() {\n this.setupIconComponent();\n }\n\n componentWillLoad() {\n this.setupIconComponent();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private setupIconComponent = () => {\n this.loadIcon(this.name);\n // !TO BE REMOVED: Delete this once the deprecated `weight` property is removed\n if (!isNil(this.weight)) this.handleWeightChange();\n };\n\n private getIconSource = (name: string) => {\n if (!this.name && !this.src) return undefined;\n // Return the src if it is set\n if (this.src) return this.src;\n\n const SVG_EXTENSION = '.svg';\n const iconFileName = `${name}${SVG_EXTENSION}`;\n\n return getBasePath(iconFileName);\n };\n\n private loadIcon = (name: string) => {\n const url = this.getIconSource(name);\n getSvgContent(url, true).then(() => {\n this._svgContent = iconContent.get(url);\n this.svgLoaded.emit(this._svgContent);\n });\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const styles = {\n ...(this.color && { '--bq-icon--color': getColorCSSVariable(this.color) }),\n ...(this.size && { '--bq-icon--size': `${this.size}px` }),\n };\n\n return (\n <Host style={styles}>\n <div\n aria-label={this.label ?? `${this.name} icon`}\n class=\"flex text-[color:--bq-icon--color] bs-[--bq-icon--size] is-[--bq-icon--size]\"\n innerHTML={this._svgContent}\n part=\"base\"\n role=\"img\"\n />\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bq-button.bq-icon.entry.esm.js","sources":["../../packages/beeq/src/components/button/bq-button.types.ts","../../packages/beeq/src/components/button/scss/bq-button.scss?tag=bq-button&encapsulation=shadow","../../packages/beeq/src/components/button/bq-button.tsx","../../packages/beeq/src/components/icon/helper/request.ts","../../packages/beeq/src/components/icon/scss/bq-icon.scss?tag=bq-icon&encapsulation=shadow","../../packages/beeq/src/components/icon/bq-icon.tsx"],"sourcesContent":["export const BUTTON_SIZE = ['small', 'medium', 'large'] as const;\nexport type TButtonSize = (typeof BUTTON_SIZE)[number];\n\nexport const BUTTON_TYPE = ['button', 'submit', 'reset'] as const;\nexport type TButtonType = (typeof BUTTON_TYPE)[number];\n\nexport const BUTTON_APPEARANCE = ['primary', 'secondary', 'link', 'text'] as const;\nexport type TButtonAppearance = (typeof BUTTON_APPEARANCE)[number];\n\nexport const BUTTON_VARIANT = ['standard', 'ghost', 'danger'] as const;\nexport type TButtonVariant = (typeof BUTTON_VARIANT)[number];\n\nexport const BUTTON_BORDER_RADIUS = ['none', 'xs2', 'xs', 's', 'm', 'l', 'full'] as const;\nexport type TButtonBorderRadius = (typeof BUTTON_BORDER_RADIUS)[number];\n","/* -------------------------------------------------------------------------- */\n/* Button styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-button.variables';\n\n@layer components {\n // Common button base style\n .bq-button {\n @apply box-border flex cursor-[inherit] items-center justify-center font-medium leading-regular;\n @apply rounded-[--bq-button--border-radius] border-[length:--bq-button--border-width] border-[color:--bq-button--border-color];\n @apply transition-[background-color,border-color,color] duration-300 ease-in-out;\n // `DISABLED` state\n @apply disabled:cursor-not-allowed disabled:opacity-60;\n // `FOCUS` state\n @apply focus-visible:focus;\n }\n}\n\n:host {\n @apply relative inline-block cursor-pointer is-auto;\n}\n\n:host([block]),\n.block {\n @apply is-full;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Appearance */\n/* -------------------------------------------------------------------------- */\n\n.bq-button--primary {\n @apply bg-ui-brand text-alt;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-brand;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-brand active:enabled:hover:bg-active-ui-brand;\n}\n\n.bq-button--primary.ghost {\n @apply border-m border-solid border-brand bg-transparent text-brand;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-primary active:enabled:hover:bg-active-ui-primary;\n}\n\n.bq-button--primary.danger {\n @apply bg-ui-danger text-alt;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-danger;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-danger active:enabled:hover:bg-active-ui-danger;\n}\n\n.bq-button--secondary {\n @apply bg-ui-secondary text-primary;\n // Secondary `HOVER` state\n @apply hover:enabled:bg-hover-ui-secondary;\n // Secondary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n.bq-button--secondary.ghost {\n @apply border-m border-solid border-tertiary bg-transparent text-primary;\n // Secondary `HOVER` state\n @apply hover:enabled:bg-hover-ui-secondary;\n // Secondary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n.bq-button--link {\n @apply bg-transparent text-brand no-underline;\n // Primary `HOVER` state\n @apply [&:not(.disabled)]:hover:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply [&:not(.disabled)]:active:bg-active-ui-secondary [&:not(.disabled)]:active:hover:bg-active-ui-secondary;\n // HTML `<a>` elements does not have a `disabled` state so we need to handle it manually\n &.disabled {\n @apply cursor-not-allowed opacity-60;\n }\n}\n\n.bq-button--text {\n @apply bg-transparent text-primary;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Size */\n/* -------------------------------------------------------------------------- */\n\n.small {\n @apply text-[length:--bq-button--small-font-size] bs-[--bq-button--small-height] p-b-[--bq-button--small-paddingY] p-i-[--bq-button--small-paddingX];\n}\n\n.medium {\n @apply text-[length:--bq-button--medium-font-size] bs-[--bq-button--medium-height] p-b-[--bq-button--medium-paddingY] p-i-[--bq-button--medium-paddingX];\n}\n\n.large {\n @apply text-[length:--bq-button--large-font-size] bs-[--bq-button--large-height] p-b-[--bq-button--large-paddingY] p-i-[--bq-button--large-paddingX];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Label */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__label ::slotted(bq-icon) {\n @apply flex;\n}\n\n.content-left {\n @apply justify-start;\n}\n\n.content-right {\n @apply justify-end;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Prefix and Suffix slots */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__prefix,\n.bq-button__suffix {\n @apply pointer-events-none flex shrink-0 grow-0 basis-auto items-center;\n}\n\n.bq-button.has-prefix .bq-button__label {\n @apply ps-xs2;\n}\n\n.bq-button.has-suffix .bq-button__label {\n @apply pe-xs2;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Loading */\n/* -------------------------------------------------------------------------- */\n\n.bq-button.loading {\n @apply relative cursor-wait;\n}\n\n.bq-button.loading .bq-button__prefix,\n.bq-button.loading .bq-button__label,\n.bq-button.loading .bq-button__suffix {\n @apply invisible;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Spinner icon */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__loader {\n @include animation-spin;\n @apply absolute;\n}\n","import { AttachInternals, Component, Element, Event, h, Host, Prop, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport { BUTTON_APPEARANCE, BUTTON_SIZE, BUTTON_TYPE, BUTTON_VARIANT } from './bq-button.types';\nimport type {\n TButtonAppearance,\n TButtonBorderRadius,\n TButtonSize,\n TButtonType,\n TButtonVariant,\n} from './bq-button.types';\nimport { hasSlotContent, isClient, isDefined, isNil, validatePropValue } from '../../shared/utils';\n\n/**\n * Buttons are designed for users to take action on a page or a screen.\n *\n * @example How to use it\n * ```html\n * <bq-button appearance=\"primary\" border=\"m\" size=\"medium\">\n * <bq-icon name=\"arrow-circle-left\" slot=\"prefix\"></bq-icon>\n * Go back\n * </bq-button>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/286b43-buttons\n * @status stable\n *\n * @dependency bq-icon\n *\n * @attr {\"primary\" | \"secondary\" | \"link\" | \"text\"} appearance - The appearance style to apply to the button\n * @attr {boolean} block - If `true`, it will make the button fit to its parent width.\n * @attr {string} border - The corner radius of the button\n * @attr {boolean} disabled - If `true`, the button will be disabled (no interaction allowed)\n * @attr {string} download - Tells the browser to treat the linked URL as a download. Only used when `href` is set.\n * @attr {string} href - When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`\n * @attr {\"left\" | \"center\" | \"right\"} justify-content - It determinate how the content should be aligned\n * @attr {boolean} loading - If `true` it will display the button in a loading state\n * @attr {\"small\" | \"medium\" | \"large\"} size - The size of the button\n * @attr {\"_blank\" | \"_parent\" | \"_self\" | \"_top\"} target - Where to display the linked URL, as the name for a browsing context (a `tab`, `window`, or `<iframe>`)\n * @attr {\"button\" | \"submit\" | \"reset\"} type - The default behavior of the button\n * @attr {\"standard\" | \"ghost\" | \"danger\"} variant - The variant of button to apply on top of the appearance (applicable only to `appearance=\"primary\"`)\n *\n * @event bqBlur - Handler to be called when the button loses focus\n * @event bqFocus - Handler to be called when button gets focus\n * @event bqClick - Handler to be called when the button is clicked\n *\n * @slot prefix - The prefix content to be displayed before the button label\n * @slot - The button label content\n * @slot suffix - The suffix content to be displayed after the button label\n *\n * @part button - The `<a>` or `<button>` HTML element used under the hood.\n * @part prefix - The `<span>` tag element that acts as prefix container.\n * @part label - The `<span>` tag element that renders the text of the button.\n * @part suffix - The `<span>` tag element that acts as suffix container.\n *\n * @cssprop --bq-button--border-color - Button border color\n * @cssprop --bq-button--border-radius - Button border radius\n * @cssprop --bq-button--border-style - Button border style\n * @cssprop --bq-button--border-width - Button border width\n * @cssprop --bq-button--small-height - Button small height\n * @cssprop --bq-button--small-paddingX - Button small padding block (top and bottom)\n * @cssprop --bq-button--small-paddingY - Button small padding inline (left and right)\n * @cssprop --bq-button--small-font-size - Button small font size\n * @cssprop --bq-button--medium-height - Button medium height\n * @cssprop --bq-button--medium-paddingX - Button medium padding block (top and bottom)\n * @cssprop --bq-button--medium-paddingY - Button medium padding inline (left and right)\n * @cssprop --bq-button--medium-font-size - Button medium font size\n * @cssprop --bq-button--large-height - Button large height\n * @cssprop --bq-button--large-paddingX - Button large padding block (top and bottom)\n * @cssprop --bq-button--large-paddingY - Button large padding inline (left and right)\n * @cssprop --bq-button--large-font-size - Button large font size\n */\n@Component({\n tag: 'bq-button',\n styleUrl: './scss/bq-button.scss',\n formAssociated: true,\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqButton {\n // Own Properties\n // ====================\n\n private prefixElem: HTMLElement;\n private suffixElem: HTMLElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqButtonElement;\n @AttachInternals() internals!: ElementInternals;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasPrefix = false;\n @State() private hasSuffix = false;\n\n // Public Property API\n // ========================\n\n /** The appearance style to apply to the button */\n @Prop({ reflect: true }) appearance: TButtonAppearance = 'primary';\n\n /** If `true`, it will make the button fit to its parent width. */\n @Prop({ reflect: true }) block: boolean = false;\n\n /** The corner radius of the button */\n @Prop({ reflect: true }) border: TButtonBorderRadius = 'm';\n\n /** If true, the button will be disabled (no interaction allowed) */\n @Prop() disabled = false;\n\n /**\n * Tells the browser to treat the linked URL as a download. Only used when `href` is set.\n * Details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download\n */\n @Prop() download?: string;\n\n /** When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>` */\n @Prop({ reflect: true }) href: string;\n\n /** It determinate how the content should be aligned */\n @Prop({ reflect: true }) justifyContent: 'left' | 'center' | 'right' = 'center';\n\n /** If `true` it will display the button in a loading state */\n @Prop() loading = false;\n\n /** The size of the button */\n @Prop({ reflect: true }) size: TButtonSize = 'medium';\n\n /**\n * Where to display the linked URL, as the name for a browsing context (a `tab`, `window`, or `<iframe>`)\n * Details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target\n */\n @Prop({ reflect: true }) target: '_blank' | '_parent' | '_self' | '_top';\n\n /** The default behavior of the button */\n @Prop({ reflect: true }) type: TButtonType = 'button';\n\n /** The variant of button to apply on top of the appearance (applicable only to `appearance=\"primary\"`) */\n @Prop({ reflect: true }) variant: TButtonVariant = 'standard';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('appearance')\n @Watch('type')\n @Watch('size')\n @Watch('variant')\n checkPropValues() {\n validatePropValue(BUTTON_APPEARANCE, 'primary', this.el, 'appearance');\n validatePropValue(BUTTON_TYPE, 'button', this.el, 'type');\n validatePropValue(BUTTON_SIZE, 'medium', this.el, 'size');\n validatePropValue(BUTTON_VARIANT, 'standard', this.el, 'variant');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when the button loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqButtonElement>;\n\n /** Handler to be called when the button is clicked */\n @Event() bqFocus: EventEmitter<HTMLBqButtonElement>;\n\n /** Handler to be called when button gets focus */\n @Event() bqClick: EventEmitter<HTMLBqButtonElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.checkPropValues();\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private handleClick = (ev: Event) => {\n const { disabled, loading, bqClick, el } = this;\n\n if (disabled || loading) {\n this.preventEvent(ev);\n return;\n }\n\n const bqClickEvent = bqClick.emit(el);\n if (bqClickEvent.defaultPrevented) {\n this.preventEvent(ev);\n return;\n }\n\n this.handleFormAction();\n };\n\n private handleFormAction() {\n const {\n type,\n internals: { form },\n } = this;\n if (isNil(form)) return;\n\n const formAction = this.formActions(form)[type];\n if (isNil(formAction)) return;\n\n formAction();\n }\n\n private formActions = (form: HTMLFormElement) => ({\n submit: () => this.submitAssociatedForm(form),\n reset: () => form.reset(),\n });\n\n private submitAssociatedForm = (form: HTMLFormElement) => {\n if (!isClient() || isNil(form)) return;\n\n const btn = document.createElement('button');\n btn.type = this.type;\n btn.hidden = true;\n form.append(btn);\n\n btn.click();\n btn.remove();\n };\n\n private handleSlotChange = () => {\n this.hasPrefix = hasSlotContent(this.prefixElem, 'prefix');\n this.hasSuffix = hasSlotContent(this.suffixElem, 'suffix');\n };\n\n private preventEvent(ev: Event) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const isLink = isDefined(this.href);\n const TagElem = isLink ? 'a' : 'button';\n const style = {\n ...(this.border && { '--bq-button--border-radius': `var(--bq-radius--${this.border})` }),\n };\n\n return (\n <Host style={style}>\n <TagElem\n class={{\n 'bq-button': true,\n [`bq-button--${this.appearance}`]: true,\n [`content-${this.justifyContent}`]: true,\n [`${this.variant}`]: true,\n [`${this.size}`]: true,\n block: this.block,\n disabled: this.disabled,\n 'has-prefix': this.hasPrefix,\n 'has-suffix': this.hasSuffix,\n loading: this.loading,\n }}\n aria-disabled={this.disabled ? 'true' : 'false'}\n disabled={this.disabled}\n download={isLink ? this.download : undefined}\n href={isLink ? this.href : undefined}\n part=\"button\"\n rel={isLink && this.target ? 'noreferrer noopener' : undefined}\n target={isLink ? this.target : undefined}\n type={this.type}\n tabIndex={this.disabled ? -1 : 0}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.handleClick}\n >\n <span class=\"bq-button__prefix\" ref={(spanElem) => (this.prefixElem = spanElem)} part=\"prefix\">\n <slot name=\"prefix\" onSlotchange={this.handleSlotChange} />\n </span>\n <span class=\"bq-button__label\" part=\"label\">\n <slot />\n </span>\n <span class=\"bq-button__suffix\" ref={(spanElem) => (this.suffixElem = spanElem)} part=\"suffix\">\n <slot name=\"suffix\" onSlotchange={this.handleSlotChange} />\n </span>\n {this.loading && <bq-icon class=\"bq-button__loader\" name=\"spinner-gap\" />}\n </TagElem>\n </Host>\n );\n }\n}\n","/* -------------------------------------------------------------------------- */\n/* Icon request helper */\n/* -------------------------------------------------------------------------- */\n\nimport { isNil, isString } from '../../../shared/utils';\n\nconst requests = new Map<string, Promise<unknown>>();\nexport const iconContent = new Map<string, string>();\n\n/**\n * Fetches SVG content from a given URL and optionally sanitizes it.\n * @param {string} url - The URL to fetch the SVG from.\n * @param {boolean} sanitize - Whether to sanitize the SVG content.\n * @returns {Promise<unknown>} - A promise that resolves to the SVG content.\n */\nconst fetchSvg = async (url: string, sanitize: boolean): Promise<unknown> => {\n if (isNil(url) || typeof fetch === 'undefined' || typeof window === 'undefined') {\n return undefined;\n }\n\n if (requests.has(url)) return requests.get(url);\n\n try {\n const response = await fetch(url);\n\n if (!response.ok) {\n iconContent.set(url, '');\n return undefined;\n }\n\n let svgContent = await response.text();\n\n if (sanitize !== false) {\n svgContent = validateContent(svgContent);\n }\n\n iconContent.set(url, svgContent);\n return svgContent;\n } catch (error) {\n console.error(`[BqIcon] Failed to fetch SVG from ${url}:`, error);\n iconContent.set(url, '');\n return undefined;\n }\n};\n\n/**\n * Retrieves the SVG content for a given URL, fetching and caching it if necessary.\n * @param {string} url - The URL to fetch the SVG from.\n * @param {boolean} sanitize - Whether to sanitize the SVG content.\n * @returns {Promise<unknown>} - A promise that resolves to the SVG content.\n */\nexport const getSvgContent = async (url: string, sanitize: boolean): Promise<unknown> => {\n if (isNil(url)) return undefined;\n\n let req = requests.get(url);\n\n if (isNil(req)) {\n req = fetchSvg(url, sanitize);\n requests.set(url, req);\n }\n return req;\n};\n\n/**\n * Validates and sanitizes the SVG content.\n * @param {string} svgContent - The SVG content to validate.\n * @returns {string} - The sanitized SVG content.\n */\nexport const validateContent = (svgContent: string): string => {\n if (typeof window === 'undefined' || isNil(svgContent)) return '';\n\n const svgTag = 'svg';\n const iconCssClass = 'bq-icon__svg';\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n const svgElm = div.querySelector(svgTag);\n\n if (svgElm) {\n const existingClasses = svgElm.getAttribute('class') || '';\n svgElm.setAttribute('class', `${existingClasses} ${iconCssClass}`.trim());\n svgElm.setAttribute('part', svgTag);\n svgElm.removeAttribute('height');\n svgElm.removeAttribute('width');\n\n if (isValid(svgElm)) {\n return div.innerHTML;\n }\n }\n\n return '';\n};\n\n/**\n * Checks if an HTML element is valid (i.e., does not contain scripts or event handlers).\n * @param {HTMLElement} elm - The element to check.\n * @returns {boolean} - True if the element is valid, false otherwise.\n */\nexport const isValid = (elm: Element): boolean => {\n if (!elm) return false;\n if (elm.nodeType !== Node.ELEMENT_NODE) return false;\n if (elm.nodeName.toLowerCase() === 'script') return false;\n\n for (const attribute of Array.from(elm.attributes)) {\n if (isString(attribute.value) && attribute.value.toLowerCase().startsWith('on')) {\n return false;\n }\n }\n\n for (const childNode of Array.from(elm.children) as HTMLElement[]) {\n if (!isValid(childNode)) return false;\n }\n\n return true;\n};\n","/* -------------------------------------------------------------------------- */\n/* Icon styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-icon.variables';\n\n:host {\n @apply inline-block;\n}\n\n/**\n * This class is added on packages/beeq/src/components/icon/helper/request.ts\n * See lines 42 and 58 for details.\n */\n.bq-icon__svg {\n @apply scale-x-[--bq-icon--direction];\n}\n","import { Component, Event, h, Host, Prop, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport type { TIconWeight } from './bq-icon.types';\nimport { getSvgContent, iconContent } from './helper/request';\nimport { getBasePath, getColorCSSVariable, isNil } from '../../shared/utils';\n\n/**\n * The Icon component is an image that provides a visual representation of an object, action, or concept displayed on the screen.\n * It is a small graphical element that is used to enhance the user interface and improve user experience.\n *\n * @example How to use it\n * ```html\n * <bq-icon color=\"text--brand\" name=\"bell-ringing\" size=\"24\"></bq-icon>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/675fad-icon\n * @status stable\n *\n * @attr {string} color - Set the stroke color of the SVG. The value should be a valid value of the palette color.\n * @attr {string} label - Label for the icon, used for accessibility.\n * @attr {string} name - Icon name to load. Please check all available icons [here](https://phosphoricons.com/).\n * @attr {string | number} size - Set the size of the SVG.\n * @attr {string} src - Set the source of the SVG. If the source is set, the name property will be ignored.\n *\n * @event svgLoaded - Callback handler to be called when the SVG has loaded.\n *\n * @part base - The component's internal wrapper that holds the icon SVG content.\n * @part svg - The `<svg>` tag element inside the component.\n *\n * @cssprop --bq-icon--color - The stroke color of the SVG.\n * @cssprop --bq-icon--size - The size of the SVG.\n */\n@Component({\n assetsDirs: ['svg'],\n tag: 'bq-icon',\n styleUrl: './scss/bq-icon.scss',\n shadow: true,\n})\nexport class BqIcon {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private _svgContent: string;\n\n // Public Property API\n // ========================\n\n /** Label for the icon, used for accessibility */\n @Prop({ reflect: true }) label?: string;\n\n /** Set the stroke color of the SVG. The value should be a valid value of the palette color */\n @Prop({ reflect: true }) color?: string;\n\n /** Icon name to load. Please check all available icons [here](https://phosphoricons.com/) */\n @Prop({ reflect: true }) name?: string;\n\n /** Set the size of the SVG */\n @Prop({ reflect: true }) size?: string | number = 24;\n\n /** Set the source of the SVG. If the source is set, the name property will be ignored */\n @Prop({ reflect: true }) src?: string;\n\n /** @deprecated It set the icon weight/style */\n @Prop({ reflect: true }) weight?: TIconWeight = undefined;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('color')\n @Watch('name')\n @Watch('size')\n handlePropsChange() {\n this.loadIcon(this.name);\n }\n\n /**\n * !TO BE REMOVED: Delete this `@Watch()` once the deprecated `weight` property is removed\n * We need to maintain retro-compatibility until the next major release\n */\n @Watch('weight')\n handleWeightChange() {\n if (this.name.includes(this.weight)) return;\n\n console.warn(\n `❗️ [bq-icon]: the 'weight' property is deprecated, you should add the weight to the icon name.\\n\n For example, '<bq-icon name=\"bell-fill\"></bq-icon>' instead of '<bq-icon name=\"bell\" weight=\"fill\"></bq-icon>'`,\n );\n // Check if the icon is weighted. An icon is considered weighted if its weight is not 'regular' and ENV_SVG_PATH is not set.\n // Eg: if the weight is 'bold' and ENV_SVG_PATH is not set, isWeightedIcon will be true.\n const REGULAR = 'regular';\n const isWeightedIcon = !isNil(this.weight) && this.weight !== REGULAR;\n // If the icon is weighted, append the weight to the icon name. Otherwise, append nothing.\n // Eg: if isWeightedIcon is true and the weight is 'bold', weightSuffix will be '-bold'.\n const weightSuffix = isWeightedIcon ? `-${this.weight}` : '';\n // Construct the icon name by appending the weight suffix (if any) and the file extension.\n // Eg: if the name is 'my-icon' and weightSuffix is '-bold', iconName will be 'my-icon-bold.svg'.\n const iconName = `${this.name}${weightSuffix}`;\n this.loadIcon(iconName);\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler to be called when the SVG has loaded */\n @Event() svgLoaded: EventEmitter;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n connectedCallback() {\n this.setupIconComponent();\n }\n\n componentWillLoad() {\n this.setupIconComponent();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private setupIconComponent = () => {\n this.loadIcon(this.name);\n // !TO BE REMOVED: Delete this once the deprecated `weight` property is removed\n if (!isNil(this.weight)) this.handleWeightChange();\n };\n\n private getIconSource = (name: string) => {\n if (!this.name && !this.src) return undefined;\n // Return the src if it is set\n if (this.src) return this.src;\n\n const SVG_EXTENSION = '.svg';\n const iconFileName = `${name}${SVG_EXTENSION}`;\n\n return getBasePath(iconFileName);\n };\n\n private loadIcon = (name: string) => {\n const url = this.getIconSource(name);\n getSvgContent(url, true).then(() => {\n this._svgContent = iconContent.get(url);\n this.svgLoaded.emit(this._svgContent);\n });\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const styles = {\n ...(this.color && { '--bq-icon--color': getColorCSSVariable(this.color) }),\n ...(this.size && { '--bq-icon--size': `${this.size}px` }),\n };\n\n return (\n <Host style={styles}>\n <div\n aria-label={this.label ?? `${this.name} icon`}\n class=\"flex text-[color:--bq-icon--color] bs-[--bq-icon--size] is-[--bq-icon--size]\"\n innerHTML={this._svgContent}\n part=\"base\"\n role=\"img\"\n />\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bq-card.entry.esm.js","sources":["../../packages/beeq/src/components/card/bq-card.types.ts","../../packages/beeq/src/components/card/scss/bq-card.scss?tag=bq-card&encapsulation=shadow","../../packages/beeq/src/components/card/bq-card.tsx"],"sourcesContent":["export const CARD_TYPE = ['default', 'minimal'] as const;\nexport type TCardType = (typeof CARD_TYPE)[number];\n\nexport const CARD_BORDER_RADIUS = ['none', 'xs2', 'xs', 's', 'm', 'l', 'full'] as const;\nexport type TCardBorderRadius = (typeof CARD_BORDER_RADIUS)[number];\n","/* -------------------------------------------------------------------------- */\n/* Card styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-card.variables';\n\n:host {\n @apply block;\n}\n\n.bq-card {\n border-style: var(--bq-card--borderStyle);\n}\n","import { Component, Element, h, Host, Prop, Watch } from '@stencil/core';\n\nimport { CARD_TYPE } from './bq-card.types';\nimport type { TCardBorderRadius, TCardType } from './bq-card.types';\nimport { validatePropValue } from '../../shared/utils';\n\n/**\n * The Card component serves as a versatile container designed for flexible content presentation within user interfaces.\n * Its structure accommodates various styles, allowing users to customize and adapt it according to their design preferences.\n *\n * @example How to use it\n * ```html\n * <bq-card type=\"default\" border=\"m\">\n * <div class=\"p-m\">\n * <h3 class=\"text-xl font-bold\">Card Title</h3>\n * <p class=\"text-m\">Card content goes here</p>\n * </div>\n * </bq-card>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/522abb-card\n * @status stable\n *\n * @attr {\"default\" | \"minimal\"} type - Type of card component\n * @attr {\"none\" | \"xs2\" | \"xs\" | \"s\" | \"m\" | \"l\" | \"full\"} border - The corner radius of the card component\n *\n * @slot - The content of the card component\n *\n * @part wrapper - The wrapper container `<div>` of the element inside the shadow DOM\n *\n * @cssprop --bq-card--borderColor - Card border color\n * @cssprop --bq-card--borderRadius - Card border radius\n * @cssprop --bq-card--borderStyle - Card border style\n * @cssprop --bq-card--borderWidth - Card border width\n *\n * @cssprop --bq-card--padding - Card padding\n * @cssprop --bq-card--paddingMinimal - Minimal card padding\n * @cssprop --bq-card--background - Card background color\n */\n@Component({\n tag: 'bq-card',\n styleUrl: './scss/bq-card.scss',\n shadow: true,\n})\nexport class BqCard {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqCardElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** Type of card component */\n @Prop({ reflect: true }) type: TCardType = 'default';\n\n /** The corner radius of the card component */\n @Prop({ reflect: true }) border: TCardBorderRadius = 'm';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('type')\n checkPropValue() {\n validatePropValue(CARD_TYPE, 'default', this.el, 'type');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.checkPropValue();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const style = {\n ...(this.border && { '--bq-card--borderRadius': `var(--bq-radius--${this.border})` }),\n };\n return (\n <Host style={style}>\n <div\n class={{\n 'bq-card rounded-[--bq-card--borderRadius] border-[length:--bq-card--borderWidth] border-[color:--bq-card--borderColor] bg-[--bq-card--background]':\n true,\n 'p-b-[--bq-card--padding] p-i-[--bq-card--padding]': this.type === 'default',\n // Remove padding for minimal card type\n 'p-b-0 p-i-0': this.type === 'minimal',\n }}\n part=\"wrapper\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;AAAO,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,CAAU;;ACAxD,MAAM,SAAS,GAAG,khnBAAkhnB;;MC4CvhnB,MAAM,GAAA,MAAA;;;;;;;;;;;IAiBQ,IAAI,GAAc,SAAS;;IAG3B,MAAM,GAAsB,GAAG;;;IAMxD,cAAc,GAAA;QACZ,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;;;;;;;;IAW1D,iBAAiB,GAAA;QACf,IAAI,CAAC,cAAc,EAAE;;;;;;;;;;;;;;;;;IAsBvB,MAAM,GAAA;AACJ,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,yBAAyB,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAA,CAAA,CAAG,EAAE,CAAC;SACtF;QACD,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,KAAK,EAAA,EAChB,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE;AACL,gBAAA,mJAAmJ,EACjJ,IAAI;AACN,gBAAA,mDAAmD,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;;AAE5E,gBAAA,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;AACvC,aAAA,EACD,IAAI,EAAC,SAAS,EAAA,EAEd,CAAQ,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACJ,CACD;;;;;;;;;;"}
1
+ {"version":3,"file":"bq-card.entry.esm.js","sources":["../../packages/beeq/src/components/card/bq-card.types.ts","../../packages/beeq/src/components/card/scss/bq-card.scss?tag=bq-card&encapsulation=shadow","../../packages/beeq/src/components/card/bq-card.tsx"],"sourcesContent":["export const CARD_TYPE = ['default', 'minimal'] as const;\nexport type TCardType = (typeof CARD_TYPE)[number];\n\nexport const CARD_BORDER_RADIUS = ['none', 'xs2', 'xs', 's', 'm', 'l', 'full'] as const;\nexport type TCardBorderRadius = (typeof CARD_BORDER_RADIUS)[number];\n","/* -------------------------------------------------------------------------- */\n/* Card styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-card.variables';\n\n:host {\n @apply block;\n}\n\n.bq-card {\n border-style: var(--bq-card--borderStyle);\n}\n","import { Component, Element, h, Host, Prop, Watch } from '@stencil/core';\n\nimport { CARD_TYPE } from './bq-card.types';\nimport type { TCardBorderRadius, TCardType } from './bq-card.types';\nimport { validatePropValue } from '../../shared/utils';\n\n/**\n * The Card component serves as a versatile container designed for flexible content presentation within user interfaces.\n * Its structure accommodates various styles, allowing users to customize and adapt it according to their design preferences.\n *\n * @example How to use it\n * ```html\n * <bq-card type=\"default\" border=\"m\">\n * <div class=\"p-m\">\n * <h3 class=\"text-xl font-bold\">Card Title</h3>\n * <p class=\"text-m\">Card content goes here</p>\n * </div>\n * </bq-card>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/522abb-card\n * @status stable\n *\n * @attr {\"default\" | \"minimal\"} type - Type of card component\n * @attr {\"none\" | \"xs2\" | \"xs\" | \"s\" | \"m\" | \"l\" | \"full\"} border - The corner radius of the card component\n *\n * @slot - The content of the card component\n *\n * @part wrapper - The wrapper container `<div>` of the element inside the shadow DOM\n *\n * @cssprop --bq-card--borderColor - Card border color\n * @cssprop --bq-card--borderRadius - Card border radius\n * @cssprop --bq-card--borderStyle - Card border style\n * @cssprop --bq-card--borderWidth - Card border width\n *\n * @cssprop --bq-card--padding - Card padding\n * @cssprop --bq-card--paddingMinimal - Minimal card padding\n * @cssprop --bq-card--background - Card background color\n */\n@Component({\n tag: 'bq-card',\n styleUrl: './scss/bq-card.scss',\n shadow: true,\n})\nexport class BqCard {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqCardElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** Type of card component */\n @Prop({ reflect: true }) type: TCardType = 'default';\n\n /** The corner radius of the card component */\n @Prop({ reflect: true }) border: TCardBorderRadius = 'm';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('type')\n checkPropValue() {\n validatePropValue(CARD_TYPE, 'default', this.el, 'type');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.checkPropValue();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const style = {\n ...(this.border && { '--bq-card--borderRadius': `var(--bq-radius--${this.border})` }),\n };\n return (\n <Host style={style}>\n <div\n class={{\n 'bq-card rounded-[--bq-card--borderRadius] border-[length:--bq-card--borderWidth] border-[color:--bq-card--borderColor] bg-[--bq-card--background]':\n true,\n 'p-b-[--bq-card--padding] p-i-[--bq-card--padding]': this.type === 'default',\n // Remove padding for minimal card type\n 'p-b-0 p-i-0': this.type === 'minimal',\n }}\n part=\"wrapper\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;AAAO,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,CAAU;;ACAxD,MAAM,SAAS,GAAG,0jnBAA0jnB;;MC4C/jnB,MAAM,GAAA,MAAA;;;;;;;;;;;IAiBQ,IAAI,GAAc,SAAS;;IAG3B,MAAM,GAAsB,GAAG;;;IAMxD,cAAc,GAAA;QACZ,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;;;;;;;;IAW1D,iBAAiB,GAAA;QACf,IAAI,CAAC,cAAc,EAAE;;;;;;;;;;;;;;;;;IAsBvB,MAAM,GAAA;AACJ,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,yBAAyB,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAA,CAAA,CAAG,EAAE,CAAC;SACtF;QACD,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,KAAK,EAAA,EAChB,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE;AACL,gBAAA,mJAAmJ,EACjJ,IAAI;AACN,gBAAA,mDAAmD,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;;AAE5E,gBAAA,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;AACvC,aAAA,EACD,IAAI,EAAC,SAAS,EAAA,EAEd,CAAQ,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACJ,CACD;;;;;;;;;;"}