@salla.sa/twilight-components 2.14.498 → 2.14.500

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 (458) hide show
  1. package/dist/cjs/{filepond-B7XPTm4d.js → filepond-B9PtMjXt.js} +1 -1
  2. package/dist/cjs/{filepond-plugin-file-poster-C5WAs5Sq.js → filepond-plugin-file-poster-CMd-UUZx.js} +1 -1
  3. package/dist/cjs/{filepond-plugin-file-validate-size-CpzjvZP9.js → filepond-plugin-file-validate-size-DpJalosf.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-validate-type-CQjym5yh.js → filepond-plugin-file-validate-type-CZjeYI0w.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-image-edit-JvWrX8H9.js → filepond-plugin-image-edit-Bl6fwgrn.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-image-exif-orientation-CaFH4vic.js → filepond-plugin-image-exif-orientation-BeQ8iCyg.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-preview-CpD30vUg.js → filepond-plugin-image-preview-BkGKXzOB.js} +1 -1
  8. package/dist/cjs/{functions-BUcHv9GL.js → functions-UaOjMOb2.js} +1 -1
  9. package/dist/cjs/{index-Dqo2RTwY.js → index-CQPk27Eg.js} +1 -1
  10. package/dist/cjs/{index-CxOIGeOr.js → index-Cd5xdrCT.js} +2 -2
  11. package/dist/cjs/loader.cjs.js +2 -2
  12. package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
  13. package/dist/cjs/salla-accordion_6.cjs.entry.js +2 -2
  14. package/dist/cjs/salla-add-product-button_5.cjs.entry.js +3 -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-apps-icons.cjs.entry.js +1 -1
  19. package/dist/cjs/salla-badge.cjs.entry.js +1 -1
  20. package/dist/cjs/salla-booking-field_7.cjs.entry.js +17 -17
  21. package/dist/cjs/salla-bullet-delivery_2.cjs.entry.js +5 -5
  22. package/dist/cjs/salla-cart-coupons.cjs.entry.js +210 -31
  23. package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +2 -2
  24. package/dist/cjs/salla-cart-summary-card.cjs.entry.js +1 -1
  25. package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
  26. package/dist/cjs/salla-comment-factors.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-comment-form_8.cjs.entry.js +5 -5
  28. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  29. package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
  30. package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
  31. package/dist/cjs/salla-count-down_2.cjs.entry.js +2 -2
  32. package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-delivery-promise.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-filters-widget.cjs.entry.js +3 -3
  36. package/dist/cjs/salla-filters.cjs.entry.js +2 -2
  37. package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
  38. package/dist/cjs/salla-gifting.cjs.entry.js +3 -3
  39. package/dist/cjs/salla-hook.cjs.entry.js +2 -2
  40. package/dist/cjs/salla-infinite-scroll.cjs.entry.js +1 -1
  41. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  42. package/dist/cjs/salla-list-tile.cjs.entry.js +2 -2
  43. package/dist/cjs/salla-localization-modal.cjs.entry.js +2 -2
  44. package/dist/cjs/salla-login-modal.cjs.entry.js +1 -1
  45. package/dist/cjs/salla-loyalty-banner.cjs.entry.js +2 -2
  46. package/dist/cjs/salla-loyalty-exchange-product-card_5.cjs.entry.js +10 -10
  47. package/dist/cjs/salla-loyalty-hero_2.cjs.entry.js +9 -9
  48. package/dist/cjs/salla-loyalty-panel.cjs.entry.js +3 -3
  49. package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
  50. package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +2 -2
  51. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +2 -2
  52. package/dist/cjs/salla-loyalty-program.cjs.entry.js +3 -3
  53. package/dist/cjs/salla-loyalty-reward.cjs.entry.js +4 -4
  54. package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
  55. package/dist/cjs/salla-maintenance-alert.cjs.entry.js +2 -2
  56. package/dist/cjs/salla-map_2.cjs.entry.js +4 -4
  57. package/dist/cjs/salla-menu.cjs.entry.js +1 -1
  58. package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
  59. package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +4 -4
  60. package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +6 -6
  61. package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +2 -2
  62. package/dist/cjs/salla-next-order-coupon.cjs.entry.js +1 -1
  63. package/dist/cjs/salla-notification-item.cjs.entry.js +2 -2
  64. package/dist/cjs/salla-notifications.cjs.entry.js +1 -1
  65. package/dist/cjs/salla-offer-modal.cjs.entry.js +2 -2
  66. package/dist/cjs/salla-offer.cjs.entry.js +1 -1
  67. package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
  68. package/dist/cjs/salla-order-cancel.cjs.entry.js +1 -1
  69. package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
  70. package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
  71. package/dist/cjs/salla-order-details.cjs.entry.js +2 -2
  72. package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
  73. package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +2 -2
  74. package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
  75. package/dist/cjs/salla-order-summary.cjs.entry.js +2 -2
  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 +3 -3
  79. package/dist/cjs/salla-placeholder.cjs.entry.js +2 -2
  80. package/dist/cjs/salla-price-range.cjs.entry.js +3 -3
  81. package/dist/cjs/salla-product-card-embed.cjs.entry.js +2 -2
  82. package/dist/cjs/salla-product-card_2.cjs.entry.js +6 -6
  83. package/dist/cjs/salla-product-size-guide.cjs.entry.js +3 -3
  84. package/dist/cjs/salla-products-list.cjs.entry.js +1 -1
  85. package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
  86. package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +1 -1
  87. package/dist/cjs/salla-rating-modal.cjs.entry.js +1 -1
  88. package/dist/cjs/salla-review-factors-tags.cjs.entry.js +2 -2
  89. package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
  90. package/dist/cjs/salla-search.cjs.entry.js +6 -6
  91. package/dist/cjs/salla-skeleton.cjs.entry.js +2 -2
  92. package/dist/cjs/salla-slider.cjs.entry.js +1 -1
  93. package/dist/cjs/salla-social-share.cjs.entry.js +2 -2
  94. package/dist/cjs/salla-social.cjs.entry.js +2 -2
  95. package/dist/cjs/salla-tab-content_3.cjs.entry.js +4 -4
  96. package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
  97. package/dist/cjs/salla-tooltip.cjs.entry.js +2 -2
  98. package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
  99. package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
  100. package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
  101. package/dist/cjs/salla-user-settings.cjs.entry.js +2 -2
  102. package/dist/cjs/salla-verify.cjs.entry.js +1 -1
  103. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  104. package/dist/cjs/salla-wishlist-actions.cjs.entry.js +2 -2
  105. package/dist/cjs/{tracked-promise-COd7urY7.js → tracked-promise-DwUVHl1m.js} +1 -1
  106. package/dist/cjs/twilight.cjs.js +2 -2
  107. package/dist/cjs/{vanilla-picker-v4qaVnjr.js → vanilla-picker-BTiOI13l.js} +1 -1
  108. package/dist/collection/collection-manifest.json +1 -1
  109. package/dist/collection/components/salla-cart-coupons/salla-cart-coupons.css +63 -0
  110. package/dist/collection/components/salla-cart-coupons/salla-cart-coupons.js +211 -30
  111. package/dist/collection/components/salla-cart-summary/salla-cart-summary.js +1 -1
  112. package/dist/collection/components/salla-color-picker/salla-color-picker.js +1 -1
  113. package/dist/collection/components/salla-comment-form/salla-comment-form.js +1 -1
  114. package/dist/collection/components/salla-conditional-fields/salla-conditional-fields.js +1 -1
  115. package/dist/collection/components/salla-count-down/salla-count-down.js +1 -1
  116. package/dist/collection/components/salla-datetime-picker/salla-datetime-picker.js +1 -1
  117. package/dist/collection/components/salla-file-upload/salla-file-upload.js +2 -2
  118. package/dist/collection/components/salla-filters/salla-filters.js +1 -1
  119. package/dist/collection/components/salla-filters-widget/salla-filters-widget.js +2 -2
  120. package/dist/collection/components/salla-gifting/salla-gifting.js +2 -2
  121. package/dist/collection/components/salla-hook/salla-hook.js +1 -1
  122. package/dist/collection/components/salla-list-tile/salla-list-tile.js +1 -1
  123. package/dist/collection/components/salla-loading/salla-loading.js +1 -1
  124. package/dist/collection/components/salla-localization-modal/salla-localization-modal.js +1 -1
  125. package/dist/collection/components/salla-loyalty/salla-loyalty-prize-item.js +1 -1
  126. package/dist/collection/components/salla-loyalty-points-history/salla-loyalty-points-history.js +1 -1
  127. package/dist/collection/components/salla-loyalty-program/salla-loyalty-exchange-product-card.js +2 -2
  128. package/dist/collection/components/salla-loyalty-program/salla-loyalty-hero.js +3 -3
  129. package/dist/collection/components/salla-loyalty-program/salla-loyalty-point.js +4 -4
  130. package/dist/collection/components/salla-loyalty-program/salla-loyalty-reward.js +2 -2
  131. package/dist/collection/components/salla-loyalty-program/salla-reward-card.js +1 -1
  132. package/dist/collection/components/salla-loyalty-program/salla-reward-details.js +3 -3
  133. package/dist/collection/components/salla-loyalty-program/salla-reward-exchange.js +1 -1
  134. package/dist/collection/components/salla-maintenance-alert/salla-maintenance-alert.js +1 -1
  135. package/dist/collection/components/salla-map/salla-map.js +3 -3
  136. package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-cart.js +1 -1
  137. package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-details.js +2 -2
  138. package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-options-modal.js +4 -4
  139. package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-slider.js +1 -1
  140. package/dist/collection/components/salla-multiple-bundle-product/salla-multiple-bundle-product.js +1 -1
  141. package/dist/collection/components/salla-notifications/salla-notification-item.js +1 -1
  142. package/dist/collection/components/salla-offer-modal/salla-offer-modal.js +1 -1
  143. package/dist/collection/components/salla-order-details/salla-order-details.js +1 -1
  144. package/dist/collection/components/salla-order-edit/salla-order-edit-product-card.js +1 -1
  145. package/dist/collection/components/salla-order-summary/salla-order-summary.js +1 -1
  146. package/dist/collection/components/salla-payments/salla-payments.js +2 -2
  147. package/dist/collection/components/salla-placeholder/salla-placeholder.js +1 -1
  148. package/dist/collection/components/salla-price-range/salla-price-range.js +2 -2
  149. package/dist/collection/components/salla-product-availability/salla-product-availability.js +1 -1
  150. package/dist/collection/components/salla-product-card/salla-product-card.js +5 -5
  151. package/dist/collection/components/salla-product-card-embed/salla-product-card-embed.js +1 -1
  152. package/dist/collection/components/salla-product-size-guide/salla-product-size-guide.js +2 -2
  153. package/dist/collection/components/salla-quantity-input/salla-quantity-input.js +1 -1
  154. package/dist/collection/components/salla-quick-buy/salla-quick-buy.js +1 -1
  155. package/dist/collection/components/salla-review-card/salla-review-card.js +1 -1
  156. package/dist/collection/components/salla-review-factors-tags/salla-review-factors-tags.js +1 -1
  157. package/dist/collection/components/salla-reviews/salla-reviews.js +1 -1
  158. package/dist/collection/components/salla-reviews-page/salla-reviews-page.js +1 -1
  159. package/dist/collection/components/salla-search/salla-search.js +5 -5
  160. package/dist/collection/components/salla-searchable-dropdown/salla-searchable-dropdown.js +4 -4
  161. package/dist/collection/components/salla-skeleton/salla-skeleton.js +1 -1
  162. package/dist/collection/components/salla-social/salla-social.js +1 -1
  163. package/dist/collection/components/salla-social-share/salla-social-share.js +1 -1
  164. package/dist/collection/components/salla-tabs/salla-tab-content.js +1 -1
  165. package/dist/collection/components/salla-tabs/salla-tab-header.js +1 -1
  166. package/dist/collection/components/salla-tabs/salla-tabs.js +1 -1
  167. package/dist/collection/components/salla-tel-input/salla-tel-input.js +1 -1
  168. package/dist/collection/components/salla-tooltip/salla-tooltip.js +1 -1
  169. package/dist/collection/components/salla-user-settings/salla-user-settings.js +1 -1
  170. package/dist/collection/components/salla-wishlist-actions/salla-wishlist-actions.js +1 -1
  171. package/dist/components/index.js +2 -2
  172. package/dist/components/salla-cart-coupons.js +211 -30
  173. package/dist/components/salla-cart-summary.js +1 -1
  174. package/dist/components/salla-color-picker2.js +1 -1
  175. package/dist/components/salla-comment-form2.js +1 -1
  176. package/dist/components/salla-conditional-fields2.js +1 -1
  177. package/dist/components/salla-count-down2.js +1 -1
  178. package/dist/components/salla-datetime-picker2.js +1 -1
  179. package/dist/components/salla-file-upload2.js +2 -2
  180. package/dist/components/salla-filters-widget2.js +2 -2
  181. package/dist/components/salla-filters.js +1 -1
  182. package/dist/components/salla-gifting.js +2 -2
  183. package/dist/components/salla-hook.js +1 -1
  184. package/dist/components/salla-list-tile2.js +1 -1
  185. package/dist/components/salla-loading2.js +1 -1
  186. package/dist/components/salla-localization-modal.js +1 -1
  187. package/dist/components/salla-loyalty-exchange-product-card2.js +2 -2
  188. package/dist/components/salla-loyalty-hero2.js +3 -3
  189. package/dist/components/salla-loyalty-point2.js +4 -4
  190. package/dist/components/salla-loyalty-points-history.js +1 -1
  191. package/dist/components/salla-loyalty-prize-item.js +1 -1
  192. package/dist/components/salla-loyalty-reward.js +2 -2
  193. package/dist/components/salla-maintenance-alert.js +1 -1
  194. package/dist/components/salla-map2.js +3 -3
  195. package/dist/components/salla-multiple-bundle-product-cart2.js +1 -1
  196. package/dist/components/salla-multiple-bundle-product-details2.js +2 -2
  197. package/dist/components/salla-multiple-bundle-product-options-modal2.js +4 -4
  198. package/dist/components/salla-multiple-bundle-product-slider2.js +1 -1
  199. package/dist/components/salla-multiple-bundle-product.js +1 -1
  200. package/dist/components/salla-notification-item2.js +1 -1
  201. package/dist/components/salla-offer-modal.js +1 -1
  202. package/dist/components/salla-order-details.js +1 -1
  203. package/dist/components/salla-order-edit-product-card.js +1 -1
  204. package/dist/components/salla-order-summary.js +1 -1
  205. package/dist/components/salla-payments.js +2 -2
  206. package/dist/components/salla-placeholder2.js +1 -1
  207. package/dist/components/salla-price-range2.js +2 -2
  208. package/dist/components/salla-product-availability2.js +1 -1
  209. package/dist/components/salla-product-card-embed.js +1 -1
  210. package/dist/components/salla-product-card2.js +5 -5
  211. package/dist/components/salla-product-size-guide.js +2 -2
  212. package/dist/components/salla-quantity-input2.js +1 -1
  213. package/dist/components/salla-quick-buy2.js +1 -1
  214. package/dist/components/salla-review-card2.js +1 -1
  215. package/dist/components/salla-review-factors-tags.js +1 -1
  216. package/dist/components/salla-reviews-page.js +1 -1
  217. package/dist/components/salla-reviews.js +1 -1
  218. package/dist/components/salla-reward-card2.js +1 -1
  219. package/dist/components/salla-reward-details2.js +3 -3
  220. package/dist/components/salla-reward-exchange2.js +1 -1
  221. package/dist/components/salla-search.js +5 -5
  222. package/dist/components/salla-searchable-dropdown2.js +4 -4
  223. package/dist/components/salla-skeleton2.js +1 -1
  224. package/dist/components/salla-social-share2.js +1 -1
  225. package/dist/components/salla-social.js +1 -1
  226. package/dist/components/salla-tab-content2.js +1 -1
  227. package/dist/components/salla-tab-header2.js +1 -1
  228. package/dist/components/salla-tabs2.js +1 -1
  229. package/dist/components/salla-tel-input2.js +1 -1
  230. package/dist/components/salla-tooltip2.js +1 -1
  231. package/dist/components/salla-user-settings.js +1 -1
  232. package/dist/components/salla-wishlist-actions.js +1 -1
  233. package/dist/esm/{filepond-Bztq2DfJ.js → filepond-DjtqIoeD.js} +1 -1
  234. package/dist/esm/{filepond-plugin-file-poster-7n46TpPX.js → filepond-plugin-file-poster-CFxoEHLP.js} +1 -1
  235. package/dist/esm/{filepond-plugin-file-validate-size-CEaKKsXh.js → filepond-plugin-file-validate-size-BnBRYL0y.js} +1 -1
  236. package/dist/esm/{filepond-plugin-file-validate-type-G_rhCCOz.js → filepond-plugin-file-validate-type-Dr5ofT9v.js} +1 -1
  237. package/dist/esm/{filepond-plugin-image-edit-3fXrzMbo.js → filepond-plugin-image-edit-DyMeCzTZ.js} +1 -1
  238. package/dist/esm/{filepond-plugin-image-exif-orientation-BXr__tdF.js → filepond-plugin-image-exif-orientation-ngtve06j.js} +1 -1
  239. package/dist/esm/{filepond-plugin-image-preview-Deyf31fO.js → filepond-plugin-image-preview-aqxBqAYf.js} +1 -1
  240. package/dist/esm/{functions-BvcgTy23.js → functions-Drikk4uf.js} +1 -1
  241. package/dist/esm/{index-CtDVz2Sf.js → index-CaZkz-p0.js} +1 -1
  242. package/dist/esm/{index-DD7hlkaJ.js → index-DuoSRdS5.js} +2 -2
  243. package/dist/esm/loader.js +3 -3
  244. package/dist/esm/salla-accordion-body_2.entry.js +1 -1
  245. package/dist/esm/salla-accordion_6.entry.js +2 -2
  246. package/dist/esm/salla-add-product-button_5.entry.js +3 -3
  247. package/dist/esm/salla-advertisement.entry.js +1 -1
  248. package/dist/esm/salla-alert_2.entry.js +1 -1
  249. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  250. package/dist/esm/salla-apps-icons.entry.js +1 -1
  251. package/dist/esm/salla-badge.entry.js +1 -1
  252. package/dist/esm/salla-booking-field_7.entry.js +17 -17
  253. package/dist/esm/salla-bullet-delivery_2.entry.js +5 -5
  254. package/dist/esm/salla-cart-coupons.entry.js +210 -31
  255. package/dist/esm/salla-cart-item-offers_2.entry.js +2 -2
  256. package/dist/esm/salla-cart-summary-card.entry.js +1 -1
  257. package/dist/esm/salla-cashback-banner.entry.js +1 -1
  258. package/dist/esm/salla-comment-factors.entry.js +1 -1
  259. package/dist/esm/salla-comment-form_8.entry.js +5 -5
  260. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  261. package/dist/esm/salla-contacts.entry.js +1 -1
  262. package/dist/esm/salla-cookies-bar.entry.js +1 -1
  263. package/dist/esm/salla-count-down_2.entry.js +2 -2
  264. package/dist/esm/salla-custom-fields.entry.js +1 -1
  265. package/dist/esm/salla-delivery-promise.entry.js +1 -1
  266. package/dist/esm/salla-edit-order-button.entry.js +1 -1
  267. package/dist/esm/salla-filters-widget.entry.js +3 -3
  268. package/dist/esm/salla-filters.entry.js +2 -2
  269. package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
  270. package/dist/esm/salla-gifting.entry.js +3 -3
  271. package/dist/esm/salla-hook.entry.js +2 -2
  272. package/dist/esm/salla-infinite-scroll.entry.js +1 -1
  273. package/dist/esm/salla-installment.entry.js +1 -1
  274. package/dist/esm/salla-list-tile.entry.js +2 -2
  275. package/dist/esm/salla-localization-modal.entry.js +2 -2
  276. package/dist/esm/salla-login-modal.entry.js +1 -1
  277. package/dist/esm/salla-loyalty-banner.entry.js +2 -2
  278. package/dist/esm/salla-loyalty-exchange-product-card_5.entry.js +10 -10
  279. package/dist/esm/salla-loyalty-hero_2.entry.js +9 -9
  280. package/dist/esm/salla-loyalty-panel.entry.js +3 -3
  281. package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
  282. package/dist/esm/salla-loyalty-points-history.entry.js +2 -2
  283. package/dist/esm/salla-loyalty-prize-item.entry.js +2 -2
  284. package/dist/esm/salla-loyalty-program.entry.js +3 -3
  285. package/dist/esm/salla-loyalty-reward.entry.js +4 -4
  286. package/dist/esm/salla-loyalty.entry.js +1 -1
  287. package/dist/esm/salla-maintenance-alert.entry.js +2 -2
  288. package/dist/esm/salla-map_2.entry.js +4 -4
  289. package/dist/esm/salla-menu.entry.js +1 -1
  290. package/dist/esm/salla-metadata.entry.js +1 -1
  291. package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +4 -4
  292. package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +6 -6
  293. package/dist/esm/salla-multiple-bundle-product.entry.js +2 -2
  294. package/dist/esm/salla-next-order-coupon.entry.js +1 -1
  295. package/dist/esm/salla-notification-item.entry.js +2 -2
  296. package/dist/esm/salla-notifications.entry.js +1 -1
  297. package/dist/esm/salla-offer-modal.entry.js +2 -2
  298. package/dist/esm/salla-offer.entry.js +1 -1
  299. package/dist/esm/salla-order-branch.entry.js +1 -1
  300. package/dist/esm/salla-order-cancel.entry.js +1 -1
  301. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  302. package/dist/esm/salla-order-details-options.entry.js +1 -1
  303. package/dist/esm/salla-order-details.entry.js +2 -2
  304. package/dist/esm/salla-order-edit-item.entry.js +1 -1
  305. package/dist/esm/salla-order-edit-product-card.entry.js +2 -2
  306. package/dist/esm/salla-order-edit.entry.js +1 -1
  307. package/dist/esm/salla-order-summary.entry.js +2 -2
  308. package/dist/esm/salla-order-totals-card.entry.js +1 -1
  309. package/dist/esm/salla-orders.entry.js +1 -1
  310. package/dist/esm/salla-payments.entry.js +3 -3
  311. package/dist/esm/salla-placeholder.entry.js +2 -2
  312. package/dist/esm/salla-price-range.entry.js +3 -3
  313. package/dist/esm/salla-product-card-embed.entry.js +2 -2
  314. package/dist/esm/salla-product-card_2.entry.js +6 -6
  315. package/dist/esm/salla-product-size-guide.entry.js +3 -3
  316. package/dist/esm/salla-products-list.entry.js +1 -1
  317. package/dist/esm/salla-quick-order.entry.js +1 -1
  318. package/dist/esm/salla-rating-modal-v2.entry.js +1 -1
  319. package/dist/esm/salla-rating-modal.entry.js +1 -1
  320. package/dist/esm/salla-review-factors-tags.entry.js +2 -2
  321. package/dist/esm/salla-scopes.entry.js +1 -1
  322. package/dist/esm/salla-search.entry.js +6 -6
  323. package/dist/esm/salla-skeleton.entry.js +2 -2
  324. package/dist/esm/salla-slider.entry.js +1 -1
  325. package/dist/esm/salla-social-share.entry.js +2 -2
  326. package/dist/esm/salla-social.entry.js +2 -2
  327. package/dist/esm/salla-tab-content_3.entry.js +4 -4
  328. package/dist/esm/salla-tiered-offer.entry.js +1 -1
  329. package/dist/esm/salla-tooltip.entry.js +2 -2
  330. package/dist/esm/salla-trust-badges.entry.js +1 -1
  331. package/dist/esm/salla-user-menu.entry.js +1 -1
  332. package/dist/esm/salla-user-profile.entry.js +1 -1
  333. package/dist/esm/salla-user-settings.entry.js +2 -2
  334. package/dist/esm/salla-verify.entry.js +1 -1
  335. package/dist/esm/salla-wallet.entry.js +1 -1
  336. package/dist/esm/salla-wishlist-actions.entry.js +2 -2
  337. package/dist/esm/{tracked-promise-B5nZ0_u3.js → tracked-promise-CUM6cNiF.js} +1 -1
  338. package/dist/esm/twilight.js +3 -3
  339. package/dist/esm/{vanilla-picker-DrhPsPVG.js → vanilla-picker-kF8Cgi5q.js} +1 -1
  340. package/dist/twilight/{p-4f9905a1.entry.js → p-00d73870.entry.js} +1 -1
  341. package/dist/twilight/{p-ab56087a.entry.js → p-01636f53.entry.js} +1 -1
  342. package/dist/twilight/{p-ed745cc5.entry.js → p-022343f3.entry.js} +1 -1
  343. package/dist/twilight/{p-97a7ab54.entry.js → p-03db477f.entry.js} +1 -1
  344. package/dist/twilight/{p-789a33ab.entry.js → p-04fadfb3.entry.js} +1 -1
  345. package/dist/twilight/{p-7935b94f.entry.js → p-0604eb27.entry.js} +1 -1
  346. package/dist/twilight/{p-d5730ccd.entry.js → p-061fdc55.entry.js} +1 -1
  347. package/dist/twilight/{p-f63f2040.entry.js → p-0a1f28c9.entry.js} +1 -1
  348. package/dist/twilight/{p-3a51e372.entry.js → p-0b814320.entry.js} +1 -1
  349. package/dist/twilight/{p-044967a1.entry.js → p-0bc04e3f.entry.js} +1 -1
  350. package/dist/twilight/{p-bb1aff39.entry.js → p-0c1721e1.entry.js} +1 -1
  351. package/dist/twilight/p-0daa8221.entry.js +4 -0
  352. package/dist/twilight/{p-3240f2c3.entry.js → p-0e6a0989.entry.js} +2 -2
  353. package/dist/twilight/{p-da6a525a.entry.js → p-15c3b0cc.entry.js} +1 -1
  354. package/dist/twilight/{p-20141d72.entry.js → p-168e3ad8.entry.js} +1 -1
  355. package/dist/twilight/{p-c996ee08.entry.js → p-19c6d83a.entry.js} +1 -1
  356. package/dist/twilight/{p-6fb9221a.entry.js → p-1d75fdd9.entry.js} +1 -1
  357. package/dist/twilight/{p-07fa35ce.entry.js → p-2104f800.entry.js} +1 -1
  358. package/dist/twilight/{p-c6-stRrD.js → p-25ZR4Fc8.js} +1 -1
  359. package/dist/twilight/p-286d9ba3.entry.js +4 -0
  360. package/dist/twilight/p-2985e01e.entry.js +4 -0
  361. package/dist/twilight/{p-c3639051.entry.js → p-2c4f4539.entry.js} +1 -1
  362. package/dist/twilight/{p-0597f278.entry.js → p-2c9c0815.entry.js} +1 -1
  363. package/dist/twilight/{p-e5b1f92d.entry.js → p-39389b31.entry.js} +1 -1
  364. package/dist/twilight/{p-b344db5c.entry.js → p-3c96d5af.entry.js} +1 -1
  365. package/dist/twilight/{p-bec932de.entry.js → p-404d3645.entry.js} +1 -1
  366. package/dist/twilight/{p-8ab2b78f.entry.js → p-47c9e882.entry.js} +1 -1
  367. package/dist/twilight/{p-f28da331.entry.js → p-4fb48be8.entry.js} +1 -1
  368. package/dist/twilight/{p-5e58c1d1.entry.js → p-4fff03a8.entry.js} +1 -1
  369. package/dist/twilight/{p-5d72e09d.entry.js → p-51bc9c4d.entry.js} +1 -1
  370. package/dist/twilight/{p-57856a68.entry.js → p-54e43314.entry.js} +1 -1
  371. package/dist/twilight/{p-9965cc1b.entry.js → p-56ba7f94.entry.js} +1 -1
  372. package/dist/twilight/{p-861bf5a5.entry.js → p-5a215130.entry.js} +1 -1
  373. package/dist/twilight/{p-eca28f29.entry.js → p-5cb10852.entry.js} +1 -1
  374. package/dist/twilight/{p-031fe0b8.entry.js → p-5f47eb12.entry.js} +1 -1
  375. package/dist/twilight/{p-ed713905.entry.js → p-5fe29fcf.entry.js} +1 -1
  376. package/dist/twilight/p-67d7bd8b.entry.js +4 -0
  377. package/dist/twilight/{p-8edc1c0d.entry.js → p-6e535738.entry.js} +1 -1
  378. package/dist/twilight/{p-da132465.entry.js → p-72291ad7.entry.js} +1 -1
  379. package/dist/twilight/{p-558d69d0.entry.js → p-72c9cd44.entry.js} +1 -1
  380. package/dist/twilight/{p-6e2214d1.entry.js → p-74cac8a8.entry.js} +1 -1
  381. package/dist/twilight/{p-a306ae65.entry.js → p-74e009df.entry.js} +1 -1
  382. package/dist/twilight/{p-492fd499.entry.js → p-77d816b8.entry.js} +1 -1
  383. package/dist/twilight/{p-8e987fe7.entry.js → p-7b9ed1e4.entry.js} +1 -1
  384. package/dist/twilight/{p-6dbbe6cb.entry.js → p-7df52f7b.entry.js} +1 -1
  385. package/dist/twilight/{p-ffc6f929.entry.js → p-7e730733.entry.js} +1 -1
  386. package/dist/twilight/{p-20b4cc9c.entry.js → p-8658fefd.entry.js} +1 -1
  387. package/dist/twilight/{p-1bbe31ad.entry.js → p-90d53c9b.entry.js} +1 -1
  388. package/dist/twilight/{p-3128bebd.entry.js → p-9196b7a9.entry.js} +1 -1
  389. package/dist/twilight/{p-aa5a77fa.entry.js → p-92d37b3e.entry.js} +1 -1
  390. package/dist/twilight/{p-0e95d192.entry.js → p-92ec265b.entry.js} +1 -1
  391. package/dist/twilight/{p-377b941b.entry.js → p-930ff69a.entry.js} +1 -1
  392. package/dist/twilight/{p-ea2d6310.entry.js → p-931c44fb.entry.js} +1 -1
  393. package/dist/twilight/{p-6b600ab2.entry.js → p-953da0b5.entry.js} +1 -1
  394. package/dist/twilight/{p-f3a4c8c3.entry.js → p-95d8a11b.entry.js} +1 -1
  395. package/dist/twilight/{p-40d12093.entry.js → p-98186fb3.entry.js} +1 -1
  396. package/dist/twilight/{p-0a4a3298.entry.js → p-982ccb80.entry.js} +1 -1
  397. package/dist/twilight/{p-a9b810c4.entry.js → p-99ff235e.entry.js} +1 -1
  398. package/dist/twilight/{p-a1faadfd.entry.js → p-9a161a84.entry.js} +1 -1
  399. package/dist/twilight/{p-44ceacb7.entry.js → p-9c798a1a.entry.js} +1 -1
  400. package/dist/twilight/{p-016788c7.entry.js → p-9cc2e54c.entry.js} +1 -1
  401. package/dist/twilight/{p-a92553f2.entry.js → p-9e27778a.entry.js} +1 -1
  402. package/dist/twilight/{p-DWmThpkK.js → p-BYpv9A8D.js} +1 -1
  403. package/dist/twilight/{p-DHrUX865.js → p-CHOv1Smw.js} +1 -1
  404. package/dist/twilight/{p-en37lqSm.js → p-Ca84RIBI.js} +1 -1
  405. package/dist/twilight/{p-CfWsH_qz.js → p-DMHhYV48.js} +1 -1
  406. package/dist/twilight/{p-CaEa1mkI.js → p-DQXp-sN5.js} +1 -1
  407. package/dist/twilight/{p-Dvsk1fA0.js → p-DYcV7UW8.js} +1 -1
  408. package/dist/twilight/{p-BVVNfOQk.js → p-DYgnIxqR.js} +1 -1
  409. package/dist/twilight/{p-DD7hlkaJ.js → p-DuoSRdS5.js} +1 -1
  410. package/dist/twilight/{p-Caj9IqWn.js → p-KZ7SFw0C.js} +1 -1
  411. package/dist/twilight/{p-153044cb.entry.js → p-a1d3a45f.entry.js} +1 -1
  412. package/dist/twilight/{p-e2a37618.entry.js → p-a2e8a9d1.entry.js} +1 -1
  413. package/dist/twilight/{p-3205307f.entry.js → p-a34c031b.entry.js} +1 -1
  414. package/dist/twilight/{p-96c1a0a1.entry.js → p-a5eeb082.entry.js} +1 -1
  415. package/dist/twilight/{p-9d220aff.entry.js → p-a96e5e06.entry.js} +1 -1
  416. package/dist/twilight/{p-279e6529.entry.js → p-ae83c325.entry.js} +1 -1
  417. package/dist/twilight/{p-393ced29.entry.js → p-aed6d4eb.entry.js} +1 -1
  418. package/dist/twilight/{p-e03a5bb9.entry.js → p-b0437615.entry.js} +1 -1
  419. package/dist/twilight/{p-8b746fed.entry.js → p-bd2672ee.entry.js} +1 -1
  420. package/dist/twilight/{p-7d0bad4e.entry.js → p-bdda14f6.entry.js} +1 -1
  421. package/dist/twilight/p-be973f87.entry.js +4 -0
  422. package/dist/twilight/{p-7fa4c6ed.entry.js → p-c3530e7a.entry.js} +1 -1
  423. package/dist/twilight/{p-94b5d1c0.entry.js → p-c6b82041.entry.js} +1 -1
  424. package/dist/twilight/{p-cf75cffe.entry.js → p-c6d64b53.entry.js} +1 -1
  425. package/dist/twilight/{p-87f4f9ab.entry.js → p-ca0a62f9.entry.js} +1 -1
  426. package/dist/twilight/{p-24244ede.entry.js → p-ca52add5.entry.js} +1 -1
  427. package/dist/twilight/{p-b50b5139.entry.js → p-cd65e560.entry.js} +1 -1
  428. package/dist/twilight/{p-99537f59.entry.js → p-d39bf8b5.entry.js} +1 -1
  429. package/dist/twilight/{p-ffaa3b02.entry.js → p-d3a9573e.entry.js} +1 -1
  430. package/dist/twilight/p-d49130fc.entry.js +4 -0
  431. package/dist/twilight/p-d54b75de.entry.js +4 -0
  432. package/dist/twilight/{p-0f6cf7ae.entry.js → p-d8c9d454.entry.js} +1 -1
  433. package/dist/twilight/{p-24a6d077.entry.js → p-dc6b3dfb.entry.js} +1 -1
  434. package/dist/twilight/{p-753029a4.entry.js → p-e5c2df5a.entry.js} +1 -1
  435. package/dist/twilight/p-eb2e3e67.entry.js +4 -0
  436. package/dist/twilight/{p-a4e19dcc.entry.js → p-ecdf7027.entry.js} +1 -1
  437. package/dist/twilight/{p-f424a0a2.entry.js → p-f060a3dd.entry.js} +1 -1
  438. package/dist/twilight/{p-ed35f803.entry.js → p-f4eba1d1.entry.js} +1 -1
  439. package/dist/twilight/{p-dcfab648.entry.js → p-f5ac65b4.entry.js} +1 -1
  440. package/dist/twilight/{p-3ca34205.entry.js → p-f8d642b2.entry.js} +1 -1
  441. package/dist/twilight/{p-c72ed3d3.entry.js → p-f9912293.entry.js} +1 -1
  442. package/dist/twilight/p-f9a3f3f4.entry.js +4 -0
  443. package/dist/twilight/{p-D5YVbhSD.js → p-kflOqry6.js} +1 -1
  444. package/dist/twilight/{p-U4GQwdjm.js → p-lYj74H1f.js} +1 -1
  445. package/dist/twilight/twilight.esm.js +1 -1
  446. package/dist/types/components/salla-cart-coupons/salla-cart-coupons.d.ts +31 -3
  447. package/package.json +5 -5
  448. package/dist/collection/components/salla-conditional-offer/test/salla-conditional-offer.js +0 -12
  449. package/dist/twilight/p-365cb4e5.entry.js +0 -4
  450. package/dist/twilight/p-4c3435a8.entry.js +0 -4
  451. package/dist/twilight/p-4cf658b6.entry.js +0 -4
  452. package/dist/twilight/p-4f60cdea.entry.js +0 -4
  453. package/dist/twilight/p-8ea1c5b4.entry.js +0 -4
  454. package/dist/twilight/p-b2019ba2.entry.js +0 -4
  455. package/dist/twilight/p-da157fc7.entry.js +0 -4
  456. package/dist/twilight/p-ddfb7d95.entry.js +0 -4
  457. package/dist/twilight/p-ee18ef3e.entry.js +0 -4
  458. package/dist/types/components/salla-conditional-offer/test/salla-conditional-offer.d.ts +0 -1
@@ -3,9 +3,9 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
 
8
- const sallaCartCouponsCss = "";
8
+ const sallaCartCouponsCss = ".s-cart-coupons-applied-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.s-cart-coupons-applied-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;border-inline-start:3px solid #10b981}.s-cart-coupons-applied-code{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#111827}.s-cart-coupons-applied-code::before{content:\"\";width:7px;height:7px;border-radius:9999px;background:#10b981}.s-cart-coupons-applied-remove{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;color:#ef4444;background:transparent;border:0;border-radius:9999px;cursor:pointer;transition:background-color 0.15s ease, color 0.15s ease}.s-cart-coupons-applied-remove:hover{background:#fef2f2}.s-cart-coupons-applied-remove:disabled{opacity:0.5;cursor:not-allowed}";
9
9
 
10
10
  const SallaCartCoupons = class {
11
11
  constructor(hostRef) {
@@ -16,22 +16,46 @@ const SallaCartCoupons = class {
16
16
  this.couponInputValue = '';
17
17
  this.couponError = '';
18
18
  this.isApplying = false;
19
+ // Applied coupon codes rendered as removable chips below the input.
20
+ // - Single-coupon (default): holds at most the one cart coupon.
21
+ // - Multi-coupon (features::multi_coupon on): holds every applied code,
22
+ // sourced from the cart's `coupons` array so it survives a page refresh.
23
+ this.appliedCoupons = [];
24
+ // Whether the store has multi-coupon enabled. Read ONCE from the store config
25
+ // (Salla.config.get('store.settings.cart.multi_coupon')) — a stable store-level setting,
26
+ // exactly like cart.apply_coupon_enabled — not from the per-cart payload or localStorage.
27
+ this.multiCoupon = false;
19
28
  this.isHandlingInternalError = false;
20
29
  // Store cart event listener references for cleanup
21
30
  this.cartUpdatedHandler = (cartData) => {
22
- this.cartTotal = cartData.sub_total ?? cartData.total ?? 0;
23
- // Update current coupon state
24
- const couponCode = cartData.coupon || '';
25
- // Only overwrite the user's typed value when the cart-level coupon itself changes
26
- if (couponCode !== this.currentCoupon) {
27
- this.currentCoupon = couponCode;
28
- this.couponInputValue = couponCode;
31
+ // cart::updated carries the server-side cart. The multi-coupon flag comes from store
32
+ // config (set once in componentWillLoad), so only refresh total + chips here.
33
+ this.cartTotal = cartData?.summary?.sub_total ?? cartData?.sub_total ?? cartData?.total ?? this.cartTotal;
34
+ // Re-sync applied coupon state from the payload mirroring refreshFromServer's guard:
35
+ // - Multi-coupon: only a real `coupons` array re-seeds the chips, so a summary-only
36
+ // cart::updated can't shrink them (add/remove refreshes the chips from the server).
37
+ // - Single-coupon (flag off): any payload carrying `coupon` re-syncs the input, so a
38
+ // server-side invalidation (e.g. cart drops below the coupon minimum) that emits
39
+ // `coupon: ''` clears the stale code instead of leaving it stuck until a reload.
40
+ const carriesCoupons = this.multiCoupon
41
+ ? Array.isArray(cartData?.coupons)
42
+ : (cartData && 'coupon' in cartData);
43
+ if (carriesCoupons) {
44
+ this.syncAppliedFromCart(cartData);
29
45
  }
30
46
  // Clear error when cart updates
31
47
  this.couponError = '';
32
48
  };
33
49
  this.couponAddedHandler = () => {
34
- // Coupon was successfully added - state is managed by cartUpdatedHandler
50
+ // Skip while an internal apply/remove is in flight — handleApplyClick/removeCoupon already
51
+ // refresh from the server, so this handler only needs to cover EXTERNAL coupon changes
52
+ // (e.g. the checkout page). Prevents a duplicate salla.cart.details() call per action.
53
+ if (this.isApplying || this.isHandlingInternalError) {
54
+ return;
55
+ }
56
+ // Re-read the applied set + flag from the SERVER (not storage), so the chips reflect
57
+ // the real cart — a stale storage cache (e.g. after a checkout-page removal) never shows.
58
+ this.refreshFromServer();
35
59
  };
36
60
  this.couponAdditionFailedHandler = (error) => {
37
61
  // Only handle external coupon failures when no internal operation is handling errors
@@ -41,7 +65,12 @@ const SallaCartCoupons = class {
41
65
  // Internal operations handle their own errors to prevent double display
42
66
  };
43
67
  this.couponDeletedHandler = () => {
44
- // Coupon was removed - state is managed by cartUpdatedHandler
68
+ // Same guard as couponAddedHandler: internal removeCoupon already refreshes; only cover
69
+ // EXTERNAL deletions here, so an internal remove doesn't fire two salla.cart.details() calls.
70
+ if (this.isApplying || this.isHandlingInternalError) {
71
+ return;
72
+ }
73
+ this.refreshFromServer();
45
74
  };
46
75
  // Arrow functions to maintain context for event listeners
47
76
  this.onKeyUp = (event) => {
@@ -57,15 +86,20 @@ const SallaCartCoupons = class {
57
86
  async componentWillLoad() {
58
87
  await Salla.onReady();
59
88
  await Salla.lang.onLoaded();
89
+ // Multi-coupon is a store-level setting — read it ONCE from config here (like
90
+ // apply_coupon_enabled), so it never depends on the per-cart payload or localStorage.
91
+ this.multiCoupon = !!salla.config.get('store.settings.cart.multi_coupon');
60
92
  //then set your logic here to avoid any race condition
61
93
  this.loadCouponsData(); // Load async without blocking render - shows empty until loaded
94
+ // Synchronous first-paint seed from the storage cart so an applied coupon shows on the very
95
+ // first render instead of flashing empty → applied while the async server fetch is in flight
96
+ // (the old loadCartTotal read storage synchronously). loadCartTotal() then reconciles with the
97
+ // authoritative server payload, which also corrects a storage coupon that was stale.
98
+ this.seedFromStorage();
62
99
  this.loadCartTotal();
63
100
  this.setupCartEventListeners();
64
101
  // Note: No store feature gate needed - coupon availability controlled by backend API response
65
102
  }
66
- componentDidLoad() {
67
- this.setupCouponInputEvents();
68
- }
69
103
  setupCartEventListeners() {
70
104
  // Listen for cart updates to refresh cart total
71
105
  salla.event.on('cart::updated', this.cartUpdatedHandler);
@@ -75,10 +109,8 @@ const SallaCartCoupons = class {
75
109
  salla.event.on('cart::coupon.deleted', this.couponDeletedHandler);
76
110
  }
77
111
  disconnectedCallback() {
78
- // Clean up DOM event listeners
79
- this.couponInputRef?.removeEventListener('keyup', this.onKeyUp);
80
- this.couponInputRef?.removeEventListener('input', this.onInput);
81
- // Clean up cart event listeners using reliable global event system
112
+ // Input events are bound via JSX (onInput/onKeyUp) — Stencil cleans those up. Only the
113
+ // global cart event listeners need explicit teardown here.
82
114
  salla.event.off('cart::updated', this.cartUpdatedHandler);
83
115
  salla.event.off('cart::coupon.added', this.couponAddedHandler);
84
116
  salla.event.off('cart::coupon.addition.failed', this.couponAdditionFailedHandler);
@@ -124,21 +156,118 @@ const SallaCartCoupons = class {
124
156
  this.availableCoupons = [];
125
157
  }
126
158
  }
127
- loadCartTotal() {
128
- // Get cart total and current coupon from Salla storage
129
- const cart = salla.storage.get('cart');
130
- // Check summary first (more accurate), then cart level, fallback to 0
131
- this.cartTotal = cart?.summary?.sub_total ?? cart?.sub_total ?? 0;
159
+ async loadCartTotal() {
160
+ // Multi-coupon needs the SERVER-authoritative applied list (localStorage can be stale, e.g.
161
+ // coupons removed on the checkout page). Single-coupon (flag off — the default, and the hot
162
+ // path at billions req/day) is fully seeded synchronously by seedFromStorage() with NO network
163
+ // call, exactly as the original implementation read from storage — so skip the
164
+ // salla.cart.details() round-trip for it.
165
+ if (!this.multiCoupon) {
166
+ return;
167
+ }
168
+ await this.refreshFromServer();
169
+ }
170
+ /**
171
+ * Synchronous first-paint seed from the storage cart — SINGLE-COUPON (flag-off) ONLY.
172
+ *
173
+ * It restores the old synchronous first paint Greptile flagged for the default single-coupon
174
+ * stores (the input shows the applied code immediately instead of flashing empty).
175
+ *
176
+ * With multi-coupon ON the applied coupons are SERVER-authoritative: storage can still list a
177
+ * coupon that was invalidated or removed server-side (e.g. dropped below the cart minimum, or
178
+ * removed on another surface), so seeding the chips from it would render a STALE list — e.g.
179
+ * two chips when the server holds one — until the refresh lands. In that mode we skip the seed
180
+ * entirely and let refreshFromServer/cart::updated populate the chips from the server.
181
+ */
182
+ seedFromStorage() {
183
+ if (this.multiCoupon) {
184
+ return;
185
+ }
186
+ const stored = salla.storage.get('cart');
187
+ if (stored && typeof stored === 'object' && 'coupon' in stored) {
188
+ this.applyCart(stored);
189
+ }
190
+ }
191
+ /**
192
+ * Fetch the cart fresh from the server (salla.cart.details -> CartPresenter::forApi) and
193
+ * seed the applied codes + total from its authoritative payload (cart.coupons). Falls back
194
+ * to the storage cart ONLY if the request fails, and never wipes the chips on an odd shape.
195
+ */
196
+ async refreshFromServer() {
197
+ try {
198
+ const response = await salla.cart.details();
199
+ // cart-details nests the cart under data.cart (same shape addCoupon/deleteCoupon read).
200
+ const cart = response?.data?.cart ?? response?.data ?? response;
201
+ if (cart && typeof cart === 'object' &&
202
+ (Array.isArray(cart.coupons) || 'coupon' in cart)) {
203
+ this.applyCart(cart);
204
+ return;
205
+ }
206
+ }
207
+ catch (e) {
208
+ // ignore — fall back to storage below
209
+ }
210
+ const stored = salla.storage.get('cart');
211
+ if (stored) {
212
+ this.applyCart(stored);
213
+ }
214
+ }
215
+ /** Apply an authoritative cart object: total + applied chips (flag comes from store config). */
216
+ applyCart(cart) {
217
+ this.cartTotal = cart?.summary?.sub_total ?? cart?.sub_total ?? this.cartTotal;
218
+ this.syncAppliedFromCart(cart);
219
+ }
220
+ /**
221
+ * Seed the chip list and the active coupon from a cart object.
222
+ * Multi-coupon: use the cart's `coupons` array (survives refresh).
223
+ * Single-coupon (default): use the single `coupon` code.
224
+ */
225
+ syncAppliedFromCart(cart) {
132
226
  this.currentCoupon = cart?.coupon || '';
133
- this.couponInputValue = cart?.coupon || '';
227
+ if (this.multiCoupon) {
228
+ this.appliedCoupons = Array.isArray(cart?.coupons)
229
+ ? cart.coupons.filter(Boolean)
230
+ : (this.currentCoupon ? [this.currentCoupon] : []);
231
+ return;
232
+ }
233
+ // Single-coupon (flag off): mirror the applied code into the (disabled) input, matching the
234
+ // original production UX. Only set at sync points (load / after apply-remove), never on a
235
+ // keystroke, so it won't clobber what the user is typing.
236
+ this.couponInputValue = this.currentCoupon;
237
+ this.appliedCoupons = this.currentCoupon ? [this.currentCoupon] : [];
134
238
  }
135
- setupCouponInputEvents() {
136
- if (!this.couponInputRef || !this.couponButtonRef) {
239
+ async handleApplyClick() {
240
+ if (this.isApplying) {
241
+ return;
242
+ }
243
+ const code = this.couponInputValue.trim();
244
+ if (!code) {
245
+ this.showCouponError(salla.lang.get('pages.cart.enter_coupon_code'));
137
246
  return;
138
247
  }
139
- this.couponInputRef.addEventListener('keyup', this.onKeyUp);
140
- this.couponInputRef.addEventListener('input', this.onInput);
248
+ this.isApplying = true;
249
+ this.isHandlingInternalError = true;
250
+ try {
251
+ // Apply the coupon. Multi-coupon: the backend appends it; single-coupon:
252
+ // it replaces the existing one. Re-read the applied set from the SERVER (not storage)
253
+ // for the chip list, and clear the input for the next code.
254
+ await salla.cart.addCoupon(code);
255
+ await this.refreshFromServer();
256
+ this.couponInputValue = '';
257
+ }
258
+ catch (error) {
259
+ this.showCouponError(error.response?.data?.error?.message || salla.lang.get('pages.cart.coupon_application_error'));
260
+ }
261
+ finally {
262
+ this.isApplying = false;
263
+ // Keep internal error flag active briefly to prevent race condition with SDK event
264
+ setTimeout(() => {
265
+ this.isHandlingInternalError = false;
266
+ }, 100);
267
+ }
141
268
  }
269
+ // Single-coupon (flag off) toggle button: apply the typed code, or remove the applied one.
270
+ // Mirrors the original production behavior; the SDK coupon.added/deleted events then refresh.
142
271
  async handleCouponButtonClick() {
143
272
  if (this.isApplying) {
144
273
  return;
@@ -152,13 +281,42 @@ const SallaCartCoupons = class {
152
281
  this.isHandlingInternalError = true;
153
282
  try {
154
283
  if (hasCoupon) {
155
- // Remove existing coupon
156
284
  await salla.cart.deleteCoupon();
157
285
  }
158
286
  else {
159
- // Apply new coupon
160
287
  await salla.cart.addCoupon(this.couponInputValue.trim());
161
288
  }
289
+ // Refresh the UI directly for the single-coupon toggle. The coupon.added/deleted event
290
+ // handlers skip internal actions (isApplying guard), and cartUpdatedHandler doesn't
291
+ // re-seed from a summary-only payload — so without this refresh the input/button would
292
+ // stay stuck after a successful apply/remove on the default (flag-off) path.
293
+ await this.refreshFromServer();
294
+ }
295
+ catch (error) {
296
+ this.showCouponError(error.response?.data?.error?.message || salla.lang.get('pages.cart.coupon_application_error'));
297
+ }
298
+ finally {
299
+ this.isApplying = false;
300
+ setTimeout(() => {
301
+ this.isHandlingInternalError = false;
302
+ }, 100);
303
+ }
304
+ }
305
+ async removeCoupon(code) {
306
+ if (this.isApplying) {
307
+ return;
308
+ }
309
+ this.isApplying = true;
310
+ this.isHandlingInternalError = true;
311
+ try {
312
+ // Multi-coupon: remove just this code. Single-coupon: reset the cart coupon.
313
+ if (this.multiCoupon) {
314
+ await salla.cart.deleteCoupon(code);
315
+ }
316
+ else {
317
+ await salla.cart.deleteCoupon();
318
+ }
319
+ await this.refreshFromServer();
162
320
  }
163
321
  catch (error) {
164
322
  this.showCouponError(error.response?.data?.error?.message || salla.lang.get('pages.cart.coupon_application_error'));
@@ -197,6 +355,16 @@ const SallaCartCoupons = class {
197
355
  try {
198
356
  // Apply the coupon directly without checking for existing coupon
199
357
  await salla.cart.addCoupon(couponCode.trim());
358
+ // Refresh the chips/input directly — the guarded coupon.added handler skips internal
359
+ // actions, so the coupon-card / selectCoupon path must refresh here or the chip list
360
+ // stays stale in multi-coupon mode until the next cart::updated with a coupons[] array.
361
+ await this.refreshFromServer();
362
+ // Multi-coupon: clear the input for the next code. Single-coupon: refreshFromServer
363
+ // already set the input to the applied code (shown disabled), so keep it — clearing
364
+ // here would blank the disabled field on the default flag-off path.
365
+ if (this.multiCoupon) {
366
+ this.couponInputValue = '';
367
+ }
200
368
  }
201
369
  catch (error) {
202
370
  this.showCouponError(error.response?.data?.error?.message || salla.lang.get('pages.cart.coupon_application_error'));
@@ -242,7 +410,18 @@ const SallaCartCoupons = class {
242
410
  : `${salla.lang.get('pages.cart.expires_after')} ${coupon.remaining_days} ${salla.lang.get('pages.cart.day')}`)), coupon.minimum_amount && parseFloat(coupon.minimum_amount.amount) > 0 && (index.h("div", { class: "s-cart-coupons-minimum" }, salla.lang.get('pages.cart.minimum'), " ", index.h("span", { innerHTML: salla.money(coupon.minimum_amount.amount, coupon.minimum_amount.currency) })))), index.h("div", { class: "s-cart-coupons-action" }, isEligible ? salla.lang.get('pages.cart.save_coupon') : salla.lang.get('pages.cart.coupon_not_compatible'))))));
243
411
  }
244
412
  render() {
245
- return (index.h(index.Host, { key: '09c964ef1b706cd623f5b99b9606ecf93486e8b5' }, index.h("div", { key: 'a3b3313ecbc23821cca29115f1189ca2dfbcbb48', class: "s-cart-coupons-wrapper" }, index.h("div", { key: '27bc855b95d252a4feffc256fdef70b7d83aa4b3', class: "s-cart-coupons-input-section" }, index.h("label", { key: 'd17fff32352bc8e0535986519d5e22dda7879754', htmlFor: "coupon-input", class: "s-cart-coupons-coupon-label" }, salla.lang.get('pages.cart.have_coupon')), index.h("div", { key: '4e9acdb76110fffbd6984fa522fa91440d8c3bc6', class: "s-cart-coupons-coupon-input-container" }, index.h("input", { key: '2f0e3ee9a44db390caeeb4e85f40aab825c91182', type: "text", id: "coupon-input", name: "coupon", class: `form-input ${this.couponError ? 's-coupon-input-error' : ''}`, placeholder: salla.lang.get('pages.cart.coupon_placeholder'), value: this.couponInputValue, disabled: !!this.currentCoupon || this.isApplying, ref: el => this.couponInputRef = el, "aria-label": salla.lang.get('pages.cart.apply_coupon') }), index.h("salla-button", { key: 'a7356872f2eaae51bf77207c0fcfd10ea3c25313', ref: el => this.couponButtonRef = el, class: `s-cart-coupons-coupon-button ${this.currentCoupon ? 's-cart-coupons-coupon-button-remove' : 's-cart-coupons-coupon-button-apply'}`, color: this.currentCoupon ? 'danger' : 'primary', loading: this.isApplying, "loader-position": "center", onClick: () => this.handleCouponButtonClick() }, this.currentCoupon ? (index.h("i", { class: "sicon-cancel" })) : (index.h("span", null, salla.lang.get('pages.cart.save_coupon'))))), this.couponError && (index.h("span", { key: '4d0b025d425e2fbba8f313b92c1e257042c549b0', class: "s-cart-coupons-coupon-error" }, this.couponError))), this.availableCoupons && this.availableCoupons.length > 0 && (index.h("salla-slider", { key: 'ac6a96179ec2990f8fedfd3cbb63404e7fe60edf', type: "carousel", showControls: false, class: "s-cart-coupons-slider" }, index.h("div", { key: '7c4f2641aa87a91d55d88d5fc0a375a5d3114a99', slot: "items" }, this.availableCoupons.map(coupon => this.renderCouponCard(coupon))))))));
413
+ return (index.h(index.Host, { key: '30a1ee00e7ec27d12012823347cbcf3c477834e5' }, index.h("div", { key: '6f84298e9ebd6c50c84fb9a3736d734996e39c33', class: "s-cart-coupons-wrapper" }, index.h("div", { key: 'b95a1c2b29d2fed54fdf143eac8e37add062668b', class: "s-cart-coupons-input-section" }, index.h("label", { key: 'e6711fae70db31f8a5987cb58f0488e974394e1c', htmlFor: "coupon-input", class: "s-cart-coupons-coupon-label" }, salla.lang.get('pages.cart.have_coupon')), index.h("div", { key: '824b806c6aa40fb039f659fe81f6cb7686f46b10', class: "s-cart-coupons-coupon-input-container" }, this.multiCoupon ? [
414
+ // Multi-coupon: input stays active to append more codes; applied coupons render
415
+ // as removable chips below.
416
+ index.h("input", { type: "text", id: "coupon-input", name: "coupon", class: `form-input ${this.couponError ? 's-coupon-input-error' : ''}`, placeholder: salla.lang.get('pages.cart.coupon_placeholder'), value: this.couponInputValue, disabled: this.isApplying, onInput: this.onInput, onKeyUp: this.onKeyUp, "aria-label": salla.lang.get('pages.cart.apply_coupon'), key: "coupon-input" }),
417
+ index.h("salla-button", { ref: el => this.couponButtonRef = el, class: "s-cart-coupons-coupon-button s-cart-coupons-coupon-button-apply", color: "primary", loading: this.isApplying, "loader-position": "center", onClick: () => this.handleApplyClick(), key: "apply-button" }, index.h("span", null, salla.lang.get('pages.cart.save_coupon'))),
418
+ ] : [
419
+ // Single-coupon (flag off): the ORIGINAL production UX — the field is disabled and
420
+ // shows the applied code, and the button toggles to a red X (danger) to remove it;
421
+ // a new code can only be entered after removing. Reuses the existing master classes.
422
+ index.h("input", { type: "text", id: "coupon-input", name: "coupon", class: `form-input ${this.couponError ? 's-coupon-input-error' : ''}`, placeholder: salla.lang.get('pages.cart.coupon_placeholder'), value: this.couponInputValue, disabled: !!this.currentCoupon || this.isApplying, onInput: this.onInput, onKeyUp: this.onKeyUp, "aria-label": salla.lang.get('pages.cart.apply_coupon'), key: "coupon-input" }),
423
+ index.h("salla-button", { ref: el => this.couponButtonRef = el, class: `s-cart-coupons-coupon-button ${this.currentCoupon ? 's-cart-coupons-coupon-button-remove' : 's-cart-coupons-coupon-button-apply'}`, color: this.currentCoupon ? 'danger' : 'primary', loading: this.isApplying, "loader-position": "center", onClick: () => this.handleCouponButtonClick(), key: "apply-button" }, this.currentCoupon ? (index.h("i", { class: "sicon-cancel" })) : (index.h("span", null, salla.lang.get('pages.cart.save_coupon')))),
424
+ ]), this.couponError && (index.h("span", { key: '0f3b36e8192777fb7e7d0a065fe720c009065f9d', class: "s-cart-coupons-coupon-error" }, this.couponError)), this.multiCoupon && this.appliedCoupons.length > 0 && (index.h("div", { key: 'b680e30bd1ae49db5e304440431cdc89c6e5d051', class: "s-cart-coupons-applied-list" }, this.appliedCoupons.map(code => (index.h("div", { class: "s-cart-coupons-applied-item", key: code }, index.h("span", { class: "s-cart-coupons-applied-code" }, code), index.h("button", { type: "button", class: "s-cart-coupons-applied-remove", "aria-label": `${salla.lang.get('pages.cart.delete')} ${code}`, disabled: this.isApplying, onClick: () => this.removeCoupon(code) }, index.h("i", { class: "sicon-cancel" })))))))), this.availableCoupons && this.availableCoupons.length > 0 && (index.h("salla-slider", { key: 'a2d312dbf6e997939f54c7867ef0d98091bbde4a', type: "carousel", showControls: false, class: "s-cart-coupons-slider" }, index.h("div", { key: 'b474dcbdeabc26bef5ecba94dd78ef72a60950df', slot: "items" }, this.availableCoupons.map(coupon => this.renderCouponCard(coupon))))))));
246
425
  }
247
426
  get host() { return index.getElement(this); }
248
427
  };
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
  var specialDiscount = require('./special-discount-DC2oXurL.js');
8
8
  var gift = require('./gift-DbNivqYO.js');
9
9
  var tagMoney = require('./tag-money-Cuohw_4j.js');
@@ -231,7 +231,7 @@ const SallaCartSummary = class {
231
231
  return cartUrl;
232
232
  }
233
233
  render() {
234
- return (index.h(index.Host, { key: '96a4c4fc3942df69e884ba44559adbec55743658' }, index.h("a", { key: 'e28c48fef8ade7f46c1dc1747baeeb16b70f8732', class: "s-cart-summary-wrapper", href: this.getCartLink(), onClick: this.handleCheckoutClick }, index.h("div", { key: '4fed123336b4aa1892da9d83250321d837d684aa', id: "s-cart-icon" }, index.h("slot", { key: '365962ccc1d83f4437718f93ca15358fcce7113d', name: "icon" }, index.h("i", { key: '88870c2a2c4c21476d96e2253ea8b0c911bd493c', class: "s-cart-summary-icon", innerHTML: cart.PendingOrdersIcon }))), index.h("span", { key: '29a8d5436bd72355bc639cbd827a1c223bfe6f9b', class: "s-cart-summary-count" }, salla.helpers.number(this.cartSummaryCount)), index.h("p", { key: '630577903ec4a57177101cdc88b3f8e7d68ec676', class: "s-cart-summary-content" }, this.showCartLabel && index.h("span", { key: '5f61a936210a79ead537d6339a23dc73c7c91a88', class: "s-cart-summary-label" }, this.cartLabel), index.h("b", { key: 'b23c5f1cec4c520e2e789daa8e3af993ec1b5e49', class: "s-cart-summary-total", innerHTML: salla.money(this.cartSummaryTotal) })))));
234
+ return (index.h(index.Host, { key: '27e472fb912afff849c94a8a93a9a71778c6819d' }, index.h("a", { key: 'f9ef99f2a7205fcfdc0bdd799b1b751ab40bcb35', class: "s-cart-summary-wrapper", href: this.getCartLink(), onClick: this.handleCheckoutClick }, index.h("div", { key: '1b0d26d3e17b0fb5d6b2cbdc1cd14c079a5fb47b', id: "s-cart-icon" }, index.h("slot", { key: '3c64b2afa8782a4018dd086e657f16373a91f997', name: "icon" }, index.h("i", { key: '46f1cebfa346e20d27f8ffed1206c05828be004a', class: "s-cart-summary-icon", innerHTML: cart.PendingOrdersIcon }))), index.h("span", { key: '72bd9fc2d2949b74109b9e57e823c4c4cc99d287', class: "s-cart-summary-count" }, salla.helpers.number(this.cartSummaryCount)), index.h("p", { key: 'd65efd069e4f5968c8f592bf341b35853b000bda', class: "s-cart-summary-content" }, this.showCartLabel && index.h("span", { key: 'ecbd5350d56131aee746913bb7c6e662431f7001', class: "s-cart-summary-label" }, this.cartLabel), index.h("b", { key: 'aeebd5d52966dc183111e49289061c3649087a8f', class: "s-cart-summary-total", innerHTML: salla.money(this.cartSummaryTotal) })))));
235
235
  }
236
236
  get host() { return index.getElement(this); }
237
237
  };
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
 
8
8
  const SKELETON_ROWS = [
9
9
  { label: '100px', value: '56px' },
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
 
8
8
  var StarFilledIcon = `<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
9
9
  <g clip-path="url(#clip0_5667_2008)">
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
 
8
8
  const sallaCommentsCss = ":host{display:block}.s-comments-item-review-factors-toggle{display:inline-flex;align-items:center;gap:0.35rem;padding:0;border:0;background:transparent;color:#0f6a7c;font-size:0.9rem;font-weight:500;cursor:pointer}.s-comments-item-review-factors-chevron{line-height:1;transform:rotate(180deg);transition:transform 0.2s ease}.s-comments-item-review-factors-chevron.is-open{transform:rotate(0deg)}.s-comments-item-review-factors{border:1px solid #e8e8e8;background:rgba(255, 255, 255, 0.3);border-radius:0.6rem;width:min(100%, 26rem);max-width:100%;margin:0 0 1rem;padding:0.85rem 1rem}@media (max-width: 767px){.s-comments-item-review-factors{width:100%;padding:0.75rem}}.s-comments-item-review-factor-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;direction:ltr;min-width:0}@media (max-width: 767px){.s-comments-item-review-factor-row{flex-direction:row;align-items:stretch;gap:0.35rem}}.s-comments-item-review-factor-row+.s-comments-item-review-factor-row{margin-top:0.5rem}.s-comments-item-review-factor-label,.s-comments-item-review-factor-name{color:#4b5563;font-size:0.9rem;line-height:1.45}.s-comments-item-review-factor-name{min-width:6.5rem;text-align:end;flex-shrink:0}@media (max-width: 767px){.s-comments-item-review-factor-name{min-width:5rem;text-align:end}}.s-comments-item-review-factor-label{display:inline-block;min-width:4.75rem}@media (max-width: 767px){.s-comments-item-review-factor-label{min-width:0;flex:1 1 auto}}.s-comments-item-review-factor-value{display:inline-flex;align-items:center;gap:0.35rem;min-width:0}@media (max-width: 767px){.s-comments-item-review-factor-value{width:100%;justify-content:space-between;gap:0.25rem}}.s-comments-item-review-factor-stars{flex-shrink:0}.s-comments-item-review-factor-stars .s-rating-stars-wrapper{gap:0}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
  var check = require('./check-BnVBPQNp.js');
8
8
  var anime_es = require('./anime.es-BqW8JHZi.js');
9
9
  var Helper = require('./Helper-B2B-kxAI.js');
@@ -51,7 +51,7 @@ const SallaCommentForm = class {
51
51
  .finally(() => this.submitBtn.stop());
52
52
  }
53
53
  render() {
54
- return (index.h(index.Host, { key: 'c3c4acb833a93d11b2c71eb77742319c8085968c' }, !!this.canComment ? index.h("form", { ref: frm => this.commentForm = frm }, index.h("div", { class: "s-comment-form-wrapper" }, this.showAvatar ?
54
+ return (index.h(index.Host, { key: '0e3a24dcfe8922106b9479aa559cf0e126bc3fcf' }, !!this.canComment ? index.h("form", { ref: frm => this.commentForm = frm }, index.h("div", { class: "s-comment-form-wrapper" }, this.showAvatar ?
55
55
  index.h("img", { class: "s-comment-form-avatar", src: salla.config.get('user.avatar'), alt: "user avatar" }) : '', index.h("div", { class: "s-comment-form-content" }, index.h("textarea", { cols: 30, rows: 5, minlength: "4", maxlength: "500", ref: field => this.commentField = field, placeholder: this.placeholder, class: "s-comment-form-input", required: true }), index.h("br", null), index.h("div", { class: "s-comment-form-action" }, index.h("salla-button", { ref: btn => this.submitBtn = btn, "loader-position": 'center', onClick: () => this.submit() }, this.submitText))))) : ''));
56
56
  }
57
57
  };
@@ -914,7 +914,7 @@ const SallaReviewCard = class {
914
914
  return (index.h("a", { href: this.review?.product?.url, class: "s-review-card-product-container" }, index.h("img", { alt: product.image?.alt || "Product", src: product.image?.url, class: "s-review-card-product-image", width: 60, height: 60, loading: "lazy", decoding: "async", draggable: false }), index.h("div", { class: "s-review-card-product-details" }, index.h("p", { class: "s-review-card-product-details-name" }, product.name), this.showPurchaseCount ? index.h("p", { class: "s-review-card-product-details-purchase-count" }, index.h("span", { innerHTML: IconFire2 }), this.purchasedCount) : null)));
915
915
  }
916
916
  render() {
917
- return index.h("div", { key: '0772f783fe893c4d03a6d698909a09ecedb69fa6', class: "s-review-card-container" }, this.renderSlider(), this.renderSingleImage(), renderDivider(), index.h("div", { key: '5780bb57a79c04cef6cede906ce086f6811dad3c', class: "s-review-card-content" }, this.renderHeader(), index.h("p", { key: '7889fe4dfaf52d2e54adb667f21fc2fced195dd6', class: "s-review-card-review-content", innerHTML: this.review?.content }), renderDivider(), this.renderProductInfo()));
917
+ return index.h("div", { key: '3fd3fe6c1bdb3a160c9f267ba0653155d0334e44', class: "s-review-card-container" }, this.renderSlider(), this.renderSingleImage(), renderDivider(), index.h("div", { key: '63b0be0923c9f4db0195f91a24e4ed05591cdb3b', class: "s-review-card-content" }, this.renderHeader(), index.h("p", { key: '9b16ebeb60b400a8afcd1eaa0b8097a9b0c3b062', class: "s-review-card-review-content", innerHTML: this.review?.content }), renderDivider(), this.renderProductInfo()));
918
918
  }
919
919
  get el() { return index.getElement(this); }
920
920
  };
@@ -1011,7 +1011,7 @@ const SallaReviews = class {
1011
1011
  });
1012
1012
  }
1013
1013
  render() {
1014
- return (index.h("div", { key: '242c98e813b49a8fae5b1f58a1bc7e61425834bd', class: "s-reviews-container" }, index.h("div", { key: 'a896d0fda0e9c5a784e813590ded4cdf9ae0e6ae', class: "s-reviews-header-wrapper" }, index.h("h1", { key: 'ff085d49e3363d305389ae36e14ebb01151ebe46', class: "s-reviews-header" }, this.testimonialText), !!this.displayAllLink ? (index.h("a", { href: this.displayAllURL, class: "s-reviews-display-all" }, this.displayAllLinkText, index.h("span", { class: "s-reviews-display-all-icon", innerHTML: arrowLeft.arrowLeft }))) : null), index.h("salla-slider", { key: 'a6baa7db6f0a1233a46897caaea76469b945f681', centered: true, "slides-per-view": 1, type: "testimonials", class: "s-reviews-testimonials-slider", "controls-outer": true, "auto-play": true, id: `testimonials-${this.source}-slider` }, index.h("div", { key: 'edb56b99674d534fc4b18178816cbced4ed22882', slot: "items" }, this.reviews.map((item, index$1) => (index.h("div", { key: index$1, class: "s-reviews-swiper-slide" }, index.h("div", { class: "s-reviews-testimonial" }, index.h("div", { class: "s-reviews-testimonial__inner" }, index.h("div", { class: "s-reviews-testimonial__avatar" }, index.h("img", { src: 'images/s-empty.png', "data-src": item.avatar, alt: item.name ? item.name : 'testimonial-' + index$1, class: "lazy" })), index.h("div", { class: "s-reviews-testimonial__text" }, index.h("p", { innerHTML: item.content }), index.h("div", { class: "s-reviews-testimonial__name_wrapper" }, index.h("div", { class: "s-reviews-testimonial__info" }, item.name && index.h("h2", null, `${item.name}`)), index.h("div", { class: "s-reviews-testimonial__rating" }, index.h("salla-rating-stars", { size: "small", value: item.stars })))), index.h("span", { class: "s-reviews-testimonial__icon", innerHTML: IconQuoteOpen }))))))))));
1014
+ return (index.h("div", { key: '24e50ca2634208ad3ffcb9ca503aa7e18331b3a1', class: "s-reviews-container" }, index.h("div", { key: 'a1632306fc1a92051d030707aab075c825537e01', class: "s-reviews-header-wrapper" }, index.h("h1", { key: 'e2a4df75011da111e89c1b732e7741ddf452b9d5', class: "s-reviews-header" }, this.testimonialText), !!this.displayAllLink ? (index.h("a", { href: this.displayAllURL, class: "s-reviews-display-all" }, this.displayAllLinkText, index.h("span", { class: "s-reviews-display-all-icon", innerHTML: arrowLeft.arrowLeft }))) : null), index.h("salla-slider", { key: '89009e55e3a5121c241295efd510405b623f45c3', centered: true, "slides-per-view": 1, type: "testimonials", class: "s-reviews-testimonials-slider", "controls-outer": true, "auto-play": true, id: `testimonials-${this.source}-slider` }, index.h("div", { key: '8b6b8df42043c8ecdb05dbbc30ecacde297f0dda', slot: "items" }, this.reviews.map((item, index$1) => (index.h("div", { key: index$1, class: "s-reviews-swiper-slide" }, index.h("div", { class: "s-reviews-testimonial" }, index.h("div", { class: "s-reviews-testimonial__inner" }, index.h("div", { class: "s-reviews-testimonial__avatar" }, index.h("img", { src: 'images/s-empty.png', "data-src": item.avatar, alt: item.name ? item.name : 'testimonial-' + index$1, class: "lazy" })), index.h("div", { class: "s-reviews-testimonial__text" }, index.h("p", { innerHTML: item.content }), index.h("div", { class: "s-reviews-testimonial__name_wrapper" }, index.h("div", { class: "s-reviews-testimonial__info" }, item.name && index.h("h2", null, `${item.name}`)), index.h("div", { class: "s-reviews-testimonial__rating" }, index.h("salla-rating-stars", { size: "small", value: item.stars })))), index.h("span", { class: "s-reviews-testimonial__icon", innerHTML: IconQuoteOpen }))))))))));
1015
1015
  }
1016
1016
  };
1017
1017
  SallaReviews.style = sallaReviewsCss;
@@ -1691,7 +1691,7 @@ const SallaReviewsPage = class {
1691
1691
  return options.map(option => (index.h("option", { key: option.value, value: option.value, selected: option.value === this.sort }, option.label)));
1692
1692
  }
1693
1693
  render() {
1694
- return (index.h("host", { key: '3bb188bd0ddcff6333a47ad3821ad9f75706ac6a' }, index.h("div", { key: 'ae139cb0f8e4921e95c695ececc6633e79486ae0', class: "s-reviews-page-header-wrapper" }, index.h("h2", { key: '422bc1b53c10d0c0e87b701580e049fde71f2871', class: "s-reviews-page-title" }, this.langTitlesReviews, index.h("span", { key: 'd43661c7d358ba1bc99762fdd92b0c9e68a86427', class: "s-reviews-page-count" }, "(", this.langRatingReviews, ")")), index.h("div", { key: '3255662d8c1895bf640ae02e480a1c597e37ff87', class: "s-reviews-page-filter-wrapper" }, index.h("label", { key: 'c2d02265c6adde573a9e282380e670ed2926e68a', class: "s-reviews-page-filter-label", htmlFor: "testimonials-filter" }, this.langSorting), index.h("select", { key: '67de9329c56bd70740e66c3c119a6396ce1c6006', onChange: (e) => this.handleSorting(e), disabled: !this.reviews.length, class: "s-reviews-page-filter" }, this.renderSortingOptions()))), this.reviews.length ? index.h("main", { class: "s-reviews-page-grid", ref: el => {
1694
+ return (index.h("host", { key: 'b82b491ae189f825367881b7b4f03ad64e471aae' }, index.h("div", { key: 'd124f10806cfabd1c1f85044786541011edff3ff', class: "s-reviews-page-header-wrapper" }, index.h("h2", { key: '30c58bb14bea27da968e874a0c1454a35e8db207', class: "s-reviews-page-title" }, this.langTitlesReviews, index.h("span", { key: '8850771469ae20d1b07efcb45be58738de377e6d', class: "s-reviews-page-count" }, "(", this.langRatingReviews, ")")), index.h("div", { key: '5a0060c5bdbfe4d37003b04d4c6368460be8cd38', class: "s-reviews-page-filter-wrapper" }, index.h("label", { key: '637d1aeec005ae662c6019c423ef3f1c3a6ff264', class: "s-reviews-page-filter-label", htmlFor: "testimonials-filter" }, this.langSorting), index.h("select", { key: '5b68b9441d4647f12583c71da61958c30c0dcda6', onChange: (e) => this.handleSorting(e), disabled: !this.reviews.length, class: "s-reviews-page-filter" }, this.renderSortingOptions()))), this.reviews.length ? index.h("main", { class: "s-reviews-page-grid", ref: el => {
1695
1695
  this.wrapper = el;
1696
1696
  } }, this.reviews.map(review => (index.h("salla-review-card", { key: review.id, review: review }))))
1697
1697
  : index.h("div", { class: "s-products-list-placeholder" }, index.h("span", { innerHTML: shoppingBag.ShoppingBag }), index.h("p", null, this.placeholderText)), this.pagination?.links?.next && this.reviews.length ? (index.h("div", { class: "s-reviews-page-load-more-container" }, index.h("salla-button", { class: "s-reviews-page-load-more-btn", loading: this.isLoading, onClick: () => this.infiniteScroll?.loadNextPage(), onKeyUp: () => this.infiniteScroll?.loadNextPage() }, this.langLoadMore))) : null));
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.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-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
  var whatsapp2 = require('./whatsapp2-BdMd5Gx1.js');
8
8
  var mail = require('./mail-C9D8MHae.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
 
8
8
  const sallaCookiesBarCss = ":host{display:block;overflow:visible}.s-cookies-bar{box-shadow:0 0 20px 4px rgba(0, 0, 0, 0.15)}.s-cookies-bar-btn--active{box-shadow:0 0 0 2px rgba(0, 0, 0, 0.08)}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
 
8
8
  const sallaCountDownCss = ".s-count-down-horizontal{background-color:rgba(0, 0, 0, 0.06);background-color:color-mix(in srgb, var(--color-primary) 10%, transparent)}";
9
9
 
@@ -234,7 +234,7 @@ const SallaCountDown = class {
234
234
  return this.renderCountDown();
235
235
  }
236
236
  render() {
237
- return (index.h(index.Host, { key: '7055acd8fb89549ceff1f1b23f36c2dcf5f8dde0', class: `s-count-down-wrapper ${this.preOrder && this.isValidDate(this.date) ? 's-count-down-pre-order' : ''} ${this.horizontal ? 's-count-down-horizontal' : ''} ${this.withButton ? 's-count-down-with-button' : ''} ${this.offerEnded ? 's-count-down-ended' : ''}` }, this.renderPrefixText(), this.renderContent(), this.offerEnded && this.renderOfferEnded(), this.renderButton()));
237
+ return (index.h(index.Host, { key: '966a6ce961c0cc07b937d9b8e328211377084d44', class: `s-count-down-wrapper ${this.preOrder && this.isValidDate(this.date) ? 's-count-down-pre-order' : ''} ${this.horizontal ? 's-count-down-horizontal' : ''} ${this.withButton ? 's-count-down-with-button' : ''} ${this.offerEnded ? 's-count-down-ended' : ''}` }, this.renderPrefixText(), this.renderContent(), this.offerEnded && this.renderOfferEnded(), this.renderButton()));
238
238
  }
239
239
  };
240
240
  SallaCountDown.style = sallaCountDownCss;
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
  var camera = require('./camera-DytepEoK.js');
8
8
  var interfaces = require('./interfaces-CRqrf5RX.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
 
8
8
  const DEBUG_KEY = 'salla-delivery-promise-debug';
9
9
  function log(message, data) {
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
 
8
8
  const sallaEditOrderButtonCss = ":host{display:block}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
  var Helper = require('./Helper-B2B-kxAI.js');
8
8
  var interfaces = require('./interfaces-DZDQwN6-.js');
9
9
  require('./anime.es-BqW8JHZi.js');
@@ -178,12 +178,12 @@ const SallaFiltersWidget = class {
178
178
  return index.h("span", { class: "s-filters-option-name" }, label);
179
179
  }
180
180
  render() {
181
- return (index.h(index.Host, { key: '3ea32331738365fc422b500b3e70fa590d4dbdb5', class: "s-filters-widget-container" }, index.h("h3", { key: 'c5cb7a27841bf85e4c108e15d606c1c45059e5ca', class: "s-filters-widget-title", onClick: () => this.toggleWidget() }, index.h("span", { key: '641164d403dd4c9b79a540f4da5829f5238cded4' }, this.option.label), index.h("span", { key: '5cf687d80ff627f306f5876f69b799b6b7a3813d', class: `s-filters-widget-plusminus ${this.isOpen ? 's-filters-widget-plusminus-active' : ''}` })), index.h("div", { key: 'd9b753223b4fb1c468ed6c4c3a269b861bc5b34b', class: "s-filters-widget-content", ref: (el) => this.widgetContent = el }, Array.isArray(this.option.values) && this.option.values.length > 5 && (index.h("div", { key: '0ca4f8c598e5965e23ef56610df7afc31799f168', class: "s-filters-widget-search-wrapper", style: { padding: '8px 0', marginBottom: '8px' } }, index.h("input", { key: '7b43ec84dcbeb5b7f9cbe9335133e32c278c00fd', type: "text", class: "s-filters-widget-search-input", placeholder: salla.lang.get('blocks.header.search_placeholder') || 'بحث...', value: this.searchQuery, onInput: (e) => this.searchQuery = e.target.value }))), index.h("div", { key: '5bf79fc5f51389d087fed93acee51a097a46af65', class: "s-filters-widget-values", ref: (el) => this.widgetValues = el }, index.h("slot", { key: '8dacd49ba003562d347a6c1b62e85ac447a62fcb' }), this.option.type !== interfaces.FilterOptionTypes.RANGE
181
+ return (index.h(index.Host, { key: '831f7655b903634e0eb3abc7338ea3296883cbbf', class: "s-filters-widget-container" }, index.h("h3", { key: '72a31fb2c9adab3df37550e930d5be981aafd8f6', class: "s-filters-widget-title", onClick: () => this.toggleWidget() }, index.h("span", { key: '7512914e8a7348d146384d67f117c8b06507def0' }, this.option.label), index.h("span", { key: '50d62723255618a2a51512722388ff686c92bdab', class: `s-filters-widget-plusminus ${this.isOpen ? 's-filters-widget-plusminus-active' : ''}` })), index.h("div", { key: '76792390d33c2051082541e18e9b354b2b63c644', class: "s-filters-widget-content", ref: (el) => this.widgetContent = el }, Array.isArray(this.option.values) && this.option.values.length > 5 && (index.h("div", { key: 'b39462721ff4572b3572c0ed6171c07fa53b57a9', class: "s-filters-widget-search-wrapper", style: { padding: '8px 0', marginBottom: '8px' } }, index.h("input", { key: '759b2ab6b80d0fd0bb03fcd3746414d9e4b80c7d', type: "text", class: "s-filters-widget-search-input", placeholder: salla.lang.get('blocks.header.search_placeholder') || 'بحث...', value: this.searchQuery, onInput: (e) => this.searchQuery = e.target.value }))), index.h("div", { key: 'db918c4a43bebc35c23810dc97736584504d0e47', class: "s-filters-widget-values", ref: (el) => this.widgetValues = el }, index.h("slot", { key: '92dc440b79ed0929a39db7a4a96a1981f3b49974' }), this.option.type !== interfaces.FilterOptionTypes.RANGE
182
182
  ? this.renderFilterOption(this.option)
183
183
  : index.h("salla-price-range", { onChanged: (event) => {
184
184
  this.changed.emit(event.detail);
185
185
  }, ref: price => this.priceRange = price, filtersData: this.filtersData, option: this.option })), this.withLoadMore && (!this.searchQuery || this.filteredCount > this.initialItemCount) &&
186
- index.h("a", { key: '85ca188ff9f0db7c0a23b94e4705ae2ca5c38d55', class: "s-filters-widget-more", onClick: () => this.showMore() }, !this.isShowMore ? this.showMoreLabel : this.showLessLabel))));
186
+ index.h("a", { key: '885668e717441581cd1b92494ebc3927cd70daf1', class: "s-filters-widget-more", onClick: () => this.showMore() }, !this.isShowMore ? this.showMoreLabel : this.showLessLabel))));
187
187
  }
188
188
  get host() { return index.getElement(this); }
189
189
  };
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
  var interfaces = require('./interfaces-DZDQwN6-.js');
8
8
  var Helper = require('./Helper-B2B-kxAI.js');
9
9
  require('./anime.es-BqW8JHZi.js');
@@ -283,7 +283,7 @@ const SallaFilters = class {
283
283
  render() {
284
284
  const appliedFilters = this.getAppliedFilters();
285
285
  const removeText = salla.lang.getWithDefault('common.elements.delete', 'Remove');
286
- return index.h(index.Host, { key: 'd6dacbf458eadefda7ec2b2c6845c54f553abea8' }, appliedFilters.length ? index.h("div", { class: "s-filters-applied s-filters-widget-container" }, index.h("h3", { class: "s-filters-widget-title", onClick: () => this.appliedOpen = !this.appliedOpen }, index.h("span", null, this.selectedTitle), index.h("span", { class: `s-filters-widget-plusminus ${this.appliedOpen ? 's-filters-widget-plusminus-active' : ''}` })), index.h("div", { class: `s-filters-widget-content ${this.appliedOpen ? 's-filters-widget-opened' : 's-filters-widget-closed'}` }, index.h("div", { class: "s-filters-widget-values" }, appliedFilters.map(chip => index.h("div", { class: "s-filters-label s-filters-applied-item" }, index.h("span", { class: "s-filters-option-name" }, chip.groupLabel, ": ", chip.optionLabel), index.h("button", { type: "button", class: "s-filters-applied-remove", "aria-label": `${removeText} ${chip.groupLabel}: ${chip.optionLabel}`, onClick: () => this.removeFilter(chip) }, index.h("i", { class: "sicon-cancel", "aria-hidden": "true" }))))), index.h("div", { class: "s-filters-footer" }, index.h("salla-button", { color: 'gray', fill: 'outline', onClick: () => this.resetFilters() }, this.reset)))) : '', this.filters?.map(option => index.h("salla-filters-widget", { option: option, filtersData: this.filtersData, onChanged: ({ detail: { event, option, value } }) => {
286
+ return index.h(index.Host, { key: 'f0493d0e85ebb9e6612a1edc6cd7f45e7473017e' }, appliedFilters.length ? index.h("div", { class: "s-filters-applied s-filters-widget-container" }, index.h("h3", { class: "s-filters-widget-title", onClick: () => this.appliedOpen = !this.appliedOpen }, index.h("span", null, this.selectedTitle), index.h("span", { class: `s-filters-widget-plusminus ${this.appliedOpen ? 's-filters-widget-plusminus-active' : ''}` })), index.h("div", { class: `s-filters-widget-content ${this.appliedOpen ? 's-filters-widget-opened' : 's-filters-widget-closed'}` }, index.h("div", { class: "s-filters-widget-values" }, appliedFilters.map(chip => index.h("div", { class: "s-filters-label s-filters-applied-item" }, index.h("span", { class: "s-filters-option-name" }, chip.groupLabel, ": ", chip.optionLabel), index.h("button", { type: "button", class: "s-filters-applied-remove", "aria-label": `${removeText} ${chip.groupLabel}: ${chip.optionLabel}`, onClick: () => this.removeFilter(chip) }, index.h("i", { class: "sicon-cancel", "aria-hidden": "true" }))))), index.h("div", { class: "s-filters-footer" }, index.h("salla-button", { color: 'gray', fill: 'outline', onClick: () => this.resetFilters() }, this.reset)))) : '', this.filters?.map(option => index.h("salla-filters-widget", { option: option, filtersData: this.filtersData, onChanged: ({ detail: { event, option, value } }) => {
287
287
  this.handleOptionChange(event, option, value);
288
288
  } })));
289
289
  }
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CxOIGeOr.js');
6
+ var index = require('./index-Cd5xdrCT.js');
7
7
 
8
8
  const SallaFulfillmentMethods = class {
9
9
  constructor(hostRef) {