@salla.sa/twilight-components 2.14.482 → 2.14.484

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 (330) hide show
  1. package/dist/cjs/{filepond-BHXz3A1Q.js → filepond-CgzJykLb.js} +1 -1
  2. package/dist/cjs/{filepond-plugin-file-poster-B1el8oDJ.js → filepond-plugin-file-poster-QDPQ7mwB.js} +1 -1
  3. package/dist/cjs/{filepond-plugin-file-validate-size-D5kDke66.js → filepond-plugin-file-validate-size-Bad-w2I9.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-validate-type-CUvuoQyP.js → filepond-plugin-file-validate-type-DISG2_qB.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-image-edit-C5LY3BCc.js → filepond-plugin-image-edit-CVHAGWaB.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-image-exif-orientation-DzmSRK6Z.js → filepond-plugin-image-exif-orientation-Dwsj5VyO.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-preview-Dy70l4bq.js → filepond-plugin-image-preview-I9g9nrNa.js} +1 -1
  8. package/dist/cjs/{functions-Cxbc6q17.js → functions-hUb6T9a1.js} +1 -1
  9. package/dist/cjs/{index-BjphdATw.js → index-BADADy4V.js} +1 -1
  10. package/dist/cjs/{index-B9uuwC5y.js → index-BKQzclgF.js} +2 -6
  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 +1 -1
  14. package/dist/cjs/salla-add-product-button_5.cjs.entry.js +66 -7
  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 +10 -10
  21. package/dist/cjs/salla-bullet-delivery_2.cjs.entry.js +1 -1
  22. package/dist/cjs/salla-cart-coupons.cjs.entry.js +1 -1
  23. package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +1 -1
  24. package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
  25. package/dist/cjs/salla-comment-form_8.cjs.entry.js +1 -1
  26. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
  28. package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
  29. package/dist/cjs/salla-count-down.cjs.entry.js +1 -1
  30. package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
  31. package/dist/cjs/salla-delivery-promise.cjs.entry.js +1 -1
  32. package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-filters.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
  36. package/dist/cjs/salla-gifting.cjs.entry.js +1 -1
  37. package/dist/cjs/salla-hook.cjs.entry.js +1 -1
  38. package/dist/cjs/salla-infinite-scroll.cjs.entry.js +1 -1
  39. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  40. package/dist/cjs/salla-list-tile.cjs.entry.js +1 -1
  41. package/dist/cjs/salla-localization-modal.cjs.entry.js +1 -1
  42. package/dist/cjs/salla-login-modal.cjs.entry.js +1 -1
  43. package/dist/cjs/salla-loyalty-banner.cjs.entry.js +2 -2
  44. package/dist/cjs/salla-loyalty-hero_2.cjs.entry.js +2 -2
  45. package/dist/cjs/salla-loyalty-panel.cjs.entry.js +3 -3
  46. package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
  47. package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +1 -1
  48. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  49. package/dist/cjs/salla-loyalty-program.cjs.entry.js +3 -3
  50. package/dist/cjs/salla-loyalty-reward.cjs.entry.js +2 -2
  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.cjs.entry.js +1 -1
  61. package/dist/cjs/salla-notifications.cjs.entry.js +1 -1
  62. package/dist/cjs/salla-offer-modal.cjs.entry.js +1 -1
  63. package/dist/cjs/salla-offer.cjs.entry.js +1 -1
  64. package/dist/cjs/salla-order-branch.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_3.cjs.entry.js +1 -1
  72. package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
  73. package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
  74. package/dist/cjs/salla-orders.cjs.entry.js +1 -1
  75. package/dist/cjs/salla-payments.cjs.entry.js +1 -1
  76. package/dist/cjs/salla-placeholder.cjs.entry.js +1 -1
  77. package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
  78. package/dist/cjs/salla-product-card-embed.cjs.entry.js +1 -1
  79. package/dist/cjs/salla-product-size-guide.cjs.entry.js +1 -1
  80. package/dist/cjs/salla-products-list.cjs.entry.js +22 -6
  81. package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
  82. package/dist/cjs/salla-rating-modal.cjs.entry.js +1 -1
  83. package/dist/cjs/salla-reward-action_4.cjs.entry.js +3 -3
  84. package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
  85. package/dist/cjs/salla-search.cjs.entry.js +1 -1
  86. package/dist/cjs/salla-skeleton.cjs.entry.js +1 -1
  87. package/dist/cjs/salla-slider.cjs.entry.js +1 -1
  88. package/dist/cjs/salla-social-share.cjs.entry.js +1 -1
  89. package/dist/cjs/salla-social.cjs.entry.js +1 -1
  90. package/dist/cjs/salla-tab-content_3.cjs.entry.js +1 -1
  91. package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
  92. package/dist/cjs/salla-tooltip.cjs.entry.js +1 -1
  93. package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
  94. package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
  95. package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
  96. package/dist/cjs/salla-user-settings.cjs.entry.js +1 -1
  97. package/dist/cjs/salla-verify.cjs.entry.js +1 -1
  98. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  99. package/dist/cjs/salla-wishlist-actions.cjs.entry.js +1 -1
  100. package/dist/cjs/{tracked-promise-DBpdtaXl.js → tracked-promise-czeUB0TX.js} +1 -1
  101. package/dist/cjs/twilight.cjs.js +2 -2
  102. package/dist/cjs/{vanilla-picker-cyq6K0DC.js → vanilla-picker-CuMQuW8m.js} +1 -1
  103. package/dist/collection/collection-manifest.json +0 -1
  104. package/dist/collection/components/salla-product-options/availability-utils.js +46 -4
  105. package/dist/collection/components/salla-product-options/salla-product-options.js +39 -2
  106. package/dist/collection/components/salla-products-list/salla-products-list.js +21 -5
  107. package/dist/components/index.js +2 -2
  108. package/dist/components/salla-product-options2.js +66 -6
  109. package/dist/components/salla-products-list2.js +21 -5
  110. package/dist/esm/{filepond-DAX5UEU5.js → filepond-BOBokEx5.js} +1 -1
  111. package/dist/esm/{filepond-plugin-file-poster-CmoCs5ch.js → filepond-plugin-file-poster-D9HYZEnq.js} +1 -1
  112. package/dist/esm/{filepond-plugin-file-validate-size-Cx-BnpL2.js → filepond-plugin-file-validate-size-B1BkZh58.js} +1 -1
  113. package/dist/esm/{filepond-plugin-file-validate-type-DWn1unek.js → filepond-plugin-file-validate-type-CT0ni0hb.js} +1 -1
  114. package/dist/esm/{filepond-plugin-image-edit-CB-tZOhi.js → filepond-plugin-image-edit-CvSKiYON.js} +1 -1
  115. package/dist/esm/{filepond-plugin-image-exif-orientation-BoE-WIq-.js → filepond-plugin-image-exif-orientation-Cu1zifQ6.js} +1 -1
  116. package/dist/esm/{filepond-plugin-image-preview-CqzJUKHP.js → filepond-plugin-image-preview-6m913ljw.js} +1 -1
  117. package/dist/esm/{functions-hQdz9hf-.js → functions-CioYIS_L.js} +1 -1
  118. package/dist/esm/{index-DTEQDm6d.js → index-CiFCAiRL.js} +1 -1
  119. package/dist/esm/{index-BmFJLtoi.js → index-k6XsozPW.js} +2 -6
  120. package/dist/esm/loader.js +3 -3
  121. package/dist/esm/salla-accordion-body_2.entry.js +1 -1
  122. package/dist/esm/salla-accordion_6.entry.js +1 -1
  123. package/dist/esm/salla-add-product-button_5.entry.js +66 -7
  124. package/dist/esm/salla-advertisement.entry.js +1 -1
  125. package/dist/esm/salla-alert_2.entry.js +1 -1
  126. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  127. package/dist/esm/salla-apps-icons.entry.js +1 -1
  128. package/dist/esm/salla-badge.entry.js +1 -1
  129. package/dist/esm/salla-booking-field_7.entry.js +10 -10
  130. package/dist/esm/salla-bullet-delivery_2.entry.js +1 -1
  131. package/dist/esm/salla-cart-coupons.entry.js +1 -1
  132. package/dist/esm/salla-cart-item-offers_2.entry.js +1 -1
  133. package/dist/esm/salla-cashback-banner.entry.js +1 -1
  134. package/dist/esm/salla-comment-form_8.entry.js +1 -1
  135. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  136. package/dist/esm/salla-contacts.entry.js +1 -1
  137. package/dist/esm/salla-cookies-bar.entry.js +1 -1
  138. package/dist/esm/salla-count-down.entry.js +1 -1
  139. package/dist/esm/salla-custom-fields.entry.js +1 -1
  140. package/dist/esm/salla-delivery-promise.entry.js +1 -1
  141. package/dist/esm/salla-edit-order-button.entry.js +1 -1
  142. package/dist/esm/salla-filters-widget.entry.js +1 -1
  143. package/dist/esm/salla-filters.entry.js +1 -1
  144. package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
  145. package/dist/esm/salla-gifting.entry.js +1 -1
  146. package/dist/esm/salla-hook.entry.js +1 -1
  147. package/dist/esm/salla-infinite-scroll.entry.js +1 -1
  148. package/dist/esm/salla-installment.entry.js +1 -1
  149. package/dist/esm/salla-list-tile.entry.js +1 -1
  150. package/dist/esm/salla-localization-modal.entry.js +1 -1
  151. package/dist/esm/salla-login-modal.entry.js +1 -1
  152. package/dist/esm/salla-loyalty-banner.entry.js +2 -2
  153. package/dist/esm/salla-loyalty-hero_2.entry.js +2 -2
  154. package/dist/esm/salla-loyalty-panel.entry.js +3 -3
  155. package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
  156. package/dist/esm/salla-loyalty-points-history.entry.js +1 -1
  157. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  158. package/dist/esm/salla-loyalty-program.entry.js +3 -3
  159. package/dist/esm/salla-loyalty-reward.entry.js +2 -2
  160. package/dist/esm/salla-loyalty.entry.js +1 -1
  161. package/dist/esm/salla-maintenance-alert.entry.js +1 -1
  162. package/dist/esm/salla-map_2.entry.js +1 -1
  163. package/dist/esm/salla-menu.entry.js +1 -1
  164. package/dist/esm/salla-metadata.entry.js +1 -1
  165. package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +1 -1
  166. package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +1 -1
  167. package/dist/esm/salla-multiple-bundle-product.entry.js +1 -1
  168. package/dist/esm/salla-next-order-coupon.entry.js +1 -1
  169. package/dist/esm/salla-notification-item.entry.js +1 -1
  170. package/dist/esm/salla-notifications.entry.js +1 -1
  171. package/dist/esm/salla-offer-modal.entry.js +1 -1
  172. package/dist/esm/salla-offer.entry.js +1 -1
  173. package/dist/esm/salla-order-branch.entry.js +1 -1
  174. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  175. package/dist/esm/salla-order-details-options.entry.js +1 -1
  176. package/dist/esm/salla-order-details.entry.js +1 -1
  177. package/dist/esm/salla-order-edit-item.entry.js +1 -1
  178. package/dist/esm/salla-order-edit-product-card.entry.js +1 -1
  179. package/dist/esm/salla-order-edit.entry.js +1 -1
  180. package/dist/esm/salla-order-options-modal_3.entry.js +1 -1
  181. package/dist/esm/salla-order-summary.entry.js +1 -1
  182. package/dist/esm/salla-order-totals-card.entry.js +1 -1
  183. package/dist/esm/salla-orders.entry.js +1 -1
  184. package/dist/esm/salla-payments.entry.js +1 -1
  185. package/dist/esm/salla-placeholder.entry.js +1 -1
  186. package/dist/esm/salla-price-range.entry.js +1 -1
  187. package/dist/esm/salla-product-card-embed.entry.js +1 -1
  188. package/dist/esm/salla-product-size-guide.entry.js +1 -1
  189. package/dist/esm/salla-products-list.entry.js +22 -6
  190. package/dist/esm/salla-quick-order.entry.js +1 -1
  191. package/dist/esm/salla-rating-modal.entry.js +1 -1
  192. package/dist/esm/salla-reward-action_4.entry.js +3 -3
  193. package/dist/esm/salla-scopes.entry.js +1 -1
  194. package/dist/esm/salla-search.entry.js +1 -1
  195. package/dist/esm/salla-skeleton.entry.js +1 -1
  196. package/dist/esm/salla-slider.entry.js +1 -1
  197. package/dist/esm/salla-social-share.entry.js +1 -1
  198. package/dist/esm/salla-social.entry.js +1 -1
  199. package/dist/esm/salla-tab-content_3.entry.js +1 -1
  200. package/dist/esm/salla-tiered-offer.entry.js +1 -1
  201. package/dist/esm/salla-tooltip.entry.js +1 -1
  202. package/dist/esm/salla-trust-badges.entry.js +1 -1
  203. package/dist/esm/salla-user-menu.entry.js +1 -1
  204. package/dist/esm/salla-user-profile.entry.js +1 -1
  205. package/dist/esm/salla-user-settings.entry.js +1 -1
  206. package/dist/esm/salla-verify.entry.js +1 -1
  207. package/dist/esm/salla-wallet.entry.js +1 -1
  208. package/dist/esm/salla-wishlist-actions.entry.js +1 -1
  209. package/dist/esm/{tracked-promise-BoBzcOVR.js → tracked-promise-CdkA_JjX.js} +1 -1
  210. package/dist/esm/twilight.js +3 -3
  211. package/dist/esm/{vanilla-picker-CsxkkcBh.js → vanilla-picker-BZWJ0V9v.js} +1 -1
  212. package/dist/twilight/p-01a4c68d.entry.js +4 -0
  213. package/dist/twilight/{p-f83f5f79.entry.js → p-027b0223.entry.js} +1 -1
  214. package/dist/twilight/{p-25bdb907.entry.js → p-0567c659.entry.js} +1 -1
  215. package/dist/twilight/{p-3bae4143.entry.js → p-0882266c.entry.js} +1 -1
  216. package/dist/twilight/{p-1e3bca03.entry.js → p-08fe51be.entry.js} +1 -1
  217. package/dist/twilight/{p-66eccd4e.entry.js → p-10d25bed.entry.js} +1 -1
  218. package/dist/twilight/{p-1671c056.entry.js → p-12221625.entry.js} +1 -1
  219. package/dist/twilight/{p-fb23d620.entry.js → p-1308a7f4.entry.js} +1 -1
  220. package/dist/twilight/{p-495097b0.entry.js → p-159fb121.entry.js} +1 -1
  221. package/dist/twilight/{p-ccac7ed0.entry.js → p-1d8eeff8.entry.js} +1 -1
  222. package/dist/twilight/{p-0d7bbb06.entry.js → p-215f22bf.entry.js} +1 -1
  223. package/dist/twilight/{p-a9f88f85.entry.js → p-236d6236.entry.js} +1 -1
  224. package/dist/twilight/{p-e74d8459.entry.js → p-277fa567.entry.js} +1 -1
  225. package/dist/twilight/{p-23e3eb95.entry.js → p-2b80d6bd.entry.js} +1 -1
  226. package/dist/twilight/{p-b48ba32a.entry.js → p-338810f6.entry.js} +1 -1
  227. package/dist/twilight/{p-72d2b19f.entry.js → p-34bb19ed.entry.js} +1 -1
  228. package/dist/twilight/{p-8c729878.entry.js → p-38831a43.entry.js} +1 -1
  229. package/dist/twilight/{p-8d2a81b0.entry.js → p-3be35606.entry.js} +1 -1
  230. package/dist/twilight/{p-Ce6fXRqk.js → p-3nNP8OVW.js} +1 -1
  231. package/dist/twilight/{p-9e6cb545.entry.js → p-4361f318.entry.js} +1 -1
  232. package/dist/twilight/{p-6db3f67b.entry.js → p-43caeaa9.entry.js} +1 -1
  233. package/dist/twilight/p-43e35e87.entry.js +4 -0
  234. package/dist/twilight/{p-3f249ea4.entry.js → p-48c49122.entry.js} +1 -1
  235. package/dist/twilight/{p-c4a37061.entry.js → p-4a2522e6.entry.js} +1 -1
  236. package/dist/twilight/{p-190364a4.entry.js → p-4a466458.entry.js} +1 -1
  237. package/dist/twilight/{p-0f2a8072.entry.js → p-4ccb7dbf.entry.js} +1 -1
  238. package/dist/twilight/{p-d243a973.entry.js → p-4cdc5eb0.entry.js} +1 -1
  239. package/dist/twilight/{p-b2c65720.entry.js → p-54feea36.entry.js} +1 -1
  240. package/dist/twilight/{p-c13103f9.entry.js → p-5d0017eb.entry.js} +1 -1
  241. package/dist/twilight/{p-f1e04195.entry.js → p-5e6745be.entry.js} +1 -1
  242. package/dist/twilight/{p-96467104.entry.js → p-6221c7fd.entry.js} +1 -1
  243. package/dist/twilight/{p-bb4affa3.entry.js → p-65986434.entry.js} +1 -1
  244. package/dist/twilight/{p-de6b5801.entry.js → p-65e84413.entry.js} +1 -1
  245. package/dist/twilight/{p-4e9a9071.entry.js → p-67b9bef4.entry.js} +1 -1
  246. package/dist/twilight/{p-0209568e.entry.js → p-680ee21a.entry.js} +1 -1
  247. package/dist/twilight/{p-78a9880e.entry.js → p-69f6aea4.entry.js} +1 -1
  248. package/dist/twilight/{p-410a4744.entry.js → p-6a520655.entry.js} +1 -1
  249. package/dist/twilight/{p-6387b132.entry.js → p-6b622cdf.entry.js} +1 -1
  250. package/dist/twilight/{p-b47719b5.entry.js → p-6b7a391d.entry.js} +1 -1
  251. package/dist/twilight/{p-739c39e9.entry.js → p-6bcd63ae.entry.js} +1 -1
  252. package/dist/twilight/{p-e095a7d1.entry.js → p-6e708a89.entry.js} +1 -1
  253. package/dist/twilight/{p-5622f4cb.entry.js → p-6fce9b27.entry.js} +1 -1
  254. package/dist/twilight/{p-08c5b2bb.entry.js → p-6fd14051.entry.js} +1 -1
  255. package/dist/twilight/{p-034745a7.entry.js → p-71371a68.entry.js} +1 -1
  256. package/dist/twilight/{p-1630fc53.entry.js → p-78b63b85.entry.js} +1 -1
  257. package/dist/twilight/{p-51126a79.entry.js → p-7b9f7996.entry.js} +1 -1
  258. package/dist/twilight/{p-29f65d08.entry.js → p-7e16042a.entry.js} +1 -1
  259. package/dist/twilight/{p-fe6b38a8.entry.js → p-80898e8c.entry.js} +1 -1
  260. package/dist/twilight/{p-31153a53.entry.js → p-876984e8.entry.js} +1 -1
  261. package/dist/twilight/{p-6ce3edc6.entry.js → p-894d4262.entry.js} +1 -1
  262. package/dist/twilight/{p-5ed51ea1.entry.js → p-8fddef9f.entry.js} +1 -1
  263. package/dist/twilight/{p-180c0ca5.entry.js → p-910ca1ce.entry.js} +1 -1
  264. package/dist/twilight/{p-7dc07299.entry.js → p-98bd4d1d.entry.js} +1 -1
  265. package/dist/twilight/{p-78246e72.entry.js → p-98cb2ad9.entry.js} +1 -1
  266. package/dist/twilight/{p-ec9b118c.entry.js → p-99372423.entry.js} +1 -1
  267. package/dist/twilight/{p-Bcg-je74.js → p-BjmKgRE2.js} +1 -1
  268. package/dist/twilight/{p-DGptAQB8.js → p-C6HZIai8.js} +1 -1
  269. package/dist/twilight/{p-B9arPRZj.js → p-C8JaiU7x.js} +1 -1
  270. package/dist/twilight/{p-DEKXmzPE.js → p-CYnG82Sr.js} +1 -1
  271. package/dist/twilight/{p-w8-d2MD6.js → p-DIe-ZaHw.js} +1 -1
  272. package/dist/twilight/{p-C95Jqawg.js → p-DThnTW1t.js} +1 -1
  273. package/dist/twilight/{p-DkoUjMC3.js → p-Do0Z2RvW.js} +1 -1
  274. package/dist/twilight/{p-WuZcMqCu.js → p-Dt7QetEN.js} +1 -1
  275. package/dist/twilight/{p-BV6J7gVl.js → p-RS-U17dA.js} +1 -1
  276. package/dist/twilight/{p-7d8b20c8.entry.js → p-a986efd7.entry.js} +1 -1
  277. package/dist/twilight/{p-4b3f6cd2.entry.js → p-ad24f7b7.entry.js} +1 -1
  278. package/dist/twilight/{p-dd208824.entry.js → p-ae1ff5a4.entry.js} +1 -1
  279. package/dist/twilight/{p-069d56cc.entry.js → p-ae40baf7.entry.js} +1 -1
  280. package/dist/twilight/{p-b5793358.entry.js → p-aefc937f.entry.js} +1 -1
  281. package/dist/twilight/p-af0f3c54.entry.js +4 -0
  282. package/dist/twilight/{p-1732f2b2.entry.js → p-afdcb549.entry.js} +1 -1
  283. package/dist/twilight/{p-e5336dcb.entry.js → p-b3b5f52a.entry.js} +1 -1
  284. package/dist/twilight/{p-ca0f40dc.entry.js → p-b4e487a3.entry.js} +1 -1
  285. package/dist/twilight/{p-52562de7.entry.js → p-b4e6ee26.entry.js} +1 -1
  286. package/dist/twilight/{p-2d92f08a.entry.js → p-b586e687.entry.js} +1 -1
  287. package/dist/twilight/{p-1f01e02d.entry.js → p-c4dd7259.entry.js} +1 -1
  288. package/dist/twilight/{p-7cc906fd.entry.js → p-c54b5512.entry.js} +1 -1
  289. package/dist/twilight/{p-8706b6a0.entry.js → p-ca338609.entry.js} +1 -1
  290. package/dist/twilight/{p-8a491693.entry.js → p-cd3a81d5.entry.js} +1 -1
  291. package/dist/twilight/p-df18ce74.entry.js +4 -0
  292. package/dist/twilight/{p-760bd859.entry.js → p-df2b2d2c.entry.js} +1 -1
  293. package/dist/twilight/{p-a99b352b.entry.js → p-df9735e4.entry.js} +1 -1
  294. package/dist/twilight/{p-096a708f.entry.js → p-e00ab427.entry.js} +1 -1
  295. package/dist/twilight/{p-5e4239e3.entry.js → p-e0eb1171.entry.js} +1 -1
  296. package/dist/twilight/{p-64980c56.entry.js → p-e2b9a669.entry.js} +1 -1
  297. package/dist/twilight/{p-def1cf41.entry.js → p-e7c43f45.entry.js} +1 -1
  298. package/dist/twilight/{p-57636818.entry.js → p-f04e749d.entry.js} +1 -1
  299. package/dist/twilight/{p-90475264.entry.js → p-f10c4351.entry.js} +1 -1
  300. package/dist/twilight/{p-08af584f.entry.js → p-f2155a0e.entry.js} +1 -1
  301. package/dist/twilight/{p-ad59d8f6.entry.js → p-f30850eb.entry.js} +1 -1
  302. package/dist/twilight/{p-16edb507.entry.js → p-f84a2d1f.entry.js} +1 -1
  303. package/dist/twilight/{p-88609f65.entry.js → p-f9d747fd.entry.js} +1 -1
  304. package/dist/twilight/{p-dc6ba997.entry.js → p-faecf830.entry.js} +1 -1
  305. package/dist/twilight/{p-b88ce9c1.entry.js → p-faedf801.entry.js} +1 -1
  306. package/dist/twilight/p-fc77d2ae.entry.js +4 -0
  307. package/dist/twilight/{p-d839d4ec.entry.js → p-fd0d78b0.entry.js} +1 -1
  308. package/dist/twilight/p-fda44045.entry.js +4 -0
  309. package/dist/twilight/{p-4a531040.entry.js → p-fe435826.entry.js} +1 -1
  310. package/dist/twilight/{p-BmFJLtoi.js → p-k6XsozPW.js} +1 -1
  311. package/dist/twilight/{p-DT96HiMD.js → p-k6hKHe3o.js} +1 -1
  312. package/dist/twilight/twilight.esm.js +1 -1
  313. package/dist/types/components/salla-product-options/availability-utils.d.ts +8 -1
  314. package/dist/types/components/salla-product-options/salla-product-options.d.ts +11 -0
  315. package/dist/types/components/salla-products-list/salla-products-list.d.ts +1 -0
  316. package/dist/types/components.d.ts +10 -37
  317. package/package.json +5 -5
  318. package/dist/cjs/salla-cart-summary-card.cjs.entry.js +0 -349
  319. package/dist/collection/components/salla-cart-summary-card/salla-cart-summary-card.js +0 -401
  320. package/dist/components/salla-cart-summary-card.d.ts +0 -11
  321. package/dist/components/salla-cart-summary-card.js +0 -404
  322. package/dist/esm/salla-cart-summary-card.entry.js +0 -347
  323. package/dist/twilight/p-04752b3a.entry.js +0 -4
  324. package/dist/twilight/p-15d93b1d.entry.js +0 -4
  325. package/dist/twilight/p-3de87ed4.entry.js +0 -4
  326. package/dist/twilight/p-5c4ee6f0.entry.js +0 -4
  327. package/dist/twilight/p-6023e80c.entry.js +0 -4
  328. package/dist/twilight/p-994bf3ae.entry.js +0 -4
  329. package/dist/twilight/p-f6796ea9.entry.js +0 -4
  330. package/dist/types/components/salla-cart-summary-card/salla-cart-summary-card.d.ts +0 -67
@@ -15,8 +15,15 @@
15
15
  *
16
16
  * skus_availability is always the authoritative source when present; is_out is
17
17
  * consulted only as a last resort when a detail has no SKU data at all.
18
+ *
19
+ * For unlimited products (no SKU data, or all SKUs false), all options default
20
+ * to available unless explicitly marked as out of stock.
21
+ *
22
+ * @param isProductAvailable – whether product is available at the parent level
23
+ * (e.g., quantity > 0 or -1 for unlimited). If true and all SKUs are false,
24
+ * treat as available (data is incomplete or product is unlimited).
18
25
  */
19
- export function computeAvailabilityMap(optionsData, selectedOptions) {
26
+ export function computeAvailabilityMap(optionsData, selectedOptions, isProductAvailable = true) {
20
27
  const map = {};
21
28
  if (!optionsData?.length)
22
29
  return map;
@@ -24,6 +31,22 @@ export function computeAvailabilityMap(optionsData, selectedOptions) {
24
31
  const isSingleGroup = variantGroups.length <= 1;
25
32
  // Non-advance options carry no variant SKUs — never let them constrain the intersection.
26
33
  const nonAdvanceOptionIds = new Set(optionsData.filter(opt => opt.is_advance === false).map(opt => opt.id));
34
+ // Unlimited product (no SKU data) — all options default to available unless explicitly marked.
35
+ if (variantGroups.length === 0) {
36
+ for (const optionGroup of optionsData) {
37
+ for (const detail of optionGroup.details) {
38
+ map[detail.id] = detail.is_out ? 'out_of_stock' : 'available';
39
+ }
40
+ }
41
+ return map;
42
+ }
43
+ // The isProductAvailable fallback (promote all-false SKUs to 'available') is only safe
44
+ // when the product carries NO in-stock SKU anywhere — that signals placeholder/incomplete
45
+ // SKU data for an unlimited product. If ANY SKU in the product is in stock, the data is
46
+ // real and all-false details are genuinely out of stock; promoting them would let shoppers
47
+ // pick an unfulfillable variant of a partially-available limited product.
48
+ const productHasAnyTrueSku = variantGroups.some(opt => opt.details?.some(d => d.skus_availability && Object.values(d.skus_availability).some(Boolean)));
49
+ const allowUnlimitedFallback = isProductAvailable && !productHasAnyTrueSku;
27
50
  for (const optionGroup of variantGroups) {
28
51
  const otherSelected = selectedOptions.filter(s => s.option_id !== optionGroup.id);
29
52
  for (const detail of optionGroup.details) {
@@ -34,9 +57,17 @@ export function computeAvailabilityMap(optionsData, selectedOptions) {
34
57
  continue;
35
58
  }
36
59
  const detailSkus = Object.keys(skusAvail).map(Number);
60
+ const hasAnyTrueSku = detailSkus.some(sku => skusAvail[sku]);
37
61
  // No cross-group context yet — evaluate this detail's own SKUs directly.
38
62
  if (isSingleGroup || otherSelected.length === 0) {
39
- map[detail.id] = detailSkus.some(sku => skusAvail[sku]) ? 'available' : 'out_of_stock';
63
+ // If product is available but all SKUs are false, treat as available
64
+ // (data incomplete or product is unlimited with placeholder SKU data).
65
+ if (!hasAnyTrueSku && allowUnlimitedFallback) {
66
+ map[detail.id] = 'available';
67
+ }
68
+ else {
69
+ map[detail.id] = hasAnyTrueSku ? 'available' : 'out_of_stock';
70
+ }
40
71
  continue;
41
72
  }
42
73
  // Intersect this detail's SKUs with those of each other selected detail.
@@ -47,11 +78,22 @@ export function computeAvailabilityMap(optionsData, selectedOptions) {
47
78
  const otherSkus = new Set(Object.keys(other.skus_availability || {}).map(Number));
48
79
  candidates = candidates.filter(sku => otherSkus.has(sku));
49
80
  }
81
+ // Empty intersection normally means an unfulfillable combination. But when the
82
+ // unlimited fallback applies (no true SKU anywhere — placeholder data), there are
83
+ // no real stock constraints, so a non-overlapping SKU set is a data artifact, not
84
+ // an impossible combination.
50
85
  if (!candidates.length) {
51
- map[detail.id] = 'impossible';
86
+ map[detail.id] = allowUnlimitedFallback ? 'available' : 'impossible';
52
87
  continue;
53
88
  }
54
- map[detail.id] = candidates.some(sku => skusAvail[sku]) ? 'available' : 'out_of_stock';
89
+ const hasAvailableCandidate = candidates.some(sku => skusAvail[sku]);
90
+ // If product available but no candidates match true SKUs, treat as available.
91
+ if (!hasAvailableCandidate && allowUnlimitedFallback) {
92
+ map[detail.id] = 'available';
93
+ }
94
+ else {
95
+ map[detail.id] = hasAvailableCandidate ? 'available' : 'out_of_stock';
96
+ }
55
97
  }
56
98
  }
57
99
  return map;
@@ -29,6 +29,17 @@ export class SallaProductOptions {
29
29
  this.userInitiatedValidation = false;
30
30
  this.isCartMode = false;
31
31
  this.availabilityMap = {};
32
+ /**
33
+ * Whether the product is available at the parent level (quantity > 0, or unlimited).
34
+ * Controls the unlimited-product fallback in computeAvailabilityMap: only when true is a
35
+ * detail with all-false SKUs treated as available (placeholder/incomplete data).
36
+ *
37
+ * The API path derives this automatically from `is_out_of_stock`. When options are supplied
38
+ * via the `options` prop, callers must set `product-available` explicitly — it defaults to
39
+ * false so genuinely out-of-stock products are never silently promoted to available.
40
+ * (Truly unlimited products with no SKU data are handled separately and don't need this.)
41
+ */
42
+ this.productAvailable = false;
32
43
  this.outSkus = [];
33
44
  /**
34
45
  * Avoid selection of previous default or selected card value option
@@ -115,7 +126,10 @@ export class SallaProductOptions {
115
126
  this.setOptionsData([]);
116
127
  }
117
128
  if (this.productId && !salla.url.is_page('cart')) {
118
- salla.api.product.getDetails(this.productId, ['options']).then(resp => this.setOptionsData(resp.data.options));
129
+ salla.api.product.getDetails(this.productId, ['options']).then(resp => {
130
+ this.productAvailable = !resp.data.is_out_of_stock;
131
+ this.setOptionsData(resp.data.options);
132
+ });
119
133
  }
120
134
  }
121
135
  /**
@@ -469,6 +483,9 @@ export class SallaProductOptions {
469
483
  }
470
484
  }
471
485
  this.outOfStockText = salla.lang.get('pages.products.out_of_stock');
486
+ // Props (e.g. product-available) are not set during the constructor, so recompute the
487
+ // availability map now that the prop value supplied on the options-prop path is applied.
488
+ this.computeAvailability();
472
489
  await salla.onReady();
473
490
  this.canDisabled = !salla.config.get('store.settings.product.notify_options_availability') || salla.url.is_page('cart');
474
491
  this.pasteHandler = this.handlePaste.bind(this);
@@ -781,7 +798,7 @@ export class SallaProductOptions {
781
798
  return detailName.replace('<i class=sicon-sar></i>', salla.config.currency()?.symbol || 'ر.س');
782
799
  }
783
800
  computeAvailability() {
784
- this.availabilityMap = computeAvailabilityMap(this.optionsData || [], this.selectedOptions || []);
801
+ this.availabilityMap = computeAvailabilityMap(this.optionsData || [], this.selectedOptions || [], this.productAvailable);
785
802
  }
786
803
  isOptionDetailOut(detail) {
787
804
  const status = this.availabilityMap[detail.id];
@@ -931,6 +948,26 @@ export class SallaProductOptions {
931
948
  }
932
949
  static get properties() {
933
950
  return {
951
+ "productAvailable": {
952
+ "type": "boolean",
953
+ "attribute": "product-available",
954
+ "mutable": true,
955
+ "complexType": {
956
+ "original": "boolean",
957
+ "resolved": "boolean",
958
+ "references": {}
959
+ },
960
+ "required": false,
961
+ "optional": false,
962
+ "docs": {
963
+ "tags": [],
964
+ "text": "Whether the product is available at the parent level (quantity > 0, or unlimited).\nControls the unlimited-product fallback in computeAvailabilityMap: only when true is a\ndetail with all-false SKUs treated as available (placeholder/incomplete data).\n\nThe API path derives this automatically from `is_out_of_stock`. When options are supplied\nvia the `options` prop, callers must set `product-available` explicitly \u2014 it defaults to\nfalse so genuinely out-of-stock products are never silently promoted to available.\n(Truly unlimited products with no SKU data are handled separately and don't need this.)"
965
+ },
966
+ "getter": false,
967
+ "setter": false,
968
+ "reflect": false,
969
+ "defaultValue": "false"
970
+ },
934
971
  "productId": {
935
972
  "type": "any",
936
973
  "attribute": "product-id",
@@ -406,13 +406,18 @@ export class SallaProductsList {
406
406
  }
407
407
  waitForLayoutStable(element) {
408
408
  let timeout = null;
409
+ let maxWait = null;
409
410
  return new Promise(resolve => {
410
- const observer = new MutationObserver(() => {
411
+ let observer;
412
+ const settle = () => {
411
413
  clearTimeout(timeout);
412
- timeout = setTimeout(() => {
413
- observer.disconnect();
414
- resolve(null);
415
- }, 160); // Adjust delay as needed for your layout
414
+ clearTimeout(maxWait);
415
+ observer.disconnect();
416
+ resolve(null);
417
+ };
418
+ observer = new MutationObserver(() => {
419
+ clearTimeout(timeout);
420
+ timeout = setTimeout(settle, 160); // Adjust delay as needed for your layout
416
421
  });
417
422
  // Observe changes to the entire body, including child nodes and attributes.
418
423
  observer.observe(element, {
@@ -420,6 +425,8 @@ export class SallaProductsList {
420
425
  subtree: true,
421
426
  attributes: true,
422
427
  });
428
+ // hard cap so a quiescent DOM still resolves and disconnects the observer
429
+ maxWait = setTimeout(settle, 1000);
423
430
  });
424
431
  }
425
432
  async waitForStableLayout(element) {
@@ -699,6 +706,7 @@ export class SallaProductsList {
699
706
  this.loadMoreWrapper.style.display = 'block';
700
707
  }
701
708
  this.animateItems();
709
+ this.refreshInfiniteScrollMeasurements();
702
710
  }
703
711
  }
704
712
  catch (error) {
@@ -750,6 +758,13 @@ export class SallaProductsList {
750
758
  this.infiniteScroll.loadNextPage();
751
759
  }
752
760
  }
761
+ // re-measure scroll trigger after layout settles; stale `top` breaks autoload
762
+ refreshInfiniteScrollMeasurements() {
763
+ if (!this.autoload || !this.infiniteScroll?.updateMeasurements) {
764
+ return;
765
+ }
766
+ this.waitForStableLayout(document.body).then(() => this.infiniteScroll?.updateMeasurements?.());
767
+ }
753
768
  async applyBeforeBuildListUrl(url) {
754
769
  try {
755
770
  const ctx = { component: this, url };
@@ -931,6 +946,7 @@ export class SallaProductsList {
931
946
  this.loadMoreWrapper && (this.loadMoreWrapper.style.display = 'block');
932
947
  }
933
948
  this.scrollToLastViewedProduct();
949
+ this.refreshInfiniteScrollMeasurements();
934
950
  }
935
951
  else if (!this.firstPageResponse && this.switchToNormalBehavior) {
936
952
  this.getInitialData()