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

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 (260) hide show
  1. package/dist/{AddToCartForm-P5Q4P763.js → AddToCartForm-HOBSTMWX.js} +3 -3
  2. package/dist/{AddToCartForm-P5Q4P763.js.map → AddToCartForm-HOBSTMWX.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-Z3R6AETN.js → BlogAuthorPage-56OY5GCN.js} +27 -27
  4. package/dist/{BlogAuthorPage-Z3R6AETN.js.map → BlogAuthorPage-56OY5GCN.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-7VROFBGI.js → BlogCategoryPage-HW7A6RNL.js} +27 -27
  6. package/dist/{BlogCategoryPage-7VROFBGI.js.map → BlogCategoryPage-HW7A6RNL.js.map} +1 -1
  7. package/dist/{BlogPage-Q2NN4WTB.js → BlogPage-RRHKP3GP.js} +25 -25
  8. package/dist/{BlogPage-Q2NN4WTB.js.map → BlogPage-RRHKP3GP.js.map} +1 -1
  9. package/dist/{BlogSinglePage-ZPCSNBIX.js → BlogSinglePage-STNMFQHX.js} +25 -25
  10. package/dist/{BlogSinglePage-ZPCSNBIX.js.map → BlogSinglePage-STNMFQHX.js.map} +1 -1
  11. package/dist/{BlogTagPage-IGG2VEMR.js → BlogTagPage-YD3EPTQY.js} +27 -27
  12. package/dist/{BlogTagPage-IGG2VEMR.js.map → BlogTagPage-YD3EPTQY.js.map} +1 -1
  13. package/dist/{BrandsPage-ZAJT6RGM.js → BrandsPage-KJFB4QBN.js} +26 -26
  14. package/dist/{BrandsPage-ZAJT6RGM.js.map → BrandsPage-KJFB4QBN.js.map} +1 -1
  15. package/dist/{Breadcrumb-KE4EWH7L.js → Breadcrumb-QKHYTTFB.js} +25 -25
  16. package/dist/{Breadcrumb-KE4EWH7L.js.map → Breadcrumb-QKHYTTFB.js.map} +1 -1
  17. package/dist/{CartItem-RMCXCGHT.js → CartItem-DCCYGMRI.js} +25 -25
  18. package/dist/{CartItem-RMCXCGHT.js.map → CartItem-DCCYGMRI.js.map} +1 -1
  19. package/dist/{CartSummary-NLEAHKWF.js → CartSummary-DAAYDRFS.js} +25 -25
  20. package/dist/{CartSummary-NLEAHKWF.js.map → CartSummary-DAAYDRFS.js.map} +1 -1
  21. package/dist/{Copyright-EIBPTE3B.js → Copyright-GL5Q4FTN.js} +3 -3
  22. package/dist/{Copyright-EIBPTE3B.js.map → Copyright-GL5Q4FTN.js.map} +1 -1
  23. package/dist/{CustomerLayout-POGWFN6R.js → CustomerLayout-D7HC4G7V.js} +25 -25
  24. package/dist/{CustomerLayout-POGWFN6R.js.map → CustomerLayout-D7HC4G7V.js.map} +1 -1
  25. package/dist/{Footer-LGIUINGS.js → Footer-3NQWLPAA.js} +4 -4
  26. package/dist/{Footer-LGIUINGS.js.map → Footer-3NQWLPAA.js.map} +1 -1
  27. package/dist/{Header-4TGYO6E4.js → Header-SCR46P4B.js} +11 -11
  28. package/dist/{Header-4TGYO6E4.js.map → Header-SCR46P4B.js.map} +1 -1
  29. package/dist/{LatestProducts-YYKQNL5N.js → LatestProducts-4UML6BNG.js} +27 -27
  30. package/dist/{LatestProducts-YYKQNL5N.js.map → LatestProducts-4UML6BNG.js.map} +1 -1
  31. package/dist/{LoyaltyPage-MROFMZXV.js → LoyaltyPage-CQIUT7MD.js} +25 -25
  32. package/dist/{LoyaltyPage-MROFMZXV.js.map → LoyaltyPage-CQIUT7MD.js.map} +1 -1
  33. package/dist/{LoyaltyPointsPage-DVHJOAKP.js → LoyaltyPointsPage-ZOZFDRZT.js} +8 -8
  34. package/dist/{LoyaltyPointsPage-DVHJOAKP.js.map → LoyaltyPointsPage-ZOZFDRZT.js.map} +1 -1
  35. package/dist/{MainMenu-GQO5KOTU.js → MainMenu-YLCB4MT7.js} +7 -7
  36. package/dist/{MainMenu-GQO5KOTU.js.map → MainMenu-YLCB4MT7.js.map} +1 -1
  37. package/dist/{MasterLayout-ZJBJ7EHM.js → MasterLayout-BDDKPLS6.js} +25 -25
  38. package/dist/{MasterLayout-ZJBJ7EHM.js.map → MasterLayout-BDDKPLS6.js.map} +1 -1
  39. package/dist/{MobileMenu-TZSFYHPW.js → MobileMenu-S5LB622I.js} +26 -26
  40. package/dist/{MobileMenu-TZSFYHPW.js.map → MobileMenu-S5LB622I.js.map} +1 -1
  41. package/dist/{NotificationsPage-BX6OSIDY.js → NotificationsPage-FPF7UU3Q.js} +25 -25
  42. package/dist/{NotificationsPage-BX6OSIDY.js.map → NotificationsPage-FPF7UU3Q.js.map} +1 -1
  43. package/dist/{OrderSinglePage-3RQ5TJDB.js → OrderSinglePage-M37ROUBX.js} +26 -26
  44. package/dist/{OrderSinglePage-3RQ5TJDB.js.map → OrderSinglePage-M37ROUBX.js.map} +1 -1
  45. package/dist/{OrdersPage-S4ECYNGI.js → OrdersPage-GIZFTPQ7.js} +25 -25
  46. package/dist/{OrdersPage-S4ECYNGI.js.map → OrdersPage-GIZFTPQ7.js.map} +1 -1
  47. package/dist/{PageSingle-BZGDC4VE.js → PageSingle-EQD5Y3L5.js} +6 -6
  48. package/dist/{PageSingle-BZGDC4VE.js.map → PageSingle-EQD5Y3L5.js.map} +1 -1
  49. package/dist/{ProductDetails-ZPRWPSVK.js → ProductDetails-53BXVF37.js} +7 -7
  50. package/dist/{ProductDetails-ZPRWPSVK.js.map → ProductDetails-53BXVF37.js.map} +1 -1
  51. package/dist/{ProfilePage-SKAS6LFQ.js → ProfilePage-6GJXTBFN.js} +25 -25
  52. package/dist/{ProfilePage-SKAS6LFQ.js.map → ProfilePage-6GJXTBFN.js.map} +1 -1
  53. package/dist/{ReviewsPage-NAZWXVXT.js → ReviewsPage-SCHVMKXV.js} +3 -3
  54. package/dist/{ReviewsPage-NAZWXVXT.js.map → ReviewsPage-SCHVMKXV.js.map} +1 -1
  55. package/dist/{SeoCartWidget-6NB6LT2Z.js → SeoCartWidget-IUXLYOTC.js} +25 -25
  56. package/dist/{SeoCartWidget-6NB6LT2Z.js.map → SeoCartWidget-IUXLYOTC.js.map} +1 -1
  57. package/dist/{SettingsPage-GZ2NJIUR.js → SettingsPage-2TKL2COF.js} +25 -25
  58. package/dist/{SettingsPage-GZ2NJIUR.js.map → SettingsPage-2TKL2COF.js.map} +1 -1
  59. package/dist/{StoreClosedNotification-V72F7HE5.js → StoreClosedNotification-HHOQXT6N.js} +26 -26
  60. package/dist/{StoreClosedNotification-V72F7HE5.js.map → StoreClosedNotification-HHOQXT6N.js.map} +1 -1
  61. package/dist/{TestimonialsPage-L6VBZFLT.js → TestimonialsPage-GJJT7F5G.js} +6 -6
  62. package/dist/{TestimonialsPage-L6VBZFLT.js.map → TestimonialsPage-GJJT7F5G.js.map} +1 -1
  63. package/dist/{ThankYouPage-O5U3V6J4.js → ThankYouPage-ZAEZWSUK.js} +25 -25
  64. package/dist/{ThankYouPage-O5U3V6J4.js.map → ThankYouPage-ZAEZWSUK.js.map} +1 -1
  65. package/dist/{WalletPage-NJBBZIMM.js → WalletPage-74LAUONG.js} +26 -26
  66. package/dist/{WalletPage-NJBBZIMM.js.map → WalletPage-74LAUONG.js.map} +1 -1
  67. package/dist/{WebMcpTools-VAZH3S5G.js → WebMcpTools-J6HCO5B6.js} +9 -9
  68. package/dist/{WebMcpTools-VAZH3S5G.js.map → WebMcpTools-J6HCO5B6.js.map} +1 -1
  69. package/dist/{WishlistPage-UKOGNFKB.js → WishlistPage-SV55V5CP.js} +27 -27
  70. package/dist/{WishlistPage-UKOGNFKB.js.map → WishlistPage-SV55V5CP.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-FL3OK7AQ.js → chunk-4SZNUX4K.js} +16 -16
  92. package/dist/{chunk-FL3OK7AQ.js.map → chunk-4SZNUX4K.js.map} +1 -1
  93. package/dist/{chunk-JSAWLWUN.js → chunk-5VTVPQQB.js} +4 -4
  94. package/dist/{chunk-JSAWLWUN.js.map → chunk-5VTVPQQB.js.map} +1 -1
  95. package/dist/{chunk-PVOJJ2BV.js → chunk-64RDACOS.js} +5 -5
  96. package/dist/{chunk-PVOJJ2BV.js.map → chunk-64RDACOS.js.map} +1 -1
  97. package/dist/{chunk-PYXAPLNB.js → chunk-677OXNGV.js} +3 -3
  98. package/dist/{chunk-PYXAPLNB.js.map → chunk-677OXNGV.js.map} +1 -1
  99. package/dist/{chunk-7XAGU6CT.js → chunk-7IVHY4OR.js} +3 -3
  100. package/dist/{chunk-7XAGU6CT.js.map → chunk-7IVHY4OR.js.map} +1 -1
  101. package/dist/{chunk-6H6BVZBV.js → chunk-A2SS3TNE.js} +3 -3
  102. package/dist/{chunk-6H6BVZBV.js.map → chunk-A2SS3TNE.js.map} +1 -1
  103. package/dist/{chunk-TXYLHBUH.js → chunk-AFFBCOH6.js} +3 -3
  104. package/dist/{chunk-TXYLHBUH.js.map → chunk-AFFBCOH6.js.map} +1 -1
  105. package/dist/{chunk-LBZNLTBM.js → chunk-AU2XMLTH.js} +3 -3
  106. package/dist/{chunk-LBZNLTBM.js.map → chunk-AU2XMLTH.js.map} +1 -1
  107. package/dist/{chunk-5NUCGUTE.js → chunk-BIVBSVWR.js} +4 -4
  108. package/dist/{chunk-5NUCGUTE.js.map → chunk-BIVBSVWR.js.map} +1 -1
  109. package/dist/{chunk-6YEE3VHL.js → chunk-BRIRWS2Q.js} +3 -3
  110. package/dist/{chunk-6YEE3VHL.js.map → chunk-BRIRWS2Q.js.map} +1 -1
  111. package/dist/{chunk-ZUVBDALM.js → chunk-BWKHA4ZD.js} +4 -4
  112. package/dist/{chunk-ZUVBDALM.js.map → chunk-BWKHA4ZD.js.map} +1 -1
  113. package/dist/{chunk-EMAAVDEK.js → chunk-BY4DQTOG.js} +7 -7
  114. package/dist/{chunk-EMAAVDEK.js.map → chunk-BY4DQTOG.js.map} +1 -1
  115. package/dist/{chunk-TEAYGNHT.js → chunk-CIJVNUNZ.js} +3 -3
  116. package/dist/{chunk-TEAYGNHT.js.map → chunk-CIJVNUNZ.js.map} +1 -1
  117. package/dist/{chunk-5RBXCPG6.js → chunk-CV32FSEL.js} +3 -3
  118. package/dist/{chunk-5RBXCPG6.js.map → chunk-CV32FSEL.js.map} +1 -1
  119. package/dist/{chunk-FCCGJ4DI.js → chunk-EAQAPYYU.js} +7 -7
  120. package/dist/{chunk-FCCGJ4DI.js.map → chunk-EAQAPYYU.js.map} +1 -1
  121. package/dist/{chunk-4E6FD5W7.js → chunk-EEL6OYAQ.js} +7 -3
  122. package/dist/chunk-EEL6OYAQ.js.map +1 -0
  123. package/dist/{chunk-W7CYFPGY.js → chunk-EFKVEYML.js} +6 -6
  124. package/dist/{chunk-W7CYFPGY.js.map → chunk-EFKVEYML.js.map} +1 -1
  125. package/dist/{chunk-O63WBEAC.js → chunk-F5RU2UCE.js} +22 -22
  126. package/dist/{chunk-O63WBEAC.js.map → chunk-F5RU2UCE.js.map} +1 -1
  127. package/dist/{chunk-RB7RHMKJ.js → chunk-FCFIG4M3.js} +5 -5
  128. package/dist/{chunk-RB7RHMKJ.js.map → chunk-FCFIG4M3.js.map} +1 -1
  129. package/dist/{chunk-B57KIBQL.js → chunk-GGQA6QBB.js} +3 -3
  130. package/dist/{chunk-B57KIBQL.js.map → chunk-GGQA6QBB.js.map} +1 -1
  131. package/dist/{chunk-WAKCWE6P.js → chunk-GMXNVBCD.js} +5 -5
  132. package/dist/{chunk-WAKCWE6P.js.map → chunk-GMXNVBCD.js.map} +1 -1
  133. package/dist/{chunk-PHPOMWQ4.js → chunk-HSJCVD3P.js} +4 -4
  134. package/dist/{chunk-PHPOMWQ4.js.map → chunk-HSJCVD3P.js.map} +1 -1
  135. package/dist/{chunk-5LI536P6.js → chunk-I3KAWUPG.js} +5 -5
  136. package/dist/{chunk-5LI536P6.js.map → chunk-I3KAWUPG.js.map} +1 -1
  137. package/dist/{chunk-34L65JGK.js → chunk-I5GFTVR2.js} +4 -4
  138. package/dist/{chunk-34L65JGK.js.map → chunk-I5GFTVR2.js.map} +1 -1
  139. package/dist/{chunk-QKKEBQ57.js → chunk-IO4CVUL5.js} +6 -6
  140. package/dist/{chunk-QKKEBQ57.js.map → chunk-IO4CVUL5.js.map} +1 -1
  141. package/dist/{chunk-ULF4LPVA.js → chunk-IURXJAIK.js} +3 -3
  142. package/dist/{chunk-ULF4LPVA.js.map → chunk-IURXJAIK.js.map} +1 -1
  143. package/dist/{chunk-2CILV5ME.js → chunk-JWYZLXJZ.js} +5 -5
  144. package/dist/{chunk-2CILV5ME.js.map → chunk-JWYZLXJZ.js.map} +1 -1
  145. package/dist/{chunk-PZP3372I.js → chunk-KNY2ZZ5M.js} +4 -4
  146. package/dist/{chunk-PZP3372I.js.map → chunk-KNY2ZZ5M.js.map} +1 -1
  147. package/dist/{chunk-UUHLRFXB.js → chunk-LAO3MSKN.js} +8 -8
  148. package/dist/{chunk-UUHLRFXB.js.map → chunk-LAO3MSKN.js.map} +1 -1
  149. package/dist/{chunk-5EAISVPV.js → chunk-LFMCUQQ3.js} +3 -3
  150. package/dist/{chunk-5EAISVPV.js.map → chunk-LFMCUQQ3.js.map} +1 -1
  151. package/dist/{chunk-Q7Z76F7N.js → chunk-LJXWCGBH.js} +8 -8
  152. package/dist/{chunk-Q7Z76F7N.js.map → chunk-LJXWCGBH.js.map} +1 -1
  153. package/dist/{chunk-6QIF6WJH.js → chunk-LPF6YURL.js} +3 -3
  154. package/dist/{chunk-6QIF6WJH.js.map → chunk-LPF6YURL.js.map} +1 -1
  155. package/dist/{chunk-P2PPBXHD.js → chunk-M2MJKUQF.js} +3 -3
  156. package/dist/{chunk-P2PPBXHD.js.map → chunk-M2MJKUQF.js.map} +1 -1
  157. package/dist/{chunk-IEKP3HYS.js → chunk-MJQ3HFLJ.js} +4 -4
  158. package/dist/{chunk-IEKP3HYS.js.map → chunk-MJQ3HFLJ.js.map} +1 -1
  159. package/dist/{chunk-VJA4DVVT.js → chunk-N2RAPPQ3.js} +4 -4
  160. package/dist/{chunk-VJA4DVVT.js.map → chunk-N2RAPPQ3.js.map} +1 -1
  161. package/dist/{chunk-OOZQVX7C.js → chunk-O76H6TDP.js} +6 -6
  162. package/dist/{chunk-OOZQVX7C.js.map → chunk-O76H6TDP.js.map} +1 -1
  163. package/dist/{chunk-GLSRVHYJ.js → chunk-OZRGUVHQ.js} +4 -4
  164. package/dist/{chunk-GLSRVHYJ.js.map → chunk-OZRGUVHQ.js.map} +1 -1
  165. package/dist/{chunk-JK45RUVV.js → chunk-PPUV27YN.js} +3 -3
  166. package/dist/{chunk-JK45RUVV.js.map → chunk-PPUV27YN.js.map} +1 -1
  167. package/dist/{chunk-RY6VPXG6.js → chunk-R4LA6IMS.js} +3 -3
  168. package/dist/{chunk-RY6VPXG6.js.map → chunk-R4LA6IMS.js.map} +1 -1
  169. package/dist/{chunk-R7QCNL62.js → chunk-REBJQRQF.js} +3 -3
  170. package/dist/{chunk-R7QCNL62.js.map → chunk-REBJQRQF.js.map} +1 -1
  171. package/dist/{chunk-5M2AK5KE.js → chunk-S5KE6KPV.js} +4 -4
  172. package/dist/{chunk-5M2AK5KE.js.map → chunk-S5KE6KPV.js.map} +1 -1
  173. package/dist/{chunk-LWAJNEIM.js → chunk-SIYINCXL.js} +4 -4
  174. package/dist/{chunk-LWAJNEIM.js.map → chunk-SIYINCXL.js.map} +1 -1
  175. package/dist/{chunk-KJ7NG3ZH.js → chunk-SXJEZEGN.js} +3 -3
  176. package/dist/{chunk-KJ7NG3ZH.js.map → chunk-SXJEZEGN.js.map} +1 -1
  177. package/dist/{chunk-I2LK4IC2.js → chunk-UBRG55VM.js} +4 -4
  178. package/dist/{chunk-I2LK4IC2.js.map → chunk-UBRG55VM.js.map} +1 -1
  179. package/dist/{chunk-2HCODIC6.js → chunk-UG44HSCN.js} +4 -4
  180. package/dist/{chunk-2HCODIC6.js.map → chunk-UG44HSCN.js.map} +1 -1
  181. package/dist/{chunk-BYGVKW3M.js → chunk-UL2DRYH3.js} +4 -4
  182. package/dist/{chunk-BYGVKW3M.js.map → chunk-UL2DRYH3.js.map} +1 -1
  183. package/dist/{chunk-PPFD456V.js → chunk-URBOD4MX.js} +3 -3
  184. package/dist/{chunk-PPFD456V.js.map → chunk-URBOD4MX.js.map} +1 -1
  185. package/dist/{chunk-5T4MJAUN.js → chunk-VBAFSMNX.js} +3 -3
  186. package/dist/{chunk-5T4MJAUN.js.map → chunk-VBAFSMNX.js.map} +1 -1
  187. package/dist/{chunk-DPQIVZ4T.js → chunk-VDPMCOHX.js} +3 -3
  188. package/dist/{chunk-DPQIVZ4T.js.map → chunk-VDPMCOHX.js.map} +1 -1
  189. package/dist/{chunk-2ZC5YGMI.js → chunk-XEHOZTER.js} +3 -3
  190. package/dist/{chunk-2ZC5YGMI.js.map → chunk-XEHOZTER.js.map} +1 -1
  191. package/dist/{chunk-AOQZHLZZ.js → chunk-XTBFIIAR.js} +5 -5
  192. package/dist/{chunk-AOQZHLZZ.js.map → chunk-XTBFIIAR.js.map} +1 -1
  193. package/dist/{chunk-O3XMYDNC.js → chunk-ZBGMIDDO.js} +5 -5
  194. package/dist/{chunk-O3XMYDNC.js.map → chunk-ZBGMIDDO.js.map} +1 -1
  195. package/dist/{chunk-CAULDK3N.js → chunk-ZC4O472R.js} +6 -6
  196. package/dist/{chunk-CAULDK3N.js.map → chunk-ZC4O472R.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/index.js +25 -25
  203. package/dist/components/store/index.js +24 -24
  204. package/dist/components/toast/index.js +4 -4
  205. package/dist/dev/editor/index.js +2 -2
  206. package/dist/dev/index.js +2 -2
  207. package/dist/document-class-XYBFXCE7.js +33 -0
  208. package/dist/{document-class-N7WF3WXG.js.map → document-class-XYBFXCE7.js.map} +1 -1
  209. package/dist/hooks/index.js +23 -23
  210. package/dist/hooks/useComments.js +3 -3
  211. package/dist/hooks/useGtm.js +23 -23
  212. package/dist/hooks/useMoney.js +23 -23
  213. package/dist/hooks/useProduct.js +3 -3
  214. package/dist/hooks/useStore.js +23 -23
  215. package/dist/hooks/useUser.js +5 -5
  216. package/dist/hooks/useWishlist.js +3 -3
  217. package/dist/index.js +23 -23
  218. package/dist/native-app/index.js +3 -3
  219. package/dist/{navigation-FRKMKNLK.js → navigation-QDTYXINL.js} +7 -7
  220. package/dist/{navigation-FRKMKNLK.js.map → navigation-QDTYXINL.js.map} +1 -1
  221. package/dist/{navigation-5DPDZQUU.js → navigation-SHFUWYCA.js} +8 -8
  222. package/dist/{navigation-5DPDZQUU.js.map → navigation-SHFUWYCA.js.map} +1 -1
  223. package/dist/{not-found-4U2TRCLF.js → not-found-IFD562WC.js} +26 -26
  224. package/dist/{not-found-4U2TRCLF.js.map → not-found-IFD562WC.js.map} +1 -1
  225. package/dist/providers/index.js +23 -23
  226. package/dist/routes/account/orders.js +8 -8
  227. package/dist/routes/account.js +17 -17
  228. package/dist/routes/blog.js +12 -12
  229. package/dist/routes/brands.js +8 -8
  230. package/dist/routes/cart.js +32 -32
  231. package/dist/routes/home.js +29 -29
  232. package/dist/routes/index.js +6 -6
  233. package/dist/routes/loyalty.js +9 -9
  234. package/dist/routes/page/loader.d.ts.map +1 -1
  235. package/dist/routes/page.js +9 -8
  236. package/dist/routes/page.js.map +1 -1
  237. package/dist/routes/product/loader.d.ts.map +1 -1
  238. package/dist/routes/product-listing.js +33 -33
  239. package/dist/routes/product.js +29 -28
  240. package/dist/routes/product.js.map +1 -1
  241. package/dist/routes/seo-redirects.js +6 -6
  242. package/dist/routes/testimonials.js +4 -4
  243. package/dist/routes/thank-you.js +8 -8
  244. package/dist/skeleton.js +29 -29
  245. package/dist/{store-lookup-S6JUSKNH.js → store-lookup-AJT3ZHTS.js} +11 -11
  246. package/dist/{store-lookup-S6JUSKNH.js.map → store-lookup-AJT3ZHTS.js.map} +1 -1
  247. package/dist/tanstack/templates/locale-wrapper.d.ts +3 -1
  248. package/dist/tanstack/templates/locale-wrapper.d.ts.map +1 -1
  249. package/dist/tanstack.js +20 -20
  250. package/dist/utils/baseHead.js +2 -2
  251. package/dist/utils/cookies.d.ts +6 -0
  252. package/dist/utils/cookies.d.ts.map +1 -1
  253. package/dist/utils/index.js +6 -6
  254. package/dist/vite/index.js +32 -14
  255. package/dist/vite/index.js.map +1 -1
  256. package/package.json +1 -1
  257. package/tailwind/routes/page/loader.ts.txt +4 -0
  258. package/tailwind/routes/product/loader.ts.txt +5 -0
  259. package/dist/chunk-4E6FD5W7.js.map +0 -1
  260. package/dist/document-class-N7WF3WXG.js +0 -33
@@ -1,50 +1,50 @@
1
- import { ProductsSlider, LazyTestimonials } from '../chunk-UUHLRFXB.js';
2
- import '../chunk-TXYLHBUH.js';
3
- import { product } from '../chunk-ZUVBDALM.js';
4
- import { ProductGallery, LazyProductDetails, LazyAddToCartForm } from '../chunk-CAULDK3N.js';
5
- import '../chunk-PVOJJ2BV.js';
1
+ import { ProductsSlider, LazyTestimonials } from '../chunk-LAO3MSKN.js';
2
+ import '../chunk-AFFBCOH6.js';
3
+ import { product } from '../chunk-BWKHA4ZD.js';
4
+ import { ProductGallery, LazyProductDetails, LazyAddToCartForm } from '../chunk-ZC4O472R.js';
5
+ import '../chunk-64RDACOS.js';
6
6
  import '../chunk-Y32RHCOH.js';
7
- import { fastCheckoutScript } from '../chunk-O63WBEAC.js';
7
+ import { fastCheckoutScript } from '../chunk-F5RU2UCE.js';
8
8
  import '../chunk-Q77J3D2W.js';
9
- import '../chunk-EMAAVDEK.js';
10
- import '../chunk-5T4MJAUN.js';
11
- import '../chunk-WAKCWE6P.js';
9
+ import '../chunk-BY4DQTOG.js';
10
+ import '../chunk-VBAFSMNX.js';
11
+ import '../chunk-GMXNVBCD.js';
12
12
  import '../chunk-X55R4VVK.js';
13
13
  import '../chunk-YL6X3ZMG.js';
14
- import '../chunk-IEKP3HYS.js';
14
+ import '../chunk-MJQ3HFLJ.js';
15
15
  import '../chunk-OXMUPNMH.js';
16
- import '../chunk-5RBXCPG6.js';
16
+ import '../chunk-CV32FSEL.js';
17
17
  import '../chunk-VVZNW5CB.js';
18
- import '../chunk-DPQIVZ4T.js';
18
+ import '../chunk-VDPMCOHX.js';
19
19
  import '../chunk-GD26FI4J.js';
20
- import '../chunk-6YEE3VHL.js';
21
- import { buildHreflangAlternates } from '../chunk-P2PPBXHD.js';
22
- import '../chunk-O3XMYDNC.js';
20
+ import '../chunk-BRIRWS2Q.js';
21
+ import { buildHreflangAlternates } from '../chunk-M2MJKUQF.js';
22
+ import { notFound } from '../chunk-ZBGMIDDO.js';
23
23
  import { RouteId } from '../chunk-OUW6WESU.js';
24
- import { useComments } from '../chunk-JK45RUVV.js';
24
+ import { useComments } from '../chunk-PPUV27YN.js';
25
25
  import '../chunk-HI5V5X3S.js';
26
- import '../chunk-2ZC5YGMI.js';
27
- import '../chunk-PYXAPLNB.js';
26
+ import '../chunk-XEHOZTER.js';
27
+ import '../chunk-677OXNGV.js';
28
28
  import '../chunk-6T55LXJL.js';
29
29
  import '../chunk-Z653O7MX.js';
30
30
  import '../chunk-ZCH7W7DZ.js';
31
- import { useProduct } from '../chunk-B57KIBQL.js';
31
+ import { useProduct } from '../chunk-GGQA6QBB.js';
32
32
  import '../chunk-JWXJPJBO.js';
33
33
  import '../chunk-CW625T2E.js';
34
34
  import '../chunk-7V36I5GT.js';
35
35
  import '../chunk-6WI7R2BD.js';
36
- import '../chunk-5EAISVPV.js';
36
+ import '../chunk-LFMCUQQ3.js';
37
37
  import '../chunk-OAMIDZKW.js';
38
- import '../chunk-BYGVKW3M.js';
38
+ import '../chunk-UL2DRYH3.js';
39
39
  import '../chunk-OQIIJRAS.js';
40
40
  import '../chunk-V2ZDTY6H.js';
41
- import '../chunk-PPFD456V.js';
41
+ import '../chunk-URBOD4MX.js';
42
42
  import { HookSlot } from '../chunk-5XDPAKF5.js';
43
43
  import '../chunk-GCPEMNSU.js';
44
- import { getActiveCurrency } from '../chunk-RB7RHMKJ.js';
44
+ import { getActiveCurrency } from '../chunk-FCFIG4M3.js';
45
45
  import '../chunk-Z5M4YYWT.js';
46
46
  import { useTranslation } from '../chunk-TYNZ5B2B.js';
47
- import { LazyBreadcrumb, LazyRenderWhenVisible } from '../chunk-LBZNLTBM.js';
47
+ import { LazyBreadcrumb, LazyRenderWhenVisible } from '../chunk-AU2XMLTH.js';
48
48
  import '../chunk-AXW67SY7.js';
49
49
  import '../chunk-BYMOPN2S.js';
50
50
  import '../chunk-SKLEJJ6M.js';
@@ -52,10 +52,10 @@ import '../chunk-6BZ5TKEV.js';
52
52
  import '../chunk-FZKRSGLP.js';
53
53
  import '../chunk-KYMWEUN2.js';
54
54
  import '../chunk-YA6ABQB7.js';
55
- import '../chunk-R7QCNL62.js';
56
- import '../chunk-ULF4LPVA.js';
57
- import '../chunk-7XAGU6CT.js';
58
- import '../chunk-4E6FD5W7.js';
55
+ import '../chunk-REBJQRQF.js';
56
+ import '../chunk-IURXJAIK.js';
57
+ import '../chunk-7IVHY4OR.js';
58
+ import '../chunk-EEL6OYAQ.js';
59
59
  import { getTwilightContext } from '../chunk-6K34BCUP.js';
60
60
  import '../chunk-T72DAX7R.js';
61
61
  import { useTwilight } from '../chunk-DF6FBKDN.js';
@@ -68,6 +68,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
68
68
 
69
69
  // src/routes/product/loader.ts
70
70
  async function productLoader({ params }) {
71
+ if (!/^\d+$/.test(params.id)) throw notFound();
71
72
  const data = await product.findOrThrow(params.id);
72
73
  const i18n = getTwilightContext().i18n;
73
74
  const home = { name: i18n.t("common.titles.home"), url: "/" };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/product/loader.ts","../../src/routes/product/ProductPage.tsx","../../src/routes/product/index.tsx"],"names":["product"],"mappings":"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","file":"product.js","sourcesContent":["import type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport { product } from '../../api/product';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\nimport type { Breadcrumb } from '../../types';\n\nexport async function productLoader({ params }: { params: IdParams }): Promise<ProductPageProps> {\n const data = await product.findOrThrow(params.id);\n const i18n = getTwilightContext().i18n;\n const home: Breadcrumb = { name: i18n.t('common.titles.home'), url: '/' };\n\n const breadcrumbs: Breadcrumb[] = [home];\n if (data.category) {\n breadcrumbs.push({ name: data.category.name, url: data.category.url });\n }\n breadcrumbs.push({ name: data.name, url: data.url });\n\n const page = {\n slug: RouteId.PRODUCT_SINGLE,\n id: data.id,\n title: data.name,\n url: data.url,\n parent:\n data.category && data.category.id\n ? { id: data.category.id, name: data.category.name, url: data.category.url }\n : null,\n breadcrumbs,\n };\n\n return {\n page,\n product: data,\n };\n}\n","import { SallaQuickOrder } from '@salla.sa/twilight-components-react/quick-order';\nimport { SallaOffer } from '@salla.sa/twilight-components-react/offer';\nimport { SallaComments } from '@salla.sa/twilight-components-react/comments';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useProduct } from '../../hooks/useProduct';\nimport { useComments } from '../../hooks/useComments';\nimport type { ProductPageProps } from './types';\nimport { Breadcrumb, RenderWhenVisible } from '../../components/common';\nimport { ProductDetails, AddToCartForm, ProductGallery } from '../../components/product';\nimport { ProductsSlider, Testimonials } from '../../components/home';\nimport { useTwilight } from '../../providers/twilight-context';\n\nexport function ProductPage({ product: initialProduct, page }: ProductPageProps) {\n const { theme, store } = useTwilight();\n const { t } = useTranslation();\n const { product } = useProduct(initialProduct);\n const { commentsKey } = useComments();\n\n return (\n <div key={product.id}>\n <div className=\"container\">\n {theme?.settings?.product_show_breadcrumbs !== false && <Breadcrumb page={page} />}\n\n <HookSlot name=\"product:start\" />\n\n <div className=\"flex flex-col items-start md:flex-row\" id={`product-${product.id}`}>\n <ProductGallery product={product} />\n\n <div className=\"main-content md:sticky md:overflow-hidden top-24 w-full md:w-2/4 md:pb-16\">\n <HookSlot name=\"product:details.start\" />\n <ProductDetails product={product} showTags={theme.settings.show_tags} />\n <HookSlot name=\"product:details.end\" />\n\n <HookSlot name=\"product:single.form.start\" />\n <AddToCartForm product={product} stickyAddToCart={theme.settings.sticky_add_to_cart} />\n <HookSlot name=\"product:single.form.end\" />\n {/* After the form, as in Twig; `.start` and `description` are in ProductDetails */}\n <HookSlot name=\"product:single.description.end\" context={{ product }} />\n\n <SallaQuickOrder className=\"mt-5 md:-mb-2 block\" />\n </div>\n </div>\n\n <SallaOffer />\n </div>\n\n {store.settings?.rating?.show_on_product && (\n <RenderWhenVisible>\n <SallaComments key={commentsKey} itemId={Number(product.id)} type={'product' as any} />\n </RenderWhenVisible>\n )}\n\n <HookSlot name=\"product:related.start\" />\n <RenderWhenVisible>\n <div className=\"container\">\n <ProductsSlider\n data={{\n products: { source: 'related', source_value: Number(product.id) },\n title: t('pages.products.similar_products'),\n display_all_url: '',\n }}\n />\n </div>\n </RenderWhenVisible>\n <HookSlot name=\"product:related.end\" />\n\n <RenderWhenVisible>\n <div className=\"container\">\n <Testimonials data={{}} />\n </div>\n </RenderWhenVisible>\n\n <HookSlot name=\"product:end\" />\n </div>\n );\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { productLoader } from './loader';\nimport { RouteId } from '../../router/route-ids';\nimport { ProductPage } from './ProductPage';\nimport { fastCheckoutScript } from '../../utils/fast-checkout';\nimport { getActiveCurrency } from '../../api/client';\nexport { productLoader } from './loader';\nexport type { ProductPageProps } from './types';\n\nasync function loader(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: ProductPageProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<ProductPageProps> {\n const data = await productLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as ProductPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: ProductPageProps): HeadDescriptor {\n if (!data?.product) {\n return {\n title: 'Products',\n description: 'Browse our products',\n };\n }\n const product = data.product;\n const storeName = ctx.settings?.store?.name ?? '';\n\n // Strip HTML and limit description to 160 chars\n const description = product.description?.replace(/<[^>]*>/g, '').slice(0, 160) ?? '';\n\n // Price valid until: 1 month from now\n const priceValidUntil = new Date();\n priceValidUntil.setMonth(priceValidUntil.getMonth() + 1);\n\n // Collect all product images\n const images = product.images?.map((img) => img.url).filter(Boolean) ?? [];\n if (product.image?.url && !images.includes(product.image.url)) {\n images.unshift(product.image.url);\n }\n\n // Build JSON-LD schema matching SchemaProductWidget.php\n const jsonLd: Record<string, unknown> = {\n '@context': 'https://schema.org',\n '@type': 'Product',\n name: product.name,\n description,\n sku: product.sku,\n image: images.length > 0 ? images : undefined,\n offers: {\n '@type': 'Offer',\n url: product.url,\n availability: product.is_available\n ? 'https://schema.org/InStock'\n : 'https://schema.org/OutOfStock',\n price: product.sale_price,\n priceCurrency: getActiveCurrency(product.currency),\n priceValidUntil: priceValidUntil.toISOString().split('T')[0],\n seller: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n },\n };\n\n // Add brand if exists\n if (product.brand) {\n jsonLd.brand = {\n '@type': 'Brand',\n name: product.brand.name,\n description: product.brand.description,\n logo: product.brand.logo,\n };\n }\n\n // Add aggregateRating and review if rating exists\n if (product.rating && product.rating.count > 0) {\n const ratingValue = product.rating.stars;\n jsonLd.aggregateRating = {\n '@type': 'AggregateRating',\n ratingCount: product.rating.count,\n ratingValue,\n };\n jsonLd.review = {\n '@type': 'Review',\n author: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n reviewRating: {\n '@type': 'Rating',\n bestRating: 5,\n ratingValue,\n },\n };\n }\n\n if (product.gtin && product.gtin.length === 8) {\n jsonLd.gtin8 = product.gtin;\n }\n\n if (product.mpn) {\n jsonLd.mpn = product.mpn;\n }\n\n // Twig: \"<product> | <store name>\", without the store meta title.\n const title = storeName ? `${product.name} | ${storeName}` : product.name;\n const base: HeadDescriptor = {\n title,\n appendStoreTitle: false,\n description,\n canonical: product.url,\n openGraph: {\n type: 'product',\n title,\n description,\n images: product.image?.url,\n url: product.url,\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description,\n images: product.image?.url,\n },\n jsonLd,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n // Quick-buy widget code, eager only here: the Buy Now button is above the fold on this page.\n // Other routes load it on idle from the body:end default hook, which also owns the\n // `#fast-checkout-js` marker `salla-add-product-button` checks for.\n scripts: ctx.settings?.store?.settings?.buy_now ? [fastCheckoutScript()] : [],\n };\n\n return base;\n}\n\nexport const Product = {\n id: RouteId.PRODUCT_SINGLE,\n loader,\n head,\n Component: ProductPage,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/product/loader.ts","../../src/routes/product/ProductPage.tsx","../../src/routes/product/index.tsx"],"names":["product"],"mappings":"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","file":"product.js","sourcesContent":["import type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport { product } from '../../api/product';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\nimport type { Breadcrumb } from '../../types';\nimport { notFound } from '../../providers/NavigationProvider';\n\nexport async function productLoader({ params }: { params: IdParams }): Promise<ProductPageProps> {\n // A product id is digits. Anything else is put in the API path as it is, and the API answers\n // neither 404 nor 410 for it: `hello.html` is a 403 and `oc%u0022xx` Cloudflare's 400, so the\n // error page went out as a 500 (`/php_info.html` matches `p{$id}`, and scanners ask for it).\n if (!/^\\d+$/.test(params.id)) throw notFound();\n const data = await product.findOrThrow(params.id);\n const i18n = getTwilightContext().i18n;\n const home: Breadcrumb = { name: i18n.t('common.titles.home'), url: '/' };\n\n const breadcrumbs: Breadcrumb[] = [home];\n if (data.category) {\n breadcrumbs.push({ name: data.category.name, url: data.category.url });\n }\n breadcrumbs.push({ name: data.name, url: data.url });\n\n const page = {\n slug: RouteId.PRODUCT_SINGLE,\n id: data.id,\n title: data.name,\n url: data.url,\n parent:\n data.category && data.category.id\n ? { id: data.category.id, name: data.category.name, url: data.category.url }\n : null,\n breadcrumbs,\n };\n\n return {\n page,\n product: data,\n };\n}\n","import { SallaQuickOrder } from '@salla.sa/twilight-components-react/quick-order';\nimport { SallaOffer } from '@salla.sa/twilight-components-react/offer';\nimport { SallaComments } from '@salla.sa/twilight-components-react/comments';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useProduct } from '../../hooks/useProduct';\nimport { useComments } from '../../hooks/useComments';\nimport type { ProductPageProps } from './types';\nimport { Breadcrumb, RenderWhenVisible } from '../../components/common';\nimport { ProductDetails, AddToCartForm, ProductGallery } from '../../components/product';\nimport { ProductsSlider, Testimonials } from '../../components/home';\nimport { useTwilight } from '../../providers/twilight-context';\n\nexport function ProductPage({ product: initialProduct, page }: ProductPageProps) {\n const { theme, store } = useTwilight();\n const { t } = useTranslation();\n const { product } = useProduct(initialProduct);\n const { commentsKey } = useComments();\n\n return (\n <div key={product.id}>\n <div className=\"container\">\n {theme?.settings?.product_show_breadcrumbs !== false && <Breadcrumb page={page} />}\n\n <HookSlot name=\"product:start\" />\n\n <div className=\"flex flex-col items-start md:flex-row\" id={`product-${product.id}`}>\n <ProductGallery product={product} />\n\n <div className=\"main-content md:sticky md:overflow-hidden top-24 w-full md:w-2/4 md:pb-16\">\n <HookSlot name=\"product:details.start\" />\n <ProductDetails product={product} showTags={theme.settings.show_tags} />\n <HookSlot name=\"product:details.end\" />\n\n <HookSlot name=\"product:single.form.start\" />\n <AddToCartForm product={product} stickyAddToCart={theme.settings.sticky_add_to_cart} />\n <HookSlot name=\"product:single.form.end\" />\n {/* After the form, as in Twig; `.start` and `description` are in ProductDetails */}\n <HookSlot name=\"product:single.description.end\" context={{ product }} />\n\n <SallaQuickOrder className=\"mt-5 md:-mb-2 block\" />\n </div>\n </div>\n\n <SallaOffer />\n </div>\n\n {store.settings?.rating?.show_on_product && (\n <RenderWhenVisible>\n <SallaComments key={commentsKey} itemId={Number(product.id)} type={'product' as any} />\n </RenderWhenVisible>\n )}\n\n <HookSlot name=\"product:related.start\" />\n <RenderWhenVisible>\n <div className=\"container\">\n <ProductsSlider\n data={{\n products: { source: 'related', source_value: Number(product.id) },\n title: t('pages.products.similar_products'),\n display_all_url: '',\n }}\n />\n </div>\n </RenderWhenVisible>\n <HookSlot name=\"product:related.end\" />\n\n <RenderWhenVisible>\n <div className=\"container\">\n <Testimonials data={{}} />\n </div>\n </RenderWhenVisible>\n\n <HookSlot name=\"product:end\" />\n </div>\n );\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { productLoader } from './loader';\nimport { RouteId } from '../../router/route-ids';\nimport { ProductPage } from './ProductPage';\nimport { fastCheckoutScript } from '../../utils/fast-checkout';\nimport { getActiveCurrency } from '../../api/client';\nexport { productLoader } from './loader';\nexport type { ProductPageProps } from './types';\n\nasync function loader(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: ProductPageProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<ProductPageProps> {\n const data = await productLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as ProductPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: ProductPageProps): HeadDescriptor {\n if (!data?.product) {\n return {\n title: 'Products',\n description: 'Browse our products',\n };\n }\n const product = data.product;\n const storeName = ctx.settings?.store?.name ?? '';\n\n // Strip HTML and limit description to 160 chars\n const description = product.description?.replace(/<[^>]*>/g, '').slice(0, 160) ?? '';\n\n // Price valid until: 1 month from now\n const priceValidUntil = new Date();\n priceValidUntil.setMonth(priceValidUntil.getMonth() + 1);\n\n // Collect all product images\n const images = product.images?.map((img) => img.url).filter(Boolean) ?? [];\n if (product.image?.url && !images.includes(product.image.url)) {\n images.unshift(product.image.url);\n }\n\n // Build JSON-LD schema matching SchemaProductWidget.php\n const jsonLd: Record<string, unknown> = {\n '@context': 'https://schema.org',\n '@type': 'Product',\n name: product.name,\n description,\n sku: product.sku,\n image: images.length > 0 ? images : undefined,\n offers: {\n '@type': 'Offer',\n url: product.url,\n availability: product.is_available\n ? 'https://schema.org/InStock'\n : 'https://schema.org/OutOfStock',\n price: product.sale_price,\n priceCurrency: getActiveCurrency(product.currency),\n priceValidUntil: priceValidUntil.toISOString().split('T')[0],\n seller: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n },\n };\n\n // Add brand if exists\n if (product.brand) {\n jsonLd.brand = {\n '@type': 'Brand',\n name: product.brand.name,\n description: product.brand.description,\n logo: product.brand.logo,\n };\n }\n\n // Add aggregateRating and review if rating exists\n if (product.rating && product.rating.count > 0) {\n const ratingValue = product.rating.stars;\n jsonLd.aggregateRating = {\n '@type': 'AggregateRating',\n ratingCount: product.rating.count,\n ratingValue,\n };\n jsonLd.review = {\n '@type': 'Review',\n author: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n reviewRating: {\n '@type': 'Rating',\n bestRating: 5,\n ratingValue,\n },\n };\n }\n\n if (product.gtin && product.gtin.length === 8) {\n jsonLd.gtin8 = product.gtin;\n }\n\n if (product.mpn) {\n jsonLd.mpn = product.mpn;\n }\n\n // Twig: \"<product> | <store name>\", without the store meta title.\n const title = storeName ? `${product.name} | ${storeName}` : product.name;\n const base: HeadDescriptor = {\n title,\n appendStoreTitle: false,\n description,\n canonical: product.url,\n openGraph: {\n type: 'product',\n title,\n description,\n images: product.image?.url,\n url: product.url,\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description,\n images: product.image?.url,\n },\n jsonLd,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n // Quick-buy widget code, eager only here: the Buy Now button is above the fold on this page.\n // Other routes load it on idle from the body:end default hook, which also owns the\n // `#fast-checkout-js` marker `salla-add-product-button` checks for.\n scripts: ctx.settings?.store?.settings?.buy_now ? [fastCheckoutScript()] : [],\n };\n\n return base;\n}\n\nexport const Product = {\n id: RouteId.PRODUCT_SINGLE,\n loader,\n head,\n Component: ProductPage,\n} as const;\n"]}
@@ -1,11 +1,11 @@
1
- export { LogoutRedirect, accountRedirectLoader, pendingOrdersRedirectLoader, productsSourceRedirectLoader, ratingRedirectLoader, slugBrandRedirectLoader } from '../chunk-LWAJNEIM.js';
2
- import '../chunk-O3XMYDNC.js';
1
+ export { LogoutRedirect, accountRedirectLoader, pendingOrdersRedirectLoader, productsSourceRedirectLoader, ratingRedirectLoader, slugBrandRedirectLoader } from '../chunk-SIYINCXL.js';
2
+ import '../chunk-ZBGMIDDO.js';
3
3
  import '../chunk-OUW6WESU.js';
4
- import '../chunk-RB7RHMKJ.js';
4
+ import '../chunk-FCFIG4M3.js';
5
5
  import '../chunk-Z5M4YYWT.js';
6
- import '../chunk-ULF4LPVA.js';
7
- import '../chunk-7XAGU6CT.js';
8
- import '../chunk-4E6FD5W7.js';
6
+ import '../chunk-IURXJAIK.js';
7
+ import '../chunk-7IVHY4OR.js';
8
+ import '../chunk-EEL6OYAQ.js';
9
9
  import '../chunk-6K34BCUP.js';
10
10
  import '../chunk-T72DAX7R.js';
11
11
  import '../chunk-DF6FBKDN.js';
@@ -1,6 +1,6 @@
1
- import { buildHreflangAlternates } from '../chunk-P2PPBXHD.js';
1
+ import { buildHreflangAlternates } from '../chunk-M2MJKUQF.js';
2
2
  import { RouteId } from '../chunk-OUW6WESU.js';
3
- import '../chunk-4E6FD5W7.js';
3
+ import '../chunk-EEL6OYAQ.js';
4
4
  import { getTwilightContext } from '../chunk-6K34BCUP.js';
5
5
  import '../chunk-T72DAX7R.js';
6
6
  import { lazyComponent } from '../chunk-VYGA5AT5.js';
@@ -33,10 +33,10 @@ async function reviewsLoader() {
33
33
 
34
34
  // src/routes/testimonials/index.tsx
35
35
  var LazyTestimonialsPage = lazyComponent(
36
- () => import('../TestimonialsPage-L6VBZFLT.js').then((m) => ({ default: m.TestimonialsPage }))
36
+ () => import('../TestimonialsPage-GJJT7F5G.js').then((m) => ({ default: m.TestimonialsPage }))
37
37
  );
38
38
  var LazyReviewsPage = lazyComponent(
39
- () => import('../ReviewsPage-NAZWXVXT.js').then((m) => ({ default: m.ReviewsPage }))
39
+ () => import('../ReviewsPage-SCHVMKXV.js').then((m) => ({ default: m.ReviewsPage }))
40
40
  );
41
41
  var TestimonialsPage = LazyTestimonialsPage;
42
42
  var ReviewsPage = LazyReviewsPage;
@@ -1,12 +1,12 @@
1
- import { order } from '../chunk-VJA4DVVT.js';
2
- import { buildHreflangAlternates, storePageUrl } from '../chunk-P2PPBXHD.js';
3
- import '../chunk-O3XMYDNC.js';
1
+ import { order } from '../chunk-N2RAPPQ3.js';
2
+ import { buildHreflangAlternates, storePageUrl } from '../chunk-M2MJKUQF.js';
3
+ import '../chunk-ZBGMIDDO.js';
4
4
  import { RouteId } from '../chunk-OUW6WESU.js';
5
- import { getAuthToken, api } from '../chunk-RB7RHMKJ.js';
5
+ import { getAuthToken, api } from '../chunk-FCFIG4M3.js';
6
6
  import '../chunk-Z5M4YYWT.js';
7
- import '../chunk-ULF4LPVA.js';
8
- import '../chunk-7XAGU6CT.js';
9
- import '../chunk-4E6FD5W7.js';
7
+ import '../chunk-IURXJAIK.js';
8
+ import '../chunk-7IVHY4OR.js';
9
+ import '../chunk-EEL6OYAQ.js';
10
10
  import { getTwilightContext } from '../chunk-6K34BCUP.js';
11
11
  import '../chunk-T72DAX7R.js';
12
12
  import '../chunk-DF6FBKDN.js';
@@ -105,7 +105,7 @@ async function thankYouLoader({
105
105
 
106
106
  // src/routes/thank-you/index.tsx
107
107
  var LazyThankYouPage = lazyComponent(
108
- () => import('../ThankYouPage-O5U3V6J4.js').then((m) => ({ default: m.ThankYouPage }))
108
+ () => import('../ThankYouPage-ZAEZWSUK.js').then((m) => ({ default: m.ThankYouPage }))
109
109
  );
110
110
  var ThankYouPage = LazyThankYouPage;
111
111
  async function loader(ctx, extend) {
package/dist/skeleton.js CHANGED
@@ -1,53 +1,53 @@
1
1
  export { BlogSkeleton, BreadcrumbSkeleton, CartSkeleton, CustomerLayoutSkeleton, CustomerPageSkeleton, PageSkeleton, ProductCardSkeleton, ProductDetailSkeleton, ProductGridSkeleton, SkeletonPulse } from './chunk-N7CCSGZF.js';
2
- export { HomeSkeleton } from './chunk-W7CYFPGY.js';
2
+ export { HomeSkeleton } from './chunk-EFKVEYML.js';
3
3
  import './chunk-IXHM24Z4.js';
4
- import './chunk-UUHLRFXB.js';
5
- import './chunk-TXYLHBUH.js';
6
- import './chunk-ZUVBDALM.js';
7
- import './chunk-CAULDK3N.js';
8
- import './chunk-PVOJJ2BV.js';
4
+ import './chunk-LAO3MSKN.js';
5
+ import './chunk-AFFBCOH6.js';
6
+ import './chunk-BWKHA4ZD.js';
7
+ import './chunk-ZC4O472R.js';
8
+ import './chunk-64RDACOS.js';
9
9
  import './chunk-Y32RHCOH.js';
10
- import './chunk-O63WBEAC.js';
10
+ import './chunk-F5RU2UCE.js';
11
11
  import './chunk-Q77J3D2W.js';
12
- import './chunk-EMAAVDEK.js';
13
- import './chunk-5T4MJAUN.js';
14
- import './chunk-WAKCWE6P.js';
12
+ import './chunk-BY4DQTOG.js';
13
+ import './chunk-VBAFSMNX.js';
14
+ import './chunk-GMXNVBCD.js';
15
15
  import './chunk-X55R4VVK.js';
16
16
  import './chunk-YL6X3ZMG.js';
17
- import './chunk-IEKP3HYS.js';
17
+ import './chunk-MJQ3HFLJ.js';
18
18
  import './chunk-OXMUPNMH.js';
19
- import './chunk-5RBXCPG6.js';
19
+ import './chunk-CV32FSEL.js';
20
20
  import './chunk-VVZNW5CB.js';
21
- import './chunk-DPQIVZ4T.js';
21
+ import './chunk-VDPMCOHX.js';
22
22
  import './chunk-GD26FI4J.js';
23
- import './chunk-6YEE3VHL.js';
24
- import './chunk-P2PPBXHD.js';
25
- import './chunk-O3XMYDNC.js';
23
+ import './chunk-BRIRWS2Q.js';
24
+ import './chunk-M2MJKUQF.js';
25
+ import './chunk-ZBGMIDDO.js';
26
26
  import './chunk-OUW6WESU.js';
27
- import './chunk-JK45RUVV.js';
27
+ import './chunk-PPUV27YN.js';
28
28
  import './chunk-HI5V5X3S.js';
29
- import './chunk-2ZC5YGMI.js';
30
- import './chunk-PYXAPLNB.js';
29
+ import './chunk-XEHOZTER.js';
30
+ import './chunk-677OXNGV.js';
31
31
  import './chunk-6T55LXJL.js';
32
32
  import './chunk-Z653O7MX.js';
33
33
  import './chunk-ZCH7W7DZ.js';
34
- import './chunk-B57KIBQL.js';
34
+ import './chunk-GGQA6QBB.js';
35
35
  import './chunk-JWXJPJBO.js';
36
36
  import './chunk-CW625T2E.js';
37
37
  import './chunk-7V36I5GT.js';
38
38
  import './chunk-6WI7R2BD.js';
39
- import './chunk-5EAISVPV.js';
39
+ import './chunk-LFMCUQQ3.js';
40
40
  import './chunk-OAMIDZKW.js';
41
- import './chunk-BYGVKW3M.js';
41
+ import './chunk-UL2DRYH3.js';
42
42
  import './chunk-OQIIJRAS.js';
43
43
  import './chunk-V2ZDTY6H.js';
44
- import './chunk-PPFD456V.js';
44
+ import './chunk-URBOD4MX.js';
45
45
  import './chunk-5XDPAKF5.js';
46
46
  import './chunk-GCPEMNSU.js';
47
- import './chunk-RB7RHMKJ.js';
47
+ import './chunk-FCFIG4M3.js';
48
48
  import './chunk-Z5M4YYWT.js';
49
49
  import './chunk-TYNZ5B2B.js';
50
- import './chunk-LBZNLTBM.js';
50
+ import './chunk-AU2XMLTH.js';
51
51
  import './chunk-AXW67SY7.js';
52
52
  import './chunk-BYMOPN2S.js';
53
53
  import './chunk-SKLEJJ6M.js';
@@ -55,10 +55,10 @@ import './chunk-6BZ5TKEV.js';
55
55
  import './chunk-FZKRSGLP.js';
56
56
  import './chunk-KYMWEUN2.js';
57
57
  import './chunk-YA6ABQB7.js';
58
- import './chunk-R7QCNL62.js';
59
- import './chunk-ULF4LPVA.js';
60
- import './chunk-7XAGU6CT.js';
61
- import './chunk-4E6FD5W7.js';
58
+ import './chunk-REBJQRQF.js';
59
+ import './chunk-IURXJAIK.js';
60
+ import './chunk-7IVHY4OR.js';
61
+ import './chunk-EEL6OYAQ.js';
62
62
  import './chunk-6K34BCUP.js';
63
63
  import './chunk-T72DAX7R.js';
64
64
  import './chunk-DF6FBKDN.js';
@@ -1,15 +1,15 @@
1
- import { category } from './chunk-5NUCGUTE.js';
2
- import { blog } from './chunk-34L65JGK.js';
3
- import { brand } from './chunk-JSAWLWUN.js';
4
- import { product } from './chunk-ZUVBDALM.js';
1
+ import { category } from './chunk-BIVBSVWR.js';
2
+ import { blog } from './chunk-I5GFTVR2.js';
3
+ import { brand } from './chunk-5VTVPQQB.js';
4
+ import { product } from './chunk-BWKHA4ZD.js';
5
5
  import { DEV_LOOKUP_BUDGET_MS } from './chunk-OXMUPNMH.js';
6
- import './chunk-O3XMYDNC.js';
6
+ import './chunk-ZBGMIDDO.js';
7
7
  import './chunk-OUW6WESU.js';
8
- import './chunk-RB7RHMKJ.js';
8
+ import './chunk-FCFIG4M3.js';
9
9
  import './chunk-Z5M4YYWT.js';
10
- import './chunk-ULF4LPVA.js';
11
- import './chunk-7XAGU6CT.js';
12
- import './chunk-4E6FD5W7.js';
10
+ import './chunk-IURXJAIK.js';
11
+ import './chunk-7IVHY4OR.js';
12
+ import './chunk-EEL6OYAQ.js';
13
13
  import './chunk-6K34BCUP.js';
14
14
  import './chunk-T72DAX7R.js';
15
15
  import './chunk-DF6FBKDN.js';
@@ -111,5 +111,5 @@ function lookupInStore(source, query) {
111
111
  }
112
112
 
113
113
  export { lookupInStore };
114
- //# sourceMappingURL=store-lookup-S6JUSKNH.js.map
115
- //# sourceMappingURL=store-lookup-S6JUSKNH.js.map
114
+ //# sourceMappingURL=store-lookup-AJT3ZHTS.js.map
115
+ //# sourceMappingURL=store-lookup-AJT3ZHTS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dev/store-lookup.ts"],"names":["categories"],"mappings":"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","file":"store-lookup-S6JUSKNH.js","sourcesContent":["/**\n * Runs in the editor's frame (the storefront), which has the engine's API\n * client set up for the dev store: answers the editor's pickers with the real\n * store's products, categories, brands and blog. Loaded with `import()` on the\n * first lookup, so a storefront never carries it.\n *\n * Each item's `data` is what a block receives for it, in the API's shape: a\n * product block reads only the ids and fetches the rest, while categories and\n * brands are drawn from what is saved.\n */\n\nimport { product } from '../api/product';\nimport { category } from '../api/category';\nimport { brand } from '../api/brands';\nimport { blog } from '../api/blog';\nimport type { Category } from '../types';\nimport { DEV_LOOKUP_BUDGET_MS, type DevLookupItem, type DevLookupSource } from './schema-types';\n\n/** Enough to choose from; a search narrows it further. */\nconst PER_PAGE = 20;\n/** How far a paged list is searched before giving up, so a big store can't stall the picker. */\nconst MAX_PAGES = 10;\n\ninterface Page<T> {\n items: T[];\n next: string | null;\n}\n\n/**\n * The matching items of a paged list, read page after page until there are\n * enough, the pages run out, or the time budget is spent: a brand or article on\n * page three is still found, and what was found so far always reaches the\n * editor before it stops waiting (`DEV_LOOKUP_BUDGET_MS` < its timeout).\n */\nasync function collect<T>(\n fetchPage: (page: number, cursor: string | null) => Promise<Page<T>>,\n keep: (item: T) => boolean\n): Promise<T[]> {\n const deadline = Date.now() + DEV_LOOKUP_BUDGET_MS;\n const found: T[] = [];\n let cursor: string | null = null;\n for (let page = 1; page <= MAX_PAGES; page += 1) {\n const { items, next } = await fetchPage(page, cursor);\n found.push(...items.filter(keep));\n if (found.length >= PER_PAGE || !next || Date.now() >= deadline) break;\n cursor = next;\n }\n return found.slice(0, PER_PAGE);\n}\n\nfunction matches(name: string, query: string): boolean {\n return !query || name.toLowerCase().includes(query.toLowerCase());\n}\n\n/** Categories with their subcategories, flattened, parents first. */\nfunction flatten(categories: Category[]): Category[] {\n return categories.flatMap((c) => [c, ...flatten(c.sub_categories ?? [])]);\n}\n\nasync function products(query: string): Promise<DevLookupItem[]> {\n const { items } = await product.list({\n source: query ? 'search' : 'latest',\n ...(query ? { keyword: query } : {}),\n perPage: PER_PAGE,\n });\n // List responses send the id as a numeric string; the block reads a number. Use it for both.\n return items.map((p) => ({\n id: Number(p.id),\n name: p.name,\n image: p.image?.url,\n url: p.url,\n data: { id: Number(p.id), name: p.name, url: p.url, image: p.image?.url ?? null },\n }));\n}\n\nasync function categories(query: string): Promise<DevLookupItem[]> {\n return flatten(await category.list())\n .filter((c) => matches(c.name, query))\n .slice(0, PER_PAGE)\n .map((c) => ({\n id: c.id,\n name: c.name,\n image: c.image ?? undefined,\n url: c.url,\n data: { id: c.id, name: c.name, url: c.url, image: c.image ?? null, icon: c.icon ?? null },\n }));\n}\n\nasync function brands(query: string): Promise<DevLookupItem[]> {\n const found = await collect(\n (page) => brand.list(page),\n (b) => matches(b.name, query)\n );\n return found.map((b) => ({\n id: b.id,\n name: b.name,\n image: b.logo,\n url: b.url,\n data: { id: b.id, name: b.name, url: b.url, logo: b.logo, banner: b.banner ?? null },\n }));\n}\n\nasync function blogArticles(query: string): Promise<DevLookupItem[]> {\n const found = await collect(\n async (_page, cursor) => {\n const { data, cursor: pages } = await blog.articles.list(cursor ? { cursor } : undefined);\n return { items: data, next: pages?.next ?? null };\n },\n (a) => matches(a.name, query)\n );\n return found.map((a) => ({\n id: a.id,\n name: a.name,\n image: a.image,\n url: a.url,\n data: { id: a.id, name: a.name, url: a.url },\n }));\n}\n\nasync function blogCategories(query: string): Promise<DevLookupItem[]> {\n const { categories: list } = await blog.get();\n return list\n .filter((c) => matches(c.name, query))\n .slice(0, PER_PAGE)\n .map((c) => ({\n id: c.id,\n name: c.name,\n url: c.url,\n data: { id: c.id, name: c.name, url: c.url },\n }));\n}\n\nconst LOOKUPS: Record<DevLookupSource, (query: string) => Promise<DevLookupItem[]>> = {\n products,\n categories,\n brands,\n blog_articles: blogArticles,\n blog_categories: blogCategories,\n};\n\nexport function lookupInStore(source: DevLookupSource, query: string): Promise<DevLookupItem[]> {\n const lookup = LOOKUPS[source];\n if (!lookup) return Promise.reject(new Error(`no lookup for ${source}`));\n return lookup(query.trim());\n}\n"]}
1
+ {"version":3,"sources":["../src/dev/store-lookup.ts"],"names":["categories"],"mappings":"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","file":"store-lookup-AJT3ZHTS.js","sourcesContent":["/**\n * Runs in the editor's frame (the storefront), which has the engine's API\n * client set up for the dev store: answers the editor's pickers with the real\n * store's products, categories, brands and blog. Loaded with `import()` on the\n * first lookup, so a storefront never carries it.\n *\n * Each item's `data` is what a block receives for it, in the API's shape: a\n * product block reads only the ids and fetches the rest, while categories and\n * brands are drawn from what is saved.\n */\n\nimport { product } from '../api/product';\nimport { category } from '../api/category';\nimport { brand } from '../api/brands';\nimport { blog } from '../api/blog';\nimport type { Category } from '../types';\nimport { DEV_LOOKUP_BUDGET_MS, type DevLookupItem, type DevLookupSource } from './schema-types';\n\n/** Enough to choose from; a search narrows it further. */\nconst PER_PAGE = 20;\n/** How far a paged list is searched before giving up, so a big store can't stall the picker. */\nconst MAX_PAGES = 10;\n\ninterface Page<T> {\n items: T[];\n next: string | null;\n}\n\n/**\n * The matching items of a paged list, read page after page until there are\n * enough, the pages run out, or the time budget is spent: a brand or article on\n * page three is still found, and what was found so far always reaches the\n * editor before it stops waiting (`DEV_LOOKUP_BUDGET_MS` < its timeout).\n */\nasync function collect<T>(\n fetchPage: (page: number, cursor: string | null) => Promise<Page<T>>,\n keep: (item: T) => boolean\n): Promise<T[]> {\n const deadline = Date.now() + DEV_LOOKUP_BUDGET_MS;\n const found: T[] = [];\n let cursor: string | null = null;\n for (let page = 1; page <= MAX_PAGES; page += 1) {\n const { items, next } = await fetchPage(page, cursor);\n found.push(...items.filter(keep));\n if (found.length >= PER_PAGE || !next || Date.now() >= deadline) break;\n cursor = next;\n }\n return found.slice(0, PER_PAGE);\n}\n\nfunction matches(name: string, query: string): boolean {\n return !query || name.toLowerCase().includes(query.toLowerCase());\n}\n\n/** Categories with their subcategories, flattened, parents first. */\nfunction flatten(categories: Category[]): Category[] {\n return categories.flatMap((c) => [c, ...flatten(c.sub_categories ?? [])]);\n}\n\nasync function products(query: string): Promise<DevLookupItem[]> {\n const { items } = await product.list({\n source: query ? 'search' : 'latest',\n ...(query ? { keyword: query } : {}),\n perPage: PER_PAGE,\n });\n // List responses send the id as a numeric string; the block reads a number. Use it for both.\n return items.map((p) => ({\n id: Number(p.id),\n name: p.name,\n image: p.image?.url,\n url: p.url,\n data: { id: Number(p.id), name: p.name, url: p.url, image: p.image?.url ?? null },\n }));\n}\n\nasync function categories(query: string): Promise<DevLookupItem[]> {\n return flatten(await category.list())\n .filter((c) => matches(c.name, query))\n .slice(0, PER_PAGE)\n .map((c) => ({\n id: c.id,\n name: c.name,\n image: c.image ?? undefined,\n url: c.url,\n data: { id: c.id, name: c.name, url: c.url, image: c.image ?? null, icon: c.icon ?? null },\n }));\n}\n\nasync function brands(query: string): Promise<DevLookupItem[]> {\n const found = await collect(\n (page) => brand.list(page),\n (b) => matches(b.name, query)\n );\n return found.map((b) => ({\n id: b.id,\n name: b.name,\n image: b.logo,\n url: b.url,\n data: { id: b.id, name: b.name, url: b.url, logo: b.logo, banner: b.banner ?? null },\n }));\n}\n\nasync function blogArticles(query: string): Promise<DevLookupItem[]> {\n const found = await collect(\n async (_page, cursor) => {\n const { data, cursor: pages } = await blog.articles.list(cursor ? { cursor } : undefined);\n return { items: data, next: pages?.next ?? null };\n },\n (a) => matches(a.name, query)\n );\n return found.map((a) => ({\n id: a.id,\n name: a.name,\n image: a.image,\n url: a.url,\n data: { id: a.id, name: a.name, url: a.url },\n }));\n}\n\nasync function blogCategories(query: string): Promise<DevLookupItem[]> {\n const { categories: list } = await blog.get();\n return list\n .filter((c) => matches(c.name, query))\n .slice(0, PER_PAGE)\n .map((c) => ({\n id: c.id,\n name: c.name,\n url: c.url,\n data: { id: c.id, name: c.name, url: c.url },\n }));\n}\n\nconst LOOKUPS: Record<DevLookupSource, (query: string) => Promise<DevLookupItem[]>> = {\n products,\n categories,\n brands,\n blog_articles: blogArticles,\n blog_categories: blogCategories,\n};\n\nexport function lookupInStore(source: DevLookupSource, query: string): Promise<DevLookupItem[]> {\n const lookup = LOOKUPS[source];\n if (!lookup) return Promise.reject(new Error(`no lookup for ${source}`));\n return lookup(query.trim());\n}\n"]}
@@ -5,7 +5,9 @@
5
5
  * Uses TanStack Router's optional path parameter syntax /{-$locale}:
6
6
  * - /{-$locale}/cart matches both /cart and /ar/cart
7
7
  *
8
- * beforeLoad: validates the locale format when present.
8
+ * beforeLoad: validates the locale format when present. A first segment that is not a locale
9
+ * gets the fallback locale, except on a store whose addresses carry none: there it is a page
10
+ * no route has, and the loader would strip the locale straight off again.
9
11
  * loader: checks store.settings.is_multilingual (and the number of languages) and redirects
10
12
  * accordingly. On a Salla shared host the address has no locale, so it redirects nothing.
11
13
  *
@@ -1 +1 @@
1
- {"version":3,"file":"locale-wrapper.d.ts","sourceRoot":"","sources":["../../../src/tanstack/templates/locale-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CA4FzE"}
1
+ {"version":3,"file":"locale-wrapper.d.ts","sourceRoot":"","sources":["../../../src/tanstack/templates/locale-wrapper.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CA8FzE"}
package/dist/tanstack.js CHANGED
@@ -1,33 +1,33 @@
1
- export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-FL3OK7AQ.js';
2
- import { requestHostOf } from './chunk-QKKEBQ57.js';
3
- export { TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter } from './chunk-QKKEBQ57.js';
1
+ export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-4SZNUX4K.js';
2
+ import { requestHostOf } from './chunk-IO4CVUL5.js';
3
+ export { TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter } from './chunk-IO4CVUL5.js';
4
4
  import './chunk-Z4Y55HWX.js';
5
- export { tanstackHeadAdapter as head, withHead } from './chunk-TEAYGNHT.js';
5
+ export { tanstackHeadAdapter as head, withHead } from './chunk-CIJVNUNZ.js';
6
6
  import { CRITICAL_STYLE_HREF } from './chunk-4FJGZQD3.js';
7
- import { readNativeAppHeaders } from './chunk-OOZQVX7C.js';
8
- import './chunk-KJ7NG3ZH.js';
9
- import './chunk-5LI536P6.js';
10
- import './chunk-PZP3372I.js';
11
- import './chunk-ZUVBDALM.js';
12
- import { rootHead } from './chunk-WAKCWE6P.js';
7
+ import { readNativeAppHeaders } from './chunk-O76H6TDP.js';
8
+ import './chunk-SXJEZEGN.js';
9
+ import './chunk-I3KAWUPG.js';
10
+ import './chunk-KNY2ZZ5M.js';
11
+ import './chunk-BWKHA4ZD.js';
12
+ import { rootHead } from './chunk-GMXNVBCD.js';
13
13
  import './chunk-X55R4VVK.js';
14
- import './chunk-5RBXCPG6.js';
15
- import './chunk-DPQIVZ4T.js';
14
+ import './chunk-CV32FSEL.js';
15
+ import './chunk-VDPMCOHX.js';
16
16
  import './chunk-GD26FI4J.js';
17
- import { maintenanceEvidence, MAINTENANCE_EVIDENCE_HEADER, maintenanceEvidenceHeader } from './chunk-6YEE3VHL.js';
18
- import './chunk-P2PPBXHD.js';
19
- import './chunk-O3XMYDNC.js';
17
+ import { maintenanceEvidence, MAINTENANCE_EVIDENCE_HEADER, maintenanceEvidenceHeader } from './chunk-BRIRWS2Q.js';
18
+ import './chunk-M2MJKUQF.js';
19
+ import './chunk-ZBGMIDDO.js';
20
20
  import './chunk-OUW6WESU.js';
21
21
  import './chunk-JWXJPJBO.js';
22
22
  export { mergeDocumentDescriptors as mergeAttrs } from './chunk-CW625T2E.js';
23
- import './chunk-PPFD456V.js';
24
- import './chunk-RB7RHMKJ.js';
23
+ import './chunk-URBOD4MX.js';
24
+ import './chunk-FCFIG4M3.js';
25
25
  import './chunk-Z5M4YYWT.js';
26
26
  import './chunk-TYNZ5B2B.js';
27
27
  import './chunk-BYMOPN2S.js';
28
- import './chunk-ULF4LPVA.js';
29
- import './chunk-7XAGU6CT.js';
30
- import { AUTH_TOKEN_COOKIE_NAME, extractTokenFromCookies, resolveRequestScope, resolveAddressedStore, STORE_BASE_HEADER, resolveRequestVersionId, legacyLocaleRedirectHref } from './chunk-4E6FD5W7.js';
28
+ import './chunk-IURXJAIK.js';
29
+ import './chunk-7IVHY4OR.js';
30
+ import { AUTH_TOKEN_COOKIE_NAME, extractTokenFromCookies, resolveRequestScope, resolveAddressedStore, STORE_BASE_HEADER, resolveRequestVersionId, legacyLocaleRedirectHref } from './chunk-EEL6OYAQ.js';
31
31
  import { runWithTwilightContext, getTwilightContext } from './chunk-6K34BCUP.js';
32
32
  export { getTwilightContext, runWithTwilightContext, updateTwilightContext } from './chunk-6K34BCUP.js';
33
33
  import './chunk-T72DAX7R.js';
@@ -1,5 +1,5 @@
1
- export { buildBaseHead, buildHreflangAlternates, localeToOgLocale, storePageUrl } from '../chunk-P2PPBXHD.js';
2
- import '../chunk-4E6FD5W7.js';
1
+ export { buildBaseHead, buildHreflangAlternates, localeToOgLocale, storePageUrl } from '../chunk-M2MJKUQF.js';
2
+ import '../chunk-EEL6OYAQ.js';
3
3
  import '../chunk-6K34BCUP.js';
4
4
  import '../chunk-T72DAX7R.js';
5
5
  import '../chunk-DGUM43GV.js';
@@ -150,6 +150,12 @@ export declare function resolveRequestStoreId(url: string, cookieHeader: string
150
150
  * store called `ar`, sent to `/ar/…`, would find no store there and be sent again.
151
151
  */
152
152
  export declare function isStoreBaseSegment(value: string | null | undefined): value is string;
153
+ /**
154
+ * Whether the dispatcher's {@link STORE_BASE_HEADER} names a store. The same
155
+ * exclusions as {@link isStoreBaseSegment} (a language, a root file), with the
156
+ * dispatcher's wider set of usernames.
157
+ */
158
+ export declare function isDispatchedStoreBase(value: string | null | undefined): value is string;
153
159
  /**
154
160
  * The store the first segment of this request's path names, on a host permitted
155
161
  * to name one.
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../src/utils/cookies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../src/utils/cookies.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAC9C,eAAO,MAAM,iBAAiB,UAAU,CAAC;AACzC,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAC7C,iHAAiH;AACjH,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAC7C,mFAAmF;AACnF,eAAO,MAAM,cAAc,SAAS,CAAC;AACrC,mFAAmF;AACnF,eAAO,MAAM,uBAAuB,QAAqB,CAAC;AAE1D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAEhD,6EAA6E;AAC7E,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAElD,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAmB5C,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAE5E;AAED,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAEpF;AAED,0FAA0F;AAC1F,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAEtF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAA6B,CAAC;AAW1E,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOpD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAGtE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE5E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,MAAM,GAAG,IAAI,CAEf;AAgBD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAOpF;AAkBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAOvF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,MAAM,GAAG,IAAI,CAaf;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,YAAY,CAMd;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,2EAA2E;AAC3E,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD;;;;OAIG;IACH,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,mBAAmB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC7C,cAAc,CAKhB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,MAAM,GAAG,IAAI,CAEf;AA2BD;;;;GAIG;AACH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAI/E;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C;AAED,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,CA2Bf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAeD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAQvF;AAED,oGAAoG;AACpG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAE9E;AAED,kGAAkG;AAClG,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAErF;AAED,yDAAyD;AACzD,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAEpF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,IAAI,WAAW,GAAG,IAAI,GAAG,SAAS,CAO7D;AAUD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAuBnE;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAMhG;AAED,oFAAoF;AACpF,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAG1D;AAED,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,QAAqB,CAAC;AAEvD,eAAO,MAAM,SAAS,GAAI,GAAG,WAAW,GAAG,IAAI,EAAE,GAAG,WAAW,GAAG,IAAI,KAAG,OAChC,CAAC;AAE1C;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAYnE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAGzC"}
@@ -1,17 +1,17 @@
1
1
  export { stripUnsafeHtml } from '../chunk-RUHSV4Z6.js';
2
2
  export { formatSallaPlural } from '../chunk-BT6HEEAP.js';
3
- export { dispatchRouteChanged } from '../chunk-PZP3372I.js';
3
+ export { dispatchRouteChanged } from '../chunk-KNY2ZZ5M.js';
4
4
  export { sortOptions } from '../chunk-3LZJXKVO.js';
5
5
  export { color } from '../chunk-VVZNW5CB.js';
6
- export { applyAppScopeMocks, registerThemeHookSlots } from '../chunk-DPQIVZ4T.js';
6
+ export { applyAppScopeMocks, registerThemeHookSlots } from '../chunk-VDPMCOHX.js';
7
7
  export { mergeHead, resolveHead, setHeadAdapter } from '../chunk-GD26FI4J.js';
8
- export { buildBaseHead, buildHreflangAlternates, localeToOgLocale } from '../chunk-P2PPBXHD.js';
8
+ export { buildBaseHead, buildHreflangAlternates, localeToOgLocale } from '../chunk-M2MJKUQF.js';
9
9
  export { asset, cdn, isPlaceholder } from '../chunk-ZCH7W7DZ.js';
10
10
  export { mergeDocumentDescriptors, mergeElementAttrs, normalizeClasses, syncAttrsToElement, toReactProps } from '../chunk-CW625T2E.js';
11
- import '../chunk-RB7RHMKJ.js';
11
+ import '../chunk-FCFIG4M3.js';
12
12
  import '../chunk-Z5M4YYWT.js';
13
- export { getSallaSDK, getStoreIdentifier, onSallaEvent, whenSallaLoaded, whenSallaReady } from '../chunk-7XAGU6CT.js';
14
- export { AUTH_TOKEN_COOKIE_NAME, clearAuthTokenCookie, extractTokenFromCookies } from '../chunk-4E6FD5W7.js';
13
+ export { getSallaSDK, getStoreIdentifier, onSallaEvent, whenSallaLoaded, whenSallaReady } from '../chunk-7IVHY4OR.js';
14
+ export { AUTH_TOKEN_COOKIE_NAME, clearAuthTokenCookie, extractTokenFromCookies } from '../chunk-EEL6OYAQ.js';
15
15
  import '../chunk-6K34BCUP.js';
16
16
  import '../chunk-T72DAX7R.js';
17
17
  import '../chunk-DGUM43GV.js';