@salla.sa/twilight-theme-engine 1.0.144 → 1.0.145

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 (256) hide show
  1. package/dist/{AddToCartForm-LWT2QINY.js → AddToCartForm-NZNFVGDV.js} +3 -3
  2. package/dist/{AddToCartForm-LWT2QINY.js.map → AddToCartForm-NZNFVGDV.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-52C2OHXW.js → BlogAuthorPage-BXRIYXVN.js} +27 -27
  4. package/dist/{BlogAuthorPage-52C2OHXW.js.map → BlogAuthorPage-BXRIYXVN.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-LBLIAN6Q.js → BlogCategoryPage-GHWC2WVM.js} +27 -27
  6. package/dist/{BlogCategoryPage-LBLIAN6Q.js.map → BlogCategoryPage-GHWC2WVM.js.map} +1 -1
  7. package/dist/{BlogPage-U56CLHI4.js → BlogPage-ZCGNKBLI.js} +25 -25
  8. package/dist/{BlogPage-U56CLHI4.js.map → BlogPage-ZCGNKBLI.js.map} +1 -1
  9. package/dist/{BlogSinglePage-NQJDYUFB.js → BlogSinglePage-TH7Z3MKB.js} +25 -25
  10. package/dist/{BlogSinglePage-NQJDYUFB.js.map → BlogSinglePage-TH7Z3MKB.js.map} +1 -1
  11. package/dist/{BlogTagPage-XP3XGVCO.js → BlogTagPage-GM422SOW.js} +27 -27
  12. package/dist/{BlogTagPage-XP3XGVCO.js.map → BlogTagPage-GM422SOW.js.map} +1 -1
  13. package/dist/{BrandsPage-22AET7DW.js → BrandsPage-LNNPU4NX.js} +26 -26
  14. package/dist/{BrandsPage-22AET7DW.js.map → BrandsPage-LNNPU4NX.js.map} +1 -1
  15. package/dist/{Breadcrumb-YTYXSTKO.js → Breadcrumb-TSG2CW3S.js} +25 -25
  16. package/dist/{Breadcrumb-YTYXSTKO.js.map → Breadcrumb-TSG2CW3S.js.map} +1 -1
  17. package/dist/{CartItem-UTU4GLDN.js → CartItem-UVSLCSEP.js} +25 -25
  18. package/dist/{CartItem-UTU4GLDN.js.map → CartItem-UVSLCSEP.js.map} +1 -1
  19. package/dist/{CartSummary-4UGWZ3B3.js → CartSummary-ZCXTED4G.js} +25 -25
  20. package/dist/{CartSummary-4UGWZ3B3.js.map → CartSummary-ZCXTED4G.js.map} +1 -1
  21. package/dist/{Copyright-B2GYPZBZ.js → Copyright-B25RLEVV.js} +3 -3
  22. package/dist/{Copyright-B2GYPZBZ.js.map → Copyright-B25RLEVV.js.map} +1 -1
  23. package/dist/{CustomerLayout-I4XFBCOH.js → CustomerLayout-WGEUJEDP.js} +25 -25
  24. package/dist/{CustomerLayout-I4XFBCOH.js.map → CustomerLayout-WGEUJEDP.js.map} +1 -1
  25. package/dist/{Footer-OWOF2AGC.js → Footer-QMNESEEI.js} +4 -4
  26. package/dist/{Footer-OWOF2AGC.js.map → Footer-QMNESEEI.js.map} +1 -1
  27. package/dist/{Header-KDJL4YRP.js → Header-ZPDXQ7U6.js} +11 -11
  28. package/dist/{Header-KDJL4YRP.js.map → Header-ZPDXQ7U6.js.map} +1 -1
  29. package/dist/{LatestProducts-YBFHXG5V.js → LatestProducts-UEUM47MI.js} +27 -27
  30. package/dist/{LatestProducts-YBFHXG5V.js.map → LatestProducts-UEUM47MI.js.map} +1 -1
  31. package/dist/{LoyaltyPage-GFWTFQA7.js → LoyaltyPage-ZM3FDTV3.js} +25 -25
  32. package/dist/{LoyaltyPage-GFWTFQA7.js.map → LoyaltyPage-ZM3FDTV3.js.map} +1 -1
  33. package/dist/{LoyaltyPointsPage-WJDZL6G4.js → LoyaltyPointsPage-QQIKIBTH.js} +8 -8
  34. package/dist/{LoyaltyPointsPage-WJDZL6G4.js.map → LoyaltyPointsPage-QQIKIBTH.js.map} +1 -1
  35. package/dist/{MainMenu-AWSLHAEE.js → MainMenu-3Z7HRQGU.js} +7 -7
  36. package/dist/{MainMenu-AWSLHAEE.js.map → MainMenu-3Z7HRQGU.js.map} +1 -1
  37. package/dist/{MasterLayout-ZMHHLGYL.js → MasterLayout-ZRTWOZGC.js} +25 -25
  38. package/dist/{MasterLayout-ZMHHLGYL.js.map → MasterLayout-ZRTWOZGC.js.map} +1 -1
  39. package/dist/{MobileMenu-56MF2EAS.js → MobileMenu-SC7HJ6BT.js} +26 -26
  40. package/dist/{MobileMenu-56MF2EAS.js.map → MobileMenu-SC7HJ6BT.js.map} +1 -1
  41. package/dist/{NotificationsPage-7QC66446.js → NotificationsPage-JMAZ2N2A.js} +25 -25
  42. package/dist/{NotificationsPage-7QC66446.js.map → NotificationsPage-JMAZ2N2A.js.map} +1 -1
  43. package/dist/{OrderSinglePage-WXJHUJ6C.js → OrderSinglePage-6MAFH4Q6.js} +26 -26
  44. package/dist/{OrderSinglePage-WXJHUJ6C.js.map → OrderSinglePage-6MAFH4Q6.js.map} +1 -1
  45. package/dist/{OrdersPage-ZNM4YGXR.js → OrdersPage-NMINSG67.js} +25 -25
  46. package/dist/{OrdersPage-ZNM4YGXR.js.map → OrdersPage-NMINSG67.js.map} +1 -1
  47. package/dist/{PageSingle-NQZM6O5A.js → PageSingle-WLIXOODC.js} +6 -6
  48. package/dist/{PageSingle-NQZM6O5A.js.map → PageSingle-WLIXOODC.js.map} +1 -1
  49. package/dist/{ProductDetails-N4KYBKBG.js → ProductDetails-NFZLUKLN.js} +7 -7
  50. package/dist/{ProductDetails-N4KYBKBG.js.map → ProductDetails-NFZLUKLN.js.map} +1 -1
  51. package/dist/{ProfilePage-XOGVATHX.js → ProfilePage-5PBU637J.js} +25 -25
  52. package/dist/{ProfilePage-XOGVATHX.js.map → ProfilePage-5PBU637J.js.map} +1 -1
  53. package/dist/{ReviewsPage-WOLLCLAY.js → ReviewsPage-RWNFVHWR.js} +3 -3
  54. package/dist/{ReviewsPage-WOLLCLAY.js.map → ReviewsPage-RWNFVHWR.js.map} +1 -1
  55. package/dist/{SeoCartWidget-EVJOTXPO.js → SeoCartWidget-HPBQ6673.js} +25 -25
  56. package/dist/{SeoCartWidget-EVJOTXPO.js.map → SeoCartWidget-HPBQ6673.js.map} +1 -1
  57. package/dist/{SettingsPage-LYDZFUF3.js → SettingsPage-Y5X5BNHD.js} +25 -25
  58. package/dist/{SettingsPage-LYDZFUF3.js.map → SettingsPage-Y5X5BNHD.js.map} +1 -1
  59. package/dist/{StoreClosedNotification-62SFSGRH.js → StoreClosedNotification-5DOQFF2O.js} +26 -26
  60. package/dist/{StoreClosedNotification-62SFSGRH.js.map → StoreClosedNotification-5DOQFF2O.js.map} +1 -1
  61. package/dist/{TestimonialsPage-WPZBQQO2.js → TestimonialsPage-ZDALOH2L.js} +6 -6
  62. package/dist/{TestimonialsPage-WPZBQQO2.js.map → TestimonialsPage-ZDALOH2L.js.map} +1 -1
  63. package/dist/{ThankYouPage-44VMBXGI.js → ThankYouPage-SYMPRWCS.js} +25 -25
  64. package/dist/{ThankYouPage-44VMBXGI.js.map → ThankYouPage-SYMPRWCS.js.map} +1 -1
  65. package/dist/{WalletPage-YVSIECSM.js → WalletPage-DPWZBROY.js} +26 -26
  66. package/dist/{WalletPage-YVSIECSM.js.map → WalletPage-DPWZBROY.js.map} +1 -1
  67. package/dist/{WebMcpTools-VA2A62E3.js → WebMcpTools-3TBLKZL5.js} +9 -9
  68. package/dist/{WebMcpTools-VA2A62E3.js.map → WebMcpTools-3TBLKZL5.js.map} +1 -1
  69. package/dist/{WishlistPage-IGWDG4HC.js → WishlistPage-BM3XSMQF.js} +27 -27
  70. package/dist/{WishlistPage-IGWDG4HC.js.map → WishlistPage-BM3XSMQF.js.map} +1 -1
  71. package/dist/api/advertisement.js +4 -4
  72. package/dist/api/apps.js +4 -4
  73. package/dist/api/blog.js +6 -6
  74. package/dist/api/brands.js +6 -6
  75. package/dist/api/cart.js +6 -6
  76. package/dist/api/category.js +6 -6
  77. package/dist/api/client.js +3 -3
  78. package/dist/api/home.js +4 -4
  79. package/dist/api/loyalty.js +6 -6
  80. package/dist/api/menu.js +4 -4
  81. package/dist/api/notification.js +4 -4
  82. package/dist/api/order.js +6 -6
  83. package/dist/api/page.js +6 -6
  84. package/dist/api/product.js +6 -6
  85. package/dist/api/profile.js +3 -3
  86. package/dist/api/store.js +5 -5
  87. package/dist/api/translations.js +4 -4
  88. package/dist/api/user.js +4 -4
  89. package/dist/api/wallet.js +4 -4
  90. package/dist/api/wishlist.js +7 -7
  91. package/dist/{chunk-BXMU3ARO.js → chunk-2N6XZZ4W.js} +4 -4
  92. package/dist/{chunk-BXMU3ARO.js.map → chunk-2N6XZZ4W.js.map} +1 -1
  93. package/dist/{chunk-KVBWIXXG.js → chunk-2ZESCQRM.js} +3 -3
  94. package/dist/{chunk-KVBWIXXG.js.map → chunk-2ZESCQRM.js.map} +1 -1
  95. package/dist/{chunk-RWAOBMAK.js → chunk-52QZKUDU.js} +6 -6
  96. package/dist/{chunk-RWAOBMAK.js.map → chunk-52QZKUDU.js.map} +1 -1
  97. package/dist/{chunk-BBQATCYN.js → chunk-5JZSBFA5.js} +3 -3
  98. package/dist/{chunk-BBQATCYN.js.map → chunk-5JZSBFA5.js.map} +1 -1
  99. package/dist/{chunk-N6ZE6HUX.js → chunk-5V4W3GBI.js} +5 -5
  100. package/dist/{chunk-N6ZE6HUX.js.map → chunk-5V4W3GBI.js.map} +1 -1
  101. package/dist/{chunk-3E3ABCPC.js → chunk-6TFM3UTF.js} +3 -3
  102. package/dist/{chunk-3E3ABCPC.js.map → chunk-6TFM3UTF.js.map} +1 -1
  103. package/dist/{chunk-CRO7DXS3.js → chunk-7NTPNCIK.js} +3 -3
  104. package/dist/{chunk-CRO7DXS3.js.map → chunk-7NTPNCIK.js.map} +1 -1
  105. package/dist/{chunk-LVUH4FOB.js → chunk-AJM7KUA3.js} +5 -5
  106. package/dist/{chunk-LVUH4FOB.js.map → chunk-AJM7KUA3.js.map} +1 -1
  107. package/dist/{chunk-WU5Z4JGX.js → chunk-BMCECPSU.js} +3 -3
  108. package/dist/{chunk-WU5Z4JGX.js.map → chunk-BMCECPSU.js.map} +1 -1
  109. package/dist/{chunk-O7OFWC34.js → chunk-DHWMC6VU.js} +4 -4
  110. package/dist/{chunk-O7OFWC34.js.map → chunk-DHWMC6VU.js.map} +1 -1
  111. package/dist/{chunk-YVQXIZY7.js → chunk-DMR3ICV5.js} +6 -6
  112. package/dist/{chunk-YVQXIZY7.js.map → chunk-DMR3ICV5.js.map} +1 -1
  113. package/dist/{chunk-WQPG22DY.js → chunk-EGI7F57E.js} +3 -3
  114. package/dist/{chunk-WQPG22DY.js.map → chunk-EGI7F57E.js.map} +1 -1
  115. package/dist/{chunk-3KTDODC5.js → chunk-ETC7OJT5.js} +3 -3
  116. package/dist/{chunk-3KTDODC5.js.map → chunk-ETC7OJT5.js.map} +1 -1
  117. package/dist/{chunk-PYUTATUY.js → chunk-FPGR63AQ.js} +3 -3
  118. package/dist/{chunk-PYUTATUY.js.map → chunk-FPGR63AQ.js.map} +1 -1
  119. package/dist/{chunk-AXTVBTO4.js → chunk-GBMMP344.js} +22 -22
  120. package/dist/{chunk-AXTVBTO4.js.map → chunk-GBMMP344.js.map} +1 -1
  121. package/dist/{chunk-5XWGYFZ2.js → chunk-GFRJHCRX.js} +4 -4
  122. package/dist/{chunk-5XWGYFZ2.js.map → chunk-GFRJHCRX.js.map} +1 -1
  123. package/dist/{chunk-TF6HFXTW.js → chunk-H7LRGY7U.js} +3 -3
  124. package/dist/{chunk-TF6HFXTW.js.map → chunk-H7LRGY7U.js.map} +1 -1
  125. package/dist/{chunk-TAVF4E7T.js → chunk-HJGN3XVG.js} +8 -8
  126. package/dist/{chunk-TAVF4E7T.js.map → chunk-HJGN3XVG.js.map} +1 -1
  127. package/dist/{chunk-2ZR562TA.js → chunk-HRW4YFHR.js} +5 -5
  128. package/dist/{chunk-2ZR562TA.js.map → chunk-HRW4YFHR.js.map} +1 -1
  129. package/dist/{chunk-HOJ5E2PG.js → chunk-IHOUADLX.js} +3 -3
  130. package/dist/{chunk-HOJ5E2PG.js.map → chunk-IHOUADLX.js.map} +1 -1
  131. package/dist/{chunk-S4KV6QGP.js → chunk-ITNUDQVP.js} +27 -20
  132. package/dist/chunk-ITNUDQVP.js.map +1 -0
  133. package/dist/{chunk-6JH4QYKT.js → chunk-KGSB2Y7O.js} +4 -4
  134. package/dist/{chunk-6JH4QYKT.js.map → chunk-KGSB2Y7O.js.map} +1 -1
  135. package/dist/{chunk-W5LVGFHX.js → chunk-KKTVDCVO.js} +6 -6
  136. package/dist/{chunk-W5LVGFHX.js.map → chunk-KKTVDCVO.js.map} +1 -1
  137. package/dist/{chunk-LNTLWEYI.js → chunk-LSMKTPIE.js} +4 -4
  138. package/dist/{chunk-LNTLWEYI.js.map → chunk-LSMKTPIE.js.map} +1 -1
  139. package/dist/{chunk-LFHYQ6AN.js → chunk-M5WTY3EH.js} +3 -3
  140. package/dist/{chunk-LFHYQ6AN.js.map → chunk-M5WTY3EH.js.map} +1 -1
  141. package/dist/{chunk-RYGEIQWO.js → chunk-MGG4XAJ5.js} +3 -3
  142. package/dist/{chunk-RYGEIQWO.js.map → chunk-MGG4XAJ5.js.map} +1 -1
  143. package/dist/{chunk-GN7V2QHO.js → chunk-MIAVMNPM.js} +6 -6
  144. package/dist/{chunk-GN7V2QHO.js.map → chunk-MIAVMNPM.js.map} +1 -1
  145. package/dist/{chunk-4L5RHZHJ.js → chunk-N44U2AA7.js} +4 -4
  146. package/dist/{chunk-4L5RHZHJ.js.map → chunk-N44U2AA7.js.map} +1 -1
  147. package/dist/{chunk-7IQFONJR.js → chunk-NGWHUW34.js} +3 -3
  148. package/dist/{chunk-7IQFONJR.js.map → chunk-NGWHUW34.js.map} +1 -1
  149. package/dist/{chunk-GUODUINX.js → chunk-NLKLS3GZ.js} +5 -5
  150. package/dist/{chunk-GUODUINX.js.map → chunk-NLKLS3GZ.js.map} +1 -1
  151. package/dist/{chunk-VNEMV6IC.js → chunk-NR5YIBTS.js} +4 -4
  152. package/dist/{chunk-VNEMV6IC.js.map → chunk-NR5YIBTS.js.map} +1 -1
  153. package/dist/{chunk-AT6YLLT4.js → chunk-OLL5OGQ5.js} +4 -4
  154. package/dist/{chunk-AT6YLLT4.js.map → chunk-OLL5OGQ5.js.map} +1 -1
  155. package/dist/{chunk-AD4QPYNG.js → chunk-PCB5DCS4.js} +4 -4
  156. package/dist/{chunk-AD4QPYNG.js.map → chunk-PCB5DCS4.js.map} +1 -1
  157. package/dist/{chunk-GCXFTIHV.js → chunk-QIHSKEWU.js} +4 -4
  158. package/dist/{chunk-GCXFTIHV.js.map → chunk-QIHSKEWU.js.map} +1 -1
  159. package/dist/{chunk-MWYKP7CI.js → chunk-QMWP2ZP6.js} +3 -3
  160. package/dist/{chunk-MWYKP7CI.js.map → chunk-QMWP2ZP6.js.map} +1 -1
  161. package/dist/{chunk-ODP2N7CD.js → chunk-R64ITZ7U.js} +4 -4
  162. package/dist/{chunk-ODP2N7CD.js.map → chunk-R64ITZ7U.js.map} +1 -1
  163. package/dist/{chunk-5UWRPWK2.js → chunk-R7VWIXFX.js} +3 -3
  164. package/dist/{chunk-5UWRPWK2.js.map → chunk-R7VWIXFX.js.map} +1 -1
  165. package/dist/{chunk-VV7MDVGS.js → chunk-RJKMW36K.js} +8 -8
  166. package/dist/{chunk-VV7MDVGS.js.map → chunk-RJKMW36K.js.map} +1 -1
  167. package/dist/{chunk-Q7E4TNN7.js → chunk-SLBO4SEE.js} +3 -3
  168. package/dist/{chunk-Q7E4TNN7.js.map → chunk-SLBO4SEE.js.map} +1 -1
  169. package/dist/{chunk-FXVII733.js → chunk-T2752RH7.js} +27 -3
  170. package/dist/chunk-T2752RH7.js.map +1 -0
  171. package/dist/{chunk-MDU7ERR3.js → chunk-TF46NIZF.js} +4 -4
  172. package/dist/{chunk-MDU7ERR3.js.map → chunk-TF46NIZF.js.map} +1 -1
  173. package/dist/{chunk-MZ4LTJQD.js → chunk-TWYTA2SX.js} +7 -7
  174. package/dist/{chunk-MZ4LTJQD.js.map → chunk-TWYTA2SX.js.map} +1 -1
  175. package/dist/{chunk-G3NCSKQ3.js → chunk-U2UNWN4G.js} +5 -5
  176. package/dist/{chunk-G3NCSKQ3.js.map → chunk-U2UNWN4G.js.map} +1 -1
  177. package/dist/{chunk-W6KPVZZR.js → chunk-U5TWRPMK.js} +7 -7
  178. package/dist/{chunk-W6KPVZZR.js.map → chunk-U5TWRPMK.js.map} +1 -1
  179. package/dist/{chunk-JYPIPQ3V.js → chunk-VCMGBB5Y.js} +3 -3
  180. package/dist/{chunk-JYPIPQ3V.js.map → chunk-VCMGBB5Y.js.map} +1 -1
  181. package/dist/{chunk-P3WHN7JA.js → chunk-VZRZQV4Q.js} +3 -3
  182. package/dist/{chunk-P3WHN7JA.js.map → chunk-VZRZQV4Q.js.map} +1 -1
  183. package/dist/{chunk-WATFGHFK.js → chunk-WIDH6AK6.js} +4 -4
  184. package/dist/{chunk-WATFGHFK.js.map → chunk-WIDH6AK6.js.map} +1 -1
  185. package/dist/{chunk-V46O3Z7J.js → chunk-X4ITNSMT.js} +5 -5
  186. package/dist/{chunk-V46O3Z7J.js.map → chunk-X4ITNSMT.js.map} +1 -1
  187. package/dist/{chunk-NHA4SBKG.js → chunk-XMRNYUQY.js} +3 -3
  188. package/dist/{chunk-NHA4SBKG.js.map → chunk-XMRNYUQY.js.map} +1 -1
  189. package/dist/{chunk-IVZNTLAA.js → chunk-XV3HPKLI.js} +3 -3
  190. package/dist/{chunk-IVZNTLAA.js.map → chunk-XV3HPKLI.js.map} +1 -1
  191. package/dist/{chunk-IAM44RPN.js → chunk-YQOCPSOI.js} +4 -4
  192. package/dist/{chunk-IAM44RPN.js.map → chunk-YQOCPSOI.js.map} +1 -1
  193. package/dist/{chunk-C6WYORKW.js → chunk-YYVZFOUI.js} +3 -3
  194. package/dist/{chunk-C6WYORKW.js.map → chunk-YYVZFOUI.js.map} +1 -1
  195. package/dist/components/cart/index.js +1 -1
  196. package/dist/components/common/index.js +1 -1
  197. package/dist/components/drawer/index.js +23 -23
  198. package/dist/components/home/index.js +28 -28
  199. package/dist/components/layout/index.js +6 -6
  200. package/dist/components/product/index.js +25 -25
  201. package/dist/components/store/index.js +24 -24
  202. package/dist/components/toast/index.js +4 -4
  203. package/dist/dev/editor/index.js +2 -2
  204. package/dist/dev/index.js +2 -2
  205. package/dist/document-class-VHDNGZQK.js +32 -0
  206. package/dist/{document-class-TRLFCQHJ.js.map → document-class-VHDNGZQK.js.map} +1 -1
  207. package/dist/hooks/index.js +23 -23
  208. package/dist/hooks/useComments.js +3 -3
  209. package/dist/hooks/useGtm.js +23 -23
  210. package/dist/hooks/useMoney.js +23 -23
  211. package/dist/hooks/useProduct.js +3 -3
  212. package/dist/hooks/useStore.js +23 -23
  213. package/dist/hooks/useUser.js +5 -5
  214. package/dist/hooks/useWishlist.js +3 -3
  215. package/dist/index.js +23 -23
  216. package/dist/native-app/index.js +3 -3
  217. package/dist/{navigation-HWFEKUG6.js → navigation-C5K5SOU2.js} +8 -8
  218. package/dist/{navigation-HWFEKUG6.js.map → navigation-C5K5SOU2.js.map} +1 -1
  219. package/dist/{navigation-E75N4EU3.js → navigation-VW5P7XQM.js} +7 -7
  220. package/dist/{navigation-E75N4EU3.js.map → navigation-VW5P7XQM.js.map} +1 -1
  221. package/dist/{not-found-7SZU5K7G.js → not-found-U2LJEYDT.js} +26 -26
  222. package/dist/{not-found-7SZU5K7G.js.map → not-found-U2LJEYDT.js.map} +1 -1
  223. package/dist/providers/index.js +23 -23
  224. package/dist/routes/account/orders.js +8 -8
  225. package/dist/routes/account.js +17 -17
  226. package/dist/routes/blog.js +12 -12
  227. package/dist/routes/brands.js +8 -8
  228. package/dist/routes/cart.js +32 -32
  229. package/dist/routes/home.js +29 -29
  230. package/dist/routes/index.js +6 -6
  231. package/dist/routes/loyalty.js +9 -9
  232. package/dist/routes/page.js +8 -8
  233. package/dist/routes/product-listing.js +30 -30
  234. package/dist/routes/product.js +28 -28
  235. package/dist/routes/root/beforeLoad.d.ts.map +1 -1
  236. package/dist/routes/seo-redirects.js +6 -6
  237. package/dist/routes/testimonials.js +4 -4
  238. package/dist/routes/thank-you.js +8 -8
  239. package/dist/skeleton.js +29 -29
  240. package/dist/{store-lookup-LGYGZ4PU.js → store-lookup-YL4EUIS2.js} +11 -11
  241. package/dist/{store-lookup-LGYGZ4PU.js.map → store-lookup-YL4EUIS2.js.map} +1 -1
  242. package/dist/tanstack.js +19 -19
  243. package/dist/types/index.d.ts +5 -1
  244. package/dist/types/index.d.ts.map +1 -1
  245. package/dist/utils/baseHead.js +2 -2
  246. package/dist/utils/index.js +6 -6
  247. package/dist/utils/store-base.d.ts +30 -0
  248. package/dist/utils/store-base.d.ts.map +1 -1
  249. package/dist/utils/store-identity.d.ts +8 -0
  250. package/dist/utils/store-identity.d.ts.map +1 -1
  251. package/dist/vite/index.js +3 -3
  252. package/package.json +1 -1
  253. package/tailwind/routes/root/beforeLoad.ts.txt +27 -9
  254. package/dist/chunk-FXVII733.js.map +0 -1
  255. package/dist/chunk-S4KV6QGP.js.map +0 -1
  256. package/dist/document-class-TRLFCQHJ.js +0 -32
package/dist/api/menu.js CHANGED
@@ -1,8 +1,8 @@
1
- export { menu } from '../chunk-KVBWIXXG.js';
2
- import '../chunk-G3NCSKQ3.js';
1
+ export { menu } from '../chunk-2ZESCQRM.js';
2
+ import '../chunk-U2UNWN4G.js';
3
3
  import '../chunk-Z5M4YYWT.js';
4
- import '../chunk-NHA4SBKG.js';
5
- import '../chunk-FXVII733.js';
4
+ import '../chunk-XMRNYUQY.js';
5
+ import '../chunk-T2752RH7.js';
6
6
  import '../chunk-6K34BCUP.js';
7
7
  import '../chunk-T72DAX7R.js';
8
8
  import '../chunk-DGUM43GV.js';
@@ -1,8 +1,8 @@
1
- export { notification } from '../chunk-WU5Z4JGX.js';
2
- import '../chunk-G3NCSKQ3.js';
1
+ export { notification } from '../chunk-BMCECPSU.js';
2
+ import '../chunk-U2UNWN4G.js';
3
3
  import '../chunk-Z5M4YYWT.js';
4
- import '../chunk-NHA4SBKG.js';
5
- import '../chunk-FXVII733.js';
4
+ import '../chunk-XMRNYUQY.js';
5
+ import '../chunk-T2752RH7.js';
6
6
  import '../chunk-6K34BCUP.js';
7
7
  import '../chunk-T72DAX7R.js';
8
8
  import '../chunk-DGUM43GV.js';
package/dist/api/order.js CHANGED
@@ -1,11 +1,11 @@
1
- export { order } from '../chunk-4L5RHZHJ.js';
2
- import '../chunk-2ZR562TA.js';
1
+ export { order } from '../chunk-N44U2AA7.js';
2
+ import '../chunk-HRW4YFHR.js';
3
3
  import '../chunk-OUW6WESU.js';
4
- import '../chunk-G3NCSKQ3.js';
4
+ import '../chunk-U2UNWN4G.js';
5
5
  import '../chunk-Z5M4YYWT.js';
6
- import '../chunk-3E3ABCPC.js';
7
- import '../chunk-NHA4SBKG.js';
8
- import '../chunk-FXVII733.js';
6
+ import '../chunk-6TFM3UTF.js';
7
+ import '../chunk-XMRNYUQY.js';
8
+ import '../chunk-T2752RH7.js';
9
9
  import '../chunk-6K34BCUP.js';
10
10
  import '../chunk-T72DAX7R.js';
11
11
  import '../chunk-DF6FBKDN.js';
package/dist/api/page.js CHANGED
@@ -1,11 +1,11 @@
1
- export { page } from '../chunk-IAM44RPN.js';
2
- import '../chunk-2ZR562TA.js';
1
+ export { page } from '../chunk-YQOCPSOI.js';
2
+ import '../chunk-HRW4YFHR.js';
3
3
  import '../chunk-OUW6WESU.js';
4
- import '../chunk-G3NCSKQ3.js';
4
+ import '../chunk-U2UNWN4G.js';
5
5
  import '../chunk-Z5M4YYWT.js';
6
- import '../chunk-3E3ABCPC.js';
7
- import '../chunk-NHA4SBKG.js';
8
- import '../chunk-FXVII733.js';
6
+ import '../chunk-6TFM3UTF.js';
7
+ import '../chunk-XMRNYUQY.js';
8
+ import '../chunk-T2752RH7.js';
9
9
  import '../chunk-6K34BCUP.js';
10
10
  import '../chunk-T72DAX7R.js';
11
11
  import '../chunk-DF6FBKDN.js';
@@ -1,11 +1,11 @@
1
- export { getProductPreview, isProductPreviewQuery, parseNextPageToken, product, productDetailQueryKey, productPreviewQueryKey, rememberProductPreview, shouldDehydrateQuery } from '../chunk-WATFGHFK.js';
2
- import '../chunk-2ZR562TA.js';
1
+ export { getProductPreview, isProductPreviewQuery, parseNextPageToken, product, productDetailQueryKey, productPreviewQueryKey, rememberProductPreview, shouldDehydrateQuery } from '../chunk-WIDH6AK6.js';
2
+ import '../chunk-HRW4YFHR.js';
3
3
  import '../chunk-OUW6WESU.js';
4
- import '../chunk-G3NCSKQ3.js';
4
+ import '../chunk-U2UNWN4G.js';
5
5
  import '../chunk-Z5M4YYWT.js';
6
- import '../chunk-3E3ABCPC.js';
7
- import '../chunk-NHA4SBKG.js';
8
- import '../chunk-FXVII733.js';
6
+ import '../chunk-6TFM3UTF.js';
7
+ import '../chunk-XMRNYUQY.js';
8
+ import '../chunk-T2752RH7.js';
9
9
  import '../chunk-6K34BCUP.js';
10
10
  import '../chunk-T72DAX7R.js';
11
11
  import '../chunk-DF6FBKDN.js';
@@ -1,7 +1,7 @@
1
- import { api } from '../chunk-G3NCSKQ3.js';
1
+ import { api } from '../chunk-U2UNWN4G.js';
2
2
  import '../chunk-Z5M4YYWT.js';
3
- import '../chunk-NHA4SBKG.js';
4
- import '../chunk-FXVII733.js';
3
+ import '../chunk-XMRNYUQY.js';
4
+ import '../chunk-T2752RH7.js';
5
5
  import '../chunk-6K34BCUP.js';
6
6
  import '../chunk-T72DAX7R.js';
7
7
  import '../chunk-DGUM43GV.js';
package/dist/api/store.js CHANGED
@@ -1,9 +1,9 @@
1
- export { store } from '../chunk-YVQXIZY7.js';
2
- import '../chunk-Q7E4TNN7.js';
3
- import '../chunk-G3NCSKQ3.js';
1
+ export { store } from '../chunk-DMR3ICV5.js';
2
+ import '../chunk-SLBO4SEE.js';
3
+ import '../chunk-U2UNWN4G.js';
4
4
  import '../chunk-Z5M4YYWT.js';
5
- import '../chunk-NHA4SBKG.js';
6
- export { resolveStoreIdentifier } from '../chunk-FXVII733.js';
5
+ import '../chunk-XMRNYUQY.js';
6
+ export { resolveStoreIdentifier } from '../chunk-T2752RH7.js';
7
7
  import '../chunk-6K34BCUP.js';
8
8
  import '../chunk-T72DAX7R.js';
9
9
  import '../chunk-DGUM43GV.js';
@@ -1,8 +1,8 @@
1
- export { commonTranslationsPath, storeTranslationsPath, translations } from '../chunk-PYUTATUY.js';
2
- import '../chunk-G3NCSKQ3.js';
1
+ export { commonTranslationsPath, storeTranslationsPath, translations } from '../chunk-FPGR63AQ.js';
2
+ import '../chunk-U2UNWN4G.js';
3
3
  import '../chunk-Z5M4YYWT.js';
4
- import '../chunk-NHA4SBKG.js';
5
- import '../chunk-FXVII733.js';
4
+ import '../chunk-XMRNYUQY.js';
5
+ import '../chunk-T2752RH7.js';
6
6
  import '../chunk-6K34BCUP.js';
7
7
  import '../chunk-T72DAX7R.js';
8
8
  import '../chunk-DGUM43GV.js';
package/dist/api/user.js CHANGED
@@ -1,8 +1,8 @@
1
- export { user } from '../chunk-BBQATCYN.js';
2
- import '../chunk-G3NCSKQ3.js';
1
+ export { user } from '../chunk-5JZSBFA5.js';
2
+ import '../chunk-U2UNWN4G.js';
3
3
  import '../chunk-Z5M4YYWT.js';
4
- import '../chunk-NHA4SBKG.js';
5
- import '../chunk-FXVII733.js';
4
+ import '../chunk-XMRNYUQY.js';
5
+ import '../chunk-T2752RH7.js';
6
6
  import '../chunk-6K34BCUP.js';
7
7
  import '../chunk-T72DAX7R.js';
8
8
  import '../chunk-DGUM43GV.js';
@@ -1,8 +1,8 @@
1
- export { wallet } from '../chunk-JYPIPQ3V.js';
2
- import '../chunk-G3NCSKQ3.js';
1
+ export { wallet } from '../chunk-VCMGBB5Y.js';
2
+ import '../chunk-U2UNWN4G.js';
3
3
  import '../chunk-Z5M4YYWT.js';
4
- import '../chunk-NHA4SBKG.js';
5
- import '../chunk-FXVII733.js';
4
+ import '../chunk-XMRNYUQY.js';
5
+ import '../chunk-T2752RH7.js';
6
6
  import '../chunk-6K34BCUP.js';
7
7
  import '../chunk-T72DAX7R.js';
8
8
  import '../chunk-DGUM43GV.js';
@@ -1,12 +1,12 @@
1
- export { wishlist } from '../chunk-MDU7ERR3.js';
2
- import '../chunk-WATFGHFK.js';
3
- import '../chunk-2ZR562TA.js';
1
+ export { wishlist } from '../chunk-TF46NIZF.js';
2
+ import '../chunk-WIDH6AK6.js';
3
+ import '../chunk-HRW4YFHR.js';
4
4
  import '../chunk-OUW6WESU.js';
5
- import '../chunk-G3NCSKQ3.js';
5
+ import '../chunk-U2UNWN4G.js';
6
6
  import '../chunk-Z5M4YYWT.js';
7
- import '../chunk-3E3ABCPC.js';
8
- import '../chunk-NHA4SBKG.js';
9
- import '../chunk-FXVII733.js';
7
+ import '../chunk-6TFM3UTF.js';
8
+ import '../chunk-XMRNYUQY.js';
9
+ import '../chunk-T2752RH7.js';
10
10
  import '../chunk-6K34BCUP.js';
11
11
  import '../chunk-T72DAX7R.js';
12
12
  import '../chunk-DF6FBKDN.js';
@@ -1,5 +1,5 @@
1
- import { redirect } from './chunk-2ZR562TA.js';
2
- import { clearAuthTokenCookie } from './chunk-FXVII733.js';
1
+ import { redirect } from './chunk-HRW4YFHR.js';
2
+ import { clearAuthTokenCookie } from './chunk-T2752RH7.js';
3
3
  import { FALLBACK_LOCALE } from './chunk-T72DAX7R.js';
4
4
  import { useEffect } from 'react';
5
5
 
@@ -37,5 +37,5 @@ function LogoutRedirect() {
37
37
  }
38
38
 
39
39
  export { LogoutRedirect, accountRedirectLoader, pendingOrdersRedirectLoader, productsSourceRedirectLoader, ratingRedirectLoader, slugBrandRedirectLoader };
40
- //# sourceMappingURL=chunk-BXMU3ARO.js.map
41
- //# sourceMappingURL=chunk-BXMU3ARO.js.map
40
+ //# sourceMappingURL=chunk-2N6XZZ4W.js.map
41
+ //# sourceMappingURL=chunk-2N6XZZ4W.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/seo-redirects.ts"],"names":[],"mappings":";;;;;AAcA,eAAsB,wBAAwB,GAAA,EAAkD;AAC9F,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,SAAS,CAAA,CAAA,EAAI,MAAM,WAAW,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,CAAE,CAAA;AACrD;AAOA,eAAsB,4BACpB,GAAA,GAA+C,EAAE,MAAA,EAAQ,IAAG,EAC5C;AAChB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,QAAA,CAAS,CAAA,CAAA,EAAI,MAAM,CAAA,8BAAA,CAAgC,CAAA;AAC3D;AAGA,eAAsB,qBACpB,GAAA,GAA+C,EAAE,MAAA,EAAQ,IAAG,EAC5C;AAChB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,QAAA,CAAS,CAAA,CAAA,EAAI,MAAM,CAAA,eAAA,CAAiB,CAAA;AAC5C;AAGA,eAAsB,sBAAsB,GAAA,EAKzB;AAEjB,EAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,MAAA,GAAS,IAAI,GAAA,CAAI,MAAA,CAAO,MAAM,CAAA,CAAA,GAAK,EAAA;AAC7D,EAAA,MAAM,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA,SAAA,EAAY,IAAI,IAAI,CAAA,EAAG,GAAA,CAAI,MAAA,IAAU,EAAE,CAAA,CAAA,EAAI,EAAE,UAAA,EAAY,KAAK,CAAA;AACxF;AAGA,eAAsB,6BAA6B,GAAA,EAIhC;AACjB,EAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,MAAA,GAAS,IAAI,GAAA,CAAI,MAAA,CAAO,MAAM,CAAA,CAAA,GAAK,EAAA;AAC7D,EAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,CAAgB,GAAA,CAAI,MAAM,CAAA;AAC5C,EAAA,KAAA,CAAM,OAAO,QAAQ,CAAA;AACrB,EAAA,MAAM,IAAA,GAAO,MAAM,QAAA,EAAS;AAC5B,EAAA,MAAM,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA,iBAAA,EAAoB,GAAA,CAAI,MAAM,CAAA,EAAG,IAAA,GAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA,EAAI;AAAA,IACjF,UAAA,EAAY;AAAA,GACb,CAAA;AACH;AAUO,SAAS,cAAA,GAAuB;AACrC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,oBAAA,EAAqB;AAErB,IAAA,MAAA,CAAO,QAAA,CAAS,QAAQ,MAAA,CAAO,QAAA,CAAS,KAAK,OAAA,CAAQ,8BAAA,EAAgC,EAAE,CAAC,CAAA;AAAA,EAC1F,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,OAAO,IAAA;AACT","file":"chunk-BXMU3ARO.js","sourcesContent":["import { useEffect } from 'react';\nimport { redirect } from '../providers/NavigationProvider';\nimport { FALLBACK_LOCALE } from '../providers/locale-constants';\nimport { clearAuthTokenCookie } from '../utils/cookies';\n\nexport interface SlugBrandParams {\n /** SEO slug segment (ignored — only here to match the route pattern). */\n slug: string;\n /** Brand numeric ID to redirect to. */\n id: string;\n /** Active locale from the `/$locale` parent layout (e.g. `'ar'`, `'en'`). */\n locale?: string;\n}\n\nexport async function slugBrandRedirectLoader(ctx: { params: SlugBrandParams }): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/brands/${ctx.params.id}`);\n}\n\nexport interface PendingOrdersRedirectParams {\n /** Active locale from the `/$locale` parent layout (e.g. `'ar'`, `'en'`). */\n locale?: string;\n}\n\nexport async function pendingOrdersRedirectLoader(\n ctx: { params: PendingOrdersRedirectParams } = { params: {} }\n): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/account/orders?status=pending`);\n}\n\n/** `/account/rating`: the loyalty \"rate your orders\" link. Twig Raed has no rating page and sends it to the orders list. */\nexport async function ratingRedirectLoader(\n ctx: { params: PendingOrdersRedirectParams } = { params: {} }\n): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/account/orders`);\n}\n\n/** A Twig customer URL (`/profile`, `/orders`, …) kept working as its `/account/…` page. */\nexport async function accountRedirectLoader(ctx: {\n params: PendingOrdersRedirectParams;\n page: string;\n /** The incoming query string (`?status=pending`), kept on the account page. */\n search?: string;\n}): Promise<never> {\n // No locale in the URL stays without one: the locale layout adds it only where the store has several.\n const prefix = ctx.params.locale ? `/${ctx.params.locale}` : '';\n throw redirect(`${prefix}/account/${ctx.page}${ctx.search ?? ''}`, { statusCode: 301 });\n}\n\n/** `/latest-products`, `/most-sales-products` and `/offers` now live at `/products?source=`. */\nexport async function productsSourceRedirectLoader(ctx: {\n params: PendingOrdersRedirectParams;\n source: 'latest' | 'sales' | 'offers';\n search?: string;\n}): Promise<never> {\n const prefix = ctx.params.locale ? `/${ctx.params.locale}` : '';\n const query = new URLSearchParams(ctx.search);\n query.delete('source');\n const rest = query.toString();\n throw redirect(`${prefix}/products?source=${ctx.source}${rest ? `&${rest}` : ''}`, {\n statusCode: 301,\n });\n}\n\n/**\n * `/logout` — where the SDK sends the browser once `salla.auth.logout()` has run\n * (`salla.url.get('logout?from=…')`). The Twig storefront serves that URL server-side. Here\n * it renders nothing and, in the browser, removes the theme's own `token` cookie (the SDK's\n * `cookie.clearAll()` leaves it) and then does a full navigation home. It has to be a\n * component, not a loader redirect: a loader runs during server rendering, where the cookie\n * can't be cleared, so the redirect would leave the visitor signed in on the next request.\n */\nexport function LogoutRedirect(): null {\n useEffect(() => {\n clearAuthTokenCookie();\n // `/{store base}/{locale}/logout?from=…` → `/{store base}/{locale}`\n window.location.replace(window.location.href.replace(/\\/logout\\/?(\\?[^#]*)?(#.*)?$/, ''));\n }, []);\n return null;\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/seo-redirects.ts"],"names":[],"mappings":";;;;;AAcA,eAAsB,wBAAwB,GAAA,EAAkD;AAC9F,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,SAAS,CAAA,CAAA,EAAI,MAAM,WAAW,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,CAAE,CAAA;AACrD;AAOA,eAAsB,4BACpB,GAAA,GAA+C,EAAE,MAAA,EAAQ,IAAG,EAC5C;AAChB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,QAAA,CAAS,CAAA,CAAA,EAAI,MAAM,CAAA,8BAAA,CAAgC,CAAA;AAC3D;AAGA,eAAsB,qBACpB,GAAA,GAA+C,EAAE,MAAA,EAAQ,IAAG,EAC5C;AAChB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,QAAA,CAAS,CAAA,CAAA,EAAI,MAAM,CAAA,eAAA,CAAiB,CAAA;AAC5C;AAGA,eAAsB,sBAAsB,GAAA,EAKzB;AAEjB,EAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,MAAA,GAAS,IAAI,GAAA,CAAI,MAAA,CAAO,MAAM,CAAA,CAAA,GAAK,EAAA;AAC7D,EAAA,MAAM,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA,SAAA,EAAY,IAAI,IAAI,CAAA,EAAG,GAAA,CAAI,MAAA,IAAU,EAAE,CAAA,CAAA,EAAI,EAAE,UAAA,EAAY,KAAK,CAAA;AACxF;AAGA,eAAsB,6BAA6B,GAAA,EAIhC;AACjB,EAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,MAAA,GAAS,IAAI,GAAA,CAAI,MAAA,CAAO,MAAM,CAAA,CAAA,GAAK,EAAA;AAC7D,EAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,CAAgB,GAAA,CAAI,MAAM,CAAA;AAC5C,EAAA,KAAA,CAAM,OAAO,QAAQ,CAAA;AACrB,EAAA,MAAM,IAAA,GAAO,MAAM,QAAA,EAAS;AAC5B,EAAA,MAAM,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA,iBAAA,EAAoB,GAAA,CAAI,MAAM,CAAA,EAAG,IAAA,GAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA,EAAI;AAAA,IACjF,UAAA,EAAY;AAAA,GACb,CAAA;AACH;AAUO,SAAS,cAAA,GAAuB;AACrC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,oBAAA,EAAqB;AAErB,IAAA,MAAA,CAAO,QAAA,CAAS,QAAQ,MAAA,CAAO,QAAA,CAAS,KAAK,OAAA,CAAQ,8BAAA,EAAgC,EAAE,CAAC,CAAA;AAAA,EAC1F,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,OAAO,IAAA;AACT","file":"chunk-2N6XZZ4W.js","sourcesContent":["import { useEffect } from 'react';\nimport { redirect } from '../providers/NavigationProvider';\nimport { FALLBACK_LOCALE } from '../providers/locale-constants';\nimport { clearAuthTokenCookie } from '../utils/cookies';\n\nexport interface SlugBrandParams {\n /** SEO slug segment (ignored — only here to match the route pattern). */\n slug: string;\n /** Brand numeric ID to redirect to. */\n id: string;\n /** Active locale from the `/$locale` parent layout (e.g. `'ar'`, `'en'`). */\n locale?: string;\n}\n\nexport async function slugBrandRedirectLoader(ctx: { params: SlugBrandParams }): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/brands/${ctx.params.id}`);\n}\n\nexport interface PendingOrdersRedirectParams {\n /** Active locale from the `/$locale` parent layout (e.g. `'ar'`, `'en'`). */\n locale?: string;\n}\n\nexport async function pendingOrdersRedirectLoader(\n ctx: { params: PendingOrdersRedirectParams } = { params: {} }\n): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/account/orders?status=pending`);\n}\n\n/** `/account/rating`: the loyalty \"rate your orders\" link. Twig Raed has no rating page and sends it to the orders list. */\nexport async function ratingRedirectLoader(\n ctx: { params: PendingOrdersRedirectParams } = { params: {} }\n): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/account/orders`);\n}\n\n/** A Twig customer URL (`/profile`, `/orders`, …) kept working as its `/account/…` page. */\nexport async function accountRedirectLoader(ctx: {\n params: PendingOrdersRedirectParams;\n page: string;\n /** The incoming query string (`?status=pending`), kept on the account page. */\n search?: string;\n}): Promise<never> {\n // No locale in the URL stays without one: the locale layout adds it only where the store has several.\n const prefix = ctx.params.locale ? `/${ctx.params.locale}` : '';\n throw redirect(`${prefix}/account/${ctx.page}${ctx.search ?? ''}`, { statusCode: 301 });\n}\n\n/** `/latest-products`, `/most-sales-products` and `/offers` now live at `/products?source=`. */\nexport async function productsSourceRedirectLoader(ctx: {\n params: PendingOrdersRedirectParams;\n source: 'latest' | 'sales' | 'offers';\n search?: string;\n}): Promise<never> {\n const prefix = ctx.params.locale ? `/${ctx.params.locale}` : '';\n const query = new URLSearchParams(ctx.search);\n query.delete('source');\n const rest = query.toString();\n throw redirect(`${prefix}/products?source=${ctx.source}${rest ? `&${rest}` : ''}`, {\n statusCode: 301,\n });\n}\n\n/**\n * `/logout` — where the SDK sends the browser once `salla.auth.logout()` has run\n * (`salla.url.get('logout?from=…')`). The Twig storefront serves that URL server-side. Here\n * it renders nothing and, in the browser, removes the theme's own `token` cookie (the SDK's\n * `cookie.clearAll()` leaves it) and then does a full navigation home. It has to be a\n * component, not a loader redirect: a loader runs during server rendering, where the cookie\n * can't be cleared, so the redirect would leave the visitor signed in on the next request.\n */\nexport function LogoutRedirect(): null {\n useEffect(() => {\n clearAuthTokenCookie();\n // `/{store base}/{locale}/logout?from=…` → `/{store base}/{locale}`\n window.location.replace(window.location.href.replace(/\\/logout\\/?(\\?[^#]*)?(#.*)?$/, ''));\n }, []);\n return null;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { api } from './chunk-G3NCSKQ3.js';
1
+ import { api } from './chunk-U2UNWN4G.js';
2
2
  import { getTwilightContext } from './chunk-6K34BCUP.js';
3
3
  import { queryOptions } from '@tanstack/react-query';
4
4
 
@@ -23,5 +23,5 @@ var menu = {
23
23
  };
24
24
 
25
25
  export { menu };
26
- //# sourceMappingURL=chunk-KVBWIXXG.js.map
27
- //# sourceMappingURL=chunk-KVBWIXXG.js.map
26
+ //# sourceMappingURL=chunk-2ZESCQRM.js.map
27
+ //# sourceMappingURL=chunk-2ZESCQRM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/menu.ts"],"names":[],"mappings":";;;;AAKO,IAAM,IAAA,GAAO;AAAA,EAClB,QAAQ,YAAiC;AACvC,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,kBAAA,EAAmB;AACtC,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,CAAA,kBAAA,EAAqB,MAAM,CAAA,CAAE,CAAA,CAAE,IAAA,EAA2B;AACzF,IAAA,OAAO,QAAQ,EAAC;AAAA,EAClB,CAAA;AAAA,EAEA,QAAQ,YAAiC;AACvC,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,kBAAA,EAAmB;AACtC,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,CAAA,kBAAA,EAAqB,MAAM,CAAA,CAAE,CAAA,CAAE,IAAA,EAA2B;AACzF,IAAA,OAAO,QAAQ,EAAC;AAAA,EAClB,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,MAAA,EAAQ,MACN,YAAA,CAAa;AAAA,MACX,UAAU,CAAC,OAAA,EAAS,QAAA,EAAU,kBAAA,GAAqB,MAAM,CAAA;AAAA,MACzD,OAAA,EAAS,MAAM,IAAA,CAAK,MAAA,EAAO;AAAA,MAC3B,SAAA,EAAW,IAAI,EAAA,GAAK;AAAA,KACrB;AAAA;AAEP","file":"chunk-KVBWIXXG.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport { getTwilightContext } from '../twilight/context';\nimport type { MenuItem } from '../types';\n\nexport const menu = {\n header: async (): Promise<MenuItem[]> => {\n const { locale } = getTwilightContext();\n const { data } = await api.get(`menus/header?lang=${locale}`).json<{ data: MenuItem[] }>();\n return data || [];\n },\n\n footer: async (): Promise<MenuItem[]> => {\n const { locale } = getTwilightContext();\n const { data } = await api.get(`menus/footer?lang=${locale}`).json<{ data: MenuItem[] }>();\n return data || [];\n },\n\n queries: {\n header: () =>\n queryOptions({\n queryKey: ['menus', 'header', getTwilightContext().locale],\n queryFn: () => menu.header(),\n staleTime: 5 * 60 * 1000,\n }),\n },\n};\n"]}
1
+ {"version":3,"sources":["../src/api/menu.ts"],"names":[],"mappings":";;;;AAKO,IAAM,IAAA,GAAO;AAAA,EAClB,QAAQ,YAAiC;AACvC,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,kBAAA,EAAmB;AACtC,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,CAAA,kBAAA,EAAqB,MAAM,CAAA,CAAE,CAAA,CAAE,IAAA,EAA2B;AACzF,IAAA,OAAO,QAAQ,EAAC;AAAA,EAClB,CAAA;AAAA,EAEA,QAAQ,YAAiC;AACvC,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,kBAAA,EAAmB;AACtC,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,CAAA,kBAAA,EAAqB,MAAM,CAAA,CAAE,CAAA,CAAE,IAAA,EAA2B;AACzF,IAAA,OAAO,QAAQ,EAAC;AAAA,EAClB,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,MAAA,EAAQ,MACN,YAAA,CAAa;AAAA,MACX,UAAU,CAAC,OAAA,EAAS,QAAA,EAAU,kBAAA,GAAqB,MAAM,CAAA;AAAA,MACzD,OAAA,EAAS,MAAM,IAAA,CAAK,MAAA,EAAO;AAAA,MAC3B,SAAA,EAAW,IAAI,EAAA,GAAK;AAAA,KACrB;AAAA;AAEP","file":"chunk-2ZESCQRM.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport { getTwilightContext } from '../twilight/context';\nimport type { MenuItem } from '../types';\n\nexport const menu = {\n header: async (): Promise<MenuItem[]> => {\n const { locale } = getTwilightContext();\n const { data } = await api.get(`menus/header?lang=${locale}`).json<{ data: MenuItem[] }>();\n return data || [];\n },\n\n footer: async (): Promise<MenuItem[]> => {\n const { locale } = getTwilightContext();\n const { data } = await api.get(`menus/footer?lang=${locale}`).json<{ data: MenuItem[] }>();\n return data || [];\n },\n\n queries: {\n header: () =>\n queryOptions({\n queryKey: ['menus', 'header', getTwilightContext().locale],\n queryFn: () => menu.header(),\n staleTime: 5 * 60 * 1000,\n }),\n },\n};\n"]}
@@ -1,8 +1,8 @@
1
1
  import { reorder, useLiveBlockMoves } from './chunk-IXHM24Z4.js';
2
- import { HomeComponentRenderer, ReorderProducts } from './chunk-TAVF4E7T.js';
3
- import { home } from './chunk-CRO7DXS3.js';
4
- import { useDevHomeBlocks } from './chunk-AD4QPYNG.js';
5
- import { storePageUrl, buildHreflangAlternates } from './chunk-RYGEIQWO.js';
2
+ import { HomeComponentRenderer, ReorderProducts } from './chunk-HJGN3XVG.js';
3
+ import { home } from './chunk-7NTPNCIK.js';
4
+ import { useDevHomeBlocks } from './chunk-PCB5DCS4.js';
5
+ import { storePageUrl, buildHreflangAlternates } from './chunk-MGG4XAJ5.js';
6
6
  import { RouteId } from './chunk-OUW6WESU.js';
7
7
  import { HookSlot } from './chunk-5XDPAKF5.js';
8
8
  import { getTwilightContext } from './chunk-6K34BCUP.js';
@@ -104,5 +104,5 @@ function head(ctx) {
104
104
  var Home = { id: RouteId.INDEX, loader, head, Component: HomePage };
105
105
 
106
106
  export { Home, HomeSkeleton, homeLoader };
107
- //# sourceMappingURL=chunk-RWAOBMAK.js.map
108
- //# sourceMappingURL=chunk-RWAOBMAK.js.map
107
+ //# sourceMappingURL=chunk-52QZKUDU.js.map
108
+ //# sourceMappingURL=chunk-52QZKUDU.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/home/loader.ts","../src/routes/home/HomePage.tsx","../src/routes/home/index.tsx"],"names":["HomeSkeleton","HomePage"],"mappings":"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","file":"chunk-RWAOBMAK.js","sourcesContent":["import { getTwilightContext } from '../../twilight/context';\nimport { home } from '../../api/home';\nimport type { HomeComponentData } from '../../types';\nimport { RouteId } from '../../router/route-ids';\n\nexport interface HomeLoaderData {\n locale: string;\n components: HomeComponentData[];\n page: { slug: string };\n}\n\nexport async function homeLoader(ctx?: { locale?: string }): Promise<HomeLoaderData> {\n const { queryClient } = getTwilightContext();\n const components = await queryClient.ensureQueryData(home.queries.components());\n const result = {\n locale: ctx?.locale || 'ar',\n components: components.map((comp) => ({\n ...comp,\n path: comp.path?.replace('home.', '') || comp.path,\n })),\n page: { slug: RouteId.INDEX },\n };\n return result;\n}\n","import { memo, useCallback, useState } from 'react';\nimport { useDevHomeBlocks } from '../../dev/dev-settings-store';\nimport { HookSlot } from '../../hooks';\nimport { HomeComponentRenderer, ReorderProducts } from '../../components/home';\nimport { reorder, useLiveBlockMoves } from '../../components/live-editor/moves';\nimport type { HomePageProps } from './types';\nimport type { HomeComponentData } from '../../types';\nimport { Pulse } from '@salla.sa/twilight-components-react';\n\nexport const HomeSkeleton = memo(function HomeSkeleton() {\n return (\n <>\n <div className=\"s-block container skeleton-block-hero\">\n <Pulse className=\"h-64 sm:h-80 rounded-md\" />\n </div>\n <div className=\"s-block container skeleton-block-products\">\n <Pulse className=\"h-10 w-48 mb-4\" />\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"h-56\" />\n ))}\n </div>\n </div>\n <div className=\"s-block container skeleton-block-products\">\n <Pulse className=\"h-10 w-48 mb-4\" />\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"h-56\" />\n ))}\n </div>\n </div>\n </>\n );\n});\n\n/** As on Twig, a home page with no blocks lists the store's latest products instead. */\nconst LATEST_PRODUCTS: HomeComponentData = { path: 'latest-products' };\n\n/** The blocks' places in the store's order: 0, 1, 2… */\nconst storeOrder = (blocks: readonly unknown[]) => Array.from(blocks, (_, at) => at);\n\nexport const HomePage = memo(function HomePage({ components = [] }: HomePageProps) {\n // Dev-mode only: the dev editor's layout replaces the store's blocks while it\n // is on. No-op passthrough in production builds.\n const renderedComponents = useDevHomeBlocks(components);\n // The theme editor's preview moves blocks in place while the editor saves the\n // order; blocks from the server (a new page, a reload) start over from theirs.\n const [moved, setMoved] = useState<{ source: HomeComponentData[]; order: number[] } | null>(null);\n const order = moved?.source === renderedComponents ? moved.order : null;\n const onMove = useCallback(\n (from: number, to: number) =>\n setMoved((prev) => ({\n source: renderedComponents,\n order: reorder(\n prev?.source === renderedComponents ? prev.order : storeOrder(renderedComponents),\n from,\n to\n ),\n })),\n [renderedComponents]\n );\n useLiveBlockMoves(onMove);\n const placed = order ?? storeOrder(renderedComponents);\n\n return (\n <>\n <HookSlot name=\"home:start\" />\n <HookSlot name=\"home:content\" />\n {placed.map((at, index) => {\n const data = renderedComponents[at];\n // `data.key` is the twilight.json catalog id, shared by every placement\n // of that block. Platform blocks send null. The block's place in the\n // store's order is unique and stays with it when the preview moves it, so\n // a move keeps its state; a dev layout block keeps its own id.\n return <HomeComponentRenderer key={data.__dev_id ?? at} data={data} index={index} />;\n })}\n {!renderedComponents.length && (\n <HomeComponentRenderer data={LATEST_PRODUCTS} index={0} editable={false} />\n )}\n <HookSlot name=\"home:end\" />\n <ReorderProducts />\n </>\n );\n});\n\nexport { HomePage as default };\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates, storePageUrl } from '../../utils/baseHead';\nimport type { HomeLoaderData } from './loader';\nimport { homeLoader } from './loader';\nimport type { TwilightContext } from '../../twilight/context';\nimport { HomePage } from './HomePage';\nimport { RouteId } from '../../router/route-ids';\n\nexport { HomeSkeleton } from './HomePage';\nexport { registerHomeComponents, DefaultHomeComponents } from '../../components/home/register';\nexport { registerHomeComponentConfig } from '../../components/home';\nexport type { HomePageProps } from './types';\nexport type { HomeLoaderData } from './loader';\nexport type {\n HomeComponentsProps,\n AnyHomeComponent,\n HomeComponentConfig,\n} from '../../components/home';\n\nfunction loader(_ctx?: { locale?: string }): Promise<HomeLoaderData> {\n return homeLoader({ locale: _ctx?.locale });\n}\n\nfunction head(ctx: TwilightContext): HeadDescriptor {\n const store = ctx.settings?.store;\n if (!store) return {};\n\n const title = store.meta?.title ?? store.name;\n const description = store.meta?.description ?? store.description;\n const keywords = store.meta?.keywords;\n // `/ar`, like Twig, where store.url reads `/ar/`.\n const url = storePageUrl(ctx.settings, ctx.location.pathname) ?? store.url;\n\n return {\n title,\n description,\n keywords,\n canonical: url,\n openGraph: {\n type: 'website',\n title,\n description,\n images: store.logo,\n url,\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description,\n images: store.logo,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n}\n\nexport const Home = { id: RouteId.INDEX, loader, head, Component: HomePage } as const;\n\nexport { homeLoader };\n"]}
1
+ {"version":3,"sources":["../src/routes/home/loader.ts","../src/routes/home/HomePage.tsx","../src/routes/home/index.tsx"],"names":["HomeSkeleton","HomePage"],"mappings":"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","file":"chunk-52QZKUDU.js","sourcesContent":["import { getTwilightContext } from '../../twilight/context';\nimport { home } from '../../api/home';\nimport type { HomeComponentData } from '../../types';\nimport { RouteId } from '../../router/route-ids';\n\nexport interface HomeLoaderData {\n locale: string;\n components: HomeComponentData[];\n page: { slug: string };\n}\n\nexport async function homeLoader(ctx?: { locale?: string }): Promise<HomeLoaderData> {\n const { queryClient } = getTwilightContext();\n const components = await queryClient.ensureQueryData(home.queries.components());\n const result = {\n locale: ctx?.locale || 'ar',\n components: components.map((comp) => ({\n ...comp,\n path: comp.path?.replace('home.', '') || comp.path,\n })),\n page: { slug: RouteId.INDEX },\n };\n return result;\n}\n","import { memo, useCallback, useState } from 'react';\nimport { useDevHomeBlocks } from '../../dev/dev-settings-store';\nimport { HookSlot } from '../../hooks';\nimport { HomeComponentRenderer, ReorderProducts } from '../../components/home';\nimport { reorder, useLiveBlockMoves } from '../../components/live-editor/moves';\nimport type { HomePageProps } from './types';\nimport type { HomeComponentData } from '../../types';\nimport { Pulse } from '@salla.sa/twilight-components-react';\n\nexport const HomeSkeleton = memo(function HomeSkeleton() {\n return (\n <>\n <div className=\"s-block container skeleton-block-hero\">\n <Pulse className=\"h-64 sm:h-80 rounded-md\" />\n </div>\n <div className=\"s-block container skeleton-block-products\">\n <Pulse className=\"h-10 w-48 mb-4\" />\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"h-56\" />\n ))}\n </div>\n </div>\n <div className=\"s-block container skeleton-block-products\">\n <Pulse className=\"h-10 w-48 mb-4\" />\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"h-56\" />\n ))}\n </div>\n </div>\n </>\n );\n});\n\n/** As on Twig, a home page with no blocks lists the store's latest products instead. */\nconst LATEST_PRODUCTS: HomeComponentData = { path: 'latest-products' };\n\n/** The blocks' places in the store's order: 0, 1, 2… */\nconst storeOrder = (blocks: readonly unknown[]) => Array.from(blocks, (_, at) => at);\n\nexport const HomePage = memo(function HomePage({ components = [] }: HomePageProps) {\n // Dev-mode only: the dev editor's layout replaces the store's blocks while it\n // is on. No-op passthrough in production builds.\n const renderedComponents = useDevHomeBlocks(components);\n // The theme editor's preview moves blocks in place while the editor saves the\n // order; blocks from the server (a new page, a reload) start over from theirs.\n const [moved, setMoved] = useState<{ source: HomeComponentData[]; order: number[] } | null>(null);\n const order = moved?.source === renderedComponents ? moved.order : null;\n const onMove = useCallback(\n (from: number, to: number) =>\n setMoved((prev) => ({\n source: renderedComponents,\n order: reorder(\n prev?.source === renderedComponents ? prev.order : storeOrder(renderedComponents),\n from,\n to\n ),\n })),\n [renderedComponents]\n );\n useLiveBlockMoves(onMove);\n const placed = order ?? storeOrder(renderedComponents);\n\n return (\n <>\n <HookSlot name=\"home:start\" />\n <HookSlot name=\"home:content\" />\n {placed.map((at, index) => {\n const data = renderedComponents[at];\n // `data.key` is the twilight.json catalog id, shared by every placement\n // of that block. Platform blocks send null. The block's place in the\n // store's order is unique and stays with it when the preview moves it, so\n // a move keeps its state; a dev layout block keeps its own id.\n return <HomeComponentRenderer key={data.__dev_id ?? at} data={data} index={index} />;\n })}\n {!renderedComponents.length && (\n <HomeComponentRenderer data={LATEST_PRODUCTS} index={0} editable={false} />\n )}\n <HookSlot name=\"home:end\" />\n <ReorderProducts />\n </>\n );\n});\n\nexport { HomePage as default };\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates, storePageUrl } from '../../utils/baseHead';\nimport type { HomeLoaderData } from './loader';\nimport { homeLoader } from './loader';\nimport type { TwilightContext } from '../../twilight/context';\nimport { HomePage } from './HomePage';\nimport { RouteId } from '../../router/route-ids';\n\nexport { HomeSkeleton } from './HomePage';\nexport { registerHomeComponents, DefaultHomeComponents } from '../../components/home/register';\nexport { registerHomeComponentConfig } from '../../components/home';\nexport type { HomePageProps } from './types';\nexport type { HomeLoaderData } from './loader';\nexport type {\n HomeComponentsProps,\n AnyHomeComponent,\n HomeComponentConfig,\n} from '../../components/home';\n\nfunction loader(_ctx?: { locale?: string }): Promise<HomeLoaderData> {\n return homeLoader({ locale: _ctx?.locale });\n}\n\nfunction head(ctx: TwilightContext): HeadDescriptor {\n const store = ctx.settings?.store;\n if (!store) return {};\n\n const title = store.meta?.title ?? store.name;\n const description = store.meta?.description ?? store.description;\n const keywords = store.meta?.keywords;\n // `/ar`, like Twig, where store.url reads `/ar/`.\n const url = storePageUrl(ctx.settings, ctx.location.pathname) ?? store.url;\n\n return {\n title,\n description,\n keywords,\n canonical: url,\n openGraph: {\n type: 'website',\n title,\n description,\n images: store.logo,\n url,\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description,\n images: store.logo,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n}\n\nexport const Home = { id: RouteId.INDEX, loader, head, Component: HomePage } as const;\n\nexport { homeLoader };\n"]}
@@ -1,4 +1,4 @@
1
- import { api } from './chunk-G3NCSKQ3.js';
1
+ import { api } from './chunk-U2UNWN4G.js';
2
2
  import { queryOptions } from '@tanstack/react-query';
3
3
 
4
4
  var user = {
@@ -19,5 +19,5 @@ var user = {
19
19
  };
20
20
 
21
21
  export { user };
22
- //# sourceMappingURL=chunk-BBQATCYN.js.map
23
- //# sourceMappingURL=chunk-BBQATCYN.js.map
22
+ //# sourceMappingURL=chunk-5JZSBFA5.js.map
23
+ //# sourceMappingURL=chunk-5JZSBFA5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/user.ts"],"names":[],"mappings":";;;AAIO,IAAM,IAAA,GAAO;AAAA,EAClB,KAAK,YAAkC;AACrC,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,GAAA,CACV,GAAA,CAAI,WAAW,CAAA,CACf,MAAmC,CACnC,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,IAAA,EAAM,QAAgB,CAAE,CAAA;AAAA,IACvD,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,sBAAsB,KAAK,CAAA;AACzC,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,MACP,YAAA,CAA0B;AAAA,MACxB,QAAA,EAAU,CAAC,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC5B,SAAS,IAAA,CAAK;AAAA,KACf;AAAA;AAEP","file":"chunk-BBQATCYN.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport type { User } from '../types';\n\nexport const user = {\n get: async (): Promise<User | null> => {\n try {\n return await api\n .get('auth/user')\n .json<{ data: Omit<User, 'type'> }>()\n .then((r) => ({ ...r.data, type: 'user' as const }));\n } catch (error) {\n console.debug('[user.get] Failed:', error);\n return null;\n }\n },\n\n queries: {\n current: () =>\n queryOptions<User | null>({\n queryKey: ['user', 'current'],\n queryFn: user.get,\n }),\n },\n};\n"]}
1
+ {"version":3,"sources":["../src/api/user.ts"],"names":[],"mappings":";;;AAIO,IAAM,IAAA,GAAO;AAAA,EAClB,KAAK,YAAkC;AACrC,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,GAAA,CACV,GAAA,CAAI,WAAW,CAAA,CACf,MAAmC,CACnC,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,IAAA,EAAM,QAAgB,CAAE,CAAA;AAAA,IACvD,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,sBAAsB,KAAK,CAAA;AACzC,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,MACP,YAAA,CAA0B;AAAA,MACxB,QAAA,EAAU,CAAC,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC5B,SAAS,IAAA,CAAK;AAAA,KACf;AAAA;AAEP","file":"chunk-5JZSBFA5.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport type { User } from '../types';\n\nexport const user = {\n get: async (): Promise<User | null> => {\n try {\n return await api\n .get('auth/user')\n .json<{ data: Omit<User, 'type'> }>()\n .then((r) => ({ ...r.data, type: 'user' as const }));\n } catch (error) {\n console.debug('[user.get] Failed:', error);\n return null;\n }\n },\n\n queries: {\n current: () =>\n queryOptions<User | null>({\n queryKey: ['user', 'current'],\n queryFn: user.get,\n }),\n },\n};\n"]}
@@ -1,8 +1,8 @@
1
1
  import { ensureTwilightContextFromMatches } from './chunk-X55R4VVK.js';
2
- import { renderThemeHookSlotsScript, renderAppScopeInstallScript } from './chunk-WQPG22DY.js';
2
+ import { renderThemeHookSlotsScript, renderAppScopeInstallScript } from './chunk-EGI7F57E.js';
3
3
  import { resolveHead, mergeHead } from './chunk-GD26FI4J.js';
4
- import { buildBaseHead } from './chunk-RYGEIQWO.js';
5
- import { readEnv, renderRuntimeEnvScript, escapeForInlineScript } from './chunk-FXVII733.js';
4
+ import { buildBaseHead } from './chunk-MGG4XAJ5.js';
5
+ import { readEnv, renderRuntimeEnvScript, escapeForInlineScript } from './chunk-T2752RH7.js';
6
6
  import { getTwilightContext, SettingsError } from './chunk-6K34BCUP.js';
7
7
  import { FALLBACK_LOCALE } from './chunk-T72DAX7R.js';
8
8
 
@@ -492,5 +492,5 @@ function buildCustomJsScript(customJs, isUrl) {
492
492
  }
493
493
 
494
494
  export { TICKETING_SCRIPT_URL, needsDocumentLoad, resolveTwilightSdkUrl, rootHead, setSnippetPageTargets, subscribeSnippetPageTargets };
495
- //# sourceMappingURL=chunk-N6ZE6HUX.js.map
496
- //# sourceMappingURL=chunk-N6ZE6HUX.js.map
495
+ //# sourceMappingURL=chunk-5V4W3GBI.js.map
496
+ //# sourceMappingURL=chunk-5V4W3GBI.js.map