@salla.sa/twilight-theme-engine 1.0.127 → 1.0.128

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 (273) hide show
  1. package/dist/{AddToCartForm-MI3LYWTN.js → AddToCartForm-NBU3MIEW.js} +3 -3
  2. package/dist/{AddToCartForm-MI3LYWTN.js.map → AddToCartForm-NBU3MIEW.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-FZCRDJG4.js → BlogAuthorPage-4HGFVIG2.js} +17 -16
  4. package/dist/BlogAuthorPage-4HGFVIG2.js.map +1 -0
  5. package/dist/{BlogCategoryPage-3MNT7FKX.js → BlogCategoryPage-67TZRH3C.js} +17 -16
  6. package/dist/BlogCategoryPage-67TZRH3C.js.map +1 -0
  7. package/dist/{BlogPage-Y6HQ54J5.js → BlogPage-HINCPIQO.js} +15 -14
  8. package/dist/BlogPage-HINCPIQO.js.map +1 -0
  9. package/dist/{BlogSinglePage-SSUQCQSM.js → BlogSinglePage-4BWHLJU6.js} +15 -14
  10. package/dist/BlogSinglePage-4BWHLJU6.js.map +1 -0
  11. package/dist/{BlogTagPage-5SCDXWE5.js → BlogTagPage-BGPLVWGM.js} +17 -16
  12. package/dist/BlogTagPage-BGPLVWGM.js.map +1 -0
  13. package/dist/{BrandsPage-Y5CV5RNB.js → BrandsPage-2NC3RCZK.js} +16 -15
  14. package/dist/BrandsPage-2NC3RCZK.js.map +1 -0
  15. package/dist/{Breadcrumb-53VLXZFZ.js → Breadcrumb-CCYDVGCS.js} +15 -14
  16. package/dist/Breadcrumb-CCYDVGCS.js.map +1 -0
  17. package/dist/{CartItem-K2AHMOS6.js → CartItem-M5PC54CM.js} +15 -14
  18. package/dist/CartItem-M5PC54CM.js.map +1 -0
  19. package/dist/{CartSummary-DOSO6RAS.js → CartSummary-YQI7XI4D.js} +15 -14
  20. package/dist/CartSummary-YQI7XI4D.js.map +1 -0
  21. package/dist/{Copyright-WL6JD4RZ.js → Copyright-67E3ANPE.js} +3 -3
  22. package/dist/{Copyright-WL6JD4RZ.js.map → Copyright-67E3ANPE.js.map} +1 -1
  23. package/dist/{CustomerLayout-XEOHI3NS.js → CustomerLayout-HPLKOG7R.js} +15 -14
  24. package/dist/CustomerLayout-HPLKOG7R.js.map +1 -0
  25. package/dist/{Footer-45LYY3FP.js → Footer-56IXUTHF.js} +4 -4
  26. package/dist/{Footer-45LYY3FP.js.map → Footer-56IXUTHF.js.map} +1 -1
  27. package/dist/{Header-E5TPGXAI.js → Header-67Q5OA63.js} +9 -8
  28. package/dist/{Header-E5TPGXAI.js.map → Header-67Q5OA63.js.map} +1 -1
  29. package/dist/{LoyaltyPage-JLKMN3BB.js → LoyaltyPage-GC7B5FXF.js} +15 -14
  30. package/dist/LoyaltyPage-GC7B5FXF.js.map +1 -0
  31. package/dist/{LoyaltyPointsPage-WDBRZ5G2.js → LoyaltyPointsPage-UAZQ2GZT.js} +7 -6
  32. package/dist/LoyaltyPointsPage-UAZQ2GZT.js.map +1 -0
  33. package/dist/{MainMenu-S3HCLO2Q.js → MainMenu-7SXJ2DU4.js} +6 -5
  34. package/dist/MainMenu-7SXJ2DU4.js.map +1 -0
  35. package/dist/{MasterLayout-ZK2UAUUE.js → MasterLayout-53MYQBTT.js} +15 -14
  36. package/dist/{MasterLayout-ZK2UAUUE.js.map → MasterLayout-53MYQBTT.js.map} +1 -1
  37. package/dist/{MobileMenu-Y2WCTG3E.js → MobileMenu-U6W2XQYI.js} +16 -15
  38. package/dist/MobileMenu-U6W2XQYI.js.map +1 -0
  39. package/dist/{NotificationsPage-YCY4362K.js → NotificationsPage-2WFW7GCV.js} +15 -14
  40. package/dist/NotificationsPage-2WFW7GCV.js.map +1 -0
  41. package/dist/{OrderSinglePage-R25RSCHV.js → OrderSinglePage-VN3IBWOO.js} +16 -15
  42. package/dist/OrderSinglePage-VN3IBWOO.js.map +1 -0
  43. package/dist/{OrdersPage-OQ52P44T.js → OrdersPage-NOUGRTHI.js} +15 -14
  44. package/dist/OrdersPage-NOUGRTHI.js.map +1 -0
  45. package/dist/{PageSingle-GEKAYAL3.js → PageSingle-MP5THOR4.js} +3 -3
  46. package/dist/{PageSingle-GEKAYAL3.js.map → PageSingle-MP5THOR4.js.map} +1 -1
  47. package/dist/{ProductDetails-XIXP4N3Q.js → ProductDetails-GONQFVV2.js} +5 -4
  48. package/dist/ProductDetails-GONQFVV2.js.map +1 -0
  49. package/dist/{ProfilePage-SDYRTC4U.js → ProfilePage-RHK3OHFF.js} +15 -14
  50. package/dist/ProfilePage-RHK3OHFF.js.map +1 -0
  51. package/dist/{ReviewsPage-MB3LT72X.js → ReviewsPage-3PODTNEP.js} +3 -3
  52. package/dist/{ReviewsPage-MB3LT72X.js.map → ReviewsPage-3PODTNEP.js.map} +1 -1
  53. package/dist/{SeoCartWidget-PPG6MXQP.js → SeoCartWidget-MHOPTGWV.js} +15 -14
  54. package/dist/SeoCartWidget-MHOPTGWV.js.map +1 -0
  55. package/dist/{SettingsPage-OZPPRWYE.js → SettingsPage-RLNSTOCG.js} +15 -14
  56. package/dist/SettingsPage-RLNSTOCG.js.map +1 -0
  57. package/dist/{StoreClosedNotification-MF76UXK2.js → StoreClosedNotification-AUQCK2MP.js} +16 -15
  58. package/dist/{StoreClosedNotification-MF76UXK2.js.map → StoreClosedNotification-AUQCK2MP.js.map} +1 -1
  59. package/dist/{TestimonialsPage-WOKGIVHR.js → TestimonialsPage-GXKXWGDA.js} +3 -3
  60. package/dist/{TestimonialsPage-WOKGIVHR.js.map → TestimonialsPage-GXKXWGDA.js.map} +1 -1
  61. package/dist/{ThankYouPage-LTQLSISC.js → ThankYouPage-GILEXBPL.js} +15 -14
  62. package/dist/ThankYouPage-GILEXBPL.js.map +1 -0
  63. package/dist/{WalletPage-ATQ4JN2D.js → WalletPage-4OOHX65H.js} +16 -15
  64. package/dist/WalletPage-4OOHX65H.js.map +1 -0
  65. package/dist/{WishlistPage-XB7JH2ED.js → WishlistPage-Z2TPPFFM.js} +17 -16
  66. package/dist/WishlistPage-Z2TPPFFM.js.map +1 -0
  67. package/dist/api/advertisement.js +3 -2
  68. package/dist/api/apps.js +3 -2
  69. package/dist/api/blog.js +4 -3
  70. package/dist/api/brands.js +4 -3
  71. package/dist/api/cart.js +4 -3
  72. package/dist/api/category.js +4 -3
  73. package/dist/api/client.d.ts.map +1 -1
  74. package/dist/api/client.js +2 -1
  75. package/dist/api/dev-settings-cache.d.ts +50 -0
  76. package/dist/api/dev-settings-cache.d.ts.map +1 -0
  77. package/dist/api/home.js +3 -2
  78. package/dist/api/loyalty.js +4 -3
  79. package/dist/api/menu.js +3 -2
  80. package/dist/api/notification.js +3 -2
  81. package/dist/api/order.js +4 -3
  82. package/dist/api/page.js +4 -3
  83. package/dist/api/product.js +4 -3
  84. package/dist/api/profile.js +2 -1
  85. package/dist/api/profile.js.map +1 -1
  86. package/dist/api/store.d.ts +6 -0
  87. package/dist/api/store.d.ts.map +1 -1
  88. package/dist/api/store.js +3 -2
  89. package/dist/api/translations.js +3 -2
  90. package/dist/api/user.js +3 -2
  91. package/dist/api/wallet.js +3 -2
  92. package/dist/api/wishlist.js +5 -4
  93. package/dist/{chunk-IPCRRC52.js → chunk-2VRMQZXF.js} +3 -3
  94. package/dist/{chunk-IPCRRC52.js.map → chunk-2VRMQZXF.js.map} +1 -1
  95. package/dist/{chunk-FYV4PARO.js → chunk-3FMJHVRY.js} +4 -4
  96. package/dist/{chunk-FYV4PARO.js.map → chunk-3FMJHVRY.js.map} +1 -1
  97. package/dist/{chunk-OXAL75FV.js → chunk-3OGFV27B.js} +3 -3
  98. package/dist/{chunk-OXAL75FV.js.map → chunk-3OGFV27B.js.map} +1 -1
  99. package/dist/{chunk-6IF6FMA7.js → chunk-3U6BZUQL.js} +7 -7
  100. package/dist/{chunk-6IF6FMA7.js.map → chunk-3U6BZUQL.js.map} +1 -1
  101. package/dist/{chunk-7IZE6VU3.js → chunk-4LR7N76Q.js} +52 -14
  102. package/dist/chunk-4LR7N76Q.js.map +1 -0
  103. package/dist/{chunk-X7L5YGO2.js → chunk-5GCOUJ7T.js} +3 -3
  104. package/dist/{chunk-X7L5YGO2.js.map → chunk-5GCOUJ7T.js.map} +1 -1
  105. package/dist/{chunk-WI5TKPQ4.js → chunk-5U7LPEFE.js} +3 -3
  106. package/dist/{chunk-WI5TKPQ4.js.map → chunk-5U7LPEFE.js.map} +1 -1
  107. package/dist/{chunk-DT2NKG5P.js → chunk-6GDNC6DS.js} +3 -3
  108. package/dist/{chunk-DT2NKG5P.js.map → chunk-6GDNC6DS.js.map} +1 -1
  109. package/dist/{chunk-I3ZVH373.js → chunk-6NT6RC2H.js} +3 -3
  110. package/dist/{chunk-I3ZVH373.js.map → chunk-6NT6RC2H.js.map} +1 -1
  111. package/dist/{chunk-EPNBAKBR.js → chunk-7SBSV5DD.js} +3 -3
  112. package/dist/{chunk-EPNBAKBR.js.map → chunk-7SBSV5DD.js.map} +1 -1
  113. package/dist/{chunk-KND3TI4S.js → chunk-CGABIBZZ.js} +4 -4
  114. package/dist/{chunk-KND3TI4S.js.map → chunk-CGABIBZZ.js.map} +1 -1
  115. package/dist/{chunk-KJRT3CBH.js → chunk-CN4U4EWY.js} +4 -4
  116. package/dist/{chunk-KJRT3CBH.js.map → chunk-CN4U4EWY.js.map} +1 -1
  117. package/dist/{chunk-D3TFA7SR.js → chunk-DI463VGL.js} +3 -3
  118. package/dist/{chunk-D3TFA7SR.js.map → chunk-DI463VGL.js.map} +1 -1
  119. package/dist/{chunk-7URF2BWQ.js → chunk-DJN6JAF7.js} +5 -5
  120. package/dist/{chunk-7URF2BWQ.js.map → chunk-DJN6JAF7.js.map} +1 -1
  121. package/dist/{chunk-GD36BKKQ.js → chunk-EXK6VVXU.js} +4 -4
  122. package/dist/{chunk-GD36BKKQ.js.map → chunk-EXK6VVXU.js.map} +1 -1
  123. package/dist/{chunk-RU2BHYVZ.js → chunk-EZK2WD75.js} +4 -4
  124. package/dist/{chunk-RU2BHYVZ.js.map → chunk-EZK2WD75.js.map} +1 -1
  125. package/dist/{chunk-EDPKD55D.js → chunk-FWGHTOGZ.js} +7 -7
  126. package/dist/{chunk-EDPKD55D.js.map → chunk-FWGHTOGZ.js.map} +1 -1
  127. package/dist/{chunk-7VLVD3KJ.js → chunk-GFOAMXSO.js} +3 -3
  128. package/dist/{chunk-7VLVD3KJ.js.map → chunk-GFOAMXSO.js.map} +1 -1
  129. package/dist/{chunk-VX7JWTKV.js → chunk-GN5V4IQI.js} +4 -4
  130. package/dist/{chunk-VX7JWTKV.js.map → chunk-GN5V4IQI.js.map} +1 -1
  131. package/dist/{chunk-MZJV5G7V.js → chunk-HAS46CRI.js} +8 -5
  132. package/dist/chunk-HAS46CRI.js.map +1 -0
  133. package/dist/{chunk-CZT6A2MT.js → chunk-HRDCUTC6.js} +6 -6
  134. package/dist/{chunk-CZT6A2MT.js.map → chunk-HRDCUTC6.js.map} +1 -1
  135. package/dist/{chunk-OMCSTKOT.js → chunk-HZIQK63A.js} +3 -3
  136. package/dist/{chunk-OMCSTKOT.js.map → chunk-HZIQK63A.js.map} +1 -1
  137. package/dist/{chunk-5D44YQLO.js → chunk-JAP5KTIG.js} +4 -4
  138. package/dist/{chunk-5D44YQLO.js.map → chunk-JAP5KTIG.js.map} +1 -1
  139. package/dist/{chunk-63STL623.js → chunk-JUKKXGHR.js} +3 -3
  140. package/dist/{chunk-63STL623.js.map → chunk-JUKKXGHR.js.map} +1 -1
  141. package/dist/{chunk-CIXTBWFO.js → chunk-KNTHVSUL.js} +6 -6
  142. package/dist/{chunk-CIXTBWFO.js.map → chunk-KNTHVSUL.js.map} +1 -1
  143. package/dist/{chunk-3GXYPPZX.js → chunk-L36ZEKBI.js} +4 -4
  144. package/dist/{chunk-3GXYPPZX.js.map → chunk-L36ZEKBI.js.map} +1 -1
  145. package/dist/chunk-L4FKJ3ZN.js +14 -0
  146. package/dist/{chunk-VLQLXIGR.js.map → chunk-L4FKJ3ZN.js.map} +1 -1
  147. package/dist/{chunk-5G6KOIVY.js → chunk-LIQHWHYV.js} +10 -10
  148. package/dist/{chunk-5G6KOIVY.js.map → chunk-LIQHWHYV.js.map} +1 -1
  149. package/dist/{chunk-Q7MT5MVO.js → chunk-M6Z7KIDX.js} +3 -3
  150. package/dist/{chunk-Q7MT5MVO.js.map → chunk-M6Z7KIDX.js.map} +1 -1
  151. package/dist/{chunk-KZY3KW3P.js → chunk-O3BZBI27.js} +3 -3
  152. package/dist/{chunk-KZY3KW3P.js.map → chunk-O3BZBI27.js.map} +1 -1
  153. package/dist/{chunk-4OERTLJP.js → chunk-OOQTZ7N7.js} +3 -3
  154. package/dist/{chunk-4OERTLJP.js.map → chunk-OOQTZ7N7.js.map} +1 -1
  155. package/dist/{chunk-PBRCB2N3.js → chunk-QLFRNPPF.js} +15 -14
  156. package/dist/chunk-QLFRNPPF.js.map +1 -0
  157. package/dist/{chunk-GVF73TKV.js → chunk-RA5O7L7Q.js} +4 -4
  158. package/dist/{chunk-GVF73TKV.js.map → chunk-RA5O7L7Q.js.map} +1 -1
  159. package/dist/{chunk-7TIGGDM4.js → chunk-S7QZUBXM.js} +112 -6
  160. package/dist/chunk-S7QZUBXM.js.map +1 -0
  161. package/dist/{chunk-PFZLY3IT.js → chunk-U2UDXLAE.js} +3 -3
  162. package/dist/{chunk-PFZLY3IT.js.map → chunk-U2UDXLAE.js.map} +1 -1
  163. package/dist/{chunk-65MGNUMD.js → chunk-UGJ24VNF.js} +4 -4
  164. package/dist/{chunk-65MGNUMD.js.map → chunk-UGJ24VNF.js.map} +1 -1
  165. package/dist/{chunk-FQB6MTGD.js → chunk-UWE2QL3O.js} +3 -3
  166. package/dist/{chunk-FQB6MTGD.js.map → chunk-UWE2QL3O.js.map} +1 -1
  167. package/dist/{chunk-EYOCBD5I.js → chunk-XCS62X6X.js} +7 -7
  168. package/dist/{chunk-EYOCBD5I.js.map → chunk-XCS62X6X.js.map} +1 -1
  169. package/dist/chunk-Z5M4YYWT.js +9 -0
  170. package/dist/chunk-Z5M4YYWT.js.map +1 -0
  171. package/dist/{chunk-UZB2RUW7.js → chunk-ZWV6YNIB.js} +4 -4
  172. package/dist/{chunk-UZB2RUW7.js.map → chunk-ZWV6YNIB.js.map} +1 -1
  173. package/dist/components/cart/index.js +1 -1
  174. package/dist/components/common/index.js +1 -1
  175. package/dist/components/drawer/index.js +13 -12
  176. package/dist/components/home/index.js +17 -16
  177. package/dist/components/layout/index.js +5 -4
  178. package/dist/components/product/index.js +14 -13
  179. package/dist/components/store/index.js +14 -13
  180. package/dist/dev/dev-settings-store.d.ts +20 -0
  181. package/dist/dev/dev-settings-store.d.ts.map +1 -1
  182. package/dist/dev/editor/ThemeEditor.d.ts.map +1 -1
  183. package/dist/dev/editor/i18n.d.ts +3 -0
  184. package/dist/dev/editor/i18n.d.ts.map +1 -1
  185. package/dist/dev/editor/index.js +64 -4
  186. package/dist/dev/editor/index.js.map +1 -1
  187. package/dist/dev/editor/relative-time.d.ts +8 -0
  188. package/dist/dev/editor/relative-time.d.ts.map +1 -0
  189. package/dist/dev/editor/styles.d.ts +1 -1
  190. package/dist/dev/editor/styles.d.ts.map +1 -1
  191. package/dist/dev/index.js +1 -1
  192. package/dist/{document-class-EEQ55ETI.js → document-class-DSRV5LZK.js} +12 -11
  193. package/dist/{document-class-EEQ55ETI.js.map → document-class-DSRV5LZK.js.map} +1 -1
  194. package/dist/hooks/index.js +13 -12
  195. package/dist/hooks/useGtm.js +13 -12
  196. package/dist/hooks/useMoney.js +13 -12
  197. package/dist/hooks/useStore.js +13 -12
  198. package/dist/hooks/useUser.js +4 -3
  199. package/dist/index.js +13 -12
  200. package/dist/index.js.map +1 -1
  201. package/dist/{navigation-XUR73NNS.js → navigation-ATD4DRST.js} +5 -4
  202. package/dist/navigation-ATD4DRST.js.map +1 -0
  203. package/dist/{navigation-IH6C5RKD.js → navigation-XCZMJSNS.js} +6 -5
  204. package/dist/{navigation-IH6C5RKD.js.map → navigation-XCZMJSNS.js.map} +1 -1
  205. package/dist/{not-found-2Y2JGOFF.js → not-found-ZE4Y7RLW.js} +16 -15
  206. package/dist/not-found-ZE4Y7RLW.js.map +1 -0
  207. package/dist/providers/index.js +13 -12
  208. package/dist/providers/twilight-init.d.ts.map +1 -1
  209. package/dist/routes/account/orders.js +5 -4
  210. package/dist/routes/account.js +14 -13
  211. package/dist/routes/account.js.map +1 -1
  212. package/dist/routes/blog.js +9 -8
  213. package/dist/routes/blog.js.map +1 -1
  214. package/dist/routes/brands.js +5 -4
  215. package/dist/routes/brands.js.map +1 -1
  216. package/dist/routes/cart.js +21 -20
  217. package/dist/routes/cart.js.map +1 -1
  218. package/dist/routes/home.js +18 -17
  219. package/dist/routes/index.js +4 -3
  220. package/dist/routes/loyalty.js +6 -5
  221. package/dist/routes/loyalty.js.map +1 -1
  222. package/dist/routes/page.js +5 -4
  223. package/dist/routes/page.js.map +1 -1
  224. package/dist/routes/product-listing.js +19 -18
  225. package/dist/routes/product-listing.js.map +1 -1
  226. package/dist/routes/product.js +17 -16
  227. package/dist/routes/product.js.map +1 -1
  228. package/dist/routes/seo-redirects.js +4 -3
  229. package/dist/routes/testimonials.js +2 -2
  230. package/dist/routes/thank-you.js +5 -4
  231. package/dist/routes/thank-you.js.map +1 -1
  232. package/dist/skeleton.js +18 -17
  233. package/dist/{store-lookup-7IWK42KE.js → store-lookup-TG6RV6NV.js} +9 -8
  234. package/dist/store-lookup-TG6RV6NV.js.map +1 -0
  235. package/dist/tanstack.js +12 -11
  236. package/dist/tanstack.js.map +1 -1
  237. package/dist/utils/dev-settings-refresh.d.ts +14 -0
  238. package/dist/utils/dev-settings-refresh.d.ts.map +1 -0
  239. package/dist/utils/index.js +3 -2
  240. package/dist/utils/index.js.map +1 -1
  241. package/package.json +1 -1
  242. package/dist/BlogAuthorPage-FZCRDJG4.js.map +0 -1
  243. package/dist/BlogCategoryPage-3MNT7FKX.js.map +0 -1
  244. package/dist/BlogPage-Y6HQ54J5.js.map +0 -1
  245. package/dist/BlogSinglePage-SSUQCQSM.js.map +0 -1
  246. package/dist/BlogTagPage-5SCDXWE5.js.map +0 -1
  247. package/dist/BrandsPage-Y5CV5RNB.js.map +0 -1
  248. package/dist/Breadcrumb-53VLXZFZ.js.map +0 -1
  249. package/dist/CartItem-K2AHMOS6.js.map +0 -1
  250. package/dist/CartSummary-DOSO6RAS.js.map +0 -1
  251. package/dist/CustomerLayout-XEOHI3NS.js.map +0 -1
  252. package/dist/LoyaltyPage-JLKMN3BB.js.map +0 -1
  253. package/dist/LoyaltyPointsPage-WDBRZ5G2.js.map +0 -1
  254. package/dist/MainMenu-S3HCLO2Q.js.map +0 -1
  255. package/dist/MobileMenu-Y2WCTG3E.js.map +0 -1
  256. package/dist/NotificationsPage-YCY4362K.js.map +0 -1
  257. package/dist/OrderSinglePage-R25RSCHV.js.map +0 -1
  258. package/dist/OrdersPage-OQ52P44T.js.map +0 -1
  259. package/dist/ProductDetails-XIXP4N3Q.js.map +0 -1
  260. package/dist/ProfilePage-SDYRTC4U.js.map +0 -1
  261. package/dist/SeoCartWidget-PPG6MXQP.js.map +0 -1
  262. package/dist/SettingsPage-OZPPRWYE.js.map +0 -1
  263. package/dist/ThankYouPage-LTQLSISC.js.map +0 -1
  264. package/dist/WalletPage-ATQ4JN2D.js.map +0 -1
  265. package/dist/WishlistPage-XB7JH2ED.js.map +0 -1
  266. package/dist/chunk-7IZE6VU3.js.map +0 -1
  267. package/dist/chunk-7TIGGDM4.js.map +0 -1
  268. package/dist/chunk-MZJV5G7V.js.map +0 -1
  269. package/dist/chunk-PBRCB2N3.js.map +0 -1
  270. package/dist/chunk-VLQLXIGR.js +0 -14
  271. package/dist/navigation-XUR73NNS.js.map +0 -1
  272. package/dist/not-found-2Y2JGOFF.js.map +0 -1
  273. package/dist/store-lookup-7IWK42KE.js.map +0 -1
@@ -1,22 +1,22 @@
1
- export { TwilightProvider, registerDocumentSync, routeDocumentSyncs } from '../chunk-PBRCB2N3.js';
1
+ export { TwilightProvider, registerDocumentSync, routeDocumentSyncs } from '../chunk-QLFRNPPF.js';
2
2
  import '../chunk-MVNWWZWQ.js';
3
- import '../chunk-EYOCBD5I.js';
4
- import '../chunk-WI5TKPQ4.js';
3
+ import '../chunk-XCS62X6X.js';
4
+ import '../chunk-5U7LPEFE.js';
5
5
  import '../chunk-KQEBYXYB.js';
6
6
  import '../chunk-JYV25VNZ.js';
7
- import '../chunk-7IZE6VU3.js';
7
+ import '../chunk-4LR7N76Q.js';
8
8
  import '../chunk-OXMUPNMH.js';
9
- import '../chunk-7VLVD3KJ.js';
9
+ import '../chunk-GFOAMXSO.js';
10
10
  import '../chunk-VVZNW5CB.js';
11
11
  import '../chunk-5FJFN3IW.js';
12
12
  import '../chunk-GD26FI4J.js';
13
13
  import '../chunk-OM2GRPDH.js';
14
- export { NavigationInterceptor, NavigationProvider, NotFoundError, RedirectError, UnauthorizedError, configureNavigation, notFound, orThrow, orUnauthorized, redirect, unauthorized, useIsBlog, useIsBrands, useIsCart, useIsCustomer, useIsHome, useIsProduct, useIsSearch, useLocation, useNavigate, useRouteId } from '../chunk-OMCSTKOT.js';
14
+ export { NavigationInterceptor, NavigationProvider, NotFoundError, RedirectError, UnauthorizedError, configureNavigation, notFound, orThrow, orUnauthorized, redirect, unauthorized, useIsBlog, useIsBrands, useIsCart, useIsCustomer, useIsHome, useIsProduct, useIsSearch, useLocation, useNavigate, useRouteId } from '../chunk-HZIQK63A.js';
15
15
  export { RouteId } from '../chunk-OUW6WESU.js';
16
16
  import '../chunk-BK5TBUGG.js';
17
17
  import '../chunk-HI5V5X3S.js';
18
- import '../chunk-PFZLY3IT.js';
19
- import '../chunk-I3ZVH373.js';
18
+ import '../chunk-U2UDXLAE.js';
19
+ import '../chunk-6NT6RC2H.js';
20
20
  import '../chunk-MVT5AF2A.js';
21
21
  import '../chunk-Z653O7MX.js';
22
22
  import '../chunk-ZCH7W7DZ.js';
@@ -27,15 +27,16 @@ import '../chunk-7V36I5GT.js';
27
27
  import '../chunk-6WI7R2BD.js';
28
28
  import '../chunk-JGVEGQHJ.js';
29
29
  import '../chunk-OAMIDZKW.js';
30
- import '../chunk-IPCRRC52.js';
30
+ import '../chunk-2VRMQZXF.js';
31
31
  import '../chunk-OQIIJRAS.js';
32
32
  import '../chunk-V2ZDTY6H.js';
33
- import '../chunk-X7L5YGO2.js';
33
+ import '../chunk-5GCOUJ7T.js';
34
34
  import '../chunk-5XDPAKF5.js';
35
35
  import '../chunk-GCPEMNSU.js';
36
- import '../chunk-7TIGGDM4.js';
36
+ import '../chunk-S7QZUBXM.js';
37
+ import '../chunk-Z5M4YYWT.js';
37
38
  import '../chunk-TYNZ5B2B.js';
38
- import '../chunk-63STL623.js';
39
+ import '../chunk-JUKKXGHR.js';
39
40
  import '../chunk-AXW67SY7.js';
40
41
  export { LinkProvider, LinkProviderError, createLinkWithAdapter, useLinkAdapter } from '../chunk-BYMOPN2S.js';
41
42
  import '../chunk-SKLEJJ6M.js';
@@ -1 +1 @@
1
- {"version":3,"file":"twilight-init.d.ts","sourceRoot":"","sources":["../../src/providers/twilight-init.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EAKpB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,oBAAoB,CAAC;AAIlE,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAI7C,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,sBAAsB,CAAC;AAsF9B,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAC;IACzD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;IACjB,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,SAAS,EAAE,KAAK,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAMD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,WAAW,EACX,OAAO,EACP,OAAO,EAAE,QAAQ,EACjB,aAAa,GACd,EAAE,sBAAsB,GAAG,qBAAqB,CA8JhD"}
1
+ {"version":3,"file":"twilight-init.d.ts","sourceRoot":"","sources":["../../src/providers/twilight-init.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EAKpB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,oBAAoB,CAAC;AAIlE,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAI7C,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,sBAAsB,CAAC;AAsF9B,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAC;IACzD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;IACjB,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,SAAS,EAAE,KAAK,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAMD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,WAAW,EACX,OAAO,EACP,OAAO,EAAE,QAAQ,EACjB,aAAa,GACd,EAAE,sBAAsB,GAAG,qBAAqB,CAgKhD"}
@@ -1,9 +1,10 @@
1
- export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../../chunk-EDPKD55D.js';
2
- import '../../chunk-3GXYPPZX.js';
1
+ export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../../chunk-FWGHTOGZ.js';
2
+ import '../../chunk-L36ZEKBI.js';
3
3
  import '../../chunk-OM2GRPDH.js';
4
- import '../../chunk-OMCSTKOT.js';
4
+ import '../../chunk-HZIQK63A.js';
5
5
  import '../../chunk-OUW6WESU.js';
6
- import '../../chunk-7TIGGDM4.js';
6
+ import '../../chunk-S7QZUBXM.js';
7
+ import '../../chunk-Z5M4YYWT.js';
7
8
  import '../../chunk-2TLIULJZ.js';
8
9
  import '../../chunk-GYXUYHKO.js';
9
10
  import '../../chunk-FHU2MXZA.js';
@@ -1,13 +1,14 @@
1
- import { wallet } from '../chunk-EPNBAKBR.js';
2
- export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../chunk-EDPKD55D.js';
3
- import '../chunk-3GXYPPZX.js';
4
- import { notification } from '../chunk-KZY3KW3P.js';
5
- import { wishlist } from '../chunk-65MGNUMD.js';
6
- import '../chunk-KND3TI4S.js';
1
+ import { wallet } from '../chunk-7SBSV5DD.js';
2
+ export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../chunk-FWGHTOGZ.js';
3
+ import '../chunk-L36ZEKBI.js';
4
+ import { notification } from '../chunk-O3BZBI27.js';
5
+ import { wishlist } from '../chunk-UGJ24VNF.js';
6
+ import '../chunk-CGABIBZZ.js';
7
7
  import { buildHreflangAlternates } from '../chunk-OM2GRPDH.js';
8
- import { unauthorized, orUnauthorized } from '../chunk-OMCSTKOT.js';
8
+ import { unauthorized, orUnauthorized } from '../chunk-HZIQK63A.js';
9
9
  import { RouteId } from '../chunk-OUW6WESU.js';
10
- import { getAuthToken } from '../chunk-7TIGGDM4.js';
10
+ import { getAuthToken } from '../chunk-S7QZUBXM.js';
11
+ import '../chunk-Z5M4YYWT.js';
11
12
  import '../chunk-2TLIULJZ.js';
12
13
  import '../chunk-GYXUYHKO.js';
13
14
  import '../chunk-FHU2MXZA.js';
@@ -31,7 +32,7 @@ async function profileLoader(_ctx) {
31
32
 
32
33
  // src/routes/account/profile/index.tsx
33
34
  var LazyProfilePage = lazy(
34
- () => import('../ProfilePage-SDYRTC4U.js').then((m) => ({ default: m.ProfilePage }))
35
+ () => import('../ProfilePage-RHK3OHFF.js').then((m) => ({ default: m.ProfilePage }))
35
36
  );
36
37
  var ProfilePage = LazyProfilePage;
37
38
  var Profile = {
@@ -73,7 +74,7 @@ async function wishlistLoader(ctx) {
73
74
 
74
75
  // src/routes/account/wishlist/index.tsx
75
76
  var LazyWishlistPage = lazy(
76
- () => import('../WishlistPage-XB7JH2ED.js').then((m) => ({ default: m.WishlistPage }))
77
+ () => import('../WishlistPage-Z2TPPFFM.js').then((m) => ({ default: m.WishlistPage }))
77
78
  );
78
79
  var WishlistPage = LazyWishlistPage;
79
80
  var Wishlist = {
@@ -115,7 +116,7 @@ async function walletLoader(ctx) {
115
116
  }
116
117
 
117
118
  // src/routes/account/wallet/index.tsx
118
- var LazyWalletPage = lazy(() => import('../WalletPage-ATQ4JN2D.js').then((m) => ({ default: m.WalletPage })));
119
+ var LazyWalletPage = lazy(() => import('../WalletPage-4OOHX65H.js').then((m) => ({ default: m.WalletPage })));
119
120
  var WalletPage = LazyWalletPage;
120
121
  var Wallet = {
121
122
  id: RouteId.CUSTOMER_WALLET,
@@ -151,7 +152,7 @@ async function notificationsLoader(_ctx) {
151
152
 
152
153
  // src/routes/account/notifications/index.tsx
153
154
  var LazyNotificationsPage = lazy(
154
- () => import('../NotificationsPage-YCY4362K.js').then((m) => ({ default: m.NotificationsPage }))
155
+ () => import('../NotificationsPage-2WFW7GCV.js').then((m) => ({ default: m.NotificationsPage }))
155
156
  );
156
157
  var NotificationsPage = LazyNotificationsPage;
157
158
  var Notifications = {
@@ -184,7 +185,7 @@ async function settingsLoader(_ctx) {
184
185
 
185
186
  // src/routes/account/settings/index.tsx
186
187
  var LazySettingsPage = lazy(
187
- () => import('../SettingsPage-OZPPRWYE.js').then((m) => ({ default: m.SettingsPage }))
188
+ () => import('../SettingsPage-RLNSTOCG.js').then((m) => ({ default: m.SettingsPage }))
188
189
  );
189
190
  var SettingsPage = LazySettingsPage;
190
191
  var Settings = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/account/profile/loader.ts","../../src/routes/account/profile/index.tsx","../../src/routes/account/wishlist/loader.ts","../../src/routes/account/wishlist/index.tsx","../../src/routes/account/wallet/loader.ts","../../src/routes/account/wallet/index.tsx","../../src/routes/account/notifications/loader.ts","../../src/routes/account/notifications/index.tsx","../../src/routes/account/settings/loader.ts","../../src/routes/account/settings/index.tsx"],"names":["lazy"],"mappings":"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","file":"account.js","sourcesContent":["import type { ProfilePageProps } from './types';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function profileLoader(_ctx: { locale: string }): Promise<ProfilePageProps> {\n if (!getAuthToken()) throw unauthorized();\n const { i18n } = getTwilightContext();\n return {\n page: {\n title: i18n.t('common.titles.profile') || 'Profile',\n slug: RouteId.CUSTOMER_PROFILE,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { profileLoader } from './loader';\nimport type { ProfilePageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyProfilePage = lazy(() =>\n import('./ProfilePage').then((m) => ({ default: m.ProfilePage }))\n);\n\nexport const ProfilePage = LazyProfilePage;\nexport { profileLoader } from './loader';\nexport type { ProfilePageProps } from './types';\n\nexport const Profile = {\n id: RouteId.CUSTOMER_PROFILE,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: ProfilePageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<ProfilePageProps> => {\n const data = await profileLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as ProfilePageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: ProfilePageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyProfilePage,\n} as const;\n","import type { WishlistPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport { wishlist } from '../../../api/wishlist';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function wishlistLoader(ctx: LoaderContext): Promise<WishlistPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const pageNum = Number(ctx.search?.page) || 1;\n const data = await orUnauthorized(wishlist.list({ page: pageNum }));\n\n const i18n = getTwilightContext().i18n;\n return {\n page: {\n title: i18n.t('common.titles.wishlist') || 'Wishlist',\n slug: RouteId.CUSTOMER_WISHLIST,\n },\n query: { page: pageNum },\n products: data.items,\n pagination: {\n next: data.next,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { wishlistLoader } from './loader';\nimport type { WishlistPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyWishlistPage = lazy(() =>\n import('./WishlistPage').then((m) => ({ default: m.WishlistPage }))\n);\n\nexport const WishlistPage = LazyWishlistPage;\nexport { wishlistLoader } from './loader';\nexport type { WishlistPageProps } from './types';\n\nexport const Wishlist = {\n id: RouteId.CUSTOMER_WISHLIST,\n loader: async (\n ctx: LoaderContext,\n extend?: (\n data: WishlistPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<WishlistPageProps> => {\n const data = await wishlistLoader(ctx);\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as WishlistPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: WishlistPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyWishlistPage,\n} as const;\n","import type { WalletPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport { wallet } from '../../../api/wallet';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function walletLoader(ctx: LoaderContext): Promise<WalletPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const pageNum = Number(ctx.search?.page) || 1;\n const data = await orUnauthorized(wallet.list({ page: pageNum }));\n\n const i18n = getTwilightContext().i18n;\n return {\n page: {\n title: i18n.t('common.titles.wallet') || 'Wallet',\n slug: RouteId.CUSTOMER_WALLET,\n },\n query: { page: pageNum },\n transactions: data.items,\n balance: data.balance,\n pagination: {\n next: data.next,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { walletLoader } from './loader';\nimport type { WalletPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyWalletPage = lazy(() => import('./WalletPage').then((m) => ({ default: m.WalletPage })));\n\nexport const WalletPage = LazyWalletPage;\nexport { walletLoader } from './loader';\nexport type { WalletPageProps } from './types';\n\nexport const Wallet = {\n id: RouteId.CUSTOMER_WALLET,\n loader: async (\n ctx: LoaderContext,\n extend?: (\n data: WalletPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<WalletPageProps> => {\n const data = await walletLoader(ctx);\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as WalletPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: WalletPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyWalletPage,\n} as const;\n","import { notification } from '../../../api/notification';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport type { NotificationsPageProps } from './types';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function notificationsLoader(_ctx: {\n locale: string;\n}): Promise<NotificationsPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const i18n = getTwilightContext().i18n;\n const response = await orUnauthorized(notification.list());\n\n return {\n page: {\n title: i18n.t('common.titles.notifications') || 'Notifications',\n slug: RouteId.CUSTOMER_NOTIFICATIONS,\n },\n notifications: response.data,\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { notificationsLoader } from './loader';\nimport type { NotificationsPageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyNotificationsPage = lazy(() =>\n import('./NotificationsPage').then((m) => ({ default: m.NotificationsPage }))\n);\n\nexport const NotificationsPage = LazyNotificationsPage;\nexport { notificationsLoader } from './loader';\nexport type { NotificationsPageProps, Notification } from './types';\n\nexport const Notifications = {\n id: RouteId.CUSTOMER_NOTIFICATIONS,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: NotificationsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<NotificationsPageProps> => {\n const data = await notificationsLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as NotificationsPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: NotificationsPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyNotificationsPage,\n} as const;\n","import type { SettingsPageProps } from './types';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\n\nexport async function settingsLoader(_ctx: { locale: string }): Promise<SettingsPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const { i18n } = getTwilightContext();\n return {\n // Twig's slug for this page; the advertisements API does not filter it, as on Twig.\n page: { title: i18n.t('common.titles.settings') || 'Settings', slug: 'customer-settings' },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { settingsLoader } from './loader';\nimport type { SettingsPageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazySettingsPage = lazy(() =>\n import('./SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\n\nexport const SettingsPage = LazySettingsPage;\nexport { settingsLoader } from './loader';\nexport type { SettingsPageProps } from './types';\n\nexport const Settings = {\n id: RouteId.CUSTOMER_SETTINGS,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: SettingsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<SettingsPageProps> => {\n const data = await settingsLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as SettingsPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: SettingsPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazySettingsPage,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/account/profile/loader.ts","../../src/routes/account/profile/index.tsx","../../src/routes/account/wishlist/loader.ts","../../src/routes/account/wishlist/index.tsx","../../src/routes/account/wallet/loader.ts","../../src/routes/account/wallet/index.tsx","../../src/routes/account/notifications/loader.ts","../../src/routes/account/notifications/index.tsx","../../src/routes/account/settings/loader.ts","../../src/routes/account/settings/index.tsx"],"names":["lazy"],"mappings":"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","file":"account.js","sourcesContent":["import type { ProfilePageProps } from './types';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function profileLoader(_ctx: { locale: string }): Promise<ProfilePageProps> {\n if (!getAuthToken()) throw unauthorized();\n const { i18n } = getTwilightContext();\n return {\n page: {\n title: i18n.t('common.titles.profile') || 'Profile',\n slug: RouteId.CUSTOMER_PROFILE,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { profileLoader } from './loader';\nimport type { ProfilePageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyProfilePage = lazy(() =>\n import('./ProfilePage').then((m) => ({ default: m.ProfilePage }))\n);\n\nexport const ProfilePage = LazyProfilePage;\nexport { profileLoader } from './loader';\nexport type { ProfilePageProps } from './types';\n\nexport const Profile = {\n id: RouteId.CUSTOMER_PROFILE,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: ProfilePageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<ProfilePageProps> => {\n const data = await profileLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as ProfilePageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: ProfilePageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyProfilePage,\n} as const;\n","import type { WishlistPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport { wishlist } from '../../../api/wishlist';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function wishlistLoader(ctx: LoaderContext): Promise<WishlistPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const pageNum = Number(ctx.search?.page) || 1;\n const data = await orUnauthorized(wishlist.list({ page: pageNum }));\n\n const i18n = getTwilightContext().i18n;\n return {\n page: {\n title: i18n.t('common.titles.wishlist') || 'Wishlist',\n slug: RouteId.CUSTOMER_WISHLIST,\n },\n query: { page: pageNum },\n products: data.items,\n pagination: {\n next: data.next,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { wishlistLoader } from './loader';\nimport type { WishlistPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyWishlistPage = lazy(() =>\n import('./WishlistPage').then((m) => ({ default: m.WishlistPage }))\n);\n\nexport const WishlistPage = LazyWishlistPage;\nexport { wishlistLoader } from './loader';\nexport type { WishlistPageProps } from './types';\n\nexport const Wishlist = {\n id: RouteId.CUSTOMER_WISHLIST,\n loader: async (\n ctx: LoaderContext,\n extend?: (\n data: WishlistPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<WishlistPageProps> => {\n const data = await wishlistLoader(ctx);\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as WishlistPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: WishlistPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyWishlistPage,\n} as const;\n","import type { WalletPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport { wallet } from '../../../api/wallet';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function walletLoader(ctx: LoaderContext): Promise<WalletPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const pageNum = Number(ctx.search?.page) || 1;\n const data = await orUnauthorized(wallet.list({ page: pageNum }));\n\n const i18n = getTwilightContext().i18n;\n return {\n page: {\n title: i18n.t('common.titles.wallet') || 'Wallet',\n slug: RouteId.CUSTOMER_WALLET,\n },\n query: { page: pageNum },\n transactions: data.items,\n balance: data.balance,\n pagination: {\n next: data.next,\n },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { walletLoader } from './loader';\nimport type { WalletPageProps } from './types';\nimport type { LoaderContext } from '../../types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyWalletPage = lazy(() => import('./WalletPage').then((m) => ({ default: m.WalletPage })));\n\nexport const WalletPage = LazyWalletPage;\nexport { walletLoader } from './loader';\nexport type { WalletPageProps } from './types';\n\nexport const Wallet = {\n id: RouteId.CUSTOMER_WALLET,\n loader: async (\n ctx: LoaderContext,\n extend?: (\n data: WalletPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<WalletPageProps> => {\n const data = await walletLoader(ctx);\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as WalletPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: WalletPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyWalletPage,\n} as const;\n","import { notification } from '../../../api/notification';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { orUnauthorized, unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\nimport type { NotificationsPageProps } from './types';\nimport { RouteId } from '../../../router/route-ids';\n\nexport async function notificationsLoader(_ctx: {\n locale: string;\n}): Promise<NotificationsPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const i18n = getTwilightContext().i18n;\n const response = await orUnauthorized(notification.list());\n\n return {\n page: {\n title: i18n.t('common.titles.notifications') || 'Notifications',\n slug: RouteId.CUSTOMER_NOTIFICATIONS,\n },\n notifications: response.data,\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { notificationsLoader } from './loader';\nimport type { NotificationsPageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazyNotificationsPage = lazy(() =>\n import('./NotificationsPage').then((m) => ({ default: m.NotificationsPage }))\n);\n\nexport const NotificationsPage = LazyNotificationsPage;\nexport { notificationsLoader } from './loader';\nexport type { NotificationsPageProps, Notification } from './types';\n\nexport const Notifications = {\n id: RouteId.CUSTOMER_NOTIFICATIONS,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: NotificationsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<NotificationsPageProps> => {\n const data = await notificationsLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as NotificationsPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: NotificationsPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazyNotificationsPage,\n} as const;\n","import type { SettingsPageProps } from './types';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { unauthorized } from '../../../providers/NavigationProvider';\nimport { getAuthToken } from '../../../api/client';\n\nexport async function settingsLoader(_ctx: { locale: string }): Promise<SettingsPageProps> {\n if (!getAuthToken()) throw unauthorized();\n const { i18n } = getTwilightContext();\n return {\n // Twig's slug for this page; the advertisements API does not filter it, as on Twig.\n page: { title: i18n.t('common.titles.settings') || 'Settings', slug: 'customer-settings' },\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { settingsLoader } from './loader';\nimport type { SettingsPageProps } from './types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\nconst LazySettingsPage = lazy(() =>\n import('./SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\n\nexport const SettingsPage = LazySettingsPage;\nexport { settingsLoader } from './loader';\nexport type { SettingsPageProps } from './types';\n\nexport const Settings = {\n id: RouteId.CUSTOMER_SETTINGS,\n loader: async (\n _ctx: { locale?: string },\n extend?: (\n data: SettingsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n ): Promise<SettingsPageProps> => {\n const data = await settingsLoader({ locale: _ctx.locale ?? 'ar' });\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as SettingsPageProps;\n }\n return data;\n },\n head: (ctx: TwilightContext, data: SettingsPageProps): HeadDescriptor => ({\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n }),\n Component: LazySettingsPage,\n} as const;\n"]}
@@ -1,8 +1,9 @@
1
- import { blog } from '../chunk-UZB2RUW7.js';
1
+ import { blog } from '../chunk-ZWV6YNIB.js';
2
2
  import { buildHreflangAlternates } from '../chunk-OM2GRPDH.js';
3
- import { notFound, orThrow } from '../chunk-OMCSTKOT.js';
3
+ import { notFound, orThrow } from '../chunk-HZIQK63A.js';
4
4
  import { RouteId } from '../chunk-OUW6WESU.js';
5
- import '../chunk-7TIGGDM4.js';
5
+ import '../chunk-S7QZUBXM.js';
6
+ import '../chunk-Z5M4YYWT.js';
6
7
  import '../chunk-2TLIULJZ.js';
7
8
  import '../chunk-GYXUYHKO.js';
8
9
  import '../chunk-FHU2MXZA.js';
@@ -145,18 +146,18 @@ async function blogTagLoader({
145
146
  }
146
147
 
147
148
  // src/routes/blog/index.tsx
148
- var LazyBlogPage = lazy(() => import('../BlogPage-Y6HQ54J5.js').then((m) => ({ default: m.BlogPage })));
149
+ var LazyBlogPage = lazy(() => import('../BlogPage-HINCPIQO.js').then((m) => ({ default: m.BlogPage })));
149
150
  var LazyBlogSinglePage = lazy(
150
- () => import('../BlogSinglePage-SSUQCQSM.js').then((m) => ({ default: m.BlogSinglePage }))
151
+ () => import('../BlogSinglePage-4BWHLJU6.js').then((m) => ({ default: m.BlogSinglePage }))
151
152
  );
152
153
  var LazyBlogAuthorPage = lazy(
153
- () => import('../BlogAuthorPage-FZCRDJG4.js').then((m) => ({ default: m.BlogAuthorPage }))
154
+ () => import('../BlogAuthorPage-4HGFVIG2.js').then((m) => ({ default: m.BlogAuthorPage }))
154
155
  );
155
156
  var LazyBlogCategoryPage = lazy(
156
- () => import('../BlogCategoryPage-3MNT7FKX.js').then((m) => ({ default: m.BlogCategoryPage }))
157
+ () => import('../BlogCategoryPage-67TZRH3C.js').then((m) => ({ default: m.BlogCategoryPage }))
157
158
  );
158
159
  var LazyBlogTagPage = lazy(
159
- () => import('../BlogTagPage-5SCDXWE5.js').then((m) => ({ default: m.BlogTagPage }))
160
+ () => import('../BlogTagPage-BGPLVWGM.js').then((m) => ({ default: m.BlogTagPage }))
160
161
  );
161
162
  var BlogPage = LazyBlogPage;
162
163
  var BlogSinglePage = LazyBlogSinglePage;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/blog/loader.ts","../../src/routes/blog/index.tsx"],"names":[],"mappings":"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","file":"blog.js","sourcesContent":["import { blog } from '../../api/blog';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\nimport { notFound, orThrow } from '../../providers/NavigationProvider';\nimport type { Breadcrumb } from '../../types';\nimport type {\n BlogPageProps,\n BlogSinglePageProps,\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n} from './types';\nimport type { IdParams, SlugIdParams } from '../types';\n\nexport async function blogLoader(): Promise<BlogPageProps> {\n const i18n = getTwilightContext().i18n;\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n ];\n\n const page = {\n slug: RouteId.BLOG_INDEX,\n title: i18n.t('blocks.footer.blog') || 'Blog',\n breadcrumbs,\n };\n\n try {\n const overview = await blog.get();\n return {\n page,\n articles: overview.articles,\n categories: overview.categories,\n slides: overview.slides,\n popular: overview.popular,\n };\n } catch (_error) {\n return {\n page,\n articles: [],\n categories: [],\n slides: [],\n popular: [],\n };\n }\n}\n\nexport async function blogSingleLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogSinglePageProps> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n // The API answers a non-numeric id with 417, which `orThrow` would pass through as an error.\n if (!/^\\d+$/.test(id)) throw notFound();\n const article = await blog.articles.findOrThrow(id);\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: article.name, url: article.url },\n ];\n\n return {\n page: {\n slug: RouteId.BLOG_SINGLE,\n id: article.id,\n title: article.name,\n breadcrumbs,\n },\n article,\n related: article.related,\n };\n}\n\nexport async function blogAuthorLoader({\n params,\n}: {\n params: IdParams;\n}): Promise<BlogAuthorLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ author: id })),\n blog.get(),\n ]);\n const author = response.author;\n // The API answers an unknown id without the author object: 404 instead of a TypeError (500).\n if (!author) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: author.name, url: author.url },\n ];\n\n return {\n page: {\n slug: RouteId.BLOG_INDEX_AUTHOR,\n id,\n title: author.name,\n breadcrumbs,\n },\n author,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n\nexport async function blogCategoryLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogCategoryLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ category: id })),\n blog.get(),\n ]);\n const category = response.category;\n if (!category) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: category.name, url: category.url },\n ];\n\n return {\n page: { slug: RouteId.BLOG_INDEX_CATEGORY, id: category.id, title: category.name, breadcrumbs },\n blogCategory: category,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n\nexport async function blogTagLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogTagLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ tag: id })),\n blog.get(),\n ]);\n const tag = response.tag;\n if (!tag) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: tag.name, url: tag.url },\n ];\n\n return {\n page: { slug: RouteId.BLOG_INDEX_TAG, id: tag.id, title: tag.name, breadcrumbs },\n blogTag: tag,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport {\n blogLoader,\n blogSingleLoader,\n blogAuthorLoader,\n blogCategoryLoader,\n blogTagLoader,\n} from './loader';\nimport type {\n BlogPageProps,\n BlogSinglePageProps,\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n ArticleSummary,\n ArticleDetail,\n ArticleStats,\n ArticleMeta,\n BlogCategory as BlogCategoryType,\n CategoryMeta,\n BlogTag as BlogTagType,\n BlogAuthor as BlogAuthorType,\n} from './types';\nimport type { IdParams, SlugIdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\nconst LazyBlogPage = lazy(() => import('./BlogPage').then((m) => ({ default: m.BlogPage })));\nconst LazyBlogSinglePage = lazy(() =>\n import('./BlogSinglePage').then((m) => ({ default: m.BlogSinglePage }))\n);\nconst LazyBlogAuthorPage = lazy(() =>\n import('./BlogAuthorPage').then((m) => ({ default: m.BlogAuthorPage }))\n);\nconst LazyBlogCategoryPage = lazy(() =>\n import('./BlogCategoryPage').then((m) => ({ default: m.BlogCategoryPage }))\n);\nconst LazyBlogTagPage = lazy(() =>\n import('./BlogTagPage').then((m) => ({ default: m.BlogTagPage }))\n);\n\nexport const BlogPage = LazyBlogPage;\nexport const BlogSinglePage = LazyBlogSinglePage;\nexport const BlogAuthorPage = LazyBlogAuthorPage;\nexport const BlogCategoryPage = LazyBlogCategoryPage;\nexport const BlogTagPage = LazyBlogTagPage;\nexport {\n blogLoader,\n blogSingleLoader,\n blogAuthorLoader,\n blogCategoryLoader,\n blogTagLoader,\n} from './loader';\nexport type {\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n BlogPageProps,\n BlogSinglePageProps,\n ArticleSummary,\n ArticleDetail,\n ArticleStats,\n ArticleMeta,\n BlogCategoryType,\n CategoryMeta,\n BlogTagType,\n BlogAuthorType,\n};\n\nasync function blogLoaderWithExtend(\n _ctx?: { locale?: string },\n extend?: (\n data: BlogPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogPageProps> {\n const data = await blogLoader();\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as BlogPageProps;\n }\n return data;\n}\n\nfunction blogHead(ctx: TwilightContext, data: BlogPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogSingleLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogSinglePageProps,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogSinglePageProps> {\n const data = await blogSingleLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogSinglePageProps;\n }\n return data;\n}\n\nfunction blogSingleHead(ctx: TwilightContext, data: BlogSinglePageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.article.meta?.title ?? data.article.name,\n description: data.article.meta?.description ?? data.article.description,\n canonical: data.article.meta?.canonical ?? data.article.url,\n openGraph: {\n title: data.article.meta?.title ?? data.article.name,\n images: data.article.meta?.og_image ?? data.article.image,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogAuthorLoaderWithExtend(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: BlogAuthorLoaderData,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogAuthorLoaderData> {\n const data = await blogAuthorLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogAuthorLoaderData;\n }\n return data;\n}\n\nfunction blogAuthorHead(ctx: TwilightContext, data: BlogAuthorLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.author.name,\n description: `Articles by ${data.author.name}`,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogCategoryLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogCategoryLoaderData,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogCategoryLoaderData> {\n const data = await blogCategoryLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogCategoryLoaderData;\n }\n return data;\n}\n\nfunction blogCategoryHead(ctx: TwilightContext, data: BlogCategoryLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.blogCategory.meta?.title ?? data.blogCategory.name,\n description: data.blogCategory.meta?.description ?? `Articles in ${data.blogCategory.name}`,\n canonical: data.blogCategory.meta?.canonical ?? data.blogCategory.url,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogTagLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogTagLoaderData,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogTagLoaderData> {\n const data = await blogTagLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogTagLoaderData;\n }\n return data;\n}\n\nfunction blogTagHead(ctx: TwilightContext, data: BlogTagLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.blogTag.name,\n description: `Articles tagged with ${data.blogTag.name}`,\n canonical: data.blogTag.url,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Blog = {\n id: RouteId.BLOG_INDEX,\n loader: blogLoaderWithExtend,\n head: blogHead,\n Component: LazyBlogPage,\n} as const;\nexport const BlogSingle = {\n id: RouteId.BLOG_SINGLE,\n loader: blogSingleLoaderWithExtend,\n head: blogSingleHead,\n Component: LazyBlogSinglePage,\n} as const;\nexport const BlogAuthorRoute = {\n id: RouteId.BLOG_INDEX_AUTHOR,\n loader: blogAuthorLoaderWithExtend,\n head: blogAuthorHead,\n Component: LazyBlogAuthorPage,\n} as const;\nexport const BlogCategoryRoute = {\n id: RouteId.BLOG_INDEX_CATEGORY,\n loader: blogCategoryLoaderWithExtend,\n head: blogCategoryHead,\n Component: LazyBlogCategoryPage,\n} as const;\nexport const BlogTagRoute = {\n id: RouteId.BLOG_INDEX_TAG,\n loader: blogTagLoaderWithExtend,\n head: blogTagHead,\n Component: LazyBlogTagPage,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/blog/loader.ts","../../src/routes/blog/index.tsx"],"names":[],"mappings":"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","file":"blog.js","sourcesContent":["import { blog } from '../../api/blog';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\nimport { notFound, orThrow } from '../../providers/NavigationProvider';\nimport type { Breadcrumb } from '../../types';\nimport type {\n BlogPageProps,\n BlogSinglePageProps,\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n} from './types';\nimport type { IdParams, SlugIdParams } from '../types';\n\nexport async function blogLoader(): Promise<BlogPageProps> {\n const i18n = getTwilightContext().i18n;\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n ];\n\n const page = {\n slug: RouteId.BLOG_INDEX,\n title: i18n.t('blocks.footer.blog') || 'Blog',\n breadcrumbs,\n };\n\n try {\n const overview = await blog.get();\n return {\n page,\n articles: overview.articles,\n categories: overview.categories,\n slides: overview.slides,\n popular: overview.popular,\n };\n } catch (_error) {\n return {\n page,\n articles: [],\n categories: [],\n slides: [],\n popular: [],\n };\n }\n}\n\nexport async function blogSingleLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogSinglePageProps> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n // The API answers a non-numeric id with 417, which `orThrow` would pass through as an error.\n if (!/^\\d+$/.test(id)) throw notFound();\n const article = await blog.articles.findOrThrow(id);\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: article.name, url: article.url },\n ];\n\n return {\n page: {\n slug: RouteId.BLOG_SINGLE,\n id: article.id,\n title: article.name,\n breadcrumbs,\n },\n article,\n related: article.related,\n };\n}\n\nexport async function blogAuthorLoader({\n params,\n}: {\n params: IdParams;\n}): Promise<BlogAuthorLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ author: id })),\n blog.get(),\n ]);\n const author = response.author;\n // The API answers an unknown id without the author object: 404 instead of a TypeError (500).\n if (!author) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: author.name, url: author.url },\n ];\n\n return {\n page: {\n slug: RouteId.BLOG_INDEX_AUTHOR,\n id,\n title: author.name,\n breadcrumbs,\n },\n author,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n\nexport async function blogCategoryLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogCategoryLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ category: id })),\n blog.get(),\n ]);\n const category = response.category;\n if (!category) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: category.name, url: category.url },\n ];\n\n return {\n page: { slug: RouteId.BLOG_INDEX_CATEGORY, id: category.id, title: category.name, breadcrumbs },\n blogCategory: category,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n\nexport async function blogTagLoader({\n params,\n}: {\n params: SlugIdParams;\n}): Promise<BlogTagLoaderData> {\n const { id } = params;\n const i18n = getTwilightContext().i18n;\n\n const [response, overview] = await Promise.all([\n orThrow(blog.articles.list({ tag: id })),\n blog.get(),\n ]);\n const tag = response.tag;\n if (!tag) throw notFound();\n\n const breadcrumbs: Breadcrumb[] = [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('blocks.footer.blog'), url: '/blog' },\n { name: tag.name, url: tag.url },\n ];\n\n return {\n page: { slug: RouteId.BLOG_INDEX_TAG, id: tag.id, title: tag.name, breadcrumbs },\n blogTag: tag,\n categories: overview.categories,\n articles: response.data,\n cursor: response.cursor,\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport {\n blogLoader,\n blogSingleLoader,\n blogAuthorLoader,\n blogCategoryLoader,\n blogTagLoader,\n} from './loader';\nimport type {\n BlogPageProps,\n BlogSinglePageProps,\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n ArticleSummary,\n ArticleDetail,\n ArticleStats,\n ArticleMeta,\n BlogCategory as BlogCategoryType,\n CategoryMeta,\n BlogTag as BlogTagType,\n BlogAuthor as BlogAuthorType,\n} from './types';\nimport type { IdParams, SlugIdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\nconst LazyBlogPage = lazy(() => import('./BlogPage').then((m) => ({ default: m.BlogPage })));\nconst LazyBlogSinglePage = lazy(() =>\n import('./BlogSinglePage').then((m) => ({ default: m.BlogSinglePage }))\n);\nconst LazyBlogAuthorPage = lazy(() =>\n import('./BlogAuthorPage').then((m) => ({ default: m.BlogAuthorPage }))\n);\nconst LazyBlogCategoryPage = lazy(() =>\n import('./BlogCategoryPage').then((m) => ({ default: m.BlogCategoryPage }))\n);\nconst LazyBlogTagPage = lazy(() =>\n import('./BlogTagPage').then((m) => ({ default: m.BlogTagPage }))\n);\n\nexport const BlogPage = LazyBlogPage;\nexport const BlogSinglePage = LazyBlogSinglePage;\nexport const BlogAuthorPage = LazyBlogAuthorPage;\nexport const BlogCategoryPage = LazyBlogCategoryPage;\nexport const BlogTagPage = LazyBlogTagPage;\nexport {\n blogLoader,\n blogSingleLoader,\n blogAuthorLoader,\n blogCategoryLoader,\n blogTagLoader,\n} from './loader';\nexport type {\n BlogAuthorLoaderData,\n BlogCategoryLoaderData,\n BlogTagLoaderData,\n BlogPageProps,\n BlogSinglePageProps,\n ArticleSummary,\n ArticleDetail,\n ArticleStats,\n ArticleMeta,\n BlogCategoryType,\n CategoryMeta,\n BlogTagType,\n BlogAuthorType,\n};\n\nasync function blogLoaderWithExtend(\n _ctx?: { locale?: string },\n extend?: (\n data: BlogPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogPageProps> {\n const data = await blogLoader();\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as BlogPageProps;\n }\n return data;\n}\n\nfunction blogHead(ctx: TwilightContext, data: BlogPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogSingleLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogSinglePageProps,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogSinglePageProps> {\n const data = await blogSingleLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogSinglePageProps;\n }\n return data;\n}\n\nfunction blogSingleHead(ctx: TwilightContext, data: BlogSinglePageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.article.meta?.title ?? data.article.name,\n description: data.article.meta?.description ?? data.article.description,\n canonical: data.article.meta?.canonical ?? data.article.url,\n openGraph: {\n title: data.article.meta?.title ?? data.article.name,\n images: data.article.meta?.og_image ?? data.article.image,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogAuthorLoaderWithExtend(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: BlogAuthorLoaderData,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogAuthorLoaderData> {\n const data = await blogAuthorLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogAuthorLoaderData;\n }\n return data;\n}\n\nfunction blogAuthorHead(ctx: TwilightContext, data: BlogAuthorLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.author.name,\n description: `Articles by ${data.author.name}`,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogCategoryLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogCategoryLoaderData,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogCategoryLoaderData> {\n const data = await blogCategoryLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogCategoryLoaderData;\n }\n return data;\n}\n\nfunction blogCategoryHead(ctx: TwilightContext, data: BlogCategoryLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.blogCategory.meta?.title ?? data.blogCategory.name,\n description: data.blogCategory.meta?.description ?? `Articles in ${data.blogCategory.name}`,\n canonical: data.blogCategory.meta?.canonical ?? data.blogCategory.url,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function blogTagLoaderWithExtend(\n ctx: { params: SlugIdParams; locale?: string },\n extend?: (\n data: BlogTagLoaderData,\n ctx: { params: SlugIdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BlogTagLoaderData> {\n const data = await blogTagLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as BlogTagLoaderData;\n }\n return data;\n}\n\nfunction blogTagHead(ctx: TwilightContext, data: BlogTagLoaderData): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.blogTag.name,\n description: `Articles tagged with ${data.blogTag.name}`,\n canonical: data.blogTag.url,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Blog = {\n id: RouteId.BLOG_INDEX,\n loader: blogLoaderWithExtend,\n head: blogHead,\n Component: LazyBlogPage,\n} as const;\nexport const BlogSingle = {\n id: RouteId.BLOG_SINGLE,\n loader: blogSingleLoaderWithExtend,\n head: blogSingleHead,\n Component: LazyBlogSinglePage,\n} as const;\nexport const BlogAuthorRoute = {\n id: RouteId.BLOG_INDEX_AUTHOR,\n loader: blogAuthorLoaderWithExtend,\n head: blogAuthorHead,\n Component: LazyBlogAuthorPage,\n} as const;\nexport const BlogCategoryRoute = {\n id: RouteId.BLOG_INDEX_CATEGORY,\n loader: blogCategoryLoaderWithExtend,\n head: blogCategoryHead,\n Component: LazyBlogCategoryPage,\n} as const;\nexport const BlogTagRoute = {\n id: RouteId.BLOG_INDEX_TAG,\n loader: blogTagLoaderWithExtend,\n head: blogTagHead,\n Component: LazyBlogTagPage,\n} as const;\n"]}
@@ -1,8 +1,9 @@
1
- import { brand } from '../chunk-KJRT3CBH.js';
1
+ import { brand } from '../chunk-CN4U4EWY.js';
2
2
  import { buildHreflangAlternates } from '../chunk-OM2GRPDH.js';
3
- import '../chunk-OMCSTKOT.js';
3
+ import '../chunk-HZIQK63A.js';
4
4
  import { RouteId } from '../chunk-OUW6WESU.js';
5
- import '../chunk-7TIGGDM4.js';
5
+ import '../chunk-S7QZUBXM.js';
6
+ import '../chunk-Z5M4YYWT.js';
6
7
  import '../chunk-2TLIULJZ.js';
7
8
  import '../chunk-GYXUYHKO.js';
8
9
  import '../chunk-FHU2MXZA.js';
@@ -24,7 +25,7 @@ async function brandsLoader() {
24
25
  }
25
26
 
26
27
  // src/routes/brands/index.tsx
27
- var LazyBrandsPage = lazy(() => import('../BrandsPage-Y5CV5RNB.js').then((m) => ({ default: m.BrandsPage })));
28
+ var LazyBrandsPage = lazy(() => import('../BrandsPage-2NC3RCZK.js').then((m) => ({ default: m.BrandsPage })));
28
29
  var BrandsPage = LazyBrandsPage;
29
30
  async function brandsLoaderWithExtend(_ctx, extend) {
30
31
  const data = await brandsLoader();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/brands/loader.ts","../../src/routes/brands/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,eAAsB,YAAA,GAAyC;AAC7D,EAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,MAAM,MAAM,IAAA,EAAK;AACzC,EAAA,MAAM,IAAA,GAAO,oBAAmB,CAAE,IAAA;AAClC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,CAAQ,YAAA,EAAc,OAAO,IAAA,CAAK,CAAA,CAAE,sBAAsB,CAAA,IAAK,QAAA,EAAS;AAAA,IACtF,MAAA,EAAQ,KAAA;AAAA,IACR,UAAA,EAAY,EAAE,IAAA;AAAK,GACrB;AACF;;;ACJA,IAAM,cAAA,GAAiB,IAAA,CAAK,MAAM,OAAO,2BAAc,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,UAAA,GAAa,CAAC,CAAA;AAE1F,IAAM,UAAA,GAAa;AAI1B,eAAe,sBAAA,CACb,MACA,MAAA,EAI0B;AAC1B,EAAA,MAAM,IAAA,GAAO,MAAM,YAAA,EAAa;AAEhC,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,IAAA,EAAM,EAAE,MAAA,EAAQ,IAAI,CAAA;AAC/C,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,EAC7B;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,UAAA,CAAW,KAAsB,IAAA,EAAuC;AAC/E,EAAA,MAAM,IAAA,GAAuB;AAAA,IAC3B,KAAA,EAAO,KAAK,IAAA,CAAK,KAAA;AAAA,IACjB,WAAA,EAAa,KAAK,IAAA,CAAK,WAAA;AAAA,IACvB,oBAAoB,uBAAA,CAAwB,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,SAAS,QAAQ;AAAA,GACjF;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,IAAI,OAAA,CAAQ,YAAA;AAAA,EACZ,MAAA,EAAQ,sBAAA;AAAA,EACR,IAAA,EAAM,UAAA;AAAA,EACN,SAAA,EAAW;AACb","file":"brands.js","sourcesContent":["import type { BrandsPageProps } from './types';\nimport { brand } from '../../api/brands';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\nexport async function brandsLoader(): Promise<BrandsPageProps> {\n const { items, next } = await brand.list();\n const i18n = getTwilightContext().i18n;\n return {\n page: { slug: RouteId.BRANDS_INDEX, title: i18n.t('common.titles.brands') || 'Brands' },\n brands: items,\n pagination: { next },\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { brandsLoader } from './loader';\nimport type { BrandsPageProps } from './types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load components for code-splitting\nconst LazyBrandsPage = lazy(() => import('./BrandsPage').then((m) => ({ default: m.BrandsPage })));\n\nexport const BrandsPage = LazyBrandsPage;\nexport { brandsLoader };\nexport type { BrandsPageProps, Brand, BrandsGroup } from './types';\n\nasync function brandsLoaderWithExtend(\n _ctx?: { locale?: string },\n extend?: (\n data: BrandsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BrandsPageProps> {\n const data = await brandsLoader();\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as BrandsPageProps;\n }\n return data;\n}\n\nfunction brandsHead(ctx: TwilightContext, data: BrandsPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Brands = {\n id: RouteId.BRANDS_INDEX,\n loader: brandsLoaderWithExtend,\n head: brandsHead,\n Component: LazyBrandsPage,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/brands/loader.ts","../../src/routes/brands/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAKA,eAAsB,YAAA,GAAyC;AAC7D,EAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,MAAM,MAAM,IAAA,EAAK;AACzC,EAAA,MAAM,IAAA,GAAO,oBAAmB,CAAE,IAAA;AAClC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,CAAQ,YAAA,EAAc,OAAO,IAAA,CAAK,CAAA,CAAE,sBAAsB,CAAA,IAAK,QAAA,EAAS;AAAA,IACtF,MAAA,EAAQ,KAAA;AAAA,IACR,UAAA,EAAY,EAAE,IAAA;AAAK,GACrB;AACF;;;ACJA,IAAM,cAAA,GAAiB,IAAA,CAAK,MAAM,OAAO,2BAAc,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,UAAA,GAAa,CAAC,CAAA;AAE1F,IAAM,UAAA,GAAa;AAI1B,eAAe,sBAAA,CACb,MACA,MAAA,EAI0B;AAC1B,EAAA,MAAM,IAAA,GAAO,MAAM,YAAA,EAAa;AAEhC,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,IAAA,EAAM,EAAE,MAAA,EAAQ,IAAI,CAAA;AAC/C,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,EAC7B;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,UAAA,CAAW,KAAsB,IAAA,EAAuC;AAC/E,EAAA,MAAM,IAAA,GAAuB;AAAA,IAC3B,KAAA,EAAO,KAAK,IAAA,CAAK,KAAA;AAAA,IACjB,WAAA,EAAa,KAAK,IAAA,CAAK,WAAA;AAAA,IACvB,oBAAoB,uBAAA,CAAwB,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,SAAS,QAAQ;AAAA,GACjF;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,IAAI,OAAA,CAAQ,YAAA;AAAA,EACZ,MAAA,EAAQ,sBAAA;AAAA,EACR,IAAA,EAAM,UAAA;AAAA,EACN,SAAA,EAAW;AACb","file":"brands.js","sourcesContent":["import type { BrandsPageProps } from './types';\nimport { brand } from '../../api/brands';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\nexport async function brandsLoader(): Promise<BrandsPageProps> {\n const { items, next } = await brand.list();\n const i18n = getTwilightContext().i18n;\n return {\n page: { slug: RouteId.BRANDS_INDEX, title: i18n.t('common.titles.brands') || 'Brands' },\n brands: items,\n pagination: { next },\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { brandsLoader } from './loader';\nimport type { BrandsPageProps } from './types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load components for code-splitting\nconst LazyBrandsPage = lazy(() => import('./BrandsPage').then((m) => ({ default: m.BrandsPage })));\n\nexport const BrandsPage = LazyBrandsPage;\nexport { brandsLoader };\nexport type { BrandsPageProps, Brand, BrandsGroup } from './types';\n\nasync function brandsLoaderWithExtend(\n _ctx?: { locale?: string },\n extend?: (\n data: BrandsPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<BrandsPageProps> {\n const data = await brandsLoader();\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as BrandsPageProps;\n }\n return data;\n}\n\nfunction brandsHead(ctx: TwilightContext, data: BrandsPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Brands = {\n id: RouteId.BRANDS_INDEX,\n loader: brandsLoaderWithExtend,\n head: brandsHead,\n Component: LazyBrandsPage,\n} as const;\n"]}
@@ -1,32 +1,32 @@
1
- import { cart } from '../chunk-GD36BKKQ.js';
2
- import { loyalty } from '../chunk-VX7JWTKV.js';
1
+ import { cart } from '../chunk-EXK6VVXU.js';
2
+ import { loyalty } from '../chunk-GN5V4IQI.js';
3
3
  import { CartSkeleton } from '../chunk-N7CCSGZF.js';
4
- import '../chunk-7URF2BWQ.js';
5
- import '../chunk-CIXTBWFO.js';
6
- import '../chunk-FQB6MTGD.js';
7
- import '../chunk-KND3TI4S.js';
8
- import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-VLQLXIGR.js';
9
- import '../chunk-CZT6A2MT.js';
4
+ import '../chunk-DJN6JAF7.js';
5
+ import '../chunk-KNTHVSUL.js';
6
+ import '../chunk-UWE2QL3O.js';
7
+ import '../chunk-CGABIBZZ.js';
8
+ import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-L4FKJ3ZN.js';
9
+ import '../chunk-HRDCUTC6.js';
10
10
  import '../chunk-Y32RHCOH.js';
11
- import '../chunk-PBRCB2N3.js';
11
+ import '../chunk-QLFRNPPF.js';
12
12
  import '../chunk-MVNWWZWQ.js';
13
- import '../chunk-EYOCBD5I.js';
14
- import '../chunk-WI5TKPQ4.js';
13
+ import '../chunk-XCS62X6X.js';
14
+ import '../chunk-5U7LPEFE.js';
15
15
  import '../chunk-KQEBYXYB.js';
16
16
  import '../chunk-JYV25VNZ.js';
17
- import '../chunk-7IZE6VU3.js';
17
+ import '../chunk-4LR7N76Q.js';
18
18
  import '../chunk-OXMUPNMH.js';
19
- import '../chunk-7VLVD3KJ.js';
19
+ import '../chunk-GFOAMXSO.js';
20
20
  import '../chunk-VVZNW5CB.js';
21
21
  import '../chunk-5FJFN3IW.js';
22
22
  import '../chunk-GD26FI4J.js';
23
23
  import { buildHreflangAlternates } from '../chunk-OM2GRPDH.js';
24
- import '../chunk-OMCSTKOT.js';
24
+ import '../chunk-HZIQK63A.js';
25
25
  import { RouteId } from '../chunk-OUW6WESU.js';
26
26
  import '../chunk-BK5TBUGG.js';
27
27
  import '../chunk-HI5V5X3S.js';
28
- import '../chunk-PFZLY3IT.js';
29
- import '../chunk-I3ZVH373.js';
28
+ import '../chunk-U2UDXLAE.js';
29
+ import '../chunk-6NT6RC2H.js';
30
30
  import '../chunk-MVT5AF2A.js';
31
31
  import '../chunk-Z653O7MX.js';
32
32
  import '../chunk-ZCH7W7DZ.js';
@@ -37,15 +37,16 @@ import '../chunk-7V36I5GT.js';
37
37
  import '../chunk-6WI7R2BD.js';
38
38
  import '../chunk-JGVEGQHJ.js';
39
39
  import '../chunk-OAMIDZKW.js';
40
- import '../chunk-IPCRRC52.js';
40
+ import '../chunk-2VRMQZXF.js';
41
41
  import '../chunk-OQIIJRAS.js';
42
42
  import '../chunk-V2ZDTY6H.js';
43
- import '../chunk-X7L5YGO2.js';
43
+ import '../chunk-5GCOUJ7T.js';
44
44
  import { HookSlot } from '../chunk-5XDPAKF5.js';
45
45
  import '../chunk-GCPEMNSU.js';
46
- import '../chunk-7TIGGDM4.js';
46
+ import '../chunk-S7QZUBXM.js';
47
+ import '../chunk-Z5M4YYWT.js';
47
48
  import { useTranslation } from '../chunk-TYNZ5B2B.js';
48
- import { LazyBreadcrumb, LazyNoContent } from '../chunk-63STL623.js';
49
+ import { LazyBreadcrumb, LazyNoContent } from '../chunk-JUKKXGHR.js';
49
50
  import '../chunk-AXW67SY7.js';
50
51
  import '../chunk-BYMOPN2S.js';
51
52
  import '../chunk-SKLEJJ6M.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/cart/CartPage.tsx","../../src/routes/cart/loader.ts","../../src/routes/cart/index.tsx"],"names":[],"mappings":"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","file":"cart.js","sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { SallaConditionalOffer } from '@salla.sa/twilight-components-react/conditional-offer';\nimport { SallaOffer } from '@salla.sa/twilight-components-react/offer';\nimport { SallaProductOptions } from '@salla.sa/twilight-components-react/product-options';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { CartPageProps } from './types';\nimport { Breadcrumb, NoContent } from '../../components/common';\nimport { CartItem, CartSummary, SeoCartWidget } from '../../components/cart';\nimport { useTwilight } from '../../providers/twilight-context';\nimport { CartSkeleton } from '../../skeleton';\nimport { loyalty } from '../../api/loyalty';\nimport { cart } from '../../api/cart';\n\nfunction CartPageContent({ page }: CartPageProps) {\n const { store } = useTwilight();\n const { t } = useTranslation();\n const { data: loyaltyPoints } = useQuery(loyalty.queries.points());\n\n const { data: cartId } = useQuery(cart.queries.currentId());\n\n const { data: cartData } = useQuery({\n ...cart.queries.detail(cartId!),\n enabled: !!cartId,\n });\n\n const isLoading = cartId == null || cartData === undefined;\n\n if (isLoading) {\n return <CartSkeleton />;\n }\n\n // No cart: it was already turned into an order, shown empty like Twig.\n if (!cartData || cartData.items.length === 0) {\n return (\n <div className=\"container\">\n <Breadcrumb page={page} />\n <NoContent\n icon=\"sicon-shopping-bag\"\n message={t('pages.cart.empty_cart', 'Your cart is empty')}\n actionLabel={t('common.elements.back_home', 'Back to Home')}\n actionUrl=\"/\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"container\">\n {/* Analytics — no visible UI, fires GTM checkout events */}\n <SeoCartWidget cart={cartData} />\n\n <Breadcrumb page={page} />\n <h1 className=\"sr-only\">{t('common.titles.cart', 'Cart')}</h1>\n <SallaConditionalOffer />\n\n <HookSlot name=\"cart:start\" />\n\n <div className=\"pt-5 flex flex-col items-start lg:flex-row pb-6 lg:pb-20\">\n <div className=\"main-content w-full lg:w-[calc(100%-384px)]\">\n <HookSlot name=\"cart:items.start\" context={{ cartItems: cartData.items }} />\n\n {cartData.items.map((item, index) => (\n <CartItem key={item.id} item={item} isFirst={index === 0} />\n ))}\n\n {cartData.options?.length > 0 && (\n <div className=\"cart-options\">\n {cartData.options.map((option) => (\n <form\n key={option.id}\n className=\"first:pt-5 relative\"\n onChange={(e) => window.salla?.form.onChange('cart.updateItem', e)}\n id={`item-${option.id}`}\n >\n <input type=\"hidden\" name=\"id\" value={option.id} />\n <input type=\"hidden\" name=\"quantity\" value={option.quantity} />\n {/* Twig: {% include 'pages.partials.product.options' with {product:product_option} %} */}\n {option.options && option.options.length > 0 && (\n <SallaProductOptions\n options={JSON.stringify(option.options)}\n productId={option.id}\n />\n )}\n </form>\n ))}\n </div>\n )}\n\n <SallaOffer />\n <HookSlot name=\"cart:items.end\" />\n </div>\n\n <CartSummary\n cart={cartData}\n applyCouponEnabled={store.settings?.cart?.apply_coupon_enabled}\n taxAmount={cartData.tax_amount}\n key={cartData.id}\n loyalty={cartData.loyalty}\n gift={cartData.gift}\n loyaltyPoints={loyaltyPoints ?? undefined}\n />\n </div>\n\n <HookSlot name=\"cart:end\" />\n </div>\n );\n}\n\nexport function CartPage(props: CartPageProps) {\n return <CartPageContent {...props} />;\n}\n","import type { CartPageProps } from './types';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n/**\n * SSR-safe loader that returns only page metadata.\n * Cart data is fetched client-side via React Query since the cart ID\n * lives in localStorage (unavailable during SSR).\n */\nexport function cartLoader(): CartPageProps {\n const i18n = getTwilightContext().i18n;\n return {\n page: { slug: RouteId.CART, title: i18n.t('common.titles.cart') || 'Cart' },\n } as CartPageProps;\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { CartPage } from './CartPage';\nimport { cartLoader } from './loader';\nimport type { CartPageProps } from './types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\nexport { CartPage } from './CartPage';\nexport { cartLoader } from './loader';\nexport type { CartPageProps } from './types';\n\nasync function loader(\n _ctx?: { locale?: string },\n extend?: (\n data: CartPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<CartPageProps> {\n const data = cartLoader();\n\n if (extend) {\n const extra = extend(data, { params: {} });\n return { ...data, ...(extra instanceof Promise ? {} : extra) } as CartPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: CartPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Cart = { id: RouteId.CART, loader, head, Component: CartPage } as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/cart/CartPage.tsx","../../src/routes/cart/loader.ts","../../src/routes/cart/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,SAAS,eAAA,CAAgB,EAAE,IAAA,EAAK,EAAkB;AAChD,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,WAAA,EAAY;AAC9B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,MAAM,aAAA,EAAc,GAAI,SAAS,OAAA,CAAQ,OAAA,CAAQ,QAAQ,CAAA;AAEjE,EAAA,MAAM,EAAE,MAAM,MAAA,EAAO,GAAI,SAAS,IAAA,CAAK,OAAA,CAAQ,WAAW,CAAA;AAE1D,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,QAAA,CAAS;AAAA,IAClC,GAAG,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,MAAO,CAAA;AAAA,IAC9B,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AAED,EAAA,MAAM,SAAA,GAAY,MAAA,IAAU,IAAA,IAAQ,QAAA,KAAa,MAAA;AAEjD,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,2BAAQ,YAAA,EAAA,EAAa,CAAA;AAAA,EACvB;AAGA,EAAA,IAAI,CAAC,QAAA,IAAY,QAAA,CAAS,KAAA,CAAM,WAAW,CAAA,EAAG;AAC5C,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,kBAAW,IAAA,EAAY,CAAA;AAAA,sBACxB,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,oBAAA;AAAA,UACL,OAAA,EAAS,CAAA,CAAE,uBAAA,EAAyB,oBAAoB,CAAA;AAAA,UACxD,WAAA,EAAa,CAAA,CAAE,2BAAA,EAA6B,cAAc,CAAA;AAAA,UAC1D,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EAEb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,iBAAA,EAAA,EAAc,MAAM,QAAA,EAAU,CAAA;AAAA,oBAE/B,GAAA,CAAC,kBAAW,IAAA,EAAY,CAAA;AAAA,wBACvB,IAAA,EAAA,EAAG,SAAA,EAAU,WAAW,QAAA,EAAA,CAAA,CAAE,oBAAA,EAAsB,MAAM,CAAA,EAAE,CAAA;AAAA,wBACxD,qBAAA,EAAA,EAAsB,CAAA;AAAA,oBAEvB,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,YAAA,EAAa,CAAA;AAAA,oBAE5B,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6CAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,kBAAA,EAAmB,OAAA,EAAS,EAAE,SAAA,EAAW,QAAA,CAAS,OAAM,EAAG,CAAA;AAAA,QAEzE,QAAA,CAAS,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,KAAA,qBACzB,GAAA,CAAC,YAAA,EAAA,EAAuB,IAAA,EAAY,OAAA,EAAS,KAAA,KAAU,CAAA,EAAA,EAAxC,IAAA,CAAK,EAAsC,CAC3D,CAAA;AAAA,QAEA,QAAA,CAAS,OAAA,EAAS,MAAA,GAAS,CAAA,oBAC1B,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EACZ,QAAA,EAAA,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACrB,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAU,qBAAA;AAAA,YACV,QAAA,EAAU,CAAC,CAAA,KAAM,MAAA,CAAO,OAAO,IAAA,CAAK,QAAA,CAAS,mBAAmB,CAAC,CAAA;AAAA,YACjE,EAAA,EAAI,CAAA,KAAA,EAAQ,MAAA,CAAO,EAAE,CAAA,CAAA;AAAA,YAErB,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,WAAM,IAAA,EAAK,QAAA,EAAS,MAAK,IAAA,EAAK,KAAA,EAAO,OAAO,EAAA,EAAI,CAAA;AAAA,8BACjD,GAAA,CAAC,WAAM,IAAA,EAAK,QAAA,EAAS,MAAK,UAAA,EAAW,KAAA,EAAO,OAAO,QAAA,EAAU,CAAA;AAAA,cAE5D,MAAA,CAAO,OAAA,IAAW,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,oBACzC,GAAA;AAAA,gBAAC,mBAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,OAAO,CAAA;AAAA,kBACtC,WAAW,MAAA,CAAO;AAAA;AAAA;AACpB;AAAA,WAAA;AAAA,UAZG,MAAA,CAAO;AAAA,SAef,CAAA,EACH,CAAA;AAAA,4BAGD,UAAA,EAAA,EAAW,CAAA;AAAA,wBACZ,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB;AAAA,OAAA,EAClC,CAAA;AAAA,sBAEA,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,QAAA;AAAA,UACN,kBAAA,EAAoB,KAAA,CAAM,QAAA,EAAU,IAAA,EAAM,oBAAA;AAAA,UAC1C,WAAW,QAAA,CAAS,UAAA;AAAA,UAEpB,SAAS,QAAA,CAAS,OAAA;AAAA,UAClB,MAAM,QAAA,CAAS,IAAA;AAAA,UACf,eAAe,aAAA,IAAiB;AAAA,SAAA;AAAA,QAH3B,QAAA,CAAS;AAAA;AAIhB,KAAA,EACF,CAAA;AAAA,oBAEA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,UAAA,EAAW;AAAA,GAAA,EAC5B,CAAA;AAEJ;AAEO,SAAS,SAAS,KAAA,EAAsB;AAC7C,EAAA,uBAAO,GAAA,CAAC,eAAA,EAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AACrC;;;ACtGO,SAAS,UAAA,GAA4B;AAC1C,EAAA,MAAM,IAAA,GAAO,oBAAmB,CAAE,IAAA;AAClC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,CAAQ,IAAA,EAAM,OAAO,IAAA,CAAK,CAAA,CAAE,oBAAoB,CAAA,IAAK,MAAA;AAAO,GAC5E;AACF;;;ACFA,eAAe,MAAA,CACb,MACA,MAAA,EAIwB;AACxB,EAAA,MAAM,OAAO,UAAA,EAAW;AAExB,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,QAAQ,MAAA,CAAO,IAAA,EAAM,EAAE,MAAA,EAAQ,IAAI,CAAA;AACzC,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAI,iBAAiB,OAAA,GAAU,KAAK,KAAA,EAAO;AAAA,EAC/D;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,IAAA,CAAK,KAAsB,IAAA,EAAqC;AACvE,EAAA,MAAM,IAAA,GAAuB;AAAA,IAC3B,KAAA,EAAO,KAAK,IAAA,CAAK,KAAA;AAAA,IACjB,WAAA,EAAa,KAAK,IAAA,CAAK,WAAA;AAAA,IACvB,oBAAoB,uBAAA,CAAwB,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,SAAS,QAAQ;AAAA,GACjF;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,IAAA,GAAO,EAAE,EAAA,EAAI,OAAA,CAAQ,MAAM,MAAA,EAAQ,IAAA,EAAM,WAAW,QAAA","file":"cart.js","sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { SallaConditionalOffer } from '@salla.sa/twilight-components-react/conditional-offer';\nimport { SallaOffer } from '@salla.sa/twilight-components-react/offer';\nimport { SallaProductOptions } from '@salla.sa/twilight-components-react/product-options';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { CartPageProps } from './types';\nimport { Breadcrumb, NoContent } from '../../components/common';\nimport { CartItem, CartSummary, SeoCartWidget } from '../../components/cart';\nimport { useTwilight } from '../../providers/twilight-context';\nimport { CartSkeleton } from '../../skeleton';\nimport { loyalty } from '../../api/loyalty';\nimport { cart } from '../../api/cart';\n\nfunction CartPageContent({ page }: CartPageProps) {\n const { store } = useTwilight();\n const { t } = useTranslation();\n const { data: loyaltyPoints } = useQuery(loyalty.queries.points());\n\n const { data: cartId } = useQuery(cart.queries.currentId());\n\n const { data: cartData } = useQuery({\n ...cart.queries.detail(cartId!),\n enabled: !!cartId,\n });\n\n const isLoading = cartId == null || cartData === undefined;\n\n if (isLoading) {\n return <CartSkeleton />;\n }\n\n // No cart: it was already turned into an order, shown empty like Twig.\n if (!cartData || cartData.items.length === 0) {\n return (\n <div className=\"container\">\n <Breadcrumb page={page} />\n <NoContent\n icon=\"sicon-shopping-bag\"\n message={t('pages.cart.empty_cart', 'Your cart is empty')}\n actionLabel={t('common.elements.back_home', 'Back to Home')}\n actionUrl=\"/\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"container\">\n {/* Analytics — no visible UI, fires GTM checkout events */}\n <SeoCartWidget cart={cartData} />\n\n <Breadcrumb page={page} />\n <h1 className=\"sr-only\">{t('common.titles.cart', 'Cart')}</h1>\n <SallaConditionalOffer />\n\n <HookSlot name=\"cart:start\" />\n\n <div className=\"pt-5 flex flex-col items-start lg:flex-row pb-6 lg:pb-20\">\n <div className=\"main-content w-full lg:w-[calc(100%-384px)]\">\n <HookSlot name=\"cart:items.start\" context={{ cartItems: cartData.items }} />\n\n {cartData.items.map((item, index) => (\n <CartItem key={item.id} item={item} isFirst={index === 0} />\n ))}\n\n {cartData.options?.length > 0 && (\n <div className=\"cart-options\">\n {cartData.options.map((option) => (\n <form\n key={option.id}\n className=\"first:pt-5 relative\"\n onChange={(e) => window.salla?.form.onChange('cart.updateItem', e)}\n id={`item-${option.id}`}\n >\n <input type=\"hidden\" name=\"id\" value={option.id} />\n <input type=\"hidden\" name=\"quantity\" value={option.quantity} />\n {/* Twig: {% include 'pages.partials.product.options' with {product:product_option} %} */}\n {option.options && option.options.length > 0 && (\n <SallaProductOptions\n options={JSON.stringify(option.options)}\n productId={option.id}\n />\n )}\n </form>\n ))}\n </div>\n )}\n\n <SallaOffer />\n <HookSlot name=\"cart:items.end\" />\n </div>\n\n <CartSummary\n cart={cartData}\n applyCouponEnabled={store.settings?.cart?.apply_coupon_enabled}\n taxAmount={cartData.tax_amount}\n key={cartData.id}\n loyalty={cartData.loyalty}\n gift={cartData.gift}\n loyaltyPoints={loyaltyPoints ?? undefined}\n />\n </div>\n\n <HookSlot name=\"cart:end\" />\n </div>\n );\n}\n\nexport function CartPage(props: CartPageProps) {\n return <CartPageContent {...props} />;\n}\n","import type { CartPageProps } from './types';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n/**\n * SSR-safe loader that returns only page metadata.\n * Cart data is fetched client-side via React Query since the cart ID\n * lives in localStorage (unavailable during SSR).\n */\nexport function cartLoader(): CartPageProps {\n const i18n = getTwilightContext().i18n;\n return {\n page: { slug: RouteId.CART, title: i18n.t('common.titles.cart') || 'Cart' },\n } as CartPageProps;\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { CartPage } from './CartPage';\nimport { cartLoader } from './loader';\nimport type { CartPageProps } from './types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\nexport { CartPage } from './CartPage';\nexport { cartLoader } from './loader';\nexport type { CartPageProps } from './types';\n\nasync function loader(\n _ctx?: { locale?: string },\n extend?: (\n data: CartPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<CartPageProps> {\n const data = cartLoader();\n\n if (extend) {\n const extra = extend(data, { params: {} });\n return { ...data, ...(extra instanceof Promise ? {} : extra) } as CartPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: CartPageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Cart = { id: RouteId.CART, loader, head, Component: CartPage } as const;\n"]}