@salla.sa/twilight-components 2.14.545 → 2.14.547

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 (350) hide show
  1. package/dist/cjs/{filepond-B5aWlI3l.js → filepond-DFvIrFhD.js} +1 -1
  2. package/dist/cjs/{filepond-plugin-file-poster-BYq39KHd.js → filepond-plugin-file-poster-CHg39XJj.js} +1 -1
  3. package/dist/cjs/{filepond-plugin-file-validate-size-Bi3TAsJv.js → filepond-plugin-file-validate-size-kGmw5h8R.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-validate-type-Ck6S5TuZ.js → filepond-plugin-file-validate-type-CQSi2A-P.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-image-edit-DbsdnH5j.js → filepond-plugin-image-edit-M4teY-We.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-image-exif-orientation-x7TfJR-2.js → filepond-plugin-image-exif-orientation-gBQo0ofe.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-preview-CrU7vIRk.js → filepond-plugin-image-preview-DTmK0D_I.js} +1 -1
  8. package/dist/cjs/{index-DGpOR-TH.js → index-kkUUTdZu.js} +14 -14
  9. package/dist/cjs/{intlTelInput-DKAXRecW.js → intlTelInput-CVOJSgbc.js} +1 -1
  10. package/dist/cjs/loader.cjs.js +2 -2
  11. package/dist/cjs/{mail-C9D8MHae.js → mail-CO8cFZH7.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 +12 -5
  14. package/dist/cjs/salla-add-product-button_5.cjs.entry.js +1 -1
  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-attachment-view_9.cjs.entry.js +10 -10
  20. package/dist/cjs/salla-badge.cjs.entry.js +1 -1
  21. package/dist/cjs/salla-basket-gap.cjs.entry.js +1 -1
  22. package/dist/cjs/salla-bullet-delivery_2.cjs.entry.js +1 -1
  23. package/dist/cjs/salla-cart-coupons.cjs.entry.js +1 -1
  24. package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +1 -1
  25. package/dist/cjs/salla-cart-summary-card.cjs.entry.js +1 -1
  26. package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-comment-factors.cjs.entry.js +1 -1
  28. package/dist/cjs/{salla-comment-form_8.cjs.entry.js → salla-comment-form_9.cjs.entry.js} +264 -4
  29. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  30. package/dist/cjs/salla-contacts.cjs.entry.js +3 -3
  31. package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
  32. package/dist/cjs/salla-count-down.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-delivery-promise.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
  36. package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
  37. package/dist/cjs/salla-filters.cjs.entry.js +1 -1
  38. package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
  39. package/dist/cjs/salla-gifting.cjs.entry.js +7 -4
  40. package/dist/cjs/salla-hook.cjs.entry.js +1 -1
  41. package/dist/cjs/salla-infinite-scroll.cjs.entry.js +1 -1
  42. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  43. package/dist/cjs/salla-list-tile.cjs.entry.js +1 -1
  44. package/dist/cjs/salla-localization-modal.cjs.entry.js +1 -1
  45. package/dist/cjs/salla-login-modal.cjs.entry.js +1 -1
  46. package/dist/cjs/salla-loyalty-banner_10.cjs.entry.js +3 -3
  47. package/dist/cjs/salla-loyalty-exchange-product-card.cjs.entry.js +1 -1
  48. package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
  49. package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +1 -1
  50. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  51. package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
  52. package/dist/cjs/salla-maintenance-alert.cjs.entry.js +1 -1
  53. package/dist/cjs/salla-map_2.cjs.entry.js +1 -1
  54. package/dist/cjs/salla-menu.cjs.entry.js +1 -1
  55. package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
  56. package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +1 -1
  57. package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +1 -1
  58. package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +1 -1
  59. package/dist/cjs/salla-next-order-coupon.cjs.entry.js +1 -1
  60. package/dist/cjs/salla-notification-item_2.cjs.entry.js +1 -1
  61. package/dist/cjs/salla-offer-modal.cjs.entry.js +1 -1
  62. package/dist/cjs/salla-offer.cjs.entry.js +1 -1
  63. package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
  64. package/dist/cjs/salla-order-cancel.cjs.entry.js +1 -1
  65. package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
  66. package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
  67. package/dist/cjs/salla-order-details.cjs.entry.js +1 -1
  68. package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
  69. package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +1 -1
  70. package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
  71. package/dist/cjs/salla-order-options-modal_2.cjs.entry.js +1 -1
  72. package/dist/cjs/salla-order-shipments.cjs.entry.js +1 -1
  73. package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
  74. package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
  75. package/dist/cjs/salla-orders.cjs.entry.js +1 -1
  76. package/dist/cjs/salla-payments.cjs.entry.js +1 -1
  77. package/dist/cjs/salla-placeholder.cjs.entry.js +1 -1
  78. package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
  79. package/dist/cjs/salla-product-card-embed.cjs.entry.js +1 -1
  80. package/dist/cjs/salla-product-size-guide.cjs.entry.js +1 -1
  81. package/dist/cjs/salla-products-list.cjs.entry.js +1 -1
  82. package/dist/cjs/salla-products-slider.cjs.entry.js +1 -1
  83. package/dist/cjs/salla-quick-order.cjs.entry.js +3 -3
  84. package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +208 -103
  85. package/dist/cjs/salla-rating-modal.cjs.entry.js +23 -8
  86. package/dist/cjs/salla-review-factors-tags.cjs.entry.js +1 -1
  87. package/dist/cjs/salla-review-order-item.cjs.entry.js +1 -1
  88. package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
  89. package/dist/cjs/salla-search.cjs.entry.js +1 -1
  90. package/dist/cjs/salla-skeleton.cjs.entry.js +1 -1
  91. package/dist/cjs/salla-slider.cjs.entry.js +1 -1
  92. package/dist/cjs/salla-social-share.cjs.entry.js +4 -4
  93. package/dist/cjs/salla-social.cjs.entry.js +1 -1
  94. package/dist/cjs/salla-tab-content_3.cjs.entry.js +1 -1
  95. package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
  96. package/dist/cjs/salla-tooltip.cjs.entry.js +1 -1
  97. package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
  98. package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
  99. package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
  100. package/dist/cjs/salla-user-settings.cjs.entry.js +1 -1
  101. package/dist/cjs/salla-verify.cjs.entry.js +3 -3
  102. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  103. package/dist/cjs/salla-wishlist-actions.cjs.entry.js +1 -1
  104. package/dist/cjs/twilight.cjs.js +2 -2
  105. package/dist/cjs/{vanilla-picker-DQDSSf6Q.js → vanilla-picker-itKa_-k9.js} +1 -1
  106. package/dist/collection/collection-manifest.json +14 -12
  107. package/dist/collection/components/salla-comments/interfaces.js +12 -0
  108. package/dist/collection/components/salla-comments/salla-comment-item.js +1 -1
  109. package/dist/collection/components/salla-comments/salla-comments.js +42 -5
  110. package/dist/collection/components/salla-gifting/salla-gifting.js +6 -3
  111. package/dist/collection/components/salla-modal/salla-modal.css +11 -0
  112. package/dist/collection/components/salla-modal/salla-modal.js +33 -6
  113. package/dist/collection/components/salla-rating-modal/salla-rating-modal-v2.js +253 -104
  114. package/dist/collection/components/salla-rating-modal/salla-rating-modal.css +34 -21
  115. package/dist/collection/components/salla-rating-modal/salla-rating-modal.js +69 -10
  116. package/dist/collection/components/salla-rating-stars/salla-rating-stars.css +5 -0
  117. package/dist/collection/components/salla-verified-review/salla-verified-review.css +162 -0
  118. package/dist/collection/components/salla-verified-review/salla-verified-review.js +264 -0
  119. package/dist/components/index.js +2 -2
  120. package/dist/components/salla-comment-item2.js +1 -1
  121. package/dist/components/salla-comments.js +44 -1
  122. package/dist/components/salla-gifting.js +6 -3
  123. package/dist/components/salla-modal2.js +12 -4
  124. package/dist/components/salla-rating-modal-v22.js +208 -101
  125. package/dist/components/salla-rating-modal.js +1 -591
  126. package/dist/components/salla-rating-modal2.js +613 -0
  127. package/dist/components/salla-rating-stars2.js +1 -1
  128. package/dist/components/salla-verified-review.d.ts +11 -0
  129. package/dist/components/salla-verified-review.js +325 -0
  130. package/dist/esm/{filepond-wd7_MQSV.js → filepond-VE8WYfjh.js} +1 -1
  131. package/dist/esm/{filepond-plugin-file-poster-CkWxCmZT.js → filepond-plugin-file-poster-B5RS-KUm.js} +1 -1
  132. package/dist/esm/{filepond-plugin-file-validate-size-DlWS-oUK.js → filepond-plugin-file-validate-size-BdgcVHpq.js} +1 -1
  133. package/dist/esm/{filepond-plugin-file-validate-type-mdpFM1TG.js → filepond-plugin-file-validate-type-CmH44b6j.js} +1 -1
  134. package/dist/esm/{filepond-plugin-image-edit-BqPLKgZU.js → filepond-plugin-image-edit-B-XPDjr0.js} +1 -1
  135. package/dist/esm/{filepond-plugin-image-exif-orientation-CMqFjPu7.js → filepond-plugin-image-exif-orientation-ENeGT6qs.js} +1 -1
  136. package/dist/esm/{filepond-plugin-image-preview-DjCwk-CI.js → filepond-plugin-image-preview-D9RKj5A_.js} +1 -1
  137. package/dist/esm/{index-CHZfg_a9.js → index-RGVg6FYq.js} +14 -14
  138. package/dist/esm/{intlTelInput-B5Q8rrU9.js → intlTelInput-ClLDqBrH.js} +1 -1
  139. package/dist/esm/loader.js +3 -3
  140. package/dist/esm/{mail-DzAIgzdz.js → mail-DmgxDvXL.js} +2 -2
  141. package/dist/esm/salla-accordion-body_2.entry.js +1 -1
  142. package/dist/esm/salla-accordion_6.entry.js +12 -5
  143. package/dist/esm/salla-add-product-button_5.entry.js +1 -1
  144. package/dist/esm/salla-advertisement.entry.js +1 -1
  145. package/dist/esm/salla-alert_2.entry.js +1 -1
  146. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  147. package/dist/esm/salla-apps-icons.entry.js +1 -1
  148. package/dist/esm/salla-attachment-view_9.entry.js +10 -10
  149. package/dist/esm/salla-badge.entry.js +1 -1
  150. package/dist/esm/salla-basket-gap.entry.js +1 -1
  151. package/dist/esm/salla-bullet-delivery_2.entry.js +1 -1
  152. package/dist/esm/salla-cart-coupons.entry.js +1 -1
  153. package/dist/esm/salla-cart-item-offers_2.entry.js +1 -1
  154. package/dist/esm/salla-cart-summary-card.entry.js +1 -1
  155. package/dist/esm/salla-cashback-banner.entry.js +1 -1
  156. package/dist/esm/salla-comment-factors.entry.js +1 -1
  157. package/dist/esm/{salla-comment-form_8.entry.js → salla-comment-form_9.entry.js} +264 -5
  158. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  159. package/dist/esm/salla-contacts.entry.js +3 -3
  160. package/dist/esm/salla-cookies-bar.entry.js +1 -1
  161. package/dist/esm/salla-count-down.entry.js +1 -1
  162. package/dist/esm/salla-custom-fields.entry.js +1 -1
  163. package/dist/esm/salla-delivery-promise.entry.js +1 -1
  164. package/dist/esm/salla-edit-order-button.entry.js +1 -1
  165. package/dist/esm/salla-filters-widget.entry.js +1 -1
  166. package/dist/esm/salla-filters.entry.js +1 -1
  167. package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
  168. package/dist/esm/salla-gifting.entry.js +7 -4
  169. package/dist/esm/salla-hook.entry.js +1 -1
  170. package/dist/esm/salla-infinite-scroll.entry.js +1 -1
  171. package/dist/esm/salla-installment.entry.js +1 -1
  172. package/dist/esm/salla-list-tile.entry.js +1 -1
  173. package/dist/esm/salla-localization-modal.entry.js +1 -1
  174. package/dist/esm/salla-login-modal.entry.js +1 -1
  175. package/dist/esm/salla-loyalty-banner_10.entry.js +3 -3
  176. package/dist/esm/salla-loyalty-exchange-product-card.entry.js +1 -1
  177. package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
  178. package/dist/esm/salla-loyalty-points-history.entry.js +1 -1
  179. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  180. package/dist/esm/salla-loyalty.entry.js +1 -1
  181. package/dist/esm/salla-maintenance-alert.entry.js +1 -1
  182. package/dist/esm/salla-map_2.entry.js +1 -1
  183. package/dist/esm/salla-menu.entry.js +1 -1
  184. package/dist/esm/salla-metadata.entry.js +1 -1
  185. package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +1 -1
  186. package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +1 -1
  187. package/dist/esm/salla-multiple-bundle-product.entry.js +1 -1
  188. package/dist/esm/salla-next-order-coupon.entry.js +1 -1
  189. package/dist/esm/salla-notification-item_2.entry.js +1 -1
  190. package/dist/esm/salla-offer-modal.entry.js +1 -1
  191. package/dist/esm/salla-offer.entry.js +1 -1
  192. package/dist/esm/salla-order-branch.entry.js +1 -1
  193. package/dist/esm/salla-order-cancel.entry.js +1 -1
  194. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  195. package/dist/esm/salla-order-details-options.entry.js +1 -1
  196. package/dist/esm/salla-order-details.entry.js +1 -1
  197. package/dist/esm/salla-order-edit-item.entry.js +1 -1
  198. package/dist/esm/salla-order-edit-product-card.entry.js +1 -1
  199. package/dist/esm/salla-order-edit.entry.js +1 -1
  200. package/dist/esm/salla-order-options-modal_2.entry.js +1 -1
  201. package/dist/esm/salla-order-shipments.entry.js +1 -1
  202. package/dist/esm/salla-order-summary.entry.js +1 -1
  203. package/dist/esm/salla-order-totals-card.entry.js +1 -1
  204. package/dist/esm/salla-orders.entry.js +1 -1
  205. package/dist/esm/salla-payments.entry.js +1 -1
  206. package/dist/esm/salla-placeholder.entry.js +1 -1
  207. package/dist/esm/salla-price-range.entry.js +1 -1
  208. package/dist/esm/salla-product-card-embed.entry.js +1 -1
  209. package/dist/esm/salla-product-size-guide.entry.js +1 -1
  210. package/dist/esm/salla-products-list.entry.js +1 -1
  211. package/dist/esm/salla-products-slider.entry.js +1 -1
  212. package/dist/esm/salla-quick-order.entry.js +3 -3
  213. package/dist/esm/salla-rating-modal-v2.entry.js +208 -103
  214. package/dist/esm/salla-rating-modal.entry.js +23 -8
  215. package/dist/esm/salla-review-factors-tags.entry.js +1 -1
  216. package/dist/esm/salla-review-order-item.entry.js +1 -1
  217. package/dist/esm/salla-scopes.entry.js +1 -1
  218. package/dist/esm/salla-search.entry.js +1 -1
  219. package/dist/esm/salla-skeleton.entry.js +1 -1
  220. package/dist/esm/salla-slider.entry.js +1 -1
  221. package/dist/esm/salla-social-share.entry.js +4 -4
  222. package/dist/esm/salla-social.entry.js +1 -1
  223. package/dist/esm/salla-tab-content_3.entry.js +1 -1
  224. package/dist/esm/salla-tiered-offer.entry.js +1 -1
  225. package/dist/esm/salla-tooltip.entry.js +1 -1
  226. package/dist/esm/salla-trust-badges.entry.js +1 -1
  227. package/dist/esm/salla-user-menu.entry.js +1 -1
  228. package/dist/esm/salla-user-profile.entry.js +1 -1
  229. package/dist/esm/salla-user-settings.entry.js +1 -1
  230. package/dist/esm/salla-verify.entry.js +3 -3
  231. package/dist/esm/salla-wallet.entry.js +1 -1
  232. package/dist/esm/salla-wishlist-actions.entry.js +1 -1
  233. package/dist/esm/twilight.js +3 -3
  234. package/dist/esm/{vanilla-picker-uNDULydX.js → vanilla-picker-DWGLcuLb.js} +1 -1
  235. package/dist/twilight/{p-f07bbbc7.entry.js → p-01dee064.entry.js} +1 -1
  236. package/dist/twilight/{p-72ee7071.entry.js → p-03de43a3.entry.js} +1 -1
  237. package/dist/twilight/{p-5d9a85b0.entry.js → p-067e7e32.entry.js} +1 -1
  238. package/dist/twilight/{p-c9146d50.entry.js → p-08fa1534.entry.js} +1 -1
  239. package/dist/twilight/{p-84380d4a.entry.js → p-0adea51c.entry.js} +1 -1
  240. package/dist/twilight/{p-8fc6e860.entry.js → p-15fea4e9.entry.js} +1 -1
  241. package/dist/twilight/{p-25d9f1b2.entry.js → p-1c40b212.entry.js} +1 -1
  242. package/dist/twilight/{p-63b01300.entry.js → p-1cef7ea2.entry.js} +1 -1
  243. package/dist/twilight/{p-346366ba.entry.js → p-1f7d964d.entry.js} +1 -1
  244. package/dist/twilight/{p-832f3a98.entry.js → p-25c61f91.entry.js} +1 -1
  245. package/dist/twilight/{p-12836275.entry.js → p-272857bd.entry.js} +1 -1
  246. package/dist/twilight/{p-6d961d73.entry.js → p-2ae585c9.entry.js} +1 -1
  247. package/dist/twilight/{p-766a3291.entry.js → p-2ba184be.entry.js} +1 -1
  248. package/dist/twilight/{p-788fd019.entry.js → p-2d2e29fe.entry.js} +1 -1
  249. package/dist/twilight/{p-8780a467.entry.js → p-3286bfc2.entry.js} +1 -1
  250. package/dist/twilight/{p-345532e5.entry.js → p-36359288.entry.js} +1 -1
  251. package/dist/twilight/{p-2d01a4f5.entry.js → p-3713dbff.entry.js} +1 -1
  252. package/dist/twilight/{p-dd823fde.entry.js → p-380b8531.entry.js} +1 -1
  253. package/dist/twilight/{p-391a2ec6.entry.js → p-3ffe6fa7.entry.js} +1 -1
  254. package/dist/twilight/{p-0495bfac.entry.js → p-44595831.entry.js} +1 -1
  255. package/dist/twilight/{p-0749cc55.entry.js → p-45734a3b.entry.js} +1 -1
  256. package/dist/twilight/{p-d0d3609c.entry.js → p-459ce78a.entry.js} +1 -1
  257. package/dist/twilight/{p-419499d6.entry.js → p-4663f4da.entry.js} +1 -1
  258. package/dist/twilight/{p-28248b6b.entry.js → p-4d12b009.entry.js} +1 -1
  259. package/dist/twilight/{p-74529abb.entry.js → p-4e904400.entry.js} +1 -1
  260. package/dist/twilight/{p-67b91397.entry.js → p-541bf8ef.entry.js} +1 -1
  261. package/dist/twilight/{p-32e3daa3.entry.js → p-57516065.entry.js} +1 -1
  262. package/dist/twilight/{p-5ded000f.entry.js → p-5819795e.entry.js} +1 -1
  263. package/dist/twilight/{p-51a062cd.entry.js → p-582d081e.entry.js} +1 -1
  264. package/dist/twilight/{p-c816b198.entry.js → p-5b6fd8b5.entry.js} +1 -1
  265. package/dist/twilight/p-61bc2e97.entry.js +4 -0
  266. package/dist/twilight/{p-93aa1b67.entry.js → p-6288de29.entry.js} +1 -1
  267. package/dist/twilight/{p-9d224252.entry.js → p-66ca510c.entry.js} +1 -1
  268. package/dist/twilight/{p-f1d8729d.entry.js → p-696cb80c.entry.js} +1 -1
  269. package/dist/twilight/{p-35557962.entry.js → p-6971174e.entry.js} +1 -1
  270. package/dist/twilight/{p-3672d4f7.entry.js → p-6cc61a70.entry.js} +1 -1
  271. package/dist/twilight/{p-90e5c3ab.entry.js → p-6ec304ac.entry.js} +1 -1
  272. package/dist/twilight/{p-c287e498.entry.js → p-70ef6b79.entry.js} +1 -1
  273. package/dist/twilight/{p-e36f62a9.entry.js → p-8f1e13c5.entry.js} +1 -1
  274. package/dist/twilight/{p-afb03ee5.entry.js → p-9340d397.entry.js} +1 -1
  275. package/dist/twilight/{p-b279e0bb.entry.js → p-93ac34c7.entry.js} +1 -1
  276. package/dist/twilight/{p-64efbb2c.entry.js → p-95519dae.entry.js} +1 -1
  277. package/dist/twilight/{p-235d7596.entry.js → p-97a7d4cf.entry.js} +1 -1
  278. package/dist/twilight/{p-1419a93d.entry.js → p-9a8a1b47.entry.js} +1 -1
  279. package/dist/twilight/{p-c948a8a8.entry.js → p-9b791c53.entry.js} +1 -1
  280. package/dist/twilight/{p-c603722c.entry.js → p-9fafcedd.entry.js} +1 -1
  281. package/dist/twilight/{p-PCp-0mbL.js → p-BFco-_Zl.js} +1 -1
  282. package/dist/twilight/{p-ryHWESoh.js → p-BVamrCNR.js} +1 -1
  283. package/dist/twilight/{p-DtV7npW9.js → p-B_QMCKVO.js} +1 -1
  284. package/dist/twilight/{p-BPkSO6gd.js → p-C8tT82U5.js} +1 -1
  285. package/dist/twilight/{p-CdgES2Of.js → p-CkrRlrjj.js} +1 -1
  286. package/dist/twilight/{p-D9VjvNQq.js → p-D42LpeIl.js} +2 -2
  287. package/dist/twilight/{p-BWvO3cE-.js → p-DT4oJGXj.js} +1 -1
  288. package/dist/twilight/{p-DzAIgzdz.js → p-DmgxDvXL.js} +1 -1
  289. package/dist/twilight/{p-DO7S0QBX.js → p-DqHR-XSp.js} +1 -1
  290. package/dist/twilight/{p-ZinKLSYw.js → p-DvDYmxRj.js} +1 -1
  291. package/dist/twilight/{p-CHZfg_a9.js → p-RGVg6FYq.js} +2 -2
  292. package/dist/twilight/{p-17d49c87.entry.js → p-a0543daf.entry.js} +1 -1
  293. package/dist/twilight/p-a32e7b62.entry.js +4 -0
  294. package/dist/twilight/{p-b33392c6.entry.js → p-a4e382fb.entry.js} +1 -1
  295. package/dist/twilight/{p-fb1ad954.entry.js → p-a56851b0.entry.js} +1 -1
  296. package/dist/twilight/{p-5933ba05.entry.js → p-a8af052d.entry.js} +1 -1
  297. package/dist/twilight/{p-88f50d7e.entry.js → p-a9476bc3.entry.js} +1 -1
  298. package/dist/twilight/p-acd88f45.entry.js +4 -0
  299. package/dist/twilight/{p-aa4daadf.entry.js → p-ad884517.entry.js} +1 -1
  300. package/dist/twilight/{p-06d9e1c5.entry.js → p-aea12a46.entry.js} +1 -1
  301. package/dist/twilight/{p-2db5e829.entry.js → p-af39795f.entry.js} +1 -1
  302. package/dist/twilight/{p-0573a498.entry.js → p-aff22960.entry.js} +1 -1
  303. package/dist/twilight/{p-c81bce54.entry.js → p-b02c4a37.entry.js} +1 -1
  304. package/dist/twilight/{p-2305edcc.entry.js → p-b164cb76.entry.js} +1 -1
  305. package/dist/twilight/p-b73e784e.entry.js +4 -0
  306. package/dist/twilight/{p-82fe9f82.entry.js → p-b9a8f977.entry.js} +1 -1
  307. package/dist/twilight/{p-72f54055.entry.js → p-bbc8f3dd.entry.js} +1 -1
  308. package/dist/twilight/{p-f168109d.entry.js → p-bc9585d0.entry.js} +1 -1
  309. package/dist/twilight/{p-87e10a68.entry.js → p-bef1df8a.entry.js} +1 -1
  310. package/dist/twilight/{p-b38c4e39.entry.js → p-c1be2f63.entry.js} +1 -1
  311. package/dist/twilight/{p-69119c00.entry.js → p-c353a96a.entry.js} +1 -1
  312. package/dist/twilight/{p-5074de7d.entry.js → p-c6859fd3.entry.js} +1 -1
  313. package/dist/twilight/{p-a785b49f.entry.js → p-c7abf516.entry.js} +1 -1
  314. package/dist/twilight/{p-1ea25389.entry.js → p-cdad8f41.entry.js} +1 -1
  315. package/dist/twilight/{p-25f51a7e.entry.js → p-cf488159.entry.js} +1 -1
  316. package/dist/twilight/{p-37163aef.entry.js → p-d02688da.entry.js} +1 -1
  317. package/dist/twilight/{p-c26043ff.entry.js → p-d03e6073.entry.js} +1 -1
  318. package/dist/twilight/{p-f1dfe18b.entry.js → p-d2c1f52b.entry.js} +1 -1
  319. package/dist/twilight/{p-54e2d320.entry.js → p-d40958e4.entry.js} +1 -1
  320. package/dist/twilight/{p-ec281904.entry.js → p-d46ef139.entry.js} +1 -1
  321. package/dist/twilight/{p-2de58591.entry.js → p-d67b4059.entry.js} +1 -1
  322. package/dist/twilight/{p-c92edd6f.entry.js → p-d6ea5ca7.entry.js} +1 -1
  323. package/dist/twilight/{p-2d62c947.entry.js → p-d835a5dd.entry.js} +1 -1
  324. package/dist/twilight/{p-6c18cc72.entry.js → p-dd507247.entry.js} +1 -1
  325. package/dist/twilight/{p-c2fe2dbe.entry.js → p-df8d9655.entry.js} +1 -1
  326. package/dist/twilight/{p-98108ebe.entry.js → p-e304b491.entry.js} +1 -1
  327. package/dist/twilight/{p-ffdf5f92.entry.js → p-e9b2c4a5.entry.js} +1 -1
  328. package/dist/twilight/{p-4ac9a3b6.entry.js → p-eab06e84.entry.js} +1 -1
  329. package/dist/twilight/{p-d9b0fa64.entry.js → p-eefcc343.entry.js} +1 -1
  330. package/dist/twilight/{p-a0561bd1.entry.js → p-ef10024f.entry.js} +1 -1
  331. package/dist/twilight/{p-989f2adb.entry.js → p-f5f420c4.entry.js} +1 -1
  332. package/dist/twilight/{p-3f5bc617.entry.js → p-f8609873.entry.js} +1 -1
  333. package/dist/twilight/{p-bead6e6f.entry.js → p-f8e6aaac.entry.js} +1 -1
  334. package/dist/twilight/{p-3a8be7df.entry.js → p-f93cab86.entry.js} +1 -1
  335. package/dist/twilight/{p-93dabb47.entry.js → p-fcc66e23.entry.js} +1 -1
  336. package/dist/twilight/{p-6ff53523.entry.js → p-fd94973d.entry.js} +1 -1
  337. package/dist/twilight/{p-279a1661.entry.js → p-fd9d7372.entry.js} +1 -1
  338. package/dist/twilight/twilight.esm.js +1 -1
  339. package/dist/types/components/salla-comments/interfaces.d.ts +15 -0
  340. package/dist/types/components/salla-comments/salla-comments.d.ts +5 -2
  341. package/dist/types/components/salla-modal/salla-modal.d.ts +7 -2
  342. package/dist/types/components/salla-rating-modal/salla-rating-modal-v2.d.ts +20 -5
  343. package/dist/types/components/salla-rating-modal/salla-rating-modal.d.ts +10 -2
  344. package/dist/types/components/salla-verified-review/salla-verified-review.d.ts +51 -0
  345. package/dist/types/components.d.ts +59 -16
  346. package/package.json +5 -5
  347. package/dist/twilight/p-0ae39262.entry.js +0 -4
  348. package/dist/twilight/p-12f61ae1.entry.js +0 -4
  349. package/dist/twilight/p-ab41d26c.entry.js +0 -4
  350. package/dist/twilight/p-e5a3b689.entry.js +0 -4
@@ -128,22 +128,11 @@
128
128
  .s-rating-modal-product-rating-row .s-rating-stars-label--empty, .s-rating-modal-product-rating-row .s-rating-stars-label-without-tag--empty {
129
129
  opacity: 0;
130
130
  }
131
- .s-rating-modal-product-rating-row-main {
132
- margin-bottom: 0.35rem;
133
- padding: 0.5rem 0.6rem;
134
- border: 1px solid #d1d5db;
135
- border-radius: 0.45rem;
136
- background: transparent;
137
- }
138
131
  .s-rating-modal-product-factor-name {
139
132
  color: #5b6470;
140
133
  font-size: 0.9rem;
141
134
  line-height: 1.25;
142
135
  }
143
- .s-rating-modal-product-rating-row-main .s-rating-modal-product-factor-name {
144
- font-size: 1rem;
145
- color: #5b6470;
146
- }
147
136
  .s-rating-modal-product-factor-required {
148
137
  color: #f87171;
149
138
  margin-inline-start: 0.2rem;
@@ -168,10 +157,6 @@
168
157
  .hidden {
169
158
  display: none;
170
159
  }
171
- .px-3 {
172
- padding-left: 0.75rem;
173
- padding-right: 0.75rem;
174
- }
175
160
  .shadow {
176
161
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
177
162
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
@@ -309,10 +294,11 @@
309
294
  }
310
295
  }
311
296
  .s-rating-modal-rounded-icon {
312
- margin-bottom: 1rem;
297
+ position: relative;
298
+ margin-bottom: 0.25rem;
313
299
  display: flex;
314
- height: 7rem;
315
- width: 7rem;
300
+ height: 6rem;
301
+ width: 6rem;
316
302
  align-items: center;
317
303
  justify-content: center;
318
304
  overflow: hidden;
@@ -322,11 +308,21 @@
322
308
  border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
323
309
  }
324
310
  .s-rating-modal-title {
325
- margin-bottom: 1rem;
311
+ margin-bottom: 0.25rem;
326
312
  font-size: 1.125rem;
327
313
  line-height: 1.75rem;
328
314
  font-weight: 700;
329
315
  }
316
+ .s-rating-modal-subtitle {
317
+ margin-bottom: 0.25rem;
318
+ padding-left: 0.5rem;
319
+ padding-right: 0.5rem;
320
+ text-align: center;
321
+ font-size: 0.875rem;
322
+ line-height: 1.25rem;
323
+ --tw-text-opacity: 1;
324
+ color: rgb(107 114 128 / var(--tw-text-opacity, 1));
325
+ }
330
326
  .s-rating-modal-store-logo {
331
327
  width: 4rem;
332
328
  object-fit: contain;
@@ -505,6 +501,21 @@
505
501
  --tw-text-opacity: 1;
506
502
  color: rgb(156 163 175 / var(--tw-text-opacity, 1));
507
503
  }
504
+ .s-rating-modal-product-factors-card {
505
+ margin-bottom: 1rem;
506
+ border-radius: 0.5rem;
507
+ --tw-bg-opacity: 1;
508
+ background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
509
+ padding: 1rem;
510
+ }
511
+ .s-rating-modal-product-factors-heading {
512
+ margin-bottom: 0.75rem;
513
+ font-size: 0.875rem;
514
+ line-height: 1.25rem;
515
+ font-weight: 700;
516
+ --tw-text-opacity: 1;
517
+ color: rgb(31 41 55 / var(--tw-text-opacity, 1));
518
+ }
508
519
  .s-rating-modal-stars-company {
509
520
  margin-bottom: 1.25rem;
510
521
  }
@@ -514,8 +525,10 @@
514
525
  justify-content: center;
515
526
  gap: 0.5rem;
516
527
  }
517
- .s-rating-modal-stars-product {
518
- margin-bottom: 0.25rem;
528
+ .s-rating-modal-stars-product .s-rating-stars-wrapper {
529
+ flex-direction: column;
530
+ align-items: center;
531
+ justify-content: center;
519
532
  }
520
533
  .s-rating-modal-upload-count {
521
534
  font-size: 0.875rem;
@@ -24,7 +24,7 @@ export class SallaRatingModal {
24
24
  this.shouldOpenDeleteModal = false;
25
25
  this.editItem = null;
26
26
  this.loyaltyImageRatingPoints = 0;
27
- this.enableNewPopUp = false;
27
+ this.enableNewPopUp = true;
28
28
  this.dragAndDropFilesLabel = salla.lang.get('common.uploader.drag_and_drop_files');
29
29
  this.contactSubjectLabel = salla.lang.get('pages.rating.contact_subject');
30
30
  this.editReviewLabel = salla.lang.get('pages.rating.edit_review');
@@ -143,7 +143,19 @@ export class SallaRatingModal {
143
143
  return this.v2Ref ?? this.host.querySelector('salla-rating-modal-v2');
144
144
  }
145
145
  syncNewPopUpFlag() {
146
- this.enableNewPopUp = !!salla.config.get('store.features')?.includes('new_popup_rating');
146
+ // Enable the new pop-up to all consumers:
147
+ this.enableNewPopUp = true;
148
+ }
149
+ /**
150
+ * Point the modal at a different order/product and invalidate any cached
151
+ * order so the next open() re-fetches instead of reusing stale data.
152
+ * Pass `orderId` as `null` for an eligible-but-unverified product review.
153
+ */
154
+ async setOrder(orderId, productId) {
155
+ this.orderId = orderId;
156
+ this.productId = productId;
157
+ this.order = undefined;
158
+ await this.getV2Ref()?.setOrder(orderId, productId);
147
159
  }
148
160
  /**
149
161
  * Show the rating modal
@@ -442,7 +454,7 @@ export class SallaRatingModal {
442
454
  }
443
455
  render() {
444
456
  if (this.enableNewPopUp) {
445
- return (h(Host, { class: "s-rating-modal" }, h("salla-rating-modal-v2", { ref: (el) => (this.v2Ref = el), orderId: this.orderId })));
457
+ return (h(Host, { class: "s-rating-modal" }, h("salla-rating-modal-v2", { ref: (el) => (this.v2Ref = el), orderId: this.orderId, productId: this.productId })));
446
458
  }
447
459
  if (this.deleteMode) {
448
460
  return h(Host, { class: "s-rating-modal" }, this.getDeleteModal());
@@ -480,7 +492,10 @@ export class SallaRatingModal {
480
492
  }
481
493
  }
482
494
  async componentWillLoad() {
483
- salla.event.on('rating::open', () => this.open());
495
+ salla.event.on('rating::open', (params) => {
496
+ const orderId = params?.orderId || salla.config.get('page.id');
497
+ this.setOrder(orderId, params?.productId).then(() => this.open());
498
+ });
484
499
  salla.event.on('rating::edit', (params) => this.openEditModal(params));
485
500
  salla.event.on('rating::delete', (params) => this.openDeleteModal(params));
486
501
  await salla.onReady();
@@ -503,19 +518,38 @@ export class SallaRatingModal {
503
518
  static get properties() {
504
519
  return {
505
520
  "orderId": {
506
- "type": "number",
521
+ "type": "any",
507
522
  "attribute": "order-id",
508
- "mutable": false,
523
+ "mutable": true,
509
524
  "complexType": {
510
- "original": "number",
511
- "resolved": "number",
525
+ "original": "number | string | null",
526
+ "resolved": "number | string",
512
527
  "references": {}
513
528
  },
514
529
  "required": false,
515
- "optional": false,
530
+ "optional": true,
516
531
  "docs": {
517
532
  "tags": [],
518
- "text": "The order id, to rate on its products & shipping"
533
+ "text": "The order id, to rate on its products & shipping.\nExplicitly `null` means an unverified (no order) product review."
534
+ },
535
+ "getter": false,
536
+ "setter": false,
537
+ "reflect": false
538
+ },
539
+ "productId": {
540
+ "type": "any",
541
+ "attribute": "product-id",
542
+ "mutable": true,
543
+ "complexType": {
544
+ "original": "number | string",
545
+ "resolved": "number | string",
546
+ "references": {}
547
+ },
548
+ "required": false,
549
+ "optional": true,
550
+ "docs": {
551
+ "tags": [],
552
+ "text": ""
519
553
  },
520
554
  "getter": false,
521
555
  "setter": false,
@@ -547,6 +581,31 @@ export class SallaRatingModal {
547
581
  }
548
582
  static get methods() {
549
583
  return {
584
+ "setOrder": {
585
+ "complexType": {
586
+ "signature": "(orderId: number | string | null, productId?: number | string) => Promise<void>",
587
+ "parameters": [{
588
+ "name": "orderId",
589
+ "type": "string | number",
590
+ "docs": ""
591
+ }, {
592
+ "name": "productId",
593
+ "type": "string | number",
594
+ "docs": ""
595
+ }],
596
+ "references": {
597
+ "Promise": {
598
+ "location": "global",
599
+ "id": "global::Promise"
600
+ }
601
+ },
602
+ "return": "Promise<void>"
603
+ },
604
+ "docs": {
605
+ "text": "Point the modal at a different order/product and invalidate any cached\norder so the next open() re-fetches instead of reusing stale data.\nPass `orderId` as `null` for an eligible-but-unverified product review.",
606
+ "tags": []
607
+ }
608
+ },
550
609
  "open": {
551
610
  "complexType": {
552
611
  "signature": "() => Promise<unknown>",
@@ -56,6 +56,11 @@
56
56
  justify-content: center;
57
57
  gap: 0.5rem;
58
58
  }
59
+ .s-rating-modal-stars-product .s-rating-stars-wrapper {
60
+ flex-direction: column;
61
+ align-items: center;
62
+ justify-content: center;
63
+ }
59
64
  .s-rating-stars-wrapper {
60
65
  display: inline-flex;
61
66
  align-items: center;
@@ -0,0 +1,162 @@
1
+ /*!twlt*/salla-verified-review:empty {
2
+ display: none;
3
+ }
4
+
5
+ .s-verified-review-container {
6
+ position: relative;
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: 1rem;
10
+ width: 100%;
11
+ margin-bottom: 0.5rem;
12
+ margin-top: 1.25rem;
13
+ padding: 1rem;
14
+ overflow: hidden;
15
+ border: 1px solid #e5e7eb;
16
+ border-radius: 1rem;
17
+ background: #fff;
18
+ }
19
+ @media (min-width: 768px) {
20
+ .s-verified-review-container {
21
+ flex-direction: row;
22
+ align-items: center;
23
+ gap: 1.25rem;
24
+ padding: 1.25rem;
25
+ }
26
+ }
27
+
28
+ .s-verified-review-glow {
29
+ pointer-events: none;
30
+ position: absolute;
31
+ top: -4rem;
32
+ inset-inline-end: -2.5rem;
33
+ width: 10rem;
34
+ height: 10rem;
35
+ border-radius: 9999px;
36
+ background: var(--color-primary, #008c56);
37
+ opacity: 0.12;
38
+ filter: blur(2rem);
39
+ }
40
+
41
+ .s-verified-review-media {
42
+ position: relative;
43
+ z-index: 1;
44
+ flex-shrink: 0;
45
+ }
46
+
47
+ .s-verified-review-image {
48
+ width: 72px;
49
+ height: 72px;
50
+ border-radius: 0.75rem;
51
+ object-fit: cover;
52
+ background: #f3f4f6;
53
+ }
54
+
55
+ .s-verified-review-content {
56
+ position: relative;
57
+ z-index: 1;
58
+ display: flex;
59
+ flex: 1;
60
+ flex-direction: column;
61
+ gap: 0.375rem;
62
+ min-width: 0;
63
+ }
64
+
65
+ .s-verified-review-meta {
66
+ display: flex;
67
+ flex-wrap: wrap;
68
+ align-items: center;
69
+ gap: 0.5rem;
70
+ margin-bottom: 0.25rem;
71
+ }
72
+
73
+ .s-verified-review-badge {
74
+ display: inline-flex;
75
+ align-items: center;
76
+ gap: 0.25rem;
77
+ padding: 0.25rem 0.625rem;
78
+ border-radius: 9999px;
79
+ background: color-mix(in srgb, var(--color-primary, #008c56) 10%, transparent);
80
+ color: var(--color-primary, #008c56);
81
+ font-size: 0.75rem;
82
+ font-weight: 500;
83
+ }
84
+
85
+ .s-verified-review-badge-icon {
86
+ display: inline-flex;
87
+ align-items: center;
88
+ justify-content: center;
89
+ width: 0.875rem;
90
+ height: 0.875rem;
91
+ }
92
+ .s-verified-review-badge-icon svg {
93
+ width: 0.875rem;
94
+ height: 0.875rem;
95
+ fill: currentColor;
96
+ }
97
+
98
+ .s-verified-review-order {
99
+ font-size: 0.75rem;
100
+ color: #6b7280;
101
+ }
102
+
103
+ .s-verified-review-title {
104
+ margin: 0;
105
+ color: #111827;
106
+ font-size: 1rem;
107
+ font-weight: 700;
108
+ line-height: 1.375;
109
+ }
110
+ @media (min-width: 768px) {
111
+ .s-verified-review-title {
112
+ font-size: 1.125rem;
113
+ }
114
+ }
115
+
116
+ .s-verified-review-subtitle {
117
+ margin: 0;
118
+ color: #6b7280;
119
+ font-size: 0.875rem;
120
+ line-height: 1.625;
121
+ }
122
+
123
+ .s-verified-review-loyalty {
124
+ margin: 0.125rem 0 0;
125
+ color: var(--color-primary, #008c56);
126
+ font-size: 0.875rem;
127
+ font-weight: 600;
128
+ }
129
+
130
+ .s-verified-review-actions {
131
+ position: relative;
132
+ z-index: 1;
133
+ flex-shrink: 0;
134
+ }
135
+ @media (min-width: 768px) {
136
+ .s-verified-review-actions {
137
+ margin-inline-start: auto;
138
+ }
139
+ }
140
+
141
+ .s-verified-review-cta {
142
+ width: 100%;
143
+ }
144
+ @media (min-width: 768px) {
145
+ .s-verified-review-cta {
146
+ width: auto;
147
+ }
148
+ }
149
+
150
+ .s-verified-review-rate-limit-message {
151
+ text-align: center;
152
+ color: #6b7280;
153
+ font-size: 0.875rem;
154
+ margin-top: -1rem;
155
+ }
156
+
157
+ .s-verified-review-rate-limit-footer {
158
+ margin-top: 1rem;
159
+ }
160
+ .outline {
161
+ outline-style: solid;
162
+ }
@@ -0,0 +1,264 @@
1
+ /*!
2
+ * Crafted with ❤ by Salla
3
+ */
4
+ import { Host, h } from "@stencil/core";
5
+ import CheckCircle2 from "../../assets/svg/check-circle2.svg";
6
+ import Block from "../../assets/svg/block.svg";
7
+ export class SallaVerifiedReview {
8
+ constructor() {
9
+ this.ready = false;
10
+ this.eligible = false;
11
+ this.order = null;
12
+ this.productImage = '';
13
+ this.productImageAlt = '';
14
+ this.loyaltyPoints = 0;
15
+ this.titlePurchasedLabel = '';
16
+ this.titleNotPurchasedLabel = '';
17
+ this.subtitleLabel = '';
18
+ this.badgeLabel = '';
19
+ this.orderMetaLabel = '';
20
+ this.ctaLabel = '';
21
+ this.loyaltyLabel = '';
22
+ this.rateLimitMessage = '';
23
+ this.rateLimited = false;
24
+ this.rateLimitTitleLabel = '';
25
+ this.rateLimitDefaultMessageLabel = '';
26
+ this.rateLimitExitLabel = '';
27
+ this.resolvedProductId = null;
28
+ this.handleRateClick = () => {
29
+ if (salla.config.isGuest()) {
30
+ salla.event.dispatch('login::open');
31
+ return;
32
+ }
33
+ if (!this.eligible) {
34
+ return;
35
+ }
36
+ if (this.rateLimited) {
37
+ this.showRateLimitAlert();
38
+ return;
39
+ }
40
+ // Verified purchases pass their order id; unverified-but-eligible reviews
41
+ // pass `null` so the modal submits the review without an order.
42
+ const orderId = this.order?.id ?? null;
43
+ const modal = this.ensureRatingModal();
44
+ requestAnimationFrame(async () => {
45
+ await modal.setOrder?.(orderId, this.resolvedProductId);
46
+ modal.open?.();
47
+ });
48
+ };
49
+ }
50
+ async componentWillLoad() {
51
+ try {
52
+ await salla.onReady();
53
+ await salla.lang.onLoaded();
54
+ await this.loadTranslations();
55
+ this.resolvedProductId =
56
+ this.productId || this.host.dataset.productId || salla.config.get('page.id');
57
+ if (!this.resolvedProductId) {
58
+ return;
59
+ }
60
+ if (salla.config.isGuest()) {
61
+ return;
62
+ }
63
+ salla.event.on('rating::products-rated', (_response, payload) => {
64
+ if (String(payload?.product_id) === String(this.resolvedProductId)) {
65
+ this.eligible = false;
66
+ }
67
+ });
68
+ await Promise.all([this.loadProductImage(), this.loadEligibility()]);
69
+ this.ready = true;
70
+ }
71
+ catch (e) {
72
+ salla?.logger?.warn?.('salla-verified-review: init failed', e);
73
+ }
74
+ }
75
+ async loadTranslations() {
76
+ const setNestedAsync = (lang, key, value) => {
77
+ return new Promise(resolve => {
78
+ salla.helpers.setNested(salla.lang.messages[lang], key, value);
79
+ resolve(true);
80
+ });
81
+ };
82
+ await setNestedAsync('ar.trans', 'pages.rating.verified_review.title_purchased', 'جربت هذا المنتج؟');
83
+ await setNestedAsync('en.trans', 'pages.rating.verified_review.title_purchased', 'You tried this product?');
84
+ await setNestedAsync('ar.trans', 'pages.rating.verified_review.title_not_purchased', 'جربت هذا المنتج؟ شارك تجربتك 🎉');
85
+ await setNestedAsync('en.trans', 'pages.rating.verified_review.title_not_purchased', 'Tried this product? Share your experience 🎉');
86
+ await setNestedAsync('ar.trans', 'pages.rating.verified_review.subtitle', 'شارك رأيك وساعد غيرك يختار بثقة.');
87
+ await setNestedAsync('en.trans', 'pages.rating.verified_review.subtitle', 'Share your opinion and help others choose with confidence.');
88
+ await setNestedAsync('ar.trans', 'pages.rating.verified_review.badge', 'عملية شراء موثقة');
89
+ await setNestedAsync('en.trans', 'pages.rating.verified_review.badge', 'Verified purchase');
90
+ await setNestedAsync('ar.trans', 'pages.rating.verified_review.order_meta', 'طلب #:id');
91
+ await setNestedAsync('en.trans', 'pages.rating.verified_review.order_meta', 'Order #:id');
92
+ await setNestedAsync('ar.trans', 'pages.rating.verified_review.cta', 'تقييم المنتج');
93
+ await setNestedAsync('en.trans', 'pages.rating.verified_review.cta', 'Rate product');
94
+ await setNestedAsync('ar.trans', 'pages.rating.verified_review.loyalty_points', 'اكسب +:points نقطة ولاء بكتابة مراجعة 🏆');
95
+ await setNestedAsync('en.trans', 'pages.rating.verified_review.loyalty_points', '🏆 Earn +:points loyalty points by writing a review');
96
+ await setNestedAsync('ar.trans', 'pages.rating.rate_limit_title', 'تم تقييد حسابك');
97
+ await setNestedAsync('en.trans', 'pages.rating.rate_limit_title', 'Your account has been restricted');
98
+ await setNestedAsync('ar.trans', 'pages.rating.rate_limit_message', 'تجاوزت الحد المسموح لتقييم منتجات لم تشتريها بعد.');
99
+ await setNestedAsync('en.trans', 'pages.rating.rate_limit_message', "You've exceeded the allowed limit for rating products you haven't purchased yet.");
100
+ await setNestedAsync('ar.trans', 'pages.rating.rate_limit_exit', 'خروج');
101
+ await setNestedAsync('en.trans', 'pages.rating.rate_limit_exit', 'Exit');
102
+ this.titlePurchasedLabel = salla.lang.getWithDefault('pages.rating.verified_review.title_purchased', 'اشتريت هذا! شارك تجربتك 🎉');
103
+ this.titleNotPurchasedLabel = salla.lang.getWithDefault('pages.rating.verified_review.title_not_purchased', 'جربت هذا المنتج؟ شارك تجربتك 🎉');
104
+ this.subtitleLabel = salla.lang.getWithDefault('pages.rating.verified_review.subtitle', 'ساعد المتسوقين الآخرين بمراجعة هذا المنتج. رأيك يهم.');
105
+ this.badgeLabel = salla.lang.getWithDefault('pages.rating.verified_review.badge', 'عملية شراء موثقة');
106
+ this.orderMetaLabel = salla.lang.getWithDefault('pages.rating.verified_review.order_meta', 'طلب #:id');
107
+ this.ctaLabel = salla.lang.getWithDefault('pages.rating.verified_review.cta', 'قيِّم المنتج');
108
+ this.loyaltyLabel = salla.lang.getWithDefault('pages.rating.verified_review.loyalty_points', 'اكسب +:points نقطة ولاء بكتابة مراجعة 🏆');
109
+ this.rateLimitTitleLabel = salla.lang.getWithDefault('pages.rating.rate_limit_title', 'تم تقييد حسابك');
110
+ this.rateLimitDefaultMessageLabel = salla.lang.getWithDefault('pages.rating.rate_limit_message', 'تجاوزت الحد المسموح لتقييم منتجات لم تشتريها بعد.');
111
+ this.rateLimitExitLabel = salla.lang.getWithDefault('pages.rating.rate_limit_exit', 'خروج');
112
+ }
113
+ async loadProductImage() {
114
+ try {
115
+ const response = await salla.api.withoutNotifier(() => salla.product.api.getDetails(this.resolvedProductId));
116
+ const product = response?.data;
117
+ this.productImage = product?.image?.url || salla.url.cdn('images/s-empty.png');
118
+ this.productImageAlt = product?.image?.alt || product?.name || '';
119
+ }
120
+ catch {
121
+ this.productImage = salla.url.cdn('images/s-empty.png');
122
+ }
123
+ }
124
+ async fetchEligibility(productId) {
125
+ const response = await salla.api.withoutNotifier(() => salla.rating.api.productEligibility(productId));
126
+ return response?.data;
127
+ }
128
+ async loadEligibility() {
129
+ if (!this.resolvedProductId) {
130
+ return;
131
+ }
132
+ const eligibility = await this.fetchEligibility(this.resolvedProductId);
133
+ if (!eligibility) {
134
+ this.eligible = false;
135
+ this.order = null;
136
+ return;
137
+ }
138
+ this.eligible = eligibility.eligible;
139
+ if (eligibility.code === 'community_review_daily_limit') {
140
+ this.rateLimitMessage = eligibility.message || this.rateLimitDefaultMessageLabel;
141
+ this.rateLimited = true;
142
+ this.eligible = true;
143
+ }
144
+ this.order =
145
+ this.eligible && eligibility.order_id
146
+ ? {
147
+ id: eligibility.order_id,
148
+ reference_id: eligibility.reference_id,
149
+ created_at: eligibility.created_at,
150
+ }
151
+ : null;
152
+ const loyaltyPoints = salla.config.get('store.settings.rating.rating_product_points');
153
+ this.loyaltyPoints = loyaltyPoints ? Number(loyaltyPoints) : 0;
154
+ }
155
+ getOrderMetaText() {
156
+ if (!this.order) {
157
+ return '';
158
+ }
159
+ const orderMetaLabel = this.orderMetaLabel.replace(':id', String(this.order.reference_id || this.order.id));
160
+ const orderCreatedAt = this.order.created_at ? new Date(this.order.created_at) : null;
161
+ return orderMetaLabel + (orderCreatedAt ? ` • ${this.formatOrderDate(orderCreatedAt)}` : '');
162
+ }
163
+ formatOrderDate(date) {
164
+ const month = date.toLocaleDateString(navigator.language, { month: 'short' });
165
+ const day = String(date.getDate()).padStart(2, '0');
166
+ return `${date.getFullYear()} ${month} ${day}`;
167
+ }
168
+ getLoyaltyText() {
169
+ if (!this.loyaltyPoints) {
170
+ return '';
171
+ }
172
+ if (!this.loyaltyLabel) {
173
+ this.loyaltyLabel = salla.lang.getWithDefault('pages.rating.verified_review.loyalty_points', 'اكسب +:points نقطة ولاء بكتابة مراجعة 🏆');
174
+ }
175
+ return this.loyaltyLabel.replace(':points', String(this.loyaltyPoints));
176
+ }
177
+ /**
178
+ * Shown when the shopper tries to rate a product after the eligibility
179
+ * check reported the community-review daily limit was hit.
180
+ */
181
+ showRateLimitAlert() {
182
+ requestAnimationFrame(() => {
183
+ this.rateLimitModal?.setTitle?.(this.rateLimitTitleLabel);
184
+ this.rateLimitModal?.open?.();
185
+ });
186
+ }
187
+ getRateLimitModal() {
188
+ return (h("salla-modal", { ref: modal => (this.rateLimitModal = modal), width: "xs", centered: true }, h("span", { slot: "icon", class: "s-modal-icon s-modal-bg-normal", innerHTML: Block }), h("p", { class: "s-verified-review-rate-limit-message" }, this.rateLimitMessage), h("div", { slot: "footer", class: "s-verified-review-rate-limit-footer" }, h("salla-button", { width: "wide", fill: "outline", color: "primary", onClick: () => this.rateLimitModal?.close?.() }, this.rateLimitExitLabel))));
189
+ }
190
+ ensureRatingModal() {
191
+ let modal = document.querySelector('salla-rating-modal');
192
+ if (!modal) {
193
+ modal = document.createElement('salla-rating-modal');
194
+ document.body.appendChild(modal);
195
+ }
196
+ return modal;
197
+ }
198
+ render() {
199
+ if (salla.config.isGuest() || !this.ready || !this.resolvedProductId) {
200
+ return null;
201
+ }
202
+ if (!this.eligible) {
203
+ return null;
204
+ }
205
+ const title = this.order ? this.titlePurchasedLabel : this.titleNotPurchasedLabel;
206
+ const loyaltyText = this.order ? this.getLoyaltyText() : null;
207
+ const orderMeta = this.getOrderMetaText();
208
+ return (h(Host, null, h("div", { class: "s-verified-review-container" }, h("div", { class: "s-verified-review-glow", "aria-hidden": "true" }), h("div", { class: "s-verified-review-media" }, h("img", { class: "s-verified-review-image", src: this.productImage, alt: this.productImageAlt, width: 72, height: 72, loading: "lazy", decoding: "async" })), h("div", { class: "s-verified-review-content" }, this.order ? (h("div", { class: "s-verified-review-meta" }, h("span", { class: "s-verified-review-badge" }, h("span", { class: "s-verified-review-badge-icon", innerHTML: CheckCircle2 }), this.badgeLabel), orderMeta ? h("span", { class: "s-verified-review-order" }, orderMeta) : null)) : null, h("h3", { class: "s-verified-review-title" }, title), h("p", { class: "s-verified-review-subtitle" }, this.subtitleLabel), loyaltyText ? h("p", { class: "s-verified-review-loyalty" }, loyaltyText) : null), h("div", { class: "s-verified-review-actions" }, h("salla-button", { class: "s-verified-review-cta", fill: "outline", color: "primary", size: "medium", onClick: this.handleRateClick }, this.ctaLabel))), this.getRateLimitModal()));
209
+ }
210
+ static get is() { return "salla-verified-review"; }
211
+ static get originalStyleUrls() {
212
+ return {
213
+ "$": ["salla-verified-review.scss"]
214
+ };
215
+ }
216
+ static get styleUrls() {
217
+ return {
218
+ "$": ["salla-verified-review.css"]
219
+ };
220
+ }
221
+ static get properties() {
222
+ return {
223
+ "productId": {
224
+ "type": "any",
225
+ "attribute": "product-id",
226
+ "mutable": false,
227
+ "complexType": {
228
+ "original": "number | string",
229
+ "resolved": "number | string",
230
+ "references": {}
231
+ },
232
+ "required": false,
233
+ "optional": true,
234
+ "docs": {
235
+ "tags": [],
236
+ "text": "Product id to check purchase eligibility for.\nFalls back to `data-product-id` or the current page id."
237
+ },
238
+ "getter": false,
239
+ "setter": false,
240
+ "reflect": true
241
+ }
242
+ };
243
+ }
244
+ static get states() {
245
+ return {
246
+ "ready": {},
247
+ "eligible": {},
248
+ "order": {},
249
+ "productImage": {},
250
+ "productImageAlt": {},
251
+ "loyaltyPoints": {},
252
+ "titlePurchasedLabel": {},
253
+ "titleNotPurchasedLabel": {},
254
+ "subtitleLabel": {},
255
+ "badgeLabel": {},
256
+ "orderMetaLabel": {},
257
+ "ctaLabel": {},
258
+ "loyaltyLabel": {},
259
+ "rateLimitMessage": {},
260
+ "rateLimited": {}
261
+ };
262
+ }
263
+ static get elementRef() { return "host"; }
264
+ }