@salla.sa/twilight-theme-engine 1.0.148 → 1.0.150

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 (263) hide show
  1. package/dist/{AddToCartForm-WY5QEHJ4.js → AddToCartForm-P5Q4P763.js} +3 -3
  2. package/dist/{AddToCartForm-WY5QEHJ4.js.map → AddToCartForm-P5Q4P763.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-E2WXK6HD.js → BlogAuthorPage-Z3R6AETN.js} +27 -27
  4. package/dist/{BlogAuthorPage-E2WXK6HD.js.map → BlogAuthorPage-Z3R6AETN.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-B2JEB33A.js → BlogCategoryPage-7VROFBGI.js} +27 -27
  6. package/dist/{BlogCategoryPage-B2JEB33A.js.map → BlogCategoryPage-7VROFBGI.js.map} +1 -1
  7. package/dist/{BlogPage-CSNI6SS5.js → BlogPage-Q2NN4WTB.js} +25 -25
  8. package/dist/{BlogPage-CSNI6SS5.js.map → BlogPage-Q2NN4WTB.js.map} +1 -1
  9. package/dist/{BlogSinglePage-5ZY5EB6H.js → BlogSinglePage-ZPCSNBIX.js} +25 -25
  10. package/dist/{BlogSinglePage-5ZY5EB6H.js.map → BlogSinglePage-ZPCSNBIX.js.map} +1 -1
  11. package/dist/{BlogTagPage-QFS7AKNK.js → BlogTagPage-IGG2VEMR.js} +27 -27
  12. package/dist/{BlogTagPage-QFS7AKNK.js.map → BlogTagPage-IGG2VEMR.js.map} +1 -1
  13. package/dist/{BrandsPage-QBA2WQHF.js → BrandsPage-ZAJT6RGM.js} +26 -26
  14. package/dist/{BrandsPage-QBA2WQHF.js.map → BrandsPage-ZAJT6RGM.js.map} +1 -1
  15. package/dist/{Breadcrumb-CH35WQ6M.js → Breadcrumb-KE4EWH7L.js} +25 -25
  16. package/dist/{Breadcrumb-CH35WQ6M.js.map → Breadcrumb-KE4EWH7L.js.map} +1 -1
  17. package/dist/{CartItem-NBM3KRUH.js → CartItem-RMCXCGHT.js} +25 -25
  18. package/dist/{CartItem-NBM3KRUH.js.map → CartItem-RMCXCGHT.js.map} +1 -1
  19. package/dist/{CartSummary-OD2IJTTA.js → CartSummary-NLEAHKWF.js} +25 -25
  20. package/dist/{CartSummary-OD2IJTTA.js.map → CartSummary-NLEAHKWF.js.map} +1 -1
  21. package/dist/{Copyright-7EC2FQUB.js → Copyright-EIBPTE3B.js} +3 -3
  22. package/dist/{Copyright-7EC2FQUB.js.map → Copyright-EIBPTE3B.js.map} +1 -1
  23. package/dist/{CustomerLayout-7GEOMQ3Z.js → CustomerLayout-POGWFN6R.js} +25 -25
  24. package/dist/{CustomerLayout-7GEOMQ3Z.js.map → CustomerLayout-POGWFN6R.js.map} +1 -1
  25. package/dist/{Footer-JTQIMWSF.js → Footer-LGIUINGS.js} +4 -4
  26. package/dist/{Footer-JTQIMWSF.js.map → Footer-LGIUINGS.js.map} +1 -1
  27. package/dist/{Header-4ZW5UVTX.js → Header-4TGYO6E4.js} +11 -11
  28. package/dist/{Header-4ZW5UVTX.js.map → Header-4TGYO6E4.js.map} +1 -1
  29. package/dist/{LatestProducts-VHN2P5TE.js → LatestProducts-YYKQNL5N.js} +27 -27
  30. package/dist/{LatestProducts-VHN2P5TE.js.map → LatestProducts-YYKQNL5N.js.map} +1 -1
  31. package/dist/{LoyaltyPage-PVK7FBFE.js → LoyaltyPage-MROFMZXV.js} +25 -25
  32. package/dist/{LoyaltyPage-PVK7FBFE.js.map → LoyaltyPage-MROFMZXV.js.map} +1 -1
  33. package/dist/{LoyaltyPointsPage-WYCO453U.js → LoyaltyPointsPage-DVHJOAKP.js} +8 -8
  34. package/dist/{LoyaltyPointsPage-WYCO453U.js.map → LoyaltyPointsPage-DVHJOAKP.js.map} +1 -1
  35. package/dist/{MainMenu-Y2PAFESM.js → MainMenu-GQO5KOTU.js} +7 -7
  36. package/dist/{MainMenu-Y2PAFESM.js.map → MainMenu-GQO5KOTU.js.map} +1 -1
  37. package/dist/{MasterLayout-EBLVT53G.js → MasterLayout-ZJBJ7EHM.js} +25 -25
  38. package/dist/{MasterLayout-EBLVT53G.js.map → MasterLayout-ZJBJ7EHM.js.map} +1 -1
  39. package/dist/{MobileMenu-YIL4MEWX.js → MobileMenu-TZSFYHPW.js} +26 -26
  40. package/dist/{MobileMenu-YIL4MEWX.js.map → MobileMenu-TZSFYHPW.js.map} +1 -1
  41. package/dist/{NotificationsPage-K2CJOV2N.js → NotificationsPage-BX6OSIDY.js} +25 -25
  42. package/dist/{NotificationsPage-K2CJOV2N.js.map → NotificationsPage-BX6OSIDY.js.map} +1 -1
  43. package/dist/{OrderSinglePage-T7S7KXJ3.js → OrderSinglePage-3RQ5TJDB.js} +26 -26
  44. package/dist/{OrderSinglePage-T7S7KXJ3.js.map → OrderSinglePage-3RQ5TJDB.js.map} +1 -1
  45. package/dist/{OrdersPage-WAW3NS2E.js → OrdersPage-S4ECYNGI.js} +25 -25
  46. package/dist/{OrdersPage-WAW3NS2E.js.map → OrdersPage-S4ECYNGI.js.map} +1 -1
  47. package/dist/{PageSingle-L5EBQGWS.js → PageSingle-BZGDC4VE.js} +6 -6
  48. package/dist/{PageSingle-L5EBQGWS.js.map → PageSingle-BZGDC4VE.js.map} +1 -1
  49. package/dist/{ProductDetails-4E46ZCMQ.js → ProductDetails-ZPRWPSVK.js} +7 -7
  50. package/dist/{ProductDetails-4E46ZCMQ.js.map → ProductDetails-ZPRWPSVK.js.map} +1 -1
  51. package/dist/{ProfilePage-KN7BWYFZ.js → ProfilePage-SKAS6LFQ.js} +25 -25
  52. package/dist/{ProfilePage-KN7BWYFZ.js.map → ProfilePage-SKAS6LFQ.js.map} +1 -1
  53. package/dist/{ReviewsPage-CCTPJN76.js → ReviewsPage-NAZWXVXT.js} +3 -3
  54. package/dist/{ReviewsPage-CCTPJN76.js.map → ReviewsPage-NAZWXVXT.js.map} +1 -1
  55. package/dist/{SeoCartWidget-Q5XK5MEW.js → SeoCartWidget-6NB6LT2Z.js} +25 -25
  56. package/dist/{SeoCartWidget-Q5XK5MEW.js.map → SeoCartWidget-6NB6LT2Z.js.map} +1 -1
  57. package/dist/{SettingsPage-DQAAMJE5.js → SettingsPage-GZ2NJIUR.js} +25 -25
  58. package/dist/{SettingsPage-DQAAMJE5.js.map → SettingsPage-GZ2NJIUR.js.map} +1 -1
  59. package/dist/{StoreClosedNotification-ZSDPBM3L.js → StoreClosedNotification-V72F7HE5.js} +26 -26
  60. package/dist/{StoreClosedNotification-ZSDPBM3L.js.map → StoreClosedNotification-V72F7HE5.js.map} +1 -1
  61. package/dist/{TestimonialsPage-6LGQSJSQ.js → TestimonialsPage-L6VBZFLT.js} +6 -6
  62. package/dist/{TestimonialsPage-6LGQSJSQ.js.map → TestimonialsPage-L6VBZFLT.js.map} +1 -1
  63. package/dist/{ThankYouPage-ZI6NEGN3.js → ThankYouPage-O5U3V6J4.js} +25 -25
  64. package/dist/{ThankYouPage-ZI6NEGN3.js.map → ThankYouPage-O5U3V6J4.js.map} +1 -1
  65. package/dist/{WalletPage-R6G5BQAI.js → WalletPage-NJBBZIMM.js} +26 -26
  66. package/dist/{WalletPage-R6G5BQAI.js.map → WalletPage-NJBBZIMM.js.map} +1 -1
  67. package/dist/{WebMcpTools-2NWIVDL2.js → WebMcpTools-VAZH3S5G.js} +9 -9
  68. package/dist/{WebMcpTools-2NWIVDL2.js.map → WebMcpTools-VAZH3S5G.js.map} +1 -1
  69. package/dist/{WishlistPage-CQ62GPLC.js → WishlistPage-UKOGNFKB.js} +27 -27
  70. package/dist/{WishlistPage-CQ62GPLC.js.map → WishlistPage-UKOGNFKB.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-ELYKF67K.js → chunk-2CILV5ME.js} +5 -5
  92. package/dist/{chunk-ELYKF67K.js.map → chunk-2CILV5ME.js.map} +1 -1
  93. package/dist/{chunk-JZ54GDXO.js → chunk-2HCODIC6.js} +4 -4
  94. package/dist/{chunk-JZ54GDXO.js.map → chunk-2HCODIC6.js.map} +1 -1
  95. package/dist/{chunk-BAJBKIGI.js → chunk-2ZC5YGMI.js} +3 -3
  96. package/dist/{chunk-BAJBKIGI.js.map → chunk-2ZC5YGMI.js.map} +1 -1
  97. package/dist/{chunk-WPRJVK7K.js → chunk-34L65JGK.js} +4 -4
  98. package/dist/{chunk-WPRJVK7K.js.map → chunk-34L65JGK.js.map} +1 -1
  99. package/dist/{chunk-T2752RH7.js → chunk-4E6FD5W7.js} +60 -4
  100. package/dist/chunk-4E6FD5W7.js.map +1 -0
  101. package/dist/{chunk-M5WTY3EH.js → chunk-5EAISVPV.js} +3 -3
  102. package/dist/{chunk-M5WTY3EH.js.map → chunk-5EAISVPV.js.map} +1 -1
  103. package/dist/{chunk-5PMEGLR6.js → chunk-5LI536P6.js} +5 -5
  104. package/dist/{chunk-5PMEGLR6.js.map → chunk-5LI536P6.js.map} +1 -1
  105. package/dist/{chunk-QOC7HUYN.js → chunk-5M2AK5KE.js} +4 -4
  106. package/dist/{chunk-QOC7HUYN.js.map → chunk-5M2AK5KE.js.map} +1 -1
  107. package/dist/{chunk-33327CFA.js → chunk-5NUCGUTE.js} +4 -4
  108. package/dist/{chunk-33327CFA.js.map → chunk-5NUCGUTE.js.map} +1 -1
  109. package/dist/{chunk-3BDSQIYZ.js → chunk-5RBXCPG6.js} +3 -3
  110. package/dist/{chunk-3BDSQIYZ.js.map → chunk-5RBXCPG6.js.map} +1 -1
  111. package/dist/{chunk-6T4HGLQM.js → chunk-5T4MJAUN.js} +3 -3
  112. package/dist/{chunk-6T4HGLQM.js.map → chunk-5T4MJAUN.js.map} +1 -1
  113. package/dist/{chunk-MA3R5QON.js → chunk-6H6BVZBV.js} +3 -3
  114. package/dist/{chunk-MA3R5QON.js.map → chunk-6H6BVZBV.js.map} +1 -1
  115. package/dist/{chunk-4FFABE3P.js → chunk-6QIF6WJH.js} +3 -3
  116. package/dist/{chunk-4FFABE3P.js.map → chunk-6QIF6WJH.js.map} +1 -1
  117. package/dist/{chunk-SLBO4SEE.js → chunk-6YEE3VHL.js} +3 -3
  118. package/dist/{chunk-SLBO4SEE.js.map → chunk-6YEE3VHL.js.map} +1 -1
  119. package/dist/{chunk-XMRNYUQY.js → chunk-7XAGU6CT.js} +3 -3
  120. package/dist/{chunk-XMRNYUQY.js.map → chunk-7XAGU6CT.js.map} +1 -1
  121. package/dist/{chunk-NWQUPGB4.js → chunk-AOQZHLZZ.js} +5 -5
  122. package/dist/{chunk-NWQUPGB4.js.map → chunk-AOQZHLZZ.js.map} +1 -1
  123. package/dist/{chunk-H7LRGY7U.js → chunk-B57KIBQL.js} +3 -3
  124. package/dist/{chunk-H7LRGY7U.js.map → chunk-B57KIBQL.js.map} +1 -1
  125. package/dist/{chunk-CUURFACL.js → chunk-BYGVKW3M.js} +4 -4
  126. package/dist/{chunk-CUURFACL.js.map → chunk-BYGVKW3M.js.map} +1 -1
  127. package/dist/{chunk-T55MRK24.js → chunk-CAULDK3N.js} +6 -6
  128. package/dist/{chunk-T55MRK24.js.map → chunk-CAULDK3N.js.map} +1 -1
  129. package/dist/{chunk-EGI7F57E.js → chunk-DPQIVZ4T.js} +3 -3
  130. package/dist/{chunk-EGI7F57E.js.map → chunk-DPQIVZ4T.js.map} +1 -1
  131. package/dist/{chunk-5ABT7QLS.js → chunk-EMAAVDEK.js} +7 -7
  132. package/dist/{chunk-5ABT7QLS.js.map → chunk-EMAAVDEK.js.map} +1 -1
  133. package/dist/{chunk-DQEJV5SR.js → chunk-FCCGJ4DI.js} +7 -7
  134. package/dist/{chunk-DQEJV5SR.js.map → chunk-FCCGJ4DI.js.map} +1 -1
  135. package/dist/{chunk-ZXEJ46OF.js → chunk-FL3OK7AQ.js} +36 -16
  136. package/dist/chunk-FL3OK7AQ.js.map +1 -0
  137. package/dist/{chunk-NRMAYV4G.js → chunk-GLSRVHYJ.js} +4 -4
  138. package/dist/{chunk-NRMAYV4G.js.map → chunk-GLSRVHYJ.js.map} +1 -1
  139. package/dist/{chunk-X5W7HZNX.js → chunk-I2LK4IC2.js} +4 -4
  140. package/dist/{chunk-X5W7HZNX.js.map → chunk-I2LK4IC2.js.map} +1 -1
  141. package/dist/{chunk-LILNJBFU.js → chunk-IEKP3HYS.js} +4 -4
  142. package/dist/{chunk-LILNJBFU.js.map → chunk-IEKP3HYS.js.map} +1 -1
  143. package/dist/{chunk-IHOUADLX.js → chunk-JK45RUVV.js} +3 -3
  144. package/dist/{chunk-IHOUADLX.js.map → chunk-JK45RUVV.js.map} +1 -1
  145. package/dist/{chunk-CNTXY27A.js → chunk-JSAWLWUN.js} +4 -4
  146. package/dist/{chunk-CNTXY27A.js.map → chunk-JSAWLWUN.js.map} +1 -1
  147. package/dist/{chunk-3WA5RJGC.js → chunk-KJ7NG3ZH.js} +3 -3
  148. package/dist/{chunk-3WA5RJGC.js.map → chunk-KJ7NG3ZH.js.map} +1 -1
  149. package/dist/{chunk-W2A5AWNA.js → chunk-LBZNLTBM.js} +3 -3
  150. package/dist/{chunk-W2A5AWNA.js.map → chunk-LBZNLTBM.js.map} +1 -1
  151. package/dist/{chunk-SCWUJ5PP.js → chunk-LWAJNEIM.js} +4 -4
  152. package/dist/{chunk-SCWUJ5PP.js.map → chunk-LWAJNEIM.js.map} +1 -1
  153. package/dist/{chunk-MJHYLDXL.js → chunk-O3XMYDNC.js} +5 -5
  154. package/dist/{chunk-MJHYLDXL.js.map → chunk-O3XMYDNC.js.map} +1 -1
  155. package/dist/{chunk-HPK6GB7G.js → chunk-O63WBEAC.js} +22 -22
  156. package/dist/{chunk-HPK6GB7G.js.map → chunk-O63WBEAC.js.map} +1 -1
  157. package/dist/{chunk-KUQQJTFA.js → chunk-OOZQVX7C.js} +6 -6
  158. package/dist/{chunk-KUQQJTFA.js.map → chunk-OOZQVX7C.js.map} +1 -1
  159. package/dist/{chunk-MGG4XAJ5.js → chunk-P2PPBXHD.js} +3 -3
  160. package/dist/{chunk-MGG4XAJ5.js.map → chunk-P2PPBXHD.js.map} +1 -1
  161. package/dist/{chunk-IFKCPNDF.js → chunk-PHPOMWQ4.js} +4 -4
  162. package/dist/{chunk-IFKCPNDF.js.map → chunk-PHPOMWQ4.js.map} +1 -1
  163. package/dist/{chunk-3AIK4QGW.js → chunk-PPFD456V.js} +3 -3
  164. package/dist/{chunk-3AIK4QGW.js.map → chunk-PPFD456V.js.map} +1 -1
  165. package/dist/{chunk-CAAIQPEN.js → chunk-PVOJJ2BV.js} +7 -6
  166. package/dist/chunk-PVOJJ2BV.js.map +1 -0
  167. package/dist/{chunk-GBJK6KKM.js → chunk-PYXAPLNB.js} +3 -3
  168. package/dist/{chunk-GBJK6KKM.js.map → chunk-PYXAPLNB.js.map} +1 -1
  169. package/dist/{chunk-7R43CIG7.js → chunk-PZP3372I.js} +4 -4
  170. package/dist/{chunk-7R43CIG7.js.map → chunk-PZP3372I.js.map} +1 -1
  171. package/dist/{chunk-WH73HWTE.js → chunk-Q7Z76F7N.js} +8 -8
  172. package/dist/{chunk-WH73HWTE.js.map → chunk-Q7Z76F7N.js.map} +1 -1
  173. package/dist/{chunk-23OJW6CK.js → chunk-QKKEBQ57.js} +6 -6
  174. package/dist/{chunk-23OJW6CK.js.map → chunk-QKKEBQ57.js.map} +1 -1
  175. package/dist/{chunk-QMWP2ZP6.js → chunk-R7QCNL62.js} +3 -3
  176. package/dist/{chunk-QMWP2ZP6.js.map → chunk-R7QCNL62.js.map} +1 -1
  177. package/dist/{chunk-CXKA35FJ.js → chunk-RB7RHMKJ.js} +5 -5
  178. package/dist/{chunk-CXKA35FJ.js.map → chunk-RB7RHMKJ.js.map} +1 -1
  179. package/dist/{chunk-C7LAIXEO.js → chunk-RY6VPXG6.js} +3 -3
  180. package/dist/{chunk-C7LAIXEO.js.map → chunk-RY6VPXG6.js.map} +1 -1
  181. package/dist/{chunk-R7VWIXFX.js → chunk-TEAYGNHT.js} +3 -3
  182. package/dist/{chunk-R7VWIXFX.js.map → chunk-TEAYGNHT.js.map} +1 -1
  183. package/dist/{chunk-W3QKGF2O.js → chunk-TXYLHBUH.js} +3 -3
  184. package/dist/{chunk-W3QKGF2O.js.map → chunk-TXYLHBUH.js.map} +1 -1
  185. package/dist/{chunk-6TFM3UTF.js → chunk-ULF4LPVA.js} +3 -3
  186. package/dist/{chunk-6TFM3UTF.js.map → chunk-ULF4LPVA.js.map} +1 -1
  187. package/dist/{chunk-V6IKYNU6.js → chunk-UUHLRFXB.js} +9 -9
  188. package/dist/chunk-UUHLRFXB.js.map +1 -0
  189. package/dist/{chunk-F3QHKYS3.js → chunk-VJA4DVVT.js} +4 -4
  190. package/dist/{chunk-F3QHKYS3.js.map → chunk-VJA4DVVT.js.map} +1 -1
  191. package/dist/{chunk-JDCZWE7N.js → chunk-W7CYFPGY.js} +6 -6
  192. package/dist/{chunk-JDCZWE7N.js.map → chunk-W7CYFPGY.js.map} +1 -1
  193. package/dist/{chunk-5V4W3GBI.js → chunk-WAKCWE6P.js} +5 -5
  194. package/dist/{chunk-5V4W3GBI.js.map → chunk-WAKCWE6P.js.map} +1 -1
  195. package/dist/{chunk-R72B5P4R.js → chunk-ZUVBDALM.js} +4 -4
  196. package/dist/{chunk-R72B5P4R.js.map → chunk-ZUVBDALM.js.map} +1 -1
  197. package/dist/components/cart/index.js +1 -1
  198. package/dist/components/common/index.js +1 -1
  199. package/dist/components/drawer/index.js +23 -23
  200. package/dist/components/home/index.js +28 -28
  201. package/dist/components/layout/index.js +6 -6
  202. package/dist/components/product/ProductCard.d.ts.map +1 -1
  203. package/dist/components/product/index.js +25 -25
  204. package/dist/components/store/index.js +24 -24
  205. package/dist/components/toast/index.js +4 -4
  206. package/dist/dev/editor/index.js +2 -2
  207. package/dist/dev/index.js +2 -2
  208. package/dist/document-class-N7WF3WXG.js +33 -0
  209. package/dist/{document-class-B57F7JZW.js.map → document-class-N7WF3WXG.js.map} +1 -1
  210. package/dist/hooks/index.js +23 -23
  211. package/dist/hooks/useComments.js +3 -3
  212. package/dist/hooks/useGtm.js +23 -23
  213. package/dist/hooks/useMoney.js +23 -23
  214. package/dist/hooks/useProduct.js +3 -3
  215. package/dist/hooks/useStore.js +23 -23
  216. package/dist/hooks/useUser.js +5 -5
  217. package/dist/hooks/useWishlist.js +3 -3
  218. package/dist/index.js +23 -23
  219. package/dist/native-app/index.js +3 -3
  220. package/dist/{navigation-N3WBAE74.js → navigation-5DPDZQUU.js} +8 -8
  221. package/dist/{navigation-N3WBAE74.js.map → navigation-5DPDZQUU.js.map} +1 -1
  222. package/dist/{navigation-VJBIYPFD.js → navigation-FRKMKNLK.js} +7 -7
  223. package/dist/{navigation-VJBIYPFD.js.map → navigation-FRKMKNLK.js.map} +1 -1
  224. package/dist/{not-found-KDDMHTAU.js → not-found-4U2TRCLF.js} +26 -26
  225. package/dist/{not-found-KDDMHTAU.js.map → not-found-4U2TRCLF.js.map} +1 -1
  226. package/dist/providers/index.js +23 -23
  227. package/dist/routes/account/orders.js +8 -8
  228. package/dist/routes/account.js +17 -17
  229. package/dist/routes/blog.js +12 -12
  230. package/dist/routes/brands.js +8 -8
  231. package/dist/routes/cart.js +32 -32
  232. package/dist/routes/home.js +29 -29
  233. package/dist/routes/index.js +6 -6
  234. package/dist/routes/loyalty.js +9 -9
  235. package/dist/routes/page.js +8 -8
  236. package/dist/routes/product-listing.js +33 -33
  237. package/dist/routes/product.js +28 -28
  238. package/dist/routes/root/beforeLoad.d.ts.map +1 -1
  239. package/dist/routes/seo-redirects.js +6 -6
  240. package/dist/routes/testimonials.js +4 -4
  241. package/dist/routes/thank-you.js +8 -8
  242. package/dist/skeleton.js +29 -29
  243. package/dist/{store-lookup-WBKOYMDU.js → store-lookup-S6JUSKNH.js} +11 -11
  244. package/dist/{store-lookup-WBKOYMDU.js.map → store-lookup-S6JUSKNH.js.map} +1 -1
  245. package/dist/tanstack.js +20 -20
  246. package/dist/utils/baseHead.js +2 -2
  247. package/dist/utils/index.js +6 -6
  248. package/dist/utils/shared-host-language.d.ts +5 -0
  249. package/dist/utils/shared-host-language.d.ts.map +1 -1
  250. package/dist/utils/store-base.d.ts +60 -0
  251. package/dist/utils/store-base.d.ts.map +1 -1
  252. package/dist/utils/store-identity.d.ts +14 -0
  253. package/dist/utils/store-identity.d.ts.map +1 -1
  254. package/dist/vite/index.js +3 -3
  255. package/package.json +1 -1
  256. package/tailwind/components/home/FixedProducts.tsx.txt +2 -2
  257. package/tailwind/components/product/ProductCard.tsx.txt +2 -1
  258. package/tailwind/routes/root/beforeLoad.ts.txt +37 -3
  259. package/dist/chunk-CAAIQPEN.js.map +0 -1
  260. package/dist/chunk-T2752RH7.js.map +0 -1
  261. package/dist/chunk-V6IKYNU6.js.map +0 -1
  262. package/dist/chunk-ZXEJ46OF.js.map +0 -1
  263. package/dist/document-class-B57F7JZW.js +0 -33
package/dist/api/menu.js CHANGED
@@ -1,8 +1,8 @@
1
- export { menu } from '../chunk-C7LAIXEO.js';
2
- import '../chunk-CXKA35FJ.js';
1
+ export { menu } from '../chunk-RY6VPXG6.js';
2
+ import '../chunk-RB7RHMKJ.js';
3
3
  import '../chunk-Z5M4YYWT.js';
4
- import '../chunk-XMRNYUQY.js';
5
- import '../chunk-T2752RH7.js';
4
+ import '../chunk-7XAGU6CT.js';
5
+ import '../chunk-4E6FD5W7.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-MA3R5QON.js';
2
- import '../chunk-CXKA35FJ.js';
1
+ export { notification } from '../chunk-6H6BVZBV.js';
2
+ import '../chunk-RB7RHMKJ.js';
3
3
  import '../chunk-Z5M4YYWT.js';
4
- import '../chunk-XMRNYUQY.js';
5
- import '../chunk-T2752RH7.js';
4
+ import '../chunk-7XAGU6CT.js';
5
+ import '../chunk-4E6FD5W7.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-F3QHKYS3.js';
2
- import '../chunk-MJHYLDXL.js';
1
+ export { order } from '../chunk-VJA4DVVT.js';
2
+ import '../chunk-O3XMYDNC.js';
3
3
  import '../chunk-OUW6WESU.js';
4
- import '../chunk-CXKA35FJ.js';
4
+ import '../chunk-RB7RHMKJ.js';
5
5
  import '../chunk-Z5M4YYWT.js';
6
- import '../chunk-6TFM3UTF.js';
7
- import '../chunk-XMRNYUQY.js';
8
- import '../chunk-T2752RH7.js';
6
+ import '../chunk-ULF4LPVA.js';
7
+ import '../chunk-7XAGU6CT.js';
8
+ import '../chunk-4E6FD5W7.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-NRMAYV4G.js';
2
- import '../chunk-MJHYLDXL.js';
1
+ export { page } from '../chunk-GLSRVHYJ.js';
2
+ import '../chunk-O3XMYDNC.js';
3
3
  import '../chunk-OUW6WESU.js';
4
- import '../chunk-CXKA35FJ.js';
4
+ import '../chunk-RB7RHMKJ.js';
5
5
  import '../chunk-Z5M4YYWT.js';
6
- import '../chunk-6TFM3UTF.js';
7
- import '../chunk-XMRNYUQY.js';
8
- import '../chunk-T2752RH7.js';
6
+ import '../chunk-ULF4LPVA.js';
7
+ import '../chunk-7XAGU6CT.js';
8
+ import '../chunk-4E6FD5W7.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-R72B5P4R.js';
2
- import '../chunk-MJHYLDXL.js';
1
+ export { getProductPreview, isProductPreviewQuery, parseNextPageToken, product, productDetailQueryKey, productPreviewQueryKey, rememberProductPreview, shouldDehydrateQuery } from '../chunk-ZUVBDALM.js';
2
+ import '../chunk-O3XMYDNC.js';
3
3
  import '../chunk-OUW6WESU.js';
4
- import '../chunk-CXKA35FJ.js';
4
+ import '../chunk-RB7RHMKJ.js';
5
5
  import '../chunk-Z5M4YYWT.js';
6
- import '../chunk-6TFM3UTF.js';
7
- import '../chunk-XMRNYUQY.js';
8
- import '../chunk-T2752RH7.js';
6
+ import '../chunk-ULF4LPVA.js';
7
+ import '../chunk-7XAGU6CT.js';
8
+ import '../chunk-4E6FD5W7.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-CXKA35FJ.js';
1
+ import { api } from '../chunk-RB7RHMKJ.js';
2
2
  import '../chunk-Z5M4YYWT.js';
3
- import '../chunk-XMRNYUQY.js';
4
- import '../chunk-T2752RH7.js';
3
+ import '../chunk-7XAGU6CT.js';
4
+ import '../chunk-4E6FD5W7.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-KUQQJTFA.js';
2
- import '../chunk-SLBO4SEE.js';
3
- import '../chunk-CXKA35FJ.js';
1
+ export { store } from '../chunk-OOZQVX7C.js';
2
+ import '../chunk-6YEE3VHL.js';
3
+ import '../chunk-RB7RHMKJ.js';
4
4
  import '../chunk-Z5M4YYWT.js';
5
- import '../chunk-XMRNYUQY.js';
6
- export { resolveStoreIdentifier } from '../chunk-T2752RH7.js';
5
+ import '../chunk-7XAGU6CT.js';
6
+ export { resolveStoreIdentifier } from '../chunk-4E6FD5W7.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-3WA5RJGC.js';
2
- import '../chunk-CXKA35FJ.js';
1
+ export { commonTranslationsPath, storeTranslationsPath, translations } from '../chunk-KJ7NG3ZH.js';
2
+ import '../chunk-RB7RHMKJ.js';
3
3
  import '../chunk-Z5M4YYWT.js';
4
- import '../chunk-XMRNYUQY.js';
5
- import '../chunk-T2752RH7.js';
4
+ import '../chunk-7XAGU6CT.js';
5
+ import '../chunk-4E6FD5W7.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-GBJK6KKM.js';
2
- import '../chunk-CXKA35FJ.js';
1
+ export { user } from '../chunk-PYXAPLNB.js';
2
+ import '../chunk-RB7RHMKJ.js';
3
3
  import '../chunk-Z5M4YYWT.js';
4
- import '../chunk-XMRNYUQY.js';
5
- import '../chunk-T2752RH7.js';
4
+ import '../chunk-7XAGU6CT.js';
5
+ import '../chunk-4E6FD5W7.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-4FFABE3P.js';
2
- import '../chunk-CXKA35FJ.js';
1
+ export { wallet } from '../chunk-6QIF6WJH.js';
2
+ import '../chunk-RB7RHMKJ.js';
3
3
  import '../chunk-Z5M4YYWT.js';
4
- import '../chunk-XMRNYUQY.js';
5
- import '../chunk-T2752RH7.js';
4
+ import '../chunk-7XAGU6CT.js';
5
+ import '../chunk-4E6FD5W7.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-QOC7HUYN.js';
2
- import '../chunk-R72B5P4R.js';
3
- import '../chunk-MJHYLDXL.js';
1
+ export { wishlist } from '../chunk-5M2AK5KE.js';
2
+ import '../chunk-ZUVBDALM.js';
3
+ import '../chunk-O3XMYDNC.js';
4
4
  import '../chunk-OUW6WESU.js';
5
- import '../chunk-CXKA35FJ.js';
5
+ import '../chunk-RB7RHMKJ.js';
6
6
  import '../chunk-Z5M4YYWT.js';
7
- import '../chunk-6TFM3UTF.js';
8
- import '../chunk-XMRNYUQY.js';
9
- import '../chunk-T2752RH7.js';
7
+ import '../chunk-ULF4LPVA.js';
8
+ import '../chunk-7XAGU6CT.js';
9
+ import '../chunk-4E6FD5W7.js';
10
10
  import '../chunk-6K34BCUP.js';
11
11
  import '../chunk-T72DAX7R.js';
12
12
  import '../chunk-DF6FBKDN.js';
@@ -2,15 +2,15 @@ import { lazyComponent } from './chunk-VYGA5AT5.js';
2
2
 
3
3
  // src/components/cart/lazy.ts
4
4
  var LazyCartItem = lazyComponent(
5
- () => import('./CartItem-NBM3KRUH.js').then((m) => ({ default: m.CartItem }))
5
+ () => import('./CartItem-RMCXCGHT.js').then((m) => ({ default: m.CartItem }))
6
6
  );
7
7
  var LazyCartSummary = lazyComponent(
8
- () => import('./CartSummary-OD2IJTTA.js').then((m) => ({ default: m.CartSummary }))
8
+ () => import('./CartSummary-NLEAHKWF.js').then((m) => ({ default: m.CartSummary }))
9
9
  );
10
10
  var LazySeoCartWidget = lazyComponent(
11
- () => import('./SeoCartWidget-Q5XK5MEW.js').then((m) => ({ default: m.SeoCartWidget }))
11
+ () => import('./SeoCartWidget-6NB6LT2Z.js').then((m) => ({ default: m.SeoCartWidget }))
12
12
  );
13
13
 
14
14
  export { LazyCartItem, LazyCartSummary, LazySeoCartWidget };
15
- //# sourceMappingURL=chunk-ELYKF67K.js.map
16
- //# sourceMappingURL=chunk-ELYKF67K.js.map
15
+ //# sourceMappingURL=chunk-2CILV5ME.js.map
16
+ //# sourceMappingURL=chunk-2CILV5ME.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/cart/lazy.ts"],"names":[],"mappings":";;;AAMO,IAAM,YAAA,GAAe,aAAA;AAAA,EAAc,MACxC,OAAO,wBAAY,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE;AAC5D;AAEO,IAAM,eAAA,GAAkB,aAAA;AAAA,EAAc,MAC3C,OAAO,2BAAe,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,WAAA,EAAY,CAAE;AAClE;AAEO,IAAM,iBAAA,GAAoB,aAAA;AAAA,EAAc,MAC7C,OAAO,6BAAiB,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,aAAA,EAAc,CAAE;AACtE","file":"chunk-ELYKF67K.js","sourcesContent":["import { lazyComponent } from '../../utils/lazy-component';\n\n/**\n * Lazy-loaded cart components\n * Use these for code-splitting cart sections\n */\nexport const LazyCartItem = lazyComponent(() =>\n import('./CartItem').then((m) => ({ default: m.CartItem }))\n);\n\nexport const LazyCartSummary = lazyComponent(() =>\n import('./CartSummary').then((m) => ({ default: m.CartSummary }))\n);\n\nexport const LazySeoCartWidget = lazyComponent(() =>\n import('./SeoCartWidget').then((m) => ({ default: m.SeoCartWidget }))\n);\n"]}
1
+ {"version":3,"sources":["../src/components/cart/lazy.ts"],"names":[],"mappings":";;;AAMO,IAAM,YAAA,GAAe,aAAA;AAAA,EAAc,MACxC,OAAO,wBAAY,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE;AAC5D;AAEO,IAAM,eAAA,GAAkB,aAAA;AAAA,EAAc,MAC3C,OAAO,2BAAe,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,WAAA,EAAY,CAAE;AAClE;AAEO,IAAM,iBAAA,GAAoB,aAAA;AAAA,EAAc,MAC7C,OAAO,6BAAiB,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,aAAA,EAAc,CAAE;AACtE","file":"chunk-2CILV5ME.js","sourcesContent":["import { lazyComponent } from '../../utils/lazy-component';\n\n/**\n * Lazy-loaded cart components\n * Use these for code-splitting cart sections\n */\nexport const LazyCartItem = lazyComponent(() =>\n import('./CartItem').then((m) => ({ default: m.CartItem }))\n);\n\nexport const LazyCartSummary = lazyComponent(() =>\n import('./CartSummary').then((m) => ({ default: m.CartSummary }))\n);\n\nexport const LazySeoCartWidget = lazyComponent(() =>\n import('./SeoCartWidget').then((m) => ({ default: m.SeoCartWidget }))\n);\n"]}
@@ -1,6 +1,6 @@
1
- import { useDate } from './chunk-HPK6GB7G.js';
1
+ import { useDate } from './chunk-O63WBEAC.js';
2
2
  import { useTranslation } from './chunk-TYNZ5B2B.js';
3
- import { Image } from './chunk-W2A5AWNA.js';
3
+ import { Image } from './chunk-LBZNLTBM.js';
4
4
  import { Link } from './chunk-AXW67SY7.js';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
@@ -61,5 +61,5 @@ function BlogListLayout({
61
61
  }
62
62
 
63
63
  export { BlogArticleCard, BlogListLayout };
64
- //# sourceMappingURL=chunk-JZ54GDXO.js.map
65
- //# sourceMappingURL=chunk-JZ54GDXO.js.map
64
+ //# sourceMappingURL=chunk-2HCODIC6.js.map
65
+ //# sourceMappingURL=chunk-2HCODIC6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/blog/components.tsx"],"names":[],"mappings":"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","file":"chunk-JZ54GDXO.js","sourcesContent":["import type { ReactNode } from 'react';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useDate } from '../../hooks';\nimport { Image, Link } from '../../components/common';\nimport type { BlogCategory, ArticleSummary } from './types';\n\nexport function BlogCategoriesSidebar({ categories }: { categories: BlogCategory[] }) {\n const { t } = useTranslation();\n\n if (!categories.length) return null;\n\n return (\n <nav aria-label=\"Sidebar\" className=\"hidden lg:block lg:sticky shrink-0 top-24 col-span-2\">\n <h2 className=\"font-bold mb-3\">{t('pages.blog_categories.categories')}</h2>\n <ul>\n {categories.map((category) => (\n <li key={category.id} className={category.is_current ? 'text-primary' : ''}>\n <Link className=\"py-3 block text-sm hover:text-primary\" to={category.url}>\n {category.name}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n\nexport function BlogArticleCard({\n article,\n showAuthor = false,\n}: {\n article: ArticleSummary;\n showAuthor?: boolean;\n}) {\n const { format: formatDate } = useDate();\n\n return (\n <div className=\"list-block post-entry relative h-full transition-shadow duration-500 bg-white hover:shadow-default rounded-lg justify-around overflow-hidden flex flex-col\">\n <Link\n to={article.url}\n className=\"post-entry__image relative overflow-hidden hover:opacity-90 w-full h-56 bg-border-color flex items-center justify-center\"\n >\n {article.image && (\n <Image\n className=\"h-full w-full object-cover\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"16/9\"\n />\n )}\n </Link>\n <div className=\"flex-1 px-5 pt-5 pb-7\">\n <div className=\"mb-2.5 text-gray-500 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span>{formatDate(article.created_at)}</span>\n </div>\n {showAuthor && article.author && (\n <Link to={article.author.url} className=\"flex items-center hover:text-dark\">\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author.name}</span>\n </Link>\n )}\n </div>\n <h3 className=\"post-entry__title text-sm font-bold text-gray-800 leading-6 mb-2.5\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n <p className=\"text-sm text-gray-500 leading-6 mb-2.5\">{article.description}</p>\n </div>\n </div>\n );\n}\n\nexport function BlogListLayout({\n categories,\n children,\n}: {\n categories: BlogCategory[];\n children: ReactNode;\n}) {\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-8 gap-8\">\n <BlogCategoriesSidebar categories={categories} />\n <div className=\"main-content lg:col-span-6\">{children}</div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/blog/components.tsx"],"names":[],"mappings":"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","file":"chunk-2HCODIC6.js","sourcesContent":["import type { ReactNode } from 'react';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useDate } from '../../hooks';\nimport { Image, Link } from '../../components/common';\nimport type { BlogCategory, ArticleSummary } from './types';\n\nexport function BlogCategoriesSidebar({ categories }: { categories: BlogCategory[] }) {\n const { t } = useTranslation();\n\n if (!categories.length) return null;\n\n return (\n <nav aria-label=\"Sidebar\" className=\"hidden lg:block lg:sticky shrink-0 top-24 col-span-2\">\n <h2 className=\"font-bold mb-3\">{t('pages.blog_categories.categories')}</h2>\n <ul>\n {categories.map((category) => (\n <li key={category.id} className={category.is_current ? 'text-primary' : ''}>\n <Link className=\"py-3 block text-sm hover:text-primary\" to={category.url}>\n {category.name}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n\nexport function BlogArticleCard({\n article,\n showAuthor = false,\n}: {\n article: ArticleSummary;\n showAuthor?: boolean;\n}) {\n const { format: formatDate } = useDate();\n\n return (\n <div className=\"list-block post-entry relative h-full transition-shadow duration-500 bg-white hover:shadow-default rounded-lg justify-around overflow-hidden flex flex-col\">\n <Link\n to={article.url}\n className=\"post-entry__image relative overflow-hidden hover:opacity-90 w-full h-56 bg-border-color flex items-center justify-center\"\n >\n {article.image && (\n <Image\n className=\"h-full w-full object-cover\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"16/9\"\n />\n )}\n </Link>\n <div className=\"flex-1 px-5 pt-5 pb-7\">\n <div className=\"mb-2.5 text-gray-500 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span>{formatDate(article.created_at)}</span>\n </div>\n {showAuthor && article.author && (\n <Link to={article.author.url} className=\"flex items-center hover:text-dark\">\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author.name}</span>\n </Link>\n )}\n </div>\n <h3 className=\"post-entry__title text-sm font-bold text-gray-800 leading-6 mb-2.5\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n <p className=\"text-sm text-gray-500 leading-6 mb-2.5\">{article.description}</p>\n </div>\n </div>\n );\n}\n\nexport function BlogListLayout({\n categories,\n children,\n}: {\n categories: BlogCategory[];\n children: ReactNode;\n}) {\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-8 gap-8\">\n <BlogCategoriesSidebar categories={categories} />\n <div className=\"main-content lg:col-span-6\">{children}</div>\n </div>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { user } from './chunk-GBJK6KKM.js';
1
+ import { user } from './chunk-PYXAPLNB.js';
2
2
  import { getTwilightContext } from './chunk-6K34BCUP.js';
3
3
  import { useQuery } from '@tanstack/react-query';
4
4
 
@@ -13,5 +13,5 @@ function useUser() {
13
13
  }
14
14
 
15
15
  export { useUser };
16
- //# sourceMappingURL=chunk-BAJBKIGI.js.map
17
- //# sourceMappingURL=chunk-BAJBKIGI.js.map
16
+ //# sourceMappingURL=chunk-2ZC5YGMI.js.map
17
+ //# sourceMappingURL=chunk-2ZC5YGMI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useUser.ts"],"names":[],"mappings":";;;;AAUO,SAAS,OAAA,GAAyB;AACvC,EAAA,MAAM,KAAA,GAAQ,oBAAmB,CAAE,SAAA;AAEnC,EAAA,MAAM,QAAQ,QAAA,CAAS;AAAA,IACrB,GAAG,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAQ;AAAA,IACxB,OAAA,EAAS,CAAC,CAAC,KAAA;AAAA,IACX,eAAA,EAAiB;AAAA,GAClB,CAAA;AAED,EAAA,OAAO,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,CAAC,CAAC,KAAA,EAAM;AACzC","file":"chunk-BAJBKIGI.js","sourcesContent":["import { useQuery, type UseQueryResult } from '@tanstack/react-query';\nimport { getTwilightContext } from '../twilight/context';\nimport { user } from '../api/user';\nimport type { User } from '../types';\n\nexport type UseUserReturn = UseQueryResult<User | null> & {\n /** True when an auth token exists (regardless of query state). */\n isLoggedIn: boolean;\n};\n\nexport function useUser(): UseUserReturn {\n const token = getTwilightContext().authToken;\n\n const query = useQuery({\n ...user.queries.current(),\n enabled: !!token,\n placeholderData: null,\n });\n\n return { ...query, isLoggedIn: !!token };\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/useUser.ts"],"names":[],"mappings":";;;;AAUO,SAAS,OAAA,GAAyB;AACvC,EAAA,MAAM,KAAA,GAAQ,oBAAmB,CAAE,SAAA;AAEnC,EAAA,MAAM,QAAQ,QAAA,CAAS;AAAA,IACrB,GAAG,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAQ;AAAA,IACxB,OAAA,EAAS,CAAC,CAAC,KAAA;AAAA,IACX,eAAA,EAAiB;AAAA,GAClB,CAAA;AAED,EAAA,OAAO,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,CAAC,CAAC,KAAA,EAAM;AACzC","file":"chunk-2ZC5YGMI.js","sourcesContent":["import { useQuery, type UseQueryResult } from '@tanstack/react-query';\nimport { getTwilightContext } from '../twilight/context';\nimport { user } from '../api/user';\nimport type { User } from '../types';\n\nexport type UseUserReturn = UseQueryResult<User | null> & {\n /** True when an auth token exists (regardless of query state). */\n isLoggedIn: boolean;\n};\n\nexport function useUser(): UseUserReturn {\n const token = getTwilightContext().authToken;\n\n const query = useQuery({\n ...user.queries.current(),\n enabled: !!token,\n placeholderData: null,\n });\n\n return { ...query, isLoggedIn: !!token };\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { orThrow } from './chunk-MJHYLDXL.js';
2
- import { api } from './chunk-CXKA35FJ.js';
1
+ import { orThrow } from './chunk-O3XMYDNC.js';
2
+ import { api } from './chunk-RB7RHMKJ.js';
3
3
  import { queryOptions } from '@tanstack/react-query';
4
4
 
5
5
  var blog = {
@@ -63,5 +63,5 @@ var blog = {
63
63
  };
64
64
 
65
65
  export { blog };
66
- //# sourceMappingURL=chunk-WPRJVK7K.js.map
67
- //# sourceMappingURL=chunk-WPRJVK7K.js.map
66
+ //# sourceMappingURL=chunk-34L65JGK.js.map
67
+ //# sourceMappingURL=chunk-34L65JGK.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/blog.ts"],"names":[],"mappings":"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","file":"chunk-WPRJVK7K.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport type { Options as KyOptions } from 'ky';\nimport { api } from './client';\nimport type { Pagination } from './types';\nimport type {\n ArticleSummary,\n ArticleDetail,\n BlogAuthor,\n BlogCategory,\n BlogTag,\n BlogOverview,\n} from '../routes/blog/types';\nimport { orThrow } from '../providers/NavigationProvider';\n\nexport interface BlogArticlesListParams {\n category?: string;\n author?: string;\n tag?: string;\n page?: number;\n cursor?: string | null;\n signal?: AbortSignal;\n}\n\nexport interface BlogArticlesListResponse {\n data: ArticleSummary[];\n categories?: BlogCategory[];\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n}\n\nexport interface BlogGetResponse {\n data: {\n categories: BlogCategory[] | null;\n slides: ArticleSummary[] | null;\n articles: ArticleSummary[] | null;\n popular: ArticleSummary[] | null;\n };\n}\n\nexport const blog = {\n get: async (signal?: AbortSignal): Promise<BlogOverview> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api.get('blog', options as KyOptions).json<BlogGetResponse>();\n\n return {\n categories: response.data.categories ?? [],\n slides: response.data.slides ?? [],\n articles: response.data.articles ?? [],\n popular: response.data.popular ?? [],\n };\n },\n\n articles: {\n list: async (params?: BlogArticlesListParams): Promise<BlogArticlesListResponse> => {\n const { category, author, tag, page, cursor, signal } = params ?? {};\n\n const searchParams = new URLSearchParams();\n if (page !== undefined) searchParams.set('page', String(page));\n if (cursor) searchParams.set('cursor', cursor);\n if (category) searchParams.set('category', category);\n if (author) searchParams.set('author', author);\n if (tag) searchParams.set('tag', tag);\n\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles?${searchParams.toString()}`, options as KyOptions)\n .json<{\n data: ArticleSummary[] | null;\n categories?: BlogCategory[] | null;\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n }>();\n\n return {\n data: response.data ?? [],\n categories: response.categories ?? undefined,\n category: response.category,\n author: response.author,\n tag: response.tag,\n cursor: response.cursor,\n };\n },\n\n find: async (id: string, signal?: AbortSignal): Promise<ArticleDetail> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles/${id}`, options as KyOptions)\n .json<{ data: ArticleDetail | null }>();\n\n if (!response.data) {\n throw new Error(`Article ${id} not found`);\n }\n\n return response.data;\n },\n\n findOrThrow: (id: string, signal?: AbortSignal): Promise<ArticleDetail> =>\n orThrow(blog.articles.find(id, signal)),\n },\n\n queries: {\n overview: () =>\n queryOptions({\n queryKey: ['blog', 'overview'],\n queryFn: ({ signal }) => blog.get(signal),\n }),\n articles: (params?: Omit<BlogArticlesListParams, 'signal'>) =>\n queryOptions({\n queryKey: ['blog', 'articles', params],\n queryFn: ({ signal }) => blog.articles.list({ ...params, signal }),\n }),\n article: (id: string) =>\n queryOptions({\n queryKey: ['blog', 'article', id],\n queryFn: ({ signal }) => blog.articles.find(id, signal),\n }),\n },\n};\n"]}
1
+ {"version":3,"sources":["../src/api/blog.ts"],"names":[],"mappings":"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","file":"chunk-34L65JGK.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport type { Options as KyOptions } from 'ky';\nimport { api } from './client';\nimport type { Pagination } from './types';\nimport type {\n ArticleSummary,\n ArticleDetail,\n BlogAuthor,\n BlogCategory,\n BlogTag,\n BlogOverview,\n} from '../routes/blog/types';\nimport { orThrow } from '../providers/NavigationProvider';\n\nexport interface BlogArticlesListParams {\n category?: string;\n author?: string;\n tag?: string;\n page?: number;\n cursor?: string | null;\n signal?: AbortSignal;\n}\n\nexport interface BlogArticlesListResponse {\n data: ArticleSummary[];\n categories?: BlogCategory[];\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n}\n\nexport interface BlogGetResponse {\n data: {\n categories: BlogCategory[] | null;\n slides: ArticleSummary[] | null;\n articles: ArticleSummary[] | null;\n popular: ArticleSummary[] | null;\n };\n}\n\nexport const blog = {\n get: async (signal?: AbortSignal): Promise<BlogOverview> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api.get('blog', options as KyOptions).json<BlogGetResponse>();\n\n return {\n categories: response.data.categories ?? [],\n slides: response.data.slides ?? [],\n articles: response.data.articles ?? [],\n popular: response.data.popular ?? [],\n };\n },\n\n articles: {\n list: async (params?: BlogArticlesListParams): Promise<BlogArticlesListResponse> => {\n const { category, author, tag, page, cursor, signal } = params ?? {};\n\n const searchParams = new URLSearchParams();\n if (page !== undefined) searchParams.set('page', String(page));\n if (cursor) searchParams.set('cursor', cursor);\n if (category) searchParams.set('category', category);\n if (author) searchParams.set('author', author);\n if (tag) searchParams.set('tag', tag);\n\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles?${searchParams.toString()}`, options as KyOptions)\n .json<{\n data: ArticleSummary[] | null;\n categories?: BlogCategory[] | null;\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n }>();\n\n return {\n data: response.data ?? [],\n categories: response.categories ?? undefined,\n category: response.category,\n author: response.author,\n tag: response.tag,\n cursor: response.cursor,\n };\n },\n\n find: async (id: string, signal?: AbortSignal): Promise<ArticleDetail> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles/${id}`, options as KyOptions)\n .json<{ data: ArticleDetail | null }>();\n\n if (!response.data) {\n throw new Error(`Article ${id} not found`);\n }\n\n return response.data;\n },\n\n findOrThrow: (id: string, signal?: AbortSignal): Promise<ArticleDetail> =>\n orThrow(blog.articles.find(id, signal)),\n },\n\n queries: {\n overview: () =>\n queryOptions({\n queryKey: ['blog', 'overview'],\n queryFn: ({ signal }) => blog.get(signal),\n }),\n articles: (params?: Omit<BlogArticlesListParams, 'signal'>) =>\n queryOptions({\n queryKey: ['blog', 'articles', params],\n queryFn: ({ signal }) => blog.articles.list({ ...params, signal }),\n }),\n article: (id: string) =>\n queryOptions({\n queryKey: ['blog', 'article', id],\n queryFn: ({ signal }) => blog.articles.find(id, signal),\n }),\n },\n};\n"]}
@@ -270,8 +270,11 @@ function hasLanguageParam(search) {
270
270
  function languageFromCookies(cookieHeader) {
271
271
  return knownLocale(extractTokenFromCookies(cookieHeader, LANGUAGE_COOKIE_NAME));
272
272
  }
273
+ function chosenLocale(search, cookieHeader) {
274
+ return knownLocale(langParam(search)) ?? languageFromCookies(cookieHeader);
275
+ }
273
276
  function virtualLocale(search, cookieHeader) {
274
- return knownLocale(langParam(search)) ?? languageFromCookies(cookieHeader) ?? FALLBACK_LOCALE;
277
+ return chosenLocale(search, cookieHeader) ?? FALLBACK_LOCALE;
275
278
  }
276
279
  function listedLocales(settings) {
277
280
  const codes = (settings.languages ?? []).map((language) => (language.iso_code ?? language.code)?.toLowerCase()).filter((code) => Boolean(code));
@@ -416,6 +419,46 @@ function stoppedDomainRedirectHref(args) {
416
419
  if (!first || first.toLowerCase() !== encodeURIComponent(username).toLowerCase()) return null;
417
420
  return `${address.origin}/${first}/redirect`;
418
421
  }
422
+ var TWIG_PREVIEW_HOSTS = ["salla.design", "devstore.salla.design"];
423
+ var HUMAN_BOT_SCORE = 11;
424
+ function bareHostname(host) {
425
+ return host.trim().toLowerCase().replace(/:\d+$/, "").replace(/^www\./, "");
426
+ }
427
+ function ownDomainRedirect(args) {
428
+ const { host, sharedHostBase, storeUrl } = args;
429
+ if (!sharedHostBase || !host || allowsRequestStoreId(host)) return null;
430
+ if (TWIG_PREVIEW_HOSTS.includes(bareHostname(host))) return null;
431
+ const origin = ownDomainOrigin(storeUrl, host);
432
+ if (!origin) return null;
433
+ const page = new URL(args.href, "http://own-domain.invalid");
434
+ const { first, rest } = splitLeadingSegment(page.pathname);
435
+ const path = isLocale(first) ? rest || "/" : page.pathname;
436
+ const human = (args.botScore ?? 0) >= HUMAN_BOT_SCORE;
437
+ return {
438
+ href: `${origin}${withChosenLocale(path, args)}${withLanguageParam(page.search)}${page.hash}`,
439
+ statusCode: human && path === "/" ? 307 : 301
440
+ };
441
+ }
442
+ function ownDomainOrigin(storeUrl, host) {
443
+ let address;
444
+ try {
445
+ address = new URL(storeUrl ?? "");
446
+ } catch {
447
+ return null;
448
+ }
449
+ if (address.protocol !== "https:" && address.protocol !== "http:") return null;
450
+ if (allowsRequestStoreId(address.host) || bareHostname(address.host) === bareHostname(host)) {
451
+ return null;
452
+ }
453
+ const named = address.pathname.split("/").filter(Boolean);
454
+ const onlyLanguage = named.length === 0 || named.length === 1 && isLocale(named[0].toLowerCase());
455
+ return onlyLanguage ? address.origin : null;
456
+ }
457
+ function withChosenLocale(path, languages) {
458
+ const { locale, offeredLocales, defaultLocale } = languages;
459
+ if (!locale || locale === defaultLocale || !offeredLocales?.includes(locale)) return path;
460
+ return `/${locale}${path === "/" ? "" : path}`;
461
+ }
419
462
  function loginRedirectHref(args) {
420
463
  const { pathname, searchStr, origin, base, baseFollowsLocale = false } = args;
421
464
  const first = pathname.split("/")[1];
@@ -476,7 +519,20 @@ function resolveStoppedDomainRedirect(store) {
476
519
  username: store?.username
477
520
  });
478
521
  }
522
+ function resolveOwnDomainRedirect(settings, href, request) {
523
+ const { search } = new URL(href, "http://own-domain.invalid");
524
+ return ownDomainRedirect({
525
+ host: currentHost(),
526
+ sharedHostBase: resolveStoreBaseFollowsLocale() ? resolveStoreBase() : null,
527
+ storeUrl: settings.store?.url,
528
+ href,
529
+ locale: chosenLocale(search, request.cookieHeader),
530
+ offeredLocales: offeredLanguages(settings),
531
+ defaultLocale: defaultLanguage(settings),
532
+ botScore: request.botScore
533
+ });
534
+ }
479
535
 
480
- export { AUTH_TOKEN_COOKIE_NAME, CURRENCY_COOKIE_NAME, LANGUAGE_COOKIE_MAX_AGE, LANGUAGE_COOKIE_NAME, SCOPE_COOKIE_MAX_AGE, SCOPE_COOKIE_NAME, STORE_BASE_HEADER, clearAuthTokenCookie, currentHost, decideSharedHostLanguage, escapeForInlineScript, extractCurrencyFromCookies, extractScopeFromCookies, extractScopeFromUrl, extractTokenFromCookies, getInjectedRuntimeEnv, hasLanguageParam, hasStoreUrlBase, isLoopback, isPreviewHost, legacyLocaleRedirectHref, loginRedirectHref, parseStoreId, prefixStoreBase, readEnv, readSdkScope, rememberDevStoreId, renderRuntimeEnvScript, resolveAddressedStore, resolveRequestScope, resolveRequestVersionId, resolveStoppedDomainRedirect, resolveStoreBase, resolveStoreBaseFollowsLocale, resolveStoreBaseRedirect, resolveStoreIdentifier, sameScope, splitLeadingSegment, stripStoreBase, syncScopeCookie, toCurrencyCode, virtualLocale, withLanguageParam, withoutStoreUrlBase };
481
- //# sourceMappingURL=chunk-T2752RH7.js.map
482
- //# sourceMappingURL=chunk-T2752RH7.js.map
536
+ export { AUTH_TOKEN_COOKIE_NAME, CURRENCY_COOKIE_NAME, LANGUAGE_COOKIE_MAX_AGE, LANGUAGE_COOKIE_NAME, SCOPE_COOKIE_MAX_AGE, SCOPE_COOKIE_NAME, STORE_BASE_HEADER, clearAuthTokenCookie, currentHost, decideSharedHostLanguage, escapeForInlineScript, extractCurrencyFromCookies, extractScopeFromCookies, extractScopeFromUrl, extractTokenFromCookies, getInjectedRuntimeEnv, hasLanguageParam, hasStoreUrlBase, isLoopback, isPreviewHost, legacyLocaleRedirectHref, loginRedirectHref, parseStoreId, prefixStoreBase, readEnv, readSdkScope, rememberDevStoreId, renderRuntimeEnvScript, resolveAddressedStore, resolveOwnDomainRedirect, resolveRequestScope, resolveRequestVersionId, resolveStoppedDomainRedirect, resolveStoreBase, resolveStoreBaseFollowsLocale, resolveStoreBaseRedirect, resolveStoreIdentifier, sameScope, splitLeadingSegment, stripStoreBase, syncScopeCookie, toCurrencyCode, virtualLocale, withLanguageParam, withoutStoreUrlBase };
537
+ //# sourceMappingURL=chunk-4E6FD5W7.js.map
538
+ //# sourceMappingURL=chunk-4E6FD5W7.js.map