@salla.sa/twilight-theme-engine 1.0.59 → 1.0.61

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 (296) hide show
  1. package/dist/{AddToCartForm-IFK5P6XK.js → AddToCartForm-RAQX7VHU.js} +3 -3
  2. package/dist/{AddToCartForm-IFK5P6XK.js.map → AddToCartForm-RAQX7VHU.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-KA3EWFJC.js → BlogAuthorPage-HV6JUJNL.js} +17 -16
  4. package/dist/BlogAuthorPage-HV6JUJNL.js.map +1 -0
  5. package/dist/{BlogCategoryPage-EWFNGPTS.js → BlogCategoryPage-ATPIVUAL.js} +17 -16
  6. package/dist/BlogCategoryPage-ATPIVUAL.js.map +1 -0
  7. package/dist/{BlogPage-E3CN2WJL.js → BlogPage-6IIOSB45.js} +15 -14
  8. package/dist/BlogPage-6IIOSB45.js.map +1 -0
  9. package/dist/{BlogSinglePage-Z4GIRBWI.js → BlogSinglePage-DV3XYB26.js} +15 -14
  10. package/dist/BlogSinglePage-DV3XYB26.js.map +1 -0
  11. package/dist/{BlogTagPage-4D6GMTHN.js → BlogTagPage-RVJIXERD.js} +17 -16
  12. package/dist/BlogTagPage-RVJIXERD.js.map +1 -0
  13. package/dist/BrandsPage-RQXP67LV.js +187 -0
  14. package/dist/BrandsPage-RQXP67LV.js.map +1 -0
  15. package/dist/{Breadcrumb-HZVWJZC4.js → Breadcrumb-NXXVZJJD.js} +15 -14
  16. package/dist/Breadcrumb-NXXVZJJD.js.map +1 -0
  17. package/dist/{CartItem-OBF3TBDK.js → CartItem-XRWTSJB5.js} +15 -14
  18. package/dist/CartItem-XRWTSJB5.js.map +1 -0
  19. package/dist/{CartSummary-GHMZ5LAL.js → CartSummary-F6BY5APF.js} +15 -14
  20. package/dist/CartSummary-F6BY5APF.js.map +1 -0
  21. package/dist/{Copyright-XLIZFWVM.js → Copyright-TEDF6HMC.js} +3 -3
  22. package/dist/{Copyright-XLIZFWVM.js.map → Copyright-TEDF6HMC.js.map} +1 -1
  23. package/dist/{CustomerLayout-JG4GOVSO.js → CustomerLayout-T5BSTU6T.js} +15 -14
  24. package/dist/CustomerLayout-T5BSTU6T.js.map +1 -0
  25. package/dist/{Footer-FV7ZXLY4.js → Footer-IRX2WAEF.js} +15 -14
  26. package/dist/{Footer-FV7ZXLY4.js.map → Footer-IRX2WAEF.js.map} +1 -1
  27. package/dist/{Header-WQ675B65.js → Header-HQKDTZSI.js} +7 -7
  28. package/dist/{Header-WQ675B65.js.map → Header-HQKDTZSI.js.map} +1 -1
  29. package/dist/{LoyaltyPage-SJUUOW3V.js → LoyaltyPage-AIUDZLT7.js} +16 -15
  30. package/dist/LoyaltyPage-AIUDZLT7.js.map +1 -0
  31. package/dist/{MainMenu-SH3YM2CA.js → MainMenu-4ZPVIJCN.js} +9 -8
  32. package/dist/MainMenu-4ZPVIJCN.js.map +1 -0
  33. package/dist/{MasterLayout-VJQDAL7N.js → MasterLayout-G3MVZLYZ.js} +15 -14
  34. package/dist/{MasterLayout-VJQDAL7N.js.map → MasterLayout-G3MVZLYZ.js.map} +1 -1
  35. package/dist/{MobileMenu-JGO33EPX.js → MobileMenu-A5DBTPS7.js} +16 -15
  36. package/dist/MobileMenu-A5DBTPS7.js.map +1 -0
  37. package/dist/{NotificationsPage-DBXZUQW6.js → NotificationsPage-T2O67MLD.js} +15 -14
  38. package/dist/NotificationsPage-T2O67MLD.js.map +1 -0
  39. package/dist/{OrderSinglePage-2ME6HVFH.js → OrderSinglePage-4W4JZX7I.js} +16 -15
  40. package/dist/OrderSinglePage-4W4JZX7I.js.map +1 -0
  41. package/dist/{OrdersPage-6XMYJQAB.js → OrdersPage-DYKFBMRC.js} +16 -15
  42. package/dist/OrdersPage-DYKFBMRC.js.map +1 -0
  43. package/dist/{PageSingle-ATWHQBS7.js → PageSingle-6U6GPMXJ.js} +3 -3
  44. package/dist/{PageSingle-ATWHQBS7.js.map → PageSingle-6U6GPMXJ.js.map} +1 -1
  45. package/dist/{ProductDetails-DH2MRJQ2.js → ProductDetails-OWSIL357.js} +3 -3
  46. package/dist/{ProductDetails-DH2MRJQ2.js.map → ProductDetails-OWSIL357.js.map} +1 -1
  47. package/dist/{ProfilePage-FGJHE5AD.js → ProfilePage-LLCIJHAI.js} +15 -14
  48. package/dist/ProfilePage-LLCIJHAI.js.map +1 -0
  49. package/dist/{SeoCartWidget-ALMYKXRG.js → SeoCartWidget-ZL3FTBWK.js} +15 -14
  50. package/dist/SeoCartWidget-ZL3FTBWK.js.map +1 -0
  51. package/dist/{SettingsPage-K5EM4BLS.js → SettingsPage-2XU5IF4A.js} +15 -14
  52. package/dist/SettingsPage-2XU5IF4A.js.map +1 -0
  53. package/dist/{StoreClosedNotification-3NKLFBKL.js → StoreClosedNotification-CNJI2Q26.js} +16 -15
  54. package/dist/{StoreClosedNotification-3NKLFBKL.js.map → StoreClosedNotification-CNJI2Q26.js.map} +1 -1
  55. package/dist/{TestimonialsPage-UBRVYDQW.js → TestimonialsPage-QYPLMNWL.js} +3 -3
  56. package/dist/{TestimonialsPage-UBRVYDQW.js.map → TestimonialsPage-QYPLMNWL.js.map} +1 -1
  57. package/dist/{ThankYouPage-WPR576XD.js → ThankYouPage-WG3CM5JP.js} +15 -14
  58. package/dist/ThankYouPage-WG3CM5JP.js.map +1 -0
  59. package/dist/{WalletPage-ZMTV7GVF.js → WalletPage-J7CH22JM.js} +16 -15
  60. package/dist/WalletPage-J7CH22JM.js.map +1 -0
  61. package/dist/{WishlistPage-BRB7RZEF.js → WishlistPage-ZXWYB56R.js} +17 -16
  62. package/dist/WishlistPage-ZXWYB56R.js.map +1 -0
  63. package/dist/api/apps.js +6 -5
  64. package/dist/api/brands.d.ts +6 -5
  65. package/dist/api/brands.d.ts.map +1 -1
  66. package/dist/api/brands.js +7 -6
  67. package/dist/api/cart.js +7 -6
  68. package/dist/api/category.js +7 -6
  69. package/dist/api/client.js +5 -4
  70. package/dist/api/home.js +6 -5
  71. package/dist/api/loyalty.js +7 -6
  72. package/dist/api/menu.js +6 -5
  73. package/dist/api/messages.d.ts +58 -0
  74. package/dist/api/messages.d.ts.map +1 -0
  75. package/dist/api/notification.js +6 -5
  76. package/dist/api/order.js +7 -6
  77. package/dist/api/page.js +7 -6
  78. package/dist/api/product.js +7 -6
  79. package/dist/api/profile.js +5 -4
  80. package/dist/api/profile.js.map +1 -1
  81. package/dist/api/store.js +6 -5
  82. package/dist/api/translations.d.ts +7 -2
  83. package/dist/api/translations.d.ts.map +1 -1
  84. package/dist/api/translations.js +6 -5
  85. package/dist/api/user.js +6 -5
  86. package/dist/api/wishlist.js +8 -7
  87. package/dist/{chunk-B3Z7WNO5.js → chunk-2U3PUO3V.js} +18 -16
  88. package/dist/chunk-2U3PUO3V.js.map +1 -0
  89. package/dist/{chunk-POATRFUM.js → chunk-2XGQSJKH.js} +3 -3
  90. package/dist/{chunk-POATRFUM.js.map → chunk-2XGQSJKH.js.map} +1 -1
  91. package/dist/{chunk-ODNUSQLR.js → chunk-3ITQB3PY.js} +4 -4
  92. package/dist/{chunk-ODNUSQLR.js.map → chunk-3ITQB3PY.js.map} +1 -1
  93. package/dist/{chunk-G2UPOKZZ.js → chunk-3YVAYIM4.js} +6 -6
  94. package/dist/{chunk-G2UPOKZZ.js.map → chunk-3YVAYIM4.js.map} +1 -1
  95. package/dist/{chunk-RA6FYDRQ.js → chunk-4DHLIY6V.js} +4 -4
  96. package/dist/{chunk-RA6FYDRQ.js.map → chunk-4DHLIY6V.js.map} +1 -1
  97. package/dist/{chunk-WD7HOPT5.js → chunk-5X2UFNKY.js} +3 -3
  98. package/dist/{chunk-WD7HOPT5.js.map → chunk-5X2UFNKY.js.map} +1 -1
  99. package/dist/{chunk-GJXCHLKY.js → chunk-5ZR2HKZ7.js} +3 -3
  100. package/dist/{chunk-GJXCHLKY.js.map → chunk-5ZR2HKZ7.js.map} +1 -1
  101. package/dist/{chunk-5EPR726Z.js → chunk-6IDCWH5K.js} +10 -7
  102. package/dist/chunk-6IDCWH5K.js.map +1 -0
  103. package/dist/{chunk-JR2NYBZS.js → chunk-7OIP65ER.js} +5 -5
  104. package/dist/{chunk-JR2NYBZS.js.map → chunk-7OIP65ER.js.map} +1 -1
  105. package/dist/{chunk-IUZ2IZFK.js → chunk-EAZGFREP.js} +3 -3
  106. package/dist/{chunk-IUZ2IZFK.js.map → chunk-EAZGFREP.js.map} +1 -1
  107. package/dist/{chunk-MFL6R2WL.js → chunk-FUIPNVQY.js} +6 -6
  108. package/dist/{chunk-MFL6R2WL.js.map → chunk-FUIPNVQY.js.map} +1 -1
  109. package/dist/{chunk-K3WTFB6A.js → chunk-GUGZ4CEG.js} +4 -4
  110. package/dist/{chunk-K3WTFB6A.js.map → chunk-GUGZ4CEG.js.map} +1 -1
  111. package/dist/{chunk-SDXKGWMC.js → chunk-IZFZLJHD.js} +5 -5
  112. package/dist/{chunk-SDXKGWMC.js.map → chunk-IZFZLJHD.js.map} +1 -1
  113. package/dist/{chunk-UIC4FUJM.js → chunk-JVGZDLFP.js} +4 -4
  114. package/dist/{chunk-UIC4FUJM.js.map → chunk-JVGZDLFP.js.map} +1 -1
  115. package/dist/{chunk-JNCLDK5D.js → chunk-LCJW7JKZ.js} +5 -5
  116. package/dist/{chunk-JNCLDK5D.js.map → chunk-LCJW7JKZ.js.map} +1 -1
  117. package/dist/{chunk-YDU4K4M7.js → chunk-N2S25NXP.js} +76 -12
  118. package/dist/chunk-N2S25NXP.js.map +1 -0
  119. package/dist/{chunk-55NGYH3V.js → chunk-N4THXNXA.js} +29 -23
  120. package/dist/chunk-N4THXNXA.js.map +1 -0
  121. package/dist/{chunk-WOFJ3WBJ.js → chunk-NFTOMTTI.js} +4 -4
  122. package/dist/{chunk-WOFJ3WBJ.js.map → chunk-NFTOMTTI.js.map} +1 -1
  123. package/dist/{chunk-PU6G2UIX.js → chunk-NHKP5XIG.js} +4 -4
  124. package/dist/{chunk-PU6G2UIX.js.map → chunk-NHKP5XIG.js.map} +1 -1
  125. package/dist/{chunk-JNB2WC5Z.js → chunk-NQVJ7NJ6.js} +3 -3
  126. package/dist/{chunk-JNB2WC5Z.js.map → chunk-NQVJ7NJ6.js.map} +1 -1
  127. package/dist/{chunk-AEQ6NRTE.js → chunk-OET4G4XC.js} +3 -3
  128. package/dist/{chunk-AEQ6NRTE.js.map → chunk-OET4G4XC.js.map} +1 -1
  129. package/dist/{chunk-POLSCD5O.js → chunk-P3OPJL6I.js} +6 -5
  130. package/dist/chunk-P3OPJL6I.js.map +1 -0
  131. package/dist/{chunk-B3EFOE57.js → chunk-PK7EU5TM.js} +2 -2
  132. package/dist/chunk-PK7EU5TM.js.map +1 -0
  133. package/dist/{chunk-SHHF6XXL.js → chunk-Q3COPV5Z.js} +31 -34
  134. package/dist/chunk-Q3COPV5Z.js.map +1 -0
  135. package/dist/{chunk-RL4VZU3P.js → chunk-RJAVZBUK.js} +3 -3
  136. package/dist/{chunk-RL4VZU3P.js.map → chunk-RJAVZBUK.js.map} +1 -1
  137. package/dist/{chunk-XTMHHLNK.js → chunk-SR4OTLTJ.js} +23 -5
  138. package/dist/chunk-SR4OTLTJ.js.map +1 -0
  139. package/dist/{chunk-JVKDYZMW.js → chunk-TDZSHACC.js} +30 -5
  140. package/dist/chunk-TDZSHACC.js.map +1 -0
  141. package/dist/{chunk-JMBO6VHQ.js → chunk-TLAEW7TB.js} +3 -3
  142. package/dist/{chunk-JMBO6VHQ.js.map → chunk-TLAEW7TB.js.map} +1 -1
  143. package/dist/{chunk-XJDQHKV6.js → chunk-TLO2M5TJ.js} +5 -5
  144. package/dist/{chunk-XJDQHKV6.js.map → chunk-TLO2M5TJ.js.map} +1 -1
  145. package/dist/{chunk-UFOSIY3P.js → chunk-TTMYT3RB.js} +4 -4
  146. package/dist/{chunk-UFOSIY3P.js.map → chunk-TTMYT3RB.js.map} +1 -1
  147. package/dist/{chunk-RLNBEDA4.js → chunk-TYLKNVQA.js} +5 -25
  148. package/dist/chunk-TYLKNVQA.js.map +1 -0
  149. package/dist/{chunk-MJGW6YZQ.js → chunk-UIOLSYKV.js} +3 -3
  150. package/dist/{chunk-MJGW6YZQ.js.map → chunk-UIOLSYKV.js.map} +1 -1
  151. package/dist/{chunk-G5ZVKWD7.js → chunk-UZKTK6YV.js} +4 -4
  152. package/dist/{chunk-G5ZVKWD7.js.map → chunk-UZKTK6YV.js.map} +1 -1
  153. package/dist/{chunk-232SREMP.js → chunk-VJHDE6UT.js} +4 -4
  154. package/dist/{chunk-232SREMP.js.map → chunk-VJHDE6UT.js.map} +1 -1
  155. package/dist/{chunk-35B7ACNO.js → chunk-VSJLPWFI.js} +4 -4
  156. package/dist/{chunk-35B7ACNO.js.map → chunk-VSJLPWFI.js.map} +1 -1
  157. package/dist/{chunk-NXJJ3IP3.js → chunk-W2B5P54C.js} +4 -4
  158. package/dist/{chunk-NXJJ3IP3.js.map → chunk-W2B5P54C.js.map} +1 -1
  159. package/dist/{chunk-FLAJQXOM.js → chunk-WH225GEC.js} +26 -11
  160. package/dist/chunk-WH225GEC.js.map +1 -0
  161. package/dist/chunk-WY4IYO3G.js +25 -0
  162. package/dist/chunk-WY4IYO3G.js.map +1 -0
  163. package/dist/{chunk-RQOCJRHY.js → chunk-YH4O3H4R.js} +4 -4
  164. package/dist/{chunk-RQOCJRHY.js.map → chunk-YH4O3H4R.js.map} +1 -1
  165. package/dist/chunk-ZPRZQTYM.js +14 -0
  166. package/dist/{chunk-MU4ACHQU.js.map → chunk-ZPRZQTYM.js.map} +1 -1
  167. package/dist/chunk-ZQGMVUPE.js +29 -0
  168. package/dist/chunk-ZQGMVUPE.js.map +1 -0
  169. package/dist/components/cart/index.js +1 -1
  170. package/dist/components/common/index.js +1 -1
  171. package/dist/components/drawer/index.js +13 -12
  172. package/dist/components/home/index.js +16 -15
  173. package/dist/components/layout/index.js +5 -5
  174. package/dist/components/product/index.js +14 -13
  175. package/dist/components/store/index.js +15 -14
  176. package/dist/components/store/index.js.map +1 -1
  177. package/dist/document-class-7KPUN2DK.js +26 -0
  178. package/dist/{document-class-QLK3MMHA.js.map → document-class-7KPUN2DK.js.map} +1 -1
  179. package/dist/hooks/index.js +13 -12
  180. package/dist/hooks/useGtm.js +13 -12
  181. package/dist/hooks/useMoney.js +13 -12
  182. package/dist/hooks/useStore.js +13 -12
  183. package/dist/hooks/useUser.js +7 -6
  184. package/dist/index.js +13 -12
  185. package/dist/index.js.map +1 -1
  186. package/dist/navigation-QMBOIYJI.js +12 -0
  187. package/dist/{navigation-7ZIYPM45.js.map → navigation-QMBOIYJI.js.map} +1 -1
  188. package/dist/{navigation-ZRCCK54S.js → navigation-XZJCQXY3.js} +5 -5
  189. package/dist/{navigation-ZRCCK54S.js.map → navigation-XZJCQXY3.js.map} +1 -1
  190. package/dist/{not-found-M6PIZHJW.js → not-found-UE5XOV5C.js} +16 -15
  191. package/dist/not-found-UE5XOV5C.js.map +1 -0
  192. package/dist/providers/NavigationProvider.d.ts +5 -5
  193. package/dist/providers/NavigationProvider.d.ts.map +1 -1
  194. package/dist/providers/TwilightProvider.d.ts.map +1 -1
  195. package/dist/providers/index.js +13 -12
  196. package/dist/routes/account/notifications/loader.d.ts.map +1 -1
  197. package/dist/routes/account/orders/loader.d.ts.map +1 -1
  198. package/dist/routes/account/orders.js +8 -7
  199. package/dist/routes/account/profile/loader.d.ts.map +1 -1
  200. package/dist/routes/account/settings/loader.d.ts.map +1 -1
  201. package/dist/routes/account/wallet/loader.d.ts.map +1 -1
  202. package/dist/routes/account/wishlist/loader.d.ts.map +1 -1
  203. package/dist/routes/account.js +24 -20
  204. package/dist/routes/account.js.map +1 -1
  205. package/dist/routes/blog.js +12 -11
  206. package/dist/routes/blog.js.map +1 -1
  207. package/dist/routes/brands/BrandsPage.d.ts +1 -1
  208. package/dist/routes/brands/BrandsPage.d.ts.map +1 -1
  209. package/dist/routes/brands/index.d.ts +2 -2
  210. package/dist/routes/brands/index.d.ts.map +1 -1
  211. package/dist/routes/brands/loader.d.ts.map +1 -1
  212. package/dist/routes/brands/types.d.ts +4 -1
  213. package/dist/routes/brands/types.d.ts.map +1 -1
  214. package/dist/routes/brands.js +12 -22
  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 -4
  220. package/dist/routes/lazy.d.ts +1 -1
  221. package/dist/routes/lazy.d.ts.map +1 -1
  222. package/dist/routes/loyalty/index.d.ts +1 -1
  223. package/dist/routes/loyalty/index.d.ts.map +1 -1
  224. package/dist/routes/loyalty/loader.d.ts +1 -1
  225. package/dist/routes/loyalty/loader.d.ts.map +1 -1
  226. package/dist/routes/loyalty.js +21 -12
  227. package/dist/routes/loyalty.js.map +1 -1
  228. package/dist/routes/page.js +8 -7
  229. package/dist/routes/page.js.map +1 -1
  230. package/dist/routes/product-listing.js +18 -17
  231. package/dist/routes/product-listing.js.map +1 -1
  232. package/dist/routes/product.js +16 -15
  233. package/dist/routes/product.js.map +1 -1
  234. package/dist/routes/seo-redirects.js +4 -4
  235. package/dist/routes/testimonials.js +2 -2
  236. package/dist/routes/thank-you.js +8 -7
  237. package/dist/routes/thank-you.js.map +1 -1
  238. package/dist/skeleton.js +18 -17
  239. package/dist/tanstack/navigation.d.ts.map +1 -1
  240. package/dist/tanstack/router.d.ts.map +1 -1
  241. package/dist/tanstack.js +19 -28
  242. package/dist/tanstack.js.map +1 -1
  243. package/dist/twilight/context.d.ts.map +1 -1
  244. package/dist/utils/cookies.d.ts +7 -0
  245. package/dist/utils/cookies.d.ts.map +1 -1
  246. package/dist/utils/head.d.ts +3 -0
  247. package/dist/utils/head.d.ts.map +1 -1
  248. package/dist/utils/head.js +1 -1
  249. package/dist/utils/index.js +7 -6
  250. package/dist/utils/index.js.map +1 -1
  251. package/dist/utils/request-host.d.ts +2 -8
  252. package/dist/utils/request-host.d.ts.map +1 -1
  253. package/dist/utils/store-base.d.ts +11 -0
  254. package/dist/utils/store-base.d.ts.map +1 -1
  255. package/dist/vite/index.js +3 -3
  256. package/package.json +1 -1
  257. package/dist/BlogAuthorPage-KA3EWFJC.js.map +0 -1
  258. package/dist/BlogCategoryPage-EWFNGPTS.js.map +0 -1
  259. package/dist/BlogPage-E3CN2WJL.js.map +0 -1
  260. package/dist/BlogSinglePage-Z4GIRBWI.js.map +0 -1
  261. package/dist/BlogTagPage-4D6GMTHN.js.map +0 -1
  262. package/dist/BrandsPage-C6EZVXQC.js +0 -132
  263. package/dist/BrandsPage-C6EZVXQC.js.map +0 -1
  264. package/dist/Breadcrumb-HZVWJZC4.js.map +0 -1
  265. package/dist/CartItem-OBF3TBDK.js.map +0 -1
  266. package/dist/CartSummary-GHMZ5LAL.js.map +0 -1
  267. package/dist/CustomerLayout-JG4GOVSO.js.map +0 -1
  268. package/dist/LoyaltyPage-SJUUOW3V.js.map +0 -1
  269. package/dist/MainMenu-SH3YM2CA.js.map +0 -1
  270. package/dist/MobileMenu-JGO33EPX.js.map +0 -1
  271. package/dist/NotificationsPage-DBXZUQW6.js.map +0 -1
  272. package/dist/OrderSinglePage-2ME6HVFH.js.map +0 -1
  273. package/dist/OrdersPage-6XMYJQAB.js.map +0 -1
  274. package/dist/ProfilePage-FGJHE5AD.js.map +0 -1
  275. package/dist/SeoCartWidget-ALMYKXRG.js.map +0 -1
  276. package/dist/SettingsPage-K5EM4BLS.js.map +0 -1
  277. package/dist/ThankYouPage-WPR576XD.js.map +0 -1
  278. package/dist/WalletPage-ZMTV7GVF.js.map +0 -1
  279. package/dist/WishlistPage-BRB7RZEF.js.map +0 -1
  280. package/dist/chunk-55NGYH3V.js.map +0 -1
  281. package/dist/chunk-5EPR726Z.js.map +0 -1
  282. package/dist/chunk-B3EFOE57.js.map +0 -1
  283. package/dist/chunk-B3Z7WNO5.js.map +0 -1
  284. package/dist/chunk-FLAJQXOM.js.map +0 -1
  285. package/dist/chunk-JVKDYZMW.js.map +0 -1
  286. package/dist/chunk-MU4ACHQU.js +0 -14
  287. package/dist/chunk-NQHOKDDF.js +0 -29
  288. package/dist/chunk-NQHOKDDF.js.map +0 -1
  289. package/dist/chunk-POLSCD5O.js.map +0 -1
  290. package/dist/chunk-RLNBEDA4.js.map +0 -1
  291. package/dist/chunk-SHHF6XXL.js.map +0 -1
  292. package/dist/chunk-XTMHHLNK.js.map +0 -1
  293. package/dist/chunk-YDU4K4M7.js.map +0 -1
  294. package/dist/document-class-QLK3MMHA.js +0 -25
  295. package/dist/navigation-7ZIYPM45.js +0 -11
  296. package/dist/not-found-M6PIZHJW.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BrandsPage.d.ts","sourceRoot":"","sources":["../../../src/routes/brands/BrandsPage.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,iBAAS,mBAAmB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,+BAmG7D;AAED,eAAO,MAAM,UAAU,iEAA4B,CAAC"}
1
+ {"version":3,"file":"BrandsPage.d.ts","sourceRoot":"","sources":["../../../src/routes/brands/BrandsPage.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,SAAS,CAAC;AA2FnE,iBAAS,mBAAmB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,eAAe,+BA8EzE;AAED,eAAO,MAAM,UAAU,iEAA4B,CAAC"}
@@ -2,7 +2,7 @@ import type { HeadDescriptor } from '../../utils/head';
2
2
  import { brandsLoader } from './loader';
3
3
  import type { BrandsPageProps } from './types';
4
4
  import type { TwilightContext } from '../../twilight/context';
5
- export declare const BrandsPage: import("react").LazyExoticComponent<import("react").MemoExoticComponent<({ page, brands }: BrandsPageProps) => import("react").JSX.Element>>;
5
+ export declare const BrandsPage: import("react").LazyExoticComponent<import("react").MemoExoticComponent<({ page, brands, pagination }: BrandsPageProps) => import("react").JSX.Element>>;
6
6
  export { brandsLoader };
7
7
  export type { BrandsPageProps, Brand, BrandsGroup } from './types';
8
8
  declare function brandsLoaderWithExtend(_ctx?: {
@@ -15,6 +15,6 @@ export declare const Brands: {
15
15
  readonly id: "brands.index";
16
16
  readonly loader: typeof brandsLoaderWithExtend;
17
17
  readonly head: typeof brandsHead;
18
- readonly Component: import("react").LazyExoticComponent<import("react").MemoExoticComponent<({ page, brands }: BrandsPageProps) => import("react").JSX.Element>>;
18
+ readonly Component: import("react").LazyExoticComponent<import("react").MemoExoticComponent<({ page, brands, pagination }: BrandsPageProps) => import("react").JSX.Element>>;
19
19
  };
20
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/brands/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,eAAO,MAAM,UAAU,8IAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEnE,iBAAe,sBAAsB,CACnC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1B,MAAM,CAAC,EAAE,CACP,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,KACnC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9D,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAED,iBAAS,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,GAAG,cAAc,CAQ/E;AAED,eAAO,MAAM,MAAM;;;;;CAKT,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/brands/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,eAAO,MAAM,UAAU,0JAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEnE,iBAAe,sBAAsB,CACnC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1B,MAAM,CAAC,EAAE,CACP,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,KACnC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9D,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAED,iBAAS,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,GAAG,cAAc,CAQ/E;AAED,eAAO,MAAM,MAAM;;;;;CAKT,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/routes/brands/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,eAAe,EAAE,MAAM,SAAS,CAAC;AAK5D,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAqB7D"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/routes/brands/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAQ7D"}
@@ -3,6 +3,7 @@
3
3
  * Only types that need to be exported.
4
4
  */
5
5
  import type { Page } from '../../types';
6
+ import type { RoutePagination } from '../types';
6
7
  export interface Brand {
7
8
  id: string;
8
9
  url: string;
@@ -27,6 +28,8 @@ export interface BrandsGroup {
27
28
  }
28
29
  export interface BrandsPageProps {
29
30
  page: Page;
30
- brands: BrandsGroup;
31
+ /** The first page of brands; the page groups them by letter and loads the rest on scroll. */
32
+ brands: Brand[];
33
+ pagination?: RoutePagination;
31
34
  }
32
35
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/routes/brands/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,CAAC;CACzB;AAGD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,WAAW,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/routes/brands/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,CAAC;CACzB;AAGD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,6FAA6F;IAC7F,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B"}
@@ -1,11 +1,12 @@
1
- import { brand } from '../chunk-NQHOKDDF.js';
1
+ import { brand } from '../chunk-ZQGMVUPE.js';
2
2
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
3
- import '../chunk-FLAJQXOM.js';
3
+ import '../chunk-WH225GEC.js';
4
4
  import { RouteId } from '../chunk-TFB3QXYH.js';
5
- import '../chunk-POLSCD5O.js';
6
- import '../chunk-RLNBEDA4.js';
7
- import '../chunk-XTMHHLNK.js';
8
- import { getTwilightContext } from '../chunk-YDU4K4M7.js';
5
+ import '../chunk-P3OPJL6I.js';
6
+ import '../chunk-WY4IYO3G.js';
7
+ import '../chunk-TYLKNVQA.js';
8
+ import '../chunk-SR4OTLTJ.js';
9
+ import { getTwilightContext } from '../chunk-N2S25NXP.js';
9
10
  import '../chunk-T72DAX7R.js';
10
11
  import '../chunk-DF6FBKDN.js';
11
12
  import '../chunk-DGUM43GV.js';
@@ -13,28 +14,17 @@ import { lazy } from 'react';
13
14
 
14
15
  // src/routes/brands/loader.ts
15
16
  async function brandsLoader() {
16
- const data = await brand.list();
17
- const ctx = getTwilightContext();
18
- const groupBrands = () => {
19
- if (!data) return {};
20
- const sortedKeys = Object.keys(data).sort(
21
- (a, b) => a.localeCompare(b, ctx.locale === "ar" ? "ar" : "en")
22
- );
23
- const sortedGrouped = {};
24
- sortedKeys.forEach((key) => {
25
- sortedGrouped[key] = data[key];
26
- });
27
- return sortedGrouped;
28
- };
29
- const i18n = ctx.i18n;
17
+ const { items, next } = await brand.list();
18
+ const i18n = getTwilightContext().i18n;
30
19
  return {
31
20
  page: { slug: RouteId.BRANDS_INDEX, title: i18n.t("common.titles.brands") || "Brands" },
32
- brands: data ? groupBrands() : {}
21
+ brands: items,
22
+ pagination: { next }
33
23
  };
34
24
  }
35
25
 
36
26
  // src/routes/brands/index.tsx
37
- var LazyBrandsPage = lazy(() => import('../BrandsPage-C6EZVXQC.js').then((m) => ({ default: m.BrandsPage })));
27
+ var LazyBrandsPage = lazy(() => import('../BrandsPage-RQXP67LV.js').then((m) => ({ default: m.BrandsPage })));
38
28
  var BrandsPage = LazyBrandsPage;
39
29
  async function brandsLoaderWithExtend(_ctx, extend) {
40
30
  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,IAAA,GAAO,MAAM,KAAA,CAAM,IAAA,EAAK;AAC9B,EAAA,MAAM,MAAM,kBAAA,EAAmB;AAE/B,EAAA,MAAM,cAAc,MAAmB;AACrC,IAAA,IAAI,CAAC,IAAA,EAAM,OAAO,EAAC;AACnB,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,IAAA;AAAA,MAAK,CAAC,CAAA,EAAG,CAAA,KAC5C,CAAA,CAAE,aAAA,CAAc,GAAG,GAAA,CAAI,MAAA,KAAW,IAAA,GAAO,IAAA,GAAO,IAAI;AAAA,KACtD;AACA,IAAA,MAAM,gBAA6B,EAAC;AACpC,IAAA,UAAA,CAAW,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC1B,MAAA,aAAA,CAAc,GAAG,CAAA,GAAI,IAAA,CAAK,GAAG,CAAA;AAAA,IAC/B,CAAC,CAAA;AACD,IAAA,OAAO,aAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,OAAO,GAAA,CAAI,IAAA;AACjB,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,IAAA,GAAO,WAAA,EAAY,GAAI;AAAC,GAClC;AACF;;;ACjBA,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 { BrandsGroup, 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 data = await brand.list();\n const ctx = getTwilightContext();\n\n const groupBrands = (): BrandsGroup => {\n if (!data) return {};\n const sortedKeys = Object.keys(data).sort((a, b) =>\n a.localeCompare(b, ctx.locale === 'ar' ? 'ar' : 'en')\n );\n const sortedGrouped: BrandsGroup = {};\n sortedKeys.forEach((key) => {\n sortedGrouped[key] = data[key];\n });\n return sortedGrouped;\n };\n\n const i18n = ctx.i18n;\n return {\n page: { slug: RouteId.BRANDS_INDEX, title: i18n.t('common.titles.brands') || 'Brands' },\n brands: data ? groupBrands() : {},\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,30 +1,31 @@
1
- import { cart } from '../chunk-RA6FYDRQ.js';
2
- import { loyalty } from '../chunk-RQOCJRHY.js';
1
+ import { cart } from '../chunk-4DHLIY6V.js';
2
+ import { loyalty } from '../chunk-YH4O3H4R.js';
3
3
  import { CartSkeleton } from '../chunk-N7CCSGZF.js';
4
- import '../chunk-JNCLDK5D.js';
5
- import '../chunk-JNB2WC5Z.js';
4
+ import '../chunk-LCJW7JKZ.js';
5
+ import '../chunk-NQVJ7NJ6.js';
6
6
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
7
- import '../chunk-SDXKGWMC.js';
8
- import '../chunk-XJDQHKV6.js';
9
- import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-MU4ACHQU.js';
10
- import '../chunk-MFL6R2WL.js';
7
+ import '../chunk-IZFZLJHD.js';
8
+ import '../chunk-TLO2M5TJ.js';
9
+ import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-ZPRZQTYM.js';
10
+ import '../chunk-FUIPNVQY.js';
11
11
  import '../chunk-342EPVXN.js';
12
- import '../chunk-B3Z7WNO5.js';
13
- import '../chunk-G2UPOKZZ.js';
12
+ import '../chunk-2U3PUO3V.js';
13
+ import '../chunk-3YVAYIM4.js';
14
14
  import '../chunk-JKIRRMBU.js';
15
15
  import '../chunk-2JV6WZ6O.js';
16
- import '../chunk-MJGW6YZQ.js';
16
+ import '../chunk-UIOLSYKV.js';
17
17
  import '../chunk-VVZNW5CB.js';
18
- import '../chunk-POATRFUM.js';
19
- import '../chunk-FLAJQXOM.js';
18
+ import '../chunk-2XGQSJKH.js';
19
+ import '../chunk-WH225GEC.js';
20
20
  import { RouteId } from '../chunk-TFB3QXYH.js';
21
21
  import '../chunk-C5X6CVXC.js';
22
- import '../chunk-G5ZVKWD7.js';
23
- import '../chunk-WD7HOPT5.js';
24
- import '../chunk-POLSCD5O.js';
25
- import '../chunk-RLNBEDA4.js';
26
- import '../chunk-XTMHHLNK.js';
27
- import { getTwilightContext } from '../chunk-YDU4K4M7.js';
22
+ import '../chunk-UZKTK6YV.js';
23
+ import '../chunk-5X2UFNKY.js';
24
+ import '../chunk-P3OPJL6I.js';
25
+ import '../chunk-WY4IYO3G.js';
26
+ import '../chunk-TYLKNVQA.js';
27
+ import '../chunk-SR4OTLTJ.js';
28
+ import { getTwilightContext } from '../chunk-N2S25NXP.js';
28
29
  import '../chunk-TP3LCGE7.js';
29
30
  import '../chunk-Z653O7MX.js';
30
31
  import '../chunk-ZCH7W7DZ.js';
@@ -40,7 +41,7 @@ import '../chunk-YMVLYYLU.js';
40
41
  import '../chunk-RJPPO3ET.js';
41
42
  import { HookSlot } from '../chunk-Q7VWURUR.js';
42
43
  import '../chunk-GU2KUQVD.js';
43
- import { LazyBreadcrumb, LazyNoContent } from '../chunk-JMBO6VHQ.js';
44
+ import { LazyBreadcrumb, LazyNoContent } from '../chunk-TLAEW7TB.js';
44
45
  import '../chunk-AXW67SY7.js';
45
46
  import '../chunk-BYMOPN2S.js';
46
47
  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 { useState, useEffect } from 'react';\nimport { 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 [cartId, setCartId] = useState<number | null>(null);\n\n useEffect(() => {\n window.salla?.cart.api.getCurrentCartId().then(setCartId);\n }, []);\n\n const { data: cartData } = useQuery({\n ...cart.queries.detail(cartId!),\n enabled: !!cartId,\n });\n\n const isLoading = cartId === null || !cartData;\n\n if (isLoading) {\n return <CartSkeleton />;\n }\n\n if (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":"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","file":"cart.js","sourcesContent":["import { useState, useEffect } from 'react';\nimport { 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 [cartId, setCartId] = useState<number | null>(null);\n\n useEffect(() => {\n window.salla?.cart.api.getCurrentCartId().then(setCartId);\n }, []);\n\n const { data: cartData } = useQuery({\n ...cart.queries.detail(cartId!),\n enabled: !!cartId,\n });\n\n const isLoading = cartId === null || !cartData;\n\n if (isLoading) {\n return <CartSkeleton />;\n }\n\n if (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,26 +1,27 @@
1
- export { Home, HomeSkeleton, homeLoader } from '../chunk-JNCLDK5D.js';
2
- import '../chunk-JNB2WC5Z.js';
1
+ export { Home, HomeSkeleton, homeLoader } from '../chunk-LCJW7JKZ.js';
2
+ import '../chunk-NQVJ7NJ6.js';
3
3
  import '../chunk-TZ3E5BN4.js';
4
- export { DefaultHomeComponents, registerHomeComponentConfig, registerHomeComponents } from '../chunk-SDXKGWMC.js';
5
- import '../chunk-XJDQHKV6.js';
6
- import '../chunk-MFL6R2WL.js';
4
+ export { DefaultHomeComponents, registerHomeComponentConfig, registerHomeComponents } from '../chunk-IZFZLJHD.js';
5
+ import '../chunk-TLO2M5TJ.js';
6
+ import '../chunk-FUIPNVQY.js';
7
7
  import '../chunk-342EPVXN.js';
8
- import '../chunk-B3Z7WNO5.js';
9
- import '../chunk-G2UPOKZZ.js';
8
+ import '../chunk-2U3PUO3V.js';
9
+ import '../chunk-3YVAYIM4.js';
10
10
  import '../chunk-JKIRRMBU.js';
11
11
  import '../chunk-2JV6WZ6O.js';
12
- import '../chunk-MJGW6YZQ.js';
12
+ import '../chunk-UIOLSYKV.js';
13
13
  import '../chunk-VVZNW5CB.js';
14
- import '../chunk-POATRFUM.js';
15
- import '../chunk-FLAJQXOM.js';
14
+ import '../chunk-2XGQSJKH.js';
15
+ import '../chunk-WH225GEC.js';
16
16
  import '../chunk-TFB3QXYH.js';
17
17
  import '../chunk-C5X6CVXC.js';
18
- import '../chunk-G5ZVKWD7.js';
19
- import '../chunk-WD7HOPT5.js';
20
- import '../chunk-POLSCD5O.js';
21
- import '../chunk-RLNBEDA4.js';
22
- import '../chunk-XTMHHLNK.js';
23
- import '../chunk-YDU4K4M7.js';
18
+ import '../chunk-UZKTK6YV.js';
19
+ import '../chunk-5X2UFNKY.js';
20
+ import '../chunk-P3OPJL6I.js';
21
+ import '../chunk-WY4IYO3G.js';
22
+ import '../chunk-TYLKNVQA.js';
23
+ import '../chunk-SR4OTLTJ.js';
24
+ import '../chunk-N2S25NXP.js';
24
25
  import '../chunk-TP3LCGE7.js';
25
26
  import '../chunk-Z653O7MX.js';
26
27
  import '../chunk-ZCH7W7DZ.js';
@@ -36,7 +37,7 @@ import '../chunk-YMVLYYLU.js';
36
37
  import '../chunk-RJPPO3ET.js';
37
38
  import '../chunk-Q7VWURUR.js';
38
39
  import '../chunk-GU2KUQVD.js';
39
- import '../chunk-JMBO6VHQ.js';
40
+ import '../chunk-TLAEW7TB.js';
40
41
  import '../chunk-AXW67SY7.js';
41
42
  import '../chunk-BYMOPN2S.js';
42
43
  import '../chunk-SKLEJJ6M.js';
@@ -1,8 +1,8 @@
1
- export { slugBrandRedirectLoader } from '../chunk-35B7ACNO.js';
2
- import '../chunk-FLAJQXOM.js';
1
+ export { slugBrandRedirectLoader } from '../chunk-VSJLPWFI.js';
2
+ import '../chunk-WH225GEC.js';
3
3
  import '../chunk-TFB3QXYH.js';
4
- import '../chunk-XTMHHLNK.js';
5
- import '../chunk-YDU4K4M7.js';
4
+ import '../chunk-SR4OTLTJ.js';
5
+ import '../chunk-N2S25NXP.js';
6
6
  import '../chunk-TYNZ5B2B.js';
7
7
  export { FALLBACK_LOCALE, SUPPORTED_LOCALES, getLanguageInfo, isLocale } from '../chunk-T72DAX7R.js';
8
8
  import '../chunk-DF6FBKDN.js';
@@ -7,7 +7,7 @@ export declare const LazyBlogSinglePage: import("react").LazyExoticComponent<typ
7
7
  export declare const LazyBlogAuthorPage: import("react").LazyExoticComponent<typeof import("./blog/BlogAuthorPage").BlogAuthorPage>;
8
8
  export declare const LazyBlogCategoryPage: import("react").LazyExoticComponent<typeof import("./blog/BlogCategoryPage").BlogCategoryPage>;
9
9
  export declare const LazyBlogTagPage: import("react").LazyExoticComponent<typeof import("./blog/BlogTagPage").BlogTagPage>;
10
- export declare const LazyBrandsPage: import("react").LazyExoticComponent<import("react").MemoExoticComponent<({ page, brands }: import("./brands").BrandsPageProps) => import("react").JSX.Element>>;
10
+ export declare const LazyBrandsPage: import("react").LazyExoticComponent<import("react").MemoExoticComponent<({ page, brands, pagination }: import("./brands").BrandsPageProps) => import("react").JSX.Element>>;
11
11
  export declare const LazyProfilePage: import("react").LazyExoticComponent<typeof import("./account/profile/ProfilePage").ProfilePage>;
12
12
  export declare const LazyWishlistPage: import("react").LazyExoticComponent<typeof import("./account/wishlist/WishlistPage").WishlistPage>;
13
13
  export declare const LazyWalletPage: import("react").LazyExoticComponent<typeof import("./account/wallet/WalletPage").WalletPage>;
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/routes/lazy.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,2JAExB,CAAC;AAGF,eAAO,MAAM,YAAY,uEAExB,CAAC;AAGF,eAAO,MAAM,eAAe,yFAE3B,CAAC;AAGF,eAAO,MAAM,sBAAsB,yFAElC,CAAC;AAGF,eAAO,MAAM,YAAY,gFAExB,CAAC;AAEF,eAAO,MAAM,kBAAkB,4FAE9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,4FAE9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,gGAEhC,CAAC;AAEF,eAAO,MAAM,eAAe,sFAE3B,CAAC;AAGF,eAAO,MAAM,cAAc,iKAE1B,CAAC;AAKF,eAAO,MAAM,eAAe,iGAE3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,oGAE5B,CAAC;AAEF,eAAO,MAAM,cAAc,8FAE1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,mHAIjC,CAAC;AAEF,eAAO,MAAM,gBAAgB,oGAE5B,CAAC;AAEF,eAAO,MAAM,cAAc,8FAE1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,wGAE/B,CAAC;AAGF,eAAO,MAAM,eAAe,yFAE3B,CAAC;AAGF,eAAO,MAAM,cAAc,oFAE1B,CAAC;AAGF,eAAO,MAAM,oBAAoB,wGAEhC,CAAC;AAGF,eAAO,MAAM,gBAAgB,6FAE5B,CAAC;AAGF,eAAO,MAAM,gBAAgB,gFAE5B,CAAC"}
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/routes/lazy.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,2JAExB,CAAC;AAGF,eAAO,MAAM,YAAY,uEAExB,CAAC;AAGF,eAAO,MAAM,eAAe,yFAE3B,CAAC;AAGF,eAAO,MAAM,sBAAsB,yFAElC,CAAC;AAGF,eAAO,MAAM,YAAY,gFAExB,CAAC;AAEF,eAAO,MAAM,kBAAkB,4FAE9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,4FAE9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,gGAEhC,CAAC;AAEF,eAAO,MAAM,eAAe,sFAE3B,CAAC;AAGF,eAAO,MAAM,cAAc,6KAE1B,CAAC;AAKF,eAAO,MAAM,eAAe,iGAE3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,oGAE5B,CAAC;AAEF,eAAO,MAAM,cAAc,8FAE1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,mHAIjC,CAAC;AAEF,eAAO,MAAM,gBAAgB,oGAE5B,CAAC;AAEF,eAAO,MAAM,cAAc,8FAE1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,wGAE/B,CAAC;AAGF,eAAO,MAAM,eAAe,yFAE3B,CAAC;AAGF,eAAO,MAAM,cAAc,oFAE1B,CAAC;AAGF,eAAO,MAAM,oBAAoB,wGAEhC,CAAC;AAGF,eAAO,MAAM,gBAAgB,6FAE5B,CAAC;AAGF,eAAO,MAAM,gBAAgB,gFAE5B,CAAC"}
@@ -4,7 +4,7 @@ import type { TwilightContext } from '../../twilight/context';
4
4
  export declare const LoyaltyPage: import("react").LazyExoticComponent<typeof import("./LoyaltyPage").LoyaltyPage>;
5
5
  export { loyaltyLoader } from './loader';
6
6
  export type { LoyaltyPageProps, LoyaltyPoint, LoyaltyPrize, LoyaltyPrizeItem } from './types';
7
- declare function loader(_ctx?: {
7
+ declare function loader(ctx?: {
8
8
  locale?: string;
9
9
  }, extend?: (data: LoyaltyPageProps, ctx: {
10
10
  params: Record<string, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/loyalty/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQ9D,eAAO,MAAM,WAAW,iFAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE9F,iBAAe,MAAM,CACnB,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1B,MAAM,CAAC,EAAE,CACP,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,KACnC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9D,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAED,iBAAS,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAQ1E;AAED,eAAO,MAAM,OAAO;;;;;CAA6E,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/loyalty/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQ9D,eAAO,MAAM,WAAW,iFAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE9F,iBAAe,MAAM,CACnB,GAAG,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACzB,MAAM,CAAC,EAAE,CACP,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,KACnC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9D,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAED,iBAAS,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAQ1E;AAED,eAAO,MAAM,OAAO;;;;;CAA6E,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { LoyaltyPageProps } from './types';
2
- export declare function loyaltyLoader(): Promise<LoyaltyPageProps>;
2
+ export declare function loyaltyLoader(locale?: string): Promise<LoyaltyPageProps>;
3
3
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/routes/loyalty/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,wBAAsB,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAG/D"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/routes/loyalty/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAKzD,wBAAsB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAY9E"}
@@ -1,29 +1,38 @@
1
- import { loyalty } from '../chunk-RQOCJRHY.js';
1
+ import { loyalty } from '../chunk-YH4O3H4R.js';
2
2
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
3
- import '../chunk-FLAJQXOM.js';
3
+ import { redirect } from '../chunk-WH225GEC.js';
4
4
  import { RouteId } from '../chunk-TFB3QXYH.js';
5
- import '../chunk-POLSCD5O.js';
6
- import '../chunk-RLNBEDA4.js';
7
- import '../chunk-XTMHHLNK.js';
8
- import '../chunk-YDU4K4M7.js';
9
- import '../chunk-T72DAX7R.js';
5
+ import '../chunk-P3OPJL6I.js';
6
+ import '../chunk-WY4IYO3G.js';
7
+ import '../chunk-TYLKNVQA.js';
8
+ import '../chunk-SR4OTLTJ.js';
9
+ import '../chunk-N2S25NXP.js';
10
+ import { FALLBACK_LOCALE } from '../chunk-T72DAX7R.js';
10
11
  import '../chunk-DF6FBKDN.js';
11
12
  import '../chunk-DGUM43GV.js';
12
13
  import { lazy } from 'react';
13
14
 
14
15
  // src/routes/loyalty/loader.ts
15
- async function loyaltyLoader() {
16
- const data = await loyalty.getOrThrow();
16
+ async function loyaltyLoader(locale) {
17
+ let data;
18
+ try {
19
+ data = await loyalty.get();
20
+ } catch (error) {
21
+ if (error?.response?.status === 400) {
22
+ throw redirect(`/${locale || FALLBACK_LOCALE}`);
23
+ }
24
+ throw error;
25
+ }
17
26
  return { page: { slug: RouteId.LOYALTY, title: data.name }, loyalty: data };
18
27
  }
19
28
 
20
29
  // src/routes/loyalty/index.tsx
21
30
  var LazyLoyaltyPage = lazy(
22
- () => import('../LoyaltyPage-SJUUOW3V.js').then((m) => ({ default: m.LoyaltyPage }))
31
+ () => import('../LoyaltyPage-AIUDZLT7.js').then((m) => ({ default: m.LoyaltyPage }))
23
32
  );
24
33
  var LoyaltyPage = LazyLoyaltyPage;
25
- async function loader(_ctx, extend) {
26
- const data = await loyaltyLoader();
34
+ async function loader(ctx, extend) {
35
+ const data = await loyaltyLoader(ctx?.locale);
27
36
  if (extend) {
28
37
  const extra = await extend(data, { params: {} });
29
38
  return { ...data, ...extra };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/loyalty/loader.ts","../../src/routes/loyalty/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,eAAsB,aAAA,GAA2C;AAC/D,EAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,UAAA,EAAW;AACtC,EAAA,OAAO,EAAE,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,CAAQ,OAAA,EAAS,KAAA,EAAO,IAAA,CAAK,IAAA,EAAK,EAAG,OAAA,EAAS,IAAA,EAAK;AAC5E;;;ACEA,IAAM,eAAA,GAAkB,IAAA;AAAA,EAAK,MAC3B,OAAO,4BAAe,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,WAAA,EAAY,CAAE;AAClE,CAAA;AAEO,IAAM,WAAA,GAAc;AAI3B,eAAe,MAAA,CACb,MACA,MAAA,EAI2B;AAC3B,EAAA,MAAM,IAAA,GAAO,MAAM,aAAA,EAAc;AAEjC,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,IAAA,CAAK,KAAsB,IAAA,EAAwC;AAC1E,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,OAAA,GAAU,EAAE,EAAA,EAAI,OAAA,CAAQ,SAAS,MAAA,EAAQ,IAAA,EAAM,WAAW,eAAA","file":"loyalty.js","sourcesContent":["import { loyalty } from '../../api/loyalty';\nimport type { LoyaltyPageProps } from './types';\nimport { RouteId } from '../../router/route-ids';\n\nexport async function loyaltyLoader(): Promise<LoyaltyPageProps> {\n const data = await loyalty.getOrThrow();\n return { page: { slug: RouteId.LOYALTY, title: data.name }, loyalty: data };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { loyaltyLoader } from './loader';\nimport type { LoyaltyPageProps } from './types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load component for code-splitting\nconst LazyLoyaltyPage = lazy(() =>\n import('./LoyaltyPage').then((m) => ({ default: m.LoyaltyPage }))\n);\n\nexport const LoyaltyPage = LazyLoyaltyPage;\nexport { loyaltyLoader } from './loader';\nexport type { LoyaltyPageProps, LoyaltyPoint, LoyaltyPrize, LoyaltyPrizeItem } from './types';\n\nasync function loader(\n _ctx?: { locale?: string },\n extend?: (\n data: LoyaltyPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<LoyaltyPageProps> {\n const data = await loyaltyLoader();\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as LoyaltyPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: LoyaltyPageProps): 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 Loyalty = { id: RouteId.LOYALTY, loader, head, Component: LazyLoyaltyPage } as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/loyalty/loader.ts","../../src/routes/loyalty/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAMA,eAAsB,cAAc,MAAA,EAA4C;AAC9E,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI;AACF,IAAA,IAAA,GAAO,MAAM,QAAQ,GAAA,EAAI;AAAA,EAC3B,SAAS,KAAA,EAAO;AAEd,IAAA,IAAK,KAAA,EAA8C,QAAA,EAAU,MAAA,KAAW,GAAA,EAAK;AAC3E,MAAA,MAAM,QAAA,CAAS,CAAA,CAAA,EAAI,MAAA,IAAU,eAAe,CAAA,CAAE,CAAA;AAAA,IAChD;AACA,IAAA,MAAM,KAAA;AAAA,EACR;AACA,EAAA,OAAO,EAAE,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,CAAQ,OAAA,EAAS,KAAA,EAAO,IAAA,CAAK,IAAA,EAAK,EAAG,OAAA,EAAS,IAAA,EAAK;AAC5E;;;ACTA,IAAM,eAAA,GAAkB,IAAA;AAAA,EAAK,MAC3B,OAAO,4BAAe,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,WAAA,EAAY,CAAE;AAClE,CAAA;AAEO,IAAM,WAAA,GAAc;AAI3B,eAAe,MAAA,CACb,KACA,MAAA,EAI2B;AAC3B,EAAA,MAAM,IAAA,GAAO,MAAM,aAAA,CAAc,GAAA,EAAK,MAAM,CAAA;AAE5C,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,IAAA,CAAK,KAAsB,IAAA,EAAwC;AAC1E,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,OAAA,GAAU,EAAE,EAAA,EAAI,OAAA,CAAQ,SAAS,MAAA,EAAQ,IAAA,EAAM,WAAW,eAAA","file":"loyalty.js","sourcesContent":["import { loyalty } from '../../api/loyalty';\nimport type { Loyalty, LoyaltyPageProps } from './types';\nimport { RouteId } from '../../router/route-ids';\nimport { redirect } from '../../providers/NavigationProvider';\nimport { FALLBACK_LOCALE } from '../../providers/locale-constants';\n\nexport async function loyaltyLoader(locale?: string): Promise<LoyaltyPageProps> {\n let data: Loyalty;\n try {\n data = await loyalty.get();\n } catch (error) {\n // The API answers 400 when the store's loyalty program is off; like the Twig storefront, go home.\n if ((error as { response?: { status?: number } })?.response?.status === 400) {\n throw redirect(`/${locale || FALLBACK_LOCALE}`);\n }\n throw error;\n }\n return { page: { slug: RouteId.LOYALTY, title: data.name }, loyalty: data };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { loyaltyLoader } from './loader';\nimport type { LoyaltyPageProps } from './types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load component for code-splitting\nconst LazyLoyaltyPage = lazy(() =>\n import('./LoyaltyPage').then((m) => ({ default: m.LoyaltyPage }))\n);\n\nexport const LoyaltyPage = LazyLoyaltyPage;\nexport { loyaltyLoader } from './loader';\nexport type { LoyaltyPageProps, LoyaltyPoint, LoyaltyPrize, LoyaltyPrizeItem } from './types';\n\nasync function loader(\n ctx?: { locale?: string },\n extend?: (\n data: LoyaltyPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<LoyaltyPageProps> {\n const data = await loyaltyLoader(ctx?.locale);\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as LoyaltyPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: LoyaltyPageProps): 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 Loyalty = { id: RouteId.LOYALTY, loader, head, Component: LazyLoyaltyPage } as const;\n"]}
@@ -1,11 +1,12 @@
1
- import { page } from '../chunk-K3WTFB6A.js';
1
+ import { page } from '../chunk-GUGZ4CEG.js';
2
2
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
3
- import '../chunk-FLAJQXOM.js';
3
+ import '../chunk-WH225GEC.js';
4
4
  import { RouteId } from '../chunk-TFB3QXYH.js';
5
- import '../chunk-POLSCD5O.js';
6
- import '../chunk-RLNBEDA4.js';
7
- import '../chunk-XTMHHLNK.js';
8
- import '../chunk-YDU4K4M7.js';
5
+ import '../chunk-P3OPJL6I.js';
6
+ import '../chunk-WY4IYO3G.js';
7
+ import '../chunk-TYLKNVQA.js';
8
+ import '../chunk-SR4OTLTJ.js';
9
+ import '../chunk-N2S25NXP.js';
9
10
  import '../chunk-T72DAX7R.js';
10
11
  import '../chunk-DF6FBKDN.js';
11
12
  import '../chunk-DGUM43GV.js';
@@ -28,7 +29,7 @@ async function pageSingleLoader({ params }) {
28
29
  }
29
30
 
30
31
  // src/routes/page/index.tsx
31
- var LazyPageSingle = lazy(() => import('../PageSingle-ATWHQBS7.js').then((m) => ({ default: m.PageSingle })));
32
+ var LazyPageSingle = lazy(() => import('../PageSingle-6U6GPMXJ.js').then((m) => ({ default: m.PageSingle })));
32
33
  var PageSingleLazy = LazyPageSingle;
33
34
  async function loader(ctx, extend) {
34
35
  const data = await pageSingleLoader({ params: ctx.params });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/page/loader.ts","../../src/routes/page/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;AAKA,eAAsB,gBAAA,CAAiB,EAAE,MAAA,EAAO,EAAmD;AACjG,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,WAAA,CAAY,OAAO,EAAE,CAAA;AAC7C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,MAAM,OAAA,CAAQ,WAAA;AAAA,MACd,IAAI,IAAA,CAAK,EAAA;AAAA,MACT,OAAO,IAAA,CAAK,IAAA;AAAA,MACZ,KAAK,IAAA,CAAK,GAAA;AAAA,MACV,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,YAAY,IAAA,CAAK;AAAA;AACnB,GACF;AACF;;;ACRA,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,cAAA,GAAiB;AAI9B,eAAe,MAAA,CACb,KACA,MAAA,EAI0B;AAC1B,EAAA,MAAM,OAAO,MAAM,gBAAA,CAAiB,EAAE,MAAA,EAAQ,GAAA,CAAI,QAAQ,CAAA;AAE1D,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,IAAA,EAAM,GAAG,CAAA;AACpC,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,EAC7B;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,IAAA,CAAK,KAAsB,IAAA,EAAuC;AACzE,EAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,CAAK,KAAA;AACxB,EAAA,MAAM,cAAc,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,OAAA,CAAQ,YAAY,EAAE,CAAA;AAE7D,EAAA,MAAM,IAAA,GAAuB;AAAA,IAC3B,KAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,KAAK,IAAA,CAAK,GAAA;AAAA,IACrB,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,KAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAA,EAAK,KAAK,IAAA,CAAK,GAAA;AAAA,MACf,aAAA,EAAe,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY,cAAA;AAAA,MACrC,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY;AAAA,KACtC;AAAA,IACA,oBAAoB,uBAAA,CAAwB,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,SAAS,QAAQ;AAAA,GACjF;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,IAAI,OAAA,CAAQ,WAAA;AAAA,EACZ,MAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,EAAW;AACb","file":"page.js","sourcesContent":["import type { PageSingleProps } from './types';\nimport type { IdParams } from '../types';\nimport { page } from '../../api/page';\nimport { RouteId } from '../../router/route-ids';\n\nexport async function pageSingleLoader({ params }: { params: IdParams }): Promise<PageSingleProps> {\n const data = await page.findOrThrow(params.id);\n return {\n page: {\n slug: RouteId.PAGE_SINGLE,\n id: data.id,\n title: data.name,\n url: data.url,\n content: data.content,\n metadata: data.metadata,\n created_at: data.created_at,\n },\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { pageSingleLoader } from './loader';\nimport type { PageSingleProps } from './types';\nimport type { IdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load component for code-splitting\nconst LazyPageSingle = lazy(() => import('./PageSingle').then((m) => ({ default: m.PageSingle })));\n\nexport const PageSingleLazy = LazyPageSingle;\nexport { pageSingleLoader } from './loader';\nexport type { PageSingleProps, StaticPage } from './types';\n\nasync function loader(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: PageSingleProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<PageSingleProps> {\n const data = await pageSingleLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as PageSingleProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: PageSingleProps): HeadDescriptor {\n const title = data.page.title;\n const description = data.page.content?.replace(/<[^>]+>/g, '');\n\n const base: HeadDescriptor = {\n title,\n description,\n canonical: data.page.url,\n openGraph: {\n type: 'article',\n title,\n description,\n url: data.page.url,\n publishedTime: data.page.created_at?.published_time,\n modifiedTime: data.page.created_at?.modified_time,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const PageSingle = {\n id: RouteId.PAGE_SINGLE,\n loader,\n head,\n Component: LazyPageSingle,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/page/loader.ts","../../src/routes/page/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,eAAsB,gBAAA,CAAiB,EAAE,MAAA,EAAO,EAAmD;AACjG,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,WAAA,CAAY,OAAO,EAAE,CAAA;AAC7C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,MAAM,OAAA,CAAQ,WAAA;AAAA,MACd,IAAI,IAAA,CAAK,EAAA;AAAA,MACT,OAAO,IAAA,CAAK,IAAA;AAAA,MACZ,KAAK,IAAA,CAAK,GAAA;AAAA,MACV,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,YAAY,IAAA,CAAK;AAAA;AACnB,GACF;AACF;;;ACRA,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,cAAA,GAAiB;AAI9B,eAAe,MAAA,CACb,KACA,MAAA,EAI0B;AAC1B,EAAA,MAAM,OAAO,MAAM,gBAAA,CAAiB,EAAE,MAAA,EAAQ,GAAA,CAAI,QAAQ,CAAA;AAE1D,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,IAAA,EAAM,GAAG,CAAA;AACpC,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,EAC7B;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,IAAA,CAAK,KAAsB,IAAA,EAAuC;AACzE,EAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,CAAK,KAAA;AACxB,EAAA,MAAM,cAAc,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,OAAA,CAAQ,YAAY,EAAE,CAAA;AAE7D,EAAA,MAAM,IAAA,GAAuB;AAAA,IAC3B,KAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,KAAK,IAAA,CAAK,GAAA;AAAA,IACrB,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,KAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAA,EAAK,KAAK,IAAA,CAAK,GAAA;AAAA,MACf,aAAA,EAAe,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY,cAAA;AAAA,MACrC,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY;AAAA,KACtC;AAAA,IACA,oBAAoB,uBAAA,CAAwB,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,SAAS,QAAQ;AAAA,GACjF;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,IAAI,OAAA,CAAQ,WAAA;AAAA,EACZ,MAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,EAAW;AACb","file":"page.js","sourcesContent":["import type { PageSingleProps } from './types';\nimport type { IdParams } from '../types';\nimport { page } from '../../api/page';\nimport { RouteId } from '../../router/route-ids';\n\nexport async function pageSingleLoader({ params }: { params: IdParams }): Promise<PageSingleProps> {\n const data = await page.findOrThrow(params.id);\n return {\n page: {\n slug: RouteId.PAGE_SINGLE,\n id: data.id,\n title: data.name,\n url: data.url,\n content: data.content,\n metadata: data.metadata,\n created_at: data.created_at,\n },\n };\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { lazy } from 'react';\nimport { pageSingleLoader } from './loader';\nimport type { PageSingleProps } from './types';\nimport type { IdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\n// Lazy-load component for code-splitting\nconst LazyPageSingle = lazy(() => import('./PageSingle').then((m) => ({ default: m.PageSingle })));\n\nexport const PageSingleLazy = LazyPageSingle;\nexport { pageSingleLoader } from './loader';\nexport type { PageSingleProps, StaticPage } from './types';\n\nasync function loader(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: PageSingleProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<PageSingleProps> {\n const data = await pageSingleLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as PageSingleProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: PageSingleProps): HeadDescriptor {\n const title = data.page.title;\n const description = data.page.content?.replace(/<[^>]+>/g, '');\n\n const base: HeadDescriptor = {\n title,\n description,\n canonical: data.page.url,\n openGraph: {\n type: 'article',\n title,\n description,\n url: data.page.url,\n publishedTime: data.page.created_at?.published_time,\n modifiedTime: data.page.created_at?.modified_time,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const PageSingle = {\n id: RouteId.PAGE_SINGLE,\n loader,\n head,\n Component: LazyPageSingle,\n} as const;\n"]}
@@ -1,28 +1,29 @@
1
1
  import { sortOptions } from '../chunk-6Z4MOC4S.js';
2
- import { category } from '../chunk-UIC4FUJM.js';
3
- import { brand } from '../chunk-NQHOKDDF.js';
2
+ import { category } from '../chunk-JVGZDLFP.js';
3
+ import { brand } from '../chunk-ZQGMVUPE.js';
4
4
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
5
- import { LazyTestimonials } from '../chunk-SDXKGWMC.js';
6
- import { product } from '../chunk-XJDQHKV6.js';
5
+ import { LazyTestimonials } from '../chunk-IZFZLJHD.js';
6
+ import { product } from '../chunk-TLO2M5TJ.js';
7
7
  import { Drawer } from '../chunk-6TKIUG5C.js';
8
- import { ProductCard } from '../chunk-MFL6R2WL.js';
8
+ import { ProductCard } from '../chunk-FUIPNVQY.js';
9
9
  import '../chunk-342EPVXN.js';
10
- import { useStore } from '../chunk-B3Z7WNO5.js';
11
- import '../chunk-G2UPOKZZ.js';
10
+ import { useStore } from '../chunk-2U3PUO3V.js';
11
+ import '../chunk-3YVAYIM4.js';
12
12
  import '../chunk-JKIRRMBU.js';
13
13
  import '../chunk-2JV6WZ6O.js';
14
- import '../chunk-MJGW6YZQ.js';
14
+ import '../chunk-UIOLSYKV.js';
15
15
  import '../chunk-VVZNW5CB.js';
16
- import '../chunk-POATRFUM.js';
17
- import { notFound, useNavigate, useLocation } from '../chunk-FLAJQXOM.js';
16
+ import '../chunk-2XGQSJKH.js';
17
+ import { notFound, useNavigate, useLocation } from '../chunk-WH225GEC.js';
18
18
  import { RouteId } from '../chunk-TFB3QXYH.js';
19
19
  import '../chunk-C5X6CVXC.js';
20
- import '../chunk-G5ZVKWD7.js';
21
- import '../chunk-WD7HOPT5.js';
22
- import '../chunk-POLSCD5O.js';
23
- import '../chunk-RLNBEDA4.js';
24
- import '../chunk-XTMHHLNK.js';
25
- import { getTwilightContext } from '../chunk-YDU4K4M7.js';
20
+ import '../chunk-UZKTK6YV.js';
21
+ import '../chunk-5X2UFNKY.js';
22
+ import '../chunk-P3OPJL6I.js';
23
+ import '../chunk-WY4IYO3G.js';
24
+ import '../chunk-TYLKNVQA.js';
25
+ import '../chunk-SR4OTLTJ.js';
26
+ import { getTwilightContext } from '../chunk-N2S25NXP.js';
26
27
  import '../chunk-TP3LCGE7.js';
27
28
  import '../chunk-Z653O7MX.js';
28
29
  import '../chunk-ZCH7W7DZ.js';
@@ -38,7 +39,7 @@ import '../chunk-YMVLYYLU.js';
38
39
  import '../chunk-RJPPO3ET.js';
39
40
  import { HookSlot } from '../chunk-Q7VWURUR.js';
40
41
  import '../chunk-GU2KUQVD.js';
41
- import { LazyBreadcrumb, Image, LazyNoContent, ProductCardSkeleton, LazyRenderWhenVisible } from '../chunk-JMBO6VHQ.js';
42
+ import { LazyBreadcrumb, Image, LazyNoContent, ProductCardSkeleton, LazyRenderWhenVisible } from '../chunk-TLAEW7TB.js';
42
43
  import '../chunk-AXW67SY7.js';
43
44
  import '../chunk-BYMOPN2S.js';
44
45
  import '../chunk-SKLEJJ6M.js';