@beeq/core 1.8.4 → 1.8.5-beta.2

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 (896) hide show
  1. package/LICENSE +201 -0
  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 -0
  5. package/dist/beeq/bq-accordion.entry.esm.js.map +1 -0
  6. package/dist/beeq/bq-alert.entry.esm.js.map +1 -0
  7. package/dist/beeq/bq-avatar.entry.esm.js.map +1 -0
  8. package/dist/beeq/bq-badge.entry.esm.js.map +1 -0
  9. package/dist/beeq/bq-breadcrumb-item.entry.esm.js.map +1 -0
  10. package/dist/beeq/bq-breadcrumb.entry.esm.js.map +1 -0
  11. package/dist/beeq/bq-button.bq-icon.entry.esm.js.map +1 -0
  12. package/dist/beeq/bq-card.entry.esm.js.map +1 -0
  13. package/dist/beeq/bq-checkbox.entry.esm.js.map +1 -0
  14. package/dist/beeq/bq-date-picker.entry.esm.js.map +1 -0
  15. package/dist/beeq/bq-dialog.entry.esm.js.map +1 -0
  16. package/dist/beeq/bq-divider.entry.esm.js.map +1 -0
  17. package/dist/beeq/bq-drawer.entry.esm.js.map +1 -0
  18. package/dist/beeq/bq-dropdown.bq-panel.entry.esm.js.map +1 -0
  19. package/dist/beeq/bq-empty-state.entry.esm.js.map +1 -0
  20. package/dist/beeq/bq-input.entry.esm.js.map +1 -0
  21. package/dist/beeq/bq-notification.entry.esm.js.map +1 -0
  22. package/dist/beeq/bq-option-group.entry.esm.js.map +1 -0
  23. package/dist/beeq/bq-option-list.bq-tag.entry.esm.js.map +1 -0
  24. package/dist/beeq/bq-option.entry.esm.js.map +1 -0
  25. package/dist/beeq/bq-page-title.entry.esm.js.map +1 -0
  26. package/dist/beeq/bq-progress.entry.esm.js.map +1 -0
  27. package/dist/beeq/bq-radio-group.entry.esm.js.map +1 -0
  28. package/dist/beeq/bq-radio.entry.esm.js.map +1 -0
  29. package/dist/beeq/bq-select.entry.esm.js.map +1 -0
  30. package/dist/beeq/bq-side-menu-item.entry.esm.js.map +1 -0
  31. package/dist/beeq/bq-side-menu.entry.esm.js.map +1 -0
  32. package/dist/beeq/bq-slider.entry.esm.js.map +1 -0
  33. package/dist/beeq/bq-spinner.entry.esm.js.map +1 -0
  34. package/dist/beeq/bq-status.entry.esm.js.map +1 -0
  35. package/dist/beeq/bq-step-item.entry.esm.js.map +1 -0
  36. package/dist/beeq/bq-steps.entry.esm.js.map +1 -0
  37. package/dist/beeq/bq-switch.entry.esm.js.map +1 -0
  38. package/dist/beeq/bq-tab-group.entry.esm.js.map +1 -0
  39. package/dist/beeq/bq-tab.entry.esm.js.map +1 -0
  40. package/dist/beeq/bq-textarea.entry.esm.js.map +1 -0
  41. package/dist/beeq/bq-toast.entry.esm.js.map +1 -0
  42. package/dist/beeq/bq-tooltip.entry.esm.js.map +1 -0
  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 -0
  46. package/dist/beeq/p-00022fe8.entry.js +6 -0
  47. package/dist/beeq/p-00022fe8.entry.js.map +1 -0
  48. package/dist/beeq/{p-a52f0ff0.entry.js → p-0b25af76.entry.js} +2 -2
  49. package/dist/beeq/p-0b25af76.entry.js.map +1 -0
  50. package/dist/beeq/{p-3ac6d599.entry.js → p-0d137bf6.entry.js} +2 -2
  51. package/dist/beeq/p-0d137bf6.entry.js.map +1 -0
  52. package/dist/beeq/{p-226f3647.entry.js → p-0d37b636.entry.js} +2 -2
  53. package/dist/beeq/p-0d37b636.entry.js.map +1 -0
  54. package/dist/beeq/{p-5fe65f50.entry.js → p-165744f3.entry.js} +2 -2
  55. package/dist/beeq/p-165744f3.entry.js.map +1 -0
  56. package/dist/beeq/{p-4fc0cf41.entry.js → p-217d6ad4.entry.js} +2 -2
  57. package/dist/beeq/p-217d6ad4.entry.js.map +1 -0
  58. package/dist/beeq/{p-d4676bbd.entry.js → p-29209d90.entry.js} +2 -2
  59. package/dist/beeq/p-29209d90.entry.js.map +1 -0
  60. package/dist/beeq/{p-1694f242.entry.js → p-2bb8c586.entry.js} +2 -2
  61. package/dist/beeq/p-2bb8c586.entry.js.map +1 -0
  62. package/dist/beeq/{p-21ef028f.entry.js → p-2ca0624c.entry.js} +2 -2
  63. package/dist/beeq/p-2ca0624c.entry.js.map +1 -0
  64. package/dist/beeq/{p-0b0a2c8a.entry.js → p-3df3af93.entry.js} +2 -2
  65. package/dist/beeq/p-3df3af93.entry.js.map +1 -0
  66. package/dist/beeq/{p-96684c94.entry.js → p-44c2a6b9.entry.js} +2 -2
  67. package/dist/beeq/p-44c2a6b9.entry.js.map +1 -0
  68. package/dist/beeq/{p-a0b2db0b.entry.js → p-4f3809da.entry.js} +2 -2
  69. package/dist/beeq/p-4f3809da.entry.js.map +1 -0
  70. package/dist/beeq/{p-115ed5b2.js → p-4iHDua0i.js} +1 -1
  71. package/dist/beeq/p-4iHDua0i.js.map +1 -0
  72. package/dist/beeq/p-52ae6a62.entry.js +6 -0
  73. package/dist/beeq/p-52ae6a62.entry.js.map +1 -0
  74. package/dist/beeq/p-542eb8fa.entry.js +6 -0
  75. package/dist/beeq/p-542eb8fa.entry.js.map +1 -0
  76. package/dist/beeq/{p-11f54320.entry.js → p-58c37e96.entry.js} +2 -2
  77. package/dist/beeq/p-58c37e96.entry.js.map +1 -0
  78. package/dist/beeq/{p-e29c46f5.entry.js → p-5ea58411.entry.js} +2 -2
  79. package/dist/beeq/p-5ea58411.entry.js.map +1 -0
  80. package/dist/beeq/p-8570c34a.entry.js +6 -0
  81. package/dist/beeq/p-8570c34a.entry.js.map +1 -0
  82. package/dist/beeq/{p-a902a347.entry.js → p-90fd4b0c.entry.js} +2 -2
  83. package/dist/beeq/p-90fd4b0c.entry.js.map +1 -0
  84. package/dist/beeq/{p-7dda6cb9.entry.js → p-999f9e20.entry.js} +2 -2
  85. package/dist/beeq/p-999f9e20.entry.js.map +1 -0
  86. package/dist/{components/p-07b82e50.js → beeq/p-B4sM1t6Z.js} +1 -1
  87. package/dist/beeq/p-B4sM1t6Z.js.map +1 -0
  88. package/dist/{components/p-99829fc7.js → beeq/p-BcPwGxIn.js} +1 -1
  89. package/dist/beeq/p-BcPwGxIn.js.map +1 -0
  90. package/dist/beeq/{p-45800965.js → p-BtYhUEAn.js} +1 -1
  91. package/dist/beeq/p-BtYhUEAn.js.map +1 -0
  92. package/dist/{components/p-57621be1.js → beeq/p-BxgDLPzX.js} +1 -1
  93. package/dist/beeq/p-BxgDLPzX.js.map +1 -0
  94. package/dist/beeq/{p-ecd27cf2.js → p-CVMdKx0v.js} +1 -1
  95. package/dist/beeq/p-CVMdKx0v.js.map +1 -0
  96. package/dist/beeq/{p-1f3a4359.js → p-Cau9SvT4.js} +1 -1
  97. package/dist/beeq/p-Cau9SvT4.js.map +1 -0
  98. package/dist/beeq/p-Ci39rxuU.js +6 -0
  99. package/dist/beeq/p-Ci39rxuU.js.map +1 -0
  100. package/dist/beeq/{p-1defeea3.js → p-D9ofIraD.js} +2 -2
  101. package/dist/beeq/p-D9ofIraD.js.map +1 -0
  102. package/dist/beeq/{p-a8cad5ab.js → p-DEUOprS4.js} +1 -1
  103. package/dist/beeq/p-DEUOprS4.js.map +1 -0
  104. package/dist/beeq/p-DG51kDIQ.js +6 -0
  105. package/dist/beeq/p-DG51kDIQ.js.map +1 -0
  106. package/dist/beeq/p-DJ_hypV7.js +6 -0
  107. package/dist/beeq/p-DJ_hypV7.js.map +1 -0
  108. package/dist/{components/p-a5dc1c94.js → beeq/p-DdvbF5yL.js} +1 -1
  109. package/dist/beeq/p-DdvbF5yL.js.map +1 -0
  110. package/dist/beeq/{p-af062402.js → p-DnkZCdMA.js} +1 -1
  111. package/dist/beeq/p-DnkZCdMA.js.map +1 -0
  112. package/dist/{components/p-1c8b6eb4.js → beeq/p-Dx-CEPSQ.js} +1 -1
  113. package/dist/beeq/p-Dx-CEPSQ.js.map +1 -0
  114. package/dist/beeq/p-DxsVp5np.js +7 -0
  115. package/dist/beeq/p-DxsVp5np.js.map +1 -0
  116. package/dist/beeq/{p-c3a0bd23.js → p-_RvVpeh2.js} +2 -2
  117. package/dist/beeq/p-_RvVpeh2.js.map +1 -0
  118. package/dist/beeq/{p-6bc7c1e5.entry.js → p-a68fbc9a.entry.js} +2 -2
  119. package/dist/beeq/p-a68fbc9a.entry.js.map +1 -0
  120. package/dist/beeq/{p-f7e3eff3.entry.js → p-a72768fd.entry.js} +2 -2
  121. package/dist/beeq/p-a72768fd.entry.js.map +1 -0
  122. package/dist/beeq/{p-7d161e60.entry.js → p-a96ffa70.entry.js} +2 -2
  123. package/dist/beeq/p-a96ffa70.entry.js.map +1 -0
  124. package/dist/beeq/{p-6aaa20c9.entry.js → p-ab5ce46e.entry.js} +2 -2
  125. package/dist/{components/p-b5306ce3.js.map → beeq/p-ab5ce46e.entry.js.map} +1 -1
  126. package/dist/beeq/{p-730ed434.entry.js → p-b07e39c4.entry.js} +2 -2
  127. package/dist/beeq/p-b07e39c4.entry.js.map +1 -0
  128. package/dist/beeq/{p-7cfca18b.entry.js → p-b724504a.entry.js} +2 -2
  129. package/dist/beeq/p-b724504a.entry.js.map +1 -0
  130. package/dist/beeq/{p-f85f1705.entry.js → p-bee9cc2b.entry.js} +2 -2
  131. package/dist/beeq/p-bee9cc2b.entry.js.map +1 -0
  132. package/dist/beeq/{p-93a3bcb5.entry.js → p-cab20c11.entry.js} +2 -2
  133. package/dist/beeq/{p-93a3bcb5.entry.js.map → p-cab20c11.entry.js.map} +1 -1
  134. package/dist/beeq/{p-d04883ab.entry.js → p-ccc302f0.entry.js} +2 -2
  135. package/dist/beeq/p-ccc302f0.entry.js.map +1 -0
  136. package/dist/beeq/{p-5837a0ea.entry.js → p-cd4f1493.entry.js} +2 -2
  137. package/dist/beeq/p-cd4f1493.entry.js.map +1 -0
  138. package/dist/beeq/p-cfec306f.entry.js +6 -0
  139. package/dist/beeq/p-cfec306f.entry.js.map +1 -0
  140. package/dist/beeq/{p-402449b6.entry.js → p-d153a008.entry.js} +2 -2
  141. package/dist/beeq/p-d153a008.entry.js.map +1 -0
  142. package/dist/beeq/{p-b4ae4315.entry.js → p-d7564e29.entry.js} +2 -2
  143. package/dist/beeq/p-d7564e29.entry.js.map +1 -0
  144. package/dist/beeq/{p-85d7bc6c.entry.js → p-da8596cf.entry.js} +2 -2
  145. package/dist/beeq/p-da8596cf.entry.js.map +1 -0
  146. package/dist/beeq/{p-0ee91951.entry.js → p-e0257fb4.entry.js} +2 -2
  147. package/dist/beeq/p-e0257fb4.entry.js.map +1 -0
  148. package/dist/beeq/{p-7af08445.entry.js → p-e29356c6.entry.js} +2 -2
  149. package/dist/beeq/p-e29356c6.entry.js.map +1 -0
  150. package/dist/beeq/{p-af9c9769.entry.js → p-f5b3e9be.entry.js} +2 -2
  151. package/dist/beeq/p-f5b3e9be.entry.js.map +1 -0
  152. package/dist/beeq/{p-4757fa1e.entry.js → p-fd79697e.entry.js} +2 -2
  153. package/dist/beeq/p-fd79697e.entry.js.map +1 -0
  154. package/dist/beeq/{p-e827f88d.entry.js → p-fea2b8c2.entry.js} +2 -2
  155. package/dist/beeq/p-fea2b8c2.entry.js.map +1 -0
  156. package/dist/beeq/{p-68944624.entry.js → p-ffcc02f7.entry.js} +2 -2
  157. package/dist/beeq/p-ffcc02f7.entry.js.map +1 -0
  158. package/dist/{components/p-260d4ca0.js → beeq/p-uqkxeAeG.js} +1 -1
  159. package/dist/beeq/p-uqkxeAeG.js.map +1 -0
  160. package/dist/beeq/{p-687da041.js → p-zh4P02Kn.js} +1 -1
  161. package/dist/beeq/p-zh4P02Kn.js.map +1 -0
  162. package/dist/beeq.html-custom-data.json +90 -90
  163. package/dist/cjs/{app-globals-42eaedec.js → app-globals-BY_z0SzA.js} +2 -1
  164. package/dist/cjs/app-globals-BY_z0SzA.js.map +1 -0
  165. package/dist/cjs/{assetsPath-bff6e1f9.js → assetsPath-CyeA6tpY.js} +4 -4
  166. package/dist/cjs/assetsPath-CyeA6tpY.js.map +1 -0
  167. package/dist/cjs/beeq.cjs.js +8 -7
  168. package/dist/cjs/beeq.cjs.js.map +1 -1
  169. package/dist/cjs/bq-accordion-group.cjs.entry.js +7 -9
  170. package/dist/cjs/bq-accordion-group.cjs.entry.js.map +1 -1
  171. package/dist/cjs/bq-accordion-group.entry.cjs.js.map +1 -0
  172. package/dist/cjs/bq-accordion.cjs.entry.js +15 -17
  173. package/dist/cjs/bq-accordion.cjs.entry.js.map +1 -1
  174. package/dist/cjs/bq-accordion.entry.cjs.js.map +1 -0
  175. package/dist/cjs/bq-alert.cjs.entry.js +17 -19
  176. package/dist/cjs/bq-alert.cjs.entry.js.map +1 -1
  177. package/dist/cjs/bq-alert.entry.cjs.js.map +1 -0
  178. package/dist/cjs/bq-avatar.cjs.entry.js +8 -10
  179. package/dist/cjs/bq-avatar.cjs.entry.js.map +1 -1
  180. package/dist/cjs/bq-avatar.entry.cjs.js.map +1 -0
  181. package/dist/cjs/bq-badge.cjs.entry.js +10 -12
  182. package/dist/cjs/bq-badge.cjs.entry.js.map +1 -1
  183. package/dist/cjs/bq-badge.entry.cjs.js.map +1 -0
  184. package/dist/cjs/bq-breadcrumb-item.cjs.entry.js +10 -12
  185. package/dist/cjs/bq-breadcrumb-item.cjs.entry.js.map +1 -1
  186. package/dist/cjs/bq-breadcrumb-item.entry.cjs.js.map +1 -0
  187. package/dist/cjs/bq-breadcrumb.cjs.entry.js +4 -6
  188. package/dist/cjs/bq-breadcrumb.cjs.entry.js.map +1 -1
  189. package/dist/cjs/bq-breadcrumb.entry.cjs.js.map +1 -0
  190. package/dist/cjs/bq-button.bq-icon.entry.cjs.js.map +1 -0
  191. package/dist/cjs/bq-button_2.cjs.entry.js +30 -30
  192. package/dist/cjs/bq-button_2.cjs.entry.js.map +1 -1
  193. package/dist/cjs/bq-card.cjs.entry.js +7 -9
  194. package/dist/cjs/bq-card.cjs.entry.js.map +1 -1
  195. package/dist/cjs/bq-card.entry.cjs.js.map +1 -0
  196. package/dist/cjs/bq-checkbox.cjs.entry.js +10 -12
  197. package/dist/cjs/bq-checkbox.cjs.entry.js.map +1 -1
  198. package/dist/cjs/bq-checkbox.entry.cjs.js.map +1 -0
  199. package/dist/cjs/bq-date-picker.cjs.entry.js +22 -24
  200. package/dist/cjs/bq-date-picker.cjs.entry.js.map +1 -1
  201. package/dist/cjs/bq-date-picker.entry.cjs.js.map +1 -0
  202. package/dist/cjs/bq-dialog.cjs.entry.js +16 -18
  203. package/dist/cjs/bq-dialog.cjs.entry.js.map +1 -1
  204. package/dist/cjs/bq-dialog.entry.cjs.js.map +1 -0
  205. package/dist/cjs/bq-divider.cjs.entry.js +12 -14
  206. package/dist/cjs/bq-divider.cjs.entry.js.map +1 -1
  207. package/dist/cjs/bq-divider.entry.cjs.js.map +1 -0
  208. package/dist/cjs/bq-drawer.cjs.entry.js +16 -18
  209. package/dist/cjs/bq-drawer.cjs.entry.js.map +1 -1
  210. package/dist/cjs/bq-drawer.entry.cjs.js.map +1 -0
  211. package/dist/cjs/bq-dropdown.bq-panel.entry.cjs.js.map +1 -0
  212. package/dist/cjs/bq-dropdown_2.cjs.entry.js +10 -13
  213. package/dist/cjs/bq-dropdown_2.cjs.entry.js.map +1 -1
  214. package/dist/cjs/bq-empty-state.cjs.entry.js +10 -12
  215. package/dist/cjs/bq-empty-state.cjs.entry.js.map +1 -1
  216. package/dist/cjs/bq-empty-state.entry.cjs.js.map +1 -0
  217. package/dist/cjs/bq-input.cjs.entry.js +19 -21
  218. package/dist/cjs/bq-input.cjs.entry.js.map +1 -1
  219. package/dist/cjs/bq-input.entry.cjs.js.map +1 -0
  220. package/dist/cjs/bq-notification.cjs.entry.js +16 -18
  221. package/dist/cjs/bq-notification.cjs.entry.js.map +1 -1
  222. package/dist/cjs/bq-notification.entry.cjs.js.map +1 -0
  223. package/dist/cjs/bq-option-group.cjs.entry.js +4 -6
  224. package/dist/cjs/bq-option-group.cjs.entry.js.map +1 -1
  225. package/dist/cjs/bq-option-group.entry.cjs.js.map +1 -0
  226. package/dist/cjs/bq-option-list.bq-tag.entry.cjs.js.map +1 -0
  227. package/dist/cjs/bq-option-list_2.cjs.entry.js +22 -25
  228. package/dist/cjs/bq-option-list_2.cjs.entry.js.map +1 -1
  229. package/dist/cjs/bq-option.cjs.entry.js +12 -14
  230. package/dist/cjs/bq-option.cjs.entry.js.map +1 -1
  231. package/dist/cjs/bq-option.entry.cjs.js.map +1 -0
  232. package/dist/cjs/bq-page-title.cjs.entry.js +5 -7
  233. package/dist/cjs/bq-page-title.cjs.entry.js.map +1 -1
  234. package/dist/cjs/bq-page-title.entry.cjs.js.map +1 -0
  235. package/dist/cjs/bq-progress.cjs.entry.js +9 -11
  236. package/dist/cjs/bq-progress.cjs.entry.js.map +1 -1
  237. package/dist/cjs/bq-progress.entry.cjs.js.map +1 -0
  238. package/dist/cjs/bq-radio-group.cjs.entry.js +10 -12
  239. package/dist/cjs/bq-radio-group.cjs.entry.js.map +1 -1
  240. package/dist/cjs/bq-radio-group.entry.cjs.js.map +1 -0
  241. package/dist/cjs/bq-radio.cjs.entry.js +10 -12
  242. package/dist/cjs/bq-radio.cjs.entry.js.map +1 -1
  243. package/dist/cjs/bq-radio.entry.cjs.js.map +1 -0
  244. package/dist/cjs/bq-select.cjs.entry.js +19 -21
  245. package/dist/cjs/bq-select.cjs.entry.js.map +1 -1
  246. package/dist/cjs/bq-select.entry.cjs.js.map +1 -0
  247. package/dist/cjs/bq-side-menu-item.cjs.entry.js +8 -10
  248. package/dist/cjs/bq-side-menu-item.cjs.entry.js.map +1 -1
  249. package/dist/cjs/bq-side-menu-item.entry.cjs.js.map +1 -0
  250. package/dist/cjs/bq-side-menu.cjs.entry.js +9 -11
  251. package/dist/cjs/bq-side-menu.cjs.entry.js.map +1 -1
  252. package/dist/cjs/bq-side-menu.entry.cjs.js.map +1 -0
  253. package/dist/cjs/bq-slider.cjs.entry.js +12 -14
  254. package/dist/cjs/bq-slider.cjs.entry.js.map +1 -1
  255. package/dist/cjs/bq-slider.entry.cjs.js.map +1 -0
  256. package/dist/cjs/bq-spinner.cjs.entry.js +14 -16
  257. package/dist/cjs/bq-spinner.cjs.entry.js.map +1 -1
  258. package/dist/cjs/bq-spinner.entry.cjs.js.map +1 -0
  259. package/dist/cjs/bq-status.cjs.entry.js +6 -8
  260. package/dist/cjs/bq-status.cjs.entry.js.map +1 -1
  261. package/dist/cjs/bq-status.entry.cjs.js.map +1 -0
  262. package/dist/cjs/bq-step-item.cjs.entry.js +11 -13
  263. package/dist/cjs/bq-step-item.cjs.entry.js.map +1 -1
  264. package/dist/cjs/bq-step-item.entry.cjs.js.map +1 -0
  265. package/dist/cjs/bq-steps.cjs.entry.js +7 -9
  266. package/dist/cjs/bq-steps.cjs.entry.js.map +1 -1
  267. package/dist/cjs/bq-steps.entry.cjs.js.map +1 -0
  268. package/dist/cjs/{bq-steps.types-4d1836d0.js → bq-steps.types-D4B3f19X.js} +2 -1
  269. package/dist/cjs/bq-steps.types-D4B3f19X.js.map +1 -0
  270. package/dist/cjs/bq-switch.cjs.entry.js +11 -13
  271. package/dist/cjs/bq-switch.cjs.entry.js.map +1 -1
  272. package/dist/cjs/bq-switch.entry.cjs.js.map +1 -0
  273. package/dist/cjs/bq-tab-group.cjs.entry.js +13 -15
  274. package/dist/cjs/bq-tab-group.cjs.entry.js.map +1 -1
  275. package/dist/cjs/bq-tab-group.entry.cjs.js.map +1 -0
  276. package/dist/cjs/bq-tab.cjs.entry.js +13 -15
  277. package/dist/cjs/bq-tab.cjs.entry.js.map +1 -1
  278. package/dist/cjs/bq-tab.entry.cjs.js.map +1 -0
  279. package/dist/cjs/{bq-tab.types-a8b320b0.js → bq-tab.types-EbesjHYK.js} +2 -1
  280. package/dist/cjs/bq-tab.types-EbesjHYK.js.map +1 -0
  281. package/dist/cjs/bq-textarea.cjs.entry.js +16 -18
  282. package/dist/cjs/bq-textarea.cjs.entry.js.map +1 -1
  283. package/dist/cjs/bq-textarea.entry.cjs.js.map +1 -0
  284. package/dist/cjs/bq-toast.cjs.entry.js +11 -13
  285. package/dist/cjs/bq-toast.cjs.entry.js.map +1 -1
  286. package/dist/cjs/bq-toast.entry.cjs.js.map +1 -0
  287. package/dist/cjs/bq-tooltip.cjs.entry.js +6 -8
  288. package/dist/cjs/bq-tooltip.cjs.entry.js.map +1 -1
  289. package/dist/cjs/bq-tooltip.entry.cjs.js.map +1 -0
  290. package/dist/cjs/{clamp-dbbea7bf.js → clamp-CceB5h7D.js} +2 -1
  291. package/dist/cjs/clamp-CceB5h7D.js.map +1 -0
  292. package/dist/cjs/{cssVariables-55ad4942.js → cssVariables-exM7Oz37.js} +3 -2
  293. package/dist/cjs/cssVariables-exM7Oz37.js.map +1 -0
  294. package/dist/cjs/{debounce-1f7e1176.js → debounce-DFaAa1Cu.js} +3 -2
  295. package/dist/cjs/debounce-DFaAa1Cu.js.map +1 -0
  296. package/dist/cjs/{event-7d21e426.js → event-BhuEFC-I.js} +2 -1
  297. package/dist/cjs/event-BhuEFC-I.js.map +1 -0
  298. package/dist/cjs/{getNextElement-4b790655.js → getNextElement-B5h_gmRG.js} +2 -1
  299. package/dist/cjs/getNextElement-B5h_gmRG.js.map +1 -0
  300. package/dist/cjs/{index-30fbd193.js → index-CD2anR4A.js} +2 -325
  301. package/dist/cjs/index-CD2anR4A.js.map +1 -0
  302. package/dist/cjs/{index-6fcc2c3c.js → index-DkHCSxhS.js} +441 -186
  303. package/dist/cjs/index-DkHCSxhS.js.map +1 -0
  304. package/dist/cjs/index.cjs.js +15 -17
  305. package/dist/cjs/index.cjs.js.map +1 -1
  306. package/dist/cjs/{isClient-c22372aa.js → isClient-CrXhXxbA.js} +2 -1
  307. package/dist/cjs/isClient-CrXhXxbA.js.map +1 -0
  308. package/dist/cjs/{isDefined-237b1214.js → isDefined-K4EcmGLZ.js} +3 -3
  309. package/dist/cjs/isDefined-K4EcmGLZ.js.map +1 -0
  310. package/dist/cjs/{isHTMLElement-729e6be0.js → isHTMLElement-DMA6t4n4.js} +2 -1
  311. package/dist/cjs/isHTMLElement-DMA6t4n4.js.map +1 -0
  312. package/dist/cjs/{isNil-f93429a2.js → isNil-CFhdj92S.js} +2 -1
  313. package/dist/cjs/isNil-CFhdj92S.js.map +1 -0
  314. package/dist/cjs/{isString-f8847c11.js → isString-CHgmxASW.js} +2 -1
  315. package/dist/cjs/isString-CHgmxASW.js.map +1 -0
  316. package/dist/cjs/loader.cjs.js +4 -5
  317. package/dist/cjs/loader.cjs.js.map +1 -1
  318. package/dist/cjs/{props-2653e993.js → props-DzFXZXSF.js} +2 -1
  319. package/dist/cjs/props-DzFXZXSF.js.map +1 -0
  320. package/dist/cjs/{slot-c3eeb29f.js → slot-DKWrtk4b.js} +2 -1
  321. package/dist/cjs/slot-DKWrtk4b.js.map +1 -0
  322. package/dist/cjs/{transition-be315790.js → transition-C0S-pYqN.js} +2 -1
  323. package/dist/cjs/transition-C0S-pYqN.js.map +1 -0
  324. package/dist/collection/_storybook/foundation/helper/index.js.map +1 -1
  325. package/dist/collection/collection-manifest.json +1 -1
  326. package/dist/collection/components/accordion/bq-accordion.js +9 -9
  327. package/dist/collection/components/accordion/bq-accordion.js.map +1 -1
  328. package/dist/collection/components/accordion/bq-accordion.types.js.map +1 -1
  329. package/dist/collection/components/accordion/helper/index.js.map +1 -1
  330. package/dist/collection/components/accordion-group/bq-accordion-group.js +6 -6
  331. package/dist/collection/components/accordion-group/bq-accordion-group.js.map +1 -1
  332. package/dist/collection/components/alert/bq-alert.js +12 -12
  333. package/dist/collection/components/alert/bq-alert.js.map +1 -1
  334. package/dist/collection/components/alert/bq-alert.types.js.map +1 -1
  335. package/dist/collection/components/avatar/bq-avatar.js +9 -9
  336. package/dist/collection/components/avatar/bq-avatar.js.map +1 -1
  337. package/dist/collection/components/avatar/bq-avatar.types.js.map +1 -1
  338. package/dist/collection/components/badge/bq-badge.js +5 -5
  339. package/dist/collection/components/badge/bq-badge.js.map +1 -1
  340. package/dist/collection/components/badge/bq-badge.types.js.map +1 -1
  341. package/dist/collection/components/breadcrumb/bq-breadcrumb.js +1 -1
  342. package/dist/collection/components/breadcrumb/bq-breadcrumb.js.map +1 -1
  343. package/dist/collection/components/breadcrumb-item/bq-breadcrumb-item.js +4 -4
  344. package/dist/collection/components/breadcrumb-item/bq-breadcrumb-item.js.map +1 -1
  345. package/dist/collection/components/button/bq-button.js +15 -15
  346. package/dist/collection/components/button/bq-button.js.map +1 -1
  347. package/dist/collection/components/button/bq-button.types.js.map +1 -1
  348. package/dist/collection/components/card/bq-card.js +4 -4
  349. package/dist/collection/components/card/bq-card.js.map +1 -1
  350. package/dist/collection/components/card/bq-card.types.js.map +1 -1
  351. package/dist/collection/components/checkbox/bq-checkbox.js +11 -11
  352. package/dist/collection/components/checkbox/bq-checkbox.js.map +1 -1
  353. package/dist/collection/components/date-picker/bq-date-picker.js +35 -33
  354. package/dist/collection/components/date-picker/bq-date-picker.js.map +1 -1
  355. package/dist/collection/components/date-picker/bq-date-picker.types.js.map +1 -1
  356. package/dist/collection/components/date-picker/helper/callyLibrary.js.map +1 -1
  357. package/dist/collection/components/dialog/bq-dialog.js +13 -13
  358. package/dist/collection/components/dialog/bq-dialog.js.map +1 -1
  359. package/dist/collection/components/dialog/bq-dialog.types.js.map +1 -1
  360. package/dist/collection/components/dialog/scss/bq-dialog.css +1 -1
  361. package/dist/collection/components/divider/bq-divider.js +13 -13
  362. package/dist/collection/components/divider/bq-divider.js.map +1 -1
  363. package/dist/collection/components/divider/bq-divider.types.js.map +1 -1
  364. package/dist/collection/components/drawer/bq-drawer.js +10 -10
  365. package/dist/collection/components/drawer/bq-drawer.js.map +1 -1
  366. package/dist/collection/components/drawer/bq-drawer.types.js.map +1 -1
  367. package/dist/collection/components/dropdown/bq-dropdown.js +10 -10
  368. package/dist/collection/components/dropdown/bq-dropdown.js.map +1 -1
  369. package/dist/collection/components/empty-state/bq-empty-state.js +5 -5
  370. package/dist/collection/components/empty-state/bq-empty-state.js.map +1 -1
  371. package/dist/collection/components/empty-state/bq-empty-state.types.js.map +1 -1
  372. package/dist/collection/components/icon/bq-icon.js +8 -8
  373. package/dist/collection/components/icon/bq-icon.js.map +1 -1
  374. package/dist/collection/components/icon/bq-icon.types.js.map +1 -1
  375. package/dist/collection/components/icon/helper/request.js +4 -3
  376. package/dist/collection/components/icon/helper/request.js.map +1 -1
  377. package/dist/collection/components/input/bq-input.js +28 -28
  378. package/dist/collection/components/input/bq-input.js.map +1 -1
  379. package/dist/collection/components/input/bq-input.types.js.map +1 -1
  380. package/dist/collection/components/notification/bq-notification.js +9 -9
  381. package/dist/collection/components/notification/bq-notification.js.map +1 -1
  382. package/dist/collection/components/notification/bq-notification.types.js.map +1 -1
  383. package/dist/collection/components/notification/scss/bq-notification.css +1 -1
  384. package/dist/collection/components/option/bq-option.js +8 -8
  385. package/dist/collection/components/option/bq-option.js.map +1 -1
  386. package/dist/collection/components/option-group/bq-option-group.js.map +1 -1
  387. package/dist/collection/components/option-list/bq-option-list.js +2 -2
  388. package/dist/collection/components/option-list/bq-option-list.js.map +1 -1
  389. package/dist/collection/components/page-title/bq-page-title.js.map +1 -1
  390. package/dist/collection/components/panel/bq-panel.js +7 -7
  391. package/dist/collection/components/panel/bq-panel.js.map +1 -1
  392. package/dist/collection/components/progress/bq-progress.js +12 -12
  393. package/dist/collection/components/progress/bq-progress.js.map +1 -1
  394. package/dist/collection/components/progress/bq-progress.types.js.map +1 -1
  395. package/dist/collection/components/radio/bq-radio.js +9 -9
  396. package/dist/collection/components/radio/bq-radio.js.map +1 -1
  397. package/dist/collection/components/radio-group/bq-radio-group.js +10 -10
  398. package/dist/collection/components/radio-group/bq-radio-group.js.map +1 -1
  399. package/dist/collection/components/radio-group/bq-radio-group.types.js.map +1 -1
  400. package/dist/collection/components/select/bq-select.js +29 -29
  401. package/dist/collection/components/select/bq-select.js.map +1 -1
  402. package/dist/collection/components/side-menu/bq-side-menu.js +5 -5
  403. package/dist/collection/components/side-menu/bq-side-menu.js.map +1 -1
  404. package/dist/collection/components/side-menu/bq-side-menu.types.js.map +1 -1
  405. package/dist/collection/components/side-menu-item/bq-side-menu-item.js +3 -3
  406. package/dist/collection/components/side-menu-item/bq-side-menu-item.js.map +1 -1
  407. package/dist/collection/components/slider/bq-slider.js +14 -14
  408. package/dist/collection/components/slider/bq-slider.js.map +1 -1
  409. package/dist/collection/components/slider/bq-slider.types.js.map +1 -1
  410. package/dist/collection/components/spinner/bq-spinner.js +7 -7
  411. package/dist/collection/components/spinner/bq-spinner.js.map +1 -1
  412. package/dist/collection/components/spinner/bq-spinner.types.js.map +1 -1
  413. package/dist/collection/components/status/bq-status.js +2 -2
  414. package/dist/collection/components/status/bq-status.js.map +1 -1
  415. package/dist/collection/components/status/bq-status.types.js.map +1 -1
  416. package/dist/collection/components/step-item/bq-step-item.js +7 -7
  417. package/dist/collection/components/step-item/bq-step-item.js.map +1 -1
  418. package/dist/collection/components/step-item/bq-step-item.types.js.map +1 -1
  419. package/dist/collection/components/steps/bq-steps.js +4 -4
  420. package/dist/collection/components/steps/bq-steps.js.map +1 -1
  421. package/dist/collection/components/steps/bq-steps.types.js.map +1 -1
  422. package/dist/collection/components/switch/bq-switch.js +14 -14
  423. package/dist/collection/components/switch/bq-switch.js.map +1 -1
  424. package/dist/collection/components/switch/bq-switch.types.js.map +1 -1
  425. package/dist/collection/components/tab/bq-tab.js +9 -9
  426. package/dist/collection/components/tab/bq-tab.js.map +1 -1
  427. package/dist/collection/components/tab/bq-tab.types.js.map +1 -1
  428. package/dist/collection/components/tab-group/bq-tab-group.js +10 -10
  429. package/dist/collection/components/tab-group/bq-tab-group.js.map +1 -1
  430. package/dist/collection/components/tag/bq-tag.js +12 -12
  431. package/dist/collection/components/tag/bq-tag.js.map +1 -1
  432. package/dist/collection/components/tag/bq-tag.types.js.map +1 -1
  433. package/dist/collection/components/tag/helper/index.js.map +1 -1
  434. package/dist/collection/components/textarea/bq-textarea.js +23 -23
  435. package/dist/collection/components/textarea/bq-textarea.js.map +1 -1
  436. package/dist/collection/components/textarea/bq-textarea.types.js.map +1 -1
  437. package/dist/collection/components/toast/bq-toast.js +7 -7
  438. package/dist/collection/components/toast/bq-toast.js.map +1 -1
  439. package/dist/collection/components/toast/bq-toast.types.js.map +1 -1
  440. package/dist/collection/components/tooltip/bq-tooltip.js +8 -8
  441. package/dist/collection/components/tooltip/bq-tooltip.js.map +1 -1
  442. package/dist/collection/components/tooltip/bq-tooltip.types.js.map +1 -1
  443. package/dist/collection/index.js.map +1 -1
  444. package/dist/collection/services/interfaces/floating-ui.js.map +1 -1
  445. package/dist/collection/services/interfaces/index.js.map +1 -1
  446. package/dist/collection/services/libraries/floating-ui/index.js.map +1 -1
  447. package/dist/collection/services/libraries/index.js.map +1 -1
  448. package/dist/collection/shared/test-utils/computedStyle.js.map +1 -1
  449. package/dist/collection/shared/test-utils/index.js.map +1 -1
  450. package/dist/collection/shared/test-utils/setProperties.js.map +1 -1
  451. package/dist/collection/shared/test-utils/sleep.js.map +1 -1
  452. package/dist/collection/shared/utils/assetsPath.js +2 -3
  453. package/dist/collection/shared/utils/assetsPath.js.map +1 -1
  454. package/dist/collection/shared/utils/clamp.js.map +1 -1
  455. package/dist/collection/shared/utils/cssVariables.js.map +1 -1
  456. package/dist/collection/shared/utils/debounce.js.map +1 -1
  457. package/dist/collection/shared/utils/event.js.map +1 -1
  458. package/dist/collection/shared/utils/getNextElement.js.map +1 -1
  459. package/dist/collection/shared/utils/getRandom.js.map +1 -1
  460. package/dist/collection/shared/utils/index.js.map +1 -1
  461. package/dist/collection/shared/utils/isClient.js.map +1 -1
  462. package/dist/collection/shared/utils/isDefined.js.map +1 -1
  463. package/dist/collection/shared/utils/isEmpty.js.map +1 -1
  464. package/dist/collection/shared/utils/isHTMLElement.js.map +1 -1
  465. package/dist/collection/shared/utils/isNil.js.map +1 -1
  466. package/dist/collection/shared/utils/isString.js.map +1 -1
  467. package/dist/collection/shared/utils/props.js.map +1 -1
  468. package/dist/collection/shared/utils/setRafTimeout.js.map +1 -1
  469. package/dist/collection/shared/utils/slot.js.map +1 -1
  470. package/dist/collection/shared/utils/transition.js.map +1 -1
  471. package/dist/collection/tools/angular-value-accessor-config.js.map +1 -1
  472. package/dist/collection/tools/generate-custom-elements-json.js.map +1 -1
  473. package/dist/collection/tools/index.js.map +1 -1
  474. package/dist/collection/tools/vue-model-config.js.map +1 -1
  475. package/dist/components/bq-accordion-group.js +1 -1
  476. package/dist/components/bq-accordion-group.js.map +1 -1
  477. package/dist/components/bq-accordion.js +1 -1
  478. package/dist/components/bq-accordion.js.map +1 -1
  479. package/dist/components/bq-alert.js +1 -1
  480. package/dist/components/bq-alert.js.map +1 -1
  481. package/dist/components/bq-avatar.js +1 -1
  482. package/dist/components/bq-avatar.js.map +1 -1
  483. package/dist/components/bq-badge.js +1 -1
  484. package/dist/components/bq-breadcrumb-item.js +1 -1
  485. package/dist/components/bq-breadcrumb-item.js.map +1 -1
  486. package/dist/components/bq-breadcrumb.js +1 -1
  487. package/dist/components/bq-breadcrumb.js.map +1 -1
  488. package/dist/components/bq-button.js +1 -1
  489. package/dist/components/bq-card.js +1 -1
  490. package/dist/components/bq-card.js.map +1 -1
  491. package/dist/components/bq-checkbox.js +1 -1
  492. package/dist/components/bq-checkbox.js.map +1 -1
  493. package/dist/components/bq-date-picker.js +1 -1
  494. package/dist/components/bq-date-picker.js.map +1 -1
  495. package/dist/components/bq-dialog.js +1 -1
  496. package/dist/components/bq-dialog.js.map +1 -1
  497. package/dist/components/bq-divider.js +1 -1
  498. package/dist/components/bq-drawer.js +1 -1
  499. package/dist/components/bq-drawer.js.map +1 -1
  500. package/dist/components/bq-dropdown.js +1 -1
  501. package/dist/components/bq-empty-state.js +1 -1
  502. package/dist/components/bq-empty-state.js.map +1 -1
  503. package/dist/components/bq-icon.js +1 -1
  504. package/dist/components/bq-input.js +1 -1
  505. package/dist/components/bq-input.js.map +1 -1
  506. package/dist/components/bq-notification.js +1 -1
  507. package/dist/components/bq-notification.js.map +1 -1
  508. package/dist/components/bq-option-group.js +1 -1
  509. package/dist/components/bq-option-group.js.map +1 -1
  510. package/dist/components/bq-option-list.js +1 -1
  511. package/dist/components/bq-option.js +1 -1
  512. package/dist/components/bq-option.js.map +1 -1
  513. package/dist/components/bq-page-title.js +1 -1
  514. package/dist/components/bq-page-title.js.map +1 -1
  515. package/dist/components/bq-panel.js +1 -1
  516. package/dist/components/bq-progress.js +1 -1
  517. package/dist/components/bq-progress.js.map +1 -1
  518. package/dist/components/bq-radio-group.js +1 -1
  519. package/dist/components/bq-radio-group.js.map +1 -1
  520. package/dist/components/bq-radio.js +1 -1
  521. package/dist/components/bq-radio.js.map +1 -1
  522. package/dist/components/bq-select.js +1 -1
  523. package/dist/components/bq-select.js.map +1 -1
  524. package/dist/components/bq-side-menu-item.js +1 -1
  525. package/dist/components/bq-side-menu-item.js.map +1 -1
  526. package/dist/components/bq-side-menu.js +1 -1
  527. package/dist/components/bq-side-menu.js.map +1 -1
  528. package/dist/components/bq-slider.js +1 -1
  529. package/dist/components/bq-slider.js.map +1 -1
  530. package/dist/components/bq-spinner.js +1 -1
  531. package/dist/components/bq-spinner.js.map +1 -1
  532. package/dist/components/bq-status.js +1 -1
  533. package/dist/components/bq-status.js.map +1 -1
  534. package/dist/components/bq-step-item.js +1 -1
  535. package/dist/components/bq-step-item.js.map +1 -1
  536. package/dist/components/bq-steps.js +1 -1
  537. package/dist/components/bq-steps.js.map +1 -1
  538. package/dist/components/bq-switch.js +1 -1
  539. package/dist/components/bq-switch.js.map +1 -1
  540. package/dist/components/bq-tab-group.js +1 -1
  541. package/dist/components/bq-tab-group.js.map +1 -1
  542. package/dist/components/bq-tab.js +1 -1
  543. package/dist/components/bq-tab.js.map +1 -1
  544. package/dist/components/bq-tag.js +1 -1
  545. package/dist/components/bq-textarea.js +1 -1
  546. package/dist/components/bq-textarea.js.map +1 -1
  547. package/dist/components/bq-toast.js +1 -1
  548. package/dist/components/bq-toast.js.map +1 -1
  549. package/dist/components/bq-tooltip.js +1 -1
  550. package/dist/components/index.js +1 -1
  551. package/dist/components/index.js.map +1 -1
  552. package/dist/components/{p-afef286d.js → p-3yNfc1gW.js} +2 -2
  553. package/dist/components/p-3yNfc1gW.js.map +1 -0
  554. package/dist/{beeq/p-07b82e50.js → components/p-B4sM1t6Z.js} +1 -1
  555. package/dist/components/{p-07b82e50.js.map → p-B4sM1t6Z.js.map} +1 -1
  556. package/dist/{beeq/p-99829fc7.js → components/p-BcPwGxIn.js} +1 -1
  557. package/dist/{beeq/p-99829fc7.js.map → components/p-BcPwGxIn.js.map} +1 -1
  558. package/dist/{beeq/p-57621be1.js → components/p-BxgDLPzX.js} +1 -1
  559. package/dist/components/{p-66fcce92.js → p-BzsDSFgf.js} +2 -2
  560. package/dist/components/p-BzsDSFgf.js.map +1 -0
  561. package/dist/components/{p-ecd27cf2.js → p-CVMdKx0v.js} +1 -1
  562. package/dist/{beeq/p-ecd27cf2.js.map → components/p-CVMdKx0v.js.map} +1 -1
  563. package/dist/components/p-Ci39rxuU.js +6 -0
  564. package/dist/{beeq/p-9ecdbeec.js.map → components/p-Ci39rxuU.js.map} +1 -1
  565. package/dist/components/{p-1defeea3.js → p-D9ofIraD.js} +2 -2
  566. package/dist/{beeq/p-1defeea3.js.map → components/p-D9ofIraD.js.map} +1 -1
  567. package/dist/components/{p-242345e1.js → p-DBUH9nOd.js} +2 -2
  568. package/dist/components/p-DBUH9nOd.js.map +1 -0
  569. package/dist/components/{p-a8cad5ab.js → p-DEUOprS4.js} +1 -1
  570. package/dist/{beeq/p-a8cad5ab.js.map → components/p-DEUOprS4.js.map} +1 -1
  571. package/dist/components/p-DFcM00d7.js +6 -0
  572. package/dist/components/p-DFcM00d7.js.map +1 -0
  573. package/dist/components/p-DJ_hypV7.js +6 -0
  574. package/dist/{esm/index-d4eea621.js.map → components/p-DJ_hypV7.js.map} +1 -1
  575. package/dist/components/{p-dfb2cbb5.js → p-DWElqaGc.js} +2 -2
  576. package/dist/components/p-DWElqaGc.js.map +1 -0
  577. package/dist/{beeq/p-a5dc1c94.js → components/p-DdvbF5yL.js} +1 -1
  578. package/dist/components/{p-a5dc1c94.js.map → p-DdvbF5yL.js.map} +1 -1
  579. package/dist/components/p-DkbxITg_.js +6 -0
  580. package/dist/components/p-DkbxITg_.js.map +1 -0
  581. package/dist/components/{p-af062402.js → p-DnkZCdMA.js} +1 -1
  582. package/dist/{beeq/p-af062402.js.map → components/p-DnkZCdMA.js.map} +1 -1
  583. package/dist/{beeq/p-1c8b6eb4.js → components/p-Dx-CEPSQ.js} +1 -1
  584. package/dist/components/{p-fd965589.js → p-VAzCkxML.js} +2 -2
  585. package/dist/components/p-VAzCkxML.js.map +1 -0
  586. package/dist/components/{p-2aab0744.js → p-WHcChQx3.js} +2 -2
  587. package/dist/components/p-WHcChQx3.js.map +1 -0
  588. package/dist/components/{p-c3a0bd23.js → p-_RvVpeh2.js} +2 -2
  589. package/dist/{beeq/p-c3a0bd23.js.map → components/p-_RvVpeh2.js.map} +1 -1
  590. package/dist/components/{p-51027528.js → p-iu8JIKCE.js} +2 -2
  591. package/dist/components/p-iu8JIKCE.js.map +1 -0
  592. package/dist/{beeq/p-260d4ca0.js → components/p-uqkxeAeG.js} +1 -1
  593. package/dist/components/{p-260d4ca0.js.map → p-uqkxeAeG.js.map} +1 -1
  594. package/dist/components/{p-b5306ce3.js → p-vwcgzTkx.js} +2 -2
  595. package/dist/components/p-vwcgzTkx.js.map +1 -0
  596. package/dist/components/{p-687da041.js → p-zh4P02Kn.js} +1 -1
  597. package/dist/{beeq/p-687da041.js.map → components/p-zh4P02Kn.js.map} +1 -1
  598. package/dist/custom-elements.json +1160 -1160
  599. package/dist/esm/{app-globals-7655df21.js → app-globals-BtYhUEAn.js} +2 -1
  600. package/dist/esm/app-globals-BtYhUEAn.js.map +1 -0
  601. package/dist/esm/{assetsPath-14f18f9a.js → assetsPath-v2hVBSPV.js} +4 -4
  602. package/dist/esm/assetsPath-v2hVBSPV.js.map +1 -0
  603. package/dist/esm/beeq.js +7 -5
  604. package/dist/esm/beeq.js.map +1 -1
  605. package/dist/esm/bq-accordion-group.entry.js +7 -7
  606. package/dist/esm/bq-accordion-group.entry.js.map +1 -1
  607. package/dist/esm/bq-accordion.entry.js +15 -15
  608. package/dist/esm/bq-accordion.entry.js.map +1 -1
  609. package/dist/esm/bq-alert.entry.js +17 -17
  610. package/dist/esm/bq-alert.entry.js.map +1 -1
  611. package/dist/esm/bq-avatar.entry.js +8 -8
  612. package/dist/esm/bq-avatar.entry.js.map +1 -1
  613. package/dist/esm/bq-badge.entry.js +10 -10
  614. package/dist/esm/bq-badge.entry.js.map +1 -1
  615. package/dist/esm/bq-breadcrumb-item.entry.js +10 -10
  616. package/dist/esm/bq-breadcrumb-item.entry.js.map +1 -1
  617. package/dist/esm/bq-breadcrumb.entry.js +4 -4
  618. package/dist/esm/bq-breadcrumb.entry.js.map +1 -1
  619. package/dist/esm/bq-button.bq-icon.entry.js.map +1 -0
  620. package/dist/esm/bq-button_2.entry.js +30 -28
  621. package/dist/esm/bq-button_2.entry.js.map +1 -1
  622. package/dist/esm/bq-card.entry.js +7 -7
  623. package/dist/esm/bq-card.entry.js.map +1 -1
  624. package/dist/esm/bq-checkbox.entry.js +10 -10
  625. package/dist/esm/bq-checkbox.entry.js.map +1 -1
  626. package/dist/esm/bq-date-picker.entry.js +22 -22
  627. package/dist/esm/bq-date-picker.entry.js.map +1 -1
  628. package/dist/esm/bq-dialog.entry.js +16 -16
  629. package/dist/esm/bq-dialog.entry.js.map +1 -1
  630. package/dist/esm/bq-divider.entry.js +12 -12
  631. package/dist/esm/bq-divider.entry.js.map +1 -1
  632. package/dist/esm/bq-drawer.entry.js +16 -16
  633. package/dist/esm/bq-drawer.entry.js.map +1 -1
  634. package/dist/esm/bq-dropdown.bq-panel.entry.js.map +1 -0
  635. package/dist/esm/bq-dropdown_2.entry.js +10 -11
  636. package/dist/esm/bq-dropdown_2.entry.js.map +1 -1
  637. package/dist/esm/bq-empty-state.entry.js +10 -10
  638. package/dist/esm/bq-empty-state.entry.js.map +1 -1
  639. package/dist/esm/bq-input.entry.js +19 -19
  640. package/dist/esm/bq-input.entry.js.map +1 -1
  641. package/dist/esm/bq-notification.entry.js +16 -16
  642. package/dist/esm/bq-notification.entry.js.map +1 -1
  643. package/dist/esm/bq-option-group.entry.js +4 -4
  644. package/dist/esm/bq-option-group.entry.js.map +1 -1
  645. package/dist/esm/bq-option-list.bq-tag.entry.js.map +1 -0
  646. package/dist/esm/bq-option-list_2.entry.js +22 -23
  647. package/dist/esm/bq-option-list_2.entry.js.map +1 -1
  648. package/dist/esm/bq-option.entry.js +12 -12
  649. package/dist/esm/bq-option.entry.js.map +1 -1
  650. package/dist/esm/bq-page-title.entry.js +5 -5
  651. package/dist/esm/bq-page-title.entry.js.map +1 -1
  652. package/dist/esm/bq-progress.entry.js +9 -9
  653. package/dist/esm/bq-progress.entry.js.map +1 -1
  654. package/dist/esm/bq-radio-group.entry.js +10 -10
  655. package/dist/esm/bq-radio-group.entry.js.map +1 -1
  656. package/dist/esm/bq-radio.entry.js +10 -10
  657. package/dist/esm/bq-radio.entry.js.map +1 -1
  658. package/dist/esm/bq-select.entry.js +19 -19
  659. package/dist/esm/bq-select.entry.js.map +1 -1
  660. package/dist/esm/bq-side-menu-item.entry.js +8 -8
  661. package/dist/esm/bq-side-menu-item.entry.js.map +1 -1
  662. package/dist/esm/bq-side-menu.entry.js +9 -9
  663. package/dist/esm/bq-side-menu.entry.js.map +1 -1
  664. package/dist/esm/bq-slider.entry.js +12 -12
  665. package/dist/esm/bq-slider.entry.js.map +1 -1
  666. package/dist/esm/bq-spinner.entry.js +14 -14
  667. package/dist/esm/bq-spinner.entry.js.map +1 -1
  668. package/dist/esm/bq-status.entry.js +6 -6
  669. package/dist/esm/bq-status.entry.js.map +1 -1
  670. package/dist/esm/bq-step-item.entry.js +11 -11
  671. package/dist/esm/bq-step-item.entry.js.map +1 -1
  672. package/dist/esm/bq-steps.entry.js +7 -7
  673. package/dist/esm/bq-steps.entry.js.map +1 -1
  674. package/dist/esm/{bq-steps.types-3a84b1e3.js → bq-steps.types-DEUOprS4.js} +2 -1
  675. package/dist/{components/p-a8cad5ab.js.map → esm/bq-steps.types-DEUOprS4.js.map} +1 -1
  676. package/dist/esm/bq-switch.entry.js +11 -11
  677. package/dist/esm/bq-switch.entry.js.map +1 -1
  678. package/dist/esm/bq-tab-group.entry.js +13 -13
  679. package/dist/esm/bq-tab-group.entry.js.map +1 -1
  680. package/dist/esm/bq-tab.entry.js +13 -13
  681. package/dist/esm/bq-tab.entry.js.map +1 -1
  682. package/dist/esm/{bq-tab.types-36e2666e.js → bq-tab.types-DnkZCdMA.js} +2 -1
  683. package/dist/esm/bq-tab.types-DnkZCdMA.js.map +1 -0
  684. package/dist/esm/bq-textarea.entry.js +16 -16
  685. package/dist/esm/bq-textarea.entry.js.map +1 -1
  686. package/dist/esm/bq-toast.entry.js +11 -11
  687. package/dist/esm/bq-toast.entry.js.map +1 -1
  688. package/dist/esm/bq-tooltip.entry.js +6 -6
  689. package/dist/esm/bq-tooltip.entry.js.map +1 -1
  690. package/dist/esm/{clamp-efa6c596.js → clamp-Cau9SvT4.js} +2 -1
  691. package/dist/esm/clamp-Cau9SvT4.js.map +1 -0
  692. package/dist/esm/{cssVariables-3665b51c.js → cssVariables-CyiWA5Ok.js} +3 -2
  693. package/dist/esm/cssVariables-CyiWA5Ok.js.map +1 -0
  694. package/dist/esm/{debounce-3e72f418.js → debounce-cjfQylgg.js} +3 -2
  695. package/dist/esm/debounce-cjfQylgg.js.map +1 -0
  696. package/dist/esm/{event-9ce1db79.js → event-Dx-CEPSQ.js} +2 -1
  697. package/dist/esm/event-Dx-CEPSQ.js.map +1 -0
  698. package/dist/esm/{getNextElement-8bcc2025.js → getNextElement-4iHDua0i.js} +2 -1
  699. package/dist/esm/getNextElement-4iHDua0i.js.map +1 -0
  700. package/dist/esm/{index-d4eea621.js → index-DJ_hypV7.js} +2 -325
  701. package/dist/esm/index-DJ_hypV7.js.map +1 -0
  702. package/dist/esm/{index-4e4c39e8.js → index-DxsVp5np.js} +439 -164
  703. package/dist/esm/index-DxsVp5np.js.map +1 -0
  704. package/dist/esm/index.js +16 -18
  705. package/dist/esm/index.js.map +1 -1
  706. package/dist/esm/{isClient-c6eae7ba.js → isClient-B4sM1t6Z.js} +2 -1
  707. package/dist/esm/isClient-B4sM1t6Z.js.map +1 -0
  708. package/dist/esm/{isDefined-7a919d19.js → isDefined-DjmcVyb_.js} +3 -3
  709. package/dist/esm/isDefined-DjmcVyb_.js.map +1 -0
  710. package/dist/esm/{isHTMLElement-0271eefe.js → isHTMLElement-BxgDLPzX.js} +2 -1
  711. package/dist/esm/isHTMLElement-BxgDLPzX.js.map +1 -0
  712. package/dist/esm/{isNil-2290f64e.js → isNil-BcPwGxIn.js} +2 -1
  713. package/dist/esm/isNil-BcPwGxIn.js.map +1 -0
  714. package/dist/esm/{isString-9820a2b7.js → isString-CVMdKx0v.js} +2 -1
  715. package/dist/esm/isString-CVMdKx0v.js.map +1 -0
  716. package/dist/esm/loader.js +5 -4
  717. package/dist/esm/loader.js.map +1 -1
  718. package/dist/esm/{props-3bf7f546.js → props-zh4P02Kn.js} +2 -1
  719. package/dist/esm/props-zh4P02Kn.js.map +1 -0
  720. package/dist/esm/{slot-be230a01.js → slot-uqkxeAeG.js} +2 -1
  721. package/dist/esm/slot-uqkxeAeG.js.map +1 -0
  722. package/dist/esm/{transition-916fd7c0.js → transition-DdvbF5yL.js} +2 -1
  723. package/dist/esm/transition-DdvbF5yL.js.map +1 -0
  724. package/dist/hydrate/index.d.ts +12 -0
  725. package/dist/hydrate/index.js +1540 -1461
  726. package/dist/hydrate/index.mjs +1539 -1460
  727. package/dist/jest.config.js +20 -0
  728. package/dist/jest.config.js.map +1 -0
  729. package/dist/stencil.config.js +3 -3
  730. package/dist/stencil.config.js.map +1 -1
  731. package/dist/types/Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System/.stencil/packages/beeq/jest.config.d.ts +16 -0
  732. package/dist/types/Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System/.stencil/packages/beeq/stencil.config.d.ts +2 -0
  733. package/dist/types/components/accordion/bq-accordion.d.ts +2 -2
  734. package/dist/types/components/accordion-group/bq-accordion-group.d.ts +1 -1
  735. package/dist/types/components/alert/bq-alert.d.ts +2 -2
  736. package/dist/types/components/avatar/bq-avatar.d.ts +1 -1
  737. package/dist/types/components/badge/bq-badge.d.ts +1 -1
  738. package/dist/types/components/breadcrumb-item/bq-breadcrumb-item.d.ts +1 -1
  739. package/dist/types/components/button/bq-button.d.ts +2 -2
  740. package/dist/types/components/card/bq-card.d.ts +1 -1
  741. package/dist/types/components/checkbox/bq-checkbox.d.ts +1 -1
  742. package/dist/types/components/date-picker/bq-date-picker.d.ts +4 -4
  743. package/dist/types/components/dialog/bq-dialog.d.ts +2 -2
  744. package/dist/types/components/divider/bq-divider.d.ts +1 -1
  745. package/dist/types/components/drawer/bq-drawer.d.ts +2 -2
  746. package/dist/types/components/dropdown/bq-dropdown.d.ts +2 -2
  747. package/dist/types/components/empty-state/bq-empty-state.d.ts +1 -1
  748. package/dist/types/components/icon/bq-icon.d.ts +2 -2
  749. package/dist/types/components/input/bq-input.d.ts +2 -2
  750. package/dist/types/components/notification/bq-notification.d.ts +2 -2
  751. package/dist/types/components/option/bq-option.d.ts +1 -1
  752. package/dist/types/components/option-list/bq-option-list.d.ts +1 -1
  753. package/dist/types/components/panel/bq-panel.d.ts +1 -1
  754. package/dist/types/components/progress/bq-progress.d.ts +1 -1
  755. package/dist/types/components/radio/bq-radio.d.ts +1 -1
  756. package/dist/types/components/radio-group/bq-radio-group.d.ts +2 -2
  757. package/dist/types/components/select/bq-select.d.ts +3 -3
  758. package/dist/types/components/side-menu/bq-side-menu.d.ts +2 -2
  759. package/dist/types/components/side-menu-item/bq-side-menu-item.d.ts +1 -1
  760. package/dist/types/components/slider/bq-slider.d.ts +2 -2
  761. package/dist/types/components/spinner/bq-spinner.d.ts +1 -1
  762. package/dist/types/components/status/bq-status.d.ts +1 -1
  763. package/dist/types/components/step-item/bq-step-item.d.ts +3 -3
  764. package/dist/types/components/steps/bq-steps.d.ts +1 -1
  765. package/dist/types/components/switch/bq-switch.d.ts +2 -2
  766. package/dist/types/components/tab/bq-tab.d.ts +2 -2
  767. package/dist/types/components/tab-group/bq-tab-group.d.ts +2 -2
  768. package/dist/types/components/tag/bq-tag.d.ts +2 -2
  769. package/dist/types/components/textarea/bq-textarea.d.ts +3 -3
  770. package/dist/types/components/toast/bq-toast.d.ts +2 -2
  771. package/dist/types/components/tooltip/bq-tooltip.d.ts +1 -1
  772. package/dist/types/global.d.ts +18 -0
  773. package/dist/types/services/interfaces/floating-ui.d.ts +1 -1
  774. package/dist/types/stencil-public-runtime.d.ts +22 -0
  775. package/package.json +2 -2
  776. package/dist/beeq/p-0338b2f9.entry.js +0 -6
  777. package/dist/beeq/p-0338b2f9.entry.js.map +0 -1
  778. package/dist/beeq/p-07b82e50.js.map +0 -1
  779. package/dist/beeq/p-0b0a2c8a.entry.js.map +0 -1
  780. package/dist/beeq/p-0ee91951.entry.js.map +0 -1
  781. package/dist/beeq/p-115ed5b2.js.map +0 -1
  782. package/dist/beeq/p-11f54320.entry.js.map +0 -1
  783. package/dist/beeq/p-1694f242.entry.js.map +0 -1
  784. package/dist/beeq/p-1f3a4359.js.map +0 -1
  785. package/dist/beeq/p-21ef028f.entry.js.map +0 -1
  786. package/dist/beeq/p-226f3647.entry.js.map +0 -1
  787. package/dist/beeq/p-260d4ca0.js.map +0 -1
  788. package/dist/beeq/p-2f55e11f.entry.js +0 -6
  789. package/dist/beeq/p-2f55e11f.entry.js.map +0 -1
  790. package/dist/beeq/p-397bc507.js +0 -6
  791. package/dist/beeq/p-397bc507.js.map +0 -1
  792. package/dist/beeq/p-3ac6d599.entry.js.map +0 -1
  793. package/dist/beeq/p-402449b6.entry.js.map +0 -1
  794. package/dist/beeq/p-45800965.js.map +0 -1
  795. package/dist/beeq/p-4757fa1e.entry.js.map +0 -1
  796. package/dist/beeq/p-49b40ec5.entry.js +0 -6
  797. package/dist/beeq/p-49b40ec5.entry.js.map +0 -1
  798. package/dist/beeq/p-4fc0cf41.entry.js.map +0 -1
  799. package/dist/beeq/p-5837a0ea.entry.js.map +0 -1
  800. package/dist/beeq/p-5e4edb8a.entry.js +0 -6
  801. package/dist/beeq/p-5e4edb8a.entry.js.map +0 -1
  802. package/dist/beeq/p-5fe65f50.entry.js.map +0 -1
  803. package/dist/beeq/p-68944624.entry.js.map +0 -1
  804. package/dist/beeq/p-6aaa20c9.entry.js.map +0 -1
  805. package/dist/beeq/p-6bc7c1e5.entry.js.map +0 -1
  806. package/dist/beeq/p-730ed434.entry.js.map +0 -1
  807. package/dist/beeq/p-7af08445.entry.js.map +0 -1
  808. package/dist/beeq/p-7cfca18b.entry.js.map +0 -1
  809. package/dist/beeq/p-7d161e60.entry.js.map +0 -1
  810. package/dist/beeq/p-7dda6cb9.entry.js.map +0 -1
  811. package/dist/beeq/p-85d7bc6c.entry.js.map +0 -1
  812. package/dist/beeq/p-96684c94.entry.js.map +0 -1
  813. package/dist/beeq/p-9ecdbeec.js +0 -6
  814. package/dist/beeq/p-a035d288.js +0 -6
  815. package/dist/beeq/p-a035d288.js.map +0 -1
  816. package/dist/beeq/p-a0b2db0b.entry.js.map +0 -1
  817. package/dist/beeq/p-a52f0ff0.entry.js.map +0 -1
  818. package/dist/beeq/p-a5dc1c94.js.map +0 -1
  819. package/dist/beeq/p-a902a347.entry.js.map +0 -1
  820. package/dist/beeq/p-aeb28fb3.entry.js +0 -6
  821. package/dist/beeq/p-aeb28fb3.entry.js.map +0 -1
  822. package/dist/beeq/p-af9c9769.entry.js.map +0 -1
  823. package/dist/beeq/p-b4ae4315.entry.js.map +0 -1
  824. package/dist/beeq/p-c05c50bf.js +0 -7
  825. package/dist/beeq/p-c05c50bf.js.map +0 -1
  826. package/dist/beeq/p-d04883ab.entry.js.map +0 -1
  827. package/dist/beeq/p-d4676bbd.entry.js.map +0 -1
  828. package/dist/beeq/p-e29c46f5.entry.js.map +0 -1
  829. package/dist/beeq/p-e827f88d.entry.js.map +0 -1
  830. package/dist/beeq/p-f7e3eff3.entry.js.map +0 -1
  831. package/dist/beeq/p-f85f1705.entry.js.map +0 -1
  832. package/dist/cjs/app-globals-42eaedec.js.map +0 -1
  833. package/dist/cjs/assetsPath-bff6e1f9.js.map +0 -1
  834. package/dist/cjs/bq-steps.types-4d1836d0.js.map +0 -1
  835. package/dist/cjs/bq-tab.types-a8b320b0.js.map +0 -1
  836. package/dist/cjs/clamp-dbbea7bf.js.map +0 -1
  837. package/dist/cjs/cssVariables-55ad4942.js.map +0 -1
  838. package/dist/cjs/debounce-1f7e1176.js.map +0 -1
  839. package/dist/cjs/event-7d21e426.js.map +0 -1
  840. package/dist/cjs/getNextElement-4b790655.js.map +0 -1
  841. package/dist/cjs/index-30fbd193.js.map +0 -1
  842. package/dist/cjs/index-6fcc2c3c.js.map +0 -1
  843. package/dist/cjs/isClient-c22372aa.js.map +0 -1
  844. package/dist/cjs/isDefined-237b1214.js.map +0 -1
  845. package/dist/cjs/isHTMLElement-729e6be0.js.map +0 -1
  846. package/dist/cjs/isNil-f93429a2.js.map +0 -1
  847. package/dist/cjs/isString-f8847c11.js.map +0 -1
  848. package/dist/cjs/props-2653e993.js.map +0 -1
  849. package/dist/cjs/slot-c3eeb29f.js.map +0 -1
  850. package/dist/cjs/transition-be315790.js.map +0 -1
  851. package/dist/components/p-1629a472.js +0 -6
  852. package/dist/components/p-1629a472.js.map +0 -1
  853. package/dist/components/p-1c8b6eb4.js.map +0 -1
  854. package/dist/components/p-1defeea3.js.map +0 -1
  855. package/dist/components/p-242345e1.js.map +0 -1
  856. package/dist/components/p-2aab0744.js.map +0 -1
  857. package/dist/components/p-397bc507.js +0 -6
  858. package/dist/components/p-397bc507.js.map +0 -1
  859. package/dist/components/p-39d794c1.js +0 -6
  860. package/dist/components/p-39d794c1.js.map +0 -1
  861. package/dist/components/p-51027528.js.map +0 -1
  862. package/dist/components/p-57621be1.js.map +0 -1
  863. package/dist/components/p-66fcce92.js.map +0 -1
  864. package/dist/components/p-687da041.js.map +0 -1
  865. package/dist/components/p-99829fc7.js.map +0 -1
  866. package/dist/components/p-af062402.js.map +0 -1
  867. package/dist/components/p-afef286d.js.map +0 -1
  868. package/dist/components/p-c3a0bd23.js.map +0 -1
  869. package/dist/components/p-dfb2cbb5.js.map +0 -1
  870. package/dist/components/p-ecd27cf2.js.map +0 -1
  871. package/dist/components/p-f0fcfdea.js +0 -6
  872. package/dist/components/p-f0fcfdea.js.map +0 -1
  873. package/dist/components/p-fd965589.js.map +0 -1
  874. package/dist/esm/app-globals-7655df21.js.map +0 -1
  875. package/dist/esm/assetsPath-14f18f9a.js.map +0 -1
  876. package/dist/esm/bq-steps.types-3a84b1e3.js.map +0 -1
  877. package/dist/esm/bq-tab.types-36e2666e.js.map +0 -1
  878. package/dist/esm/clamp-efa6c596.js.map +0 -1
  879. package/dist/esm/cssVariables-3665b51c.js.map +0 -1
  880. package/dist/esm/debounce-3e72f418.js.map +0 -1
  881. package/dist/esm/event-9ce1db79.js.map +0 -1
  882. package/dist/esm/getNextElement-8bcc2025.js.map +0 -1
  883. package/dist/esm/index-4e4c39e8.js.map +0 -1
  884. package/dist/esm/isClient-c6eae7ba.js.map +0 -1
  885. package/dist/esm/isDefined-7a919d19.js.map +0 -1
  886. package/dist/esm/isHTMLElement-0271eefe.js.map +0 -1
  887. package/dist/esm/isNil-2290f64e.js.map +0 -1
  888. package/dist/esm/isString-9820a2b7.js.map +0 -1
  889. package/dist/esm/props-3bf7f546.js.map +0 -1
  890. package/dist/esm/slot-be230a01.js.map +0 -1
  891. package/dist/esm/transition-916fd7c0.js.map +0 -1
  892. package/dist/loader/package.json +0 -11
  893. package/dist/types/home/runner/work/BEEQ/BEEQ/packages/beeq/.stencil/packages/beeq/stencil.config.d.ts +0 -2
  894. /package/dist/{beeq/p-57621be1.js.map → components/p-BxgDLPzX.js.map} +0 -0
  895. /package/dist/{beeq/p-1c8b6eb4.js.map → components/p-Dx-CEPSQ.js.map} +0 -0
  896. /package/dist/types/{home/runner/work/BEEQ/BEEQ/packages/beeq → Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System}/.stencil/tailwind.config.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["CARD_TYPE","bqCardCss","BqCardStyle0","BqCard","type","border","checkPropValue","validatePropValue","this","el","componentWillLoad","render","style","h","Host","key","class","part"],"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, 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"],"mappings":";;;;6FAAO,MAAMA,EAAY,CAAC,UAAW,WCArC,MAAMC,EAAY,49nBAClB,MAAAC,EAAeD,E,MC0CFE,EAAM,M,iDAiBQC,KAAkB,UAGlBC,OAA4B,IAMrD,cAAAC,GACEC,EAAkBP,EAAW,UAAWQ,KAAKC,GAAI,O,CAWnD,iBAAAC,GACEF,KAAKF,gB,CAsBP,MAAAK,GACE,MAAMC,EAAQ,IACRJ,KAAKH,QAAU,CAAE,0BAA2B,oBAAoBG,KAAKH,YAE3E,OACEQ,EAACC,EAAI,CAAAC,IAAA,2CAACH,MAAOA,GACXC,EAAA,OAAAE,IAAA,2CACEC,MAAO,CACL,oJACE,KACF,oDAAqDR,KAAKJ,OAAS,UAEnE,cAAeI,KAAKJ,OAAS,WAE/Ba,KAAK,WAELJ,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["STEP_ITEM_STATUS","bqStepItemCss","BqStepItemStyle0","BqStepItem","size","status","type","checkPropValues","validatePropValue","STEPS_SIZE","this","el","handleIconPrefix","bqClick","connectedCallback","componentWillLoad","componentDidLoad","isDisabled","isCurrent","iconElem","querySelector","isHTMLElement","weight","render","h","key","class","part","name","onSlotchange"],"sources":["../../packages/beeq/src/components/step-item/bq-step-item.types.ts","../../packages/beeq/src/components/step-item/scss/bq-step-item.scss?tag=bq-step-item&encapsulation=shadow","../../packages/beeq/src/components/step-item/bq-step-item.tsx"],"sourcesContent":["export const STEP_ITEM_STATUS = ['default', 'current', 'completed', 'error', 'disabled'] as const;\nexport type TStepItemStatus = (typeof STEP_ITEM_STATUS)[number];\n","/* -------------------------------------------------------------------------- */\n/* Step item styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-step-item.variables';\n\n:host {\n --bq-icon--color: theme(stroke.icon.primary);\n\n @apply bg-primary;\n}\n\n.bq-step-item__prefix.dot,\n.bq-step-item__prefix.icon {\n ::slotted(bq-icon) {\n --bq-icon--color: var(--bq-step-item--prefix-color);\n }\n\n &.current {\n ::slotted(bq-icon) {\n --bq-icon--color: var(--bq-step-item--prefix-color-current);\n }\n }\n\n &.completed {\n ::slotted(bq-icon) {\n --bq-icon--color: var(--bq-step-item--prefix-color-completed);\n }\n }\n\n &.error {\n ::slotted(bq-icon) {\n --bq-icon--color: var(--bq-step-item--prefix-color-error);\n }\n }\n\n &.disabled {\n ::slotted(bq-icon) {\n opacity: 0.6;\n }\n }\n}\n\n.bq-step-item__prefix.numeric {\n @apply flex items-center justify-center rounded-full;\n @apply bg-[--bq-step-item--prefix-num-bg-color] bs-[--bq-step-item--prefix-num-size] is-[--bq-step-item--prefix-num-size];\n @apply text-m font-semibold leading-regular;\n\n &.small {\n @apply text-s [--bq-step-item--prefix-num-size:--bq-spacing-l];\n }\n\n // Status\n\n &.current {\n @apply bg-[var(--bq-step-item--prefix-color-current)] text-alt;\n }\n\n &.completed {\n @apply bg-ui-success-alt text-success;\n }\n\n &.error {\n @apply bg-ui-danger-alt text-danger;\n }\n\n &.disabled {\n @apply opacity-60;\n }\n}\n\n.bq-step-item__content--description::slotted(*) {\n @apply text-s leading-regular opacity-60;\n}\n","import { Component, Element, Event, EventEmitter, h, Prop, Watch } from '@stencil/core';\n\nimport { STEP_ITEM_STATUS, TStepItemStatus } from './bq-step-item.types';\nimport { isHTMLElement, validatePropValue } from '../../shared/utils';\nimport { STEPS_SIZE, TStepsSize, TStepsType } from '../steps/bq-steps.types';\n\n/**\n * The Step Item Component is a UI element used to display a single step or stage in a process or task.\n * It should be used inside the Steps component.\n *\n * @example How to use it\n * ```html\n * <bq-step-item status=\"completed\">\n * <bq-icon slot=\"prefix\" name=\"check-circle\"></bq-icon>\n * <span>Title</span>\n * <span slot=\"description\">Description</span>\n * </bq-step-item>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/896b66-stepper\n * @status stable\n *\n * @attr {\"small\" | \"medium\"} size - It defines prefix size\n * @attr {\"completed\" | \"current\" | \"error\" | \"default\" | \"disabled\"} status - It defines step item appearance based on its status\n * @attr {\"numeric\" | \"icon\" | \"dot\"} type - It defines the step item type used\n *\n * @event bqClick - Callback handler emitted when the step item is clicked\n *\n * @slot - The step item content\n * @slot prefix - The step item prefix\n * @slot description - The step item description\n *\n * @part base - The component's base wrapper.\n * @part title - The component's title.\n * @part description - The component's description.\n *\n * @cssprop --bq-step-item--prefix-color - Color of the prefix icon\n * @cssprop --bq-step-item--prefix-color-current - Color of the prefix icon when current\n * @cssprop --bq-step-item--prefix-color-completed - Color of the prefix icon when completed\n * @cssprop --bq-step-item--prefix-color-error - Color of the prefix icon when error\n * @cssprop --bq-step-item--prefix-num-size - Size of the prefix number\n * @cssprop --bq-step-item--prefix-num-bg-color - Background color of the prefix number\n */\n@Component({\n tag: 'bq-step-item',\n styleUrl: './scss/bq-step-item.scss',\n shadow: true,\n})\nexport class BqStepItem {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n @Element() el!: HTMLBqStepItemElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** It defines prefix size */\n @Prop({ reflect: true }) size?: TStepsSize = 'medium';\n\n /** It defines step item appearance based on its status */\n @Prop({ reflect: true }) status?: TStepItemStatus = 'default';\n\n /** It defines the step item type used */\n @Prop({ reflect: true }) type?: TStepsType;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('size')\n @Watch('status')\n checkPropValues() {\n validatePropValue(STEPS_SIZE, 'medium', this.el, 'size');\n validatePropValue(STEP_ITEM_STATUS, 'default', this.el, 'status');\n\n this.handleIconPrefix();\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler emitted when the step item is clicked */\n @Event() bqClick: EventEmitter<{ target: HTMLBqStepItemElement; value: string }>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n connectedCallback() {\n this.checkPropValues();\n }\n\n componentWillLoad() {\n this.checkPropValues();\n }\n\n componentDidLoad() {\n this.handleIconPrefix();\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 get isDisabled(): boolean {\n return this.status === 'disabled';\n }\n\n private get isCurrent(): boolean {\n return this.status === 'current';\n }\n\n private handleIconPrefix = () => {\n const iconElem = this.el.querySelector('[slot=\"prefix\"]');\n if (!iconElem || !isHTMLElement(iconElem, 'bq-icon')) return;\n\n iconElem.size = this.size === 'small' ? 24 : 32;\n iconElem.weight = this.isCurrent ? 'fill' : 'regular';\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div\n class={{\n 'bq-step-item flex gap-s': true,\n [`bq-step-item--${this.status}`]: true,\n 'pointer-events-none opacity-60': this.isDisabled,\n }}\n part=\"base\"\n >\n <div class={`bq-step-item__prefix relative ${this.type} ${this.size} ${this.status}`}>\n <slot name=\"prefix\" onSlotchange={this.handleIconPrefix} />\n </div>\n <div class=\"bq-step-item__content\">\n {/* TITLE */}\n <div\n class={{\n 'bq-step-item__content--title pe-xs3 text-m leading-regular text-primary': true,\n 'pointer-events-none': this.isDisabled,\n 'text-brand': this.isCurrent,\n }}\n part=\"title\"\n >\n <slot />\n </div>\n {/* DESCRIPTION */}\n <div\n class={{\n 'bq-step-item__content--description text-s leading-regular opacity-60': true,\n 'opacity-60': this.isDisabled,\n }}\n part=\"description\"\n >\n <slot name=\"description\" />\n </div>\n </div>\n </div>\n );\n }\n}\n"],"mappings":";;;;qKAAO,MAAMA,EAAmB,CAAC,UAAW,UAAW,YAAa,QAAS,YCA7E,MAAMC,EAAgB,mguBACtB,MAAAC,EAAeD,E,MC+CFE,EAAU,M,kFAgBIC,KAAoB,SAGpBC,OAA2B,UAG3BC,KAOzB,eAAAC,GACEC,EAAkBC,EAAY,SAAUC,KAAKC,GAAI,QACjDH,EAAkBR,EAAkB,UAAWU,KAAKC,GAAI,UAExDD,KAAKE,kB,CAQEC,QAMT,iBAAAC,GACEJ,KAAKH,iB,CAGP,iBAAAQ,GACEL,KAAKH,iB,CAGP,gBAAAS,GACEN,KAAKE,kB,CAkBP,cAAYK,GACV,OAAOP,KAAKL,SAAW,U,CAGzB,aAAYa,GACV,OAAOR,KAAKL,SAAW,S,CAGjBO,iBAAmB,KACzB,MAAMO,EAAWT,KAAKC,GAAGS,cAAc,mBACvC,IAAKD,IAAaE,EAAcF,EAAU,WAAY,OAEtDA,EAASf,KAAOM,KAAKN,OAAS,QAAU,GAAK,GAC7Ce,EAASG,OAASZ,KAAKQ,UAAY,OAAS,SAAS,EAOvD,MAAAK,GACE,OACEC,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,0BAA2B,KAC3B,CAAC,iBAAiBhB,KAAKL,UAAW,KAClC,iCAAkCK,KAAKO,YAEzCU,KAAK,QAELH,EAAA,OAAAC,IAAA,2CAAKC,MAAO,iCAAiChB,KAAKJ,QAAQI,KAAKN,QAAQM,KAAKL,UAC1EmB,EAAA,QAAAC,IAAA,2CAAMG,KAAK,SAASC,aAAcnB,KAAKE,oBAEzCY,EAAA,OAAAC,IAAA,2CAAKC,MAAM,yBAETF,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,0EAA2E,KAC3E,sBAAuBhB,KAAKO,WAC5B,aAAcP,KAAKQ,WAErBS,KAAK,SAELH,EAAA,QAAAC,IAAA,8CAGFD,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,uEAAwE,KACxE,aAAchB,KAAKO,YAErBU,KAAK,eAELH,EAAA,QAAAC,IAAA,2CAAMG,KAAK,kB","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["ALERT_TYPE","bqAlertCss","BqAlertStyle0","BqAlert","autoDismissDebounce","bodyElem","footerElem","alertElement","hasContent","hasFooter","autoDismiss","border","disableClose","hideIcon","open","time","type","sticky","handleTimeout","this","cancel","debounce","hide","handleOpenChange","handleHide","handleShow","checkPropValues","validatePropValue","el","bqHide","bqShow","bqAfterShow","bqAfterHide","componentWillLoad","componentDidLoad","handleSlotChange","classList","add","show","async","ev","emit","defaultPrevented","leave","handleTransitionEnd","remove","enter","hasSlotContent","iconName","error","success","warning","render","style","h","Host","key","class","hidden","role","ref","div","part","appearance","size","onClick","bind","name","exportparts","onSlotchange"],"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, EventEmitter, h, Host, Method, Prop, State, Watch } from '@stencil/core';\n\nimport { ALERT_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"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["NOTIFICATION_TYPE","bqNotificationCss","BqNotificationStyle0","NOTIFICATION_PORTAL_SELECTOR","BqNotification","autoDismissDebounce","bodyElem","footerElem","notificationElem","hasContent","hasFooter","notificationPortal","isClient","document","querySelector","autoDismiss","border","disableClose","hideIcon","open","time","type","handleTimeout","this","cancel","debounce","hide","handleOpenChange","checkPropValues","validatePropValue","el","bqHide","bqShow","bqAfterOpen","bqAfterClose","connectedCallback","Object","assign","createElement","className","componentWillLoad","componentDidLoad","handleSlotChange","afterNotificationClose","removeChild","tagName","toLowerCase","remove","error","DOMException","handleHide","show","handleShow","toast","parentElement","body","append","appendChild","requestAnimationFrame","async","ev","emit","defaultPrevented","leave","handleTransitionEnd","enter","hasSlotContent","iconName","typeMap","success","warning","render","style","h","Host","key","class","hidden","role","ref","div","part","appearance","size","onClick","name","exportparts","onSlotchange"],"sources":["../../packages/beeq/src/components/notification/bq-notification.types.ts","../../packages/beeq/src/components/notification/scss/bq-notification.scss?tag=bq-notification&encapsulation=shadow","../../packages/beeq/src/components/notification/bq-notification.tsx"],"sourcesContent":["export const NOTIFICATION_TYPE = ['error', 'info', 'neutral', 'success', 'warning'] as const;\nexport type TNotificationType = (typeof NOTIFICATION_TYPE)[number];\n\nexport const NOTIFICATION_BORDER_RADIUS = ['none', 'xs2', 'xs', 's', 'm', 'l', 'full'] as const;\nexport type TNotificationBorderRadius = (typeof NOTIFICATION_BORDER_RADIUS)[number];\n","/* -------------------------------------------------------------------------- */\n/* Notification styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-notification.variables';\n\n:host {\n @apply block;\n}\n\n:host(.is-hidden) {\n @apply hidden;\n}\n\n.bq-notification {\n @apply relative flex transition-all min-is-[--bq-notification--min-width] p-b-[--bq-notification--padding] p-i-[--bq-notification--padding];\n @apply rounded-[--bq-notification--border-radius] bg-[--bq-notification--background] shadow-[shadow:--bq-notification--box-shadow];\n}\n\n/**\n * Set the notification icon color based on the type value selected\n */\n.notification--icon.color {\n &-error {\n @apply text-[color:--bq-notification--icon-color-error];\n }\n\n &-info {\n @apply text-[color:--bq-notification--icon-color-info];\n }\n\n &-neutral {\n @apply text-[color:--bq-notification--icon-color-neutral];\n }\n\n &-success {\n @apply text-[color:--bq-notification--icon-color-success];\n }\n\n &-warning {\n @apply text-[color:--bq-notification--icon-color-warning];\n }\n}\n\n/**\n * Tweak the close bq-button styles so it remain small without extra padding\n */\n.notification--close::part(button) {\n @apply rounded-s border-0 bs-fit p-b-0 p-i-0;\n}\n\n/**\n * Here we guarantee that if the footer actions are wrapped in a div container from the consumer side,\n * the styles get applied to the that wrapping container directly\n */\n[part='footer'] ::slotted(*) {\n @apply flex items-start gap-xs;\n}\n\n[part='body'],\n[part='footer'] {\n ::slotted(*) {\n @apply block m-bs-m;\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from '@stencil/core';\n\nimport { NOTIFICATION_TYPE, TNotificationBorderRadius, TNotificationType } from './bq-notification.types';\nimport { debounce, enter, hasSlotContent, isClient, leave, TDebounce, validatePropValue } from '../../shared/utils';\n\nconst NOTIFICATION_PORTAL_SELECTOR = 'bq-notification-portal';\n\n/**\n * The Notification component is a user interface element used to provide information or alerts to users in a non-intrusive manner.\n *\n * @example How to use it\n * ```html\n * <bq-notification border=\"s\" time=\"3000\" type=\"info\">\n * Title\n * <span slot=\"body\">\n * This is some description text text\n * <a class=\"bq-link\" href=\"https://example.com\">Link</a>\n * </span>\n * <div class=\"flex gap-xs\" 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-notification>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/945cb6-notification\n * @status stable\n *\n * @dependency bq-button\n * @dependency bq-icon\n *\n * @attr {boolean} auto-dismiss - If true, the notification will automatically hide after the specified amount of time\n * @attr {string} border - The corder radius of the notification component\n * @attr {boolean} disable-close - If true, the close button at the top right of the notification won't be shown\n * @attr {boolean} hide-icon - If true, the notification icon won't be shown\n * @attr {boolean} open - If true, the notification will be shown\n * @attr {number} time - The length of time, in milliseconds, after which the notification will close itself. Only valid if `auto-dismiss=\"true\"`\n * @attr {string} type - Type of Notification\n *\n * @event bqAfterClose - Callback handler to be called after the notification has been closed\n * @event bqAfterOpen - Callback handler to be called after the notification has been opened\n * @event bqHide - Callback handler to be called when the notification is hidden\n * @event bqShow - Callback handler to be called when the notification is shown\n *\n * @slot - The notification title content\n * @slot body - The notification description content\n * @slot footer - The notification footer content\n * @slot icon - The icon to be displayed in the notification\n * @slot btn-close - The close button of the notification\n *\n * @part base - The `<div>` container of the predefined bq-icon component.\n * @part body - The container `<div>` that wraps the notification description content\n * @part btn-close - The `bq-button` used to close the notification\n * @part content - The container `<div>` that wraps all the notification content (title, description, footer)\n * @part footer - The container `<div>` that wraps the notification footer content\n * @part icon - The `<bq-icon>` element used to render a predefined icon based on the notification type\n * @part icon-outline - The container `<div>` that wraps the icon element\n * @part main - The container `<div>` that wraps the notification 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 notification title content\n * @part wrapper - The wrapper container `<div>` of the element inside the shadow DOM\n *\n * @cssprop --bq-notification--background - The notification background color\n * @cssprop --bq-notification--box-shadow - The notification box shadow\n * @cssprop --bq-notification--border-color - The notification border color\n * @cssprop --bq-notification--border-radius - The notification border radius\n * @cssprop --bq-notification--border-style - The notification border style\n * @cssprop --bq-notification--border-width - The notification border width\n * @cssprop --bq-notification--content-footer-gap - The notification content and footer gap\n * @cssprop --bq-notification--title-body-gap - The notification title and body gap\n * @cssprop --bq-notification--icon-color-error - The notification icon color for error type\n * @cssprop --bq-notification--icon-color-info - The notification icon color for info type\n * @cssprop --bq-notification--icon-color-neutral - The notification icon color for neutral type\n * @cssprop --bq-notification--icon-color-success - The notification icon color for success type\n * @cssprop --bq-notification--icon-color-warning - The notification icon color for warning type\n * @cssprop --bq-notification--padding - The notification padding\n * @cssprop --bq-notification--min-width - The notification min width\n */\n@Component({\n tag: 'bq-notification',\n styleUrl: './scss/bq-notification.scss',\n shadow: true,\n})\nexport class BqNotification {\n // Own Properties\n // ====================\n\n private autoDismissDebounce: TDebounce<void>;\n private bodyElem: HTMLDivElement;\n private footerElem: HTMLDivElement;\n private notificationElem: HTMLDivElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqNotificationElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasContent = false;\n @State() private hasFooter = false;\n @State() private notificationPortal = isClient() ? document.querySelector(`.${NOTIFICATION_PORTAL_SELECTOR}`) : null;\n\n // Public Property API\n // ========================\n\n /** If true, the notification will automatically hide after the specified amount of time */\n @Prop({ reflect: true }) autoDismiss: boolean;\n\n /** The corder radius of the notification component */\n @Prop({ reflect: true }) border: TNotificationBorderRadius = 's';\n\n /** If true, the close button at the top right of the notification won't be shown */\n @Prop({ reflect: true }) disableClose: boolean;\n\n /** If true, the notification icon won't be shown */\n @Prop({ reflect: true }) hideIcon: boolean;\n\n /** If true, the notification will be shown */\n @Prop({ reflect: true, mutable: true }) open: boolean;\n\n /** The length of time, in milliseconds, after which the notification will close itself. Only valid if `autoDismiss=\"true\"` */\n @Prop({ reflect: true }) time: number = 3000;\n\n /** Type of Notification */\n @Prop({ reflect: true }) type: TNotificationType = 'info';\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.autoDismiss && this.open)) return;\n this.autoDismissDebounce();\n }\n\n @Watch('type')\n checkPropValues() {\n validatePropValue(NOTIFICATION_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 notification is hidden */\n @Event() bqHide!: EventEmitter;\n\n /** Callback handler to be called when the notification is shown */\n @Event() bqShow!: EventEmitter;\n\n /** Callback handler to be called after the notification has been opened */\n @Event() bqAfterOpen!: EventEmitter;\n\n /** Callback handler to be called after the notification has been closed */\n @Event() bqAfterClose!: EventEmitter;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n connectedCallback() {\n if (!isClient()) return;\n\n const { notificationPortal } = this;\n if (!notificationPortal) {\n this.notificationPortal = Object.assign(document.createElement('div'), {\n className: NOTIFICATION_PORTAL_SELECTOR,\n });\n }\n }\n\n componentWillLoad() {\n this.checkPropValues();\n this.handleTimeout();\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n // Listeners\n // ==============\n\n @Listen('bqAfterClose')\n afterNotificationClose() {\n try {\n const { notificationPortal } = this;\n notificationPortal.removeChild(this.el);\n // Remove the notification portal from the DOM when there are no more notifications\n if (notificationPortal.querySelector(this.el.tagName.toLowerCase()) === null) {\n notificationPortal.remove();\n }\n } catch (error) {\n /**\n * Skip DOMException error since it could be possible that\n * in some situations the notification portal is missing\n */\n if (error instanceof DOMException) return;\n throw error;\n }\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 notification component */\n @Method()\n async hide(): Promise<void> {\n await this.handleHide();\n }\n\n /** Method to be called to show the notification component */\n @Method()\n async show(): Promise<void> {\n await this.handleShow();\n }\n\n /** This method can be used to display notifications in a fixed-position element that allows for stacking multiple notifications vertically */\n @Method()\n async toast() {\n if (!isClient()) return;\n\n const { notificationPortal } = this;\n if (notificationPortal?.parentElement === null) {\n document.body.append(notificationPortal);\n }\n\n notificationPortal?.appendChild(this.el);\n requestAnimationFrame(() => {\n this.show();\n });\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.notificationElem);\n this.open = false;\n this.handleTransitionEnd();\n }\n };\n\n private handleShow = async () => {\n const ev = this.bqShow.emit(this.el);\n if (!ev.defaultPrevented) {\n this.open = true;\n await enter(this.notificationElem);\n this.handleTransitionEnd();\n }\n };\n\n private handleTransitionEnd = () => {\n if (this.open) {\n this.bqAfterOpen.emit();\n return;\n }\n\n this.bqAfterClose.emit();\n };\n\n private handleSlotChange = () => {\n this.hasContent = hasSlotContent(this.bodyElem);\n this.hasFooter = hasSlotContent(this.footerElem, 'footer');\n };\n\n private get iconName(): string {\n const typeMap = {\n error: 'x-circle',\n success: 'check-circle',\n warning: 'warning-circle',\n };\n\n return typeMap[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-notification--border-radius': `var(--bq-radius--${this.border})` }),\n };\n\n return (\n <Host\n style={style}\n class={{ 'is-hidden': !this.open }}\n aria-hidden={!this.open ? 'true' : 'false'}\n hidden={!this.open ? 'true' : 'false'}\n role=\"alert\"\n >\n <div\n class=\"bq-notification\"\n data-transition-enter=\"transform transition ease-out duration-300\"\n data-transition-enter-start=\"translate-y-xs opacity-0 sm:translate-y-0 sm:translate-x-s\"\n data-transition-enter-end=\"translate-y-0 opacity-100 sm:translate-x-0\"\n data-transition-leave=\"transform transition ease-in duration-100\"\n data-transition-leave-start=\"translate-y-0 opacity-100 sm:translate-x-0\"\n data-transition-leave-end=\"-translate-y-xs opacity-0 sm:translate-y-0 sm:translate-x-s\"\n ref={(div) => (this.notificationElem = div)}\n part=\"wrapper\"\n >\n {/* CLOSE BUTTON */}\n {!this.disableClose && (\n <bq-button\n class=\"notification--close absolute inset-ie-5 [&::part(label)]:inline-flex\"\n appearance=\"text\"\n size=\"small\"\n onClick={() => this.hide()}\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 '!hidden': this.hideIcon,\n [`color-${this.type}`]: true, // The icon color will be based on the type (info, success, warning, error)\n 'notification--icon me-xs flex text-left align-top': true,\n }}\n part=\"icon-outline\"\n >\n <slot name=\"icon\">\n <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-notification--content-footer-gap]\" part=\"main\">\n <div class=\"flex flex-col gap-[--bq-notification--title-body-gap]\" part=\"content\">\n {/* TITLE */}\n <div class=\"title-font font-semibold leading-regular\" part=\"title\">\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"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["DRAWER_POSITIONS","DRAWER_PLACEMENT","bqDrawerCss","BqDrawerStyle0","BqDrawer","footerElem","drawerElem","OPEN_CSS_CLASS","hasFooter","hasIcon","enableBackdrop","closeOnClickOutside","closeOnEsc","open","placement","position","handleOpenChange","this","handleAfterHide","handleAfterShow","handlePlacementChange","isNil","console","warn","validatePropValue","el","synPositionMap","right","left","handlePositionChange","syncPlacementMap","end","start","bqClose","bqOpen","bqAfterOpen","bqAfterClose","componentWillLoad","componentDidLoad","handleFooterSlotChange","handleMouseClick","event","button","rect","getBoundingClientRect","clientX","hide","handleKeyDown","key","ev","emit","defaultPrevented","show","hasSlotContent","async","leave","handleTransitionEnd","classList","add","enter","remove","isPositionStart","isPositionEnd","render","h","Host","class","tabIndex","part","ref","div","hidden","role","id","name","appearance","size","slot","exportparts","onClick","bind","title","block","dashed","onSlotchange"],"sources":["../../packages/beeq/src/components/drawer/bq-drawer.types.ts","../../packages/beeq/src/components/drawer/scss/bq-drawer.scss?tag=bq-drawer&encapsulation=shadow","../../packages/beeq/src/components/drawer/bq-drawer.tsx"],"sourcesContent":["export const DRAWER_POSITIONS = ['start', 'end'] as const;\nexport type TDrawerPosition = (typeof DRAWER_POSITIONS)[number];\n// !TO BE REMOVED: `placement` is deprecated and it will be removed in the future\nexport const DRAWER_PLACEMENT = ['left', 'right'] as const;\nexport type TDrawerPlacement = (typeof DRAWER_PLACEMENT)[number];\n","/* -------------------------------------------------------------------------- */\n/* Drawer styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-drawer.variables';\n\n:host {\n @apply invisible #{!important};\n}\n\n:host(.bq-drawer--open) {\n @apply visible #{!important};\n}\n\n.bq-drawer {\n @apply fixed z-[--bq-drawer--zIndex] flex flex-col gap-[--bq-drawer--gap] bg-primary shadow-m is-[--bq-drawer--width] max-is-full p-b-[--bq-drawer--paddingY] p-i-[--bq-drawer--paddingX] inset-b-0;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from '@stencil/core';\n\nimport { DRAWER_PLACEMENT, DRAWER_POSITIONS, TDrawerPlacement, TDrawerPosition } from './bq-drawer.types';\nimport { enter, hasSlotContent, isNil, leave, validatePropValue } from '../../shared/utils';\n\n/**\n * The Drawer component provides a sliding panel interface commonly used for navigation or presenting additional content without taking up significant screen space.\n *\n * @example How to use it\n * ```html\n * <bq-drawer position=\"end\">\n * <div class=\"flex gap-xs\" slot=\"title\">Title</div>\n * <div class=\"...\">\n * Content\n * </div>\n * <div class=\"flex flex-1 justify-center gap-xs\" slot=\"footer\">\n * <bq-button appearance=\"primary\" block=\"\" size=\"small\">Button</bq-button>\n * <bq-button appearance=\"link\" block=\"\" size=\"small\">Button</bq-button>\n * </div>\n * </bq-drawer>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/871139-drawer\n * @status stable\n *\n * @dependency bq-button\n * @dependency bq-icon\n * @dependency bq-divider\n *\n * @attr {boolean} enable-backdrop - If true, the backdrop overlay will be shown when the drawer opens.\n * @attr {boolean} close-on-click-outside - If true, the drawer will not close when clicking outside the panel.\n * @attr {boolean} close-on-esc - If true, the drawer will not close when the [Esc] key is pressed.\n * @attr {boolean} open - If true, the drawer component will be shown.\n * @attr {\"start\" | \"end\"} position - Defines the position of the drawer.\n *\n * @method show - Method to be called to show the drawer component.\n * @method hide - Method to be called to hide the drawer component.\n *\n * @event bqClose - Callback handler to be called when the drawer is closed.\n * @event bqOpen - Callback handler to be called when the drawer is opened.\n * @event bqAfterOpen - Callback handler to be called after the drawer has been opened.\n * @event bqAfterClose - Callback handler to be called after the drawer has been closed.\n *\n * @slot title - The title content of the drawer.\n * @slot - The body content of the drawer.\n * @slot footer - The footer content of the drawer.\n * @slot button-close - The close button content of the drawer.\n * @slot footer-divider - The footer divider content of the drawer.\n *\n * @part backdrop - The `<div>` that holds the backdrop overlay.\n * @part button-close - The BqButton that closes the drawer.\n * @part button-close__btn - The native button used under the hood that closes the drawer.\n * @part button-close__label - The text inside the native button that closes the drawer.\n * @part panel - The `<div>` that holds the drawer entire content.\n * @part header - The `<header>` that holds the icon, title, and close button.\n * @part title - The `<div>` that holds the title content.\n * @part body - The `<main>` that holds the drawer body content.\n * @part footer - The `<footer>` that holds footer content.\n *\n * @cssprop --bq-drawer--backgroundBackdrop - Background color of the backdrop\n * @cssprop --bq-drawer--gap - Gap between the drawer and the viewport\n * @cssprop --bq-drawer--width - Width of the drawer\n * @cssprop --bq-drawer--paddingX - Padding left and right of the drawer\n * @cssprop --bq-drawer--paddingY - Padding top and bottom of the drawer\n * @cssprop --bq-drawer--zIndex - Z-index of the drawer component\n */\n@Component({\n tag: 'bq-drawer',\n styleUrl: './scss/bq-drawer.scss',\n shadow: true,\n})\nexport class BqDrawer {\n // Own Properties\n // ====================\n\n private footerElem: HTMLElement;\n private drawerElem: HTMLDivElement;\n private OPEN_CSS_CLASS = 'bq-drawer--open';\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqDrawerElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasFooter = false;\n @State() hasIcon: boolean = false;\n\n // Public Property API\n // ========================\n\n /** If true, the backdrop overlay will be shown when the drawer opens */\n @Prop({ reflect: true }) enableBackdrop = false;\n\n /** If true, the drawer will not close when clicking outside the panel */\n @Prop({ reflect: true }) closeOnClickOutside = false;\n\n /** If true, the dialog will not close when the [Esc] key is pressed */\n @Prop({ reflect: true }) closeOnEsc = false;\n\n /** If true, the drawer component will be shown */\n @Prop({ reflect: true, mutable: true }) open: boolean;\n\n /** @deprecated Defines the position of the drawer */\n @Prop({ reflect: true, mutable: true }) placement: TDrawerPlacement = 'right';\n\n /** Defines the position of the drawer */\n @Prop({ reflect: true, mutable: true }) position: TDrawerPosition = 'end';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('open')\n async handleOpenChange() {\n if (!this.open) {\n await this.handleAfterHide();\n return;\n }\n\n await this.handleAfterShow();\n }\n\n /**\n * !TO BE REMOVED: Delete this `@Watch()` once the deprecated `placement` property is removed\n * We need to maintain retro-compatibility with the deprecated `placement` property\n */\n @Watch('placement')\n handlePlacementChange() {\n if (!isNil(this.placement)) {\n console.warn(\n `❗️ [bq-drawer]: the 'placement' prop is deprecated and it will be removed in the future. Please use 'position' instead.`,\n );\n }\n validatePropValue(DRAWER_PLACEMENT, 'right', this.el, 'placement');\n // Sync 'position' property\n const synPositionMap = {\n right: 'end',\n left: 'start',\n };\n this.position = (synPositionMap[this.placement] as TDrawerPosition) || this.position;\n }\n\n @Watch('position')\n handlePositionChange() {\n validatePropValue(DRAWER_POSITIONS, 'start', this.el, 'position');\n /**\n * Sync 'placement' property\n * !TO BE REMOVED: Delete the code below once the deprecated `placement` property is removed\n */\n const syncPlacementMap = {\n end: 'right',\n start: 'left',\n };\n this.placement = (syncPlacementMap[this.position] as TDrawerPlacement) || this.placement;\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler to be called when the drawer is closed */\n @Event() bqClose!: EventEmitter;\n\n /** Callback handler to be called when the drawer is opened */\n @Event() bqOpen!: EventEmitter;\n\n /** Callback handler to be called after the drawer has been opened */\n @Event() bqAfterOpen!: EventEmitter;\n\n /** Callback handler to be called after the drawer has been closed */\n @Event() bqAfterClose!: EventEmitter;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.handlePositionChange();\n // !TO BE REMOVED: Delete this once the deprecated `placement` property is removed\n this.handlePlacementChange();\n }\n\n componentDidLoad() {\n this.handleFooterSlotChange();\n }\n\n // Listeners\n // ==============\n\n @Listen('mousedown', { target: 'window', capture: true })\n async handleMouseClick(event: MouseEvent) {\n if (!this.open) return;\n if (!this.drawerElem || this.closeOnClickOutside) return;\n // Skip if the mouse button is not the main button\n if (event.button !== 0) return;\n\n const rect = this.drawerElem.getBoundingClientRect();\n if (event.clientX < rect.left || event.clientX > rect.right) {\n await this.hide();\n }\n }\n\n @Listen('keydown', { target: 'window', capture: true })\n async handleKeyDown(event: KeyboardEvent) {\n if (!this.open) return;\n if (!this.drawerElem || this.closeOnEsc || !(event.key === 'Escape' || event.key === 'Esc')) return;\n\n await this.hide();\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 drawer component */\n @Method()\n async hide(): Promise<void> {\n const ev = this.bqClose.emit();\n if (ev.defaultPrevented) return;\n\n this.open = false;\n }\n\n /** Method to be called to show the drawer component */\n @Method()\n async show(): Promise<void> {\n const ev = this.bqOpen.emit();\n if (ev.defaultPrevented) return;\n\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 handleFooterSlotChange = () => {\n this.hasFooter = hasSlotContent(this.footerElem, 'footer');\n };\n\n private handleAfterHide = async () => {\n if (!this.drawerElem) return;\n\n await leave(this.drawerElem);\n this.handleTransitionEnd();\n };\n\n private handleAfterShow = async () => {\n if (!this.drawerElem) return;\n\n this.el.classList.add(this.OPEN_CSS_CLASS);\n await enter(this.drawerElem);\n this.handleTransitionEnd();\n };\n\n private handleTransitionEnd = () => {\n if (this.open) {\n this.bqAfterOpen.emit();\n return;\n }\n\n this.bqAfterClose.emit();\n this.el.classList.remove(this.OPEN_CSS_CLASS);\n };\n\n private get isPositionStart() {\n // !TO BE REMOVED: `placement` is deprecated and will be removed in the future\n return this.position === 'start' || this.placement === 'left';\n }\n\n private get isPositionEnd() {\n // !TO BE REMOVED: `placement` is deprecated and will be removed in the future\n return this.position === 'end' || this.placement === 'right';\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <Host>\n {/* BACKDROP */}\n {this.enableBackdrop && (\n <div\n class={{\n 'fixed inset-0 block bg-[--bq-drawer--backgroundBackdrop] opacity-0 transition-opacity duration-300':\n true,\n 'pointer-events-none': !this.open,\n 'opacity-60': this.open,\n }}\n tabIndex={-1}\n part=\"backdrop\"\n />\n )}\n {/* DRAWER PANEL */}\n <div\n class={{\n [`bq-drawer transition-all duration-300 ease-in-out ${this.position || this.placement}`]: true,\n '-start-[--bq-drawer--width]': this.isPositionStart,\n '-end-[--bq-drawer--width]': this.isPositionEnd,\n 'start-0': this.open && this.isPositionStart,\n 'end-0': this.open && this.isPositionEnd,\n }}\n ref={(div) => (this.drawerElem = div)}\n aria-hidden={!this.open ? 'true' : 'false'}\n aria-labelledby=\"bq-drawer__title\"\n aria-modal=\"true\"\n hidden={!this.open}\n part=\"panel\"\n role=\"dialog\"\n >\n <header class=\"flex items-center\" part=\"header\">\n <h2\n class=\"flex-1 items-center justify-between font-bold leading-regular text-primary\"\n id=\"bq-drawer__title\"\n part=\"title\"\n >\n <slot name=\"title\" />\n </h2>\n <div class=\"flex\" part=\"button-close\">\n <bq-button\n class=\"[&::part(button)]:rounded-s [&::part(button)]:border-0 [&::part(button)]:bs-fit [&::part(button)]:p-b-0 [&::part(button)]:p-i-0 [&::part(label)]:inline-flex\"\n appearance=\"text\"\n size=\"small\"\n slot=\"button-close\"\n exportparts=\"button:button-close__btn,label:button-close__label\"\n onClick={this.hide.bind(this)}\n >\n <slot name=\"button-close\">\n <bq-icon name=\"x-bold\" role=\"img\" title=\"Close\" />\n </slot>\n </bq-button>\n </div>\n </header>\n <main class=\"block flex-auto overflow-auto\" part=\"body\">\n <slot />\n </main>\n <footer\n class={{\n block: true,\n '!hidden': !this.hasFooter,\n }}\n ref={(footerElem) => (this.footerElem = footerElem)}\n part=\"footer\"\n >\n <slot name=\"footer-divider\">\n <bq-divider class=\"mb-m block\" dashed />\n </slot>\n <slot name=\"footer\" onSlotchange={this.handleFooterSlotChange} />\n </footer>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqSideMenuCss","BqSideMenuStyle0","BqSideMenu","menuItemCssSelector","bodyCss","bodyCssExpand","bodyCssCollapse","menuElem","documentBody","appearance","collapse","size","onCollapsePropChange","this","handleCollapse","bqCollapse","emit","bqSelect","componentDidLoad","isClient","document","querySelector","classList","add","disconnectedCallback","cleanDocumentBodyClass","onMenuItemClick","event","target","item","isHTMLElement","menuItems","forEach","menuItem","active","disabled","toggleCollapse","slot","assignedElements","flatten","filter","el","tagName","toLowerCase","length","collapseDocumentBody","expandDocumentBody","remove","render","h","key","class","part","name","ref","navElem","role"],"sources":["../../packages/beeq/src/components/side-menu/scss/bq-side-menu.scss?tag=bq-side-menu&encapsulation=shadow","../../packages/beeq/src/components/side-menu/bq-side-menu.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Side menu styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-side-menu.variables';\n\n:host {\n @apply flex overflow-hidden;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Aside container */\n/* -------------------------------------------------------------------------- */\n\n.bq-side-menu {\n @apply fixed flex h-dynamic-vh grow flex-col bg-[--bq-side-menu--bg-color] is-[--bq-side-menu--width] inset-bs-0 inset-is-0;\n @apply border-0 border-e-s border-solid border-[color:--bq-side-menu--border-color];\n @apply transition-[background-color,width] duration-150;\n @include hide-scrollbar;\n}\n\n.bq-side-menu.is-collapsed {\n @apply is-[--bq-side-menu--width-collapse];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Logo container */\n/* -------------------------------------------------------------------------- */\n\n.bq-side-menu--logo {\n @apply sticky top-0 z-[1] p-xs;\n @apply box-content flex items-center bg-[--bq-side-menu--bg-color] text-[color:--bq-side-menu--brand-color];\n}\n\n/* -------------------------------------------------------------------------- */\n/* APPEARANCE */\n/* -------------------------------------------------------------------------- */\n\n/**\n * The following change the default values of some CSS custom properties\n * to make it complain with the side menu appearance selected\n */\n\n:host([size='small']) {\n ::slotted(bq-side-menu-item) {\n --bq-side-menu-item--paddingY: theme(space.s);\n }\n}\n\n:host([appearance='brand']) {\n --bq-focus: theme(stroke.alt);\n --bq-side-menu--bg-color: theme(backgroundColor.ui.brand);\n --bq-side-menu--brand-color: theme(stroke.inverse);\n --bq-side-menu--border-color: theme(stroke.brand);\n\n ::slotted(bq-side-menu-item) {\n --bq-side-menu-item--bg-hover: color-mix(in srgb, var(--bq-ui--brand), var(--bq-hover) 20%);\n\n --bq-side-menu-item--text-default: theme(textColor.alt);\n --bq-side-menu-item--text-hover: theme(textColor.alt);\n }\n\n .bq-side-menu--footer ::slotted([slot='footer']) {\n --bq-ui--secondary: theme(colors.transparent);\n --bq-text--primary: theme(textColor.inverse);\n }\n}\n\n:host([appearance='inverse']) {\n --bq-side-menu--bg-color: theme(backgroundColor.ui.inverse);\n --bq-side-menu--brand-color: theme(stroke.inverse);\n --bq-side-menu--border-color: theme(backgroundColor.ui.inverse);\n\n ::slotted(bq-side-menu-item) {\n --bq-side-menu-item--bg-hover: color-mix(in srgb, var(--bq-ui--inverse), var(--bq-hover) 20%);\n --bq-side-menu-item--bg-active: color-mix(in srgb, var(--bq-ui--alt), var(--bq-active) 20%);\n\n --bq-side-menu-item--text-default: theme(textColor.inverse);\n --bq-side-menu-item--text-hover: theme(textColor.inverse);\n --bq-side-menu-item--text-active: theme(textColor.primary);\n }\n\n .bq-side-menu--footer ::slotted([slot='footer']) {\n --bq-ui--secondary: theme(colors.transparent);\n --bq-text--primary: theme(textColor.inverse);\n }\n}\n","import { Component, Event, EventEmitter, h, Listen, Method, Prop, State, Watch } from '@stencil/core';\n\nimport { TSideMenuAppearance, TSideMenuSize } from './bq-side-menu.types';\nimport { isClient, isHTMLElement } from '../../shared/utils';\n\n/**\n *The default side menu serves as a versatile container for organizing and displaying navigation elements,\n * with default side menu items providing a clean and straightforward way to represent individual menu options.\n * Together, they form the foundation for building structured and intuitive side menu layouts.\n *\n * @example How to use it\n * ```html\n * <bq-side-menu>\n * <div slot=\"logo\">\n * <h1>Your Logo</h1>\n * </div>\n * <bq-side-menu-item active>\n * <bq-icon name=\"home\" slot=\"prefix\"></bq-icon>\n * Home\n * </bq-side-menu-item>\n * <bq-side-menu-item>\n * <bq-icon name=\"settings\" slot=\"prefix\"></bq-icon>\n * Settings\n * </bq-side-menu-item>\n * <bq-side-menu-item disabled>\n * <bq-icon name=\"help\" slot=\"prefix\"></bq-icon>\n * Help\n * </bq-side-menu-item>\n * </bq-side-menu>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/99822d-side-menu/b/09d7b1\n * @status stable\n *\n * @attr {\"brand\" | \"default\" | \"inverse\"} appearance - It sets a predefined appearance of the side menu.\n * @attr {boolean} collapse - If `true`, the container will reduce its width.\n * @attr {\"medium\" | \"small\"} - size - It sets the size of the navigation menu items.\n *\n * @method toggleCollapse - Method to be called to toggle the collapse state of the side menu.\n *\n * @event bqCollapse - Callback handler to be called when the Side menu changes its width from expanded to collapse and vice versa.\n * @event bqSelect - Callback handler to be called when the active/selected menu item changes.\n *\n * @slot logo - The section for displaying the logo or brand in the side menu.\n * @slot The main section that holds all menu items.\n * @slot footer - The section for adding footer content to the side menu.\n *\n * @part base - HTML `<aside>` root container\n * @part footer - HTML `<div>` element that holds the footer\n * @part logo - HTML `<div>` element that holds the logo\n * @part nav - HTML `<nav>` element that holds the navigation items\n *\n * @cssprop --bq-side-menu--bg-color - Side menu background color\n * @cssprop --bq-side-menu--brand-color - Side menu logo color\n * @cssprop --bq-side-menu--border-color - Side menu border color\n */\n@Component({\n tag: 'bq-side-menu',\n styleUrl: './scss/bq-side-menu.scss',\n shadow: true,\n})\nexport class BqSideMenu {\n // Own Properties\n // ====================\n\n private menuItemCssSelector = 'bq-side-menu-item';\n\n private bodyCss = 'bq-body--side-menu';\n private bodyCssExpand = 'bq-body--side-menu__expand';\n private bodyCssCollapse = 'bq-body--side-menu__collapse';\n\n private menuElem: HTMLElement;\n\n // Reference to host HTML element\n // ===================================\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private documentBody: HTMLBodyElement;\n\n // Public Property API\n // ========================\n\n /** It sets a predefined appearance of the side menu */\n @Prop({ reflect: true }) appearance: TSideMenuAppearance = 'default';\n\n /** If true, the container will reduce its width */\n @Prop({ reflect: true }) collapse: boolean = false;\n\n /** It sets the size of the navigation menu items */\n @Prop({ reflect: true }) size: TSideMenuSize = 'medium';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('collapse')\n onCollapsePropChange() {\n this.handleCollapse();\n this.bqCollapse.emit({ collapse: this.collapse });\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler to be called when the Side menu changes its width from expanded to collapse and vice versa */\n @Event() bqCollapse: EventEmitter<{ collapse: boolean }>;\n\n /** Callback handler to be called when the active/selected menu item changes */\n @Event() bqSelect: EventEmitter<HTMLBqSideMenuItemElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentDidLoad() {\n if (!isClient()) return;\n\n this.documentBody = document.querySelector('body');\n this.documentBody.classList.add(this.bodyCss);\n this.handleCollapse();\n }\n\n disconnectedCallback() {\n this.cleanDocumentBodyClass();\n }\n\n // Listeners\n // ==============\n\n @Listen('bqClick', { passive: true })\n onMenuItemClick(event: Event) {\n const { target: item } = event;\n if (!isHTMLElement(item, 'bq-side-menu-item')) return;\n\n this.menuItems.forEach(\n (menuItem: HTMLBqSideMenuItemElement) => (menuItem.active = !menuItem.disabled && menuItem === item),\n );\n this.bqSelect.emit(item);\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 /** Toggle the collapse state of the side menu */\n @Method()\n async toggleCollapse() {\n this.collapse = !this.collapse;\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private get menuItems() {\n if (!this.menuElem) return [];\n\n const slot = this.menuElem.querySelector('slot');\n return [...slot.assignedElements({ flatten: true })].filter(\n (el: HTMLBqSideMenuItemElement) => el.tagName.toLowerCase() === this.menuItemCssSelector,\n ) as [HTMLBqSideMenuItemElement];\n }\n\n private handleCollapse = () => {\n if (!this.menuItems.length) return;\n\n this.menuItems.forEach((menuItem: HTMLBqSideMenuItemElement) => (menuItem.collapse = this.collapse));\n if (this.collapse) {\n this.collapseDocumentBody();\n } else {\n this.expandDocumentBody();\n }\n };\n\n private collapseDocumentBody = () => {\n if (!this.collapse) return;\n\n this.documentBody.classList.remove(this.bodyCssExpand);\n this.documentBody.classList.add(this.bodyCssCollapse);\n };\n\n private expandDocumentBody = () => {\n if (this.collapse) return;\n\n this.documentBody.classList.remove(this.bodyCssCollapse);\n this.documentBody.classList.add(this.bodyCssExpand);\n };\n\n private cleanDocumentBodyClass = () => {\n this.documentBody.classList.remove(this.bodyCss, this.bodyCssCollapse, this.bodyCssExpand);\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <aside class={{ 'bq-side-menu overflow-y-auto': true, 'is-collapsed': this.collapse }} part=\"base\">\n {/* Company logo and name */}\n <div class={{ 'bq-side-menu--logo': true, 'is-collapsed': this.collapse }} part=\"logo\">\n <slot name=\"logo\" />\n </div>\n {/* Navigation content */}\n <nav\n class=\"bq-side-menu--nav flex flex-col gap-y-xs px-xs pt-xs2\"\n ref={(navElem) => (this.menuElem = navElem)}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n role=\"menu\"\n part=\"nav\"\n >\n <slot />\n </nav>\n {/* Footer */}\n <div\n class=\"bq-side-menu--footer sticky flex justify-center bg-[var(--bq-side-menu--bg-color)] p-xs inset-be-0 m-bs-[auto]\"\n part=\"footer\"\n >\n <slot name=\"footer\"></slot>\n </div>\n </aside>\n );\n }\n}\n"],"mappings":";;;;0HAAA,MAAMA,EAAgB,+/tBACtB,MAAAC,EAAeD,E,MC4DFE,EAAU,M,mGAIbC,oBAAsB,oBAEtBC,QAAU,qBACVC,cAAgB,6BAChBC,gBAAkB,+BAElBC,SASSC,aAMQC,WAAkC,UAGlCC,SAAoB,MAGpBC,KAAsB,SAM/C,oBAAAC,GACEC,KAAKC,iBACLD,KAAKE,WAAWC,KAAK,CAAEN,SAAUG,KAAKH,U,CAQ/BK,WAGAE,SAMT,gBAAAC,GACE,IAAKC,IAAY,OAEjBN,KAAKL,aAAeY,SAASC,cAAc,QAC3CR,KAAKL,aAAac,UAAUC,IAAIV,KAAKT,SACrCS,KAAKC,gB,CAGP,oBAAAU,GACEX,KAAKY,wB,CAOP,eAAAC,CAAgBC,GACd,MAAQC,OAAQC,GAASF,EACzB,IAAKG,EAAcD,EAAM,qBAAsB,OAE/ChB,KAAKkB,UAAUC,SACZC,GAAyCA,EAASC,QAAUD,EAASE,UAAYF,IAAaJ,IAEjGhB,KAAKI,SAASD,KAAKa,E,CAYrB,oBAAMO,GACJvB,KAAKH,UAAYG,KAAKH,Q,CAQxB,aAAYqB,GACV,IAAKlB,KAAKN,SAAU,MAAO,GAE3B,MAAM8B,EAAOxB,KAAKN,SAASc,cAAc,QACzC,MAAO,IAAIgB,EAAKC,iBAAiB,CAAEC,QAAS,QAASC,QAClDC,GAAkCA,EAAGC,QAAQC,gBAAkB9B,KAAKV,qB,CAIjEW,eAAiB,KACvB,IAAKD,KAAKkB,UAAUa,OAAQ,OAE5B/B,KAAKkB,UAAUC,SAASC,GAAyCA,EAASvB,SAAWG,KAAKH,WAC1F,GAAIG,KAAKH,SAAU,CACjBG,KAAKgC,sB,KACA,CACLhC,KAAKiC,oB,GAIDD,qBAAuB,KAC7B,IAAKhC,KAAKH,SAAU,OAEpBG,KAAKL,aAAac,UAAUyB,OAAOlC,KAAKR,eACxCQ,KAAKL,aAAac,UAAUC,IAAIV,KAAKP,gBAAgB,EAG/CwC,mBAAqB,KAC3B,GAAIjC,KAAKH,SAAU,OAEnBG,KAAKL,aAAac,UAAUyB,OAAOlC,KAAKP,iBACxCO,KAAKL,aAAac,UAAUC,IAAIV,KAAKR,cAAc,EAG7CoB,uBAAyB,KAC/BZ,KAAKL,aAAac,UAAUyB,OAAOlC,KAAKT,QAASS,KAAKP,gBAAiBO,KAAKR,cAAc,EAO5F,MAAA2C,GACE,OACEC,EAAA,SAAAC,IAAA,2CAAOC,MAAO,CAAE,+BAAgC,KAAM,eAAgBtC,KAAKH,UAAY0C,KAAK,QAE1FH,EAAA,OAAAC,IAAA,2CAAKC,MAAO,CAAE,qBAAsB,KAAM,eAAgBtC,KAAKH,UAAY0C,KAAK,QAC9EH,EAAA,QAAAC,IAAA,2CAAMG,KAAK,UAGbJ,EAAA,OAAAC,IAAA,2CACEC,MAAM,wDACNG,IAAMC,GAAa1C,KAAKN,SAAWgD,EAEnCC,KAAK,OACLJ,KAAK,OAELH,EAAA,QAAAC,IAAA,8CAGFD,EAAA,OAAAC,IAAA,2CACEC,MAAM,iHACNC,KAAK,UAELH,EAAA,QAAAC,IAAA,2CAAMG,KAAK,Y","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["SPINNER_TEXT_POSITION","SPINNER_SIZE","bqSpinnerCss","BqSpinnerStyle0","BqSpinner","iconSlotElem","slotElem","observer","MutationObserver","mutations","mutation","this","slotContentLength","target","textContent","length","hasIconSlot","hasSlot","animation","textPosition","size","handleTextPositionProp","validatePropValue","el","handleSizeProp","setIconSize","handleHasIconSlot","componentWillLoad","checkPropValues","componentDidLoad","handleSlotChange","handleIconSlotChange","disconnectedCallback","disconnect","hasSlotContent","slot","querySelector","isNil","getTextContent","recurse","nodes","assignedNodes","flatten","forEach","node","observe","characterData","childList","subtree","isTextDisplayed","bqIcon","parseInt","getCSSVariableValue","toString","assignedElements","filter","isHTMLElement","render","h","key","class","part","role","fill","viewBox","d","opacity","flex","ref","spanElem","name","onSlotchange"],"sources":["../../packages/beeq/src/components/spinner/bq-spinner.types.ts","../../packages/beeq/src/components/spinner/scss/bq-spinner.scss?tag=bq-spinner&encapsulation=shadow","../../packages/beeq/src/components/spinner/bq-spinner.tsx"],"sourcesContent":["export const SPINNER_TEXT_POSITION = ['none', 'left', 'right', 'above', 'bellow'] as const;\nexport const SPINNER_SIZE = ['small', 'medium', 'large'] as const;\nexport type TSpinnerTextPosition = (typeof SPINNER_TEXT_POSITION)[number];\nexport type TSpinnerSize = (typeof SPINNER_SIZE)[number];\n","/* -------------------------------------------------------------------------- */\n/* Spinner styles */\n/* -------------------------------------------------------------------------- */\n@import './bq-spinner.variables';\n\n:host {\n @apply relative inline-block;\n}\n\n.bq-spinner {\n @apply flex;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Spinner loader size */\n/* -------------------------------------------------------------------------- */\n\n.bq-spinner--loader.large {\n @apply bs-[--bq-spinner--size-large] is-[--bq-spinner--size-large];\n}\n\n.bq-spinner--loader.medium {\n @apply bs-[--bq-spinner--size-medium] is-[--bq-spinner--size-medium];\n}\n\n.bq-spinner--loader.small {\n @apply bs-[--bq-spinner--size-small] is-[--bq-spinner--size-small];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Text position */\n/* -------------------------------------------------------------------------- */\n\n.text-left,\n.text-right {\n @apply flex-row items-center;\n\n &.has-text {\n @apply gap-x-m;\n }\n}\n\n.text-left {\n .bq-spinner--loader,\n .bq-spinner--icon {\n @apply order-2;\n }\n\n .bq-spinner--text {\n @apply order-1;\n }\n}\n\n.text-right {\n .bq-spinner--loader,\n .bq-spinner--icon {\n @apply order-1;\n }\n\n .bq-spinner--text {\n @apply order-2;\n }\n}\n\n.text-above,\n.text-bellow {\n @apply flex-col items-center;\n\n &.has-text {\n @apply gap-y-m;\n }\n}\n\n.text-above {\n .bq-spinner--loader,\n .bq-spinner--icon {\n @apply order-2;\n }\n\n .bq-spinner--text {\n @apply order-1;\n }\n}\n\n.text-bellow {\n .bq-spinner--loader,\n .bq-spinner--icon {\n @apply order-1;\n }\n\n .bq-spinner--text {\n @apply order-2;\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* Animate slotted icon if provided */\n/* -------------------------------------------------------------------------- */\n\n.is-animated {\n .bq-spinner--icon,\n .bq-spinner--loader > svg {\n @include animation-spin;\n }\n}\n","import { Component, Element, h, Prop, State, Watch } from '@stencil/core';\n\nimport { SPINNER_SIZE, SPINNER_TEXT_POSITION, TSpinnerSize, TSpinnerTextPosition } from './bq-spinner.types';\nimport {\n getCSSVariableValue,\n getTextContent,\n hasSlotContent,\n isHTMLElement,\n isNil,\n validatePropValue,\n} from '../../shared/utils';\n\n/**\n * Spinners are designed for users to display data loading.\n *\n * @example How to use it\n * ```html\n * <bq-spinner size=\"medium\" text-position=\"bellow\">\n * <span>Loading...</span>\n * </bq-spinner>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/275f10-spinner/b/09d7b1\n * @status stable\n *\n * @attr {boolean} animation - If `false`, the animation on the icon element will be stopped.\n * @attr {\"small\" | \"medium\" | \"large\"} size - It defines the size of the icon element displayed.\n * @attr {\"above\" | \"below\" | \"left\" | \"right\" | \"none\"} text-position - It defines the position of the label text.\n *\n * @slot icon - The icon slot container.\n * @slot - The content of the spinner component.\n *\n * @part base - The div wrapper container used under the hood.\n * @part icon - The `<svg>` icon element used to spin/animate.\n * @part custom-icon - The `<span>` tag element that holds the custom icon element passed.\n * @part text - The `<span>` tag element that renders the label text inside the component.\n *\n * @cssprop --bq-spinner--color - Spinner color\n * @cssprop --bq-spinner--size-large - Spinner large size\n * @cssprop --bq-spinner--size-medium - Spinner medium size\n * @cssprop --bq-spinner--size-small - Spinner small size\n * @cssprop --bq-spinner--large-text-fontSize - Spinner large text font size\n * @cssprop --bq-spinner--medium-text-fontSize - Spinner medium text font size\n * @cssprop --bq-spinner--small-text-fontSize - Spinner small text font size\n * @cssprop --bq-spinner--text-lineHeight - Spinner text line height\n */\n@Component({\n tag: 'bq-spinner',\n styleUrl: './scss/bq-spinner.scss',\n shadow: true,\n})\nexport class BqSpinner {\n // Own Properties\n // ====================\n\n private iconSlotElem: HTMLElement;\n private slotElem: HTMLElement;\n private observer: MutationObserver = new MutationObserver((mutations) => {\n const [mutation] = mutations;\n this.slotContentLength = mutation.target.textContent.length;\n });\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqSpinnerElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasIconSlot = false;\n @State() private hasSlot = false;\n @State() private slotContentLength = 0;\n\n // Public Property API\n // ========================\n\n /** If `false`, the animation on the icon element will be stopped */\n @Prop({ reflect: true }) animation? = true;\n\n /** It defines the position of the label text */\n @Prop({ reflect: true }) textPosition: TSpinnerTextPosition = 'none';\n\n /** It defines the size of the icon element displayed */\n @Prop({ reflect: true }) size: TSpinnerSize = 'medium';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('textPosition')\n handleTextPositionProp() {\n validatePropValue(SPINNER_TEXT_POSITION, 'none', this.el, 'textPosition');\n }\n\n @Watch('size')\n handleSizeProp() {\n validatePropValue(SPINNER_SIZE, 'medium', this.el, 'size');\n this.setIconSize();\n }\n\n @Watch('hasIconSlot')\n handleHasIconSlot() {\n this.setIconSize();\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.checkPropValues();\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n this.handleIconSlotChange();\n this.setIconSize();\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 if (!this.slotElem) return;\n\n this.hasSlot = hasSlotContent(this.slotElem);\n if (!this.hasSlot) return;\n\n const slot = this.slotElem.querySelector('slot') ?? null;\n if (isNil(slot)) return;\n\n this.slotContentLength = getTextContent(slot, { recurse: true }).length;\n const nodes = slot.assignedNodes({ flatten: true });\n nodes.forEach((node) => {\n this.observer.observe(node, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n });\n };\n\n private handleIconSlotChange = (): void => {\n this.hasIconSlot = hasSlotContent(this.iconSlotElem, 'icon');\n };\n\n private checkPropValues = (): void => {\n validatePropValue(SPINNER_TEXT_POSITION, 'none', this.el, 'textPosition');\n validatePropValue(SPINNER_SIZE, 'medium', this.el, 'size');\n };\n\n private get isTextDisplayed(): boolean {\n return this.textPosition !== 'none';\n }\n\n private setIconSize(): void {\n if (!this.hasIconSlot || !this.bqIcon) return;\n\n this.bqIcon.size = parseInt(getCSSVariableValue(`bq-spinner--size-${this.size}`, this.el)).toString();\n }\n\n private get bqIcon(): HTMLBqIconElement | null {\n if (!this.hasIconSlot) return null;\n\n const slot = this.iconSlotElem.querySelector('slot');\n\n return [...slot.assignedElements({ flatten: true })].filter((el: Element) =>\n isHTMLElement(el, 'bq-icon'),\n )[0] as HTMLBqIconElement;\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div\n class={{\n [`bq-spinner ${this.size} text-${this.textPosition}`]: true,\n 'is-animated': this.animation,\n 'has-text': !!this.slotContentLength,\n }}\n part=\"base\"\n >\n {!this.hasIconSlot && (\n <div\n class={`bq-spinner--loader ${this.size} relative text-[--bq-spinner--color]`}\n aria-label=\"Loading...\"\n role=\"status\"\n >\n <svg class=\"bs-full is-full\" fill=\"currentColor\" viewBox=\"0 0 48 48\">\n <path\n fill=\"currentColor\"\n d=\"M10.27 7.637c-.937-1.117-.798-2.796.415-3.605a24 24 0 0 1 37.09 23.249c-.2 1.444-1.65 2.301-3.064 1.944-1.414-.356-2.25-1.793-2.096-3.242A18.72 18.72 0 0 0 14.102 8.11c-1.237.77-2.895.643-3.832-.474Z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M48 24c0 13.255-10.745 24-24 24S0 37.255 0 24 10.745 0 24 0s24 10.745 24 24ZM5.28 24c0 10.339 8.381 18.72 18.72 18.72 10.339 0 18.72-8.381 18.72-18.72 0-10.339-8.381-18.72-18.72-18.72C13.661 5.28 5.28 13.661 5.28 24Z\"\n opacity=\".1\"\n />\n </svg>\n </div>\n )}\n <span\n class={{\n 'bq-spinner--icon': true,\n flex: this.hasIconSlot,\n '!hidden': !this.hasIconSlot,\n }}\n ref={(spanElem) => (this.iconSlotElem = spanElem)}\n part=\"custom-icon\"\n >\n <slot name=\"icon\" onSlotchange={this.handleIconSlotChange} />\n </span>\n <span\n class={{\n 'bq-spinner--text font-medium leading-regular text-primary': true,\n '!hidden': !this.isTextDisplayed,\n }}\n part=\"text\"\n ref={(spanElem) => (this.slotElem = spanElem)}\n >\n <slot onSlotchange={this.handleSlotChange} />\n </span>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +0,0 @@
1
- /*!
2
- * Built by Endavans
3
- * © https://beeq.design - Apache 2 License.
4
- */
5
- import"./p-c05c50bf.js";import{i as o}from"./p-ecd27cf2.js";const c=c=>o(c)?c.length!==0:Boolean(c);export{c as i};
6
- //# sourceMappingURL=p-9ecdbeec.js.map
@@ -1,6 +0,0 @@
1
- /*!
2
- * Built by Endavans
3
- * © https://beeq.design - Apache 2 License.
4
- */
5
- import"./p-c05c50bf.js";import{i as t}from"./p-07b82e50.js";let n;const s="data-beeq";const r="svg";const c=t=>{n=t};const o=(t="")=>{if(!n){const t=e();const n=t?null:u();const o=t||n;if(o){const n=t?o.getAttribute(s):i(o);c(`${n}/${r}`)}else{c(`./${r}`)}}const o=t?`/${t.replace(/^\//,"")}`:"";return n.replace(/\/$/,"")+o};const e=()=>{if(!t())return null;return document.querySelector(`script[${s}]`)};const u=()=>{if(!t())return null;return document.querySelector(`script[src*="beeq"]`)};const i=n=>{if(!t())return"";const s=n.getAttribute("src");return s?s.substring(0,s.lastIndexOf("/")):""};export{o as g,c as s};
6
- //# sourceMappingURL=p-a035d288.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["beeqBasePath","DATA_BEEQ_ATTRIBUTE","DEFAULT_SVG_PATH","setBasePath","path","getBasePath","subpath","configScript","findConfigScript","fallbackScript","findFallbackScript","script","getAttribute","getScriptPath","formattedSubpath","replace","isClient","document","querySelector","src","substring","lastIndexOf"],"sources":["../../packages/beeq/src/shared/utils/assetsPath.ts"],"sourcesContent":["/**\n * Inspired by Shoelace's `getBasePath` and `setBasePath` functions.\n * https://github.com/shoelace-style/shoelace/blob/next/src/utilities/base-path.ts\n */\nimport { Env } from '@stencil/core';\n\nimport { isClient } from './isClient';\n\nlet beeqBasePath: string | undefined;\nconst DATA_BEEQ_ATTRIBUTE = 'data-beeq';\nconst DEFAULT_SVG_PATH = 'svg';\n\n/**\n * Sets the base path for the assets.\n * @param {string} path - The base path to set.\n */\nexport const setBasePath = (path: string): void => {\n beeqBasePath = path;\n};\n\n/**\n * Gets the base path for the assets.\n * @param {string} subpath - An optional subpath to append to the base path.\n * @returns {string} The base path of the assets.\n */\nexport const getBasePath = (subpath: string = ''): string => {\n if (!beeqBasePath) {\n const configScript = findConfigScript();\n const fallbackScript = configScript ? null : findFallbackScript();\n\n const script = configScript || fallbackScript;\n if (script) {\n const path = configScript ? script.getAttribute(DATA_BEEQ_ATTRIBUTE) : getScriptPath(script);\n setBasePath(`${path}/${DEFAULT_SVG_PATH}`);\n } else {\n // Fallback: use an environment variable (if set) or the default path\n setBasePath(Env.BEEQ_ASSETS_BASE_PATH || `./${DEFAULT_SVG_PATH}`);\n }\n }\n\n // Return the base path without a trailing slash. If one exists, append the subpath separated by a slash.\n const formattedSubpath = subpath ? `/${subpath.replace(/^\\//, '')}` : '';\n return beeqBasePath.replace(/\\/$/, '') + formattedSubpath;\n};\n\n/**\n * Finds the configuration script element.\n * @returns The configuration script element or null if not found.\n */\nconst findConfigScript = (): HTMLScriptElement | null => {\n if (!isClient()) return null;\n\n return document.querySelector(`script[${DATA_BEEQ_ATTRIBUTE}]`);\n};\n\n/**\n * Finds the fallback script element.\n * @returns The fallback script element or null if not found.\n */\nconst findFallbackScript = (): HTMLScriptElement | null => {\n if (!isClient()) return null;\n\n return document.querySelector(`script[src*=\"beeq\"]`);\n};\n\n/**\n * Gets the path of a script element.\n * @param {HTMLScriptElement} script - The script element.\n * @returns The path of the script element.\n */\nconst getScriptPath = (script: HTMLScriptElement): string => {\n if (!isClient()) return '';\n\n const src = script.getAttribute('src');\n return src ? src.substring(0, src.lastIndexOf('/')) : '';\n};\n"],"mappings":";;;;4DAQA,IAAIA,EACJ,MAAMC,EAAsB,YAC5B,MAAMC,EAAmB,M,MAMZC,EAAeC,IAC1BJ,EAAeI,CAAI,E,MAQRC,EAAc,CAACC,EAAkB,MAC5C,IAAKN,EAAc,CACjB,MAAMO,EAAeC,IACrB,MAAMC,EAAiBF,EAAe,KAAOG,IAE7C,MAAMC,EAASJ,GAAgBE,EAC/B,GAAIE,EAAQ,CACV,MAAMP,EAAOG,EAAeI,EAAOC,aAAaX,GAAuBY,EAAcF,GACrFR,EAAY,GAAGC,KAAQF,I,KAClB,CAELC,EAAyC,KAAKD,I,EAKlD,MAAMY,EAAmBR,EAAU,IAAIA,EAAQS,QAAQ,MAAO,MAAQ,GACtE,OAAOf,EAAae,QAAQ,MAAO,IAAMD,CAAgB,EAO3D,MAAMN,EAAmB,KACvB,IAAKQ,IAAY,OAAO,KAExB,OAAOC,SAASC,cAAc,UAAUjB,KAAuB,EAOjE,MAAMS,EAAqB,KACzB,IAAKM,IAAY,OAAO,KAExB,OAAOC,SAASC,cAAc,sBAAsB,EAQtD,MAAML,EAAiBF,IACrB,IAAKK,IAAY,MAAO,GAExB,MAAMG,EAAMR,EAAOC,aAAa,OAChC,OAAOO,EAAMA,EAAIC,UAAU,EAAGD,EAAIE,YAAY,MAAQ,EAAE,S","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqSwitchCss","BqSwitchStyle0","BqSwitch","labelElem","inputElem","prevCheckedValue","internals","hasLabel","backgroundOnHover","checked","disabled","formValidationMessage","fullWidth","innerLabel","justifyContent","name","required","reverseOrder","value","handleRequiredChange","this","updateFormValidity","bqChange","bqFocus","bqBlur","componentWillLoad","componentDidLoad","handleSlotChange","componentDidUpdate","emit","formAssociatedCallback","setFormValue","formResetCallback","removeAttribute","undefined","vClick","click","vFocus","focus","vBlur","blur","handleChange","setAttribute","handleOnFocus","el","handleOnBlur","slot","querySelector","isNil","getTextContent","recurse","length","states","clear","add","setValidity","valueMissing","render","hostStyle","labelCssClasses","h","Host","key","class","style","part","type","onBlur","onChange","onFocus","ref","input","role","color","title","span","onSlotchange"],"sources":["../../packages/beeq/src/components/switch/scss/bq-switch.scss?tag=bq-switch&encapsulation=shadow","../../packages/beeq/src/components/switch/bq-switch.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Switch styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-switch.variables';\n\n:host {\n @apply inline-block;\n}\n\n:host(.full-width) {\n @apply is-full;\n}\n\n.bq-switch {\n @apply flex cursor-pointer select-none items-center rounded-s transition-colors duration-300 p-b-2 p-i-2;\n\n justify-content: var(--bq-switch--justify-content);\n\n // Display background on hover (if enabled)\n &.has-background:not(.is-disabled):hover {\n @apply bg-hover-ui-primary;\n }\n\n &.is-disabled {\n @apply cursor-not-allowed opacity-60;\n }\n}\n\n.bq-switch--input:not(:disabled):focus,\n.bq-switch--input:not(:disabled):focus-visible {\n ~ .bq-switch--control {\n @apply focus;\n }\n}\n\n.bq-switch--control__dot {\n @apply absolute start-xs2 rounded-full bg-ui-primary bs-[--bq-switch--dot-size] is-[--bq-switch--dot-size];\n @apply group-[&.is-checked]:start-[calc(100%_-_var(--bq-switch--dot-size)_-_var(--bq-spacing-xs2))] group-[&.is-checked]:bg-[--bq-icon--alt];\n @apply transition-all duration-300;\n}\n\n.bq-switch--control__icon {\n --bq-icon--size: var(--bq-switch--dot-size) !important;\n\n &::part(base) {\n @apply flex;\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\n\nimport { TSwitchInnerLabel, TSwitchJustifyContent } from './bq-switch.types';\nimport { getTextContent, isNil } from '../../shared/utils';\n\n/**\n * Toggle switches are digital on/off switches.\n * They should provide immediate results, giving users the freedom to control their preferences as needed.\n *\n * @example How to use it\n * ```html\n * <bq-switch inner-label=\"default\" justify-content=\"start\" name=\"bq-switch\" value=\"Switch value\">\n * Toggle me!\n * </bq-switch>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/49d9c9-switch\n * @status stable\n *\n * @dependency bq-icon\n *\n * @attr {boolean} background-on-hover - If `true`, a background will be displayed on hover\n * @attr {boolean} checked - It indicates whether if the switch is `ON` by default (when the page loads)\n * @attr {boolean} disabled - If `true`, the switch control will be disabled and no interaction will be allowed\n * @attr {string} form-validation-message - The native form validation message\n * @attr {boolean} full-width - If `true`, the component will take the full width space available on the parent container\n * @attr {\"default\" | \"icon\"} inner-label - It indicates how to to display the on/off marks inside the control, with icons or none (default)\n * @attr {\"start\" | \"end\" | \"center\" | \"space-between\" | \"space-around\" | \"space-evenly\"} justify-content - It defines how to distribute the space between and around the control and the label text\n * @attr {string} name - Name of the form control. Submitted with the form as part of a name/value pair\n * @attr {boolean} required - If `true`, it will indicate that the user must switch `ON` the element before the owning form can be submitted\n * @attr {boolean} reverse-order - If `true`, the order of the control and the label text will be changed\n * @attr {string} value - The input control's value, submitted as a name/value pair with form data\n *\n * @event bqChange - Handler to be called when the switch state changes\n * @event bqFocus - Handler to be called when the switch gets focus\n * @event bqBlur - Handler to be called when the switch loses focus\n *\n * @slot - The switch label text\n *\n * @part base - HTML `<label>` root container\n * @part control - HTML `<div>` element for the custom control\n * @part dot - HTML `<div>` element that acts as changing dot\n * @part icon-off - HTMLBqIcon `<pk-icon>` element used as the `OFF` mark inner label\n * @part icon-on - HTMLBqIcon `<pk-icon>` element used as the `ON` mark inner label\n * @part label - HTML `<span>` element that holds the label text\n *\n * @cssprop --bq-switch--height - Switch height\n * @cssprop --bq-switch--justify-content - Switch justify content\n * @cssprop --bq-switch--width - Switch width\n * @cssprop --bq-switch--dot-size - Switch dot size\n */\n@Component({\n tag: 'bq-switch',\n styleUrl: './scss/bq-switch.scss',\n formAssociated: true,\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqSwitch {\n // Own Properties\n // ====================\n\n private labelElem: HTMLSpanElement;\n private inputElem: HTMLInputElement;\n private prevCheckedValue: boolean;\n\n // Reference to host HTML element\n // ===================================\n\n @AttachInternals() internals!: ElementInternals;\n @Element() el!: HTMLBqSwitchElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() hasLabel = false;\n\n // Public Property API\n // ========================\n\n /** If true, a background will be displayed on hover */\n @Prop({ reflect: true }) backgroundOnHover?: boolean = false;\n\n /** It indicates whether if the switch is `ON` by default (when the page loads) */\n @Prop({ reflect: true, mutable: true }) checked?: boolean = false;\n\n /** If true, the switch control will be disabled and no interaction will be allowed */\n @Prop({ reflect: true }) disabled?: boolean = false;\n\n /** The native form validation message */\n @Prop({ mutable: true }) formValidationMessage?: string;\n\n /** If true, the component will take the full width space available on the parent container */\n @Prop({ reflect: true }) fullWidth?: boolean = false;\n\n /** It indicates how to to display the on/off marks inside the control, with icons or none (default) */\n @Prop({ reflect: true }) innerLabel?: TSwitchInnerLabel = 'default';\n\n /**\n * It defines how to distribute the space between and around the control and the label text\n * (https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content)\n */\n @Prop({ reflect: true }) justifyContent?: TSwitchJustifyContent = 'start';\n\n /** Name of the form control. Submitted with the form as part of a name/value pair */\n @Prop({ reflect: true }) name!: string;\n\n /** If `true`, it will indicate that the user must switch `ON` the element before the owning form can be submitted */\n @Prop({ reflect: true }) required?: boolean = false;\n\n /** If true, the order of the control and the label text will be changed */\n @Prop({ reflect: true }) reverseOrder?: boolean = false;\n\n /** The input control's value, submitted as a name/value pair with form data. */\n @Prop({ reflect: true }) value?: string;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('required')\n handleRequiredChange() {\n this.updateFormValidity();\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when the switch state changes */\n @Event() bqChange: EventEmitter<{ checked: boolean }>;\n\n /** Handler to be called when the switch gets focus */\n @Event() bqFocus: EventEmitter<HTMLBqSwitchElement>;\n\n /** Handler to be called when the switch loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqSwitchElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.prevCheckedValue = this.checked;\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n componentDidUpdate() {\n /**\n * We need to trigger the `bqChange` immediately after the first update happens\n * so the checked attribute get applied, otherwise, a delay will happen\n * between the event emits and when the checked attribute value gets reflected in the element host.\n */\n if (this.checked !== this.prevCheckedValue) {\n this.bqChange.emit({ checked: this.checked });\n this.prevCheckedValue = this.checked;\n }\n }\n\n formAssociatedCallback() {\n this.setFormValue(this.checked);\n this.updateFormValidity();\n }\n\n formResetCallback() {\n // Reset the form value and validity state\n this.checked = false;\n this.inputElem.removeAttribute('checked');\n this.internals?.setFormValue(undefined);\n this.updateFormValidity();\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 /**\n * Simulate a click event on the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.click()`.\n */\n @Method()\n async vClick() {\n this.inputElem?.click();\n }\n\n /**\n * Sets focus on the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.focus()`.\n */\n @Method()\n async vFocus() {\n this.inputElem?.focus();\n }\n\n /**\n * Remove focus from the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.blur()`.\n */\n @Method()\n async vBlur() {\n this.inputElem?.blur();\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleChange = () => {\n this.checked = !this.checked;\n this.inputElem.setAttribute('checked', `${this.checked}`);\n this.setFormValue(this.checked);\n this.updateFormValidity();\n };\n\n private handleOnFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private handleOnBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n private handleSlotChange = () => {\n const slot = this.labelElem?.querySelector('slot') ?? null;\n if (isNil(slot)) return;\n\n this.hasLabel = !!getTextContent(slot, { recurse: true }).length;\n };\n\n private setFormValue = (checked: boolean) => {\n const value = checked ? 'on' : undefined;\n // Set form value based on the checked state\n // Here we also pass the state of the component (2nd argument) as the state of the form control\n // Details: https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/setFormValue\n this.internals?.setFormValue(value, `${this.checked}`);\n };\n\n private updateFormValidity = () => {\n const { formValidationMessage, internals, required, checked, inputElem } = this;\n // Clear the validity state\n internals?.states.clear();\n\n if (!(required && !checked)) {\n // If the switch component is not required or is checked, set the validity state to valid\n internals?.states.add('valid');\n internals?.setValidity({});\n return;\n }\n\n // Set validity state based on the required property and checked state\n internals?.states.add('invalid');\n internals?.setValidity({ valueMissing: true }, formValidationMessage, inputElem);\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const hostStyle = {\n ...(this.justifyContent && { '--bq-switch--justify-content': this.justifyContent }),\n };\n\n const labelCssClasses = {\n 'has-background': this.backgroundOnHover,\n 'is-checked': this.checked,\n 'is-disabled': this.disabled,\n 'flex-row-reverse': this.reverseOrder,\n };\n\n return (\n <Host class={{ 'full-width': this.fullWidth }} style={hostStyle}>\n <label class={{ 'bq-switch group': true, ...labelCssClasses }} part=\"base\">\n {/* Hidden native HTML input */}\n <input\n class=\"bq-switch--input peer sr-only !bs-[--bq-switch--dot-size] !is-[--bq-switch--width] peer-checked:invisible\"\n type=\"checkbox\"\n checked={this.checked}\n disabled={this.disabled}\n required={this.required}\n name={!isNil(this.name) ? this.name : undefined}\n aria-label={this.name}\n aria-checked={this.checked ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n onBlur={this.handleOnBlur}\n onChange={this.handleChange}\n onFocus={this.handleOnFocus}\n ref={(input) => (this.inputElem = input)}\n role=\"switch\"\n value={this.value}\n />\n {/* Control */}\n <div\n class=\"bq-switch--control relative box-border flex justify-between rounded-full bg-ui-tertiary transition duration-300 bs-[--bq-switch--height] is-[--bq-switch--width] p-b-xs2 p-i-xs2 group-[&.is-checked]:bg-ui-brand\"\n part=\"control\"\n >\n {this.innerLabel === 'icon' && (\n <bq-icon\n class=\"bq-switch--control__icon on\"\n name=\"check\"\n color=\"icon--alt\"\n role=\"img\"\n title=\"On\"\n part=\"icon-on\"\n />\n )}\n {this.innerLabel === 'icon' && (\n <bq-icon\n class=\"bq-switch--control__icon off\"\n name=\"x\"\n color=\"icon--inverse\"\n role=\"img\"\n title=\"Off\"\n part=\"icon-off\"\n />\n )}\n {/* Dot */}\n <div class=\"bq-switch--control__dot\" part=\"dot\" />\n </div>\n {/* Label */}\n <span\n class={{\n 'bq-switch--label text-m font-medium leading-regular text-primary transition-colors duration-300': true,\n 'ms-s': this.hasLabel && !this.reverseOrder,\n 'me-s': this.hasLabel && this.reverseOrder,\n }}\n ref={(span) => (this.labelElem = span)}\n part=\"label\"\n >\n <slot onSlotchange={this.handleSlotChange} />\n </span>\n </label>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["DATE_PICKER_TYPE","CALLY_SCRIPT_ATTRIBUTE","CALLY_LIB_VERSION","CALLY_LIB_HASH","isLibraryLoaded","isCallyLibraryLoaded","document","querySelector","loadCallyLibrary","async","loadScript","type","src","attributes","crossOrigin","integrity","error","Error","message","Promise","resolve","reject","script","createElement","onload","onerror","Object","entries","forEach","key","value","setAttribute","head","appendChild","bqDatePickerCss","BqDatePickerStyle0","BqDatePicker","callyElem","inputElem","labelElem","prefixElem","suffixElem","fallbackInputId","COMMON_EXPORT_PARTS","BUTTON_EXPORT_PARTS","internals","isCallyLoaded","focusedDate","displayDate","hasLabel","hasPrefix","hasRangeEnd","hasSuffix","hasValue","autofocus","clearButtonLabel","disableClear","disabled","distance","firstDayOfWeek","formatOptions","day","month","year","form","formValidationMessage","isDateDisallowed","locale","max","min","months","monthsPerView","name","open","panelHeight","placeholder","placement","required","skidding","showOutsideDays","strategy","tentative","validationStatus","handleValueChange","formatDisplayValue","this","setFormValue","isNil","undefined","updateFormValidity","Array","isArray","some","val","length","isDefined","setFocusedDate","checkPropValues","validatePropValue","el","bqBlur","bqChange","bqClear","bqFocus","connectedCallback","isClient","console","componentDidLoad","handleSlotChange","formAssociatedCallback","formResetCallback","clear","handleOpenChange","ev","composedPath","includes","detail","handleClickOutside","button","isEventTargetChildOfElement","emit","handleBlur","handleFocus","formatFocusedDate","Date","toLocaleDateString","handleChange","isHTMLElement","target","dateValue","isNaN","getTime","handleCalendarChange","focus","handleCalendarRangeStart","handleCalendarRangeEnd","handleClearClick","stopPropagation","hasSlotContent","generateCalendarMonth","offset","className","h","class","exportparts","generateCalendarMonths","from","_","i","dateRegex","match","exec","dateFormatter","Intl","DateTimeFormat","start","end","split","map","dateStr","formatRange","dates","date","format","join","states","toString","trim","add","setValidity","valueMissing","CalendarType","componentTypes","single","multi","range","render","CallyCalendar","labelId","part","id","htmlFor","ref","onSlotchange","slot","spanElem","autoComplete","autoCapitalize","readonly","spellcheck","onBlur","onFocus","onChange","appearance","size","onBqClick","pageBy","onRangestart","onRangeend","elem","color","label"],"sources":["../../packages/beeq/src/components/date-picker/bq-date-picker.types.ts","../../packages/beeq/src/components/date-picker/helper/callyLibrary.ts","../../packages/beeq/src/components/date-picker/scss/bq-date-picker.scss?tag=bq-date-picker&encapsulation=shadow","../../packages/beeq/src/components/date-picker/bq-date-picker.tsx"],"sourcesContent":["export type DaysOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport const DATE_PICKER_TYPE = ['single', 'multi', 'range'] as const;\nexport type TDatePickerType = (typeof DATE_PICKER_TYPE)[number];\n\nexport type TCalendarDate = {\n focusedDate: string;\n value: string;\n min?: string;\n max?: string;\n months?: number;\n tentative?: string;\n pageBy?: 'single' | 'months';\n firstDayOfWeek?: number;\n showOutsideDays?: boolean;\n isDateDisallowed?: (date: Date) => boolean;\n locale?: string;\n onChange?: (ev: Event) => void;\n onRangestart?: (ev: CustomEvent) => void;\n onRangeend?: (ev: CustomEvent) => void;\n};\n","/* -------------------------------------------------------------------------- */\n/* Cally Library loader helper */\n/* -------------------------------------------------------------------------- */\n\nconst CALLY_SCRIPT_ATTRIBUTE = 'data-cally-library';\n//❗ Make sure to update the version here when the library releases a new version\nconst CALLY_LIB_VERSION = '0.8.0';\n/**\n * ❗ Make sure to update the hash here if the `CALLY_LIB_VERSION` is updated\n * This hash is used to ensure the integrity of the library when loading it\n * from a CDN.\n * @see https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity\n */\nconst CALLY_LIB_HASH = 'sha384-giuY/f8D3+ehgOTmQMr4HvrreOITDmvXsZuDCJ1csQ+3dURHA24NqRd8lkSI6uGF';\n\nlet isLibraryLoaded = false;\n\n/**\n * Checks if the Cally library is already loaded in the document\n * @returns {boolean} True if the library is loaded\n */\nexport const isCallyLibraryLoaded = (): boolean => {\n // This might be a bit redundant, but it's a sanity check to ensure the library is actually loaded\n return isLibraryLoaded || document.querySelector(`script[${CALLY_SCRIPT_ATTRIBUTE}]`) !== null;\n};\n\n/**\n * Loads the Cally library for the date picker component\n * @throws {Error} If the library fails to load\n * @return {Promise<void>}\n */\nexport const loadCallyLibrary = async (): Promise<void> => {\n if (isCallyLibraryLoaded()) return;\n\n try {\n await loadScript({\n type: 'module',\n src: `https://unpkg.com/cally@${CALLY_LIB_VERSION}/dist/cally.js`,\n attributes: {\n [CALLY_SCRIPT_ATTRIBUTE]: '',\n crossOrigin: 'anonymous',\n integrity: CALLY_LIB_HASH,\n },\n });\n\n isLibraryLoaded = true;\n } catch (error) {\n isLibraryLoaded = false;\n throw new Error(`Failed to load the cally library: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n};\n\ninterface ScriptConfig {\n type: string;\n src: string;\n attributes?: Record<string, string>;\n}\n\n/**\n * Helper function to load a script with given configuration\n * @param {Object} config - Script configuration\n * @param {string} config.type - The type of the script\n * @param {string} config.src - The source URL of the script\n * @param {Object} [config.attributes] - Additional attributes to set on the script element\n * @returns {Promise<void>}\n */\nconst loadScript = ({ type, src, attributes = {} }: ScriptConfig): Promise<void> => {\n return new Promise<void>((resolve, reject) => {\n const script = document.createElement('script');\n script.type = type;\n script.src = src;\n\n script.onload = () => resolve();\n script.onerror = (error: Event) =>\n reject(new Error(`Failed to load script: ${src}, ${error instanceof Error ? error.message : 'Unknown error'}`));\n\n Object.entries(attributes).forEach(([key, value]) => {\n script.setAttribute(key, value);\n });\n\n document.head.appendChild(script);\n });\n};\n","/* -------------------------------------------------------------------------- */\n/* Date picker styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-date-picker.variables';\n\n:host {\n @apply block is-full;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Label */\n/* -------------------------------------------------------------------------- */\n\n.bq-date-picker__label {\n @apply flex flex-grow items-center gap-[--bq-date-picker--gap] m-be-[--bq-date-picker--label-margin-bottom];\n @apply text-[length:--bq-date-picker--label-text-size] text-[color:--bq-date-picker--label-text-color];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Date picker input group control */\n/* -------------------------------------------------------------------------- */\n\n.bq-date-picker__control {\n @apply flex items-center transition-[border-color,box-shadow] is-full;\n // Border\n @apply rounded-[--bq-date-picker--border-radius] border-[length:--bq-date-picker--border-width] border-[color:--bq-date-picker--border-color];\n // Padding\n @apply pe-[--bq-date-picker--padding-end] ps-[--bq-date-picker--padding-start] p-b-[--bq-date-picker--paddingY];\n // Text\n @apply select-none text-[length:--bq-date-picker--text-size] text-[color:--bq-date-picker--text-color] placeholder:text-[color:--bq-date-picker--text-placeholder-color];\n // Hover\n @apply [&:not(.disabled):not(:focus-within)]:hover:border-hover-brand;\n\n border-style: var(--bq-date-picker--border-style);\n\n // Focus\n &:not(.disabled):focus-within {\n --bq-ring-width: 1px;\n --bq-ring-offset-width: 0;\n\n @apply focus border-[color:--bq-focus];\n }\n\n // Enable clear button whenever the input group control is hovered or has focus\n &:not(.disabled):hover,\n &:not(.disabled):focus-within {\n .bq-date-picker__control--clear {\n @apply inline-block;\n }\n }\n}\n\n.bq-date-picker__control.disabled {\n @apply cursor-not-allowed opacity-60;\n}\n\n/* ------------------------------- Validation ------------------------------- */\n\n.bq-date-picker__control.validation-error {\n @apply border-danger [&:not(.disabled):not(:focus-within)]:hover:border-hover-danger;\n\n &:not(.disabled):focus-within {\n --bq-ring-color-focus: theme(stroke.danger);\n\n @apply border-active-danger;\n }\n}\n\n.bq-date-picker__control.validation-success {\n @apply border-success [&:not(.disabled):not(:focus-within)]:hover:border-hover-success;\n\n &:not(.disabled):focus-within {\n --bq-ring-color-focus: theme(stroke.success);\n\n @apply border-active-success;\n }\n}\n\n.bq-date-picker__control.validation-warning {\n @apply border-warning [&:not(.disabled):not(:focus-within)]:hover:border-hover-warning;\n\n &:not(.disabled):focus-within {\n --bq-ring-color-focus: theme(stroke.warning);\n\n @apply border-active-warning;\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* Native HTML Input */\n/* -------------------------------------------------------------------------- */\n\n.bq-date-picker__control--input {\n @apply flex-auto cursor-inherit select-none appearance-none bg-inherit font-inherit text-[length:inherit] text-inherit;\n @apply border-none min-bs-[--bq-date-picker--icon-size] min-is-0 p-b-0 p-i-0 m-b-0 m-i-0 focus:outline-none focus-visible:outline-none;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Clear button */\n/* -------------------------------------------------------------------------- */\n\n.bq-date-picker__control--clear::part(button) {\n // Since the clear button is inside the input group control,\n // we need to reset the focus ring styles\n --bq-ring-width: initial;\n --bq-ring-offset-width: initial;\n --bq-ring-color-focus: initial;\n\n @apply rounded-xs border-none bs-auto p-b-0 p-i-0;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Prefix and suffix */\n/* -------------------------------------------------------------------------- */\n\n.bq-date-picker__control--prefix,\n.bq-date-picker__control--suffix {\n @apply pointer-events-none flex items-center text-[color:--bq-date-picker--text-color];\n}\n\n.bq-date-picker__control--prefix {\n @apply me-[--bq-date-picker--gap];\n}\n\n.bq-date-picker__control--suffix {\n @apply ms-[--bq-date-picker--gap];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Slotted and internal icons */\n/* -------------------------------------------------------------------------- */\n\nbq-icon,\n::slotted(bq-icon) {\n --bq-icon--size: var(--bq-date-picker--icon-size) !important;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Customize Cally date picker */\n/* -------------------------------------------------------------------------- */\n\ncalendar-date,\ncalendar-range,\ncalendar-multi {\n &::part(header) {\n @apply justify-center gap-s;\n }\n\n &::part(heading) {\n @apply p-b-xs2 p-i-xs;\n }\n\n &::part(button) {\n @apply rounded-s border-0 bg-transparent transition-colors duration-200 p-b-xs2 p-i-xs2;\n @apply focus-visible:focus hover:bg-hover-ui-primary;\n }\n\n &::part(container) {\n @apply bg-[--bq-date-picker--background-color] p-b-0 p-i-0;\n }\n}\n\ncalendar-month {\n /* stylelint-disable-next-line custom-property-pattern */\n --color-accent: var(--bq-ui--brand);\n\n &::part(button) {\n @apply flex items-center justify-center rounded-s bg-transparent font-default text-primary transition-colors duration-200 ease-in-out p-b-0 p-i-0;\n @apply size-[--bq-date-picker--day-size] focus-visible:focus enabled:hover:bg-hover-secondary disabled:cursor-not-allowed;\n }\n\n &::part(button day disallowed) {\n @apply cursor-not-allowed bg-transparent #{!important};\n }\n\n &::part(button day selected) {\n @apply rounded-s bg-[--bq-date-picker--range-background-color] text-alt enabled:hover:bg-hover-ui-brand;\n }\n\n &::part(button day selected range-inner) {\n @apply rounded-none bg-[--bq-date-picker--range-inner-background-color] text-primary hover:text-alt;\n }\n\n &::part(button day outside) {\n @apply cursor-pointer text-secondary opacity-100;\n }\n\n &::part(today) {\n @apply rounded-s border-[length:--bq-date-picker--currentDate-border-width] border-[color:--bq-date-picker--currentDate-border-color];\n\n border-style: var(--bq-date-picker--border-style);\n }\n\n &::part(today selected) {\n @apply text-alt;\n }\n\n &::part(today range-inner) {\n @apply rounded-none;\n }\n\n &::part(today range-start) {\n @apply rounded-s rounded-es-none;\n }\n\n &::part(today range-end) {\n @apply rounded-s rounded-ee-none;\n }\n\n &::part(range-start) {\n @apply rounded-ee-none rounded-se-none;\n }\n\n &::part(range-end) {\n @apply rounded-es-none rounded-ss-none;\n }\n\n &::part(range-start range-end) {\n @apply rounded-s;\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\n\nimport { DATE_PICKER_TYPE, DaysOfWeek, TCalendarDate, TDatePickerType } from './bq-date-picker.types';\nimport { isCallyLibraryLoaded, loadCallyLibrary } from './helper/callyLibrary';\nimport { Placement } from '../../services/interfaces';\nimport {\n hasSlotContent,\n isClient,\n isDefined,\n isEventTargetChildOfElement,\n isHTMLElement,\n isNil,\n validatePropValue,\n} from '../../shared/utils';\nimport { TInputValidation } from '../input/bq-input.types';\n\n/**\n * The Date Picker is a intuitive UI element component allows users to select dates from a visual calendar interface, providing an intuitive way to input date information.\n *\n * @example How to use it\n * ```html\n * <bq-date-picker\n * first-day-of-week=\"1\"\n * locale=\"en-GB\"\n * months-per-view=\"single\"\n * months=\"2\"\n * name=\"bq-date-picker\"\n * placeholder=\"Enter your date\"\n * placement=\"bottom-end\"\n * show-outside-days=\"false\"\n * type=\"range\"\n * validation-status=\"none\"\n * value=\"2024-05-25\"\n * >\n * <label class=\"flex flex-grow items-center\" slot=\"label\">\n * Date picker label\n * </label>\n * </bq-date-picker>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/5793a9-date-picker\n * @status stable\n *\n * @dependency bq-button\n * @dependency bq-dropdown\n * @dependency bq-icon\n *\n * @attr {boolean} autofocus - If `true`, the Date picker input will be focused on component render.\n * @attr {string} clear-button-label - The clear button aria label.\n * @attr {boolean} disable-clear - If `true`, the clear button won't be displayed.\n * @attr {boolean} disabled - Indicates whether the Date picker input is disabled or not.\n * @attr {number} distance - Represents the distance (gutter or margin) between the Date picker panel and the input element.\n * @attr {0 | 1 | 2 | 3 | 4 | 5 | 6} first-day-of-week - The first day of the week, where Sunday is 0, Monday is 1, etc.\n * @attr {Intl.DateTimeFormatOptions} format-options - The options to use when formatting the displayed value. Details: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options\n * @attr {string} form - The ID of the form that the Date picker input belongs to.\n * @attr {string} form-validation-message - The native form validation message (mandatory if `required` is set).\n * @attr {function} is-date-disallowed - A function that takes a date and returns true if the date should not be selectable.\n * @attr {Intl.LocalesArgument} locale - The locale for formatting dates. If not set, will use the browser's locale. Details: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument\n * @attr {string} max - The latest date that can be selected.\n * @attr {string} min - The earliest date that can be selected.\n * @attr {number} months - Number of months to show when range is `true`.\n * @attr {string} name - The Date picker input name.\n * @attr {boolean} open - If `true`, the Date picker panel will be visible.\n * @attr {string} panel-height - When set, it will override the height of the Date picker panel.\n * @attr {\"top\" | \"right\" | \"bottom\" | \"left\" | \"top-start\" | \"top-end\" | \"right-start\" | \"right-end\" | \"bottom-start\" | \"bottom-end\" | \"left-start\" | \"left-end\"} placement - Position of the Date picker panel.\n * @attr {boolean} required - Indicates whether or not the Date picker input is required to be filled out before submitting the form.\n * @attr {number} skidding - Represents the skidding between the Date picker panel and the input element.\n * @attr {boolean} show-outside-days - Whether to show days outside the month.\n * @attr {string} strategy - Defines the strategy to position the Date picker panel.\n * @attr {string} tentative - The date that is tentatively selected, e.g. the start of a range selection.\n * @attr {\"single\" | \"multi\" | \"range\"} type - It defines how the calendar will behave, allowing single date selection, range selection, or multiple date selection.\n * @attr {\"error\" | \"none\" | \"success\" | \"warning\"} validation-status - The validation status of the Select input.\n * @attr {string} value - The select input value represents the currently selected date or range and can be used to reset the field to a previous value.\n *\n * @method clear - Clears the selected value.\n *\n * @event bqBlur - Callback handler emitted when the input loses focus.\n * @event bqChange - Callback handler emitted when the input value has changed and the input loses focus.\n * @event bqClear - Callback handler emitted when the input value has been cleared.\n * @event bqFocus - Callback handler emitted when the input has received focus.\n *\n * @part base - The component's base wrapper.\n * @part button - The native HTML button used under the hood in the clear button.\n * @part calendar__button - Any button used in the calendar-month component.\n * @part calendar__button - Any button within the calendar-range component.\n * @part calendar__container - The calendar-range container for the entire component.\n * @part calendar__day - The buttons corresponding to each day in the calendar-month grid.\n * @part calendar__disabled - A button that is disabled due to min/max on the calendar-range component.\n * @part calendar__disallowed - Any day that has been disallowed via isDateDisallowed.\n * @part calendar__head - The calendar-month table's header row.\n * @part calendar__header - The calendar-range container for the heading and buttons.\n * @part calendar__heading - The calendar-month heading container that labels the month.\n * @part calendar__heading - The calendar-range heading containing the month and year.\n * @part calendar__next - The next page button on the calendar-range component.\n * @part calendar__outside - Any days which are outside the current month.\n * @part calendar__previous - The previous page button on the calendar-range component.\n * @part calendar__range-end - The day at the end of a date range.\n * @part calendar__range-inner - Any days between the start and end of a date range.\n * @part calendar__range-start - The day at the start of a date range.\n * @part calendar__selected - Any days which are selected.\n * @part calendar__table - The calendar-month <table> element.\n * @part calendar__td - The calendar-month table's body cells.\n * @part calendar__th - The calendar-month table's header cells.\n * @part calendar__today - The Today's day.\n * @part calendar__tr - Any row within the table on the calendar-month component.\n * @part calendar__week - The calendar-month table's body rows.\n * @part clear-btn - The clear button.\n * @part control - The input control wrapper.\n * @part input - The native HTML input element used under the hood.\n * @part label - The label slot container.\n * @part panel - The date picker panel container\n * @part prefix - The prefix slot container.\n * @part suffix - The suffix slot container.\n *\n * @cssprop --bq-date-picker--background-color - Date picker background color.\n * @cssprop --bq-date-picker--border-color - Date picker border color.\n * @cssprop --bq-date-picker--border-color-disabled - Date picker border color when disabled.\n * @cssprop --bq-date-picker--border-color-focus - Date picker border color on focus.\n * @cssprop --bq-date-picker--border-radius - Date picker border radius.\n * @cssprop --bq-date-picker--border-style - Date picker border style.\n * @cssprop --bq-date-picker--border-width - Date picker border width.\n * @cssprop --bq-date-picker--currentDate-border-color - Date picker border color for current date.\n * @cssprop --bq-date-picker--currentDate-border-width - Date picker border width for current date.\n * @cssprop --bq-date-picker--day-size - Date picker button day size.\n * @cssprop --bq-date-picker--gap - Gap between Date picker content and prefix/suffix.\n * @cssprop --bq-date-picker--icon-size - Icon size to use in prefix/suffix and clear button.\n * @cssprop --bq-date-picker--label-margin-bottom - Date picker label margin bottom.\n * @cssprop --bq-date-picker--label-text-color - Date picker label text color.\n * @cssprop --bq-date-picker--label-text-size - Date picker label text size.\n * @cssprop --bq-date-picker--padding-end - Date picker padding end.\n * @cssprop --bq-date-picker--padding-start - Date picker padding start.\n * @cssprop --bq-date-picker--paddingY - Date picker padding top and bottom.\n * @cssprop --bq-date-picker--range-background-color - Background color for the selected date range in the date picker.\n * @cssprop --bq-date-picker--range-inner-background-color - Background color for the selected dates inside the date range in the date picker.\n * @cssprop --bq-date-picker--text-color - Date picker text color.\n * @cssprop --bq-date-picker--text-placeholder-color - Date picker placeholder text color.\n * @cssprop --bq-date-picker--text-size - Date picker text size.\n */\n@Component({\n tag: 'bq-date-picker',\n styleUrl: './scss/bq-date-picker.scss',\n formAssociated: true,\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqDatePicker {\n // Own Properties\n // ====================\n\n private callyElem?: TCalendarDate;\n private inputElem?: HTMLInputElement;\n private labelElem?: HTMLElement;\n private prefixElem?: HTMLElement;\n private suffixElem?: HTMLElement;\n\n private fallbackInputId = 'date-picker';\n\n // Export parts of the calendar-month component\n private readonly COMMON_EXPORT_PARTS =\n 'calendar__heading,calendar__table,calendar__tr,calendar__head,calendar__week,calendar__th,calendar__td';\n private readonly BUTTON_EXPORT_PARTS =\n 'calendar__button,calendar__day,calendar__selected,calendar__today,calendar__disallowed,calendar__outside,calendar__range-start,calendar__range-end,calendar__range-inner';\n\n // Reference to host HTML element\n // ===================================\n\n @AttachInternals() internals: ElementInternals;\n @Element() el!: HTMLBqDatePickerElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() isCallyLoaded = false;\n @State() focusedDate: string;\n @State() displayDate: string;\n @State() hasLabel = false;\n @State() hasPrefix = false;\n @State() hasRangeEnd = false;\n @State() hasSuffix = false;\n @State() hasValue = false;\n\n // Public Property API\n // ========================\n\n /** If `true`, the Date picker input will be focused on component render */\n @Prop({ reflect: true }) autofocus: boolean;\n\n /** The clear button aria label */\n @Prop({ reflect: true }) clearButtonLabel? = 'Clear value';\n\n /** If `true`, the clear button won't be displayed */\n @Prop({ reflect: true }) disableClear? = false;\n\n /**\n * Indicates whether the Date picker input is disabled or not.\n * If `true`, the Date picker is disabled and cannot be interacted with.\n */\n @Prop({ mutable: true }) disabled?: boolean = false;\n\n /** Represents the distance (gutter or margin) between the Date picker panel and the input element. */\n @Prop({ reflect: true }) distance?: number = 8;\n\n /** The first day of the week, where Sunday is 0, Monday is 1, etc */\n @Prop({ reflect: true }) firstDayOfWeek?: DaysOfWeek = 1;\n\n /** The options to use when formatting the displayed value.\n * Details: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options\n */\n @Prop() formatOptions: Intl.DateTimeFormatOptions = {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n };\n\n /** The ID of the form that the Date picker input belongs to. */\n @Prop({ reflect: true }) form?: string;\n\n /** The native form validation message (mandatory if `required` is set) */\n @Prop({ mutable: true }) formValidationMessage?: string;\n\n /** A function that takes a date and returns true if the date should not be selectable */\n @Prop({ reflect: true }) isDateDisallowed?: (date: Date) => boolean;\n\n /** The locale for formatting dates. If not set, will use the browser's locale.\n * Details: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument\n */\n @Prop({ reflect: true }) locale: Intl.LocalesArgument = 'en-GB';\n\n /** The latest date that can be selected */\n @Prop({ reflect: true }) max?: string;\n\n /** The earliest date that can be selected */\n @Prop({ reflect: true }) min?: string;\n\n /** Number of months to show when range is `true` */\n @Prop({ reflect: true }) months: number;\n\n /**\n * Specifies how the next/previous buttons should navigate the calendar.\n * - single: The buttons will navigate by a single month at a time.\n * - months: The buttons will navigate by the number of months displayed per view.\n */\n @Prop({ reflect: true }) monthsPerView: 'single' | 'months' = 'single';\n\n /** The Date picker input name. */\n @Prop({ reflect: true }) name!: string;\n\n /** If `true`, the Date picker panel will be visible. */\n @Prop({ reflect: true, mutable: true }) open?: boolean = false;\n\n /** When set, it will override the height of the Date picker panel. */\n @Prop({ reflect: true, mutable: true }) panelHeight?: string = 'auto';\n\n /** The Date picker input placeholder text value */\n @Prop({ reflect: true }) placeholder?: string;\n\n /** Position of the Date picker panel */\n @Prop({ reflect: true }) placement?: Placement = 'bottom-end';\n\n /** Indicates whether or not the Date picker input is required to be filled out before submitting the form. */\n @Prop({ reflect: true }) required?: boolean;\n\n /** Represents the skidding between the Date picker panel and the input element. */\n @Prop({ reflect: true }) skidding?: number = 0;\n\n /** Whether to show days outside the month */\n @Prop({ reflect: true }) showOutsideDays: boolean = false;\n\n /** Defines the strategy to position the Date picker panel */\n @Prop({ reflect: true }) strategy?: 'fixed' | 'absolute' = 'fixed';\n\n /** The date that is tentatively selected e.g. the start of a range selection */\n @Prop({ reflect: true, mutable: true }) tentative?: string;\n\n /** It defines how the calendar will behave, allowing single date selection, range selection, or multiple date selection */\n @Prop({ reflect: true }) type: TDatePickerType = 'single';\n\n /**\n * The validation status of the Select input.\n *\n * @remarks\n * This property is used to indicate the validation status of the select input. It can be set to one of the following values:\n * - `'none'`: No validation status is set.\n * - `'error'`: The input has a validation error.\n * - `'warning'`: The input has a validation warning.\n * - `'success'`: The input has passed validation.\n */\n @Prop({ reflect: true }) validationStatus: TInputValidation = 'none';\n\n /** The select input value represents the currently selected date or range and can be used to reset the field to a previous value.\n * All dates are expected in ISO-8601 format (YYYY-MM-DD). */\n @Prop({ reflect: true, mutable: true }) value: string;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('value')\n handleValueChange() {\n const { formatDisplayValue, internals, isCallyLoaded, value } = this;\n if (!isCallyLoaded) return;\n\n internals.setFormValue(!isNil(value) ? `${value}` : undefined);\n this.updateFormValidity();\n\n if (Array.isArray(value)) {\n this.hasValue = value.some((val) => val.length > 0);\n return;\n }\n\n this.hasValue = isDefined(value);\n this.displayDate = formatDisplayValue(value);\n\n this.setFocusedDate();\n }\n\n @Watch('type')\n checkPropValues() {\n validatePropValue(DATE_PICKER_TYPE, 'single', this.el, 'type');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler emitted when the input loses focus */\n @Event() bqBlur!: EventEmitter<HTMLBqDatePickerElement>;\n\n /**\n * Callback handler emitted when the input value has changed and the input loses focus.\n * This handler is called whenever the user finishes typing or pasting text into the input field and then clicks outside of the input field.\n */\n @Event() bqChange!: EventEmitter<{ value: string; el: HTMLBqDatePickerElement }>;\n\n /** Callback handler emitted when the input value has been cleared */\n @Event() bqClear!: EventEmitter<HTMLBqDatePickerElement>;\n\n /** Callback handler emitted when the input has received focus */\n @Event() bqFocus!: EventEmitter<HTMLBqDatePickerElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n async connectedCallback() {\n if (!isClient() || this.isCallyLoaded) return;\n\n try {\n await loadCallyLibrary();\n this.isCallyLoaded = isCallyLibraryLoaded();\n } catch (error) {\n console.error(error);\n }\n }\n\n async componentDidLoad() {\n this.handleSlotChange();\n this.handleValueChange();\n }\n\n formAssociatedCallback() {\n this.updateFormValidity();\n }\n\n formResetCallback() {\n if (isNil(this.value)) return;\n\n this.clear();\n }\n\n // Listeners\n // ==============\n\n @Listen('bqOpen', { capture: true })\n handleOpenChange(ev: CustomEvent<{ open: boolean }>) {\n if (!ev.composedPath().includes(this.el)) return;\n\n this.open = ev.detail.open;\n this.setFocusedDate();\n }\n\n @Listen('click', { target: 'body', capture: true })\n handleClickOutside(ev: MouseEvent) {\n const { open, type, hasRangeEnd } = this;\n if (!open || type !== 'range' || ev.button !== 0) return;\n if (isEventTargetChildOfElement(ev, this.el) || hasRangeEnd) return;\n if (isEventTargetChildOfElement(ev, this.el)) return;\n\n if (!hasRangeEnd) {\n this.tentative = undefined;\n this.hasRangeEnd = false;\n }\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 /**\n * Clears the selected value.\n *\n * @return {Promise<void>}\n * @memberof BqInput\n */\n @Method()\n async clear(): Promise<void> {\n if (this.disabled) return;\n\n this.value = undefined;\n this.internals.setFormValue(undefined);\n this.bqClear.emit(this.el);\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 if (this.disabled) return;\n\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n if (this.disabled) return;\n\n this.bqFocus.emit(this.el);\n };\n\n private setFocusedDate = () => {\n const { callyElem, formatFocusedDate, isCallyLoaded, value } = this;\n if (!(callyElem && isCallyLoaded)) return;\n // We need to set the focused date in the calendar component via a ref\n // because it doesn't work when passed as a prop (the Cally element does not re-render)\n this.focusedDate = value ? formatFocusedDate(value) : new Date().toLocaleDateString('fr-CA');\n this.callyElem.focusedDate = this.focusedDate;\n };\n\n private handleChange = (ev: Event) => {\n if (this.disabled) return;\n if (!isHTMLElement(ev.target, 'input')) return;\n\n const dateValue = new Date(ev.target.value);\n if (!isNaN(dateValue.getTime())) {\n // We need to force the value to respect the format: yyyy-mm-dd, hence the hardcoded locale\n this.value = dateValue.toLocaleDateString('fr-CA');\n this.displayDate = this.formatDisplayValue(this.value);\n this.internals.setFormValue(`${this.value}`);\n this.bqChange.emit({ value: this.value, el: this.el });\n }\n };\n\n private handleCalendarChange = (ev: Event) => {\n const { value } = ev.target as unknown as { value: string };\n\n this.value = value;\n this.displayDate = this.formatDisplayValue(this.value);\n this.inputElem.value = this.displayDate;\n this.inputElem.focus();\n\n this.internals.setFormValue(`${this.value}`);\n this.bqChange.emit({ value: this.value, el: this.el });\n\n this.open = this.type === 'multi';\n };\n\n private handleCalendarRangeStart = (ev: CustomEvent) => {\n this.hasRangeEnd = false;\n this.tentative = new Date(ev.detail).toLocaleDateString('fr-CA');\n };\n\n private handleCalendarRangeEnd = () => {\n this.hasRangeEnd = true;\n };\n\n private handleClearClick = (ev: CustomEvent) => {\n if (this.disabled) return;\n\n this.inputElem.value = '';\n this.value = this.inputElem.value;\n this.hasRangeEnd = false;\n\n this.bqClear.emit(this.el);\n this.bqChange.emit({ value: this.value, el: this.el });\n this.internals.setFormValue(undefined);\n this.inputElem.focus();\n\n ev.stopPropagation();\n };\n\n private handleSlotChange = () => {\n this.hasLabel = hasSlotContent(this.labelElem);\n this.hasPrefix = hasSlotContent(this.prefixElem);\n this.hasSuffix = hasSlotContent(this.suffixElem);\n };\n\n private generateCalendarMonth = (offset?: number, className = ''): Element | null => {\n if (!this.isCallyLoaded) return null;\n\n return (\n <calendar-month\n offset={offset}\n class={className}\n exportparts={`${this.COMMON_EXPORT_PARTS},${this.BUTTON_EXPORT_PARTS}`}\n />\n );\n };\n\n /**\n * Generates an array of Elements representing the calendar months.\n *\n * If the type of the date picker is 'range' or 'multi' and the number of months is specified,\n * it generates an array of calendar months with the specified length. Each month will have an offset\n * and a class name based on its position in the array. The offset is used to determine the month to display,\n * and the class name is used for responsive design.\n *\n * If the type of the date picker is not 'range' or 'multi', or if the number of months is not specified,\n * it generates an array with a single calendar month.\n *\n * @returns {Element[]} An array of elements representing the calendar months.\n */\n private generateCalendarMonths = (): Element[] => {\n if (!this.isCallyLoaded) return [];\n\n if (this.type === 'range' || (this.type === 'multi' && this.months)) {\n return Array.from({ length: this.months }, (_, i) => {\n const offset = i > 0 ? i : undefined;\n const className = offset ? 'hidden sm:block' : '';\n return this.generateCalendarMonth(offset, className);\n });\n }\n\n return [this.generateCalendarMonth()];\n };\n\n /**\n * Extracts and returns the first date part from a given string.\n * When the type of the date picker is 'range' or 'multi', the first or initial date part of the value\n * should be the focused date in the calendar.\n *\n * @param value - The value to be processed, can be a string.\n * @returns The extracted last date portion of the value.\n */\n private formatFocusedDate = (value: string): string | null => {\n if (!value) return;\n\n const dateRegex = /\\b\\d{4}-\\d{2}-\\d{2}\\b/;\n const match = dateRegex.exec(value);\n return match ? match[0] : null;\n };\n\n private formatDisplayValue = (value: string): string | undefined => {\n if (!value) return;\n\n const dateFormatter = new Intl.DateTimeFormat(this.locale, this.formatOptions);\n\n if (this.type === 'range') {\n const [start, end] = value.split('/').map((dateStr) => new Date(dateStr));\n return dateFormatter.formatRange(start, end);\n }\n\n if (this.type === 'multi') {\n const dates = value.split(' ').map((dateStr) => new Date(dateStr));\n return dates.map((date) => dateFormatter.format(date)).join(', ');\n }\n\n return dateFormatter.format(new Date(value));\n };\n\n private updateFormValidity = () => {\n const { formValidationMessage, internals, required, value, inputElem } = this;\n\n // Clear the validity state\n internals?.states.clear();\n\n if (required && (!value || value.toString().trim() === '')) {\n // Set validity state to invalid\n internals?.states.add('invalid');\n internals?.setValidity({ valueMissing: true }, formValidationMessage, inputElem);\n return;\n }\n\n // Set validity state to valid if textarea has value or is not required\n internals?.states.add('valid');\n internals?.setValidity({});\n };\n\n private get CalendarType() {\n const componentTypes = {\n single: 'calendar-date',\n multi: 'calendar-multi',\n range: 'calendar-range',\n } as const;\n\n // Return the corresponding component type, based on the type prop value\n return componentTypes[this.type] || componentTypes.single;\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const CallyCalendar = this.CalendarType;\n const labelId = `bq-date-picker__label-${this.name || this.fallbackInputId}`;\n\n return (\n <div class=\"bq-date-picker\" part=\"base\">\n {/* Label */}\n <label\n id={labelId}\n class={{ 'bq-date-picker__label': true, '!hidden': !this.hasLabel }}\n aria-label={this.name || this.fallbackInputId}\n htmlFor={this.name || this.fallbackInputId}\n ref={(labelElem: HTMLSpanElement) => (this.labelElem = labelElem)}\n part=\"label\"\n >\n <slot name=\"label\" onSlotchange={this.handleSlotChange} />\n </label>\n {/* Select date picker dropdown */}\n <bq-dropdown\n class=\"bq-date-picker__dropdown is-full [&::part(panel)]:p-m [&::part(panel)]:is-auto\"\n disabled={this.disabled}\n distance={this.distance}\n open={this.open}\n panelHeight={this.panelHeight}\n placement={this.placement}\n skidding={this.skidding}\n strategy={this.strategy}\n exportparts=\"panel\"\n >\n {/* Input control group */}\n <div\n class={{\n 'bq-date-picker__control': true,\n [`validation-${this.validationStatus}`]: true,\n disabled: this.disabled,\n }}\n part=\"control\"\n slot=\"trigger\"\n >\n {/* Prefix */}\n <span\n class={{ 'bq-date-picker__control--prefix': true, '!hidden': !this.hasPrefix }}\n ref={(spanElem: HTMLSpanElement) => (this.prefixElem = spanElem)}\n part=\"prefix\"\n >\n <slot name=\"prefix\" onSlotchange={this.handleSlotChange} />\n </span>\n {/* HTML Input */}\n <input\n id={this.name || this.fallbackInputId}\n class=\"bq-date-picker__control--input\"\n autoComplete=\"off\"\n autoCapitalize=\"off\"\n aria-disabled={this.disabled ? 'true' : 'false'}\n aria-controls={`${this.name}`}\n aria-haspopup=\"dialog\"\n disabled={this.disabled}\n form={this.form}\n name={this.name}\n placeholder={this.placeholder}\n readonly={this.type !== 'single'}\n ref={(inputElem: HTMLInputElement) => (this.inputElem = inputElem)}\n required={this.required}\n spellcheck={false}\n type=\"text\"\n value={this.displayDate}\n part=\"input\"\n // Events\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onChange={this.handleChange}\n />\n {/* Clear Button */}\n {this.hasValue && !this.disabled && !this.disableClear && (\n // The clear button will be visible as long as the input has a value\n // and the parent group is hovered or has focus-within\n <bq-button\n class=\"bq-date-picker__control--clear ms-[--bq-date-picker--gap] hidden\"\n appearance=\"text\"\n aria-label={this.clearButtonLabel}\n size=\"small\"\n onBqClick={this.handleClearClick}\n part=\"clear-btn\"\n exportparts=\"button\"\n >\n <slot name=\"clear-icon\">\n <bq-icon name=\"x-circle\" class=\"flex\" />\n </slot>\n </bq-button>\n )}\n {/* Suffix */}\n <span\n class=\"bq-date-picker__control--suffix\"\n ref={(spanElem: HTMLSpanElement) => (this.suffixElem = spanElem)}\n part=\"suffix\"\n >\n <slot name=\"suffix\" onSlotchange={this.handleSlotChange}>\n <bq-icon name=\"calendar-blank\" class=\"flex\" />\n </slot>\n </span>\n </div>\n {this.isCallyLoaded && (\n <CallyCalendar\n isDateDisallowed={this.isDateDisallowed}\n locale={this.locale as string}\n value={this.value}\n min={this.min}\n max={this.max}\n months={this.months}\n tentative={this.tentative}\n pageBy={this.monthsPerView}\n firstDayOfWeek={this.firstDayOfWeek}\n showOutsideDays={this.showOutsideDays}\n onChange={this.handleCalendarChange}\n onRangestart={this.handleCalendarRangeStart}\n onRangeend={this.handleCalendarRangeEnd}\n exportparts=\"container:calendar__container,header:calendar__header,button:calendar__button,previous:calendar__previous,next:calendar__next,disabled:calendar__disabled,heading:calendar__heading\"\n ref={(elem: TCalendarDate) => (this.callyElem = elem)}\n >\n <bq-icon color=\"text--primary\" slot=\"previous\" name=\"caret-left\" label=\"Previous\" />\n <bq-icon color=\"text--primary\" slot=\"next\" name=\"caret-right\" label=\"Next\" />\n\n <div class=\"flex flex-wrap justify-center gap-[--bq-spacing-m]\">{this.generateCalendarMonths()}</div>\n </CallyCalendar>\n )}\n </bq-dropdown>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["enter","async","element","transitionName","classList","remove","transition","leave","add","toggle","contains","direction","animation","dataset","animationClass","transitionKey","charAt","toUpperCase","slice","genesisClasses","getDatasetValueOrDefault","startClasses","endClasses","addClasses","nextFrame","removeClasses","afterTransition","key","defaultValue","split","classes","Promise","resolve","requestAnimationFrame","all","getAnimations","map","finished"],"sources":["../../packages/beeq/src/shared/utils/transition.ts"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Credits to MikeMcCall for the original implementation */\n/* Github: https://github.com/mmccall10/el-transition */\n/* -------------------------------------------------------------------------- */\n\ninterface HTMLElementWithAnimations extends HTMLElement {\n getAnimations(): Animation[];\n}\n\n/**\n * Transition an element entry\n *\n * @param element The element to enter\n * @param transitionName The name of the transition\n * @returns A promise that resolves when the transition is complete\n */\nexport const enter = async (element: HTMLElement, transitionName: string | null = null): Promise<void> => {\n element.classList.remove('hidden');\n await transition('enter', element, transitionName);\n};\n\n/**\n * Transition an element exit\n *\n * @param element The element to leave\n * @param transitionName The name of the transition\n * @returns A promise that resolves when the transition is complete\n */\nexport const leave = async (element: HTMLElement, transitionName: string | null = null): Promise<void> => {\n await transition('leave', element, transitionName);\n element.classList.add('hidden');\n};\n\n/**\n * Toggle an element entry/exit\n *\n * @param element The element to toggle\n * @param transitionName The name of the transition\n * @returns A promise that resolves when the transition is complete\n */\nexport const toggle = async (element: HTMLElement, transitionName: string | null = null): Promise<void> => {\n if (element.classList.contains('hidden')) {\n await enter(element, transitionName);\n } else {\n await leave(element, transitionName);\n }\n};\n\n/**\n * Perform a transition on an element\n *\n * @param direction The direction of the transition\n * @param element The element to transition\n * @param animation The animation to use\n * @returns A promise that resolves when the transition is complete\n * @internal\n */\nconst transition = async (direction: string, element: HTMLElement, animation: string | null): Promise<void> => {\n const { dataset } = element;\n const animationClass = animation ? `${animation}-${direction}` : direction;\n const transitionKey = `transition${direction.charAt(0).toUpperCase() + direction.slice(1)}`;\n\n // Get the genesis, start, and end classes\n const genesisClasses = getDatasetValueOrDefault(dataset, transitionKey, animationClass);\n const startClasses = getDatasetValueOrDefault(dataset, `${transitionKey}Start`, `${animationClass}-start`);\n const endClasses = getDatasetValueOrDefault(dataset, `${transitionKey}End`, `${animationClass}-end`);\n\n // Add genesis and start classes, then wait for the next frame\n addClasses(element, genesisClasses);\n addClasses(element, startClasses);\n await nextFrame();\n\n // Replace start classes with end classes, then wait for the transition to finish\n removeClasses(element, startClasses);\n addClasses(element, endClasses);\n await afterTransition(element as HTMLElementWithAnimations);\n\n // Remove end and genesis classes\n removeClasses(element, endClasses);\n removeClasses(element, genesisClasses);\n};\n\n/**\n * Get the value of a dataset key or a default value\n *\n * @param dataset The dataset to get the value from\n * @param key The key to get the value for\n * @param defaultValue The default value to return if the key is not found\n * @returns The value of the dataset key or the default value\n * @internal\n */\nconst getDatasetValueOrDefault = (dataset: DOMStringMap, key: string, defaultValue: string): string[] => {\n return dataset[key] ? dataset[key].split(' ') : [defaultValue];\n};\n\n/**\n * Add classes to an element\n *\n * @param element The element to add the CSS classes to\n * @param classes The classes to add\n * @internal\n */\nconst addClasses = (element: HTMLElement, classes: string[]): void => {\n element.classList.add(...classes);\n};\n\n/**\n * Remove classes from an element\n *\n * @param element The element to remove the CSS classes from\n * @param classes The classes to remove\n * @internal\n */\nconst removeClasses = (element: HTMLElement, classes: string[]): void => {\n element.classList.remove(...classes);\n};\n\n/**\n * Wait for the next frame\n * @returns A promise that resolves when the next frame is available\n * @internal\n */\nconst nextFrame = (): Promise<void> => {\n return new Promise((resolve) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => resolve());\n });\n });\n};\n\n/**\n * Wait for all animations to finish\n * @param element The element to wait for\n * @returns A promise that resolves when all animations are finished\n * @internal\n */\nconst afterTransition = (element: HTMLElementWithAnimations): Promise<Animation[]> => {\n return Promise.all(element.getAnimations().map((animation) => animation.finished));\n};\n"],"mappings":";;;;MAgBaA,EAAQC,MAAOC,EAAsBC,EAAgC,QAChFD,EAAQE,UAAUC,OAAO,gBACnBC,EAAW,QAASJ,EAASC,EAAe,E,MAUvCI,EAAQN,MAAOC,EAAsBC,EAAgC,cAC1EG,EAAW,QAASJ,EAASC,GACnCD,EAAQE,UAAUI,IAAI,SAAS,E,MAUpBC,EAASR,MAAOC,EAAsBC,EAAgC,QACjF,GAAID,EAAQE,UAAUM,SAAS,UAAW,OAClCV,EAAME,EAASC,E,KAChB,OACCI,EAAML,EAASC,E,GAazB,MAAMG,EAAaL,MAAOU,EAAmBT,EAAsBU,KACjE,MAAMC,QAAEA,GAAYX,EACpB,MAAMY,EAAiBF,EAAY,GAAGA,KAAaD,IAAcA,EACjE,MAAMI,EAAgB,aAAaJ,EAAUK,OAAO,GAAGC,cAAgBN,EAAUO,MAAM,KAGvF,MAAMC,EAAiBC,EAAyBP,EAASE,EAAeD,GACxE,MAAMO,EAAeD,EAAyBP,EAAS,GAAGE,SAAsB,GAAGD,WACnF,MAAMQ,EAAaF,EAAyBP,EAAS,GAAGE,OAAoB,GAAGD,SAG/ES,EAAWrB,EAASiB,GACpBI,EAAWrB,EAASmB,SACdG,IAGNC,EAAcvB,EAASmB,GACvBE,EAAWrB,EAASoB,SACdI,EAAgBxB,GAGtBuB,EAAcvB,EAASoB,GACvBG,EAAcvB,EAASiB,EAAe,EAYxC,MAAMC,EAA2B,CAACP,EAAuBc,EAAaC,IAC7Df,EAAQc,GAAOd,EAAQc,GAAKE,MAAM,KAAO,CAACD,GAUnD,MAAML,EAAa,CAACrB,EAAsB4B,KACxC5B,EAAQE,UAAUI,OAAOsB,EAAQ,EAUnC,MAAML,EAAgB,CAACvB,EAAsB4B,KAC3C5B,EAAQE,UAAUC,UAAUyB,EAAQ,EAQtC,MAAMN,EAAY,IACT,IAAIO,SAASC,IAClBC,uBAAsB,KACpBA,uBAAsB,IAAMD,KAAU,GACtC,IAUN,MAAMN,EAAmBxB,GAChB6B,QAAQG,IAAIhC,EAAQiC,gBAAgBC,KAAKxB,GAAcA,EAAUyB,mB","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqRadioCss","BqRadioStyle0","BqRadio","inputElement","checked","disabled","backgroundOnHover","formId","name","required","value","bqClick","bqFocus","bqBlur","bqKeyDown","vClick","this","click","vFocus","focus","vBlur","blur","getNativeInput","handleClick","emit","el","handleOnFocus","handleOnBlur","handleOnKeyDown","event","tabindex","render","h","key","class","part","ref","element","type","form","onBlur","onClick","onFocus","onKeyDown","id"],"sources":["../../packages/beeq/src/components/radio/scss/bq-radio.scss?tag=bq-radio&encapsulation=shadow","../../packages/beeq/src/components/radio/bq-radio.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Radio styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-radio.variables';\n\n:host {\n @apply inline-block;\n}\n\n.bq-radio {\n @apply box-border inline-flex cursor-pointer items-center justify-center gap-2 transition-[background-color] duration-300;\n @apply rounded-s p-b-xs p-i-xs;\n\n &.is-disabled {\n .bq-radio__circle {\n @apply opacity-60;\n }\n\n &.is-checked .bq-radio__circle {\n @apply border-icon-brand;\n }\n\n &.is-checked .bq-radio__checked {\n @apply bg-ui-brand;\n }\n }\n\n &.has-background:not(.is-disabled):hover {\n @apply bg-hover-ui-primary;\n }\n\n &.is-checked:not(.is-disabled) {\n .bq-radio__circle {\n @apply border-icon-brand;\n }\n\n .bq-radio__checked {\n @apply bg-ui-brand;\n }\n }\n\n &:not(.is-disabled):hover .bq-radio__circle {\n @apply border-hover-icon-brand;\n }\n\n &.is-checked:not(.is-disabled):hover {\n .bq-radio__checked,\n .bq-radio__circle {\n @apply border-hover-icon-brand;\n }\n }\n}\n\n.bq-radio__input {\n @apply sr-only;\n\n &:focus-visible {\n ~ .bq-radio__circle {\n @apply focus;\n }\n }\n}\n\n.bq-radio__control {\n @apply box-border flex items-center justify-center rounded-full bs-[--bq-radio--size] is-[--bq-radio--size] p-b-[2px] p-i-[2px];\n}\n\n.bq-radio__circle {\n @apply relative box-border flex items-center justify-center rounded-full border-[length:--bq-radio--border-width] border-solid border-hover-icon-primary bs-full is-full p-b-[3px] p-i-[3px];\n}\n\n.bq-radio__checked {\n @apply rounded-full bs-full is-full;\n}\n\n.bq-radio__label {\n @apply font-medium leading-regular text-primary;\n}\n\n.bq-radio__circle,\n.bq-radio__checked,\n.bq-radio__label {\n @apply transition-[color,background-color,border-color,box-shadow] duration-300;\n}\n","import { Component, Element, Event, EventEmitter, h, Method, Prop } from '@stencil/core';\n\n/**\n * The radio button is a user interface element that allows users to select a single option.\n *\n * @example How to use it\n * ```html\n * <bq-radio value=\"option1\">Radio option 1</bq-radio>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/9718e1-radio-button/b/09d7b1\n * @status stable\n *\n * @attr {boolean} background-on-hover - If `true`, the radio displays background on hover\n * @attr {boolean} checked - If `true` radio input is checked\n * @attr {boolean} disabled - If `true` radio input is disabled\n * @attr {string} form-id - The form ID that the radio input is associated with\n * @attr {string} name - Name of the HTML input form control. Submitted with the form as part of a name/value pair\n * @attr {boolean} required - If `true`, it will indicate that the user must specify a value for the radio before the owning form can be submitted\n * @attr {boolean} value - A string representing the value of the radio\n *\n * @method vClick - Simulate a click event on the native `<input>` HTML element used under the hood\n * @method vFocus - Sets focus on the native `<input>` HTML element used under the hood\n * @method vBlur - Remove focus from the native `<input>` HTML element used under the hood\n * @method getNativeInput - Returns the native `<input>` HTML element used under the hood\n *\n * @event bqBlur - Handler to be called when the radio loses focus\n * @event bqClick - Handler to be called when the radio state changes\n * @event bqFocus - Handler to be called when the radio gets focused\n * @event bqKeyDown - The handler is to be called when the radio key is pressed\n *\n * @slot - The bq-radio item\n *\n * @part base - The component's internal wrapper of the radio component.\n * @part input - The native HTML `<input type=\"radio\">` used under the hood.\n * @part radio - The component's internal wrapper of the radio component.\n * @part label - The `<span>` element that holds the text content.\n *\n * @cssprop --bq-radio--size - Radio size\n * @cssprop --bq-radio--border-width - Radio border width\n */\n@Component({\n tag: 'bq-radio',\n styleUrl: './scss/bq-radio.scss',\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqRadio {\n // Own Properties\n // ====================\n private inputElement: HTMLInputElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqRadioElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** If true radio input is checked */\n @Prop({ reflect: true, mutable: true }) checked?: boolean;\n\n /** If true radio input is disabled */\n @Prop({ reflect: true }) disabled? = false;\n\n /** If true radio displays background on hover */\n @Prop({ reflect: true }) backgroundOnHover? = false;\n\n /** The form ID that the radio input is associated with */\n @Prop({ reflect: true }) formId?: string;\n\n /** Name of the HTML input form control. Submitted with the form as part of a name/value pair. */\n @Prop({ reflect: true }) name!: string;\n\n /** If `true`, it will indicate that the user must specify a value for the radio before the owning form can be submitted */\n @Prop({ reflect: true }) required?: boolean;\n\n /** A string representing the value of the radio. */\n @Prop({ reflect: true }) value!: string;\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 the radio state changes */\n @Event() bqClick: EventEmitter<HTMLBqRadioElement>;\n\n /** Handler to be called when the radio gets focus */\n @Event() bqFocus: EventEmitter<HTMLBqRadioElement>;\n\n /** Handler to be called when the radio loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqRadioElement>;\n\n /** Handler to be called when the radio key is pressed */\n @Event() bqKeyDown: EventEmitter<KeyboardEvent>;\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 /**\n * Simulate a click event on the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.click()`.\n */\n @Method()\n async vClick() {\n this.inputElement?.click();\n }\n\n /**\n * Sets focus on the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.focus()`.\n */\n @Method()\n async vFocus() {\n this.inputElement?.focus();\n }\n\n /**\n * Remove focus from the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.blur()`.\n */\n @Method()\n async vBlur() {\n this.inputElement?.blur();\n }\n\n /**\n * Returns the native `<input>` HTML element used under the hood.\n */\n @Method()\n async getNativeInput() {\n return this.inputElement;\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleClick = () => {\n this.checked = true;\n this.bqClick.emit(this.el);\n };\n\n private handleOnFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private handleOnBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n private handleOnKeyDown = (event: KeyboardEvent) => {\n this.bqKeyDown.emit(event);\n };\n\n private get tabindex(): string {\n // NOTE: this.checked is undefined when is not part of bq-radio-group\n return `${-1 + +(this.checked ?? 1)}`;\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <label\n class={{\n 'bq-radio group': true,\n 'is-disabled !cursor-not-allowed': this.disabled,\n 'is-checked': this.checked,\n 'has-background': this.backgroundOnHover,\n }}\n part=\"base\"\n >\n <div class=\"bq-radio__control\">\n <input\n class=\"bq-radio__input\"\n ref={(element) => (this.inputElement = element)}\n type=\"radio\"\n form={this.formId}\n name={this.name}\n value={this.value}\n required={this.required}\n disabled={this.disabled}\n onBlur={this.handleOnBlur}\n onClick={this.handleClick}\n onFocus={this.handleOnFocus}\n onKeyDown={this.handleOnKeyDown}\n aria-checked={this.checked ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n aria-labelledby=\"bq-radio__label\"\n tabindex={this.tabindex}\n part=\"input\"\n />\n <div class=\"bq-radio__circle\" part=\"radio\">\n <div class=\"bq-radio__checked\" />\n </div>\n </div>\n <span\n class=\"bq-radio__label group-hover:text-text-primary-hover group-[.is-disabled]:text-text-primary-disabled\"\n part=\"label\"\n >\n <slot id=\"bq-radio__label\"></slot>\n </span>\n </label>\n );\n }\n}\n"],"mappings":";;;;oDAAA,MAAMA,EAAa,i8uBACnB,MAAAC,EAAeD,E,MC+CFE,EAAO,M,+JAGVC,a,wBAegCC,QAGfC,SAAY,MAGZC,kBAAqB,MAGrBC,OAGAC,KAGAC,SAGAC,MAUhBC,QAGAC,QAGAC,OAGAC,UAqBT,YAAMC,GACJC,KAAKb,cAAcc,O,CAQrB,YAAMC,GACJF,KAAKb,cAAcgB,O,CAQrB,WAAMC,GACJJ,KAAKb,cAAckB,M,CAOrB,oBAAMC,GACJ,OAAON,KAAKb,Y,CAQNoB,YAAc,KACpBP,KAAKZ,QAAU,KACfY,KAAKL,QAAQa,KAAKR,KAAKS,GAAG,EAGpBC,cAAgB,KACtBV,KAAKJ,QAAQY,KAAKR,KAAKS,GAAG,EAGpBE,aAAe,KACrBX,KAAKH,OAAOW,KAAKR,KAAKS,GAAG,EAGnBG,gBAAmBC,IACzBb,KAAKF,UAAUU,KAAKK,EAAM,EAG5B,YAAYC,GAEV,MAAO,IAAI,KAAMd,KAAKZ,SAAW,I,CAOnC,MAAA2B,GACE,OACEC,EAAA,SAAAC,IAAA,2CACEC,MAAO,CACL,iBAAkB,KAClB,kCAAmClB,KAAKX,SACxC,aAAcW,KAAKZ,QACnB,iBAAkBY,KAAKV,mBAEzB6B,KAAK,QAELH,EAAA,OAAAC,IAAA,2CAAKC,MAAM,qBACTF,EAAA,SAAAC,IAAA,2CACEC,MAAM,kBACNE,IAAMC,GAAarB,KAAKb,aAAekC,EACvCC,KAAK,QACLC,KAAMvB,KAAKT,OACXC,KAAMQ,KAAKR,KACXE,MAAOM,KAAKN,MACZD,SAAUO,KAAKP,SACfJ,SAAUW,KAAKX,SACfmC,OAAQxB,KAAKW,aACbc,QAASzB,KAAKO,YACdmB,QAAS1B,KAAKU,cACdiB,UAAW3B,KAAKY,gBAAe,eACjBZ,KAAKZ,QAAU,OAAS,QAAO,gBAC9BY,KAAKX,SAAW,OAAS,QAAO,kBAC/B,kBAChByB,SAAUd,KAAKc,SACfK,KAAK,UAEPH,EAAA,OAAAC,IAAA,2CAAKC,MAAM,mBAAmBC,KAAK,SACjCH,EAAA,OAAAC,IAAA,2CAAKC,MAAM,wBAGfF,EAAA,QAAAC,IAAA,2CACEC,MAAM,sGACNC,KAAK,SAELH,EAAA,QAAAC,IAAA,2CAAMW,GAAG,qB","ignoreList":[]}