@salla.sa/twilight-theme-engine 1.0.0-beta.4 → 1.0.0-beta.6

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 (212) hide show
  1. package/dist/{AddToCartForm-HOWNKCKX.js → AddToCartForm-KIIP7WPE.js} +5 -5
  2. package/dist/{AddToCartForm-HOWNKCKX.js.map → AddToCartForm-KIIP7WPE.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-W3BZIJHJ.js → BlogAuthorPage-MFG3IQPU.js} +13 -13
  4. package/dist/{BlogAuthorPage-W3BZIJHJ.js.map → BlogAuthorPage-MFG3IQPU.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-AIAJ5JBR.js → BlogCategoryPage-UVGE3GHP.js} +13 -13
  6. package/dist/{BlogCategoryPage-AIAJ5JBR.js.map → BlogCategoryPage-UVGE3GHP.js.map} +1 -1
  7. package/dist/{BlogPage-4BYF2EQW.js → BlogPage-UHS6PGXG.js} +11 -11
  8. package/dist/{BlogPage-4BYF2EQW.js.map → BlogPage-UHS6PGXG.js.map} +1 -1
  9. package/dist/{BlogSinglePage-AMNAUMWW.js → BlogSinglePage-EKHG3EEB.js} +11 -11
  10. package/dist/{BlogSinglePage-AMNAUMWW.js.map → BlogSinglePage-EKHG3EEB.js.map} +1 -1
  11. package/dist/{BlogTagPage-ELG2H5N5.js → BlogTagPage-YS7XJXCP.js} +13 -13
  12. package/dist/{BlogTagPage-ELG2H5N5.js.map → BlogTagPage-YS7XJXCP.js.map} +1 -1
  13. package/dist/{BrandsPage-ZSO3PYAV.js → BrandsPage-IR6BCOOA.js} +11 -11
  14. package/dist/{BrandsPage-ZSO3PYAV.js.map → BrandsPage-IR6BCOOA.js.map} +1 -1
  15. package/dist/{Breadcrumb-N32QFMVK.js → Breadcrumb-ZC2CFR3R.js} +11 -11
  16. package/dist/{Breadcrumb-N32QFMVK.js.map → Breadcrumb-ZC2CFR3R.js.map} +1 -1
  17. package/dist/{CartItem-SGTGOTEC.js → CartItem-3F7WSPBH.js} +11 -11
  18. package/dist/{CartItem-SGTGOTEC.js.map → CartItem-3F7WSPBH.js.map} +1 -1
  19. package/dist/{CartSummary-OKDGVSX2.js → CartSummary-CWNETS3X.js} +11 -11
  20. package/dist/{CartSummary-OKDGVSX2.js.map → CartSummary-CWNETS3X.js.map} +1 -1
  21. package/dist/Copyright-NDRRFPDN.js +9 -0
  22. package/dist/{Copyright-F3HLYXFJ.js.map → Copyright-NDRRFPDN.js.map} +1 -1
  23. package/dist/{CustomerLayout-LB4E2LHT.js → CustomerLayout-D57CJOKS.js} +11 -11
  24. package/dist/{CustomerLayout-LB4E2LHT.js.map → CustomerLayout-D57CJOKS.js.map} +1 -1
  25. package/dist/{Footer-UVCSKTW3.js → Footer-D7ZEGC6L.js} +11 -11
  26. package/dist/{Footer-UVCSKTW3.js.map → Footer-D7ZEGC6L.js.map} +1 -1
  27. package/dist/GoogleTag-HBGKI3VH.js +4 -0
  28. package/dist/GoogleTag-HBGKI3VH.js.map +1 -0
  29. package/dist/Header-HF73ZIFG.js +15 -0
  30. package/dist/{Header-BF6SPZJC.js.map → Header-HF73ZIFG.js.map} +1 -1
  31. package/dist/{LoyaltyPage-X4PHPUFC.js → LoyaltyPage-P7IAFKNS.js} +12 -12
  32. package/dist/{LoyaltyPage-X4PHPUFC.js.map → LoyaltyPage-P7IAFKNS.js.map} +1 -1
  33. package/dist/{MainMenu-R3EWTNNC.js → MainMenu-B7AP2G53.js} +11 -11
  34. package/dist/{MainMenu-R3EWTNNC.js.map → MainMenu-B7AP2G53.js.map} +1 -1
  35. package/dist/{MasterLayout-5JLM7IMW.js → MasterLayout-2A2JGJOW.js} +11 -11
  36. package/dist/{MasterLayout-5JLM7IMW.js.map → MasterLayout-2A2JGJOW.js.map} +1 -1
  37. package/dist/{MobileMenu-QXESUQXC.js → MobileMenu-NWBLBWXG.js} +11 -11
  38. package/dist/{MobileMenu-QXESUQXC.js.map → MobileMenu-NWBLBWXG.js.map} +1 -1
  39. package/dist/{NoContent-PBGESHBJ.js → NoContent-63TMCPGY.js} +4 -4
  40. package/dist/{NoContent-PBGESHBJ.js.map → NoContent-63TMCPGY.js.map} +1 -1
  41. package/dist/{NotificationsPage-V6UIPDJD.js → NotificationsPage-RYSVKPHN.js} +11 -11
  42. package/dist/{NotificationsPage-V6UIPDJD.js.map → NotificationsPage-RYSVKPHN.js.map} +1 -1
  43. package/dist/{OrderSinglePage-ZMEKPLE3.js → OrderSinglePage-Y4CWIQZG.js} +12 -12
  44. package/dist/{OrderSinglePage-ZMEKPLE3.js.map → OrderSinglePage-Y4CWIQZG.js.map} +1 -1
  45. package/dist/{OrdersPage-EAATVPYK.js → OrdersPage-ERZOMNEJ.js} +12 -12
  46. package/dist/{OrdersPage-EAATVPYK.js.map → OrdersPage-ERZOMNEJ.js.map} +1 -1
  47. package/dist/{PageSingle-Y6ARZ5LS.js → PageSingle-2FJRQTTK.js} +5 -5
  48. package/dist/{PageSingle-Y6ARZ5LS.js.map → PageSingle-2FJRQTTK.js.map} +1 -1
  49. package/dist/{ProductDetails-KTY4ZSFM.js → ProductDetails-GJXX7FBT.js} +6 -6
  50. package/dist/{ProductDetails-KTY4ZSFM.js.map → ProductDetails-GJXX7FBT.js.map} +1 -1
  51. package/dist/{ProfilePage-6SK34MDJ.js → ProfilePage-7XAPVC5W.js} +11 -11
  52. package/dist/{ProfilePage-6SK34MDJ.js.map → ProfilePage-7XAPVC5W.js.map} +1 -1
  53. package/dist/{SeoCartWidget-XF4GEJK7.js → SeoCartWidget-ZSMB4PZR.js} +11 -11
  54. package/dist/{SeoCartWidget-XF4GEJK7.js.map → SeoCartWidget-ZSMB4PZR.js.map} +1 -1
  55. package/dist/{SettingsPage-DPYARBPO.js → SettingsPage-K4KPFS23.js} +11 -11
  56. package/dist/{SettingsPage-DPYARBPO.js.map → SettingsPage-K4KPFS23.js.map} +1 -1
  57. package/dist/SiftSnippet-5FCU6TR6.js +4 -0
  58. package/dist/SiftSnippet-5FCU6TR6.js.map +1 -0
  59. package/dist/StoreClosedNotification-FM7OGUVZ.js +40 -0
  60. package/dist/StoreClosedNotification-FM7OGUVZ.js.map +1 -0
  61. package/dist/{TestimonialsPage-4OFS5Z4V.js → TestimonialsPage-K5XGI4UL.js} +5 -5
  62. package/dist/{TestimonialsPage-4OFS5Z4V.js.map → TestimonialsPage-K5XGI4UL.js.map} +1 -1
  63. package/dist/{ThankYouPage-C7PA3RJP.js → ThankYouPage-2LFEJXD5.js} +11 -11
  64. package/dist/{ThankYouPage-C7PA3RJP.js.map → ThankYouPage-2LFEJXD5.js.map} +1 -1
  65. package/dist/TwilightBundles-G6GHWBID.js +4 -0
  66. package/dist/TwilightBundles-G6GHWBID.js.map +1 -0
  67. package/dist/{WalletPage-66XGZKO7.js → WalletPage-5T432FV5.js} +11 -11
  68. package/dist/{WalletPage-66XGZKO7.js.map → WalletPage-5T432FV5.js.map} +1 -1
  69. package/dist/{WishlistPage-7ZZYHBSZ.js → WishlistPage-3KRCEEJ2.js} +12 -12
  70. package/dist/{WishlistPage-7ZZYHBSZ.js.map → WishlistPage-3KRCEEJ2.js.map} +1 -1
  71. package/dist/api/brands.js +10 -10
  72. package/dist/api/cart.js +10 -10
  73. package/dist/api/category.js +10 -10
  74. package/dist/api/loyalty.js +10 -10
  75. package/dist/api/notification.js +8 -0
  76. package/dist/api/notification.js.map +1 -0
  77. package/dist/api/order.js +10 -10
  78. package/dist/api/page.js +10 -10
  79. package/dist/api/product.js +10 -10
  80. package/dist/api/wishlist.js +8 -0
  81. package/dist/api/wishlist.js.map +1 -0
  82. package/dist/{StoreClosedNotification-KSB2GPEZ.js → chunk-4YQJ27IO.js} +4 -37
  83. package/dist/chunk-4YQJ27IO.js.map +1 -0
  84. package/dist/chunk-6D7SF3YR.js +28 -0
  85. package/dist/chunk-6D7SF3YR.js.map +1 -0
  86. package/dist/{chunk-RH32IGQD.js → chunk-77PLWFVT.js} +6 -6
  87. package/dist/{chunk-RH32IGQD.js.map → chunk-77PLWFVT.js.map} +1 -1
  88. package/dist/{chunk-N5RSKJP4.js → chunk-7KY4RVH4.js} +3 -3
  89. package/dist/{chunk-N5RSKJP4.js.map → chunk-7KY4RVH4.js.map} +1 -1
  90. package/dist/{chunk-SYHTMNYF.js → chunk-7ZAP64PR.js} +3 -3
  91. package/dist/{chunk-SYHTMNYF.js.map → chunk-7ZAP64PR.js.map} +1 -1
  92. package/dist/{SiftSnippet-X74S5KDO.js → chunk-AQANJRBD.js} +3 -3
  93. package/dist/chunk-AQANJRBD.js.map +1 -0
  94. package/dist/{chunk-TZ4YD5CU.js → chunk-AXW67SY7.js} +3 -3
  95. package/dist/{chunk-TZ4YD5CU.js.map → chunk-AXW67SY7.js.map} +1 -1
  96. package/dist/chunk-BGF4LMSE.js +14 -0
  97. package/dist/{chunk-TRUQDEMI.js.map → chunk-BGF4LMSE.js.map} +1 -1
  98. package/dist/{chunk-XUI3TRXF.js → chunk-BYMOPN2S.js} +8 -3
  99. package/dist/chunk-BYMOPN2S.js.map +1 -0
  100. package/dist/{GoogleTag-4LHWC365.js → chunk-DNCQIT6S.js} +3 -3
  101. package/dist/chunk-DNCQIT6S.js.map +1 -0
  102. package/dist/{chunk-O2UOV5RK.js → chunk-EHKTHLXK.js} +2 -2
  103. package/dist/{chunk-O2UOV5RK.js.map → chunk-EHKTHLXK.js.map} +1 -1
  104. package/dist/{chunk-4EQEYRZ7.js → chunk-ERQIOVSF.js} +5 -5
  105. package/dist/{chunk-4EQEYRZ7.js.map → chunk-ERQIOVSF.js.map} +1 -1
  106. package/dist/{chunk-562ZMVI3.js → chunk-EX5U2RKM.js} +26 -7
  107. package/dist/chunk-EX5U2RKM.js.map +1 -0
  108. package/dist/{chunk-DFMO5KBU.js → chunk-F5B7KCTV.js} +3 -3
  109. package/dist/{chunk-DFMO5KBU.js.map → chunk-F5B7KCTV.js.map} +1 -1
  110. package/dist/{chunk-6YX4RS55.js → chunk-F7MTREKM.js} +3 -3
  111. package/dist/{chunk-6YX4RS55.js.map → chunk-F7MTREKM.js.map} +1 -1
  112. package/dist/{chunk-GLM3RPCP.js → chunk-FUUWI2B6.js} +17 -14
  113. package/dist/chunk-FUUWI2B6.js.map +1 -0
  114. package/dist/{chunk-NSX6XPDU.js → chunk-FWZZL6LO.js} +6 -6
  115. package/dist/{chunk-NSX6XPDU.js.map → chunk-FWZZL6LO.js.map} +1 -1
  116. package/dist/{chunk-LBUMC5PB.js → chunk-GOYYO4NI.js} +2 -2
  117. package/dist/{chunk-LBUMC5PB.js.map → chunk-GOYYO4NI.js.map} +1 -1
  118. package/dist/{chunk-GO34DE35.js → chunk-H6J7FTB6.js} +4 -4
  119. package/dist/{chunk-GO34DE35.js.map → chunk-H6J7FTB6.js.map} +1 -1
  120. package/dist/{chunk-GN34LCTG.js → chunk-JWXJPJBO.js} +25 -5
  121. package/dist/chunk-JWXJPJBO.js.map +1 -0
  122. package/dist/{chunk-6B6VCCMC.js → chunk-KIOJB7HI.js} +3 -3
  123. package/dist/{chunk-6B6VCCMC.js.map → chunk-KIOJB7HI.js.map} +1 -1
  124. package/dist/{chunk-U7HAK5U7.js → chunk-KN7CD7ZL.js} +6 -6
  125. package/dist/{chunk-U7HAK5U7.js.map → chunk-KN7CD7ZL.js.map} +1 -1
  126. package/dist/{chunk-OZTGUF7K.js → chunk-KRX225QA.js} +3 -3
  127. package/dist/{chunk-OZTGUF7K.js.map → chunk-KRX225QA.js.map} +1 -1
  128. package/dist/{chunk-Q3VACSSR.js → chunk-KXI7DU7Y.js} +3 -3
  129. package/dist/{chunk-Q3VACSSR.js.map → chunk-KXI7DU7Y.js.map} +1 -1
  130. package/dist/{chunk-2KF5JJU6.js → chunk-OZEQVDBM.js} +4 -4
  131. package/dist/{chunk-2KF5JJU6.js.map → chunk-OZEQVDBM.js.map} +1 -1
  132. package/dist/{chunk-YCYTBRYB.js → chunk-PDLXJYO3.js} +3 -3
  133. package/dist/{chunk-YCYTBRYB.js.map → chunk-PDLXJYO3.js.map} +1 -1
  134. package/dist/{TwilightBundles-5F2H75VV.js → chunk-RBEYMAKM.js} +3 -3
  135. package/dist/chunk-RBEYMAKM.js.map +1 -0
  136. package/dist/{chunk-EQ5ZGAVR.js → chunk-SFR5V2QH.js} +4 -4
  137. package/dist/{chunk-EQ5ZGAVR.js.map → chunk-SFR5V2QH.js.map} +1 -1
  138. package/dist/{chunk-5Q6PFLDN.js → chunk-TFZ2RT6P.js} +3 -3
  139. package/dist/{chunk-5Q6PFLDN.js.map → chunk-TFZ2RT6P.js.map} +1 -1
  140. package/dist/{chunk-QTDGM2SO.js → chunk-TLB7XC4D.js} +6 -6
  141. package/dist/{chunk-QTDGM2SO.js.map → chunk-TLB7XC4D.js.map} +1 -1
  142. package/dist/{chunk-SBIXBX6J.js → chunk-XUUID4XZ.js} +3 -3
  143. package/dist/{chunk-SBIXBX6J.js.map → chunk-XUUID4XZ.js.map} +1 -1
  144. package/dist/{chunk-A5ZRUAMT.js → chunk-YOAEGGXM.js} +3 -3
  145. package/dist/{chunk-A5ZRUAMT.js.map → chunk-YOAEGGXM.js.map} +1 -1
  146. package/dist/components/cart/index.js +1 -1
  147. package/dist/components/common/index.js +3 -3
  148. package/dist/components/drawer/index.js +9 -9
  149. package/dist/components/home/index.js +12 -12
  150. package/dist/components/layout/index.js +5 -5
  151. package/dist/components/product/index.js +10 -10
  152. package/dist/components/store/index.js +49 -0
  153. package/dist/components/store/index.js.map +1 -0
  154. package/dist/components/tracking/index.js +16 -0
  155. package/dist/components/tracking/index.js.map +1 -0
  156. package/dist/contexts/index.js +30 -0
  157. package/dist/contexts/index.js.map +1 -0
  158. package/dist/{document-class-PLK3HUM6.js → document-class-NEP4TMDL.js} +5 -5
  159. package/dist/{document-class-PLK3HUM6.js.map → document-class-NEP4TMDL.js.map} +1 -1
  160. package/dist/hooks/index.js +9 -9
  161. package/dist/hooks/useDocumentClass.js +1 -1
  162. package/dist/hooks/useGtm.js +39 -0
  163. package/dist/hooks/useGtm.js.map +1 -0
  164. package/dist/hooks/useMoney.js +9 -9
  165. package/dist/hooks/useStore.js +9 -9
  166. package/dist/index.js +9 -9
  167. package/dist/{navigation-N4H65RUN.js → navigation-BXQW7Z4X.js} +4 -4
  168. package/dist/{navigation-N4H65RUN.js.map → navigation-BXQW7Z4X.js.map} +1 -1
  169. package/dist/{navigation-YCYHW4MK.js → navigation-MAZHULIR.js} +5 -5
  170. package/dist/{navigation-YCYHW4MK.js.map → navigation-MAZHULIR.js.map} +1 -1
  171. package/dist/{not-found-BJ3VK5VJ.js → not-found-VAZJJIEX.js} +11 -11
  172. package/dist/{not-found-BJ3VK5VJ.js.map → not-found-VAZJJIEX.js.map} +1 -1
  173. package/dist/providers/index.js +39 -0
  174. package/dist/providers/index.js.map +1 -0
  175. package/dist/routes/account/orders.js +11 -11
  176. package/dist/routes/account.js +19 -40
  177. package/dist/routes/account.js.map +1 -1
  178. package/dist/routes/blog.js +15 -15
  179. package/dist/routes/brands.js +11 -11
  180. package/dist/routes/cart.js +16 -16
  181. package/dist/routes/home.js +13 -13
  182. package/dist/routes/index.js +10 -10
  183. package/dist/routes/loyalty.js +11 -11
  184. package/dist/routes/page.js +11 -11
  185. package/dist/routes/product-listing.js +14 -14
  186. package/dist/routes/product.js +12 -12
  187. package/dist/routes/root/head.d.ts +2 -0
  188. package/dist/routes/root/head.d.ts.map +1 -1
  189. package/dist/routes/seo-redirects.js +10 -10
  190. package/dist/routes/testimonials.js +1 -1
  191. package/dist/routes/thank-you.js +11 -11
  192. package/dist/skeleton.js +13 -13
  193. package/dist/tanstack.js +6 -6
  194. package/dist/types/hooks.js +4 -0
  195. package/dist/types/hooks.js.map +1 -0
  196. package/dist/types/index.d.ts +4 -0
  197. package/dist/types/index.d.ts.map +1 -1
  198. package/dist/types/index.js +1 -1
  199. package/dist/vite/index.js +89 -89
  200. package/dist/vite/index.js.map +1 -1
  201. package/package.json +24 -24
  202. package/dist/Copyright-F3HLYXFJ.js +0 -9
  203. package/dist/GoogleTag-4LHWC365.js.map +0 -1
  204. package/dist/Header-BF6SPZJC.js +0 -15
  205. package/dist/SiftSnippet-X74S5KDO.js.map +0 -1
  206. package/dist/StoreClosedNotification-KSB2GPEZ.js.map +0 -1
  207. package/dist/TwilightBundles-5F2H75VV.js.map +0 -1
  208. package/dist/chunk-562ZMVI3.js.map +0 -1
  209. package/dist/chunk-GLM3RPCP.js.map +0 -1
  210. package/dist/chunk-GN34LCTG.js.map +0 -1
  211. package/dist/chunk-TRUQDEMI.js +0 -14
  212. package/dist/chunk-XUI3TRXF.js.map +0 -1
@@ -1,10 +1,9 @@
1
- export { brand } from '../chunk-SBIXBX6J.js';
2
- import '../chunk-GLM3RPCP.js';
3
- import '../chunk-QTDGM2SO.js';
4
- import '../chunk-5Q6PFLDN.js';
5
- import '../chunk-GO34DE35.js';
1
+ export { brand } from '../chunk-XUUID4XZ.js';
2
+ import '../chunk-FUUWI2B6.js';
3
+ import '../chunk-TLB7XC4D.js';
4
+ import '../chunk-TFZ2RT6P.js';
5
+ import '../chunk-H6J7FTB6.js';
6
6
  import '../chunk-VVZNW5CB.js';
7
- import '../chunk-LBUMC5PB.js';
8
7
  import '../chunk-MTONGOJD.js';
9
8
  import '../chunk-2FU6CVSB.js';
10
9
  import '../chunk-I5Z4NJBB.js';
@@ -12,10 +11,11 @@ import '../chunk-TCSNNCRH.js';
12
11
  import '../chunk-2TB2LTL2.js';
13
12
  import '../chunk-QYL5OHAV.js';
14
13
  import '../chunk-KIPZQN3Y.js';
14
+ import '../chunk-GOYYO4NI.js';
15
15
  import '../chunk-Z653O7MX.js';
16
16
  import '../chunk-ZCH7W7DZ.js';
17
17
  import '../chunk-SSRNIBVV.js';
18
- import '../chunk-GN34LCTG.js';
18
+ import '../chunk-JWXJPJBO.js';
19
19
  import '../chunk-CW625T2E.js';
20
20
  import '../chunk-BVSJPBJ6.js';
21
21
  import '../chunk-GBWCXUPD.js';
@@ -26,9 +26,9 @@ import '../chunk-YMVLYYLU.js';
26
26
  import '../chunk-RYBA3JDM.js';
27
27
  import '../chunk-25SSLQAJ.js';
28
28
  import '../chunk-J37AYLWL.js';
29
- import '../chunk-2KF5JJU6.js';
30
- import '../chunk-TZ4YD5CU.js';
31
- import '../chunk-XUI3TRXF.js';
29
+ import '../chunk-OZEQVDBM.js';
30
+ import '../chunk-AXW67SY7.js';
31
+ import '../chunk-BYMOPN2S.js';
32
32
  import '../chunk-6BZ5TKEV.js';
33
33
  import '../chunk-UE3BUFZI.js';
34
34
  import '../chunk-3DCZJDDK.js';
package/dist/api/cart.js CHANGED
@@ -1,10 +1,9 @@
1
- export { cart } from '../chunk-6B6VCCMC.js';
2
- import '../chunk-GLM3RPCP.js';
3
- import '../chunk-QTDGM2SO.js';
4
- import '../chunk-5Q6PFLDN.js';
5
- import '../chunk-GO34DE35.js';
1
+ export { cart } from '../chunk-KIOJB7HI.js';
2
+ import '../chunk-FUUWI2B6.js';
3
+ import '../chunk-TLB7XC4D.js';
4
+ import '../chunk-TFZ2RT6P.js';
5
+ import '../chunk-H6J7FTB6.js';
6
6
  import '../chunk-VVZNW5CB.js';
7
- import '../chunk-LBUMC5PB.js';
8
7
  import '../chunk-MTONGOJD.js';
9
8
  import '../chunk-2FU6CVSB.js';
10
9
  import '../chunk-I5Z4NJBB.js';
@@ -12,10 +11,11 @@ import '../chunk-TCSNNCRH.js';
12
11
  import '../chunk-2TB2LTL2.js';
13
12
  import '../chunk-QYL5OHAV.js';
14
13
  import '../chunk-KIPZQN3Y.js';
14
+ import '../chunk-GOYYO4NI.js';
15
15
  import '../chunk-Z653O7MX.js';
16
16
  import '../chunk-ZCH7W7DZ.js';
17
17
  import '../chunk-SSRNIBVV.js';
18
- import '../chunk-GN34LCTG.js';
18
+ import '../chunk-JWXJPJBO.js';
19
19
  import '../chunk-CW625T2E.js';
20
20
  import '../chunk-BVSJPBJ6.js';
21
21
  import '../chunk-GBWCXUPD.js';
@@ -26,9 +26,9 @@ import '../chunk-YMVLYYLU.js';
26
26
  import '../chunk-RYBA3JDM.js';
27
27
  import '../chunk-25SSLQAJ.js';
28
28
  import '../chunk-J37AYLWL.js';
29
- import '../chunk-2KF5JJU6.js';
30
- import '../chunk-TZ4YD5CU.js';
31
- import '../chunk-XUI3TRXF.js';
29
+ import '../chunk-OZEQVDBM.js';
30
+ import '../chunk-AXW67SY7.js';
31
+ import '../chunk-BYMOPN2S.js';
32
32
  import '../chunk-6BZ5TKEV.js';
33
33
  import '../chunk-UE3BUFZI.js';
34
34
  import '../chunk-3DCZJDDK.js';
@@ -1,10 +1,9 @@
1
- export { category } from '../chunk-YCYTBRYB.js';
2
- import '../chunk-GLM3RPCP.js';
3
- import '../chunk-QTDGM2SO.js';
4
- import '../chunk-5Q6PFLDN.js';
5
- import '../chunk-GO34DE35.js';
1
+ export { category } from '../chunk-PDLXJYO3.js';
2
+ import '../chunk-FUUWI2B6.js';
3
+ import '../chunk-TLB7XC4D.js';
4
+ import '../chunk-TFZ2RT6P.js';
5
+ import '../chunk-H6J7FTB6.js';
6
6
  import '../chunk-VVZNW5CB.js';
7
- import '../chunk-LBUMC5PB.js';
8
7
  import '../chunk-MTONGOJD.js';
9
8
  import '../chunk-2FU6CVSB.js';
10
9
  import '../chunk-I5Z4NJBB.js';
@@ -12,10 +11,11 @@ import '../chunk-TCSNNCRH.js';
12
11
  import '../chunk-2TB2LTL2.js';
13
12
  import '../chunk-QYL5OHAV.js';
14
13
  import '../chunk-KIPZQN3Y.js';
14
+ import '../chunk-GOYYO4NI.js';
15
15
  import '../chunk-Z653O7MX.js';
16
16
  import '../chunk-ZCH7W7DZ.js';
17
17
  import '../chunk-SSRNIBVV.js';
18
- import '../chunk-GN34LCTG.js';
18
+ import '../chunk-JWXJPJBO.js';
19
19
  import '../chunk-CW625T2E.js';
20
20
  import '../chunk-BVSJPBJ6.js';
21
21
  import '../chunk-GBWCXUPD.js';
@@ -26,9 +26,9 @@ import '../chunk-YMVLYYLU.js';
26
26
  import '../chunk-RYBA3JDM.js';
27
27
  import '../chunk-25SSLQAJ.js';
28
28
  import '../chunk-J37AYLWL.js';
29
- import '../chunk-2KF5JJU6.js';
30
- import '../chunk-TZ4YD5CU.js';
31
- import '../chunk-XUI3TRXF.js';
29
+ import '../chunk-OZEQVDBM.js';
30
+ import '../chunk-AXW67SY7.js';
31
+ import '../chunk-BYMOPN2S.js';
32
32
  import '../chunk-6BZ5TKEV.js';
33
33
  import '../chunk-UE3BUFZI.js';
34
34
  import '../chunk-3DCZJDDK.js';
@@ -1,10 +1,9 @@
1
- export { loyalty } from '../chunk-6YX4RS55.js';
2
- import '../chunk-GLM3RPCP.js';
3
- import '../chunk-QTDGM2SO.js';
4
- import '../chunk-5Q6PFLDN.js';
5
- import '../chunk-GO34DE35.js';
1
+ export { loyalty } from '../chunk-F7MTREKM.js';
2
+ import '../chunk-FUUWI2B6.js';
3
+ import '../chunk-TLB7XC4D.js';
4
+ import '../chunk-TFZ2RT6P.js';
5
+ import '../chunk-H6J7FTB6.js';
6
6
  import '../chunk-VVZNW5CB.js';
7
- import '../chunk-LBUMC5PB.js';
8
7
  import '../chunk-MTONGOJD.js';
9
8
  import '../chunk-2FU6CVSB.js';
10
9
  import '../chunk-I5Z4NJBB.js';
@@ -12,10 +11,11 @@ import '../chunk-TCSNNCRH.js';
12
11
  import '../chunk-2TB2LTL2.js';
13
12
  import '../chunk-QYL5OHAV.js';
14
13
  import '../chunk-KIPZQN3Y.js';
14
+ import '../chunk-GOYYO4NI.js';
15
15
  import '../chunk-Z653O7MX.js';
16
16
  import '../chunk-ZCH7W7DZ.js';
17
17
  import '../chunk-SSRNIBVV.js';
18
- import '../chunk-GN34LCTG.js';
18
+ import '../chunk-JWXJPJBO.js';
19
19
  import '../chunk-CW625T2E.js';
20
20
  import '../chunk-BVSJPBJ6.js';
21
21
  import '../chunk-GBWCXUPD.js';
@@ -26,9 +26,9 @@ import '../chunk-YMVLYYLU.js';
26
26
  import '../chunk-RYBA3JDM.js';
27
27
  import '../chunk-25SSLQAJ.js';
28
28
  import '../chunk-J37AYLWL.js';
29
- import '../chunk-2KF5JJU6.js';
30
- import '../chunk-TZ4YD5CU.js';
31
- import '../chunk-XUI3TRXF.js';
29
+ import '../chunk-OZEQVDBM.js';
30
+ import '../chunk-AXW67SY7.js';
31
+ import '../chunk-BYMOPN2S.js';
32
32
  import '../chunk-6BZ5TKEV.js';
33
33
  import '../chunk-UE3BUFZI.js';
34
34
  import '../chunk-3DCZJDDK.js';
@@ -0,0 +1,8 @@
1
+ export { notification } from '../chunk-6D7SF3YR.js';
2
+ import '../chunk-2TB2LTL2.js';
3
+ import '../chunk-QYL5OHAV.js';
4
+ import '../chunk-KIPZQN3Y.js';
5
+ import '../chunk-T72DAX7R.js';
6
+ import '../chunk-DGUM43GV.js';
7
+ //# sourceMappingURL=notification.js.map
8
+ //# sourceMappingURL=notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"notification.js"}
package/dist/api/order.js CHANGED
@@ -1,10 +1,9 @@
1
- export { order } from '../chunk-N5RSKJP4.js';
2
- import '../chunk-GLM3RPCP.js';
3
- import '../chunk-QTDGM2SO.js';
4
- import '../chunk-5Q6PFLDN.js';
5
- import '../chunk-GO34DE35.js';
1
+ export { order } from '../chunk-7KY4RVH4.js';
2
+ import '../chunk-FUUWI2B6.js';
3
+ import '../chunk-TLB7XC4D.js';
4
+ import '../chunk-TFZ2RT6P.js';
5
+ import '../chunk-H6J7FTB6.js';
6
6
  import '../chunk-VVZNW5CB.js';
7
- import '../chunk-LBUMC5PB.js';
8
7
  import '../chunk-MTONGOJD.js';
9
8
  import '../chunk-2FU6CVSB.js';
10
9
  import '../chunk-I5Z4NJBB.js';
@@ -12,10 +11,11 @@ import '../chunk-TCSNNCRH.js';
12
11
  import '../chunk-2TB2LTL2.js';
13
12
  import '../chunk-QYL5OHAV.js';
14
13
  import '../chunk-KIPZQN3Y.js';
14
+ import '../chunk-GOYYO4NI.js';
15
15
  import '../chunk-Z653O7MX.js';
16
16
  import '../chunk-ZCH7W7DZ.js';
17
17
  import '../chunk-SSRNIBVV.js';
18
- import '../chunk-GN34LCTG.js';
18
+ import '../chunk-JWXJPJBO.js';
19
19
  import '../chunk-CW625T2E.js';
20
20
  import '../chunk-BVSJPBJ6.js';
21
21
  import '../chunk-GBWCXUPD.js';
@@ -26,9 +26,9 @@ import '../chunk-YMVLYYLU.js';
26
26
  import '../chunk-RYBA3JDM.js';
27
27
  import '../chunk-25SSLQAJ.js';
28
28
  import '../chunk-J37AYLWL.js';
29
- import '../chunk-2KF5JJU6.js';
30
- import '../chunk-TZ4YD5CU.js';
31
- import '../chunk-XUI3TRXF.js';
29
+ import '../chunk-OZEQVDBM.js';
30
+ import '../chunk-AXW67SY7.js';
31
+ import '../chunk-BYMOPN2S.js';
32
32
  import '../chunk-6BZ5TKEV.js';
33
33
  import '../chunk-UE3BUFZI.js';
34
34
  import '../chunk-3DCZJDDK.js';
package/dist/api/page.js CHANGED
@@ -1,10 +1,9 @@
1
- export { page } from '../chunk-Q3VACSSR.js';
2
- import '../chunk-GLM3RPCP.js';
3
- import '../chunk-QTDGM2SO.js';
4
- import '../chunk-5Q6PFLDN.js';
5
- import '../chunk-GO34DE35.js';
1
+ export { page } from '../chunk-KXI7DU7Y.js';
2
+ import '../chunk-FUUWI2B6.js';
3
+ import '../chunk-TLB7XC4D.js';
4
+ import '../chunk-TFZ2RT6P.js';
5
+ import '../chunk-H6J7FTB6.js';
6
6
  import '../chunk-VVZNW5CB.js';
7
- import '../chunk-LBUMC5PB.js';
8
7
  import '../chunk-MTONGOJD.js';
9
8
  import '../chunk-2FU6CVSB.js';
10
9
  import '../chunk-I5Z4NJBB.js';
@@ -12,10 +11,11 @@ import '../chunk-TCSNNCRH.js';
12
11
  import '../chunk-2TB2LTL2.js';
13
12
  import '../chunk-QYL5OHAV.js';
14
13
  import '../chunk-KIPZQN3Y.js';
14
+ import '../chunk-GOYYO4NI.js';
15
15
  import '../chunk-Z653O7MX.js';
16
16
  import '../chunk-ZCH7W7DZ.js';
17
17
  import '../chunk-SSRNIBVV.js';
18
- import '../chunk-GN34LCTG.js';
18
+ import '../chunk-JWXJPJBO.js';
19
19
  import '../chunk-CW625T2E.js';
20
20
  import '../chunk-BVSJPBJ6.js';
21
21
  import '../chunk-GBWCXUPD.js';
@@ -26,9 +26,9 @@ import '../chunk-YMVLYYLU.js';
26
26
  import '../chunk-RYBA3JDM.js';
27
27
  import '../chunk-25SSLQAJ.js';
28
28
  import '../chunk-J37AYLWL.js';
29
- import '../chunk-2KF5JJU6.js';
30
- import '../chunk-TZ4YD5CU.js';
31
- import '../chunk-XUI3TRXF.js';
29
+ import '../chunk-OZEQVDBM.js';
30
+ import '../chunk-AXW67SY7.js';
31
+ import '../chunk-BYMOPN2S.js';
32
32
  import '../chunk-6BZ5TKEV.js';
33
33
  import '../chunk-UE3BUFZI.js';
34
34
  import '../chunk-3DCZJDDK.js';
@@ -1,10 +1,9 @@
1
- export { product } from '../chunk-OZTGUF7K.js';
2
- import '../chunk-GLM3RPCP.js';
3
- import '../chunk-QTDGM2SO.js';
4
- import '../chunk-5Q6PFLDN.js';
5
- import '../chunk-GO34DE35.js';
1
+ export { product } from '../chunk-KRX225QA.js';
2
+ import '../chunk-FUUWI2B6.js';
3
+ import '../chunk-TLB7XC4D.js';
4
+ import '../chunk-TFZ2RT6P.js';
5
+ import '../chunk-H6J7FTB6.js';
6
6
  import '../chunk-VVZNW5CB.js';
7
- import '../chunk-LBUMC5PB.js';
8
7
  import '../chunk-MTONGOJD.js';
9
8
  import '../chunk-2FU6CVSB.js';
10
9
  import '../chunk-I5Z4NJBB.js';
@@ -12,10 +11,11 @@ import '../chunk-TCSNNCRH.js';
12
11
  import '../chunk-2TB2LTL2.js';
13
12
  import '../chunk-QYL5OHAV.js';
14
13
  import '../chunk-KIPZQN3Y.js';
14
+ import '../chunk-GOYYO4NI.js';
15
15
  import '../chunk-Z653O7MX.js';
16
16
  import '../chunk-ZCH7W7DZ.js';
17
17
  import '../chunk-SSRNIBVV.js';
18
- import '../chunk-GN34LCTG.js';
18
+ import '../chunk-JWXJPJBO.js';
19
19
  import '../chunk-CW625T2E.js';
20
20
  import '../chunk-BVSJPBJ6.js';
21
21
  import '../chunk-GBWCXUPD.js';
@@ -26,9 +26,9 @@ import '../chunk-YMVLYYLU.js';
26
26
  import '../chunk-RYBA3JDM.js';
27
27
  import '../chunk-25SSLQAJ.js';
28
28
  import '../chunk-J37AYLWL.js';
29
- import '../chunk-2KF5JJU6.js';
30
- import '../chunk-TZ4YD5CU.js';
31
- import '../chunk-XUI3TRXF.js';
29
+ import '../chunk-OZEQVDBM.js';
30
+ import '../chunk-AXW67SY7.js';
31
+ import '../chunk-BYMOPN2S.js';
32
32
  import '../chunk-6BZ5TKEV.js';
33
33
  import '../chunk-UE3BUFZI.js';
34
34
  import '../chunk-3DCZJDDK.js';
@@ -0,0 +1,8 @@
1
+ export { wishlist } from '../chunk-EHKTHLXK.js';
2
+ import '../chunk-2TB2LTL2.js';
3
+ import '../chunk-QYL5OHAV.js';
4
+ import '../chunk-KIPZQN3Y.js';
5
+ import '../chunk-T72DAX7R.js';
6
+ import '../chunk-DGUM43GV.js';
7
+ //# sourceMappingURL=wishlist.js.map
8
+ //# sourceMappingURL=wishlist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"wishlist.js"}
@@ -1,40 +1,7 @@
1
- import { useOpeningHours } from './chunk-GLM3RPCP.js';
2
- import './chunk-QTDGM2SO.js';
3
- import './chunk-5Q6PFLDN.js';
4
- import { useIsProduct } from './chunk-GO34DE35.js';
5
- import './chunk-VVZNW5CB.js';
6
- import './chunk-LBUMC5PB.js';
7
- import './chunk-MTONGOJD.js';
8
- import './chunk-2FU6CVSB.js';
9
- import './chunk-I5Z4NJBB.js';
10
- import './chunk-TCSNNCRH.js';
11
- import './chunk-2TB2LTL2.js';
12
- import './chunk-QYL5OHAV.js';
13
- import './chunk-KIPZQN3Y.js';
14
- import './chunk-Z653O7MX.js';
15
- import './chunk-ZCH7W7DZ.js';
16
- import './chunk-SSRNIBVV.js';
17
- import './chunk-GN34LCTG.js';
18
- import './chunk-CW625T2E.js';
19
- import './chunk-BVSJPBJ6.js';
20
- import './chunk-GBWCXUPD.js';
21
- import './chunk-UIX3W2PN.js';
1
+ import { useOpeningHours } from './chunk-FUUWI2B6.js';
2
+ import { useIsProduct } from './chunk-H6J7FTB6.js';
22
3
  import { useTranslation } from './chunk-VVRYP6IL.js';
23
- import './chunk-T72DAX7R.js';
24
- import './chunk-YMVLYYLU.js';
25
- import './chunk-RYBA3JDM.js';
26
- import './chunk-25SSLQAJ.js';
27
- import './chunk-J37AYLWL.js';
28
- import './chunk-2KF5JJU6.js';
29
- import './chunk-TZ4YD5CU.js';
30
- import './chunk-XUI3TRXF.js';
31
- import './chunk-6BZ5TKEV.js';
32
- import './chunk-UE3BUFZI.js';
33
- import './chunk-3DCZJDDK.js';
34
- import './chunk-3UHSMGPY.js';
35
- import './chunk-MXQCE3KA.js';
36
4
  import { useTwilight } from './chunk-BWFBVXT3.js';
37
- import './chunk-DGUM43GV.js';
38
5
  import { useState } from 'react';
39
6
  import { jsxs, jsx } from 'react/jsx-runtime';
40
7
 
@@ -87,5 +54,5 @@ function StoreClosedNotification(_props) {
87
54
  }
88
55
 
89
56
  export { StoreClosedNotification };
90
- //# sourceMappingURL=StoreClosedNotification-KSB2GPEZ.js.map
91
- //# sourceMappingURL=StoreClosedNotification-KSB2GPEZ.js.map
57
+ //# sourceMappingURL=chunk-4YQJ27IO.js.map
58
+ //# sourceMappingURL=chunk-4YQJ27IO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/store/StoreClosedNotification.tsx"],"names":[],"mappings":";;;;;;;AAsBO,SAAS,wBAAwB,MAAA,EAAsC;AAC5E,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,WAAA,EAAY;AAC9B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,QAAQ,SAAA,EAAW,iBAAA,KAAsB,eAAA,CAAgB,KAAA,CAAM,UAAU,aAAa,CAAA;AAC9F,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAGhD,EAAA,MAAM,gBAAgB,YAAA,EAAa;AAGnC,EAAA,IAAI,CAAC,aAAA,IAAiB,CAAC,aAAa,MAAA,IAAU,SAAA,IAAa,CAAC,iBAAA,EAAmB;AAC7E,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAwB;AAC3C,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,cAAA;AAAA,MACV,EAAA,EAAG,2BAAA;AAAA,MACH,aAAA,EAAY,2BAAA;AAAA,MACZ,KAAA,EAAO;AAAA,QACL,eAAA,EAAiB,SAAA;AAAA,QACjB,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,WAAA;AAAA,QACT,OAAA,EAAS,MAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,QAAA,EAAU;AAAA,OACZ;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,GAAA;AAAA,YACL,EAAA,EAAG,cAAA;AAAA,YACH,OAAA,EAAS,WAAA;AAAA,YACT,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,MAAM,EAAA,EAAI,KAAA,EAAO,MAAA,EAAQ,cAAA,EAAgB,MAAA,EAAO;AAAA,YAE/E,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,cAAA,EAAe;AAAA;AAAA,SAC9B;AAAA,wBACA,GAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,SAAA,EAAW,QAAA,EAAU,IAAA,EAAM,CAAA,EAAE,EACjD,QAAA,EAAA,CAAA,CAAE,2BAAA,EAA6B;AAAA,UAC9B,YAAA,EAAc,qPAAkD,iBAAiB,CAAA,CAAA,CAAA;AAAA,UACjF,QAAA,EAAU;AAAA,SACX,CAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ","file":"chunk-4YQJ27IO.js","sourcesContent":["import { useState } from 'react';\nimport { useIsProduct } from '../../providers/NavigationProvider';\nimport { useTwilight } from '../../providers';\nimport { useOpeningHours } from '../../hooks/useOpeningHours';\nimport { useTranslation } from '../../providers/i18n';\n\nexport interface StoreClosedNotificationProps {\n /** Whether to show the notification (defaults to true when store is closed on product page) */\n show?: boolean;\n}\n\n/**\n * StoreClosedNotification - Shows a notification bar when the store is closed.\n *\n * Mirrors PHP ReceivingOrdersTimesWidget:\n * - Only shows on product pages\n * - Only shows when store is closed for receiving orders\n * - Displays when the store will open next\n * - Has a close button to dismiss\n *\n * Injected via hook registry at body:start.\n */\nexport function StoreClosedNotification(_props: StoreClosedNotificationProps) {\n const { store } = useTwilight();\n const { t } = useTranslation();\n const { isOpen, isEnabled, nextOpenFormatted } = useOpeningHours(store.settings?.opening_hours);\n const [dismissed, setDismissed] = useState(false);\n\n // Check if we're on a product page\n const isProductPage = useIsProduct();\n\n // Conditions: product page, opening hours enabled, store closed, not dismissed\n if (!isProductPage || !isEnabled || isOpen || dismissed || !nextOpenFormatted) {\n return null;\n }\n\n const handleClose = (e: React.MouseEvent) => {\n e.preventDefault();\n setDismissed(true);\n };\n\n return (\n <div\n className=\"store-notify\"\n id=\"store-closed-notification\"\n data-testid=\"store-closed-notification\"\n style={{\n backgroundColor: '#d63031',\n color: '#fff',\n padding: '10px 15px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n }}\n >\n <a\n href=\"#\"\n id=\"notify-close\"\n onClick={handleClose}\n style={{ position: 'absolute', left: 15, color: '#fff', textDecoration: 'none' }}\n >\n <i className=\"sicon-cancel\" />\n </a>\n <p style={{ margin: 0, textAlign: 'center', flex: 1 }}>\n {t('store.closed_notification', {\n defaultValue: `المتجر حاليا مغلق لاستقبال الطلبات وسيتم فتحه (${nextOpenFormatted})`,\n nextOpen: nextOpenFormatted,\n })}\n </p>\n </div>\n );\n}\n"]}
@@ -0,0 +1,28 @@
1
+ import { api } from './chunk-2TB2LTL2.js';
2
+ import { queryOptions } from '@tanstack/react-query';
3
+
4
+ var notification = {
5
+ list: async () => {
6
+ const response = await api.get("notifications").json();
7
+ return {
8
+ data: response.data ?? [],
9
+ cursor: response.cursor
10
+ };
11
+ },
12
+ markAsRead: async (id) => {
13
+ await api.put(`notifications/${id}/read`).json();
14
+ },
15
+ markAllAsRead: async () => {
16
+ await api.put("notifications/read-all").json();
17
+ },
18
+ queries: {
19
+ list: () => queryOptions({
20
+ queryKey: ["notifications", "list"],
21
+ queryFn: () => notification.list()
22
+ })
23
+ }
24
+ };
25
+
26
+ export { notification };
27
+ //# sourceMappingURL=chunk-6D7SF3YR.js.map
28
+ //# sourceMappingURL=chunk-6D7SF3YR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/notification.ts"],"names":[],"mappings":";;;AAcO,IAAM,YAAA,GAAe;AAAA,EAC1B,MAAM,YAAgD;AACpD,IAAA,MAAM,WAAW,MAAM,GAAA,CACpB,GAAA,CAAI,eAAe,EACnB,IAAA,EAAmF;AACtF,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,QAAA,CAAS,IAAA,IAAQ,EAAC;AAAA,MACxB,QAAQ,QAAA,CAAS;AAAA,KACnB;AAAA,EACF,CAAA;AAAA,EAEA,UAAA,EAAY,OAAO,EAAA,KAA8B;AAC/C,IAAA,MAAM,IAAI,GAAA,CAAI,CAAA,cAAA,EAAiB,EAAE,CAAA,KAAA,CAAO,EAAE,IAAA,EAAK;AAAA,EACjD,CAAA;AAAA,EAEA,eAAe,YAA2B;AACxC,IAAA,MAAM,GAAA,CAAI,GAAA,CAAI,wBAAwB,CAAA,CAAE,IAAA,EAAK;AAAA,EAC/C,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MACJ,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,eAAA,EAAiB,MAAM,CAAA;AAAA,MAClC,OAAA,EAAS,MAAM,YAAA,CAAa,IAAA;AAAK,KAClC;AAAA;AAEP","file":"chunk-6D7SF3YR.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport type { Notification } from '../routes/account/notifications/types';\n\nexport interface NotificationsListResponse {\n data: Notification[];\n cursor: {\n current: number;\n previous: number | null;\n next: number | null;\n count: number;\n };\n}\n\nexport const notification = {\n list: async (): Promise<NotificationsListResponse> => {\n const response = await api\n .get('notifications')\n .json<{ data: Notification[] | null; cursor: NotificationsListResponse['cursor'] }>();\n return {\n data: response.data ?? [],\n cursor: response.cursor,\n };\n },\n\n markAsRead: async (id: number): Promise<void> => {\n await api.put(`notifications/${id}/read`).json();\n },\n\n markAllAsRead: async (): Promise<void> => {\n await api.put('notifications/read-all').json();\n },\n\n queries: {\n list: () =>\n queryOptions({\n queryKey: ['notifications', 'list'],\n queryFn: () => notification.list(),\n }),\n },\n};\n"]}
@@ -1,9 +1,9 @@
1
1
  import { registry } from './chunk-G7ALL4BC.js';
2
- import { useMoney, useNumber } from './chunk-GLM3RPCP.js';
2
+ import { useMoney, useNumber } from './chunk-FUUWI2B6.js';
3
3
  import { useAsset } from './chunk-Z653O7MX.js';
4
4
  import { useWishlist } from './chunk-GBWCXUPD.js';
5
5
  import { useTranslation } from './chunk-VVRYP6IL.js';
6
- import { Image } from './chunk-2KF5JJU6.js';
6
+ import { Image } from './chunk-OZEQVDBM.js';
7
7
  import { LazyImageModal } from './chunk-3DCZJDDK.js';
8
8
  import { useTwilight } from './chunk-BWFBVXT3.js';
9
9
  import { lazy, memo, useCallback, useMemo, useState, useEffect, Suspense } from 'react';
@@ -13,10 +13,10 @@ import { jsxs, jsx } from 'react/jsx-runtime';
13
13
  import { SallaSlider } from '@salla.sa/twilight-components-react/slider';
14
14
 
15
15
  var LazyProductDetails = lazy(
16
- () => import('./ProductDetails-KTY4ZSFM.js').then((m) => ({ default: m.ProductDetails }))
16
+ () => import('./ProductDetails-GJXX7FBT.js').then((m) => ({ default: m.ProductDetails }))
17
17
  );
18
18
  var LazyAddToCartForm = lazy(
19
- () => import('./AddToCartForm-HOWNKCKX.js').then((m) => ({ default: m.AddToCartForm }))
19
+ () => import('./AddToCartForm-KIIP7WPE.js').then((m) => ({ default: m.AddToCartForm }))
20
20
  );
21
21
  var PRODUCT_CARD_KEY = "product:card";
22
22
  var ProductCardContent = memo(function ProductCardContent2({
@@ -368,5 +368,5 @@ function ThumbSlide({ image, index }) {
368
368
  }
369
369
 
370
370
  export { LazyAddToCartForm, LazyProductDetails, ProductCard, ProductGallery };
371
- //# sourceMappingURL=chunk-RH32IGQD.js.map
372
- //# sourceMappingURL=chunk-RH32IGQD.js.map
371
+ //# sourceMappingURL=chunk-77PLWFVT.js.map
372
+ //# sourceMappingURL=chunk-77PLWFVT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/product/lazy.ts","../src/components/product/ProductCard.tsx","../src/components/product/ProductGallery.tsx"],"names":["ProductCardContent","ProductCard","jsxs","jsx"],"mappings":"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","file":"chunk-RH32IGQD.js","sourcesContent":["import { lazy } from 'react';\n\nexport const LazyProductDetails = lazy(() =>\n import('./ProductDetails').then((m) => ({ default: m.ProductDetails }))\n);\n\nexport const LazyAddToCartForm = lazy(() =>\n import('./AddToCartForm').then((m) => ({ default: m.AddToCartForm }))\n);\n","import { memo, useCallback, useMemo } from 'react';\nimport { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { useMoney } from '../../hooks/useMoney';\nimport { useTranslation } from '../../providers/i18n';\nimport { useTwilight } from '../../providers/TwilightProvider';\nimport { useWishlist } from '../../hooks/useWishlist';\nimport { useAsset } from '../../hooks/useAsset';\nimport { useNumber } from '../../hooks/useNumber';\nimport { registry } from '../ComponentRegistry';\nimport { Image } from '../common';\nimport type { Product } from '../../types';\n\nconst PRODUCT_CARD_KEY = 'product:card';\n\n/** Product card layout variants - mutually exclusive */\nexport type ProductCardLayout = 'vertical' | 'horizontal' | 'fullImage' | 'minimal' | 'special';\n\nexport interface ProductCardProps {\n product: Product;\n layout?: ProductCardLayout;\n className?: string;\n withShadow?: boolean;\n withQuantity?: boolean;\n withoutAddButton?: boolean;\n index?: number;\n imagePriority?: boolean;\n}\n\n/**\n * ProductCard - Displays a product in various layouts\n *\n * Layouts:\n * - vertical: Default card with image top, content bottom\n * - horizontal: Side-by-side image and content\n * - fullImage: Full bleed image with overlay content\n * - minimal: Compact version with reduced info\n * - special: Featured card with quantity pie chart\n *\n * Features:\n * - Native lazy loading for images\n * - Product badges (promotion, preorder, quantity, out of stock)\n * - Wishlist toggle button\n * - Price display (sale, starting, regular)\n * - Rating display\n * - Add to cart button via SallaAddProductButton (handles labels internally)\n */\nconst ProductCardContent = memo(function ProductCardContent({\n product,\n layout = 'vertical',\n className = '',\n withShadow = false,\n withQuantity = false,\n withoutAddButton = false,\n index = 0,\n imagePriority = false,\n}: ProductCardProps) {\n const { format } = useMoney();\n const { t } = useTranslation();\n const { store } = useTwilight();\n const wishlist = useWishlist();\n const { isPlaceholder } = useAsset();\n const { format: formatNumber } = useNumber();\n\n // Layout flags\n const isVertical = layout === 'vertical';\n const isHorizontal = layout === 'horizontal';\n const isFullImage = layout === 'fullImage';\n const isMinimal = layout === 'minimal';\n const isSpecial = layout === 'special';\n\n // Wishlist status\n const productInWishlist = wishlist.has(product.id);\n const handleWishlistToggle = useCallback(() => {\n wishlist.toggle(product.id);\n }, [wishlist, product.id]);\n\n // Get image fit type from store settings\n const fitImageHeight = store?.settings?.product?.fit_type;\n\n // Product badge component\n const getProductBadge = () => {\n if (product?.preorder?.label && typeof product.preorder.label === 'string') {\n return <div className=\"s-product-card-promotion-title\">{product.preorder.label}</div>;\n }\n if (product.promotion_title) {\n return <div className=\"s-product-card-promotion-title\">{product.promotion_title}</div>;\n }\n if (withQuantity && product?.quantity) {\n const formattedQty = formatNumber(product.quantity);\n return (\n <div className=\"s-product-card-quantity\">\n {t('pages.products.remained', 'Remained')} {formattedQty}\n </div>\n );\n }\n if (withQuantity && product?.is_out_of_stock) {\n return (\n <div className=\"s-product-card-out-badge\">\n {t('pages.products.out_of_stock', 'Out of Stock')}\n </div>\n );\n }\n return null;\n };\n\n // Price display component\n const getProductPrice = () => {\n if (product.is_on_sale && product.sale_price) {\n return (\n <div className=\"s-product-card-sale-price\">\n <h4>{format(product.sale_price)}</h4>\n {product.regular_price && <span>{format(product.regular_price)}</span>}\n </div>\n );\n }\n if (product.starting_price) {\n return (\n <div className=\"s-product-card-starting-price\">\n <p>{t('pages.products.starting_price', 'Starting from')}</p>\n <h4>{format(product.starting_price)}</h4>\n </div>\n );\n }\n return <h4 className=\"s-product-card-price\">{format(product.price)}</h4>;\n };\n\n // Build card class names\n const cardClassName = [\n 's-product-card',\n 's-product-card-entry',\n isVertical ? 's-product-card-vertical' : '',\n isHorizontal ? 's-product-card-horizontal' : '',\n fitImageHeight && isVertical ? `s-product-card-fit-height` : '',\n isSpecial ? 's-product-card-special' : '',\n isFullImage ? 's-product-card-full-image' : '',\n isMinimal ? 's-product-card-minimal' : '',\n product?.donation ? 's-product-card-donation' : '',\n withShadow ? 's-product-card-shadow' : '',\n product?.is_out_of_stock ? 's-product-card-out-of-stock' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Image fit class\n const isProductPlaceholder = isPlaceholder(product.image?.url);\n const imageFitClass = isProductPlaceholder ? 'contain' : fitImageHeight || 'cover';\n\n return (\n <div\n id={`product-card-${product.id}`}\n className={cardClassName}\n data-product-id={product.id}\n style={{\n animationDelay: `${index * 100}ms`,\n }}\n >\n <div className={isFullImage ? 's-product-card-image-full' : 's-product-card-image'}>\n <a href={product.url} aria-label={product.image?.alt || product.name}>\n <Image\n className={`s-product-card-image-${imageFitClass}`}\n src={product.image?.url}\n alt={product.image?.alt ?? product.name}\n width={300}\n height={300}\n aspectRatio=\"1/1\"\n priority={imagePriority}\n />\n {!isFullImage && !isMinimal && getProductBadge()}\n </a>\n {isFullImage && (\n <a href={product.url} aria-label={product.name} className=\"s-product-card-overlay\" />\n )}\n {!isHorizontal && !isFullImage && (\n <SallaButton\n shape=\"icon\"\n fill=\"outline\"\n color=\"light\"\n ariaLabel={t('pages.wishlist.toggle', 'Add or remove to wishlist')}\n className={`s-product-card-wishlist-btn animated ${productInWishlist ? 's-product-card-wishlist-added pulse-anime' : 'not-added un-favorited'}`}\n onClick={handleWishlistToggle}\n data-id={product.id}\n >\n <i className=\"sicon-heart\" />\n </SallaButton>\n )}\n </div>\n <div className=\"s-product-card-content\">\n {/* Special card: quantity pie */}\n {isSpecial && product?.quantity && (\n <div className=\"s-product-card-content-pie\">\n <span>\n <b>{formatNumber(product.quantity)}</b>\n {t('pages.products.remained', 'Remained')}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"-2 -1 36 34\"\n className=\"s-product-card-content-pie-svg\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"15.9155\" className=\"s-product-card-content-pie-svg-base\" />\n <circle cx=\"16\" cy=\"16\" r=\"15.9155\" className=\"s-product-card-content-pie-svg-bar\" />\n </svg>\n </div>\n )}\n\n <div\n className={`s-product-card-content-main ${isSpecial ? 's-product-card-content-extra-padding' : ''}`}\n >\n <h3 className=\"s-product-card-content-title\">\n <a href={product.url}>{product.name}</a>\n </h3>\n {product.subtitle && !isMinimal && (\n <p className=\"s-product-card-content-subtitle opacity-80\">{product.subtitle}</p>\n )}\n </div>\n\n <div\n className={`s-product-card-content-sub ${isSpecial ? 's-product-card-content-extra-padding' : ''}`}\n >\n {!product?.donation?.can_donate && getProductPrice()}\n {product.rating?.stars && (\n <div className=\"s-product-card-rating\">\n <i className=\"sicon-star2 before:text-orange-300\" />\n <span>{product.rating.stars}</span>\n </div>\n )}\n </div>\n\n {!withoutAddButton && (\n <div className=\"s-product-card-content-footer gap-2\">\n <SallaAddProductButton\n fill=\"outline\"\n width=\"wide\"\n productId={product.id}\n productStatus={product.status}\n productType={product.type}\n hasPreOrder={product.has_preorder_campaign}\n />\n {(isHorizontal || isFullImage) && (\n <SallaButton\n shape=\"icon\"\n fill=\"outline\"\n color=\"light\"\n ariaLabel={t('pages.wishlist.toggle', 'Add or remove to wishlist')}\n className={`s-product-card-wishlist-btn animated ${productInWishlist ? 's-product-card-wishlist-added pulse-anime' : 'not-added un-favorited'}`}\n onClick={handleWishlistToggle}\n data-id={product.id}\n >\n <i className=\"sicon-heart\" />\n </SallaButton>\n )}\n </div>\n )}\n </div>\n </div>\n );\n});\n\nexport const ProductCard = memo(function ProductCard(props: ProductCardProps) {\n const Component = useMemo(() => {\n const hasOverride = registry.getOriginal<ProductCardProps>(PRODUCT_CARD_KEY) !== null;\n if (hasOverride) {\n return registry.resolve<ProductCardProps>(PRODUCT_CARD_KEY);\n }\n return null;\n }, []);\n\n if (Component) {\n return <Component {...props} />;\n }\n\n return <ProductCardContent {...props} />;\n});\n\nexport default ProductCard;\n","import { Suspense, useEffect, useState } from 'react';\nimport { useTranslation } from '../../providers/i18n';\nimport { useTwilight } from '../../providers';\nimport { SallaSlider } from '@salla.sa/twilight-components-react/slider';\nimport { Image } from '../common/Image';\nimport { ImageModal } from '../modal';\nimport type { Product, ProductImage } from '../../types';\n\ninterface ProductGalleryProps {\n product: Product;\n}\n\ntype ImagePreview = { src: string; alt: string };\n\nexport function ProductGallery({ product }: ProductGalleryProps) {\n const { t } = useTranslation();\n const { theme } = useTwilight();\n const sliderId = `details-slider-${product.id}`;\n const objectFit = theme.settings.slider_background_size ?? 'cover';\n\n // Clicking an image opens an in-app lightbox instead of navigating to the CDN URL.\n const [preview, setPreview] = useState<ImagePreview | null>(null);\n\n useEffect(() => {\n const raf = requestAnimationFrame(() => {\n const el = document.getElementById(sliderId);\n if (!el?.parentElement) return;\n const { parentElement, nextSibling } = el;\n parentElement.removeChild(el);\n parentElement.insertBefore(el, nextSibling);\n });\n return () => cancelAnimationFrame(raf);\n }, [product.id, sliderId]);\n\n // The product-details API only returns `image` (singular).\n // Fall back so the main image always renders even without the full gallery array.\n const images: ProductImage[] =\n product.images && product.images.length > 0\n ? product.images\n : product.image?.url\n ? [product.image]\n : [];\n\n const hasManyImages = images.length > 1;\n\n return (\n <div className=\"sidebar md:sticky top-24 w-full md:!w-2/4 rtl:ml-8 ltr:mr-8 pb-8 md:pb-16 overflow-hidden shrink-0\">\n <SallaSlider\n id={sliderId}\n className=\"details-slider rounded-md image-slider\"\n type=\"thumbs\"\n loop={false}\n autoHeight\n listenToThumbnailsOption\n showThumbsControls={false}\n sliderConfig={{ watchOverflow: true, autoHeight: true }}\n >\n {product.promotion_title && (\n <div className=\"promotion-title\">{product.promotion_title}</div>\n )}\n\n {product.calories && (\n <div className=\"absolute z-[2] top-4 rtl:left-4 ltr:right-4 bg-white shadow-sm flex flex-col justify-center items-center rounded-full w-20 h-20 md:w-24 md:h-24\">\n <span className=\"text-red-500 text-xl leading-none font-bold\">{product.calories}</span>\n <span className=\"text-xs text-gray-500\">\n {t('pages.products.calories', 'Calories')}\n </span>\n </div>\n )}\n\n <div slot=\"items\">\n {images.map((image, index) => (\n <ImageSlide\n key={image.id ?? index}\n image={image}\n product={product}\n index={index}\n objectFit={objectFit}\n onPreview={setPreview}\n />\n ))}\n </div>\n\n {hasManyImages && (\n <div slot=\"thumbs\">\n {images.map((image, index) => (\n <ThumbSlide key={image.id ?? index} image={image} index={index} />\n ))}\n </div>\n )}\n </SallaSlider>\n\n <Suspense fallback={null}>\n <ImageModal\n isOpen={!!preview}\n onClose={() => setPreview(null)}\n src={preview?.src ?? ''}\n alt={preview?.alt}\n />\n </Suspense>\n </div>\n );\n}\n\nfunction ImageSlide({\n image,\n product,\n index,\n objectFit,\n onPreview,\n}: {\n image: ProductImage;\n product: Product;\n index: number;\n objectFit: 'cover' | 'contain';\n onPreview: (preview: ImagePreview) => void;\n}) {\n const [loaded, setLoaded] = useState(false);\n const isVideo = Boolean(image.video_url);\n\n if (image.three_d_image_url) {\n return (\n <model-viewer\n style={{ minHeight: '500px' }}\n className=\"swiper-slide model-entry w-full h-full\"\n loading=\"lazy\"\n camera-controls\n touch-action=\"pan-y\"\n auto-rotate\n poster={image.url || undefined}\n src={image.three_d_image_url}\n shadow-intensity=\"1\"\n alt={image.alt}\n ></model-viewer>\n );\n }\n\n return (\n <a\n data-fslightbox={`product_${product.id}`}\n data-img-id={image.id}\n data-slid-index={index}\n {...(image.video_url ? { 'data-video-src': image.video_url } : {})}\n data-caption={image.alt}\n data-infinite=\"false\"\n data-type={image.video_url ? 'youtube' : 'image'}\n href={image.video_url || image.url}\n // FsLightbox isn't loaded in this React theme, so the bare href would leave the SPA.\n // Open images in an in-app lightbox; let videos open in a new tab.\n {...(isVideo ? { target: '_blank', rel: 'noopener noreferrer' } : {})}\n onClick={(event) => {\n if (isVideo || !image.url) return;\n event.preventDefault();\n onPreview({ src: image.url, alt: image.alt || product.name });\n }}\n aria-label={product.name}\n className={`swiper-slide magnify-wrapper homeslider__slide ${image.video_url ? 'video-entry' : ''}`}\n >\n <div className={`w-full ${loaded ? '' : 'aspect-square bg-gray-100 animate-pulse'}`}>\n <Image\n id={String(image.id)}\n src={image.url}\n alt={image.alt || product.name}\n className={`h-full w-full object-${objectFit}`}\n aspectRatio=\"1/1\"\n priority={index === 0}\n noWrapper\n onLoad={() => setLoaded(true)}\n />\n </div>\n </a>\n );\n}\n\nfunction ThumbSlide({ image, index }: { image: ProductImage; index: number }) {\n return (\n <div\n className={`slide--one-fourth ${image.video_url ? 'video-entry' : ''} ${image.three_d_image_url ? 'model-entry' : ''}`}\n data-caption={image.alt}\n >\n <Image\n src={image.url}\n alt={image.alt || ''}\n className=\"object-cover w-full h-full bg-gray-100 rounded-md overflow-hidden\"\n title={image.alt}\n priority={index < 5}\n noWrapper\n />\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/product/lazy.ts","../src/components/product/ProductCard.tsx","../src/components/product/ProductGallery.tsx"],"names":["ProductCardContent","ProductCard","jsxs","jsx"],"mappings":"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","file":"chunk-77PLWFVT.js","sourcesContent":["import { lazy } from 'react';\n\nexport const LazyProductDetails = lazy(() =>\n import('./ProductDetails').then((m) => ({ default: m.ProductDetails }))\n);\n\nexport const LazyAddToCartForm = lazy(() =>\n import('./AddToCartForm').then((m) => ({ default: m.AddToCartForm }))\n);\n","import { memo, useCallback, useMemo } from 'react';\nimport { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { useMoney } from '../../hooks/useMoney';\nimport { useTranslation } from '../../providers/i18n';\nimport { useTwilight } from '../../providers/TwilightProvider';\nimport { useWishlist } from '../../hooks/useWishlist';\nimport { useAsset } from '../../hooks/useAsset';\nimport { useNumber } from '../../hooks/useNumber';\nimport { registry } from '../ComponentRegistry';\nimport { Image } from '../common';\nimport type { Product } from '../../types';\n\nconst PRODUCT_CARD_KEY = 'product:card';\n\n/** Product card layout variants - mutually exclusive */\nexport type ProductCardLayout = 'vertical' | 'horizontal' | 'fullImage' | 'minimal' | 'special';\n\nexport interface ProductCardProps {\n product: Product;\n layout?: ProductCardLayout;\n className?: string;\n withShadow?: boolean;\n withQuantity?: boolean;\n withoutAddButton?: boolean;\n index?: number;\n imagePriority?: boolean;\n}\n\n/**\n * ProductCard - Displays a product in various layouts\n *\n * Layouts:\n * - vertical: Default card with image top, content bottom\n * - horizontal: Side-by-side image and content\n * - fullImage: Full bleed image with overlay content\n * - minimal: Compact version with reduced info\n * - special: Featured card with quantity pie chart\n *\n * Features:\n * - Native lazy loading for images\n * - Product badges (promotion, preorder, quantity, out of stock)\n * - Wishlist toggle button\n * - Price display (sale, starting, regular)\n * - Rating display\n * - Add to cart button via SallaAddProductButton (handles labels internally)\n */\nconst ProductCardContent = memo(function ProductCardContent({\n product,\n layout = 'vertical',\n className = '',\n withShadow = false,\n withQuantity = false,\n withoutAddButton = false,\n index = 0,\n imagePriority = false,\n}: ProductCardProps) {\n const { format } = useMoney();\n const { t } = useTranslation();\n const { store } = useTwilight();\n const wishlist = useWishlist();\n const { isPlaceholder } = useAsset();\n const { format: formatNumber } = useNumber();\n\n // Layout flags\n const isVertical = layout === 'vertical';\n const isHorizontal = layout === 'horizontal';\n const isFullImage = layout === 'fullImage';\n const isMinimal = layout === 'minimal';\n const isSpecial = layout === 'special';\n\n // Wishlist status\n const productInWishlist = wishlist.has(product.id);\n const handleWishlistToggle = useCallback(() => {\n wishlist.toggle(product.id);\n }, [wishlist, product.id]);\n\n // Get image fit type from store settings\n const fitImageHeight = store?.settings?.product?.fit_type;\n\n // Product badge component\n const getProductBadge = () => {\n if (product?.preorder?.label && typeof product.preorder.label === 'string') {\n return <div className=\"s-product-card-promotion-title\">{product.preorder.label}</div>;\n }\n if (product.promotion_title) {\n return <div className=\"s-product-card-promotion-title\">{product.promotion_title}</div>;\n }\n if (withQuantity && product?.quantity) {\n const formattedQty = formatNumber(product.quantity);\n return (\n <div className=\"s-product-card-quantity\">\n {t('pages.products.remained', 'Remained')} {formattedQty}\n </div>\n );\n }\n if (withQuantity && product?.is_out_of_stock) {\n return (\n <div className=\"s-product-card-out-badge\">\n {t('pages.products.out_of_stock', 'Out of Stock')}\n </div>\n );\n }\n return null;\n };\n\n // Price display component\n const getProductPrice = () => {\n if (product.is_on_sale && product.sale_price) {\n return (\n <div className=\"s-product-card-sale-price\">\n <h4>{format(product.sale_price)}</h4>\n {product.regular_price && <span>{format(product.regular_price)}</span>}\n </div>\n );\n }\n if (product.starting_price) {\n return (\n <div className=\"s-product-card-starting-price\">\n <p>{t('pages.products.starting_price', 'Starting from')}</p>\n <h4>{format(product.starting_price)}</h4>\n </div>\n );\n }\n return <h4 className=\"s-product-card-price\">{format(product.price)}</h4>;\n };\n\n // Build card class names\n const cardClassName = [\n 's-product-card',\n 's-product-card-entry',\n isVertical ? 's-product-card-vertical' : '',\n isHorizontal ? 's-product-card-horizontal' : '',\n fitImageHeight && isVertical ? `s-product-card-fit-height` : '',\n isSpecial ? 's-product-card-special' : '',\n isFullImage ? 's-product-card-full-image' : '',\n isMinimal ? 's-product-card-minimal' : '',\n product?.donation ? 's-product-card-donation' : '',\n withShadow ? 's-product-card-shadow' : '',\n product?.is_out_of_stock ? 's-product-card-out-of-stock' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Image fit class\n const isProductPlaceholder = isPlaceholder(product.image?.url);\n const imageFitClass = isProductPlaceholder ? 'contain' : fitImageHeight || 'cover';\n\n return (\n <div\n id={`product-card-${product.id}`}\n className={cardClassName}\n data-product-id={product.id}\n style={{\n animationDelay: `${index * 100}ms`,\n }}\n >\n <div className={isFullImage ? 's-product-card-image-full' : 's-product-card-image'}>\n <a href={product.url} aria-label={product.image?.alt || product.name}>\n <Image\n className={`s-product-card-image-${imageFitClass}`}\n src={product.image?.url}\n alt={product.image?.alt ?? product.name}\n width={300}\n height={300}\n aspectRatio=\"1/1\"\n priority={imagePriority}\n />\n {!isFullImage && !isMinimal && getProductBadge()}\n </a>\n {isFullImage && (\n <a href={product.url} aria-label={product.name} className=\"s-product-card-overlay\" />\n )}\n {!isHorizontal && !isFullImage && (\n <SallaButton\n shape=\"icon\"\n fill=\"outline\"\n color=\"light\"\n ariaLabel={t('pages.wishlist.toggle', 'Add or remove to wishlist')}\n className={`s-product-card-wishlist-btn animated ${productInWishlist ? 's-product-card-wishlist-added pulse-anime' : 'not-added un-favorited'}`}\n onClick={handleWishlistToggle}\n data-id={product.id}\n >\n <i className=\"sicon-heart\" />\n </SallaButton>\n )}\n </div>\n <div className=\"s-product-card-content\">\n {/* Special card: quantity pie */}\n {isSpecial && product?.quantity && (\n <div className=\"s-product-card-content-pie\">\n <span>\n <b>{formatNumber(product.quantity)}</b>\n {t('pages.products.remained', 'Remained')}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"-2 -1 36 34\"\n className=\"s-product-card-content-pie-svg\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"15.9155\" className=\"s-product-card-content-pie-svg-base\" />\n <circle cx=\"16\" cy=\"16\" r=\"15.9155\" className=\"s-product-card-content-pie-svg-bar\" />\n </svg>\n </div>\n )}\n\n <div\n className={`s-product-card-content-main ${isSpecial ? 's-product-card-content-extra-padding' : ''}`}\n >\n <h3 className=\"s-product-card-content-title\">\n <a href={product.url}>{product.name}</a>\n </h3>\n {product.subtitle && !isMinimal && (\n <p className=\"s-product-card-content-subtitle opacity-80\">{product.subtitle}</p>\n )}\n </div>\n\n <div\n className={`s-product-card-content-sub ${isSpecial ? 's-product-card-content-extra-padding' : ''}`}\n >\n {!product?.donation?.can_donate && getProductPrice()}\n {product.rating?.stars && (\n <div className=\"s-product-card-rating\">\n <i className=\"sicon-star2 before:text-orange-300\" />\n <span>{product.rating.stars}</span>\n </div>\n )}\n </div>\n\n {!withoutAddButton && (\n <div className=\"s-product-card-content-footer gap-2\">\n <SallaAddProductButton\n fill=\"outline\"\n width=\"wide\"\n productId={product.id}\n productStatus={product.status}\n productType={product.type}\n hasPreOrder={product.has_preorder_campaign}\n />\n {(isHorizontal || isFullImage) && (\n <SallaButton\n shape=\"icon\"\n fill=\"outline\"\n color=\"light\"\n ariaLabel={t('pages.wishlist.toggle', 'Add or remove to wishlist')}\n className={`s-product-card-wishlist-btn animated ${productInWishlist ? 's-product-card-wishlist-added pulse-anime' : 'not-added un-favorited'}`}\n onClick={handleWishlistToggle}\n data-id={product.id}\n >\n <i className=\"sicon-heart\" />\n </SallaButton>\n )}\n </div>\n )}\n </div>\n </div>\n );\n});\n\nexport const ProductCard = memo(function ProductCard(props: ProductCardProps) {\n const Component = useMemo(() => {\n const hasOverride = registry.getOriginal<ProductCardProps>(PRODUCT_CARD_KEY) !== null;\n if (hasOverride) {\n return registry.resolve<ProductCardProps>(PRODUCT_CARD_KEY);\n }\n return null;\n }, []);\n\n if (Component) {\n return <Component {...props} />;\n }\n\n return <ProductCardContent {...props} />;\n});\n\nexport default ProductCard;\n","import { Suspense, useEffect, useState } from 'react';\nimport { useTranslation } from '../../providers/i18n';\nimport { useTwilight } from '../../providers';\nimport { SallaSlider } from '@salla.sa/twilight-components-react/slider';\nimport { Image } from '../common/Image';\nimport { ImageModal } from '../modal';\nimport type { Product, ProductImage } from '../../types';\n\ninterface ProductGalleryProps {\n product: Product;\n}\n\ntype ImagePreview = { src: string; alt: string };\n\nexport function ProductGallery({ product }: ProductGalleryProps) {\n const { t } = useTranslation();\n const { theme } = useTwilight();\n const sliderId = `details-slider-${product.id}`;\n const objectFit = theme.settings.slider_background_size ?? 'cover';\n\n // Clicking an image opens an in-app lightbox instead of navigating to the CDN URL.\n const [preview, setPreview] = useState<ImagePreview | null>(null);\n\n useEffect(() => {\n const raf = requestAnimationFrame(() => {\n const el = document.getElementById(sliderId);\n if (!el?.parentElement) return;\n const { parentElement, nextSibling } = el;\n parentElement.removeChild(el);\n parentElement.insertBefore(el, nextSibling);\n });\n return () => cancelAnimationFrame(raf);\n }, [product.id, sliderId]);\n\n // The product-details API only returns `image` (singular).\n // Fall back so the main image always renders even without the full gallery array.\n const images: ProductImage[] =\n product.images && product.images.length > 0\n ? product.images\n : product.image?.url\n ? [product.image]\n : [];\n\n const hasManyImages = images.length > 1;\n\n return (\n <div className=\"sidebar md:sticky top-24 w-full md:!w-2/4 rtl:ml-8 ltr:mr-8 pb-8 md:pb-16 overflow-hidden shrink-0\">\n <SallaSlider\n id={sliderId}\n className=\"details-slider rounded-md image-slider\"\n type=\"thumbs\"\n loop={false}\n autoHeight\n listenToThumbnailsOption\n showThumbsControls={false}\n sliderConfig={{ watchOverflow: true, autoHeight: true }}\n >\n {product.promotion_title && (\n <div className=\"promotion-title\">{product.promotion_title}</div>\n )}\n\n {product.calories && (\n <div className=\"absolute z-[2] top-4 rtl:left-4 ltr:right-4 bg-white shadow-sm flex flex-col justify-center items-center rounded-full w-20 h-20 md:w-24 md:h-24\">\n <span className=\"text-red-500 text-xl leading-none font-bold\">{product.calories}</span>\n <span className=\"text-xs text-gray-500\">\n {t('pages.products.calories', 'Calories')}\n </span>\n </div>\n )}\n\n <div slot=\"items\">\n {images.map((image, index) => (\n <ImageSlide\n key={image.id ?? index}\n image={image}\n product={product}\n index={index}\n objectFit={objectFit}\n onPreview={setPreview}\n />\n ))}\n </div>\n\n {hasManyImages && (\n <div slot=\"thumbs\">\n {images.map((image, index) => (\n <ThumbSlide key={image.id ?? index} image={image} index={index} />\n ))}\n </div>\n )}\n </SallaSlider>\n\n <Suspense fallback={null}>\n <ImageModal\n isOpen={!!preview}\n onClose={() => setPreview(null)}\n src={preview?.src ?? ''}\n alt={preview?.alt}\n />\n </Suspense>\n </div>\n );\n}\n\nfunction ImageSlide({\n image,\n product,\n index,\n objectFit,\n onPreview,\n}: {\n image: ProductImage;\n product: Product;\n index: number;\n objectFit: 'cover' | 'contain';\n onPreview: (preview: ImagePreview) => void;\n}) {\n const [loaded, setLoaded] = useState(false);\n const isVideo = Boolean(image.video_url);\n\n if (image.three_d_image_url) {\n return (\n <model-viewer\n style={{ minHeight: '500px' }}\n className=\"swiper-slide model-entry w-full h-full\"\n loading=\"lazy\"\n camera-controls\n touch-action=\"pan-y\"\n auto-rotate\n poster={image.url || undefined}\n src={image.three_d_image_url}\n shadow-intensity=\"1\"\n alt={image.alt}\n ></model-viewer>\n );\n }\n\n return (\n <a\n data-fslightbox={`product_${product.id}`}\n data-img-id={image.id}\n data-slid-index={index}\n {...(image.video_url ? { 'data-video-src': image.video_url } : {})}\n data-caption={image.alt}\n data-infinite=\"false\"\n data-type={image.video_url ? 'youtube' : 'image'}\n href={image.video_url || image.url}\n // FsLightbox isn't loaded in this React theme, so the bare href would leave the SPA.\n // Open images in an in-app lightbox; let videos open in a new tab.\n {...(isVideo ? { target: '_blank', rel: 'noopener noreferrer' } : {})}\n onClick={(event) => {\n if (isVideo || !image.url) return;\n event.preventDefault();\n onPreview({ src: image.url, alt: image.alt || product.name });\n }}\n aria-label={product.name}\n className={`swiper-slide magnify-wrapper homeslider__slide ${image.video_url ? 'video-entry' : ''}`}\n >\n <div className={`w-full ${loaded ? '' : 'aspect-square bg-gray-100 animate-pulse'}`}>\n <Image\n id={String(image.id)}\n src={image.url}\n alt={image.alt || product.name}\n className={`h-full w-full object-${objectFit}`}\n aspectRatio=\"1/1\"\n priority={index === 0}\n noWrapper\n onLoad={() => setLoaded(true)}\n />\n </div>\n </a>\n );\n}\n\nfunction ThumbSlide({ image, index }: { image: ProductImage; index: number }) {\n return (\n <div\n className={`slide--one-fourth ${image.video_url ? 'video-entry' : ''} ${image.three_d_image_url ? 'model-entry' : ''}`}\n data-caption={image.alt}\n >\n <Image\n src={image.url}\n alt={image.alt || ''}\n className=\"object-cover w-full h-full bg-gray-100 rounded-md overflow-hidden\"\n title={image.alt}\n priority={index < 5}\n noWrapper\n />\n </div>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { orThrow, orUnauthorized } from './chunk-GO34DE35.js';
1
+ import { orThrow, orUnauthorized } from './chunk-H6J7FTB6.js';
2
2
  import { api } from './chunk-2TB2LTL2.js';
3
3
  import { queryOptions } from '@tanstack/react-query';
4
4
 
@@ -61,5 +61,5 @@ var order = {
61
61
  };
62
62
 
63
63
  export { order };
64
- //# sourceMappingURL=chunk-N5RSKJP4.js.map
65
- //# sourceMappingURL=chunk-N5RSKJP4.js.map
64
+ //# sourceMappingURL=chunk-7KY4RVH4.js.map
65
+ //# sourceMappingURL=chunk-7KY4RVH4.js.map