@salla.sa/twilight-components 2.14.577 → 2.14.579

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 (341) hide show
  1. package/dist/cjs/{catalog-recommendations-HZzTK7-G.js → catalog-recommendations-Bxs1t6wk.js} +16 -1
  2. package/dist/cjs/{filepond-iflxa4A5.js → filepond-DBIghBBz.js} +1 -1
  3. package/dist/cjs/{filepond-plugin-file-poster-NZ84xlKh.js → filepond-plugin-file-poster-D9QbEXdw.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-validate-size-m8Z_JlZX.js → filepond-plugin-file-validate-size-CcTLgsV2.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-file-validate-type-BfF6LYAT.js → filepond-plugin-file-validate-type-wroI9jAT.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-image-edit-DfRJ3iRj.js → filepond-plugin-image-edit-DvJ0qDXd.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-exif-orientation-BZxYZai-.js → filepond-plugin-image-exif-orientation-Tv2WgHma.js} +1 -1
  8. package/dist/cjs/{filepond-plugin-image-preview-BQ7HvH2d.js → filepond-plugin-image-preview-Bkcpwdkp.js} +1 -1
  9. package/dist/cjs/{index-CSe-ijAV.js → index-Brycy0hH.js} +3 -3
  10. package/dist/cjs/{intlTelInput-DHfYz8vv.js → intlTelInput-BnpKZAn8.js} +1 -1
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
  13. package/dist/cjs/salla-accordion_6.cjs.entry.js +1 -1
  14. package/dist/cjs/salla-add-product-button_5.cjs.entry.js +14 -3
  15. package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
  16. package/dist/cjs/salla-alert_2.cjs.entry.js +1 -1
  17. package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
  18. package/dist/cjs/salla-applied-filters.cjs.entry.js +1 -1
  19. package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
  20. package/dist/cjs/salla-attachment-view_9.cjs.entry.js +10 -10
  21. package/dist/cjs/salla-badge.cjs.entry.js +1 -1
  22. package/dist/cjs/salla-basket-gap.cjs.entry.js +83 -5
  23. package/dist/cjs/salla-bullet-delivery_3.cjs.entry.js +1 -1
  24. package/dist/cjs/salla-cart-coupons.cjs.entry.js +1 -1
  25. package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +1 -1
  26. package/dist/cjs/salla-cart-summary-card.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
  28. package/dist/cjs/salla-comment-factors.cjs.entry.js +1 -1
  29. package/dist/cjs/salla-comment-form_9.cjs.entry.js +1 -1
  30. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  31. package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
  32. package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-count-down.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-delivery-promise.cjs.entry.js +1 -1
  36. package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
  37. package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
  38. package/dist/cjs/salla-filters.cjs.entry.js +1 -1
  39. package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
  40. package/dist/cjs/salla-gift-card-redeem.cjs.entry.js +1 -1
  41. package/dist/cjs/salla-gifting.cjs.entry.js +1 -1
  42. package/dist/cjs/salla-hook.cjs.entry.js +1 -1
  43. package/dist/cjs/salla-infinite-scroll.cjs.entry.js +1 -1
  44. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  45. package/dist/cjs/salla-list-tile.cjs.entry.js +1 -1
  46. package/dist/cjs/salla-localization-modal.cjs.entry.js +1 -1
  47. package/dist/cjs/salla-login-modal.cjs.entry.js +1 -1
  48. package/dist/cjs/salla-loyalty-banner_10.cjs.entry.js +1 -1
  49. package/dist/cjs/salla-loyalty-exchange-product-card.cjs.entry.js +1 -1
  50. package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
  51. package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +1 -1
  52. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  53. package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
  54. package/dist/cjs/salla-maintenance-alert.cjs.entry.js +1 -1
  55. package/dist/cjs/salla-map_3.cjs.entry.js +1 -1
  56. package/dist/cjs/salla-menu.cjs.entry.js +1 -1
  57. package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
  58. package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +1 -1
  59. package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +1 -1
  60. package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +1 -1
  61. package/dist/cjs/salla-next-order-coupon.cjs.entry.js +1 -1
  62. package/dist/cjs/salla-notification-item_2.cjs.entry.js +1 -1
  63. package/dist/cjs/salla-offer-modal.cjs.entry.js +1 -1
  64. package/dist/cjs/salla-offer.cjs.entry.js +1 -1
  65. package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
  66. package/dist/cjs/salla-order-cancel.cjs.entry.js +1 -1
  67. package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
  68. package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
  69. package/dist/cjs/salla-order-details.cjs.entry.js +1 -1
  70. package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
  71. package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +1 -1
  72. package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
  73. package/dist/cjs/salla-order-options-modal.cjs.entry.js +1 -1
  74. package/dist/cjs/salla-order-shipments.cjs.entry.js +1 -1
  75. package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
  76. package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
  77. package/dist/cjs/salla-orders.cjs.entry.js +1 -1
  78. package/dist/cjs/salla-payments.cjs.entry.js +1 -1
  79. package/dist/cjs/salla-placeholder.cjs.entry.js +1 -1
  80. package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
  81. package/dist/cjs/salla-product-card-embed.cjs.entry.js +1 -1
  82. package/dist/cjs/salla-product-card.cjs.entry.js +1 -1
  83. package/dist/cjs/salla-product-size-guide.cjs.entry.js +1 -1
  84. package/dist/cjs/salla-products-list.cjs.entry.js +1 -1
  85. package/dist/cjs/salla-products-slider.cjs.entry.js +1 -1
  86. package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
  87. package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +1 -1
  88. package/dist/cjs/salla-rating-modal.cjs.entry.js +1 -1
  89. package/dist/cjs/salla-review-factors-tags.cjs.entry.js +1 -1
  90. package/dist/cjs/salla-review-order-item.cjs.entry.js +1 -1
  91. package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
  92. package/dist/cjs/salla-search-product-card.cjs.entry.js +1 -1
  93. package/dist/cjs/salla-search.cjs.entry.js +1 -1
  94. package/dist/cjs/salla-skeleton.cjs.entry.js +1 -1
  95. package/dist/cjs/salla-social-share.cjs.entry.js +1 -1
  96. package/dist/cjs/salla-social.cjs.entry.js +1 -1
  97. package/dist/cjs/salla-tab-content_3.cjs.entry.js +1 -1
  98. package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
  99. package/dist/cjs/salla-tooltip.cjs.entry.js +1 -1
  100. package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
  101. package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
  102. package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
  103. package/dist/cjs/salla-user-settings.cjs.entry.js +1 -1
  104. package/dist/cjs/salla-verify.cjs.entry.js +1 -1
  105. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  106. package/dist/cjs/salla-wishlist-actions.cjs.entry.js +1 -1
  107. package/dist/cjs/salla-wishlist-summary.cjs.entry.js +1 -1
  108. package/dist/cjs/twilight.cjs.js +1 -1
  109. package/dist/cjs/{vanilla-picker-Brk9Mb54.js → vanilla-picker-DoQGicjv.js} +1 -1
  110. package/dist/collection/components/salla-basket-gap/salla-basket-gap.js +81 -3
  111. package/dist/collection/components/salla-bought-together/salla-bought-together.js +12 -1
  112. package/dist/collection/shared/catalog-recommendations.js +16 -1
  113. package/dist/components/catalog-recommendations.js +16 -1
  114. package/dist/components/index.js +3 -3
  115. package/dist/components/salla-basket-gap.js +81 -3
  116. package/dist/components/salla-bought-together.js +12 -1
  117. package/dist/esm/{catalog-recommendations-CRW60UDr.js → catalog-recommendations-DIAyA5MP.js} +16 -1
  118. package/dist/esm/{filepond-plugin-file-poster-CHpnwHYe.js → filepond-plugin-file-poster-ifZZJbSt.js} +1 -1
  119. package/dist/esm/{filepond-plugin-file-validate-size-BwHBxxMg.js → filepond-plugin-file-validate-size-Di-mYkQm.js} +1 -1
  120. package/dist/esm/{filepond-plugin-file-validate-type-BD-yTEPO.js → filepond-plugin-file-validate-type-CvQPSQLD.js} +1 -1
  121. package/dist/esm/{filepond-plugin-image-edit-DKc0Yw10.js → filepond-plugin-image-edit-BwN5C4U-.js} +1 -1
  122. package/dist/esm/{filepond-plugin-image-exif-orientation-CepmNFGF.js → filepond-plugin-image-exif-orientation-DskcwcEc.js} +1 -1
  123. package/dist/esm/{filepond-plugin-image-preview-FhnzagMd.js → filepond-plugin-image-preview-CNRRNBsw.js} +1 -1
  124. package/dist/esm/{filepond-Qm94dFPs.js → filepond-uH9_9tud.js} +1 -1
  125. package/dist/esm/{index-BAXTlrSC.js → index-Cv0bGFJf.js} +3 -3
  126. package/dist/esm/{intlTelInput-BJlOPJYY.js → intlTelInput-U4fk8hXD.js} +1 -1
  127. package/dist/esm/loader.js +2 -2
  128. package/dist/esm/salla-accordion-body_2.entry.js +1 -1
  129. package/dist/esm/salla-accordion_6.entry.js +1 -1
  130. package/dist/esm/salla-add-product-button_5.entry.js +14 -3
  131. package/dist/esm/salla-advertisement.entry.js +1 -1
  132. package/dist/esm/salla-alert_2.entry.js +1 -1
  133. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  134. package/dist/esm/salla-applied-filters.entry.js +1 -1
  135. package/dist/esm/salla-apps-icons.entry.js +1 -1
  136. package/dist/esm/salla-attachment-view_9.entry.js +10 -10
  137. package/dist/esm/salla-badge.entry.js +1 -1
  138. package/dist/esm/salla-basket-gap.entry.js +83 -5
  139. package/dist/esm/salla-bullet-delivery_3.entry.js +1 -1
  140. package/dist/esm/salla-cart-coupons.entry.js +1 -1
  141. package/dist/esm/salla-cart-item-offers_2.entry.js +1 -1
  142. package/dist/esm/salla-cart-summary-card.entry.js +1 -1
  143. package/dist/esm/salla-cashback-banner.entry.js +1 -1
  144. package/dist/esm/salla-comment-factors.entry.js +1 -1
  145. package/dist/esm/salla-comment-form_9.entry.js +1 -1
  146. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  147. package/dist/esm/salla-contacts.entry.js +1 -1
  148. package/dist/esm/salla-cookies-bar.entry.js +1 -1
  149. package/dist/esm/salla-count-down.entry.js +1 -1
  150. package/dist/esm/salla-custom-fields.entry.js +1 -1
  151. package/dist/esm/salla-delivery-promise.entry.js +1 -1
  152. package/dist/esm/salla-edit-order-button.entry.js +1 -1
  153. package/dist/esm/salla-filters-widget.entry.js +1 -1
  154. package/dist/esm/salla-filters.entry.js +1 -1
  155. package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
  156. package/dist/esm/salla-gift-card-redeem.entry.js +1 -1
  157. package/dist/esm/salla-gifting.entry.js +1 -1
  158. package/dist/esm/salla-hook.entry.js +1 -1
  159. package/dist/esm/salla-infinite-scroll.entry.js +1 -1
  160. package/dist/esm/salla-installment.entry.js +1 -1
  161. package/dist/esm/salla-list-tile.entry.js +1 -1
  162. package/dist/esm/salla-localization-modal.entry.js +1 -1
  163. package/dist/esm/salla-login-modal.entry.js +1 -1
  164. package/dist/esm/salla-loyalty-banner_10.entry.js +1 -1
  165. package/dist/esm/salla-loyalty-exchange-product-card.entry.js +1 -1
  166. package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
  167. package/dist/esm/salla-loyalty-points-history.entry.js +1 -1
  168. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  169. package/dist/esm/salla-loyalty.entry.js +1 -1
  170. package/dist/esm/salla-maintenance-alert.entry.js +1 -1
  171. package/dist/esm/salla-map_3.entry.js +1 -1
  172. package/dist/esm/salla-menu.entry.js +1 -1
  173. package/dist/esm/salla-metadata.entry.js +1 -1
  174. package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +1 -1
  175. package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +1 -1
  176. package/dist/esm/salla-multiple-bundle-product.entry.js +1 -1
  177. package/dist/esm/salla-next-order-coupon.entry.js +1 -1
  178. package/dist/esm/salla-notification-item_2.entry.js +1 -1
  179. package/dist/esm/salla-offer-modal.entry.js +1 -1
  180. package/dist/esm/salla-offer.entry.js +1 -1
  181. package/dist/esm/salla-order-branch.entry.js +1 -1
  182. package/dist/esm/salla-order-cancel.entry.js +1 -1
  183. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  184. package/dist/esm/salla-order-details-options.entry.js +1 -1
  185. package/dist/esm/salla-order-details.entry.js +1 -1
  186. package/dist/esm/salla-order-edit-item.entry.js +1 -1
  187. package/dist/esm/salla-order-edit-product-card.entry.js +1 -1
  188. package/dist/esm/salla-order-edit.entry.js +1 -1
  189. package/dist/esm/salla-order-options-modal.entry.js +1 -1
  190. package/dist/esm/salla-order-shipments.entry.js +1 -1
  191. package/dist/esm/salla-order-summary.entry.js +1 -1
  192. package/dist/esm/salla-order-totals-card.entry.js +1 -1
  193. package/dist/esm/salla-orders.entry.js +1 -1
  194. package/dist/esm/salla-payments.entry.js +1 -1
  195. package/dist/esm/salla-placeholder.entry.js +1 -1
  196. package/dist/esm/salla-price-range.entry.js +1 -1
  197. package/dist/esm/salla-product-card-embed.entry.js +1 -1
  198. package/dist/esm/salla-product-card.entry.js +1 -1
  199. package/dist/esm/salla-product-size-guide.entry.js +1 -1
  200. package/dist/esm/salla-products-list.entry.js +1 -1
  201. package/dist/esm/salla-products-slider.entry.js +1 -1
  202. package/dist/esm/salla-quick-order.entry.js +1 -1
  203. package/dist/esm/salla-rating-modal-v2.entry.js +1 -1
  204. package/dist/esm/salla-rating-modal.entry.js +1 -1
  205. package/dist/esm/salla-review-factors-tags.entry.js +1 -1
  206. package/dist/esm/salla-review-order-item.entry.js +1 -1
  207. package/dist/esm/salla-scopes.entry.js +1 -1
  208. package/dist/esm/salla-search-product-card.entry.js +1 -1
  209. package/dist/esm/salla-search.entry.js +1 -1
  210. package/dist/esm/salla-skeleton.entry.js +1 -1
  211. package/dist/esm/salla-social-share.entry.js +1 -1
  212. package/dist/esm/salla-social.entry.js +1 -1
  213. package/dist/esm/salla-tab-content_3.entry.js +1 -1
  214. package/dist/esm/salla-tiered-offer.entry.js +1 -1
  215. package/dist/esm/salla-tooltip.entry.js +1 -1
  216. package/dist/esm/salla-trust-badges.entry.js +1 -1
  217. package/dist/esm/salla-user-menu.entry.js +1 -1
  218. package/dist/esm/salla-user-profile.entry.js +1 -1
  219. package/dist/esm/salla-user-settings.entry.js +1 -1
  220. package/dist/esm/salla-verify.entry.js +1 -1
  221. package/dist/esm/salla-wallet.entry.js +1 -1
  222. package/dist/esm/salla-wishlist-actions.entry.js +1 -1
  223. package/dist/esm/salla-wishlist-summary.entry.js +1 -1
  224. package/dist/esm/twilight.js +2 -2
  225. package/dist/esm/{vanilla-picker-C_cY41gl.js → vanilla-picker-CsYJ2Gx8.js} +1 -1
  226. package/dist/twilight/{p-ce1d3ad9.entry.js → p-00e10a64.entry.js} +1 -1
  227. package/dist/twilight/{p-ab3ad37f.entry.js → p-00ff9799.entry.js} +1 -1
  228. package/dist/twilight/{p-7f3e110c.entry.js → p-01339b84.entry.js} +1 -1
  229. package/dist/twilight/{p-10a68a21.entry.js → p-01af3487.entry.js} +1 -1
  230. package/dist/twilight/{p-1fbb0b22.entry.js → p-02a96323.entry.js} +1 -1
  231. package/dist/twilight/{p-e0d834a7.entry.js → p-04e7c9af.entry.js} +1 -1
  232. package/dist/twilight/{p-9e054110.entry.js → p-04fd3d15.entry.js} +1 -1
  233. package/dist/twilight/{p-a79c04a2.entry.js → p-07e0bad0.entry.js} +1 -1
  234. package/dist/twilight/{p-08cedab0.entry.js → p-0c188a09.entry.js} +1 -1
  235. package/dist/twilight/{p-cc1b3318.entry.js → p-0db0b088.entry.js} +1 -1
  236. package/dist/twilight/{p-7d08dcfb.entry.js → p-100831b8.entry.js} +1 -1
  237. package/dist/twilight/{p-6bfe12d5.entry.js → p-10e4fc53.entry.js} +1 -1
  238. package/dist/twilight/{p-abc3e5d5.entry.js → p-1523f751.entry.js} +1 -1
  239. package/dist/twilight/{p-e4ff7a77.entry.js → p-16bc5fe2.entry.js} +1 -1
  240. package/dist/twilight/{p-9920bbad.entry.js → p-174453fd.entry.js} +1 -1
  241. package/dist/twilight/{p-80302c52.entry.js → p-175e00a9.entry.js} +1 -1
  242. package/dist/twilight/{p-1fd6a10e.entry.js → p-1870aa20.entry.js} +1 -1
  243. package/dist/twilight/{p-d3cf9f8a.entry.js → p-18cc0497.entry.js} +1 -1
  244. package/dist/twilight/{p-fa6f2b27.entry.js → p-197385ef.entry.js} +1 -1
  245. package/dist/twilight/{p-00a727c3.entry.js → p-1ac4c8b5.entry.js} +1 -1
  246. package/dist/twilight/{p-0bcca7f8.entry.js → p-1db9cb44.entry.js} +1 -1
  247. package/dist/twilight/{p-3a3815a2.entry.js → p-1f8fb466.entry.js} +1 -1
  248. package/dist/twilight/{p-fc500047.entry.js → p-226766f8.entry.js} +1 -1
  249. package/dist/twilight/{p-2e4064eb.entry.js → p-297b11aa.entry.js} +1 -1
  250. package/dist/twilight/{p-b55fb51b.entry.js → p-2a79781f.entry.js} +1 -1
  251. package/dist/twilight/{p-e66856c5.entry.js → p-2e8673b0.entry.js} +1 -1
  252. package/dist/twilight/{p-b356f3f6.entry.js → p-335d602b.entry.js} +1 -1
  253. package/dist/twilight/{p-637670fa.entry.js → p-34d20d89.entry.js} +1 -1
  254. package/dist/twilight/{p-13abf9ca.entry.js → p-353d7c2b.entry.js} +1 -1
  255. package/dist/twilight/{p-f514b9f5.entry.js → p-37b99097.entry.js} +1 -1
  256. package/dist/twilight/{p-8fc2eb01.entry.js → p-393f2d5a.entry.js} +1 -1
  257. package/dist/twilight/{p-97fee81d.entry.js → p-3a02cd71.entry.js} +1 -1
  258. package/dist/twilight/{p-292a0b4a.entry.js → p-3eefc1f9.entry.js} +1 -1
  259. package/dist/twilight/{p-884104a3.entry.js → p-43d19714.entry.js} +1 -1
  260. package/dist/twilight/{p-5c4e2ed3.entry.js → p-480beded.entry.js} +1 -1
  261. package/dist/twilight/{p-dd18ac5c.entry.js → p-48ea970a.entry.js} +1 -1
  262. package/dist/twilight/{p-423d852d.entry.js → p-49d915b2.entry.js} +1 -1
  263. package/dist/twilight/{p-13c35685.entry.js → p-4f358102.entry.js} +1 -1
  264. package/dist/twilight/{p-99b9bf66.entry.js → p-52a2d067.entry.js} +1 -1
  265. package/dist/twilight/{p-806083b4.entry.js → p-551b8be9.entry.js} +1 -1
  266. package/dist/twilight/{p-072ee78f.entry.js → p-5d140f6a.entry.js} +1 -1
  267. package/dist/twilight/{p-0227316e.entry.js → p-5d1dcdd6.entry.js} +1 -1
  268. package/dist/twilight/{p-5a77257c.entry.js → p-5d61bc8b.entry.js} +1 -1
  269. package/dist/twilight/{p-f2e13d28.entry.js → p-610c0b50.entry.js} +1 -1
  270. package/dist/twilight/{p-faadae59.entry.js → p-613c8c04.entry.js} +1 -1
  271. package/dist/twilight/{p-56609a91.entry.js → p-6161d5c7.entry.js} +1 -1
  272. package/dist/twilight/{p-6de608eb.entry.js → p-6204194f.entry.js} +1 -1
  273. package/dist/twilight/{p-d3556d1f.entry.js → p-6491fe73.entry.js} +1 -1
  274. package/dist/twilight/{p-ea7846fd.entry.js → p-6845c140.entry.js} +1 -1
  275. package/dist/twilight/{p-f0ca37fc.entry.js → p-6adb877c.entry.js} +1 -1
  276. package/dist/twilight/{p-3153f560.entry.js → p-6bdf61dd.entry.js} +1 -1
  277. package/dist/twilight/{p-c38fb150.entry.js → p-70f498b4.entry.js} +1 -1
  278. package/dist/twilight/{p-DGzNHmGp.js → p-79sdW-RJ.js} +1 -1
  279. package/dist/twilight/{p-c90600b1.entry.js → p-821fbdd7.entry.js} +1 -1
  280. package/dist/twilight/{p-2c543420.entry.js → p-83c54d44.entry.js} +1 -1
  281. package/dist/twilight/{p-162fa48e.entry.js → p-8444cf02.entry.js} +1 -1
  282. package/dist/twilight/{p-e944f02a.entry.js → p-84b61b96.entry.js} +1 -1
  283. package/dist/twilight/{p-a73a785d.entry.js → p-84d740c5.entry.js} +1 -1
  284. package/dist/twilight/{p-58c1bf51.entry.js → p-85474877.entry.js} +1 -1
  285. package/dist/twilight/{p-e7c4d4cc.entry.js → p-87c03c55.entry.js} +1 -1
  286. package/dist/twilight/p-888f6120.entry.js +4 -0
  287. package/dist/twilight/{p-fdc97278.entry.js → p-8cca3ae6.entry.js} +1 -1
  288. package/dist/twilight/{p-9b4a0dd3.entry.js → p-914c39e7.entry.js} +1 -1
  289. package/dist/twilight/{p-6605f258.entry.js → p-92ae62e1.entry.js} +1 -1
  290. package/dist/twilight/{p-8a865d37.entry.js → p-94f8ac6a.entry.js} +1 -1
  291. package/dist/twilight/{p-0806da7e.entry.js → p-97a6f87f.entry.js} +1 -1
  292. package/dist/twilight/{p-dda4d231.entry.js → p-9a89449c.entry.js} +1 -1
  293. package/dist/twilight/{p-665bc308.entry.js → p-9b7d25bb.entry.js} +1 -1
  294. package/dist/twilight/{p-a2d07dba.entry.js → p-9c4035fd.entry.js} +1 -1
  295. package/dist/twilight/{p-3cef6be2.entry.js → p-9f233039.entry.js} +1 -1
  296. package/dist/twilight/{p-e95fd91e.entry.js → p-9f726d38.entry.js} +1 -1
  297. package/dist/twilight/{p-SguJQlDo.js → p-BFHiJkJo.js} +1 -1
  298. package/dist/twilight/{p-DnrvXyI6.js → p-BHxYBHNJ.js} +1 -1
  299. package/dist/twilight/{p-_f6GlygH.js → p-BV-RAvFu.js} +1 -1
  300. package/dist/twilight/p-ByRaVyQz.js +9 -0
  301. package/dist/twilight/p-Cv0bGFJf.js +5 -0
  302. package/dist/twilight/{p-BWpg3MwW.js → p-D6cd_mQ5.js} +1 -1
  303. package/dist/twilight/{p-CvebbG3m.js → p-DBruGj-x.js} +1 -1
  304. package/dist/twilight/p-DIAyA5MP.js +4 -0
  305. package/dist/twilight/{p-C6WaobtY.js → p-DuHvhlSw.js} +1 -1
  306. package/dist/twilight/{p-51fb8841.entry.js → p-a03c154f.entry.js} +1 -1
  307. package/dist/twilight/{p-a9fcdac5.entry.js → p-a16a3f5a.entry.js} +1 -1
  308. package/dist/twilight/{p-411c1ab0.entry.js → p-a5b16153.entry.js} +1 -1
  309. package/dist/twilight/{p-44a6598e.entry.js → p-b12845d7.entry.js} +1 -1
  310. package/dist/twilight/{p-bf845ea7.entry.js → p-b4468092.entry.js} +1 -1
  311. package/dist/twilight/{p-51d83216.entry.js → p-b5f3c4c8.entry.js} +1 -1
  312. package/dist/twilight/{p-3dd612a6.entry.js → p-bbd4d8fd.entry.js} +1 -1
  313. package/dist/twilight/{p-8c750736.entry.js → p-c414faf1.entry.js} +1 -1
  314. package/dist/twilight/{p-c63ff8ef.entry.js → p-c4bbe239.entry.js} +1 -1
  315. package/dist/twilight/{p-70451662.entry.js → p-c8775e6f.entry.js} +1 -1
  316. package/dist/twilight/{p-2ba4956f.entry.js → p-c9bf5222.entry.js} +1 -1
  317. package/dist/twilight/{p-18c41e9a.entry.js → p-cac35bf1.entry.js} +1 -1
  318. package/dist/twilight/{p-7b0cf8a1.entry.js → p-cdde65a4.entry.js} +1 -1
  319. package/dist/twilight/{p-59a7ca2e.entry.js → p-cf27d7e1.entry.js} +1 -1
  320. package/dist/twilight/{p-5f464161.entry.js → p-cf348533.entry.js} +1 -1
  321. package/dist/twilight/{p-03c959bb.entry.js → p-d2b78693.entry.js} +1 -1
  322. package/dist/twilight/{p-bb35af04.entry.js → p-d4cca956.entry.js} +1 -1
  323. package/dist/twilight/p-d8a37909.entry.js +4 -0
  324. package/dist/twilight/{p-28cdaf6b.entry.js → p-dbde8a51.entry.js} +1 -1
  325. package/dist/twilight/{p-1762fd86.entry.js → p-e2303e51.entry.js} +1 -1
  326. package/dist/twilight/{p-898ce93b.entry.js → p-e305800c.entry.js} +1 -1
  327. package/dist/twilight/{p-2e3a56de.entry.js → p-f16f0a66.entry.js} +1 -1
  328. package/dist/twilight/{p-c2e871ae.entry.js → p-f71f35c9.entry.js} +1 -1
  329. package/dist/twilight/{p-7d37b650.entry.js → p-fa50faa3.entry.js} +1 -1
  330. package/dist/twilight/{p-ce80fb8f.entry.js → p-fc9f812a.entry.js} +1 -1
  331. package/dist/twilight/{p-DpI1J-G1.js → p-fca8mBDM.js} +1 -1
  332. package/dist/twilight/{p-84cff600.entry.js → p-fe94f5ba.entry.js} +1 -1
  333. package/dist/twilight/twilight.esm.js +1 -1
  334. package/dist/types/components/salla-basket-gap/salla-basket-gap.d.ts +15 -0
  335. package/dist/types/components/salla-bought-together/salla-bought-together.d.ts +2 -0
  336. package/package.json +5 -5
  337. package/dist/twilight/p-073e1363.entry.js +0 -4
  338. package/dist/twilight/p-6f9bc285.entry.js +0 -4
  339. package/dist/twilight/p-BAXTlrSC.js +0 -5
  340. package/dist/twilight/p-CRW60UDr.js +0 -4
  341. package/dist/twilight/p-D5lNzFgl.js +0 -9
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var swapStroke = require('./swap-stroke-CYGxjKIS.js');
8
8
 
9
9
  /**
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var swapStroke = require('./swap-stroke-CYGxjKIS.js');
8
8
  var check = require('./check-x3w3-gpj.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  const sallaOrderTotalsCardCss = "/*!twlt*/:host{display:block}.s-order-totals-card-wrapper{display:block}.s-order-totals-card-panel{border-radius:0.375rem;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:1.5rem;padding-right:1.5rem}.s-order-totals-card-heading{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.s-order-totals-card-flow{display:flow-root}.s-order-totals-card-list{font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-order-totals-card-list>.s-order-totals-card-row{border-bottom-width:1px}.s-order-totals-card-list>.s-order-totals-card-row:last-child{border-bottom-width:0px}.s-order-totals-card-row{display:block}.s-order-totals-card-row-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1.25rem;padding-bottom:1.25rem}.s-order-totals-card-label{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-order-totals-card-value{font-weight:500}.s-order-totals-card-discount{--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.s-order-totals-card-tax-value{font-weight:500;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-order-totals-card-total{margin-left:-1.5rem;margin-right:-1.5rem;border-radius:0.375rem;background-color:var(--color-border);padding-left:1.5rem;padding-right:1.5rem}.s-order-totals-card-total-label{font-size:1rem;line-height:1.5rem;font-weight:500}.s-order-totals-card-total-value{font-size:1rem;line-height:1.5rem;font-weight:500}.s-order-totals-card-refund{margin-left:-1.5rem;margin-right:-1.5rem;border-left-width:4px;--tw-border-opacity:1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1));padding-left:1.5rem;padding-right:1.5rem}.s-order-totals-card-refund:where([dir=\"rtl\"],[dir=\"rtl\"] *){border-left-width:0px;border-right-width:4px}.s-order-totals-card-refund-label{display:flex;align-items:center;gap:0.5rem;--tw-text-opacity:1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.s-order-totals-card-refund-icon{font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.s-order-totals-card-refund-value{font-weight:500;--tw-text-opacity:1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var Helper = require('./Helper-8U7zlpC3.js');
8
8
  require('./anime.es-BqW8JHZi.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  const sallaPaymentsCss = "/*!twlt*/:host{display:block}.static{position:static}.hidden{display:none}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.s-payments-list{display:flex;flex-wrap:wrap;align-items:stretch;justify-content:center;gap:0.5rem}.s-payments-list:where([dir=\"rtl\"],[dir=\"rtl\"] *)>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.s-payments-list-item{display:flex;height:2rem;width:3rem;align-items:center;justify-content:center;border-radius:var(--s-radius, 0.25rem);--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:0.25rem}.s-payments-list-item img{max-height:100%;object-fit:contain}.s-payments-sbc-image{height:1.5rem;border-radius:0.125rem;transition-property:opacity;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-payments-sbc-image:hover{opacity:0.8}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  var Inbox = `<!-- Generated by IcoMoon.io -->
9
9
  <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var arrowLeft = require('./arrow-left-xSEmRpp6.js');
8
8
  var arrowRight = require('./arrow-right-Cd6JoegH.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  const sallaProductCardEmbedCss = "/*!twlt*/@charset \"UTF-8\";:host{display:inline-block;vertical-align:top;max-width:12rem}:host([align=left]){float:inline-start;margin-block-end:1em;margin-inline-end:1em;shape-outside:margin-box}:host([align=right]){float:inline-end;margin-block-end:1em;margin-inline-start:1em;shape-outside:margin-box}:host([align=center]){display:block;clear:both;margin-block:1em;margin-inline:auto}.s-product-card-embed-card{display:block}.visible{visibility:visible}.block{display:block}.flow-root{display:flow-root}.s-product-card-embed-card{display:block;max-width:12rem;shape-outside:margin-box}.s-product-card-embed-card custom-salla-product-card{--tw-shadow:0 0 28px 0px rgba(0 0 0 / .1);--tw-shadow-colored:0 0 28px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.s-product-card-embed-card-align-center{margin-left:auto;margin-right:auto}.s-product-card-embed-card-align-left{float:left;margin-right:1ch}.s-product-card-embed-card-align-right{float:right;margin-left:1ch}.s-product-card-embed-fallback{display:block}article:has(salla-product-card-embed)::after{clear:both;display:block;--tw-content:'';content:var(--tw-content)}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var heart = require('./heart-ClVn_Co8.js');
8
8
  var star2 = require('./star2-R146a27p.js');
9
9
  var cart = require('./cart-DSvlJXCH.js');
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  var PencilRuler = `<!-- Generated by IcoMoon.io -->
9
9
  <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var anime_es = require('./anime.es-BqW8JHZi.js');
8
8
  var shoppingBag = require('./shopping-bag-C1gvTVHr.js');
9
9
  var Helper = require('./Helper-8U7zlpC3.js');
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var Helper = require('./Helper-8U7zlpC3.js');
8
8
  require('./anime.es-BqW8JHZi.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var iphoneX = require('./iphone-x-B683VspR.js');
8
8
  var mail = require('./mail-CO8cFZH7.js');
9
9
  var cancel = require('./cancel-De6vslRA.js');
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var star = require('./star-tn5w5Um0.js');
8
8
  var checkCircle2 = require('./check-circle2-BDvlT4_n.js');
9
9
  var Helper = require('./Helper-8U7zlpC3.js');
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var anime_es = require('./anime.es-BqW8JHZi.js');
8
8
  var checkCircle2 = require('./check-circle2-BDvlT4_n.js');
9
9
  var image = require('./image-BoZ6Hums.js');
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var star2 = require('./star2-R146a27p.js');
8
8
  var helpers = require('./helpers-ClOJIAG8.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var helpers = require('./helpers-ClOJIAG8.js');
8
8
 
9
9
  const SallaReviewOrderItem = class {
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var search = require('./search-c7Aa7lM9.js');
8
8
 
9
9
  var StoreAlt = `<!-- Generated by IcoMoon.io -->
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var star2 = require('./star2-R146a27p.js');
8
8
  var cart = require('./cart-DSvlJXCH.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var search = require('./search-c7Aa7lM9.js');
8
8
  var cancel = require('./cancel-De6vslRA.js');
9
9
  var keyboard_arrow_right = require('./keyboard_arrow_right-BayM_Il2.js');
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  const sallaSkeletonCss = "/*!twlt*/:host{display:block}.s-loyalty-skeleton .s-loyalty-prize-item .s-skeleton-wrapper{margin-left:auto;margin-right:auto}.s-skeleton-wrapper{display:block}@keyframes pulse{50%{opacity:.5}}.s-skeleton-wrapper{animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.s-skeleton-item{height:100%;width:100%;border-radius:0.375rem;--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.s-skeleton-item:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.s-skeleton-item-circular{border-radius:9999px}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var anime_es = require('./anime.es-BqW8JHZi.js');
8
8
  var facebook = require('./facebook-DbXua6B9.js');
9
9
  var mail = require('./mail-CO8cFZH7.js');
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var facebook = require('./facebook-DbXua6B9.js');
8
8
 
9
9
  var instagram = `<!-- Generated by IcoMoon.io -->
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  const sallaTabContentCss = "";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  var DiscountType;
9
9
  (function (DiscountType) {
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  const sallaTooltipCss = "/*!twlt*/.s-tooltip-container{position:relative;display:inline-block}.s-tooltip-item{position:absolute;transform:translateX(-63%) translateY(-50%);background-color:var(--color-primary);color:var(--color-primary-reverse);bottom:100%;left:50%;text-align:center;border-radius:5px;z-index:1;white-space:nowrap;transition:opacity 0.3s;pointer-events:none;margin:0 0 16px 8px;padding:12px;max-width:150px;width:190px;white-space:normal;opacity:1}.s-tooltip-item::after{content:\"\";position:absolute;bottom:-10px;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:var(--color-primary) transparent transparent transparent}.s-tooltip-item:dir(ltr){transform:translateX(-72%)}.s-tooltip-item--dark{background-color:#555555;color:white;padding:5px 15px;border-radius:8px;font-size:12px;font-weight:normal;max-width:330px;width:max-content}.s-tooltip-item--dark::after{border-color:#555555 transparent transparent transparent}.block{display:block}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  const sallaTrustBadgesCss = "/*!twlt*/.s-trust-badges-wrapper{display:flex;align-items:center}.s-trust-badges-wrapper>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.5rem * var(--tw-space-x-reverse));margin-left:calc(0.5rem * calc(1 - var(--tw-space-x-reverse)))}.s-trust-badges-wrapper:where([dir=\"rtl\"],[dir=\"rtl\"] *)>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.s-trust-badges-label{margin-bottom:0.25rem;font-size:0.875rem;line-height:1.25rem}.s-trust-badges-number{font-size:0.875rem;line-height:1.25rem}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var keyboard_arrow_down = require('./keyboard_arrow_down-DHJ3FFZq.js');
8
8
  var bellRing = require('./bell-ring-BfKPinNo.js');
9
9
  var cart = require('./cart-DSvlJXCH.js');
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var interfaces = require('./interfaces-CRqrf5RX.js');
8
8
 
9
9
  const sallaUserProfileCss = "/*!twlt*/:host{display:block}.form-input{height:2.5rem;width:100%;border-radius:0.375rem;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.form-input:focus{border-color:var(--color-primary);--tw-ring-color:transparent}.form-input:is(.dark *){--tw-border-opacity:1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.form-input:focus:is(.dark *){border-color:var(--color-primary)}@media (min-width: 640px){.form-input{font-size:0.875rem;line-height:1.25rem}}.s-user-profile-wrapper{display:grid;grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5rem}@media (min-width: 640px){.s-user-profile-wrapper{grid-template-columns:repeat(2, minmax(0, 1fr));gap:2rem}}.s-user-profile-field-label{margin-bottom:0.5rem;display:block;font-size:0.875rem;line-height:1.25rem;font-weight:700;--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.s-user-profile-field-error{--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.s-user-profile-submit{margin-top:1.5rem;width:100%}.s-user-profile-filepond-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center}.s-user-profile-filepond-placeholder-icon{margin-bottom:0.25rem}.s-user-profile-filepond-placeholder-icon svg{height:1.5rem;width:1.5rem;fill:#7c8082}.s-user-profile-skeleton-wrapper{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));grid-template-rows:repeat(3, minmax(0, 1fr));gap:3rem}";
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  var Bullhorn = `<!-- Generated by IcoMoon.io -->
9
9
  <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var mail = require('./mail-CO8cFZH7.js');
8
8
 
9
9
  var AndroidPhoneIcon = `<!-- Generated by IcoMoon.io -->
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  const sallaWalletCss = "/*!twlt*/@charset \"UTF-8\";.s-wallet-table{min-width:100%}.s-wallet-table-balance-container{display:flex !important;align-items:center !important;justify-content:flex-start !important;gap:1rem}.s-wallet-table-balance-icon{border-radius:50%;width:52px;height:52px;font-size:25px;padding:16px 13px;background:var(--color-primary-reverse);color:var(--color-primary)}.s-wallet-table-empty-state{display:flex;flex-direction:column;align-items:center}.s-wallet-table-empty-state i{font-size:80px;margin:4rem 0 2rem;color:var(--infinte-color)}.s-wallet-table-transaction-status{padding:6px 19px !important;border-radius:20px;width:max-content;display:flex;align-items:center}.s-wallet-table-transaction-status-default{background:#fff6eb;color:#a46f29}.s-wallet-table-transaction-status-cashback{background:#effbf6;color:#00af6c}.s-wallet-table-transaction-status-refund{background:#ecf3fe;color:#5196f3}.s-wallet-table-transaction-status-purchase{background:#feecec;color:#f55157}.s-wallet-table-transaction-status-icons-success{color:#00af6c}.s-wallet-summary{display:flex;align-items:stretch;gap:16px;margin-bottom:28px}.s-wallet-balance-card{flex:0 0 34%;max-width:240px;background:#fff;border-radius:12px;padding:20px;box-sizing:border-box}.s-wallet-balance-mark{width:48px;height:48px;border-radius:9999px;background:var(--color-primary-reverse, #eaf7f0);color:var(--color-primary, #2e8b57);display:inline-flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:12px}.s-wallet-balance-figure{font-size:18px;font-weight:700;color:#1c1c1c}.s-wallet-balance-label{margin-top:2px;font-size:12px;color:#9aa0a6}.s-wallet-amount{display:inline-flex;align-items:center;gap:4px;font-weight:700;white-space:nowrap}.s-wallet-amount-credit{color:#00af6c}.s-wallet-amount-debit{color:#f55157}.s-wallet-transaction-type{display:flex;align-items:center;color:#4b5563}@media screen and (min-width: 768px){.s-wallet-balance-card{display:flex;flex-direction:column;justify-content:center}}@media screen and (max-width: 767px){.s-wallet-summary{gap:12px;margin-bottom:20px}.s-wallet-balance-card{flex:0 0 38%;padding:16px;text-align:center}.s-wallet-balance-mark{margin-bottom:8px}}.absolute{position:absolute}.relative{position:relative}.flex{display:flex}.table{display:table}.hidden{display:none}.items-center{align-items:center}.p-3{padding:0.75rem}.text-center{text-align:center}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-normal{font-weight:400}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.s-wallet-container>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0.625rem * var(--tw-space-y-reverse))}@media (min-width: 768px){.s-wallet-container>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}}.s-wallet-mobile-title{display:inline-block;width:8rem;font-weight:400;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}@media (min-width: 768px){.s-wallet-mobile-title{display:none}}.s-wallet-reference-id{display:none}@media (min-width: 768px){.s-wallet-reference-id{display:inline-block}}.s-wallet-buy-as-gift-icon{margin-left:0.25rem;margin-right:0.25rem;display:inline-block;color:var(--color-primary)}.s-wallet-copy-to-clipboard-button{display:flex;align-items:center}@media (min-width: 768px){.s-wallet-copy-to-clipboard-button{display:none}}.s-wallet-copy-to-clipboard-button salla-button{position:relative}.s-wallet-copy-to-clipboard-button-icon{pointer-events:none;font-size:0.75rem;line-height:1rem}.s-wallet-copy-to-clipboard-button-icon:where([dir=\"ltr\"],[dir=\"ltr\"] *){margin-left:0.25rem}.s-wallet-copy-to-clipboard-button-icon:where([dir=\"rtl\"],[dir=\"rtl\"] *){margin-right:0.25rem}@media (min-width: 768px){.s-wallet-status-container{margin-left:0px;margin-right:0px}}.s-wallet-status-container:where([dir=\"ltr\"],[dir=\"ltr\"] *){margin-left:auto}.s-wallet-status-container:where([dir=\"rtl\"],[dir=\"rtl\"] *){margin-right:auto}.s-wallet-status-container i{margin-top:0.25rem}.s-wallet-status-container i:where([dir=\"ltr\"],[dir=\"ltr\"] *){margin-right:0.25rem}.s-wallet-status-container i:where([dir=\"rtl\"],[dir=\"rtl\"] *){margin-left:0.25rem}.s-wallet-rated-text{--tw-text-opacity:1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.s-wallet-unrated-text{--tw-text-opacity:1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.s-wallet-no-content{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;padding-top:2.5rem;padding-bottom:5rem;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.s-wallet-no-content .icon{margin-bottom:1rem;display:flex;height:8rem;width:8rem;align-items:center;justify-content:center;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1));font-size:3rem;line-height:1;--tw-text-opacity:1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.s-wallet-no-content p{margin-bottom:1rem;font-size:1rem;line-height:1.5rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-wallet-table{min-width:100%;border-collapse:separate}@media (min-width: 768px){.s-wallet-table{margin-bottom:-0.75rem;--tw-border-spacing-y:1.25rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}}.s-wallet-table-head{margin-bottom:1.25rem;display:none;--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}@media (min-width: 768px){.s-wallet-table-head{display:table-header-group}}.s-wallet-table-head-tr-th{padding-left:1.5rem;padding-right:1.5rem;text-align:start;font-size:0.875rem;line-height:1.25rem;font-weight:500;text-transform:uppercase;letter-spacing:0.05em}.s-wallet-table-head-tr-th:where([dir=\"ltr\"],[dir=\"ltr\"] *){text-align:left}.s-wallet-table-head-tr-th:last-child:where([dir=\"ltr\"],[dir=\"ltr\"] *){text-align:right}.s-wallet-table-head-tr-th:where([dir=\"rtl\"],[dir=\"rtl\"] *){text-align:right}.s-wallet-table-head-tr-th:last-child:where([dir=\"rtl\"],[dir=\"rtl\"] *){text-align:left}.s-wallet-table-tbody-tr{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;overflow:hidden;border-radius:var(--s-radius, 0.25rem);border-bottom-width:8px;border-top-width:8px;--tw-border-opacity:1;border-color:rgb(249 250 251 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:0.5rem;transition-property:box-shadow;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:500ms}@media (min-width: 768px){.s-wallet-table-tbody-tr{display:table-row;flex-direction:row;flex-wrap:nowrap;padding:0px}}.s-wallet-table-tbody-tr-td{width:100%;white-space:nowrap;font-size:0.875rem;line-height:1.25rem}.s-wallet-table-tbody-tr-td:first-child{font-weight:700}@media (min-width: 768px){.s-wallet-table-tbody-tr-td{height:5rem;width:auto}.s-wallet-table-tbody-tr-td:last-child{text-align:end}.s-wallet-table-tbody-tr-td:first-child:where([dir=\"ltr\"],[dir=\"ltr\"] *){border-top-left-radius:0.375rem;border-bottom-left-radius:0.375rem}.s-wallet-table-tbody-tr-td:first-child:where([dir=\"rtl\"],[dir=\"rtl\"] *){border-top-right-radius:0.375rem;border-bottom-right-radius:0.375rem}}.s-wallet-table-tbody-tr-td:first-child{font-weight:700}.s-wallet-table-tbody-tr-td-content{position:relative;display:flex;align-items:center;justify-content:space-between;padding-left:0.5rem;padding-right:0.5rem;padding-top:0.25rem;padding-bottom:0.25rem;font-size:0.75rem;line-height:1rem}@media (min-width: 768px){.s-wallet-table-tbody-tr-td-content{padding-left:1.5rem;padding-right:1.5rem;padding-top:1.5rem;padding-bottom:1.5rem}}.s-wallet-table-tbody-tr-td-content:where([dir=\"ltr\"],[dir=\"ltr\"] *){padding-right:0.5rem}.s-wallet-table-tbody-tr-td-content:where([dir=\"rtl\"],[dir=\"rtl\"] *){padding-left:0.5rem}.s-wallet-table-tbody-tr a{position:absolute;top:0px;bottom:0px;display:block;width:100%}.s-wallet-table-tbody-tr a:where([dir=\"ltr\"],[dir=\"ltr\"] *){left:0px}.s-wallet-table-tbody-tr a:where([dir=\"rtl\"],[dir=\"rtl\"] *){right:0px}@media (min-width: 768px){.md\\:mx-0{margin-left:0px;margin-right:0px}.md\\:inline-block{display:inline-block}.md\\:hidden{display:none}}.ltr\\:ml-auto:where([dir=\"ltr\"],[dir=\"ltr\"] *){margin-left:auto}.ltr\\:mr-4:where([dir=\"ltr\"],[dir=\"ltr\"] *){margin-right:1rem}.rtl\\:ml-4:where([dir=\"rtl\"],[dir=\"rtl\"] *){margin-left:1rem}.rtl\\:mr-auto:where([dir=\"rtl\"],[dir=\"rtl\"] *){margin-right:auto}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  const sallaWishlistActionsCss = "/*!twlt*/:host{display:block}.s-wishlist-actions-menu{min-width:200px;inset-inline-end:0;inset-inline-start:auto;list-style:none;margin:0;padding:4px 0;box-shadow:0 4px 16px rgba(0, 0, 0, 0.12)}.s-wishlist-actions-menu-item{display:block;width:100%;padding:10px 16px;text-align:start;font-size:0.875rem;color:#374151;background:transparent;cursor:pointer;white-space:nowrap}.s-wishlist-actions-menu-item:hover{background-color:#f3f4f6;color:var(--color-primary)}.s-wishlist-actions-panel{box-shadow:0 1px 3px rgba(0, 0, 0, 0.08)}.s-wishlist-actions-panel-select-all{user-select:none}.s-wishlist-actions-select-all:indeterminate,.s-wishlist-actions-select-all:indeterminate:hover,.s-wishlist-actions-select-all:indeterminate:focus{background-color:var(--color-primary);border-color:var(--color-primary)}.s-wishlist-actions-select-all:indeterminate::after{content:\"\";position:absolute;top:50%;left:50%;width:10px;height:2px;background:#fff;border:none;transform:translate(-50%, -50%)}.s-wishlist-actions-social-anchor{display:none}h1.s-wishlist-actions-page-title{text-align:start !important}.static{position:static}.absolute{position:absolute}.relative{position:relative}.z-20{z-index:20}.mb-3{margin-bottom:0.75rem}.mt-1{margin-top:0.25rem}.mt-3{margin-top:0.75rem}.flex{display:flex}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:0.5rem}.gap-3{gap:0.75rem}.gap-4{gap:1rem}.overflow-hidden{overflow:hidden}.rounded-lg{border-radius:0.5rem}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-4{padding:1rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.font-bold{font-weight:700}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.outline{outline-style:solid}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
  var heart = require('./heart-ClVn_Co8.js');
8
8
  var Helper = require('./Helper-8U7zlpC3.js');
9
9
  require('./anime.es-BqW8JHZi.js');
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
9
9
  /*
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CSe-ijAV.js');
6
+ var index = require('./index-Brycy0hH.js');
7
7
 
8
8
  function _mergeNamespaces(n, m) {
9
9
  m.forEach(function (e) {
@@ -19,6 +19,11 @@ export class SallaBasketGap {
19
19
  this.placeholder = '';
20
20
  this.fetchGeneration = 0;
21
21
  this.isSyncingCart = false;
22
+ /** The recommendations response that produced the rendered list; attributes every event below. */
23
+ this.requestId = null;
24
+ this.listViewTracked = false;
25
+ /** Ids of the last list actually announced, so an unchanged re-fetch is not re-counted. */
26
+ this.lastListViewedKey = '';
22
27
  this.cartItemChangedHandler = (response) => {
23
28
  const items = response?.data?.cart?.items ?? [];
24
29
  const ids = items.map((i) => String(i.product_id)).filter(Boolean);
@@ -47,6 +52,7 @@ export class SallaBasketGap {
47
52
  cartItem,
48
53
  cartId: event?.detail?.data?.id,
49
54
  source: 'basket_gap',
55
+ request_id: this.requestId,
50
56
  }]);
51
57
  };
52
58
  salla.lang.onLoaded(() => {
@@ -91,6 +97,64 @@ export class SallaBasketGap {
91
97
  document.lazyLoadInstance?.update(this.host.querySelectorAll('.lazy'));
92
98
  this.positionUnderCartItems();
93
99
  }
100
+ componentDidRender() {
101
+ if (!this.products.length || this.listViewTracked || this.intersectionObserver)
102
+ return;
103
+ // The section is injected below the cart items, so it is usually out of view on
104
+ // load — an impression is only real once it is actually on screen.
105
+ const observer = new IntersectionObserver((entries) => {
106
+ // A callback queued before disconnect() still runs. Without this check a
107
+ // callback left over from the list BEFORE a cart-driven refetch would announce
108
+ // the new list before it is rendered, disconnect the new observer (the old code
109
+ // disconnected whichever observer was current, not the one that fired) and mark
110
+ // the impression done — so the new list never got a real one.
111
+ if (this.intersectionObserver !== observer)
112
+ return;
113
+ if (!entries.some((entry) => entry.isIntersecting))
114
+ return;
115
+ this.listViewTracked = true;
116
+ observer.disconnect();
117
+ this.intersectionObserver = undefined;
118
+ this.emitListViewed();
119
+ }, { threshold: 0.1 });
120
+ this.intersectionObserver = observer;
121
+ observer.observe(this.host);
122
+ }
123
+ emitListViewed() {
124
+ // A cart change re-fetches, and the section is usually still on screen, so the
125
+ // observer re-arms and fires immediately. Only a genuinely different list is a new
126
+ // impression.
127
+ const key = this.products.map((product) => product.id).join(',');
128
+ if (key === this.lastListViewedKey)
129
+ return;
130
+ this.lastListViewedKey = key;
131
+ salla.event.emit('salla-basket-gap::list.viewed', {
132
+ products: this.products,
133
+ source: 'basket_gap',
134
+ request_id: this.requestId,
135
+ });
136
+ }
137
+ /**
138
+ * One delegated listener per card rather than a handler on each anchor: the click is
139
+ * only a product click when it lands on a product link, not on the add button or the
140
+ * offer badge.
141
+ */
142
+ handleCardClick(event, product) {
143
+ // Duck-typed rather than `instanceof Element`: that global does not exist in
144
+ // Stencil's non-browser runtime, where the check would throw instead of skip.
145
+ const target = event.target;
146
+ if (typeof target?.closest === 'function' && target.closest('a[href]')) {
147
+ this.emitProductClicked(product);
148
+ }
149
+ }
150
+ emitProductClicked(product) {
151
+ salla.event.emit('salla-basket-gap::product.clicked', [{
152
+ product,
153
+ position: this.products.indexOf(product) + 1,
154
+ source: 'basket_gap',
155
+ request_id: this.requestId,
156
+ }]);
157
+ }
94
158
  /**
95
159
  * Cart item rows on the storefront cart page (excluding the order-options block).
96
160
  * Kept defensive: themes that don't use the `form[id^="item-"]` pattern return none.
@@ -156,6 +220,8 @@ export class SallaBasketGap {
156
220
  this.host.addEventListener('success', this.addButtonSuccessHandler);
157
221
  }
158
222
  disconnectedCallback() {
223
+ this.intersectionObserver?.disconnect();
224
+ this.intersectionObserver = undefined;
159
225
  salla.event.off('cart::item.added', this.cartItemChangedHandler);
160
226
  salla.event.off('cart::item.deleted', this.cartItemChangedHandler);
161
227
  salla.event.off('cart::before.add.item', this.beforeAddItemHandler);
@@ -183,6 +249,8 @@ export class SallaBasketGap {
183
249
  .then((ids) => {
184
250
  if (generation !== this.fetchGeneration)
185
251
  return;
252
+ // Held until the products it describes are actually rendered — see fetchProducts.
253
+ const requestId = ids._requestId || null;
186
254
  // Pass objectIDs as the authoritative cart list so the filter is not
187
255
  // affected by stale storage when called from a live cart event.
188
256
  const cartIds = this.getCartProductIds(objectIDs);
@@ -191,7 +259,7 @@ export class SallaBasketGap {
191
259
  this.canRender = false;
192
260
  return;
193
261
  }
194
- return this.fetchProducts(filteredIds.slice(0, this.limit), generation);
262
+ return this.fetchProducts(filteredIds.slice(0, this.limit), generation, requestId);
195
263
  })
196
264
  .catch(() => {
197
265
  if (generation !== this.fetchGeneration)
@@ -204,7 +272,7 @@ export class SallaBasketGap {
204
272
  this.isLoading = false;
205
273
  });
206
274
  }
207
- fetchProducts(ids, generation) {
275
+ fetchProducts(ids, generation, requestId = null) {
208
276
  return salla.api.withoutNotifier(() => salla.product.api.fetch({
209
277
  source: 'selected',
210
278
  source_value: ids,
@@ -212,7 +280,17 @@ export class SallaBasketGap {
212
280
  })).then((response) => {
213
281
  if (generation !== this.fetchGeneration)
214
282
  return;
283
+ // List, id and impression state flip together. Assigning the id earlier left a
284
+ // window where an observer already watching an unscrolled section could fire and
285
+ // report the PREVIOUS products under the NEW id — and mark the impression done,
286
+ // so the real one for the new list never fired.
215
287
  this.products = response?.data ?? [];
288
+ this.requestId = requestId;
289
+ // A refreshed list is a new impression: the cart changed and the shopper sees a
290
+ // different set of products, so a pending observer is re-armed by componentDidRender.
291
+ this.listViewTracked = false;
292
+ this.intersectionObserver?.disconnect();
293
+ this.intersectionObserver = undefined;
216
294
  this.canRender = this.products.length > 0;
217
295
  }).catch(() => {
218
296
  if (generation !== this.fetchGeneration)
@@ -240,7 +318,7 @@ export class SallaBasketGap {
240
318
  }
241
319
  getProductCard(product) {
242
320
  const discountLabel = this.getDiscountLabel(product);
243
- return (h("div", { key: product.id, class: "s-basket-gap-card" }, h("a", { href: product.url, class: "s-basket-gap-card-image" }, h("img", { class: "lazy", src: this.placeholder, "data-src": product.image?.url, alt: product.image?.alt || product.name })), h("div", { class: "s-basket-gap-card-info" }, h("h3", { class: "s-basket-gap-card-name" }, h("a", { href: product.url }, product.name)), product.is_on_sale
321
+ return (h("div", { key: product.id, class: "s-basket-gap-card", onClick: (event) => this.handleCardClick(event, product) }, h("a", { href: product.url, class: "s-basket-gap-card-image" }, h("img", { class: "lazy", src: this.placeholder, "data-src": product.image?.url, alt: product.image?.alt || product.name })), h("div", { class: "s-basket-gap-card-info" }, h("h3", { class: "s-basket-gap-card-name" }, h("a", { href: product.url }, product.name)), product.is_on_sale
244
322
  ? h("div", { class: "s-basket-gap-card-sale-price" }, h("span", { innerHTML: salla.money(product.sale_price) }), h("del", { innerHTML: salla.money(product.regular_price) }))
245
323
  : h("span", { class: "s-basket-gap-card-price", innerHTML: salla.money(product.price) }), product.weight_label && (h("span", { class: "s-basket-gap-card-weight" }, this.weightLabel, " ", product.weight_label))), h("div", { class: "s-basket-gap-card-actions" }, (product.promotion_title || product.discount_ends || product.is_on_sale) && (h("div", { class: "s-basket-gap-card-offer" }, h("i", { class: "sicon-gift" }), discountLabel && h("span", null, discountLabel), product.discount_ends && [
246
324
  // auto-segments drops the days box under 24h left, and the hours box under 1h.
@@ -19,6 +19,8 @@ export class SallaBoughtTogether {
19
19
  this.buyTogetherFor = salla.lang.get('pages.products.buy_together_for');
20
20
  this.resolvedProductId = 0;
21
21
  this.listViewTracked = false;
22
+ /** The recommendations response that produced the rendered list; attributes every event below. */
23
+ this.requestId = null;
22
24
  salla.lang.onLoaded(() => {
23
25
  this.title = salla.lang.get('pages.products.bought_together_title');
24
26
  this.subtitle = salla.lang.get('pages.products.bought_together_subtitle');
@@ -45,6 +47,7 @@ export class SallaBoughtTogether {
45
47
  this.canRender = false;
46
48
  return;
47
49
  }
50
+ this.requestId = recommendedIds._requestId || null;
48
51
  const ids = [String(this.resolvedProductId), ...recommendedIds.slice(0, this.limit)];
49
52
  return salla.product.fetch({ source: 'selected', source_value: ids });
50
53
  })
@@ -94,6 +97,8 @@ export class SallaBoughtTogether {
94
97
  .filter(p => !this.isMainProduct(p.id));
95
98
  salla.event.emit('salla-bought-together::list.viewed', {
96
99
  products: recommendedProducts,
100
+ source: 'pdp_fbt',
101
+ request_id: this.requestId,
97
102
  });
98
103
  }
99
104
  isMainProduct(id) {
@@ -105,7 +110,12 @@ export class SallaBoughtTogether {
105
110
  return index === -1 ? -1 : index + 1;
106
111
  }
107
112
  emitProductClicked(product, position) {
108
- salla.event.emit('salla-bought-together::product.clicked', [{ product, position }]);
113
+ salla.event.emit('salla-bought-together::product.clicked', [{
114
+ product,
115
+ position,
116
+ source: 'pdp_fbt',
117
+ request_id: this.requestId,
118
+ }]);
109
119
  }
110
120
  toggleProduct(id) {
111
121
  const next = new Set(this.selectedIds);
@@ -146,6 +156,7 @@ export class SallaBoughtTogether {
146
156
  position,
147
157
  cartItem,
148
158
  cartId: response?.data?.id,
159
+ request_id: this.requestId,
149
160
  }]);
150
161
  }
151
162
  }
@@ -51,6 +51,7 @@ function toNumericId(value) {
51
51
  function fetchRecommendations(path, params) {
52
52
  const url = new URL(getRecommendationsUrl(path));
53
53
  Object.entries(params).forEach(([key, value]) => url.searchParams.set(key, value));
54
+ let requestId = null;
54
55
  // Native fetch (not salla.api) so only the explicit allow-listed headers are
55
56
  // sent — no axios default headers to trip the recommendations CORS preflight.
56
57
  // Best-effort feature: callers hide their section via .catch(), so no notifier.
@@ -65,9 +66,23 @@ function fetchRecommendations(path, params) {
65
66
  if (!response.ok) {
66
67
  throw new Error(`Recommendations request failed: ${response.status}`);
67
68
  }
69
+ // Going around `salla.api` also goes around the axios response interceptor that
70
+ // harvests this id for `salla.recommendations`, so it is captured here instead.
71
+ // The recommendations worker generates one when the client sends none and
72
+ // CORS-exposes it, so it is present on every response.
73
+ requestId = response.headers?.get?.('s-request-id') ?? null;
68
74
  return response.json();
69
75
  })
70
- .then((payload) => extractRecommendationIds(payload));
76
+ .then((payload) => {
77
+ const ids = extractRecommendationIds(payload);
78
+ // Rides along on the id list so callers keep their `string[]` contract, and the
79
+ // section that renders these ids can attribute its events to the response that
80
+ // produced them. Non-enumerable, so the value still behaves as a plain array.
81
+ if (requestId) {
82
+ Object.defineProperty(ids, '_requestId', { value: requestId });
83
+ }
84
+ return ids;
85
+ });
71
86
  }
72
87
  export function fetchCartBoughtTogether(productIds) {
73
88
  const ids = productIds