@salla.sa/twilight-theme-engine 1.0.71 → 1.0.73

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 (258) hide show
  1. package/dist/{AddToCartForm-XA5X2C5K.js → AddToCartForm-G2HK5QB3.js} +5 -5
  2. package/dist/AddToCartForm-G2HK5QB3.js.map +1 -0
  3. package/dist/{BlogAuthorPage-YWR52G5S.js → BlogAuthorPage-BU2LVISS.js} +22 -22
  4. package/dist/BlogAuthorPage-BU2LVISS.js.map +1 -0
  5. package/dist/{BlogCategoryPage-N644DZTN.js → BlogCategoryPage-UR4MPDLE.js} +20 -20
  6. package/dist/{BlogCategoryPage-N644DZTN.js.map → BlogCategoryPage-UR4MPDLE.js.map} +1 -1
  7. package/dist/{BlogPage-5Z4X3Y2H.js → BlogPage-E2XZGFOP.js} +18 -18
  8. package/dist/{BlogPage-5Z4X3Y2H.js.map → BlogPage-E2XZGFOP.js.map} +1 -1
  9. package/dist/{BlogSinglePage-NSNVBBUS.js → BlogSinglePage-ZK2K6WEU.js} +18 -18
  10. package/dist/{BlogSinglePage-NSNVBBUS.js.map → BlogSinglePage-ZK2K6WEU.js.map} +1 -1
  11. package/dist/{BlogTagPage-GRYZRHDL.js → BlogTagPage-5N4VTPDN.js} +20 -20
  12. package/dist/{BlogTagPage-GRYZRHDL.js.map → BlogTagPage-5N4VTPDN.js.map} +1 -1
  13. package/dist/{BrandsPage-3Q4ZYOT7.js → BrandsPage-XE7RYGXA.js} +19 -19
  14. package/dist/{BrandsPage-3Q4ZYOT7.js.map → BrandsPage-XE7RYGXA.js.map} +1 -1
  15. package/dist/{Breadcrumb-WNSVFI75.js → Breadcrumb-NX6BUSOA.js} +18 -18
  16. package/dist/{Breadcrumb-WNSVFI75.js.map → Breadcrumb-NX6BUSOA.js.map} +1 -1
  17. package/dist/{CartItem-A66ZG64I.js → CartItem-SO34G6GZ.js} +18 -18
  18. package/dist/{CartItem-A66ZG64I.js.map → CartItem-SO34G6GZ.js.map} +1 -1
  19. package/dist/{CartSummary-BQC2IGQD.js → CartSummary-SDTY2CR2.js} +18 -18
  20. package/dist/{CartSummary-BQC2IGQD.js.map → CartSummary-SDTY2CR2.js.map} +1 -1
  21. package/dist/{Copyright-UNROFFOC.js → Copyright-C426OB5D.js} +4 -4
  22. package/dist/{Copyright-UNROFFOC.js.map → Copyright-C426OB5D.js.map} +1 -1
  23. package/dist/{CustomerLayout-TKS5QZMJ.js → CustomerLayout-UXX5KJWR.js} +18 -18
  24. package/dist/{CustomerLayout-TKS5QZMJ.js.map → CustomerLayout-UXX5KJWR.js.map} +1 -1
  25. package/dist/{Footer-2WD77PFB.js → Footer-M5QEXJ4Z.js} +18 -18
  26. package/dist/{Footer-2WD77PFB.js.map → Footer-M5QEXJ4Z.js.map} +1 -1
  27. package/dist/{Header-3BANLNYK.js → Header-CUJ4SYDF.js} +7 -7
  28. package/dist/{Header-3BANLNYK.js.map → Header-CUJ4SYDF.js.map} +1 -1
  29. package/dist/{ImageModal-LHFSYPSU.js → ImageModal-4FNL5UC5.js} +3 -3
  30. package/dist/{ImageModal-LHFSYPSU.js.map → ImageModal-4FNL5UC5.js.map} +1 -1
  31. package/dist/{LoyaltyPage-OAGJLFD2.js → LoyaltyPage-UMQ2ZWA6.js} +18 -18
  32. package/dist/{LoyaltyPage-OAGJLFD2.js.map → LoyaltyPage-UMQ2ZWA6.js.map} +1 -1
  33. package/dist/{LoyaltyPointsPage-G5FB2QTQ.js → LoyaltyPointsPage-5YHEQSLT.js} +6 -6
  34. package/dist/{LoyaltyPointsPage-G5FB2QTQ.js.map → LoyaltyPointsPage-5YHEQSLT.js.map} +1 -1
  35. package/dist/{MainMenu-FFLJR2EK.js → MainMenu-OFQDXUGW.js} +6 -6
  36. package/dist/{MainMenu-FFLJR2EK.js.map → MainMenu-OFQDXUGW.js.map} +1 -1
  37. package/dist/{MasterLayout-H54QAUUY.js → MasterLayout-TSHKSJ7U.js} +18 -18
  38. package/dist/{MasterLayout-H54QAUUY.js.map → MasterLayout-TSHKSJ7U.js.map} +1 -1
  39. package/dist/{MobileMenu-OVAY7EFJ.js → MobileMenu-7EKUQ4MU.js} +19 -19
  40. package/dist/{MobileMenu-OVAY7EFJ.js.map → MobileMenu-7EKUQ4MU.js.map} +1 -1
  41. package/dist/{NotificationsPage-SEAEJEE7.js → NotificationsPage-TBDOI7YB.js} +18 -18
  42. package/dist/{NotificationsPage-SEAEJEE7.js.map → NotificationsPage-TBDOI7YB.js.map} +1 -1
  43. package/dist/{OrderSinglePage-L7OCFF7N.js → OrderSinglePage-7A37FKJE.js} +19 -19
  44. package/dist/{OrderSinglePage-L7OCFF7N.js.map → OrderSinglePage-7A37FKJE.js.map} +1 -1
  45. package/dist/{OrdersPage-IOEC2JR2.js → OrdersPage-NJ3JH6SG.js} +18 -18
  46. package/dist/{OrdersPage-IOEC2JR2.js.map → OrdersPage-NJ3JH6SG.js.map} +1 -1
  47. package/dist/{PageSingle-YYUIJVFP.js → PageSingle-UKA2U3E5.js} +4 -4
  48. package/dist/{PageSingle-YYUIJVFP.js.map → PageSingle-UKA2U3E5.js.map} +1 -1
  49. package/dist/{ProductDetails-KSB3OC25.js → ProductDetails-XDNE62ZZ.js} +8 -9
  50. package/dist/ProductDetails-XDNE62ZZ.js.map +1 -0
  51. package/dist/{ProfilePage-SVQRTF55.js → ProfilePage-WPJYGKYR.js} +18 -18
  52. package/dist/{ProfilePage-SVQRTF55.js.map → ProfilePage-WPJYGKYR.js.map} +1 -1
  53. package/dist/{SeoCartWidget-G4Y4NRMH.js → SeoCartWidget-G7NAANUN.js} +18 -18
  54. package/dist/{SeoCartWidget-G4Y4NRMH.js.map → SeoCartWidget-G7NAANUN.js.map} +1 -1
  55. package/dist/{SettingsPage-ZVBMBGZL.js → SettingsPage-X7GPCBJL.js} +18 -18
  56. package/dist/{SettingsPage-ZVBMBGZL.js.map → SettingsPage-X7GPCBJL.js.map} +1 -1
  57. package/dist/{StoreClosedNotification-PRXVWUV7.js → StoreClosedNotification-NKRYCLKX.js} +19 -19
  58. package/dist/{StoreClosedNotification-PRXVWUV7.js.map → StoreClosedNotification-NKRYCLKX.js.map} +1 -1
  59. package/dist/{TestimonialsPage-QENPQ2JK.js → TestimonialsPage-JTUWHKPU.js} +4 -4
  60. package/dist/{TestimonialsPage-QENPQ2JK.js.map → TestimonialsPage-JTUWHKPU.js.map} +1 -1
  61. package/dist/{ThankYouPage-GB6M5I4Z.js → ThankYouPage-MCMBGHO2.js} +18 -18
  62. package/dist/{ThankYouPage-GB6M5I4Z.js.map → ThankYouPage-MCMBGHO2.js.map} +1 -1
  63. package/dist/{WalletPage-IG5B33XQ.js → WalletPage-JJI6WPNT.js} +19 -19
  64. package/dist/{WalletPage-IG5B33XQ.js.map → WalletPage-JJI6WPNT.js.map} +1 -1
  65. package/dist/WidgetHead-BCRIXIJQ.js +7 -0
  66. package/dist/{WidgetHead-RWL7D3CT.js.map → WidgetHead-BCRIXIJQ.js.map} +1 -1
  67. package/dist/{WishlistPage-SYNLUIGO.js → WishlistPage-HAOYS7NV.js} +20 -20
  68. package/dist/{WishlistPage-SYNLUIGO.js.map → WishlistPage-HAOYS7NV.js.map} +1 -1
  69. package/dist/api/apps.js +2 -2
  70. package/dist/api/blog.js +12 -0
  71. package/dist/api/blog.js.map +1 -0
  72. package/dist/api/brands.js +2 -2
  73. package/dist/api/cart.js +2 -2
  74. package/dist/api/category.js +2 -2
  75. package/dist/api/client.d.ts +0 -6
  76. package/dist/api/client.d.ts.map +1 -1
  77. package/dist/api/client.js +1 -1
  78. package/dist/api/home.js +2 -2
  79. package/dist/api/loyalty.js +2 -2
  80. package/dist/api/menu.js +2 -2
  81. package/dist/api/notification.js +2 -2
  82. package/dist/api/order.js +2 -2
  83. package/dist/api/page.js +2 -2
  84. package/dist/api/product.js +2 -2
  85. package/dist/api/profile.js +1 -1
  86. package/dist/api/store.js +2 -2
  87. package/dist/api/translations.js +2 -2
  88. package/dist/api/types.d.ts +5 -0
  89. package/dist/api/types.d.ts.map +1 -1
  90. package/dist/api/user.js +2 -2
  91. package/dist/api/wallet.js +9 -0
  92. package/dist/api/wallet.js.map +1 -0
  93. package/dist/api/wishlist.js +3 -3
  94. package/dist/{chunk-7PYHB3PP.js → chunk-25FWAL3O.js} +3 -3
  95. package/dist/{chunk-7PYHB3PP.js.map → chunk-25FWAL3O.js.map} +1 -1
  96. package/dist/{chunk-USN5NHJ5.js → chunk-2ALN2BPM.js} +3 -3
  97. package/dist/{chunk-USN5NHJ5.js.map → chunk-2ALN2BPM.js.map} +1 -1
  98. package/dist/{chunk-5HOD4BKK.js → chunk-3CYIB6BL.js} +3 -3
  99. package/dist/{chunk-5HOD4BKK.js.map → chunk-3CYIB6BL.js.map} +1 -1
  100. package/dist/{chunk-VYJDRAWX.js → chunk-3EE62REP.js} +3 -3
  101. package/dist/{chunk-VYJDRAWX.js.map → chunk-3EE62REP.js.map} +1 -1
  102. package/dist/{chunk-IXG6BF2M.js → chunk-3YAR2SXQ.js} +7 -7
  103. package/dist/{chunk-IXG6BF2M.js.map → chunk-3YAR2SXQ.js.map} +1 -1
  104. package/dist/chunk-4LVBS3VI.js +14 -0
  105. package/dist/{chunk-IHZVVSPW.js.map → chunk-4LVBS3VI.js.map} +1 -1
  106. package/dist/{chunk-P6EOXGUE.js → chunk-52ETYODY.js} +4 -4
  107. package/dist/{chunk-P6EOXGUE.js.map → chunk-52ETYODY.js.map} +1 -1
  108. package/dist/{chunk-GVJHDJW7.js → chunk-54XX3YPP.js} +10 -10
  109. package/dist/chunk-54XX3YPP.js.map +1 -0
  110. package/dist/{chunk-N3BSUMD7.js → chunk-5AFTFN72.js} +3 -3
  111. package/dist/{chunk-N3BSUMD7.js.map → chunk-5AFTFN72.js.map} +1 -1
  112. package/dist/{chunk-GTG22RZG.js → chunk-5DPR7GWH.js} +3 -3
  113. package/dist/{chunk-GTG22RZG.js.map → chunk-5DPR7GWH.js.map} +1 -1
  114. package/dist/{chunk-Q7VWURUR.js → chunk-5XDPAKF5.js} +3 -3
  115. package/dist/{chunk-Q7VWURUR.js.map → chunk-5XDPAKF5.js.map} +1 -1
  116. package/dist/chunk-7V5HOZW4.js +10 -0
  117. package/dist/{chunk-CUG6VOLM.js.map → chunk-7V5HOZW4.js.map} +1 -1
  118. package/dist/{chunk-7W7SLN5M.js → chunk-B5FDWE4U.js} +3 -3
  119. package/dist/{chunk-7W7SLN5M.js.map → chunk-B5FDWE4U.js.map} +1 -1
  120. package/dist/{chunk-BQURS54V.js → chunk-CMD3ARR2.js} +13 -13
  121. package/dist/{chunk-BQURS54V.js.map → chunk-CMD3ARR2.js.map} +1 -1
  122. package/dist/{chunk-VX2T7JCB.js → chunk-EXBH6RGD.js} +5 -5
  123. package/dist/chunk-EXBH6RGD.js.map +1 -0
  124. package/dist/{chunk-GU2KUQVD.js → chunk-GCPEMNSU.js} +14 -3
  125. package/dist/chunk-GCPEMNSU.js.map +1 -0
  126. package/dist/{chunk-6F5QZKIY.js → chunk-HFISEQPK.js} +8 -13
  127. package/dist/chunk-HFISEQPK.js.map +1 -0
  128. package/dist/{chunk-C5X6CVXC.js → chunk-HI5V5X3S.js} +4 -7
  129. package/dist/chunk-HI5V5X3S.js.map +1 -0
  130. package/dist/{chunk-5O6PTKI5.js → chunk-IXUY5RMV.js} +6 -4
  131. package/dist/chunk-IXUY5RMV.js.map +1 -0
  132. package/dist/{chunk-DY5WGKDX.js → chunk-JZ7BOB4G.js} +3 -3
  133. package/dist/{chunk-DY5WGKDX.js.map → chunk-JZ7BOB4G.js.map} +1 -1
  134. package/dist/{chunk-R2BAI6QI.js → chunk-KOMV5SEF.js} +5 -5
  135. package/dist/{chunk-R2BAI6QI.js.map → chunk-KOMV5SEF.js.map} +1 -1
  136. package/dist/{chunk-ILMX45PO.js → chunk-L2QUP6J3.js} +6 -6
  137. package/dist/{chunk-ILMX45PO.js.map → chunk-L2QUP6J3.js.map} +1 -1
  138. package/dist/chunk-L3X2H2RP.js +21 -0
  139. package/dist/{chunk-DZDSTTHW.js.map → chunk-L3X2H2RP.js.map} +1 -1
  140. package/dist/{chunk-FGROIU3Y.js → chunk-L5K7VBOH.js} +3 -3
  141. package/dist/{chunk-FGROIU3Y.js.map → chunk-L5K7VBOH.js.map} +1 -1
  142. package/dist/chunk-MVT5AF2A.js +94 -0
  143. package/dist/chunk-MVT5AF2A.js.map +1 -0
  144. package/dist/{chunk-A32NANNC.js → chunk-OYP5CGHU.js} +3 -3
  145. package/dist/{chunk-A32NANNC.js.map → chunk-OYP5CGHU.js.map} +1 -1
  146. package/dist/{chunk-NFE2H5JE.js → chunk-RO6KBURF.js} +3 -3
  147. package/dist/{chunk-NFE2H5JE.js.map → chunk-RO6KBURF.js.map} +1 -1
  148. package/dist/{chunk-GBWCXUPD.js → chunk-RSVAPXXI.js} +39 -16
  149. package/dist/chunk-RSVAPXXI.js.map +1 -0
  150. package/dist/{chunk-2JL4S2LE.js → chunk-U53LIN2F.js} +6 -6
  151. package/dist/{chunk-2JL4S2LE.js.map → chunk-U53LIN2F.js.map} +1 -1
  152. package/dist/{chunk-MSUGP566.js → chunk-UAY6LTWB.js} +3 -3
  153. package/dist/{chunk-MSUGP566.js.map → chunk-UAY6LTWB.js.map} +1 -1
  154. package/dist/{chunk-RJPPO3ET.js → chunk-V2ZDTY6H.js} +3 -3
  155. package/dist/{chunk-RJPPO3ET.js.map → chunk-V2ZDTY6H.js.map} +1 -1
  156. package/dist/{chunk-H2DXJCJP.js → chunk-VFYT2VWC.js} +3 -3
  157. package/dist/{chunk-H2DXJCJP.js.map → chunk-VFYT2VWC.js.map} +1 -1
  158. package/dist/{chunk-LDMLFJGQ.js → chunk-WLDDKFSZ.js} +4 -4
  159. package/dist/{chunk-LDMLFJGQ.js.map → chunk-WLDDKFSZ.js.map} +1 -1
  160. package/dist/{chunk-5H4NIOTY.js → chunk-WSXRUOI2.js} +3 -3
  161. package/dist/{chunk-5H4NIOTY.js.map → chunk-WSXRUOI2.js.map} +1 -1
  162. package/dist/{chunk-LGT3T7VF.js → chunk-WYW7USLQ.js} +3 -3
  163. package/dist/{chunk-LGT3T7VF.js.map → chunk-WYW7USLQ.js.map} +1 -1
  164. package/dist/{chunk-7BGEGHAI.js → chunk-XVNXXF67.js} +3 -3
  165. package/dist/{chunk-7BGEGHAI.js.map → chunk-XVNXXF67.js.map} +1 -1
  166. package/dist/{chunk-HX3YKS5W.js → chunk-YA6ABQB7.js} +16 -10
  167. package/dist/chunk-YA6ABQB7.js.map +1 -0
  168. package/dist/{chunk-4YHSQSM6.js → chunk-YKFGUVF7.js} +3 -3
  169. package/dist/{chunk-4YHSQSM6.js.map → chunk-YKFGUVF7.js.map} +1 -1
  170. package/dist/{chunk-E7PYHBCX.js → chunk-YLSG4MEK.js} +3 -3
  171. package/dist/{chunk-E7PYHBCX.js.map → chunk-YLSG4MEK.js.map} +1 -1
  172. package/dist/components/cart/index.js +1 -1
  173. package/dist/components/common/Image.d.ts.map +1 -1
  174. package/dist/components/common/index.js +2 -2
  175. package/dist/components/drawer/index.js +16 -16
  176. package/dist/components/home/index.js +20 -20
  177. package/dist/components/layout/index.js +4 -4
  178. package/dist/components/modal/Modal.d.ts.map +1 -1
  179. package/dist/components/modal/index.js +2 -2
  180. package/dist/components/product/ProductDetails.d.ts.map +1 -1
  181. package/dist/components/product/index.js +17 -17
  182. package/dist/components/store/index.js +18 -18
  183. package/dist/components/toast/index.js +8 -6
  184. package/dist/components/toast/index.js.map +1 -1
  185. package/dist/components/toast/useToast.d.ts.map +1 -1
  186. package/dist/components/tracking/index.js +1 -1
  187. package/dist/contexts/CartContext.d.ts +14 -6
  188. package/dist/contexts/CartContext.d.ts.map +1 -1
  189. package/dist/contexts/index.js.map +1 -1
  190. package/dist/{document-class-7U45CO5V.js → document-class-DOQDO2DN.js} +8 -8
  191. package/dist/{document-class-7U45CO5V.js.map → document-class-DOQDO2DN.js.map} +1 -1
  192. package/dist/hooks/HookRegistry.d.ts +3 -1
  193. package/dist/hooks/HookRegistry.d.ts.map +1 -1
  194. package/dist/hooks/HookRegistry.js +1 -1
  195. package/dist/hooks/HookSlot.js +2 -2
  196. package/dist/hooks/index.js +16 -16
  197. package/dist/hooks/useGtm.js +16 -16
  198. package/dist/hooks/useHook.d.ts.map +1 -1
  199. package/dist/hooks/useHook.js +2 -2
  200. package/dist/hooks/useMoney.js +16 -16
  201. package/dist/hooks/useStore.js +16 -16
  202. package/dist/hooks/useUser.js +3 -3
  203. package/dist/hooks/useWishlist.d.ts.map +1 -1
  204. package/dist/hooks/useWishlist.js +3 -1
  205. package/dist/index.js +16 -16
  206. package/dist/{not-found-W7RACNK7.js → not-found-6B6QSJYA.js} +19 -19
  207. package/dist/{not-found-W7RACNK7.js.map → not-found-6B6QSJYA.js.map} +1 -1
  208. package/dist/providers/index.js +16 -16
  209. package/dist/routes/account/orders/index.d.ts.map +1 -1
  210. package/dist/routes/account/orders.js +3 -3
  211. package/dist/routes/account.js +12 -12
  212. package/dist/routes/blog/loader.d.ts.map +1 -1
  213. package/dist/routes/blog.js +23 -13
  214. package/dist/routes/blog.js.map +1 -1
  215. package/dist/routes/brands/types.d.ts +16 -2
  216. package/dist/routes/brands/types.d.ts.map +1 -1
  217. package/dist/routes/brands.js +3 -3
  218. package/dist/routes/cart.js +24 -24
  219. package/dist/routes/home.js +21 -21
  220. package/dist/routes/loyalty.js +4 -4
  221. package/dist/routes/page.js +3 -3
  222. package/dist/routes/product/ProductPage.d.ts.map +1 -1
  223. package/dist/routes/product-listing/loader.d.ts.map +1 -1
  224. package/dist/routes/product-listing.js +24 -23
  225. package/dist/routes/product-listing.js.map +1 -1
  226. package/dist/routes/product.js +23 -25
  227. package/dist/routes/product.js.map +1 -1
  228. package/dist/routes/testimonials.js +1 -1
  229. package/dist/routes/thank-you.js +3 -3
  230. package/dist/skeleton.js +21 -21
  231. package/dist/tanstack.js +7 -7
  232. package/dist/types/hooks.d.ts +61 -1
  233. package/dist/types/hooks.d.ts.map +1 -1
  234. package/dist/types/hooks.js +1 -1
  235. package/dist/types/index.d.ts +626 -53
  236. package/dist/types/index.d.ts.map +1 -1
  237. package/dist/types/index.js +1 -1
  238. package/dist/vite/adapters/tanstack.adapter.d.ts.map +1 -1
  239. package/dist/vite/index.js +34 -10
  240. package/dist/vite/index.js.map +1 -1
  241. package/package.json +9 -1
  242. package/dist/AddToCartForm-XA5X2C5K.js.map +0 -1
  243. package/dist/BlogAuthorPage-YWR52G5S.js.map +0 -1
  244. package/dist/ProductDetails-KSB3OC25.js.map +0 -1
  245. package/dist/WidgetHead-RWL7D3CT.js +0 -7
  246. package/dist/chunk-5O6PTKI5.js.map +0 -1
  247. package/dist/chunk-6F5QZKIY.js.map +0 -1
  248. package/dist/chunk-C5X6CVXC.js.map +0 -1
  249. package/dist/chunk-CUG6VOLM.js +0 -10
  250. package/dist/chunk-DZDSTTHW.js +0 -21
  251. package/dist/chunk-GBWCXUPD.js.map +0 -1
  252. package/dist/chunk-GU2KUQVD.js.map +0 -1
  253. package/dist/chunk-GVJHDJW7.js.map +0 -1
  254. package/dist/chunk-HX3YKS5W.js.map +0 -1
  255. package/dist/chunk-IHZVVSPW.js +0 -14
  256. package/dist/chunk-TP3LCGE7.js +0 -34
  257. package/dist/chunk-TP3LCGE7.js.map +0 -1
  258. package/dist/chunk-VX2T7JCB.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/product/loader.ts","../../src/routes/product/ProductPage.tsx","../../src/routes/product/index.tsx"],"names":["product"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,eAAsB,aAAA,CAAc,EAAE,MAAA,EAAO,EAAoD;AAC/F,EAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,WAAA,CAAY,OAAO,EAAE,CAAA;AAChD,EAAA,MAAM,IAAA,GAAO,oBAAmB,CAAE,IAAA;AAClC,EAAA,MAAM,IAAA,GAAmB,EAAE,IAAA,EAAM,IAAA,CAAK,EAAE,oBAAoB,CAAA,EAAG,KAAK,GAAA,EAAI;AAExE,EAAA,MAAM,WAAA,GAA4B,CAAC,IAAI,CAAA;AACvC,EAAA,IAAI,KAAK,QAAA,EAAU;AACjB,IAAA,WAAA,CAAY,IAAA,CAAK,EAAE,IAAA,EAAM,IAAA,CAAK,QAAA,CAAS,MAAM,GAAA,EAAK,IAAA,CAAK,QAAA,CAAS,GAAA,EAAK,CAAA;AAAA,EACvE;AACA,EAAA,WAAA,CAAY,IAAA,CAAK,EAAE,IAAA,EAAM,IAAA,CAAK,MAAM,GAAA,EAAK,IAAA,CAAK,KAAK,CAAA;AAEnD,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,MAAM,OAAA,CAAQ,cAAA;AAAA,IACd,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,OAAO,IAAA,CAAK,IAAA;AAAA,IACZ,KAAK,IAAA,CAAK,GAAA;AAAA,IACV,QACE,IAAA,CAAK,QAAA,IAAY,KAAK,QAAA,CAAS,EAAA,GAC3B,EAAE,EAAA,EAAI,IAAA,CAAK,SAAS,EAAA,EAAI,IAAA,EAAM,KAAK,QAAA,CAAS,IAAA,EAAM,KAAK,IAAA,CAAK,QAAA,CAAS,KAAI,GACzE,IAAA;AAAA,IACN;AAAA,GACF;AAEA,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AACF;ACrBO,SAAS,WAAA,CAAY,EAAE,OAAA,EAAS,cAAA,EAAgB,MAAK,EAAqB;AAC/E,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,WAAA,EAAY;AACrC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,OAAA,EAAAA,QAAAA,EAAQ,GAAI,WAAW,cAAc,CAAA;AAC7C,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,WAAA,EAAY;AAEpC,EAAA,4BACG,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,EAAO,QAAA,EAAU,wBAAA,KAA6B,KAAA,oBAAS,GAAA,CAAC,kBAAW,IAAA,EAAY,CAAA;AAAA,sBAEhF,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,eAAA,EAAgB,CAAA;AAAA,sBAE/B,IAAA,CAAC,SAAI,SAAA,EAAU,uCAAA,EAAwC,IAAI,CAAA,QAAA,EAAWA,QAAAA,CAAQ,EAAE,CAAA,CAAA,EAC9E,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,SAASA,QAAAA,EAAS,CAAA;AAAA,wBAElC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2EAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,uBAAA,EAAwB,CAAA;AAAA,0BACvC,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,kCAAA,EAAmC,CAAA;AAAA,8BACjD,kBAAA,EAAA,EAAe,OAAA,EAASA,UAAS,QAAA,EAAU,KAAA,CAAM,SAAS,SAAA,EAAW,CAAA;AAAA,0BACtE,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,4BAAA,EAA6B,CAAA;AAAA,0BAC5C,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,gCAAA,EAAiC,CAAA;AAAA,0BAChD,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,qBAAA,EAAsB,CAAA;AAAA,0BAErC,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,2BAAA,EAA4B,CAAA;AAAA,8BAC1C,iBAAA,EAAA,EAAc,OAAA,EAASA,UAAS,eAAA,EAAiB,KAAA,CAAM,SAAS,kBAAA,EAAoB,CAAA;AAAA,0BACrF,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,yBAAA,EAA0B,CAAA;AAAA,0BAEzC,GAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,qBAAA,EAAsB;AAAA,SAAA,EACnD;AAAA,OAAA,EACF,CAAA;AAAA,0BAEC,UAAA,EAAA,EAAW;AAAA,KAAA,EACd,CAAA;AAAA,IAEC,KAAA,CAAM,QAAA,EAAU,MAAA,EAAQ,eAAA,wBACtB,qBAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAgC,MAAA,EAAQA,QAAAA,CAAQ,EAAA,EAAI,IAAA,EAAM,SAAA,EAAA,EAAvC,WAAyD,CAAA,EAC/E,CAAA;AAAA,oBAGF,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,uBAAA,EAAwB,CAAA;AAAA,oBACvC,GAAA,CAAC,qBAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACb,QAAA,kBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM;AAAA,UACJ,UAAU,EAAE,MAAA,EAAQ,SAAA,EAAW,YAAA,EAAcA,SAAQ,EAAA,EAAG;AAAA,UACxD,KAAA,EAAO,EAAE,iCAAiC,CAAA;AAAA,UAC1C,eAAA,EAAiB;AAAA;AACnB;AAAA,OAEJ,CAAA,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,qBAAA,EAAsB,CAAA;AAAA,oBAErC,GAAA,CAAC,qBAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,kBAAA,GAAA,CAAC,gBAAA,EAAA,EAAa,IAAA,EAAM,EAAC,EAAG,CAAA,EAC1B,CAAA,EACF,CAAA;AAAA,oBAEA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,aAAA,EAAc;AAAA,GAAA,EAAA,EAtDrBA,SAAQ,EAuDlB,CAAA;AAEJ;;;ACjEA,eAAe,MAAA,CACb,KACA,MAAA,EAI2B;AAC3B,EAAA,MAAM,OAAO,MAAM,aAAA,CAAc,EAAE,MAAA,EAAQ,GAAA,CAAI,QAAQ,CAAA;AAEvD,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,IAAA,EAAM,GAAG,CAAA;AACpC,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,EAC7B;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,IAAA,CAAK,KAAsB,IAAA,EAAwC;AAC1E,EAAA,IAAI,CAAC,MAAM,OAAA,EAAS;AAClB,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,UAAA;AAAA,MACP,WAAA,EAAa;AAAA,KACf;AAAA,EACF;AACA,EAAA,MAAMA,WAAU,IAAA,CAAK,OAAA;AACrB,EAAA,MAAM,SAAA,GAAY,GAAA,CAAI,QAAA,EAAU,KAAA,EAAO,IAAA,IAAQ,EAAA;AAG/C,EAAA,MAAM,WAAA,GAAcA,QAAAA,CAAQ,WAAA,EAAa,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,IAAK,EAAA;AAGlF,EAAA,MAAM,eAAA,uBAAsB,IAAA,EAAK;AACjC,EAAA,eAAA,CAAgB,QAAA,CAAS,eAAA,CAAgB,QAAA,EAAS,GAAI,CAAC,CAAA;AAGvD,EAAA,MAAM,MAAA,GAASA,QAAAA,CAAQ,MAAA,EAAQ,GAAA,CAAI,CAAC,GAAA,KAAQ,GAAA,CAAI,GAAG,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,IAAK,EAAC;AACzE,EAAA,IAAIA,QAAAA,CAAQ,OAAO,GAAA,IAAO,CAAC,OAAO,QAAA,CAASA,QAAAA,CAAQ,KAAA,CAAM,GAAG,CAAA,EAAG;AAC7D,IAAA,MAAA,CAAO,OAAA,CAAQA,QAAAA,CAAQ,KAAA,CAAM,GAAG,CAAA;AAAA,EAClC;AAGA,EAAA,MAAM,MAAA,GAAkC;AAAA,IACtC,UAAA,EAAY,oBAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,MAAMA,QAAAA,CAAQ,IAAA;AAAA,IACd,WAAA;AAAA,IACA,KAAKA,QAAAA,CAAQ,GAAA;AAAA,IACb,KAAA,EAAO,MAAA,CAAO,MAAA,GAAS,CAAA,GAAI,MAAA,GAAS,MAAA;AAAA,IACpC,MAAA,EAAQ;AAAA,MACN,OAAA,EAAS,OAAA;AAAA,MACT,KAAKA,QAAAA,CAAQ,GAAA;AAAA,MACb,YAAA,EAAcA,QAAAA,CAAQ,YAAA,GAClB,4BAAA,GACA,+BAAA;AAAA,MACJ,OAAOA,QAAAA,CAAQ,UAAA;AAAA,MACf,eAAeA,QAAAA,CAAQ,QAAA;AAAA,MACvB,iBAAiB,eAAA,CAAgB,WAAA,GAAc,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAAA,MAC3D,QAAQ,SAAA,GACJ;AAAA,QACE,OAAA,EAAS,cAAA;AAAA,QACT,IAAA,EAAM;AAAA,OACR,GACA;AAAA;AACN,GACF;AAGA,EAAA,IAAIA,SAAQ,KAAA,EAAO;AACjB,IAAA,MAAA,CAAO,KAAA,GAAQ;AAAA,MACb,OAAA,EAAS,OAAA;AAAA,MACT,IAAA,EAAMA,SAAQ,KAAA,CAAM,IAAA;AAAA,MACpB,WAAA,EAAaA,SAAQ,KAAA,CAAM,WAAA;AAAA,MAC3B,IAAA,EAAMA,SAAQ,KAAA,CAAM;AAAA,KACtB;AAAA,EACF;AAGA,EAAA,IAAIA,QAAAA,CAAQ,MAAA,IAAUA,QAAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA,EAAG;AAC9C,IAAA,MAAM,WAAA,GAAcA,SAAQ,MAAA,CAAO,KAAA;AACnC,IAAA,MAAA,CAAO,eAAA,GAAkB;AAAA,MACvB,OAAA,EAAS,iBAAA;AAAA,MACT,WAAA,EAAaA,SAAQ,MAAA,CAAO,KAAA;AAAA,MAC5B;AAAA,KACF;AACA,IAAA,MAAA,CAAO,MAAA,GAAS;AAAA,MACd,OAAA,EAAS,QAAA;AAAA,MACT,QAAQ,SAAA,GACJ;AAAA,QACE,OAAA,EAAS,cAAA;AAAA,QACT,IAAA,EAAM;AAAA,OACR,GACA,MAAA;AAAA,MACJ,YAAA,EAAc;AAAA,QACZ,OAAA,EAAS,QAAA;AAAA,QACT,UAAA,EAAY,CAAA;AAAA,QACZ;AAAA;AACF,KACF;AAAA,EACF;AAEA,EAAA,IAAIA,QAAAA,CAAQ,IAAA,IAAQA,QAAAA,CAAQ,IAAA,CAAK,WAAW,CAAA,EAAG;AAC7C,IAAA,MAAA,CAAO,QAAQA,QAAAA,CAAQ,IAAA;AAAA,EACzB;AAEA,EAAA,IAAIA,SAAQ,GAAA,EAAK;AACf,IAAA,MAAA,CAAO,MAAMA,QAAAA,CAAQ,GAAA;AAAA,EACvB;AAGA,EAAA,MAAM,KAAA,GAAQ,YAAY,CAAA,EAAGA,QAAAA,CAAQ,IAAI,CAAA,GAAA,EAAM,SAAS,KAAKA,QAAAA,CAAQ,IAAA;AACrE,EAAA,MAAM,IAAA,GAAuB;AAAA,IAC3B,KAAA;AAAA,IACA,gBAAA,EAAkB,KAAA;AAAA,IAClB,WAAA;AAAA,IACA,WAAWA,QAAAA,CAAQ,GAAA;AAAA,IACnB,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,KAAA;AAAA,MACA,WAAA;AAAA,MACA,MAAA,EAAQA,SAAQ,KAAA,EAAO,GAAA;AAAA,MACvB,KAAKA,QAAAA,CAAQ;AAAA,KACf;AAAA,IACA,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,qBAAA;AAAA,MACN,KAAA;AAAA,MACA,WAAA;AAAA,MACA,MAAA,EAAQA,SAAQ,KAAA,EAAO;AAAA,KACzB;AAAA,IACA,MAAA;AAAA,IACA,oBAAoB,uBAAA,CAAwB,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,SAAS,QAAQ,CAAA;AAAA;AAAA;AAAA;AAAA,IAI/E,OAAA,EAAS,GAAA,CAAI,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,UAAU,CAAC,kBAAA,EAAoB,CAAA,GAAI;AAAC,GAC9E;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,OAAA,GAAU;AAAA,EACrB,IAAI,OAAA,CAAQ,cAAA;AAAA,EACZ,MAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,EAAW;AACb","file":"product.js","sourcesContent":["import type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport { product } from '../../api/product';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\nimport type { Breadcrumb } from '../../types';\n\nexport async function productLoader({ params }: { params: IdParams }): Promise<ProductPageProps> {\n const data = await product.findOrThrow(params.id);\n const i18n = getTwilightContext().i18n;\n const home: Breadcrumb = { name: i18n.t('common.titles.home'), url: '/' };\n\n const breadcrumbs: Breadcrumb[] = [home];\n if (data.category) {\n breadcrumbs.push({ name: data.category.name, url: data.category.url });\n }\n breadcrumbs.push({ name: data.name, url: data.url });\n\n const page = {\n slug: RouteId.PRODUCT_SINGLE,\n id: data.id,\n title: data.name,\n url: data.url,\n parent:\n data.category && data.category.id\n ? { id: data.category.id, name: data.category.name, url: data.category.url }\n : null,\n breadcrumbs,\n };\n\n return {\n page,\n product: data,\n };\n}\n","import { SallaQuickOrder } from '@salla.sa/twilight-components-react/quick-order';\nimport { SallaOffer } from '@salla.sa/twilight-components-react/offer';\nimport { SallaComments } from '@salla.sa/twilight-components-react/comments';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useProduct } from '../../hooks/useProduct';\nimport { useComments } from '../../hooks/useComments';\nimport type { ProductPageProps } from './types';\nimport { Breadcrumb, RenderWhenVisible } from '../../components/common';\nimport { ProductDetails, AddToCartForm, ProductGallery } from '../../components/product';\nimport { ProductsSlider, Testimonials } from '../../components/home';\nimport { useTwilight } from '../../providers/twilight-context';\n\nexport function ProductPage({ product: initialProduct, page }: ProductPageProps) {\n const { theme, store } = useTwilight();\n const { t } = useTranslation();\n const { product } = useProduct(initialProduct);\n const { commentsKey } = useComments();\n\n return (\n <div key={product.id}>\n <div className=\"container\">\n {theme?.settings?.product_show_breadcrumbs !== false && <Breadcrumb page={page} />}\n\n <HookSlot name=\"product:start\" />\n\n <div className=\"flex flex-col items-start md:flex-row\" id={`product-${product.id}`}>\n <ProductGallery product={product} />\n\n <div className=\"main-content md:sticky md:overflow-hidden top-24 w-full md:w-2/4 md:pb-16\">\n <HookSlot name=\"product:details.start\" />\n <HookSlot name=\"product:single.description.start\" />\n <ProductDetails product={product} showTags={theme.settings.show_tags} />\n <HookSlot name=\"product:single.description\" />\n <HookSlot name=\"product:single.description.end\" />\n <HookSlot name=\"product:details.end\" />\n\n <HookSlot name=\"product:single.form.start\" />\n <AddToCartForm product={product} stickyAddToCart={theme.settings.sticky_add_to_cart} />\n <HookSlot name=\"product:single.form.end\" />\n\n <SallaQuickOrder className=\"mt-5 md:-mb-2 block\" />\n </div>\n </div>\n\n <SallaOffer />\n </div>\n\n {store.settings?.rating?.show_on_product && (\n <RenderWhenVisible>\n <SallaComments key={commentsKey} itemId={product.id} type={'product' as any} />\n </RenderWhenVisible>\n )}\n\n <HookSlot name=\"product:related.start\" />\n <RenderWhenVisible>\n <div className=\"container\">\n <ProductsSlider\n data={{\n products: { source: 'related', source_value: product.id },\n title: t('pages.products.similar_products'),\n display_all_url: '',\n }}\n />\n </div>\n </RenderWhenVisible>\n <HookSlot name=\"product:related.end\" />\n\n <RenderWhenVisible>\n <div className=\"container\">\n <Testimonials data={{}} />\n </div>\n </RenderWhenVisible>\n\n <HookSlot name=\"product:end\" />\n </div>\n );\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { productLoader } from './loader';\nimport { RouteId } from '../../router/route-ids';\nimport { ProductPage } from './ProductPage';\nimport { fastCheckoutScript } from '../../utils/fast-checkout';\nexport { productLoader } from './loader';\nexport type { ProductPageProps } from './types';\n\nasync function loader(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: ProductPageProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<ProductPageProps> {\n const data = await productLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as ProductPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: ProductPageProps): HeadDescriptor {\n if (!data?.product) {\n return {\n title: 'Products',\n description: 'Browse our products',\n };\n }\n const product = data.product;\n const storeName = ctx.settings?.store?.name ?? '';\n\n // Strip HTML and limit description to 160 chars\n const description = product.description?.replace(/<[^>]*>/g, '').slice(0, 160) ?? '';\n\n // Price valid until: 1 month from now\n const priceValidUntil = new Date();\n priceValidUntil.setMonth(priceValidUntil.getMonth() + 1);\n\n // Collect all product images\n const images = product.images?.map((img) => img.url).filter(Boolean) ?? [];\n if (product.image?.url && !images.includes(product.image.url)) {\n images.unshift(product.image.url);\n }\n\n // Build JSON-LD schema matching SchemaProductWidget.php\n const jsonLd: Record<string, unknown> = {\n '@context': 'https://schema.org',\n '@type': 'Product',\n name: product.name,\n description,\n sku: product.sku,\n image: images.length > 0 ? images : undefined,\n offers: {\n '@type': 'Offer',\n url: product.url,\n availability: product.is_available\n ? 'https://schema.org/InStock'\n : 'https://schema.org/OutOfStock',\n price: product.sale_price,\n priceCurrency: product.currency,\n priceValidUntil: priceValidUntil.toISOString().split('T')[0],\n seller: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n },\n };\n\n // Add brand if exists\n if (product.brand) {\n jsonLd.brand = {\n '@type': 'Brand',\n name: product.brand.name,\n description: product.brand.description,\n logo: product.brand.logo,\n };\n }\n\n // Add aggregateRating and review if rating exists\n if (product.rating && product.rating.count > 0) {\n const ratingValue = product.rating.stars;\n jsonLd.aggregateRating = {\n '@type': 'AggregateRating',\n ratingCount: product.rating.count,\n ratingValue,\n };\n jsonLd.review = {\n '@type': 'Review',\n author: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n reviewRating: {\n '@type': 'Rating',\n bestRating: 5,\n ratingValue,\n },\n };\n }\n\n if (product.gtin && product.gtin.length === 8) {\n jsonLd.gtin8 = product.gtin;\n }\n\n if (product.mpn) {\n jsonLd.mpn = product.mpn;\n }\n\n // Twig: \"<product> | <store name>\", without the store meta title.\n const title = storeName ? `${product.name} | ${storeName}` : product.name;\n const base: HeadDescriptor = {\n title,\n appendStoreTitle: false,\n description,\n canonical: product.url,\n openGraph: {\n type: 'product',\n title,\n description,\n images: product.image?.url,\n url: product.url,\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description,\n images: product.image?.url,\n },\n jsonLd,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n // Quick-buy widget code, eager only here: the Buy Now button is above the fold on this page.\n // Other routes load it on idle from the body:end default hook, which also owns the\n // `#fast-checkout-js` marker `salla-add-product-button` checks for.\n scripts: ctx.settings?.store?.settings?.buy_now ? [fastCheckoutScript()] : [],\n };\n\n return base;\n}\n\nexport const Product = {\n id: RouteId.PRODUCT_SINGLE,\n loader,\n head,\n Component: ProductPage,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/product/loader.ts","../../src/routes/product/ProductPage.tsx","../../src/routes/product/index.tsx"],"names":["product"],"mappings":"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","file":"product.js","sourcesContent":["import type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport { product } from '../../api/product';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\nimport type { Breadcrumb } from '../../types';\n\nexport async function productLoader({ params }: { params: IdParams }): Promise<ProductPageProps> {\n const data = await product.findOrThrow(params.id);\n const i18n = getTwilightContext().i18n;\n const home: Breadcrumb = { name: i18n.t('common.titles.home'), url: '/' };\n\n const breadcrumbs: Breadcrumb[] = [home];\n if (data.category) {\n breadcrumbs.push({ name: data.category.name, url: data.category.url });\n }\n breadcrumbs.push({ name: data.name, url: data.url });\n\n const page = {\n slug: RouteId.PRODUCT_SINGLE,\n id: data.id,\n title: data.name,\n url: data.url,\n parent:\n data.category && data.category.id\n ? { id: data.category.id, name: data.category.name, url: data.category.url }\n : null,\n breadcrumbs,\n };\n\n return {\n page,\n product: data,\n };\n}\n","import { SallaQuickOrder } from '@salla.sa/twilight-components-react/quick-order';\nimport { SallaOffer } from '@salla.sa/twilight-components-react/offer';\nimport { SallaComments } from '@salla.sa/twilight-components-react/comments';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useProduct } from '../../hooks/useProduct';\nimport { useComments } from '../../hooks/useComments';\nimport type { ProductPageProps } from './types';\nimport { Breadcrumb, RenderWhenVisible } from '../../components/common';\nimport { ProductDetails, AddToCartForm, ProductGallery } from '../../components/product';\nimport { ProductsSlider, Testimonials } from '../../components/home';\nimport { useTwilight } from '../../providers/twilight-context';\n\nexport function ProductPage({ product: initialProduct, page }: ProductPageProps) {\n const { theme, store } = useTwilight();\n const { t } = useTranslation();\n const { product } = useProduct(initialProduct);\n const { commentsKey } = useComments();\n\n return (\n <div key={product.id}>\n <div className=\"container\">\n {theme?.settings?.product_show_breadcrumbs !== false && <Breadcrumb page={page} />}\n\n <HookSlot name=\"product:start\" />\n\n <div className=\"flex flex-col items-start md:flex-row\" id={`product-${product.id}`}>\n <ProductGallery product={product} />\n\n <div className=\"main-content md:sticky md:overflow-hidden top-24 w-full md:w-2/4 md:pb-16\">\n <HookSlot name=\"product:details.start\" />\n <ProductDetails product={product} showTags={theme.settings.show_tags} />\n <HookSlot name=\"product:details.end\" />\n\n <HookSlot name=\"product:single.form.start\" />\n <AddToCartForm product={product} stickyAddToCart={theme.settings.sticky_add_to_cart} />\n <HookSlot name=\"product:single.form.end\" />\n {/* After the form, as in Twig; `.start` and `description` are in ProductDetails */}\n <HookSlot name=\"product:single.description.end\" context={{ product }} />\n\n <SallaQuickOrder className=\"mt-5 md:-mb-2 block\" />\n </div>\n </div>\n\n <SallaOffer />\n </div>\n\n {store.settings?.rating?.show_on_product && (\n <RenderWhenVisible>\n <SallaComments key={commentsKey} itemId={Number(product.id)} type={'product' as any} />\n </RenderWhenVisible>\n )}\n\n <HookSlot name=\"product:related.start\" />\n <RenderWhenVisible>\n <div className=\"container\">\n <ProductsSlider\n data={{\n products: { source: 'related', source_value: Number(product.id) },\n title: t('pages.products.similar_products'),\n display_all_url: '',\n }}\n />\n </div>\n </RenderWhenVisible>\n <HookSlot name=\"product:related.end\" />\n\n <RenderWhenVisible>\n <div className=\"container\">\n <Testimonials data={{}} />\n </div>\n </RenderWhenVisible>\n\n <HookSlot name=\"product:end\" />\n </div>\n );\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { productLoader } from './loader';\nimport { RouteId } from '../../router/route-ids';\nimport { ProductPage } from './ProductPage';\nimport { fastCheckoutScript } from '../../utils/fast-checkout';\nexport { productLoader } from './loader';\nexport type { ProductPageProps } from './types';\n\nasync function loader(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: ProductPageProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<ProductPageProps> {\n const data = await productLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as ProductPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: ProductPageProps): HeadDescriptor {\n if (!data?.product) {\n return {\n title: 'Products',\n description: 'Browse our products',\n };\n }\n const product = data.product;\n const storeName = ctx.settings?.store?.name ?? '';\n\n // Strip HTML and limit description to 160 chars\n const description = product.description?.replace(/<[^>]*>/g, '').slice(0, 160) ?? '';\n\n // Price valid until: 1 month from now\n const priceValidUntil = new Date();\n priceValidUntil.setMonth(priceValidUntil.getMonth() + 1);\n\n // Collect all product images\n const images = product.images?.map((img) => img.url).filter(Boolean) ?? [];\n if (product.image?.url && !images.includes(product.image.url)) {\n images.unshift(product.image.url);\n }\n\n // Build JSON-LD schema matching SchemaProductWidget.php\n const jsonLd: Record<string, unknown> = {\n '@context': 'https://schema.org',\n '@type': 'Product',\n name: product.name,\n description,\n sku: product.sku,\n image: images.length > 0 ? images : undefined,\n offers: {\n '@type': 'Offer',\n url: product.url,\n availability: product.is_available\n ? 'https://schema.org/InStock'\n : 'https://schema.org/OutOfStock',\n price: product.sale_price,\n priceCurrency: product.currency,\n priceValidUntil: priceValidUntil.toISOString().split('T')[0],\n seller: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n },\n };\n\n // Add brand if exists\n if (product.brand) {\n jsonLd.brand = {\n '@type': 'Brand',\n name: product.brand.name,\n description: product.brand.description,\n logo: product.brand.logo,\n };\n }\n\n // Add aggregateRating and review if rating exists\n if (product.rating && product.rating.count > 0) {\n const ratingValue = product.rating.stars;\n jsonLd.aggregateRating = {\n '@type': 'AggregateRating',\n ratingCount: product.rating.count,\n ratingValue,\n };\n jsonLd.review = {\n '@type': 'Review',\n author: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n reviewRating: {\n '@type': 'Rating',\n bestRating: 5,\n ratingValue,\n },\n };\n }\n\n if (product.gtin && product.gtin.length === 8) {\n jsonLd.gtin8 = product.gtin;\n }\n\n if (product.mpn) {\n jsonLd.mpn = product.mpn;\n }\n\n // Twig: \"<product> | <store name>\", without the store meta title.\n const title = storeName ? `${product.name} | ${storeName}` : product.name;\n const base: HeadDescriptor = {\n title,\n appendStoreTitle: false,\n description,\n canonical: product.url,\n openGraph: {\n type: 'product',\n title,\n description,\n images: product.image?.url,\n url: product.url,\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description,\n images: product.image?.url,\n },\n jsonLd,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n // Quick-buy widget code, eager only here: the Buy Now button is above the fold on this page.\n // Other routes load it on idle from the body:end default hook, which also owns the\n // `#fast-checkout-js` marker `salla-add-product-button` checks for.\n scripts: ctx.settings?.store?.settings?.buy_now ? [fastCheckoutScript()] : [],\n };\n\n return base;\n}\n\nexport const Product = {\n id: RouteId.PRODUCT_SINGLE,\n loader,\n head,\n Component: ProductPage,\n} as const;\n"]}
@@ -18,7 +18,7 @@ async function testimonialsLoader(_ctx) {
18
18
 
19
19
  // src/routes/testimonials/index.tsx
20
20
  var LazyTestimonialsPage = lazy(
21
- () => import('../TestimonialsPage-QENPQ2JK.js').then((m) => ({ default: m.TestimonialsPage }))
21
+ () => import('../TestimonialsPage-JTUWHKPU.js').then((m) => ({ default: m.TestimonialsPage }))
22
22
  );
23
23
  var TestimonialsPage = LazyTestimonialsPage;
24
24
  async function loader(ctx, extend) {
@@ -1,8 +1,8 @@
1
- import { order } from '../chunk-MSUGP566.js';
1
+ import { order } from '../chunk-UAY6LTWB.js';
2
2
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
3
3
  import '../chunk-SDIQHTDG.js';
4
4
  import { RouteId } from '../chunk-ZGHRSRDO.js';
5
- import '../chunk-VX2T7JCB.js';
5
+ import '../chunk-EXBH6RGD.js';
6
6
  import '../chunk-QVJDYSCT.js';
7
7
  import '../chunk-LPQFTXBB.js';
8
8
  import { getTwilightContext } from '../chunk-N2S25NXP.js';
@@ -39,7 +39,7 @@ async function thankYouLoader({
39
39
 
40
40
  // src/routes/thank-you/index.tsx
41
41
  var LazyThankYouPage = lazy(
42
- () => import('../ThankYouPage-GB6M5I4Z.js').then((m) => ({ default: m.ThankYouPage }))
42
+ () => import('../ThankYouPage-MCMBGHO2.js').then((m) => ({ default: m.ThankYouPage }))
43
43
  );
44
44
  var ThankYouPage = LazyThankYouPage;
45
45
  async function loader(ctx, extend) {
package/dist/skeleton.js CHANGED
@@ -1,26 +1,26 @@
1
1
  export { BlogSkeleton, BreadcrumbSkeleton, CartSkeleton, CustomerLayoutSkeleton, CustomerPageSkeleton, PageSkeleton, ProductCardSkeleton, ProductDetailSkeleton, ProductGridSkeleton, SkeletonPulse } from './chunk-N7CCSGZF.js';
2
- export { HomeSkeleton } from './chunk-R2BAI6QI.js';
2
+ export { HomeSkeleton } from './chunk-KOMV5SEF.js';
3
3
  import './chunk-TZ3E5BN4.js';
4
- import './chunk-2JL4S2LE.js';
5
- import './chunk-5HOD4BKK.js';
6
- import './chunk-H2DXJCJP.js';
7
- import './chunk-GVJHDJW7.js';
4
+ import './chunk-U53LIN2F.js';
5
+ import './chunk-3CYIB6BL.js';
6
+ import './chunk-VFYT2VWC.js';
7
+ import './chunk-54XX3YPP.js';
8
8
  import './chunk-342EPVXN.js';
9
- import './chunk-BQURS54V.js';
10
- import './chunk-ILMX45PO.js';
9
+ import './chunk-CMD3ARR2.js';
10
+ import './chunk-L2QUP6J3.js';
11
11
  import './chunk-JKIRRMBU.js';
12
12
  import './chunk-2JV6WZ6O.js';
13
- import './chunk-A32NANNC.js';
13
+ import './chunk-OYP5CGHU.js';
14
14
  import './chunk-VVZNW5CB.js';
15
15
  import './chunk-HBTIZWT2.js';
16
16
  import './chunk-SDIQHTDG.js';
17
17
  import './chunk-ZGHRSRDO.js';
18
18
  import './chunk-DIVEHHMD.js';
19
- import './chunk-C5X6CVXC.js';
20
- import './chunk-VYJDRAWX.js';
21
- import './chunk-FGROIU3Y.js';
22
- import './chunk-VX2T7JCB.js';
23
- import './chunk-TP3LCGE7.js';
19
+ import './chunk-HI5V5X3S.js';
20
+ import './chunk-3EE62REP.js';
21
+ import './chunk-L5K7VBOH.js';
22
+ import './chunk-EXBH6RGD.js';
23
+ import './chunk-MVT5AF2A.js';
24
24
  import './chunk-Z653O7MX.js';
25
25
  import './chunk-ZCH7W7DZ.js';
26
26
  import './chunk-OGVUFMLX.js';
@@ -28,20 +28,20 @@ import './chunk-JWXJPJBO.js';
28
28
  import './chunk-CW625T2E.js';
29
29
  import './chunk-7V36I5GT.js';
30
30
  import './chunk-BVSJPBJ6.js';
31
- import './chunk-GBWCXUPD.js';
31
+ import './chunk-RSVAPXXI.js';
32
32
  import './chunk-OAMIDZKW.js';
33
33
  import './chunk-TYNZ5B2B.js';
34
- import './chunk-RJPPO3ET.js';
35
- import './chunk-Q7VWURUR.js';
36
- import './chunk-GU2KUQVD.js';
37
- import './chunk-5O6PTKI5.js';
34
+ import './chunk-V2ZDTY6H.js';
35
+ import './chunk-5XDPAKF5.js';
36
+ import './chunk-GCPEMNSU.js';
37
+ import './chunk-IXUY5RMV.js';
38
38
  import './chunk-AXW67SY7.js';
39
- import './chunk-BYMOPN2S.js';
40
39
  import './chunk-SKLEJJ6M.js';
40
+ import './chunk-BYMOPN2S.js';
41
41
  import './chunk-6BZ5TKEV.js';
42
42
  import './chunk-FZKRSGLP.js';
43
- import './chunk-CUG6VOLM.js';
44
- import './chunk-HX3YKS5W.js';
43
+ import './chunk-7V5HOZW4.js';
44
+ import './chunk-YA6ABQB7.js';
45
45
  import './chunk-MISI3T6V.js';
46
46
  import './chunk-3IHFA2X5.js';
47
47
  import './chunk-QVJDYSCT.js';
package/dist/tanstack.js CHANGED
@@ -1,20 +1,20 @@
1
- import { rootHead } from './chunk-IXG6BF2M.js';
2
- export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-IXG6BF2M.js';
1
+ import { rootHead } from './chunk-3YAR2SXQ.js';
2
+ export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-3YAR2SXQ.js';
3
3
  import { requestHostOf } from './chunk-J427UFSZ.js';
4
4
  export { TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter } from './chunk-J427UFSZ.js';
5
5
  import './chunk-Z4Y55HWX.js';
6
6
  export { tanstackHeadAdapter as head, withHead } from './chunk-BE3JDKE2.js';
7
7
  import './chunk-5ZR2HKZ7.js';
8
8
  import './chunk-GD26FI4J.js';
9
- import './chunk-4YHSQSM6.js';
10
- import './chunk-7BGEGHAI.js';
9
+ import './chunk-YKFGUVF7.js';
10
+ import './chunk-XVNXXF67.js';
11
11
  import './chunk-TZ3E5BN4.js';
12
- import './chunk-H2DXJCJP.js';
13
- import './chunk-A32NANNC.js';
12
+ import './chunk-VFYT2VWC.js';
13
+ import './chunk-OYP5CGHU.js';
14
14
  import './chunk-HBTIZWT2.js';
15
15
  import './chunk-SDIQHTDG.js';
16
16
  import './chunk-ZGHRSRDO.js';
17
- import './chunk-VX2T7JCB.js';
17
+ import './chunk-EXBH6RGD.js';
18
18
  import './chunk-JWXJPJBO.js';
19
19
  export { mergeDocumentDescriptors as mergeAttrs } from './chunk-CW625T2E.js';
20
20
  import './chunk-TYNZ5B2B.js';
@@ -35,7 +35,67 @@ export declare enum HookName {
35
35
  SEARCH_END = "search:end",
36
36
  HOMEPAGE_SLIDER = "homepage:slider",
37
37
  HOMEPAGE_BANNERS = "homepage:banners",
38
- HOMEPAGE_FEATURED = "homepage:featured"
38
+ HOMEPAGE_FEATURED = "homepage:featured",
39
+ HEAD = "head",
40
+ COPYRIGHT = "copyright",
41
+ HOME_START = "home:start",
42
+ HOME_CONTENT = "home:content",
43
+ HOME_END = "home:end",
44
+ NOTFOUND_START = "notfound:start",
45
+ NOTFOUND_CONTENT = "notfound:content",
46
+ NOTFOUND_END = "notfound:end",
47
+ PRODUCT_START = "product:start",
48
+ PRODUCT_DETAILS_START = "product:details.start",
49
+ PRODUCT_DETAILS_END = "product:details.end",
50
+ PRODUCT_RELATED_START = "product:related.start",
51
+ PRODUCT_RELATED_END = "product:related.end",
52
+ PRODUCT_END = "product:end",
53
+ PRODUCT_LIST_START = "product:list.start",
54
+ PRODUCT_LIST_ITEMS_START = "product:list.items.start",
55
+ PRODUCT_LIST_ITEMS_END = "product:list.items.end",
56
+ PRODUCT_LIST_END = "product:list.end",
57
+ CART_START = "cart:start",
58
+ CART_END = "cart:end",
59
+ CART_SUBMIT_START = "cart:submit.start",
60
+ CART_SUBMIT_END = "cart:submit.end",
61
+ THANK_YOU_START = "thank-you:start",
62
+ THANK_YOU_ITEMS_START = "thank-you:items.start",
63
+ THANK_YOU_ITEMS_END = "thank-you:items.end",
64
+ THANK_YOU_END = "thank-you:end",
65
+ BRANDS_INDEX_ITEMS_START = "brands:index.items.start",
66
+ BRANDS_INDEX_ITEMS_END = "brands:index.items.end",
67
+ BLOG_START = "blog:start",
68
+ BLOG_ITEMS_START = "blog:items.start",
69
+ BLOG_ITEMS_END = "blog:items.end",
70
+ BLOG_END = "blog:end",
71
+ BLOG_SINGLE_START = "blog:single.start",
72
+ BLOG_SINGLE_END = "blog:single.end",
73
+ BLOG_SINGLE_RELATED_START = "blog:single.related.start",
74
+ BLOG_SINGLE_RELATED_END = "blog:single.related.end",
75
+ BLOG_CATEGORY_START = "blog:category.start",
76
+ BLOG_CATEGORY_END = "blog:category.end",
77
+ BLOG_TAG_START = "blog:tag.start",
78
+ BLOG_TAG_END = "blog:tag.end",
79
+ BLOG_AUTHOR_START = "blog:author.start",
80
+ BLOG_AUTHOR_END = "blog:author.end",
81
+ CUSTOMER_PROFILE_START = "customer:profile.start",
82
+ CUSTOMER_PROFILE_FORM_START = "customer:profile.form.start",
83
+ CUSTOMER_PROFILE_FORM_END = "customer:profile.form.end",
84
+ CUSTOMER_PROFILE_END = "customer:profile.end",
85
+ CUSTOMER_SETTINGS_START = "customer:settings.start",
86
+ CUSTOMER_SETTINGS_END = "customer:settings.end",
87
+ CUSTOMER_ORDERS_ITEMS_START = "customer:orders.index.items.start",
88
+ CUSTOMER_ORDERS_ITEMS_END = "customer:orders.index.items.end",
89
+ CUSTOMER_ORDER_DETAILS_START = "customer:orders.single.details.start",
90
+ CUSTOMER_ORDER_DETAILS_END = "customer:orders.single.details.end",
91
+ CUSTOMER_WALLET_TRANSACTIONS_START = "customer:wallet.transactions.start",
92
+ CUSTOMER_WALLET_TRANSACTIONS_END = "customer:wallet.transactions.end",
93
+ CUSTOMER_WISHLIST_ITEMS_START = "customer:wishlist.items.start",
94
+ CUSTOMER_WISHLIST_ITEMS_END = "customer:wishlist.items.end",
95
+ CUSTOMER_NOTIFICATIONS_ITEMS_START = "customer:notifications.items.start",
96
+ CUSTOMER_NOTIFICATIONS_ITEMS_END = "customer:notifications.items.end",
97
+ LOYALTY_START = "loyalty:start",
98
+ LOYALTY_END = "loyalty:end"
39
99
  }
40
100
  /**
41
101
  * Hook handler function type.
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;;;;;;GASG;AACH,oBAAY,QAAQ;IAElB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,UAAU,eAAe;IAEzB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,UAAU,eAAe;IAEzB,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IAEzB,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IAEzB,yBAAyB,qCAAqC;IAC9D,mBAAmB,+BAA+B;IAClD,uBAAuB,mCAAmC;IAC1D,kBAAkB,8BAA8B;IAChD,gBAAgB,4BAA4B;IAE5C,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,kBAAkB,uBAAuB;IACzC,gBAAgB,qBAAqB;IAErC,YAAY,iBAAiB;IAC7B,kBAAkB,uBAAuB;IACzC,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IAEzB,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;CACxC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,SAAS,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAC/B,MAAM,EACJ,WAAW,GACX,KAAK,CAAC;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC,CACL,CAAC"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { HookName } from '../chunk-TP3LCGE7.js';
1
+ export { HookName } from '../chunk-MVT5AF2A.js';
2
2
  import '../chunk-DGUM43GV.js';
3
3
  //# sourceMappingURL=hooks.js.map
4
4
  //# sourceMappingURL=hooks.js.map