@beeq/core 1.8.0-beta.0 → 1.8.0-beta.1

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 (289) hide show
  1. package/dist/beeq/beeq.esm.js +43 -1
  2. package/dist/beeq/beeq.esm.js.map +1 -1
  3. package/dist/beeq/index.esm.js +64 -1
  4. package/dist/beeq/index.esm.js.map +1 -1
  5. package/dist/beeq/p-063a3968.entry.js +388 -0
  6. package/dist/beeq/{p-9acfedb8.entry.js.map → p-063a3968.entry.js.map} +1 -1
  7. package/dist/beeq/p-0979fdfd.entry.js +297 -0
  8. package/dist/beeq/{p-7f23cde7.entry.js.map → p-0979fdfd.entry.js.map} +1 -1
  9. package/dist/beeq/p-0ab0b58d.js +25 -1
  10. package/dist/beeq/p-0ab0b58d.js.map +1 -1
  11. package/dist/beeq/p-0c42c08a.js +1811 -0
  12. package/dist/beeq/p-0c42c08a.js.map +1 -0
  13. package/dist/beeq/p-0f48adcc.entry.js +117 -0
  14. package/dist/beeq/{p-9f40249f.entry.js.map → p-0f48adcc.entry.js.map} +1 -1
  15. package/dist/beeq/p-115ed5b2.js +25 -1
  16. package/dist/beeq/p-115ed5b2.js.map +1 -1
  17. package/dist/beeq/p-14b44a4b.entry.js +205 -0
  18. package/dist/beeq/{p-8059836c.entry.js.map → p-14b44a4b.entry.js.map} +1 -1
  19. package/dist/beeq/p-1715ac80.entry.js +274 -0
  20. package/dist/beeq/{p-eab59153.entry.js.map → p-1715ac80.entry.js.map} +1 -1
  21. package/dist/beeq/p-1c8b6eb4.js +12 -1
  22. package/dist/beeq/p-1c8b6eb4.js.map +1 -1
  23. package/dist/beeq/p-1f3a4359.js +11 -1
  24. package/dist/beeq/p-1f3a4359.js.map +1 -1
  25. package/dist/beeq/p-242ac28a.entry.js +145 -0
  26. package/dist/beeq/{p-90c5851d.entry.js.map → p-242ac28a.entry.js.map} +1 -1
  27. package/dist/beeq/p-297fb76b.entry.js +220 -0
  28. package/dist/beeq/{p-79b7547b.entry.js.map → p-297fb76b.entry.js.map} +1 -1
  29. package/dist/beeq/p-2bb65f53.entry.js +204 -0
  30. package/dist/beeq/{p-a8cb8989.entry.js.map → p-2bb65f53.entry.js.map} +1 -1
  31. package/dist/beeq/p-2e66fc4f.entry.js +434 -0
  32. package/dist/beeq/{p-ddb23180.entry.js.map → p-2e66fc4f.entry.js.map} +1 -1
  33. package/dist/beeq/p-36652891.entry.js +102 -0
  34. package/dist/beeq/{p-633319f3.entry.js.map → p-36652891.entry.js.map} +1 -1
  35. package/dist/beeq/p-38d4bd8a.js +1934 -1
  36. package/dist/beeq/p-38d4bd8a.js.map +1 -1
  37. package/dist/beeq/p-39b7c578.entry.js +84 -0
  38. package/dist/beeq/{p-94d62f1b.entry.js.map → p-39b7c578.entry.js.map} +1 -1
  39. package/dist/beeq/p-39d77ba6.entry.js +90 -0
  40. package/dist/beeq/{p-be664fb0.entry.js.map → p-39d77ba6.entry.js.map} +1 -1
  41. package/dist/beeq/p-3fd0d92d.js +1228 -1
  42. package/dist/beeq/p-3fd0d92d.js.map +1 -1
  43. package/dist/beeq/p-4688e046.js +16 -0
  44. package/dist/beeq/{p-aee056e5.js.map → p-4688e046.js.map} +1 -1
  45. package/dist/beeq/p-49249dda.entry.js +156 -0
  46. package/dist/beeq/{p-235328ee.entry.js.map → p-49249dda.entry.js.map} +1 -1
  47. package/dist/beeq/p-548b45b7.entry.js +104 -0
  48. package/dist/beeq/{p-ae8ffb81.entry.js.map → p-548b45b7.entry.js.map} +1 -1
  49. package/dist/beeq/p-57621be1.js +9 -1
  50. package/dist/beeq/p-57621be1.js.map +1 -1
  51. package/dist/beeq/p-57a55ac5.entry.js +261 -0
  52. package/dist/beeq/{p-52577f3a.entry.js.map → p-57a55ac5.entry.js.map} +1 -1
  53. package/dist/beeq/p-5e11b866.entry.js +102 -0
  54. package/dist/beeq/{p-b7281046.entry.js.map → p-5e11b866.entry.js.map} +1 -1
  55. package/dist/beeq/p-687da041.js +20 -1
  56. package/dist/beeq/p-687da041.js.map +1 -1
  57. package/dist/beeq/p-6a4e104b.entry.js +263 -0
  58. package/dist/beeq/{p-3aa41d80.entry.js.map → p-6a4e104b.entry.js.map} +1 -1
  59. package/dist/beeq/p-6a5a79a3.entry.js +184 -0
  60. package/dist/beeq/{p-606c080c.entry.js.map → p-6a5a79a3.entry.js.map} +1 -1
  61. package/dist/beeq/p-7f301da8.entry.js +508 -0
  62. package/dist/beeq/p-7f301da8.entry.js.map +1 -0
  63. package/dist/beeq/p-81f1c3ba.entry.js +121 -0
  64. package/dist/beeq/{p-c9c942e6.entry.js.map → p-81f1c3ba.entry.js.map} +1 -1
  65. package/dist/beeq/p-822773ae.entry.js +195 -0
  66. package/dist/beeq/{p-a7b0fd0b.entry.js.map → p-822773ae.entry.js.map} +1 -1
  67. package/dist/beeq/p-951ba558.js +64 -1
  68. package/dist/beeq/p-951ba558.js.map +1 -1
  69. package/dist/beeq/p-99829fc7.js +8 -1
  70. package/dist/beeq/p-99829fc7.js.map +1 -1
  71. package/dist/beeq/p-9990889d.entry.js +222 -0
  72. package/dist/beeq/{p-9cd26e8d.entry.js.map → p-9990889d.entry.js.map} +1 -1
  73. package/dist/beeq/p-a1b43de6.entry.js +248 -0
  74. package/dist/beeq/{p-4ba2bec7.entry.js.map → p-a1b43de6.entry.js.map} +1 -1
  75. package/dist/beeq/p-a5dc1c94.js +118 -1
  76. package/dist/beeq/p-a5dc1c94.js.map +1 -1
  77. package/dist/beeq/p-a6489187.entry.js +103 -0
  78. package/dist/beeq/{p-b90c6de9.entry.js.map → p-a6489187.entry.js.map} +1 -1
  79. package/dist/beeq/p-a8cad5ab.js +5 -1
  80. package/dist/beeq/p-a8cad5ab.js.map +1 -1
  81. package/dist/beeq/p-ac969486.entry.js +330 -0
  82. package/dist/beeq/{p-4739f5c3.entry.js.map → p-ac969486.entry.js.map} +1 -1
  83. package/dist/beeq/p-af062402.js +7 -1
  84. package/dist/beeq/p-af062402.js.map +1 -1
  85. package/dist/beeq/p-afc9fd80.entry.js +144 -0
  86. package/dist/beeq/{p-6e026fad.entry.js.map → p-afc9fd80.entry.js.map} +1 -1
  87. package/dist/beeq/p-bef53750.js +79 -0
  88. package/dist/beeq/p-bef53750.js.map +1 -0
  89. package/dist/beeq/p-bf2320dd.entry.js +329 -0
  90. package/dist/beeq/{p-e6382462.entry.js.map → p-bf2320dd.entry.js.map} +1 -1
  91. package/dist/beeq/p-c34e292e.entry.js +127 -0
  92. package/dist/beeq/{p-268dc1e3.entry.js.map → p-c34e292e.entry.js.map} +1 -1
  93. package/dist/beeq/p-d7a88b16.js +87 -1
  94. package/dist/beeq/p-d7a88b16.js.map +1 -1
  95. package/dist/beeq/p-db18eba1.entry.js +173 -0
  96. package/dist/beeq/{p-eddb77c7.entry.js.map → p-db18eba1.entry.js.map} +1 -1
  97. package/dist/beeq/p-dd950c12.entry.js +309 -0
  98. package/dist/beeq/{p-63ad9702.entry.js.map → p-dd950c12.entry.js.map} +1 -1
  99. package/dist/beeq/p-e301647a.entry.js +87 -0
  100. package/dist/beeq/{p-3b2ce34b.entry.js.map → p-e301647a.entry.js.map} +1 -1
  101. package/dist/beeq/p-e3aa2886.entry.js +203 -0
  102. package/dist/beeq/{p-a006be9e.entry.js.map → p-e3aa2886.entry.js.map} +1 -1
  103. package/dist/beeq/p-e41f07ae.entry.js +173 -0
  104. package/dist/beeq/{p-9c6c6646.entry.js.map → p-e41f07ae.entry.js.map} +1 -1
  105. package/dist/beeq/p-e88257a8.entry.js +259 -0
  106. package/dist/beeq/{p-d2bbae3b.entry.js.map → p-e88257a8.entry.js.map} +1 -1
  107. package/dist/beeq/p-e9a54b49.entry.js +145 -0
  108. package/dist/beeq/{p-96d7f361.entry.js.map → p-e9a54b49.entry.js.map} +1 -1
  109. package/dist/beeq/p-ecd27cf2.js +11 -1
  110. package/dist/beeq/p-ecd27cf2.js.map +1 -1
  111. package/dist/beeq/p-f77d9b8b.entry.js +144 -0
  112. package/dist/beeq/{p-41bac721.entry.js.map → p-f77d9b8b.entry.js.map} +1 -1
  113. package/dist/beeq/p-fd658de1.entry.js +135 -0
  114. package/dist/beeq/{p-255fcbe4.entry.js.map → p-fd658de1.entry.js.map} +1 -1
  115. package/dist/beeq/p-ffb48c40.entry.js +258 -0
  116. package/dist/beeq/{p-b9544567.entry.js.map → p-ffb48c40.entry.js.map} +1 -1
  117. package/dist/beeq/p-ffddc425.entry.js +149 -0
  118. package/dist/beeq/{p-571b40ff.entry.js.map → p-ffddc425.entry.js.map} +1 -1
  119. package/dist/cjs/app-globals-b11284b9.js.map +1 -1
  120. package/dist/cjs/assetsPath-3938a05d.js +78 -0
  121. package/dist/cjs/assetsPath-3938a05d.js.map +1 -0
  122. package/dist/cjs/beeq.cjs.js +1 -1
  123. package/dist/cjs/bq-accordion-group.cjs.entry.js +2 -2
  124. package/dist/cjs/bq-accordion.cjs.entry.js +2 -2
  125. package/dist/cjs/bq-alert.cjs.entry.js +2 -2
  126. package/dist/cjs/bq-avatar.cjs.entry.js +2 -2
  127. package/dist/cjs/bq-badge.cjs.entry.js +2 -2
  128. package/dist/cjs/bq-breadcrumb-item.cjs.entry.js +3 -3
  129. package/dist/cjs/bq-breadcrumb.cjs.entry.js +2 -2
  130. package/dist/cjs/bq-button_2.cjs.entry.js +3 -3
  131. package/dist/cjs/bq-card.cjs.entry.js +2 -2
  132. package/dist/cjs/bq-checkbox.cjs.entry.js +2 -2
  133. package/dist/cjs/bq-date-picker.cjs.entry.js +3 -3
  134. package/dist/cjs/bq-dialog.cjs.entry.js +2 -2
  135. package/dist/cjs/bq-divider.cjs.entry.js +2 -2
  136. package/dist/cjs/bq-drawer.cjs.entry.js +3 -3
  137. package/dist/cjs/bq-dropdown_2.cjs.entry.js +1 -1
  138. package/dist/cjs/bq-empty-state.cjs.entry.js +2 -2
  139. package/dist/cjs/bq-input.cjs.entry.js +3 -3
  140. package/dist/cjs/bq-notification.cjs.entry.js +2 -2
  141. package/dist/cjs/bq-option-group.cjs.entry.js +1 -1
  142. package/dist/cjs/bq-option-list_2.cjs.entry.js +2 -2
  143. package/dist/cjs/bq-option.cjs.entry.js +2 -2
  144. package/dist/cjs/bq-page-title.cjs.entry.js +2 -2
  145. package/dist/cjs/bq-progress.cjs.entry.js +2 -2
  146. package/dist/cjs/bq-radio-group.cjs.entry.js +2 -2
  147. package/dist/cjs/bq-radio.cjs.entry.js +1 -1
  148. package/dist/cjs/bq-select.cjs.entry.js +12 -12
  149. package/dist/cjs/bq-select.cjs.entry.js.map +1 -1
  150. package/dist/cjs/bq-side-menu-item.cjs.entry.js +2 -2
  151. package/dist/cjs/bq-side-menu.cjs.entry.js +2 -2
  152. package/dist/cjs/bq-slider.cjs.entry.js +2 -2
  153. package/dist/cjs/bq-spinner.cjs.entry.js +2 -2
  154. package/dist/cjs/bq-status.cjs.entry.js +2 -2
  155. package/dist/cjs/bq-step-item.cjs.entry.js +2 -2
  156. package/dist/cjs/bq-steps.cjs.entry.js +2 -2
  157. package/dist/cjs/bq-switch.cjs.entry.js +2 -2
  158. package/dist/cjs/bq-tab-group.cjs.entry.js +2 -2
  159. package/dist/cjs/bq-tab.cjs.entry.js +2 -2
  160. package/dist/cjs/bq-textarea.cjs.entry.js +2 -2
  161. package/dist/cjs/bq-toast.cjs.entry.js +2 -2
  162. package/dist/cjs/bq-tooltip.cjs.entry.js +1 -1
  163. package/dist/cjs/{index-e6d59dbb.js → index-1d3aac65.js} +20 -2
  164. package/dist/cjs/index-1d3aac65.js.map +1 -0
  165. package/dist/cjs/index.cjs.js +2 -2
  166. package/dist/cjs/{isDefined-4f4a320b.js → isDefined-750bffc4.js} +2 -2
  167. package/dist/cjs/{isDefined-4f4a320b.js.map → isDefined-750bffc4.js.map} +1 -1
  168. package/dist/cjs/loader.cjs.js +1 -1
  169. package/dist/collection/components/drawer/scss/bq-drawer.css +1 -1
  170. package/dist/collection/components/select/bq-select.js +10 -10
  171. package/dist/collection/components/select/bq-select.js.map +1 -1
  172. package/dist/collection/components/select/scss/bq-select.css +1 -1
  173. package/dist/collection/shared/utils/assetsPath.js +52 -26
  174. package/dist/collection/shared/utils/assetsPath.js.map +1 -1
  175. package/dist/components/assetsPath.js +52 -26
  176. package/dist/components/assetsPath.js.map +1 -1
  177. package/dist/components/bq-drawer.js +1 -1
  178. package/dist/components/bq-select.js +10 -10
  179. package/dist/components/bq-select.js.map +1 -1
  180. package/dist/esm/app-globals-de5a646b.js.map +1 -1
  181. package/dist/esm/assetsPath-a1b58980.js +75 -0
  182. package/dist/esm/assetsPath-a1b58980.js.map +1 -0
  183. package/dist/esm/beeq.js +2 -2
  184. package/dist/esm/bq-accordion-group.entry.js +2 -2
  185. package/dist/esm/bq-accordion.entry.js +2 -2
  186. package/dist/esm/bq-alert.entry.js +2 -2
  187. package/dist/esm/bq-avatar.entry.js +2 -2
  188. package/dist/esm/bq-badge.entry.js +2 -2
  189. package/dist/esm/bq-breadcrumb-item.entry.js +3 -3
  190. package/dist/esm/bq-breadcrumb.entry.js +2 -2
  191. package/dist/esm/bq-button_2.entry.js +3 -3
  192. package/dist/esm/bq-card.entry.js +2 -2
  193. package/dist/esm/bq-checkbox.entry.js +2 -2
  194. package/dist/esm/bq-date-picker.entry.js +3 -3
  195. package/dist/esm/bq-dialog.entry.js +2 -2
  196. package/dist/esm/bq-divider.entry.js +2 -2
  197. package/dist/esm/bq-drawer.entry.js +3 -3
  198. package/dist/esm/bq-dropdown_2.entry.js +1 -1
  199. package/dist/esm/bq-empty-state.entry.js +2 -2
  200. package/dist/esm/bq-input.entry.js +3 -3
  201. package/dist/esm/bq-notification.entry.js +2 -2
  202. package/dist/esm/bq-option-group.entry.js +1 -1
  203. package/dist/esm/bq-option-list_2.entry.js +2 -2
  204. package/dist/esm/bq-option.entry.js +2 -2
  205. package/dist/esm/bq-page-title.entry.js +2 -2
  206. package/dist/esm/bq-progress.entry.js +2 -2
  207. package/dist/esm/bq-radio-group.entry.js +2 -2
  208. package/dist/esm/bq-radio.entry.js +1 -1
  209. package/dist/esm/bq-select.entry.js +13 -13
  210. package/dist/esm/bq-select.entry.js.map +1 -1
  211. package/dist/esm/bq-side-menu-item.entry.js +2 -2
  212. package/dist/esm/bq-side-menu.entry.js +2 -2
  213. package/dist/esm/bq-slider.entry.js +2 -2
  214. package/dist/esm/bq-spinner.entry.js +2 -2
  215. package/dist/esm/bq-status.entry.js +2 -2
  216. package/dist/esm/bq-step-item.entry.js +2 -2
  217. package/dist/esm/bq-steps.entry.js +2 -2
  218. package/dist/esm/bq-switch.entry.js +2 -2
  219. package/dist/esm/bq-tab-group.entry.js +2 -2
  220. package/dist/esm/bq-tab.entry.js +2 -2
  221. package/dist/esm/bq-textarea.entry.js +2 -2
  222. package/dist/esm/bq-toast.entry.js +2 -2
  223. package/dist/esm/bq-tooltip.entry.js +1 -1
  224. package/dist/esm/{index-efc1c2ef.js → index-f69556fe.js} +20 -2
  225. package/dist/esm/index-f69556fe.js.map +1 -0
  226. package/dist/esm/index.js +3 -3
  227. package/dist/esm/{isDefined-91ae4cd3.js → isDefined-170f3095.js} +2 -2
  228. package/dist/esm/{isDefined-91ae4cd3.js.map → isDefined-170f3095.js.map} +1 -1
  229. package/dist/esm/loader.js +2 -2
  230. package/dist/hydrate/index.js +62 -36
  231. package/dist/hydrate/index.mjs +62 -36
  232. package/dist/stencil.config.js +4 -1
  233. package/dist/stencil.config.js.map +1 -1
  234. package/dist/types/home/workflows/workspace/packages/beeq/.stencil/packages/beeq/stencil.config.d.ts +2 -0
  235. package/dist/types/shared/utils/assetsPath.d.ts +18 -11
  236. package/package.json +1 -1
  237. package/dist/beeq/p-235328ee.entry.js +0 -6
  238. package/dist/beeq/p-255fcbe4.entry.js +0 -6
  239. package/dist/beeq/p-268dc1e3.entry.js +0 -6
  240. package/dist/beeq/p-3aa41d80.entry.js +0 -6
  241. package/dist/beeq/p-3b2ce34b.entry.js +0 -6
  242. package/dist/beeq/p-41bac721.entry.js +0 -6
  243. package/dist/beeq/p-4739f5c3.entry.js +0 -6
  244. package/dist/beeq/p-4ba2bec7.entry.js +0 -6
  245. package/dist/beeq/p-52577f3a.entry.js +0 -6
  246. package/dist/beeq/p-571b40ff.entry.js +0 -6
  247. package/dist/beeq/p-606c080c.entry.js +0 -6
  248. package/dist/beeq/p-633319f3.entry.js +0 -6
  249. package/dist/beeq/p-63ad9702.entry.js +0 -6
  250. package/dist/beeq/p-6e026fad.entry.js +0 -6
  251. package/dist/beeq/p-6edc8a33.js +0 -6
  252. package/dist/beeq/p-6edc8a33.js.map +0 -1
  253. package/dist/beeq/p-76e714c6.js +0 -7
  254. package/dist/beeq/p-76e714c6.js.map +0 -1
  255. package/dist/beeq/p-79b7547b.entry.js +0 -6
  256. package/dist/beeq/p-7f23cde7.entry.js +0 -6
  257. package/dist/beeq/p-8059836c.entry.js +0 -6
  258. package/dist/beeq/p-8b7c7049.entry.js +0 -6
  259. package/dist/beeq/p-8b7c7049.entry.js.map +0 -1
  260. package/dist/beeq/p-90c5851d.entry.js +0 -6
  261. package/dist/beeq/p-94d62f1b.entry.js +0 -6
  262. package/dist/beeq/p-96d7f361.entry.js +0 -6
  263. package/dist/beeq/p-9acfedb8.entry.js +0 -6
  264. package/dist/beeq/p-9c6c6646.entry.js +0 -6
  265. package/dist/beeq/p-9cd26e8d.entry.js +0 -6
  266. package/dist/beeq/p-9f40249f.entry.js +0 -6
  267. package/dist/beeq/p-a006be9e.entry.js +0 -6
  268. package/dist/beeq/p-a7b0fd0b.entry.js +0 -6
  269. package/dist/beeq/p-a8cb8989.entry.js +0 -6
  270. package/dist/beeq/p-ae8ffb81.entry.js +0 -6
  271. package/dist/beeq/p-aee056e5.js +0 -6
  272. package/dist/beeq/p-b7281046.entry.js +0 -6
  273. package/dist/beeq/p-b90c6de9.entry.js +0 -6
  274. package/dist/beeq/p-b9544567.entry.js +0 -6
  275. package/dist/beeq/p-be664fb0.entry.js +0 -6
  276. package/dist/beeq/p-c9c942e6.entry.js +0 -6
  277. package/dist/beeq/p-d2bbae3b.entry.js +0 -6
  278. package/dist/beeq/p-ddb23180.entry.js +0 -6
  279. package/dist/beeq/p-e6382462.entry.js +0 -6
  280. package/dist/beeq/p-eab59153.entry.js +0 -6
  281. package/dist/beeq/p-eddb77c7.entry.js +0 -6
  282. package/dist/cjs/assetsPath-eac0a3bf.js +0 -52
  283. package/dist/cjs/assetsPath-eac0a3bf.js.map +0 -1
  284. package/dist/cjs/index-e6d59dbb.js.map +0 -1
  285. package/dist/esm/assetsPath-ae18c25e.js +0 -49
  286. package/dist/esm/assetsPath-ae18c25e.js.map +0 -1
  287. package/dist/esm/index-efc1c2ef.js.map +0 -1
  288. package/dist/types/Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System/packages/beeq/.stencil/packages/beeq/stencil.config.d.ts +0 -2
  289. /package/dist/types/{Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System → home/workflows/workspace}/packages/beeq/.stencil/tailwind.config.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["BUTTON_SIZE","BUTTON_TYPE","BUTTON_APPEARANCE","BUTTON_VARIANT","bqButtonCss","BqButtonStyle0","BqButton","this","handleBlur","bqBlur","emit","el","handleFocus","bqFocus","handleClick","ev","disabled","loading","preventDefault","stopPropagation","type","wrapperForm","closest","isNil","btn","document","createElement","hidden","append","click","remove","bqClick","handleSlotChange","hasPrefix","hasSlotContent","prefixElem","hasSuffix","suffixElem","checkPropValues","validatePropValue","componentWillLoad","render","isLink","isDefined","href","TagElem","style","border","h","Host","key","class","appearance","justifyContent","variant","size","block","download","undefined","part","rel","target","tabIndex","onBlur","onFocus","onClick","ref","spanElem","name","onSlotchange","role","title","requests","Map","fetchSvg","async","url","sanitize","fetch","has","get","response","ok","iconContent","set","svgContent","text","validateContent","error","console","getSvgContent","req","svgTag","iconCssClass","div","innerHTML","i","childNodes","length","nodeName","toLowerCase","removeChild","svgElm","firstElementChild","othersCssClasses","getAttribute","setAttribute","trim","removeAttribute","isValid","elm","nodeType","Node","ELEMENT_NODE","attribute","Array","from","attributes","value","isString","startsWith","childNode","children","bqIconCss","BqIconStyle0","BqIcon","getIconSource","src","SVG_EXTENSION","iconFileName","getBasePath","loadIcon","then","_svgContent","svgLoaded","handlePropsChange","handleWeightChange","includes","weight","warn","REGULAR","isWeightedIcon","weightSuffix","iconName","connectedCallback","styles","color","getColorCSSVariable","_a","label"],"sources":["../../packages/beeq/src/components/button/bq-button.types.ts","../../packages/beeq/src/components/button/scss/bq-button.scss?tag=bq-button&encapsulation=shadow","../../packages/beeq/src/components/button/bq-button.tsx","../../packages/beeq/src/components/icon/helper/request.ts","../../packages/beeq/src/components/icon/scss/bq-icon.scss?tag=bq-icon&encapsulation=shadow","../../packages/beeq/src/components/icon/bq-icon.tsx"],"sourcesContent":["export const BUTTON_SIZE = ['small', 'medium', 'large'] as const;\nexport type TButtonSize = (typeof BUTTON_SIZE)[number];\n\nexport const BUTTON_TYPE = ['button', 'submit', 'reset'] as const;\nexport type TButtonType = (typeof BUTTON_TYPE)[number];\n\nexport const BUTTON_APPEARANCE = ['primary', 'secondary', 'link', 'text'] as const;\nexport type TButtonAppearance = (typeof BUTTON_APPEARANCE)[number];\n\nexport const BUTTON_VARIANT = ['standard', 'ghost', 'danger'] as const;\nexport type TButtonVariant = (typeof BUTTON_VARIANT)[number];\n\nexport const BUTTON_BORDER_RADIUS = ['none', 'xs2', 'xs', 's', 'm', 'l', 'full'] as const;\nexport type TButtonBorderRadius = (typeof BUTTON_BORDER_RADIUS)[number];\n","/* -------------------------------------------------------------------------- */\n/* Button styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-button.variables';\n\n@layer components {\n // Common button base style\n .bq-button {\n @apply box-border flex cursor-[inherit] items-center justify-center font-medium leading-regular;\n @apply rounded-[--bq-button--border-radius] border-[length:--bq-button--border-width] border-[color:--bq-button--border-color];\n @apply transition-[background-color,border-color,color] duration-300 ease-in-out;\n // `DISABLED` state\n @apply disabled:cursor-not-allowed disabled:opacity-60;\n // `FOCUS` state\n @apply focus-visible:focus;\n }\n}\n\n:host {\n @apply relative inline-block cursor-pointer is-auto;\n}\n\n:host([block]),\n.block {\n @apply is-full;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Appearance */\n/* -------------------------------------------------------------------------- */\n\n.bq-button--primary {\n @apply bg-ui-brand text-text-alt;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-brand;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-brand active:enabled:hover:bg-active-ui-brand;\n}\n\n.bq-button--primary.ghost {\n @apply border-m border-solid border-stroke-brand bg-transparent text-text-brand;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-primary active:enabled:hover:bg-active-ui-primary;\n}\n\n.bq-button--primary.danger {\n @apply bg-ui-danger text-text-alt;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-danger;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-danger active:enabled:hover:bg-active-ui-danger;\n}\n\n.bq-button--secondary {\n @apply bg-ui-secondary text-text-primary;\n // Secondary `HOVER` state\n @apply hover:enabled:bg-hover-ui-secondary;\n // Secondary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n.bq-button--secondary.ghost {\n @apply border-m border-solid border-stroke-tertiary bg-transparent text-text-primary;\n // Secondary `HOVER` state\n @apply hover:enabled:bg-hover-ui-secondary;\n // Secondary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n.bq-button--link {\n @apply bg-transparent text-text-brand no-underline;\n // Primary `HOVER` state\n @apply [&:not(.disabled)]:hover:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply [&:not(.disabled)]:active:bg-active-ui-secondary [&:not(.disabled)]:active:hover:bg-active-ui-secondary;\n // HTML `<a>` elements does not have a `disabled` state so we need to handle it manually\n &.disabled {\n @apply cursor-not-allowed opacity-60;\n }\n}\n\n.bq-button--text {\n @apply bg-transparent text-text-primary;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Size */\n/* -------------------------------------------------------------------------- */\n\n.small {\n @apply text-[length:--bq-button--small-font-size] bs-[--bq-button--small-height] p-b-[--bq-button--small-paddingY] p-i-[--bq-button--small-paddingX];\n}\n\n.medium {\n @apply text-[length:--bq-button--medium-font-size] bs-[--bq-button--medium-height] p-b-[--bq-button--medium-paddingY] p-i-[--bq-button--medium-paddingX];\n}\n\n.large {\n @apply text-[length:--bq-button--large-font-size] bs-[--bq-button--large-height] p-b-[--bq-button--large-paddingY] p-i-[--bq-button--large-paddingX];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Label */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__label ::slotted(bq-icon) {\n @apply flex;\n}\n\n.content-left {\n @apply justify-start;\n}\n\n.content-right {\n @apply justify-end;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Prefix and Suffix slots */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__prefix,\n.bq-button__suffix {\n @apply pointer-events-none flex shrink-0 grow-0 basis-auto items-center;\n}\n\n.bq-button.has-prefix .bq-button__label {\n @apply ps-xs2;\n}\n\n.bq-button.has-suffix .bq-button__label {\n @apply pe-xs2;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Loading */\n/* -------------------------------------------------------------------------- */\n\n.bq-button.loading {\n @apply relative cursor-wait;\n}\n\n.bq-button.loading .bq-button__prefix,\n.bq-button.loading .bq-button__label,\n.bq-button.loading .bq-button__suffix {\n @apply invisible;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Spinner icon */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__loader {\n @include animation-spin;\n @apply absolute;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport {\n BUTTON_APPEARANCE,\n BUTTON_SIZE,\n BUTTON_TYPE,\n BUTTON_VARIANT,\n TButtonAppearance,\n TButtonBorderRadius,\n TButtonSize,\n TButtonType,\n TButtonVariant,\n} from './bq-button.types';\nimport { hasSlotContent, isDefined, isNil, validatePropValue } from '../../shared/utils';\n\n/**\n * Buttons are designed for users to take action on a page or a screen.\n *\n * @part button - The `<a>` or `<button>` HTML element used under the hood.\n * @part prefix - The `<span>` tag element that acts as prefix container.\n * @part label - The `<span>` tag element that renders the text of the button.\n * @part suffix - The `<span>` tag element that acts as suffix container.\n */\n@Component({\n tag: 'bq-button',\n styleUrl: './scss/bq-button.scss',\n shadow: true,\n})\nexport class BqButton {\n // Own Properties\n // ====================\n\n private prefixElem: HTMLElement;\n private suffixElem: HTMLElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqButtonElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasPrefix = false;\n @State() private hasSuffix = false;\n\n // Public Property API\n // ========================\n\n /** The appearance style to apply to the button */\n @Prop({ reflect: true }) appearance: TButtonAppearance = 'primary';\n\n /** If `true`, it will make the button fit to its parent width. */\n @Prop({ reflect: true }) block: boolean = false;\n\n /** The corner radius of the button */\n @Prop({ reflect: true }) border: TButtonBorderRadius = 'm';\n\n /** If true, the button will be disabled (no interaction allowed) */\n @Prop() disabled = false;\n\n /**\n * Tells the browser to treat the linked URL as a download. Only used when `href` is set.\n * Details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download\n */\n @Prop() download?: string;\n\n /** When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>` */\n @Prop({ reflect: true }) href: string;\n\n /** It determinate how the content should be aligned */\n @Prop({ reflect: true }) justifyContent: 'left' | 'center' | 'right' = 'center';\n\n /** If `true` it will display the button in a loading state */\n @Prop() loading = false;\n\n /** The size of the button */\n @Prop({ reflect: true }) size: TButtonSize = 'medium';\n\n /**\n * Where to display the linked URL, as the name for a browsing context (a `tab`, `window`, or `<iframe>`)\n * Details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target\n */\n @Prop({ reflect: true }) target: '_blank' | '_parent' | '_self' | '_top';\n\n /** The default behavior of the button */\n @Prop({ reflect: true }) type: TButtonType = 'button';\n\n /** The variant of button to apply on top of the appearance (applicable only to `appearance=\"primary\"`) */\n @Prop({ reflect: true }) variant: TButtonVariant = 'standard';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('appearance')\n @Watch('type')\n @Watch('size')\n @Watch('variant')\n checkPropValues() {\n validatePropValue(BUTTON_APPEARANCE, 'primary', this.el, 'appearance');\n validatePropValue(BUTTON_TYPE, 'button', this.el, 'type');\n validatePropValue(BUTTON_SIZE, 'medium', this.el, 'size');\n validatePropValue(BUTTON_VARIANT, 'standard', this.el, 'variant');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when the button loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqButtonElement>;\n\n /** Handler to be called when the button is clicked */\n @Event() bqFocus: EventEmitter<HTMLBqButtonElement>;\n\n /** Handler to be called when button gets focus */\n @Event() bqClick: EventEmitter<HTMLBqButtonElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.checkPropValues();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private handleClick = (ev: Event) => {\n if (this.disabled || this.loading) {\n ev.preventDefault();\n ev.stopPropagation();\n return;\n }\n\n if (this.type === 'submit' || this.type === 'reset') {\n const wrapperForm = this.el.closest('form');\n if (!isNil(wrapperForm)) {\n const btn = document.createElement('button');\n btn.type = this.type;\n btn.hidden = true;\n wrapperForm.append(btn);\n\n btn.click();\n btn.remove();\n }\n }\n\n this.bqClick.emit(this.el);\n };\n\n private handleSlotChange = () => {\n this.hasPrefix = hasSlotContent(this.prefixElem, 'prefix');\n this.hasSuffix = hasSlotContent(this.suffixElem, 'suffix');\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const isLink = isDefined(this.href);\n const TagElem = isLink ? 'a' : 'button';\n const style = {\n ...(this.border && { '--bq-button--border-radius': `var(--bq-radius--${this.border})` }),\n };\n\n return (\n <Host style={style}>\n <TagElem\n class={{\n 'bq-button': true,\n [`bq-button--${this.appearance}`]: true,\n [`content-${this.justifyContent}`]: true,\n [`${this.variant}`]: true,\n [`${this.size}`]: true,\n block: this.block,\n disabled: this.disabled,\n 'has-prefix': this.hasPrefix,\n 'has-suffix': this.hasSuffix,\n loading: this.loading,\n }}\n aria-disabled={this.disabled ? 'true' : 'false'}\n disabled={this.disabled}\n download={isLink ? this.download : undefined}\n href={isLink ? this.href : undefined}\n part=\"button\"\n rel={isLink && this.target ? 'noreferrer noopener' : undefined}\n target={isLink ? this.target : undefined}\n type={this.type}\n tabIndex={this.disabled ? -1 : 0}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.handleClick}\n >\n <span class=\"bq-button__prefix\" ref={(spanElem) => (this.prefixElem = spanElem)} part=\"prefix\">\n <slot name=\"prefix\" onSlotchange={this.handleSlotChange} />\n </span>\n <span class=\"bq-button__label\" part=\"label\">\n <slot />\n </span>\n <span class=\"bq-button__suffix\" ref={(spanElem) => (this.suffixElem = spanElem)} part=\"suffix\">\n <slot name=\"suffix\" onSlotchange={this.handleSlotChange} />\n </span>\n {this.loading && (\n <bq-icon\n class=\"bq-button__loader\"\n name=\"spinner-gap\"\n role=\"img\"\n title={`${this.appearance} button loader`}\n />\n )}\n </TagElem>\n </Host>\n );\n }\n}\n","/* -------------------------------------------------------------------------- */\n/* Icon request helper */\n/* -------------------------------------------------------------------------- */\n\nimport { isNil, isString } from '../../../shared/utils';\n\nconst requests = new Map<string, Promise<unknown>>();\n\nconst fetchSvg = async (url: string, sanitize: boolean): Promise<unknown> => {\n if (typeof fetch === 'undefined' || typeof document === 'undefined') return;\n\n if (requests.has(url)) return requests.get(url);\n\n try {\n const response = await fetch(url);\n\n if (!response.ok) {\n iconContent.set(url, '');\n return;\n }\n\n let svgContent = (await response.text()) || '';\n\n if (svgContent && sanitize !== false) svgContent = validateContent(svgContent);\n\n iconContent.set(url, svgContent);\n } catch (error) {\n console.error(`[BqIcon] Failed to fetch SVG from ${url}:`, error);\n iconContent.set(url, '');\n }\n};\n\nexport const iconContent = new Map<string, string>();\n\nexport const getSvgContent = async (url: string, sanitize: boolean) => {\n let req = requests.get(url);\n\n // NOTE: if the request does not exists we will cache it\n if (isNil(req)) {\n req = fetchSvg(url, sanitize);\n requests.set(url, req);\n }\n return req;\n};\n\nexport const validateContent = (svgContent: string): string => {\n const svgTag = 'svg';\n const iconCssClass = 'bq-icon__svg';\n\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== svgTag) {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === svgTag) {\n // keep other CSS classes (if there's any) and add the `bq-icon__svg` CSS class\n const othersCssClasses = svgElm.getAttribute('class') || '';\n svgElm.setAttribute('class', `${othersCssClasses} ${iconCssClass}`.trim());\n // set the shadow DOM part for the SVG element\n svgElm.setAttribute('part', svgTag);\n\n // remove height and width attribute, if for some reason they are still present in the SVG tag\n svgElm.removeAttribute('height');\n svgElm.removeAttribute('width');\n\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm as HTMLElement)) return div.innerHTML;\n }\n\n return '';\n};\n\nexport const isValid = (elm: HTMLElement): boolean => {\n if (elm.nodeType === Node.ELEMENT_NODE) {\n if (elm.nodeName.toLowerCase() === 'script') return false;\n\n for (const attribute of Array.from(elm.attributes)) {\n const value = attribute.value;\n if (isString(value) && value.toLowerCase().startsWith('on')) {\n return false;\n }\n }\n\n for (const childNode of Array.from(elm.children) as HTMLElement[]) {\n if (!isValid(childNode)) return false;\n }\n }\n return true;\n};\n","/* -------------------------------------------------------------------------- */\n/* Icon styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-icon.variables';\n\n:host {\n @apply inline-block;\n}\n\n/**\n * This class is added on packages/beeq/src/components/icon/helper/request.ts\n * See lines 42 and 58 for details.\n */\n.bq-icon__svg {\n @apply scale-x-[--bq-icon--direction];\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport { TIconWeight } from './bq-icon.types';\nimport { getSvgContent, iconContent } from './helper/request';\nimport { getBasePath, getColorCSSVariable, isNil } from '../../shared/utils';\n\n/**\n * Icons are simplified images that graphically explain the meaning of an object on the screen.\n *\n * @part base - The component's internal wrapper that holds the icon SVG content.\n * @part svg - The `<svg>` tag element inside the component.\n */\n@Component({\n assetsDirs: ['svg'],\n tag: 'bq-icon',\n styleUrl: './scss/bq-icon.scss',\n shadow: true,\n})\nexport class BqIcon {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private _svgContent: string;\n\n // Public Property API\n // ========================\n\n /** Label for the icon, used for accessibility */\n @Prop({ reflect: true }) label?: string;\n\n /** Set the stroke color of the SVG. The value should be a valid value of the palette color */\n @Prop({ reflect: true }) color?: string;\n\n /** Icon name to load. Please check all available icons [here](https://phosphoricons.com/) */\n @Prop({ reflect: true }) name!: string;\n\n /** Set the size of the SVG */\n @Prop({ reflect: true }) size?: string | number = 24;\n\n /** Set the source of the SVG. If the source is set, the name property will be ignored */\n @Prop({ reflect: true }) src?: string;\n\n /** @deprecated It set the icon weight/style */\n @Prop({ reflect: true }) weight?: TIconWeight = undefined;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('color')\n @Watch('name')\n @Watch('size')\n handlePropsChange() {\n this.loadIcon(this.name);\n }\n\n /**\n * !TO BE REMOVED: Delete this `@Watch()` once the deprecated `weight` property is removed\n * We need to maintain retro-compatibility until the next major release\n */\n @Watch('weight')\n handleWeightChange() {\n if (this.name.includes(this.weight)) return;\n\n console.warn(\n `❗️ [bq-icon]: the 'weight' property is deprecated, you should add the weight to the icon name.\\n\n For example, '<bq-icon name=\"bell-fill\"></bq-icon>' instead of '<bq-icon name=\"bell\" weight=\"fill\"></bq-icon>'`,\n );\n // Check if the icon is weighted. An icon is considered weighted if its weight is not 'regular' and ENV_SVG_PATH is not set.\n // Eg: if the weight is 'bold' and ENV_SVG_PATH is not set, isWeightedIcon will be true.\n const REGULAR = 'regular';\n const isWeightedIcon = !isNil(this.weight) && this.weight !== REGULAR;\n // If the icon is weighted, append the weight to the icon name. Otherwise, append nothing.\n // Eg: if isWeightedIcon is true and the weight is 'bold', weightSuffix will be '-bold'.\n const weightSuffix = isWeightedIcon ? `-${this.weight}` : '';\n // Construct the icon name by appending the weight suffix (if any) and the file extension.\n // Eg: if the name is 'my-icon' and weightSuffix is '-bold', iconName will be 'my-icon-bold.svg'.\n const iconName = `${this.name}${weightSuffix}`;\n this.loadIcon(iconName);\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler to be called when the SVG has loaded */\n @Event() svgLoaded: EventEmitter;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n connectedCallback() {\n this.handlePropsChange();\n\n // !TO BE REMOVED: Delete this once the deprecated `weight` property is removed\n if (!isNil(this.weight)) this.handleWeightChange();\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 getIconSource = (name: string) => {\n if (!this.name && !this.src) return;\n // Return the src if it is set\n if (this.src) return this.src;\n\n const SVG_EXTENSION = '.svg';\n const iconFileName = `${name}${SVG_EXTENSION}`;\n\n return getBasePath(iconFileName);\n };\n\n private loadIcon = (name: string) => {\n const url = this.getIconSource(name);\n getSvgContent(url, true).then(() => {\n this._svgContent = iconContent.get(url);\n this.svgLoaded.emit(this._svgContent);\n });\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const styles = {\n ...(this.color && { '--bq-icon--color': getColorCSSVariable(this.color) }),\n ...(this.size && { '--bq-icon--size': `${this.size}px` }),\n };\n\n return (\n <Host style={styles}>\n <div\n aria-label={this.label ?? `${this.name} icon`}\n class=\"flex text-[color:--bq-icon--color] bs-[--bq-icon--size] is-[--bq-icon--size]\"\n innerHTML={this._svgContent}\n part=\"base\"\n role=\"img\"\n />\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BUTTON_SIZE","BUTTON_TYPE","BUTTON_APPEARANCE","BUTTON_VARIANT","bqButtonCss","BqButtonStyle0","BqButton","this","handleBlur","bqBlur","emit","el","handleFocus","bqFocus","handleClick","ev","disabled","loading","preventDefault","stopPropagation","type","wrapperForm","closest","isNil","btn","document","createElement","hidden","append","click","remove","bqClick","handleSlotChange","hasPrefix","hasSlotContent","prefixElem","hasSuffix","suffixElem","checkPropValues","validatePropValue","componentWillLoad","render","isLink","isDefined","href","TagElem","style","border","h","Host","key","class","appearance","justifyContent","variant","size","block","download","undefined","part","rel","target","tabIndex","onBlur","onFocus","onClick","ref","spanElem","name","onSlotchange","role","title","requests","Map","fetchSvg","async","url","sanitize","fetch","has","get","response","ok","iconContent","set","svgContent","text","validateContent","error","console","getSvgContent","req","svgTag","iconCssClass","div","innerHTML","i","childNodes","length","nodeName","toLowerCase","removeChild","svgElm","firstElementChild","othersCssClasses","getAttribute","setAttribute","trim","removeAttribute","isValid","elm","nodeType","Node","ELEMENT_NODE","attribute","Array","from","attributes","value","isString","startsWith","childNode","children","bqIconCss","BqIconStyle0","BqIcon","getIconSource","src","SVG_EXTENSION","iconFileName","getBasePath","loadIcon","then","_svgContent","svgLoaded","handlePropsChange","handleWeightChange","includes","weight","warn","REGULAR","isWeightedIcon","weightSuffix","iconName","connectedCallback","styles","color","getColorCSSVariable","_a","label"],"sources":["../../packages/beeq/src/components/button/bq-button.types.ts","../../packages/beeq/src/components/button/scss/bq-button.scss?tag=bq-button&encapsulation=shadow","../../packages/beeq/src/components/button/bq-button.tsx","../../packages/beeq/src/components/icon/helper/request.ts","../../packages/beeq/src/components/icon/scss/bq-icon.scss?tag=bq-icon&encapsulation=shadow","../../packages/beeq/src/components/icon/bq-icon.tsx"],"sourcesContent":["export const BUTTON_SIZE = ['small', 'medium', 'large'] as const;\nexport type TButtonSize = (typeof BUTTON_SIZE)[number];\n\nexport const BUTTON_TYPE = ['button', 'submit', 'reset'] as const;\nexport type TButtonType = (typeof BUTTON_TYPE)[number];\n\nexport const BUTTON_APPEARANCE = ['primary', 'secondary', 'link', 'text'] as const;\nexport type TButtonAppearance = (typeof BUTTON_APPEARANCE)[number];\n\nexport const BUTTON_VARIANT = ['standard', 'ghost', 'danger'] as const;\nexport type TButtonVariant = (typeof BUTTON_VARIANT)[number];\n\nexport const BUTTON_BORDER_RADIUS = ['none', 'xs2', 'xs', 's', 'm', 'l', 'full'] as const;\nexport type TButtonBorderRadius = (typeof BUTTON_BORDER_RADIUS)[number];\n","/* -------------------------------------------------------------------------- */\n/* Button styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-button.variables';\n\n@layer components {\n // Common button base style\n .bq-button {\n @apply box-border flex cursor-[inherit] items-center justify-center font-medium leading-regular;\n @apply rounded-[--bq-button--border-radius] border-[length:--bq-button--border-width] border-[color:--bq-button--border-color];\n @apply transition-[background-color,border-color,color] duration-300 ease-in-out;\n // `DISABLED` state\n @apply disabled:cursor-not-allowed disabled:opacity-60;\n // `FOCUS` state\n @apply focus-visible:focus;\n }\n}\n\n:host {\n @apply relative inline-block cursor-pointer is-auto;\n}\n\n:host([block]),\n.block {\n @apply is-full;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Appearance */\n/* -------------------------------------------------------------------------- */\n\n.bq-button--primary {\n @apply bg-ui-brand text-text-alt;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-brand;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-brand active:enabled:hover:bg-active-ui-brand;\n}\n\n.bq-button--primary.ghost {\n @apply border-m border-solid border-stroke-brand bg-transparent text-text-brand;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-primary active:enabled:hover:bg-active-ui-primary;\n}\n\n.bq-button--primary.danger {\n @apply bg-ui-danger text-text-alt;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-danger;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-danger active:enabled:hover:bg-active-ui-danger;\n}\n\n.bq-button--secondary {\n @apply bg-ui-secondary text-text-primary;\n // Secondary `HOVER` state\n @apply hover:enabled:bg-hover-ui-secondary;\n // Secondary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n.bq-button--secondary.ghost {\n @apply border-m border-solid border-stroke-tertiary bg-transparent text-text-primary;\n // Secondary `HOVER` state\n @apply hover:enabled:bg-hover-ui-secondary;\n // Secondary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n.bq-button--link {\n @apply bg-transparent text-text-brand no-underline;\n // Primary `HOVER` state\n @apply [&:not(.disabled)]:hover:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply [&:not(.disabled)]:active:bg-active-ui-secondary [&:not(.disabled)]:active:hover:bg-active-ui-secondary;\n // HTML `<a>` elements does not have a `disabled` state so we need to handle it manually\n &.disabled {\n @apply cursor-not-allowed opacity-60;\n }\n}\n\n.bq-button--text {\n @apply bg-transparent text-text-primary;\n // Primary `HOVER` state\n @apply hover:enabled:bg-hover-ui-primary;\n // Primary `ACTIVE` state\n @apply active:enabled:bg-active-ui-secondary active:enabled:hover:bg-active-ui-secondary;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Size */\n/* -------------------------------------------------------------------------- */\n\n.small {\n @apply text-[length:--bq-button--small-font-size] bs-[--bq-button--small-height] p-b-[--bq-button--small-paddingY] p-i-[--bq-button--small-paddingX];\n}\n\n.medium {\n @apply text-[length:--bq-button--medium-font-size] bs-[--bq-button--medium-height] p-b-[--bq-button--medium-paddingY] p-i-[--bq-button--medium-paddingX];\n}\n\n.large {\n @apply text-[length:--bq-button--large-font-size] bs-[--bq-button--large-height] p-b-[--bq-button--large-paddingY] p-i-[--bq-button--large-paddingX];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Label */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__label ::slotted(bq-icon) {\n @apply flex;\n}\n\n.content-left {\n @apply justify-start;\n}\n\n.content-right {\n @apply justify-end;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Prefix and Suffix slots */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__prefix,\n.bq-button__suffix {\n @apply pointer-events-none flex shrink-0 grow-0 basis-auto items-center;\n}\n\n.bq-button.has-prefix .bq-button__label {\n @apply ps-xs2;\n}\n\n.bq-button.has-suffix .bq-button__label {\n @apply pe-xs2;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Loading */\n/* -------------------------------------------------------------------------- */\n\n.bq-button.loading {\n @apply relative cursor-wait;\n}\n\n.bq-button.loading .bq-button__prefix,\n.bq-button.loading .bq-button__label,\n.bq-button.loading .bq-button__suffix {\n @apply invisible;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Spinner icon */\n/* -------------------------------------------------------------------------- */\n\n.bq-button__loader {\n @include animation-spin;\n @apply absolute;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport {\n BUTTON_APPEARANCE,\n BUTTON_SIZE,\n BUTTON_TYPE,\n BUTTON_VARIANT,\n TButtonAppearance,\n TButtonBorderRadius,\n TButtonSize,\n TButtonType,\n TButtonVariant,\n} from './bq-button.types';\nimport { hasSlotContent, isDefined, isNil, validatePropValue } from '../../shared/utils';\n\n/**\n * Buttons are designed for users to take action on a page or a screen.\n *\n * @part button - The `<a>` or `<button>` HTML element used under the hood.\n * @part prefix - The `<span>` tag element that acts as prefix container.\n * @part label - The `<span>` tag element that renders the text of the button.\n * @part suffix - The `<span>` tag element that acts as suffix container.\n */\n@Component({\n tag: 'bq-button',\n styleUrl: './scss/bq-button.scss',\n shadow: true,\n})\nexport class BqButton {\n // Own Properties\n // ====================\n\n private prefixElem: HTMLElement;\n private suffixElem: HTMLElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqButtonElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasPrefix = false;\n @State() private hasSuffix = false;\n\n // Public Property API\n // ========================\n\n /** The appearance style to apply to the button */\n @Prop({ reflect: true }) appearance: TButtonAppearance = 'primary';\n\n /** If `true`, it will make the button fit to its parent width. */\n @Prop({ reflect: true }) block: boolean = false;\n\n /** The corner radius of the button */\n @Prop({ reflect: true }) border: TButtonBorderRadius = 'm';\n\n /** If true, the button will be disabled (no interaction allowed) */\n @Prop() disabled = false;\n\n /**\n * Tells the browser to treat the linked URL as a download. Only used when `href` is set.\n * Details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download\n */\n @Prop() download?: string;\n\n /** When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>` */\n @Prop({ reflect: true }) href: string;\n\n /** It determinate how the content should be aligned */\n @Prop({ reflect: true }) justifyContent: 'left' | 'center' | 'right' = 'center';\n\n /** If `true` it will display the button in a loading state */\n @Prop() loading = false;\n\n /** The size of the button */\n @Prop({ reflect: true }) size: TButtonSize = 'medium';\n\n /**\n * Where to display the linked URL, as the name for a browsing context (a `tab`, `window`, or `<iframe>`)\n * Details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target\n */\n @Prop({ reflect: true }) target: '_blank' | '_parent' | '_self' | '_top';\n\n /** The default behavior of the button */\n @Prop({ reflect: true }) type: TButtonType = 'button';\n\n /** The variant of button to apply on top of the appearance (applicable only to `appearance=\"primary\"`) */\n @Prop({ reflect: true }) variant: TButtonVariant = 'standard';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('appearance')\n @Watch('type')\n @Watch('size')\n @Watch('variant')\n checkPropValues() {\n validatePropValue(BUTTON_APPEARANCE, 'primary', this.el, 'appearance');\n validatePropValue(BUTTON_TYPE, 'button', this.el, 'type');\n validatePropValue(BUTTON_SIZE, 'medium', this.el, 'size');\n validatePropValue(BUTTON_VARIANT, 'standard', this.el, 'variant');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when the button loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqButtonElement>;\n\n /** Handler to be called when the button is clicked */\n @Event() bqFocus: EventEmitter<HTMLBqButtonElement>;\n\n /** Handler to be called when button gets focus */\n @Event() bqClick: EventEmitter<HTMLBqButtonElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.checkPropValues();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private handleClick = (ev: Event) => {\n if (this.disabled || this.loading) {\n ev.preventDefault();\n ev.stopPropagation();\n return;\n }\n\n if (this.type === 'submit' || this.type === 'reset') {\n const wrapperForm = this.el.closest('form');\n if (!isNil(wrapperForm)) {\n const btn = document.createElement('button');\n btn.type = this.type;\n btn.hidden = true;\n wrapperForm.append(btn);\n\n btn.click();\n btn.remove();\n }\n }\n\n this.bqClick.emit(this.el);\n };\n\n private handleSlotChange = () => {\n this.hasPrefix = hasSlotContent(this.prefixElem, 'prefix');\n this.hasSuffix = hasSlotContent(this.suffixElem, 'suffix');\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const isLink = isDefined(this.href);\n const TagElem = isLink ? 'a' : 'button';\n const style = {\n ...(this.border && { '--bq-button--border-radius': `var(--bq-radius--${this.border})` }),\n };\n\n return (\n <Host style={style}>\n <TagElem\n class={{\n 'bq-button': true,\n [`bq-button--${this.appearance}`]: true,\n [`content-${this.justifyContent}`]: true,\n [`${this.variant}`]: true,\n [`${this.size}`]: true,\n block: this.block,\n disabled: this.disabled,\n 'has-prefix': this.hasPrefix,\n 'has-suffix': this.hasSuffix,\n loading: this.loading,\n }}\n aria-disabled={this.disabled ? 'true' : 'false'}\n disabled={this.disabled}\n download={isLink ? this.download : undefined}\n href={isLink ? this.href : undefined}\n part=\"button\"\n rel={isLink && this.target ? 'noreferrer noopener' : undefined}\n target={isLink ? this.target : undefined}\n type={this.type}\n tabIndex={this.disabled ? -1 : 0}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.handleClick}\n >\n <span class=\"bq-button__prefix\" ref={(spanElem) => (this.prefixElem = spanElem)} part=\"prefix\">\n <slot name=\"prefix\" onSlotchange={this.handleSlotChange} />\n </span>\n <span class=\"bq-button__label\" part=\"label\">\n <slot />\n </span>\n <span class=\"bq-button__suffix\" ref={(spanElem) => (this.suffixElem = spanElem)} part=\"suffix\">\n <slot name=\"suffix\" onSlotchange={this.handleSlotChange} />\n </span>\n {this.loading && (\n <bq-icon\n class=\"bq-button__loader\"\n name=\"spinner-gap\"\n role=\"img\"\n title={`${this.appearance} button loader`}\n />\n )}\n </TagElem>\n </Host>\n );\n }\n}\n","/* -------------------------------------------------------------------------- */\n/* Icon request helper */\n/* -------------------------------------------------------------------------- */\n\nimport { isNil, isString } from '../../../shared/utils';\n\nconst requests = new Map<string, Promise<unknown>>();\n\nconst fetchSvg = async (url: string, sanitize: boolean): Promise<unknown> => {\n if (typeof fetch === 'undefined' || typeof document === 'undefined') return;\n\n if (requests.has(url)) return requests.get(url);\n\n try {\n const response = await fetch(url);\n\n if (!response.ok) {\n iconContent.set(url, '');\n return;\n }\n\n let svgContent = (await response.text()) || '';\n\n if (svgContent && sanitize !== false) svgContent = validateContent(svgContent);\n\n iconContent.set(url, svgContent);\n } catch (error) {\n console.error(`[BqIcon] Failed to fetch SVG from ${url}:`, error);\n iconContent.set(url, '');\n }\n};\n\nexport const iconContent = new Map<string, string>();\n\nexport const getSvgContent = async (url: string, sanitize: boolean) => {\n let req = requests.get(url);\n\n // NOTE: if the request does not exists we will cache it\n if (isNil(req)) {\n req = fetchSvg(url, sanitize);\n requests.set(url, req);\n }\n return req;\n};\n\nexport const validateContent = (svgContent: string): string => {\n const svgTag = 'svg';\n const iconCssClass = 'bq-icon__svg';\n\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== svgTag) {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === svgTag) {\n // keep other CSS classes (if there's any) and add the `bq-icon__svg` CSS class\n const othersCssClasses = svgElm.getAttribute('class') || '';\n svgElm.setAttribute('class', `${othersCssClasses} ${iconCssClass}`.trim());\n // set the shadow DOM part for the SVG element\n svgElm.setAttribute('part', svgTag);\n\n // remove height and width attribute, if for some reason they are still present in the SVG tag\n svgElm.removeAttribute('height');\n svgElm.removeAttribute('width');\n\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm as HTMLElement)) return div.innerHTML;\n }\n\n return '';\n};\n\nexport const isValid = (elm: HTMLElement): boolean => {\n if (elm.nodeType === Node.ELEMENT_NODE) {\n if (elm.nodeName.toLowerCase() === 'script') return false;\n\n for (const attribute of Array.from(elm.attributes)) {\n const value = attribute.value;\n if (isString(value) && value.toLowerCase().startsWith('on')) {\n return false;\n }\n }\n\n for (const childNode of Array.from(elm.children) as HTMLElement[]) {\n if (!isValid(childNode)) return false;\n }\n }\n return true;\n};\n","/* -------------------------------------------------------------------------- */\n/* Icon styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-icon.variables';\n\n:host {\n @apply inline-block;\n}\n\n/**\n * This class is added on packages/beeq/src/components/icon/helper/request.ts\n * See lines 42 and 58 for details.\n */\n.bq-icon__svg {\n @apply scale-x-[--bq-icon--direction];\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport { TIconWeight } from './bq-icon.types';\nimport { getSvgContent, iconContent } from './helper/request';\nimport { getBasePath, getColorCSSVariable, isNil } from '../../shared/utils';\n\n/**\n * Icons are simplified images that graphically explain the meaning of an object on the screen.\n *\n * @part base - The component's internal wrapper that holds the icon SVG content.\n * @part svg - The `<svg>` tag element inside the component.\n */\n@Component({\n assetsDirs: ['svg'],\n tag: 'bq-icon',\n styleUrl: './scss/bq-icon.scss',\n shadow: true,\n})\nexport class BqIcon {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private _svgContent: string;\n\n // Public Property API\n // ========================\n\n /** Label for the icon, used for accessibility */\n @Prop({ reflect: true }) label?: string;\n\n /** Set the stroke color of the SVG. The value should be a valid value of the palette color */\n @Prop({ reflect: true }) color?: string;\n\n /** Icon name to load. Please check all available icons [here](https://phosphoricons.com/) */\n @Prop({ reflect: true }) name!: string;\n\n /** Set the size of the SVG */\n @Prop({ reflect: true }) size?: string | number = 24;\n\n /** Set the source of the SVG. If the source is set, the name property will be ignored */\n @Prop({ reflect: true }) src?: string;\n\n /** @deprecated It set the icon weight/style */\n @Prop({ reflect: true }) weight?: TIconWeight = undefined;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('color')\n @Watch('name')\n @Watch('size')\n handlePropsChange() {\n this.loadIcon(this.name);\n }\n\n /**\n * !TO BE REMOVED: Delete this `@Watch()` once the deprecated `weight` property is removed\n * We need to maintain retro-compatibility until the next major release\n */\n @Watch('weight')\n handleWeightChange() {\n if (this.name.includes(this.weight)) return;\n\n console.warn(\n `❗️ [bq-icon]: the 'weight' property is deprecated, you should add the weight to the icon name.\\n\n For example, '<bq-icon name=\"bell-fill\"></bq-icon>' instead of '<bq-icon name=\"bell\" weight=\"fill\"></bq-icon>'`,\n );\n // Check if the icon is weighted. An icon is considered weighted if its weight is not 'regular' and ENV_SVG_PATH is not set.\n // Eg: if the weight is 'bold' and ENV_SVG_PATH is not set, isWeightedIcon will be true.\n const REGULAR = 'regular';\n const isWeightedIcon = !isNil(this.weight) && this.weight !== REGULAR;\n // If the icon is weighted, append the weight to the icon name. Otherwise, append nothing.\n // Eg: if isWeightedIcon is true and the weight is 'bold', weightSuffix will be '-bold'.\n const weightSuffix = isWeightedIcon ? `-${this.weight}` : '';\n // Construct the icon name by appending the weight suffix (if any) and the file extension.\n // Eg: if the name is 'my-icon' and weightSuffix is '-bold', iconName will be 'my-icon-bold.svg'.\n const iconName = `${this.name}${weightSuffix}`;\n this.loadIcon(iconName);\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler to be called when the SVG has loaded */\n @Event() svgLoaded: EventEmitter;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n connectedCallback() {\n this.handlePropsChange();\n\n // !TO BE REMOVED: Delete this once the deprecated `weight` property is removed\n if (!isNil(this.weight)) this.handleWeightChange();\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 getIconSource = (name: string) => {\n if (!this.name && !this.src) return;\n // Return the src if it is set\n if (this.src) return this.src;\n\n const SVG_EXTENSION = '.svg';\n const iconFileName = `${name}${SVG_EXTENSION}`;\n\n return getBasePath(iconFileName);\n };\n\n private loadIcon = (name: string) => {\n const url = this.getIconSource(name);\n getSvgContent(url, true).then(() => {\n this._svgContent = iconContent.get(url);\n this.svgLoaded.emit(this._svgContent);\n });\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const styles = {\n ...(this.color && { '--bq-icon--color': getColorCSSVariable(this.color) }),\n ...(this.size && { '--bq-icon--size': `${this.size}px` }),\n };\n\n return (\n <Host style={styles}>\n <div\n aria-label={this.label ?? `${this.name} icon`}\n class=\"flex text-[color:--bq-icon--color] bs-[--bq-icon--size] is-[--bq-icon--size]\"\n innerHTML={this._svgContent}\n part=\"base\"\n role=\"img\"\n />\n </Host>\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAO,MAAMA,IAAc,EAAC,SAAS,UAAU;;AAGxC,MAAMC,IAAc,EAAC,UAAU,UAAU;;AAGzC,MAAMC,IAAoB,EAAC,WAAW,aAAa,QAAQ;;AAG3D,MAAMC,IAAiB,EAAC,YAAY,SAAS;;ACTpD,MAAMC,IAAc;;AACpB,MAAAC,IAAeD;;MC2BFE,IAAQ;;;;;;;;;;;;;;;;;;QAkHXC,KAAAC,aAAa;MACnBD,KAAKE,OAAOC,KAAKH,KAAKI;AAAG;IAGnBJ,KAAAK,cAAc;MACpBL,KAAKM,QAAQH,KAAKH,KAAKI;AAAG;IAGpBJ,KAAAO,cAAeC;MACrB,IAAIR,KAAKS,YAAYT,KAAKU,SAAS;QACjCF,EAAGG;QACHH,EAAGI;QACH;;MAGF,IAAIZ,KAAKa,SAAS,YAAYb,KAAKa,SAAS,SAAS;QACnD,MAAMC,IAAcd,KAAKI,GAAGW,QAAQ;QACpC,KAAKC,EAAMF,IAAc;UACvB,MAAMG,IAAMC,SAASC,cAAc;UACnCF,EAAIJ,OAAOb,KAAKa;UAChBI,EAAIG,SAAS;UACbN,EAAYO,OAAOJ;UAEnBA,EAAIK;UACJL,EAAIM;;;MAIRvB,KAAKwB,QAAQrB,KAAKH,KAAKI;AAAG;IAGpBJ,KAAAyB,mBAAmB;MACzBzB,KAAK0B,YAAYC,EAAe3B,KAAK4B,YAAY;MACjD5B,KAAK6B,YAAYF,EAAe3B,KAAK8B,YAAY;AAAS;qBAnI/B;qBACA;sBAM4B;iBAGf;kBAGa;oBAGpC;;;0BAYoD;mBAGrD;gBAG2B;;gBASA;mBAGM;;;;EASnD,eAAAC;IACEC,EAAkBrC,GAAmB,WAAWK,KAAKI,IAAI;IACzD4B,EAAkBtC,GAAa,UAAUM,KAAKI,IAAI;IAClD4B,EAAkBvC,GAAa,UAAUO,KAAKI,IAAI;IAClD4B,EAAkBpC,GAAgB,YAAYI,KAAKI,IAAI;;;;;EAoBzD,iBAAA6B;IACEjC,KAAK+B;;;;;EA0DP,MAAAG;IACE,MAAMC,IAASC,EAAUpC,KAAKqC;IAC9B,MAAMC,IAAUH,IAAS,MAAM;IAC/B,MAAMI,IAAQ;SACRvC,KAAKwC,UAAU;QAAE,8BAA8B,oBAAoBxC,KAAKwC;;;IAG9E,OACEC,EAACC,GAAI;MAAAC,KAAA;MAACJ,OAAOA;OACXE,EAACH,GAAO;MAAAK,KAAA;MACNC,OAAO;QACL,aAAa;QACb,CAAC,cAAc5C,KAAK6C,eAAe;QACnC,CAAC,WAAW7C,KAAK8C,mBAAmB;QACpC,CAAC,GAAG9C,KAAK+C,YAAY;QACrB,CAAC,GAAG/C,KAAKgD,SAAS;QAClBC,OAAOjD,KAAKiD;QACZxC,UAAUT,KAAKS;QACf,cAAcT,KAAK0B;QACnB,cAAc1B,KAAK6B;QACnBnB,SAASV,KAAKU;;MACf,iBACcV,KAAKS,WAAW,SAAS;MACxCA,UAAUT,KAAKS;MACfyC,UAAUf,IAASnC,KAAKkD,WAAWC;MACnCd,MAAMF,IAASnC,KAAKqC,OAAOc;MAC3BC,MAAK;MACLC,KAAKlB,KAAUnC,KAAKsD,SAAS,wBAAwBH;MACrDG,QAAQnB,IAASnC,KAAKsD,SAASH;MAC/BtC,MAAMb,KAAKa;MACX0C,UAAUvD,KAAKS,YAAY,IAAI;MAC/B+C,QAAQxD,KAAKC;MACbwD,SAASzD,KAAKK;MACdqD,SAAS1D,KAAKO;OAEdkC,EAAA;MAAAE,KAAA;MAAMC,OAAM;MAAoBe,KAAMC,KAAc5D,KAAK4B,aAAagC;MAAWR,MAAK;OACpFX,EAAA;MAAAE,KAAA;MAAMkB,MAAK;MAASC,cAAc9D,KAAKyB;SAEzCgB,EAAA;MAAAE,KAAA;MAAMC,OAAM;MAAmBQ,MAAK;OAClCX,EAAA;MAAAE,KAAA;SAEFF,EAAA;MAAAE,KAAA;MAAMC,OAAM;MAAoBe,KAAMC,KAAc5D,KAAK8B,aAAa8B;MAAWR,MAAK;OACpFX,EAAA;MAAAE,KAAA;MAAMkB,MAAK;MAASC,cAAc9D,KAAKyB;SAExCzB,KAAKU,WACJ+B,EAAA;MAAAE,KAAA;MACEC,OAAM;MACNiB,MAAK;MACLE,MAAK;MACLC,OAAO,GAAGhE,KAAK6C;;;;;;;;;;;;;;;;;;gFCjO7B,OAAMoB,IAAW,IAAIC;;AAErB,MAAMC,WAAWC,OAAOC,GAAaC;EACnC,WAAWC,UAAU,sBAAsBrD,aAAa,aAAa;EAErE,IAAI+C,EAASO,IAAIH,IAAM,OAAOJ,EAASQ,IAAIJ;EAE3C;IACE,MAAMK,UAAiBH,MAAMF;IAE7B,KAAKK,EAASC,IAAI;MAChBC,EAAYC,IAAIR,GAAK;MACrB;;IAGF,IAAIS,UAAoBJ,EAASK,UAAW;IAE5C,IAAID,KAAcR,MAAa,OAAOQ,IAAaE,gBAAgBF;IAEnEF,EAAYC,IAAIR,GAAKS;IACrB,OAAOG;IACPC,QAAQD,MAAM,qCAAqCZ,MAAQY;IAC3DL,EAAYC,IAAIR,GAAK;;;;AAIlB,MAAMO,IAAc,IAAIV;;AAExB,MAAMiB,gBAAgBf,OAAOC,GAAaC;EAC/C,IAAIc,IAAMnB,EAASQ,IAAIJ;;IAGvB,IAAIrD,EAAMoE,IAAM;IACdA,IAAMjB,SAASE,GAAKC;IACpBL,EAASY,IAAIR,GAAKe;;EAEpB,OAAOA;AAAG;;AAGL,MAAMJ,kBAAmBF;EAC9B,MAAMO,IAAS;EACf,MAAMC,IAAe;EAErB,MAAMC,IAAMrE,SAASC,cAAc;EACnCoE,EAAIC,YAAYV;EAEhB,KAAK,IAAIW,IAAIF,EAAIG,WAAWC,SAAS,GAAGF,KAAK,GAAGA,KAAK;IACnD,IAAIF,EAAIG,WAAWD,GAAGG,SAASC,kBAAkBR,GAAQ;MACvDE,EAAIO,YAAYP,EAAIG,WAAWD;;;;IAKnC,MAAMM,IAASR,EAAIS;EACnB,IAAID,KAAUA,EAAOH,SAASC,kBAAkBR,GAAQ;;IAEtD,MAAMY,IAAmBF,EAAOG,aAAa,YAAY;IACzDH,EAAOI,aAAa,SAAS,GAAGF,KAAoBX,IAAec;;QAEnEL,EAAOI,aAAa,QAAQd;;QAG5BU,EAAOM,gBAAgB;IACvBN,EAAOM,gBAAgB;;;;QAKvB,IAAIC,QAAQP,IAAwB,OAAOR,EAAIC;;EAGjD,OAAO;AAAE;;AAGJ,MAAMc,UAAWC;EACtB,IAAIA,EAAIC,aAAaC,KAAKC,cAAc;IACtC,IAAIH,EAAIX,SAASC,kBAAkB,UAAU,OAAO;IAEpD,KAAK,MAAMc,KAAaC,MAAMC,KAAKN,EAAIO,aAAa;MAClD,MAAMC,IAAQJ,EAAUI;MACxB,IAAIC,EAASD,MAAUA,EAAMlB,cAAcoB,WAAW,OAAO;QAC3D,OAAO;;;IAIX,KAAK,MAAMC,KAAaN,MAAMC,KAAKN,EAAIY,WAA4B;MACjE,KAAKb,QAAQY,IAAY,OAAO;;;EAGpC,OAAO;AAAI;;AC/Fb,MAAME,IAAY;;AAClB,MAAAC,IAAeD;;MCiBFE,IAAM;;;;;;;;;;;;;;;;QAsGTtH,KAAAuH,gBAAiB1D;MACvB,KAAK7D,KAAK6D,SAAS7D,KAAKwH,KAAK;;YAE7B,IAAIxH,KAAKwH,KAAK,OAAOxH,KAAKwH;MAE1B,MAAMC,IAAgB;MACtB,MAAMC,IAAe,GAAG7D,IAAO4D;MAE/B,OAAOE,EAAYD;AAAa;IAG1B1H,KAAA4H,WAAY/D;MAClB,MAAMQ,IAAMrE,KAAKuH,cAAc1D;MAC/BsB,cAAcd,GAAK,MAAMwD,MAAK;QAC5B7H,KAAK8H,cAAclD,EAAYH,IAAIJ;QACnCrE,KAAK+H,UAAU5H,KAAKH,KAAK8H;AAAY;AACrC;;;;;gBA5F8C;;kBAMF3E;;;;EAQhD,iBAAA6E;IACEhI,KAAK4H,SAAS5H,KAAK6D;;;;;SAQrB,kBAAAoE;IACE,IAAIjI,KAAK6D,KAAKqE,SAASlI,KAAKmI,SAAS;IAErCjD,QAAQkD,KACN;;;QAKF,MAAMC,IAAU;IAChB,MAAMC,KAAkBtH,EAAMhB,KAAKmI,WAAWnI,KAAKmI,WAAWE;;;QAG9D,MAAME,IAAeD,IAAiB,IAAItI,KAAKmI,WAAW;;;QAG1D,MAAMK,IAAW,GAAGxI,KAAK6D,OAAO0E;IAChCvI,KAAK4H,SAASY;;;;;EAchB,iBAAAC;IACEzI,KAAKgI;;QAGL,KAAKhH,EAAMhB,KAAKmI,SAASnI,KAAKiI;;;;;EAyChC,MAAA/F;;IACE,MAAMwG,IAAS;SACT1I,KAAK2I,SAAS;QAAE,oBAAoBC,EAAoB5I,KAAK2I;;SAC7D3I,KAAKgD,QAAQ;QAAE,mBAAmB,GAAGhD,KAAKgD;;;IAGhD,OACEP,EAACC,GAAI;MAAAC,KAAA;MAACJ,OAAOmG;OACXjG,EAAA;MAAAE,KAAA;MAAA,eACckG,IAAA7I,KAAK8I,WAAK,QAAAD,WAAA,IAAAA,IAAI,GAAG7I,KAAK6D;MAClCjB,OAAM;MACN4C,WAAWxF,KAAK8H;MAChB1E,MAAK;MACLW,MAAK","ignoreList":[]}
@@ -0,0 +1,297 @@
1
+ /*!
2
+ * Built by Endavans
3
+ * © https://beeq.design - Apache 2 License.
4
+ */
5
+ import { r, c as a, h as e, g as b } from "./p-0c42c08a.js";
6
+
7
+ import "./p-bef53750.js";
8
+
9
+ import { c as t } from "./p-1f3a4359.js";
10
+
11
+ import { d as i } from "./p-951ba558.js";
12
+
13
+ import { i as n } from "./p-99829fc7.js";
14
+
15
+ import { i as s } from "./p-ecd27cf2.js";
16
+
17
+ const o = '::backdrop,:root{--bq-blue-100:#e7f0fd;--bq-blue-200:#d0e2fb;--bq-blue-300:#a1c5f7;--bq-blue-400:#73a8f3;--bq-blue-500:#448bef;--bq-blue-600:#156eeb;--bq-blue-700:#1158bc;--bq-blue-800:#0d428d;--bq-blue-900:#082c5e;--bq-blue-1000:#04162f;--bq-corai-100:#fff2f2;--bq-corai-200:#ffe6e6;--bq-corai-300:#ffccce;--bq-corai-400:#ffb3b5;--bq-corai-500:#ff999d;--bq-corai-600:#ff8084;--bq-corai-700:#cc666a;--bq-corai-800:#994d4f;--bq-corai-900:#663335;--bq-corai-1000:#331a1a;--bq-cyan-100:#e8f7fb;--bq-cyan-200:#d2f0f8;--bq-cyan-300:#a5e1f1;--bq-cyan-400:#78d1e9;--bq-cyan-500:#4bc2e2;--bq-cyan-600:#1eb3db;--bq-cyan-700:#188faf;--bq-cyan-800:#126b83;--bq-cyan-900:#0c4858;--bq-cyan-1000:#06242c;--bq-gold-100:#fbf4ec;--bq-gold-200:#f7e9da;--bq-gold-300:#f0d3b6;--bq-gold-400:#e8bc91;--bq-gold-500:#e1a66d;--bq-gold-600:#d99048;--bq-gold-700:#ae733a;--bq-gold-800:#82562b;--bq-gold-900:#573a1d;--bq-gold-1000:#2b1d0e;--bq-green-100:#e8f8ef;--bq-green-200:#d2f1e0;--bq-green-300:#a5e3c1;--bq-green-400:#78d5a1;--bq-green-500:#4bc782;--bq-green-600:#1eb963;--bq-green-700:#18944f;--bq-green-800:#126f3b;--bq-green-900:#0c4a28;--bq-green-1000:#062514;--bq-grey-100:#f1f2f4;--bq-grey-200:#e7e8eb;--bq-grey-300:#caccd2;--bq-grey-400:#a6aab3;--bq-grey-50:#f6f6f8;--bq-grey-500:#898e99;--bq-grey-600:#646a77;--bq-grey-700:#3f4350;--bq-grey-800:#2a2c35;--bq-grey-900:#1c1d23;--bq-grey-950:#15161a;--bq-grey-1000:#0d0e11;--bq-indigo-100:#edecfc;--bq-indigo-200:#dcdafa;--bq-indigo-300:#b9b5f5;--bq-indigo-400:#9590ef;--bq-indigo-500:#726bea;--bq-indigo-600:#4f46e5;--bq-indigo-700:#3f38b7;--bq-indigo-800:#2f2a89;--bq-indigo-900:#201c5c;--bq-indigo-1000:#100e2e;--bq-iris-100:#e9f0ff;--bq-iris-200:#d6e0ff;--bq-iris-300:#b2c0fe;--bq-iris-400:#8691f8;--bq-iris-500:#6061ee;--bq-iris-600:#4f46e5;--bq-iris-700:#413abd;--bq-iris-800:#332e95;--bq-iris-900:#26216d;--bq-iris-1000:#181545;--bq-lime-100:#f5fae8;--bq-lime-200:#ecf6d2;--bq-lime-300:#d9eda5;--bq-lime-400:#c5e379;--bq-lime-500:#b2da4c;--bq-lime-600:#9fd11f;--bq-lime-700:#7fa719;--bq-lime-800:#5f7d13;--bq-lime-900:#40540c;--bq-lime-1000:#202a06;--bq-magenta-100:#fce7f4;--bq-magenta-200:#f9cfea;--bq-magenta-300:#f39fd6;--bq-magenta-400:#ee6fbf;--bq-magenta-500:#e83fab;--bq-magenta-600:#de1395;--bq-magenta-700:#b20f77;--bq-magenta-800:#850c59;--bq-magenta-900:#58083c;--bq-magenta-1000:#2c041e;--bq-neutral-white:#fbfbfc;--bq-neutral-black:#060708;--bq-orange-100:#fbf0e9;--bq-orange-200:#f8e1d4;--bq-orange-300:#f1c2a8;--bq-orange-400:#eaa47d;--bq-orange-500:#e38551;--bq-orange-600:#dc6726;--bq-orange-700:#b0521e;--bq-orange-800:#843e17;--bq-orange-900:#58290f;--bq-orange-1000:#2c1508;--bq-purple-100:#efebf8;--bq-purple-200:#e0d7f2;--bq-purple-300:#c1afe5;--bq-purple-400:#a388d8;--bq-purple-500:#8460cb;--bq-purple-600:#6538be;--bq-purple-700:#512d98;--bq-purple-800:#3d2272;--bq-purple-900:#28164c;--bq-purple-1000:#140b26;--bq-red-100:#fce7ea;--bq-red-200:#f9d1d5;--bq-red-300:#f3a2ac;--bq-red-400:#ed7482;--bq-red-500:#e74559;--bq-red-600:#e1172f;--bq-red-700:#b41226;--bq-red-800:#870e1c;--bq-red-900:#5a0913;--bq-red-1000:#2d0509;--bq-sky-100:#eff4fb;--bq-sky-200:#dfeaf8;--bq-sky-300:#bfd5f1;--bq-sky-400:#9ec1e9;--bq-sky-500:#7eace2;--bq-sky-600:#5e97db;--bq-sky-700:#4b79af;--bq-sky-800:#385b83;--bq-sky-900:#263c58;--bq-sky-1000:#131e2c;--bq-teal-100:#e5f7f5;--bq-teal-200:#ccf0eb;--bq-teal-300:#99e1d8;--bq-teal-400:#66d2c4;--bq-teal-500:#33c3b1;--bq-teal-600:#00b49d;--bq-teal-700:#00907e;--bq-teal-800:#006c5e;--bq-teal-900:#00483f;--bq-teal-1000:#00241f;--bq-volcano-100:#feede7;--bq-volcano-200:#fddbd1;--bq-volcano-300:#fbb8a3;--bq-volcano-400:#fa9474;--bq-volcano-500:#f87146;--bq-volcano-600:#f64d18;--bq-volcano-700:#c53e13;--bq-volcano-800:#942e0e;--bq-volcano-900:#621f0a;--bq-volcano-1000:#310f05;--bq-yellow-100:#fefbe7;--bq-yellow-200:#fcf6d0;--bq-yellow-300:#faeea0;--bq-yellow-400:#f7e571;--bq-yellow-500:#f5dd41;--bq-yellow-600:#f2d412;--bq-yellow-700:#c2aa0e;--bq-yellow-800:#917f0b;--bq-yellow-900:#615507;--bq-yellow-1000:#302a04;--bq-endava-grey-50:#f7f7f8;--bq-endava-grey-100:#e4e6e7;--bq-endava-grey-200:#b5babe;--bq-endava-grey-300:#949ca1;--bq-endava-grey-400:#737d84;--bq-endava-grey-500:#525f67;--bq-endava-grey-600:#30404b;--bq-endava-grey-700:#2b3942;--bq-endava-grey-800:#263139;--bq-endava-grey-900:#192b37;--bq-endava-grey-950:#151b1e;--bq-endava-grey-1000:#0f1316;--bq-endava-neutral-white:#fafbfb;--bq-endava-neutral-black:#060708;--bq-endava-orange-100:#fef3f1;--bq-endava-orange-200:#fbd6d1;--bq-endava-orange-300:#fab7af;--bq-endava-orange-400:#fa988b;--bq-endava-orange-500:#fc7866;--bq-endava-orange-600:#ff5640;--bq-endava-orange-700:#ce4a39;--bq-endava-orange-800:#a03d30;--bq-endava-orange-900:#722e25;--bq-endava-orange-1000:#471e19}*,:after,:before{box-sizing:border-box}*{font:inherit;margin:0}ol[role=list],ul[role=list]{list-style-type:none}html{font-size:var(--bq-font-size--m)}html:focus-within{scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bq-background--primary);color:var(--bq-text--primary);font-family:var(--bq-font-family);line-height:var(--bq-font-line-height--regular);min-height:100vh;text-rendering:optimizeSpeed}a:not([class]){text-decoration-skip-ink:auto}canvas,img,picture,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}@media (prefers-reduced-motion:reduce){html:focus-within{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto;transition-duration:.01ms!important}}:root{--bq-white:#fff;--bq-black:#060708;--bq-neutral-50:var(--bq-grey-50);--bq-neutral-100:var(--bq-grey-100);--bq-neutral-200:var(--bq-grey-200);--bq-neutral-300:var(--bq-grey-300);--bq-neutral-400:var(--bq-grey-400);--bq-neutral-500:var(--bq-grey-500);--bq-neutral-600:var(--bq-grey-600);--bq-neutral-700:var(--bq-grey-700);--bq-neutral-800:var(--bq-grey-800);--bq-neutral-900:var(--bq-grey-900);--bq-neutral-950:var(--bq-grey-950);--bq-neutral-1000:var(--bq-grey-1000);--bq-brand-light:var(--bq-iris-100);--bq-brand:var(--bq-iris-600);--bq-brand-dark:var(--bq-iris-1000);--bq-accent-light:var(--bq-purple-100);--bq-accent:var(--bq-purple-600);--bq-accent-dark:var(--bq-purple-1000);--bq-success-light:var(--bq-teal-100);--bq-success:var(--bq-teal-600);--bq-success-dark:var(--bq-teal-1000);--bq-danger-light:var(--bq-red-100);--bq-danger:var(--bq-red-600);--bq-danger-dark:var(--bq-red-1000);--bq-warning-light:var(--bq-gold-100);--bq-warning:var(--bq-gold-600);--bq-warning-dark:var(--bq-gold-1000);--bq-info-light:var(--bq-iris-100);--bq-info:var(--bq-iris-600);--bq-info-dark:var(--bq-iris-1000);--bq-focus:var(--bq-iris-600);--bq-data-01:var(--bq-brand);--bq-data-02:var(--bq-purple-600);--bq-data-03:var(--bq-magenta-600);--bq-data-04:var(--bq-cyan-600);--bq-data-05:var(--bq-teal-600);--bq-data-06:var(--bq-orange-600);--bq-data-07:var(--bq-yellow-600);--bq-data-08:var(--bq-red-600);--bq-data-09:var(--bq-blue-600);--bq-data-10:var(--bq-grey-600);--bq-data-11:var(--bq-black);--bq-data-12:var(--bq-white);--bq-radius--none:0;--bq-radius--xs2:0.125rem;--bq-radius--xs:0.25rem;--bq-radius--s:0.5rem;--bq-radius--m:0.75rem;--bq-radius--l:1.5rem;--bq-radius--full:9999px;--bq-box-shadow--xs:0 2px 0 rgba(0,0,0,.016);--bq-box-shadow--s:0 8px 24px rgba(0,0,0,.04);--bq-box-shadow--m:0 10px 48px -16px rgba(0,0,0,.12);--bq-box-shadow--l:0 20px 58px -16px rgba(0,0,0,.16);--bq-font-family:"Outfit",sans-serif;--bq-font-size--xs:0.75rem;--bq-font-size--s:0.875rem;--bq-font-size--m:1rem;--bq-font-size--l:1.125rem;--bq-font-size--xl:1.5rem;--bq-font-size--xxl:2rem;--bq-font-size--xxl2:2.5rem;--bq-font-size--xxl3:3rem;--bq-font-size--xxl4:3.5rem;--bq-font-size--xxl5:4rem;--bq-font-weight--thin:100;--bq-font-weight--light:300;--bq-font-weight--regular:400;--bq-font-weight--medium:500;--bq-font-weight--semibold:600;--bq-font-weight--bold:700;--bq-font-line-height--small:1.2;--bq-font-line-height--regular:1.5;--bq-font-line-height--large:1.5;--bq-spacing-xs3:0.125rem;--bq-spacing-xs2:0.25rem;--bq-spacing-xs:0.5rem;--bq-spacing-s:0.75rem;--bq-spacing-m:1rem;--bq-spacing-l:1.5rem;--bq-spacing-xl:2rem;--bq-spacing-xxl:2.5rem;--bq-spacing-xxl2:3.5rem;--bq-spacing-xxl3:4rem;--bq-spacing-xxl4:4.5rem;--bq-stroke-s:1px;--bq-stroke-m:2px;--bq-stroke-l:3px}.beeq.light,.light,:root,[bq-mode=light]{--bq-background--primary:var(--bq-white);--bq-background--secondary:var(--bq-neutral-100);--bq-background--tertiary:var(--bq-neutral-200);--bq-background--alt:var(--bq-neutral-300);--bq-background--inverse:var(--bq-neutral-900);--bq-background--brand:var(--bq-brand);--bq-background--overlay:var(--bq-neutral-900);--bq-icon--primary:var(--bq-neutral-800);--bq-icon--alt:var(--bq-white);--bq-icon--secondary:var(--bq-neutral-600);--bq-icon--inverse:var(--bq-neutral-50);--bq-icon--brand:var(--bq-brand);--bq-icon--info:var(--bq-brand);--bq-icon--success:var(--bq-success);--bq-icon--warning:var(--bq-warning);--bq-icon--danger:var(--bq-danger);--bq-stroke--primary:var(--bq-neutral-200);--bq-stroke--secondary:var(--bq-neutral-600);--bq-stroke--tertiary:var(--bq-neutral-900);--bq-stroke--inverse:var(--bq-white);--bq-stroke--brand:var(--bq-brand);--bq-stroke--alt:var(--bq-neutral-50);--bq-stroke--success:var(--bq-success);--bq-stroke--warning:var(--bq-warning);--bq-stroke--danger:var(--bq-danger);--bq-stroke--info:var(--bq-brand);--bq-text--primary:var(--bq-neutral-800);--bq-text--secondary:var(--bq-neutral-600);--bq-text--inverse:var(--bq-neutral-50);--bq-text--brand:var(--bq-brand);--bq-text--alt:var(--bq-white);--bq-text--info:var(--bq-brand);--bq-text--success:var(--bq-success);--bq-text--warning:var(--bq-warning);--bq-text--danger:var(--bq-danger);--bq-ui--primary:var(--bq-white);--bq-ui--secondary:var(--bq-neutral-200);--bq-ui--tertiary:var(--bq-neutral-500);--bq-ui--inverse:var(--bq-neutral-900);--bq-ui--brand:var(--bq-brand);--bq-ui--brand-alt:var(--bq-brand-light);--bq-ui--alt:var(--bq-neutral-50);--bq-ui--success:var(--bq-success);--bq-ui--success-alt:var(--bq-success-light);--bq-ui--warning:var(--bq-warning);--bq-ui--warning-alt:var(--bq-warning-light);--bq-ui--danger:var(--bq-danger);--bq-ui--danger-alt:var(--bq-danger-light);--bq-ui--info:var(--bq-brand);--bq-ui--info-alt:var(--bq-brand-light);--bq-hover:#bcbfc5;--bq-active:#444546}.beeq.dark,.dark,[bq-mode=dark]{--bq-background--primary:var(--bq-neutral-1000);--bq-background--secondary:var(--bq-neutral-950);--bq-background--tertiary:var(--bq-neutral-800);--bq-background--alt:var(--bq-neutral-700);--bq-background--inverse:var(--bq-neutral-600);--bq-background--brand:var(--bq-brand);--bq-background--overlay:var(--bq-neutral-900);--bq-icon--primary:var(--bq-neutral-100);--bq-icon--secondary:var(--bq-neutral-400);--bq-icon--inverse:var(--bq-neutral-800);--bq-icon--brand:var(--bq-brand);--bq-icon--alt:var(--bq-white);--bq-icon--info:var(--bq-brand);--bq-icon--success:var(--bq-success);--bq-icon--warning:var(--bq-warning);--bq-icon--danger:var(--bq-danger);--bq-stroke--primary:var(--bq-neutral-900);--bq-stroke--secondary:var(--bq-neutral-700);--bq-stroke--tertiary:var(--bq-neutral-400);--bq-stroke--inverse:var(--bq-neutral-950);--bq-stroke--brand:var(--bq-brand);--bq-stroke--alt:var(--bq-neutral-1000);--bq-stroke--success:var(--bq-success);--bq-stroke--warning:var(--bq-warning);--bq-stroke--danger:var(--bq-danger);--bq-stroke--info:var(--bq-brand);--bq-text--primary:var(--bq-neutral-100);--bq-text--secondary:var(--bq-neutral-400);--bq-text--inverse:var(--bq-neutral-800);--bq-text--brand:var(--bq-brand);--bq-text--alt:var(--bq-white);--bq-text--info:var(--bq-brand);--bq-text--success:var(--bq-success);--bq-text--warning:var(--bq-warning);--bq-text--danger:var(--bq-danger);--bq-ui--primary:var(--bq-neutral-900);--bq-ui--secondary:var(--bq-neutral-800);--bq-ui--tertiary:var(--bq-neutral-700);--bq-ui--inverse:var(--bq-neutral-100);--bq-ui--brand:var(--bq-brand);--bq-ui--brand-alt:var(--bq-brand-dark);--bq-ui--alt:var(--bq-neutral-950);--bq-ui--success:var(--bq-success);--bq-ui--success-alt:var(--bq-success-dark);--bq-ui--warning:var(--bq-warning);--bq-ui--warning-alt:var(--bq-warning-dark);--bq-ui--danger:var(--bq-danger);--bq-ui--danger-alt:var(--bq-danger-dark);--bq-ui--info:var(--bq-brand);--bq-ui--info-alt:var(--bq-brand-dark);--bq-hover:#444546;--bq-active:#1f2026}.endava,[bq-theme=endava]{--bq-font-family:"Poppins",sans-serif;--bq-white:#fafbfb;--bq-black:#030406;--bq-neutral-50:var(--bq-endava-grey-50);--bq-neutral-100:var(--bq-endava-grey-100);--bq-neutral-200:var(--bq-endava-grey-200);--bq-neutral-300:var(--bq-endava-grey-300);--bq-neutral-400:var(--bq-endava-grey-400);--bq-neutral-500:var(--bq-endava-grey-500);--bq-neutral-600:var(--bq-endava-grey-600);--bq-neutral-700:var(--bq-endava-grey-700);--bq-neutral-800:var(--bq-endava-grey-800);--bq-neutral-900:var(--bq-endava-grey-900);--bq-neutral-950:var(--bq-endava-grey-950);--bq-neutral-1000:var(--bq-endava-grey-1000);--bq-brand-light:var(--bq-endava-orange-100);--bq-brand:var(--bq-endava-orange-600);--bq-brand-dark:var(--bq-endava-orange-1000);--bq-accent-light:var(--bq-endava-orange-100);--bq-accent:var(--bq-endava-orange-600);--bq-accent-dark:var(--bq-endava-orange-1000);--bq-success-light:var(--bq-green-100);--bq-success:var(--bq-green-600);--bq-success-dark:var(--bq-green-1000);--bq-danger-light:var(--bq-corai-100);--bq-danger:var(--bq-corai-600);--bq-danger-dark:var(--bq-corai-1000);--bq-warning-light:var(--bq-yellow-100);--bq-warning:var(--bq-yellow-600);--bq-warning-dark:var(--bq-yellow-1000);--bq-info-light:var(--bq-blue-100);--bq-info:var(--bq-blue-600);--bq-info-dark:var(--bq-blue-1000);--bq-focus:var(--bq-endava-orange-600);--bq-data-01:var(--bq-brand);--bq-data-02:#af0cd8;--bq-data-03:#0ca8d8;--bq-data-04:var(--bq-teal-600);--bq-data-05:var(--bq-yellow-600);--bq-data-06:var(--bq-orange-600);--bq-data-07:var(--bq-blue-600);--bq-data-08:var(--bq-red-600);--bq-data-09:var(--bq-purple-600);--bq-data-10:#394b56;--bq-data-11:var(--bq-black);--bq-data-12:var(--bq-white)}.endava.light,[bq-theme=endava][bq-mode=light]{--bq-background--primary:var(--bq-white);--bq-background--secondary:var(--bq-neutral-100);--bq-background--tertiary:var(--bq-neutral-200);--bq-background--alt:var(--bq-neutral-300);--bq-background--inverse:var(--bq-neutral-900);--bq-background--brand:var(--bq-brand);--bq-background--overlay:var(--bq-neutral-900);--bq-icon--primary:var(--bq-neutral-800);--bq-icon--secondary:var(--bq-neutral-600);--bq-icon--inverse:var(--bq-neutral-50);--bq-icon--brand:var(--bq-brand);--bq-icon--alt:var(--bq-white);--bq-icon--info:var(--bq-info);--bq-icon--success:var(--bq-success);--bq-icon--warning:var(--bq-warning);--bq-icon--danger:var(--bq-danger);--bq-stroke--primary:var(--bq-neutral-200);--bq-stroke--secondary:var(--bq-neutral-600);--bq-stroke--tertiary:var(--bq-neutral-900);--bq-stroke--inverse:var(--bq-white);--bq-stroke--brand:var(--bq-brand);--bq-stroke--alt:var(--bq-neutral-50);--bq-stroke--brand-alt:var(--bq-brand-light);--bq-stroke--success:var(--bq-success);--bq-stroke--warning:var(--bq-warning);--bq-stroke--danger:var(--bq-danger);--bq-stroke--info:var(--bq-info);--bq-text--primary:var(--bq-neutral-800);--bq-text--secondary:var(--bq-neutral-600);--bq-text--inverse:var(--bq-neutral-50);--bq-text--brand:var(--bq-brand);--bq-text--alt:var(--bq-white);--bq-text--info:var(--bq-info);--bq-text--success:var(--bq-success);--bq-text--warning:var(--bq-warning);--bq-text--danger:var(--bq-danger);--bq-ui--primary:var(--bq-white);--bq-ui--secondary:var(--bq-neutral-200);--bq-ui--tertiary:var(--bq-neutral-500);--bq-ui--inverse:var(--bq-neutral-900);--bq-ui--alt:var(--bq-neutral-50);--bq-ui--brand-alt:var(--bq-brand-light);--bq-ui--brand:var(--bq-brand);--bq-ui--success:var(--bq-success);--bq-ui--success-alt:var(--bq-success-light);--bq-ui--warning:var(--bq-warning);--bq-ui--warning-alt:var(--bq-warning-light);--bq-ui--danger:var(--bq-danger);--bq-ui--danger-alt:var(--bq-danger-light);--bq-ui--info:var(--bq-info);--bq-ui--info-alt:var(--bq-info-light);--bq-hover:#444546;--bq-active:#1f2026}.endava.dark,[bq-theme=endava][bq-mode=dark]{--bq-background--primary:var(--bq-neutral-1000);--bq-background--secondary:var(--bq-neutral-900);--bq-background--tertiary:var(--bq-neutral-800);--bq-background--alt:var(--bq-neutral-700);--bq-background--inverse:var(--bq-neutral-600);--bq-background--brand:var(--bq-brand);--bq-background--overlay:var(--bq-neutral-900);--bq-icon--primary:var(--bq-neutral-100);--bq-icon--secondary:var(--bq-neutral-400);--bq-icon--inverse:var(--bq-neutral-800);--bq-icon--brand:var(--bq-brand);--bq-icon--alt:var(--bq-white);--bq-icon--info:var(--bq-info);--bq-icon--success:var(--bq-success);--bq-icon--warning:var(--bq-warning);--bq-icon--danger:var(--bq-danger);--bq-stroke--primary:var(--bq-neutral-900);--bq-stroke--secondary:var(--bq-neutral-700);--bq-stroke--tertiary:var(--bq-neutral-400);--bq-stroke--inverse:var(--bq-neutral-950);--bq-stroke--brand:var(--bq-brand);--bq-stroke--brand-alt:var(--bq-brand-dark);--bq-stroke--alt:var(--bq-neutral-1000);--bq-stroke--success:var(--bq-success);--bq-stroke--warning:var(--bq-warning);--bq-stroke--danger:var(--bq-danger);--bq-stroke--info:var(--bq-info);--bq-text--primary:var(--bq-neutral-100);--bq-text--secondary:var(--bq-neutral-400);--bq-text--inverse:var(--bq-neutral-800);--bq-text--brand:var(--bq-brand);--bq-text--alt:var(--bq-neutral-white);--bq-text--info:var(--bq-info);--bq-text--success:var(--bq-success);--bq-text--warning:var(--bq-warning);--bq-text--danger:var(--bq-danger);--bq-ui--primary:var(--bq-neutral-900);--bq-ui--secondary:var(--bq-neutral-800);--bq-ui--tertiary:var(--bq-neutral-700);--bq-ui--inverse:var(--bq-neutral-100);--bq-ui--brand:var(--bq-brand);--bq-ui--brand-alt:var(--bq-brand-dark);--bq-ui--alt:var(--bq-neutral-950);--bq-ui--success:var(--bq-success);--bq-ui--success-alt:var(--bq-success-dark);--bq-ui--warning:var(--bq-warning);--bq-ui--warning-alt:var(--bq-warning-dark);--bq-ui--danger:var(--bq-danger);--bq-ui--danger-alt:var(--bq-danger-dark);--bq-ui--info:var(--bq-info);--bq-ui--info-alt:var(--bq-info-dark);--bq-hover:#444546;--bq-active:#1f2026}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.pointer-events-auto{pointer-events:auto}.box-content{box-sizing:content-box}.block{display:block}.size-\\[--bq-slider--thumb-size\\]{height:var(--bq-slider--thumb-size);width:var(--bq-slider--thumb-size)}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.appearance-none{appearance:none}.rounded-full{border-radius:var(--bq-radius--full)}.border-m{border-width:var(--bq-stroke-m)}.border-solid{border-style:solid}.border-stroke-brand{border-color:var(--bq-stroke--brand)}.transition-\\[background-color\\2c border-color\\2c box-shadow\\]{transition-duration:.15s;transition-property:background-color,border-color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-300{transition-duration:.3s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.bg-active-ui-brand{background-color:color-mix(in srgb,var(--bq-ui--brand),var(--bq-active) 20%)}.border-active-stroke-brand{border-color:color-mix(in srgb,var(--bq-stroke--brand),var(--bq-active) 20%)}.border-hover-stroke-brand{border-color:color-mix(in srgb,var(--bq-stroke--brand),var(--bq-hover) 20%)}.is-full{inline-size:100%}.focus{outline:var(--bq-ring-width,2px) solid var(--bq-ring-color-focus,var(--bq-focus));outline-offset:var(--bq-ring-offset-width,1px)}.thumb{appearance:none;background-color:var(--bq-ui--primary);border-color:var(--bq-stroke--brand);border-radius:var(--bq-radius--full);border-style:solid;border-width:var(--bq-stroke-m);box-sizing:content-box;cursor:pointer;height:var(--bq-slider--thumb-size);pointer-events:auto;transition-duration:.3s;transition-property:background-color,border-color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--bq-slider--thumb-size)}.thumb-focus{outline:var(--bq-ring-width,2px) solid var(--bq-ring-color-focus,var(--bq-focus));outline-offset:var(--bq-ring-offset-width,1px)}.thumb-hover{border-color:color-mix(in srgb,var(--bq-stroke--brand),var(--bq-hover) 20%)}.thumb-active{background-color:color-mix(in srgb,var(--bq-ui--brand),var(--bq-active) 20%);border-color:color-mix(in srgb,var(--bq-stroke--brand),var(--bq-active) 20%);cursor:grabbing}@-webkit-keyframes fade-in{0%{opacity:0}}@keyframes fade-in{0%{opacity:0}}@-webkit-keyframes slide-in{0%{-webkit-transform:translateY(10px);transform:translateY(10px)}}@keyframes slide-in{0%{-webkit-transform:translateY(10px);transform:translateY(10px)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}:host{--bq-slider--size:4px;--bq-slider--border-radius:var(--bq-radius--xs);--bq-slider--thumb-size:13px;--bq-slider--progress-color:var(--bq-ui--brand);--bq-slider--trackarea-color:var(--bq-ui--secondary);display:block;inline-size:100%}input[type=range]::-webkit-slider-thumb{appearance:none;background-color:var(--bq-ui--primary);border-color:var(--bq-stroke--brand);border-radius:var(--bq-radius--full);border-style:solid;border-width:var(--bq-stroke-m);box-sizing:content-box;cursor:pointer;height:var(--bq-slider--thumb-size);pointer-events:auto;transition-duration:.3s;transition-property:background-color,border-color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--bq-slider--thumb-size)}input[type=range]::-webkit-slider-runnable-track{transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,1,1)}input[type=range]:focus-visible::-webkit-slider-thumb{outline:var(--bq-ring-width,2px) solid var(--bq-ring-color-focus,var(--bq-focus));outline-offset:var(--bq-ring-offset-width,1px)}input[type=range]:hover::-webkit-slider-thumb{border-color:color-mix(in srgb,var(--bq-stroke--brand),var(--bq-hover) 20%)}input[type=range]:active::-webkit-slider-thumb{background-color:color-mix(in srgb,var(--bq-ui--brand),var(--bq-active) 20%);border-color:color-mix(in srgb,var(--bq-stroke--brand),var(--bq-active) 20%);cursor:grabbing}input[type=range][disabled]::-webkit-slider-thumb{cursor:not-allowed}input[type=range]::-moz-range-thumb{appearance:none;background-color:var(--bq-ui--primary);border-color:var(--bq-stroke--brand);border-radius:var(--bq-radius--full);border-style:solid;border-width:var(--bq-stroke-m);box-sizing:content-box;cursor:pointer;height:var(--bq-slider--thumb-size);pointer-events:auto;transition-duration:.3s;transition-property:background-color,border-color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--bq-slider--thumb-size)}input[type=range]::-moz-range-track{transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,1,1)}input[type=range]:focus-visible::-moz-range-thumb{outline:var(--bq-ring-width,2px) solid var(--bq-ring-color-focus,var(--bq-focus));outline-offset:var(--bq-ring-offset-width,1px)}input[type=range]:hover::-moz-range-thumb{border-color:color-mix(in srgb,var(--bq-stroke--brand),var(--bq-hover) 20%)}input[type=range]:active::-moz-range-thumb{background-color:color-mix(in srgb,var(--bq-ui--brand),var(--bq-active) 20%);border-color:color-mix(in srgb,var(--bq-stroke--brand),var(--bq-active) 20%);cursor:grabbing}input[type=range][disabled]::-moz-range-thumb{cursor:not-allowed}.-translate-y-1\\/2{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.pointer-events-none{pointer-events:none}.static{position:static}.absolute{position:absolute}.relative{position:relative}.start-0{inset-inline-start:0}.me-xs{margin-inline-end:var(--bq-spacing-xs)}.ms-xs{margin-inline-start:var(--bq-spacing-xs)}.flex{display:flex}.hidden{display:none}.rounded-xs{border-radius:var(--bq-radius--xs)}.bg-\\[--bq-slider--progress-color\\]{background-color:var(--bq-slider--progress-color)}.bg-\\[--bq-slider--trackarea-color\\]{background-color:var(--bq-slider--trackarea-color)}.bg-transparent{background-color:transparent}.text-start{text-align:start}.text-end{text-align:end}.text-s{font-size:var(--bq-font-size--s)}.font-medium{font-weight:var(--bq-font-weight--medium)}.leading-regular{line-height:var(--bq-font-line-height--regular)}.text-text-primary{color:var(--bq-text--primary)}.opacity-60{opacity:.6}.outline-none{outline:2px solid transparent;outline-offset:2px}.bs-1{block-size:.25rem}.is-1{inline-size:.25rem}.is-\\[50\\%\\]{inline-size:50%}.is-fit{inline-size:fit-content}.min-is-8{min-inline-size:2rem}.inset-bs-\\[50\\%\\]{inset-block-start:50%}.\\[font-variant\\:tabular-nums\\]{font-variant:tabular-nums}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.\\[\\&\\:\\:part\\(panel\\)\\]\\:absolute::part(panel){position:absolute}.visible{visibility:visible}.fixed{position:fixed}';
18
+
19
+ const q = o;
20
+
21
+ const d = class {
22
+ constructor(b) {
23
+ r(this, b);
24
+ this.bqChange = a(this, "bqChange", 7);
25
+ this.bqBlur = a(this, "bqBlur", 7);
26
+ this.bqFocus = a(this, "bqFocus", 7);
27
+ // Listeners
28
+ // ==============
29
+ // Public methods API
30
+ // These methods are exposed on the host element.
31
+ // Always use two lines.
32
+ // Public Methods must be async.
33
+ // Requires JSDocs for public API documentation.
34
+ // ===============================================
35
+ // Local methods
36
+ // Internal business logic.
37
+ // These methods cannot be called from the host element.
38
+ // =======================================================
39
+ this.runUpdates = () => {
40
+ this.updateProgressTrack();
41
+ this.syncInputsValue();
42
+ this.setThumbPosition();
43
+ };
44
+ this.setState = r => {
45
+ const a = this.isRangeType;
46
+ const e = this.stringToObject(r);
47
+ this.minValue = a ? t(e[0], this.min, this.max - this.gap) : e;
48
+ this.maxValue = a ? t(e[1], this.minValue + this.gap, this.max) : this.minValue;
49
+ };
50
+ this.setThumbPosition = () => {
51
+ if (!this.enableTooltip) return;
52
+ // Destructure the returned object from this.thumbPosition() and assign the properties to this.minThumbPosition and this.maxThumbPosition
53
+ ({minThumbPosition: this.minThumbPosition, maxThumbPosition: this.maxThumbPosition} = this.thumbPosition());
54
+ };
55
+ this.syncInputsValue = () => {
56
+ var r, a;
57
+ (r = this.inputMinElem) === null || r === void 0 ? void 0 : r.setAttribute("value", this.minValue.toString());
58
+ (a = this.inputMaxElem) === null || a === void 0 ? void 0 : a.setAttribute("value", this.maxValue.toString());
59
+ };
60
+ this.stringToObject = r => s(r) ? JSON.parse(r) : r;
61
+ this.handleInputChange = (r, a) => {
62
+ const e = a.target;
63
+ const b = parseFloat(e.value);
64
+ if (r === "min") {
65
+ this.minValue = this.isRangeType ? Math.min(b, this.maxValue - this.gap) : b;
66
+ } else if (r === "max") {
67
+ this.maxValue = this.isRangeType ? Math.max(b, this.minValue + this.gap) : b;
68
+ }
69
+ // Update the input value to reflect the clamped value
70
+ const t = (r === "min" ? this.minValue : this.maxValue).toString();
71
+ e.value = t;
72
+ e.setAttribute("value", t);
73
+ // Sync the prop value.
74
+ // This will trigger the `@Watch('value')` method and emit the `bqChange` event.
75
+ this.value = this.isRangeType ? [ this.minValue, this.maxValue ] : this.minValue;
76
+ };
77
+ this.calculatePercent = r => {
78
+ const a = Number(this.max) - Number(this.min);
79
+ return r / a * 100;
80
+ };
81
+ this.updateProgressTrack = () => {
82
+ if (!this.progressElem) return;
83
+ // For range type, left starts from the `min` value and width is the difference between `max` and `min`.
84
+ // For non-range type, left starts from 0 and width is the `min` value.
85
+ const r = this.isRangeType ? this.calculatePercent(this.minValue) : 0;
86
+ const a = this.isRangeType ? this.calculatePercent(Number(this.maxValue) - Number(this.minValue)) : this.calculatePercent(this.minValue);
87
+ this.progressElem.style.insetInlineStart = `${r}%`;
88
+ this.progressElem.style.inlineSize = `${a}%`;
89
+ };
90
+ this.calculateThumbPosition = r => {
91
+ if (!this.progressElem) return;
92
+ // Get the width of the track area and the size of the input range thumb
93
+ const a = this.trackElem.getBoundingClientRect().width;
94
+ // We need to also add 4px to the thumb size,
95
+ // this is because the thumb is 2px border (`border-m`)
96
+ const e = parseInt(getComputedStyle(this.el).getPropertyValue("--bq-slider--thumb-size"), 10) + 4;
97
+ const b = a - e;
98
+ return (r - this.min) / (this.max - this.min) * b + e / 2;
99
+ };
100
+ this.thumbPosition = () => {
101
+ const r = this.calculateThumbPosition(this.minValue);
102
+ const a = this.isRangeType ? this.calculateThumbPosition(this.maxValue) : undefined;
103
+ return {
104
+ minThumbPosition: r,
105
+ maxThumbPosition: a
106
+ };
107
+ };
108
+ this.emitBqChange = () => {
109
+ var r;
110
+ (r = this.debounceBqChange) === null || r === void 0 ? void 0 : r.cancel();
111
+ const a = this.isRangeType ? [ this.minValue, this.maxValue ] : this.minValue;
112
+ this.debounceBqChange = i((() => this.bqChange.emit({
113
+ value: a,
114
+ el: this.el
115
+ })), this.debounceTime);
116
+ this.debounceBqChange();
117
+ };
118
+ this.handleBlur = () => {
119
+ this.bqBlur.emit(this.el);
120
+ };
121
+ this.handleFocus = () => {
122
+ this.bqFocus.emit(this.el);
123
+ };
124
+ this.handleMouseDown = r => {
125
+ this.handleTooltipVisibility(r, "remove");
126
+ };
127
+ this.handleMouseUp = r => {
128
+ this.handleTooltipVisibility(r, "add");
129
+ };
130
+ this.handleTooltipVisibility = (r, a) => {
131
+ if (!this.enableTooltip || this.tooltipAlwaysVisible) return;
132
+ const e = r.target;
133
+ const b = e === this.inputMinElem ? this.minTooltipElem : this.maxTooltipElem;
134
+ b.classList[a]("hidden");
135
+ };
136
+ this.renderLabel = (r, a, b) => e("span", {
137
+ class: {
138
+ [`${b} box-content block text-s font-medium leading-regular text-text-primary is-fit min-is-8 [font-variant:tabular-nums]`]: true,
139
+ hidden: a === "start" ? !this.enableValueIndicator : !this.enableValueIndicator || !this.isRangeType
140
+ },
141
+ part: `label-${a}`
142
+ }, r.toFixed(this.decimalCount));
143
+ this.renderInput = (r, a, b) => {
144
+ // Determine the zIndex value based on the type and the current min and max values.
145
+ const zIndexValue = r => {
146
+ const a = {
147
+ min: this.minValue === this.min && this.maxValue === this.minValue,
148
+ max: this.maxValue === this.max && this.minValue === this.maxValue
149
+ };
150
+ // If the value of both thumbs is the same as the min or max value, set the zIndex to -1
151
+ return a[r] ? "-1" : "0";
152
+ };
153
+ return e("input", {
154
+ type: "range",
155
+ class: {
156
+ "absolute start-0 -translate-y-1/2 cursor-pointer appearance-none bg-transparent outline-none is-full inset-bs-[50%] disabled:cursor-not-allowed": true,
157
+ "pointer-events-none": this.isRangeType
158
+ },
159
+ style: this.isRangeType ? {
160
+ zIndex: zIndexValue(r)
161
+ } : undefined,
162
+ disabled: this.disabled,
163
+ min: this.min,
164
+ max: this.max,
165
+ step: this.step,
166
+ ref: b,
167
+ onInput: a => this.handleInputChange(r, a),
168
+ onBlur: this.handleBlur,
169
+ onFocus: this.handleFocus,
170
+ onMouseDown: this.handleMouseDown,
171
+ onMouseUp: this.handleMouseUp,
172
+ value: a,
173
+ part: `input-${r}`
174
+ });
175
+ };
176
+ this.renderTooltip = (r, a, b) => e("bq-tooltip", {
177
+ class: {
178
+ "absolute [&::part(panel)]:absolute": true,
179
+ hidden: !this.isTooltipAlwaysVisible
180
+ },
181
+ exportparts: "base,trigger,panel",
182
+ alwaysVisible: true,
183
+ distance: this.enableValueIndicator ? 6 : 16,
184
+ style: {
185
+ insetInlineStart: `${a}px`,
186
+ fontVariant: "tabular-nums"
187
+ },
188
+ ref: b
189
+ }, e("div", {
190
+ class: "absolute bs-1 is-1",
191
+ slot: "trigger"
192
+ }), r.toFixed(this.decimalCount));
193
+ this.minValue = undefined;
194
+ this.maxValue = undefined;
195
+ this.minThumbPosition = undefined;
196
+ this.maxThumbPosition = undefined;
197
+ this.debounceTime = 0;
198
+ this.disabled = false;
199
+ this.enableValueIndicator = false;
200
+ this.gap = 0;
201
+ this.max = 100;
202
+ this.min = 0;
203
+ this.step = 1;
204
+ this.type = "single";
205
+ this.value = undefined;
206
+ this.enableTooltip = false;
207
+ this.tooltipAlwaysVisible = false;
208
+ }
209
+ // Prop lifecycle events
210
+ // =======================
211
+ handleValuePropChange(r) {
212
+ this.setState(r);
213
+ this.emitBqChange();
214
+ }
215
+ handleStepPropChange() {
216
+ this.minValue = Math.round(this.minValue / this.step) * this.step;
217
+ this.maxValue = Math.round(this.maxValue / this.step) * this.step;
218
+ }
219
+ handleGapChange(r) {
220
+ if (!this.isRangeType) return;
221
+ // Use the this.value prop value when the component is initialized
222
+ // Otherwise, use the current this.min and this.max state values
223
+ const a = !n(this.min) && !n(this.max) ? [ this.min, this.max ] : this.stringToObject(this.value);
224
+ // If the gap is less than the min or greater than the max, set it to 0
225
+ this.gap = r < a[0] || r > a[1] ? 0 : r;
226
+ }
227
+ // Component lifecycle events
228
+ // Ordered by their natural call order
229
+ // =====================================
230
+ connectedCallback() {
231
+ this.handleGapChange(this.gap);
232
+ this.setState(this.value);
233
+ this.handleStepPropChange();
234
+ }
235
+ componentDidLoad() {
236
+ this.runUpdates();
237
+ }
238
+ componentDidUpdate() {
239
+ this.runUpdates();
240
+ }
241
+ get decimalCount() {
242
+ // Return the length of the decimal part of the step value.
243
+ return (this.step % 1).toFixed(10).split(".")[1].replace(/0+$/, "").length;
244
+ }
245
+ get isRangeType() {
246
+ return this.type === "range";
247
+ }
248
+ get isTooltipAlwaysVisible() {
249
+ return this.tooltipAlwaysVisible && this.enableTooltip;
250
+ }
251
+ // render() function
252
+ // Always the last one in the class.
253
+ // ===================================
254
+ render() {
255
+ return e("div", {
256
+ key: "e5cc501e43ecb6b226dfc155a8cdd2695d321e82",
257
+ "aria-disabled": this.disabled ? "true" : "false",
258
+ class: {
259
+ "flex is-full": true,
260
+ "cursor-not-allowed opacity-60": this.disabled
261
+ },
262
+ part: "base"
263
+ }, this.renderLabel(this.minValue, "start", "me-xs text-end"), e("div", {
264
+ key: "8981fe81b253e935b9768b10bc4a7b1e8094be61",
265
+ class: "relative is-full",
266
+ part: "container"
267
+ }, e("span", {
268
+ key: "bda764fef71c4fa0fa8ef5b2ae2eac7abb5010ea",
269
+ class: "absolute start-0 -translate-y-1/2 rounded-xs bg-[--bq-slider--trackarea-color] bs-1 is-full inset-bs-[50%]",
270
+ ref: r => this.trackElem = r,
271
+ part: "track-area"
272
+ }), e("span", {
273
+ key: "fb6871c348b5b41b29f9be40cd5c449a405e281c",
274
+ class: "absolute -translate-y-1/2 rounded-xs bg-[--bq-slider--progress-color] bs-1 is-[50%] inset-bs-[50%]",
275
+ ref: r => this.progressElem = r,
276
+ part: "progress-area"
277
+ }), this.enableTooltip && this.renderTooltip(this.minValue, this.minThumbPosition, (r => this.minTooltipElem = r)), this.renderInput("min", this.minValue, (r => this.inputMinElem = r)), this.enableTooltip && this.isRangeType && this.renderTooltip(this.maxValue, this.maxThumbPosition, (r => this.maxTooltipElem = r)), this.isRangeType && this.renderInput("max", this.maxValue, (r => this.inputMaxElem = r))), this.renderLabel(this.maxValue, "end", "ms-xs text-start"));
278
+ }
279
+ static get delegatesFocus() {
280
+ return true;
281
+ }
282
+ get el() {
283
+ return b(this);
284
+ }
285
+ static get watchers() {
286
+ return {
287
+ value: [ "handleValuePropChange" ],
288
+ step: [ "handleStepPropChange" ],
289
+ gap: [ "handleGapChange" ]
290
+ };
291
+ }
292
+ };
293
+
294
+ d.style = q;
295
+
296
+ export { d as bq_slider };
297
+ //# sourceMappingURL=p-0979fdfd.entry.js.map