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

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 (226) hide show
  1. package/dist/{AddToCartForm-HOBSTMWX.js → AddToCartForm-SOC5GBBM.js} +3 -3
  2. package/dist/{AddToCartForm-HOBSTMWX.js.map → AddToCartForm-SOC5GBBM.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-56OY5GCN.js → BlogAuthorPage-TTL4SIQA.js} +16 -16
  4. package/dist/{BlogAuthorPage-56OY5GCN.js.map → BlogAuthorPage-TTL4SIQA.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-HW7A6RNL.js → BlogCategoryPage-RQ3VXFKP.js} +16 -16
  6. package/dist/{BlogCategoryPage-HW7A6RNL.js.map → BlogCategoryPage-RQ3VXFKP.js.map} +1 -1
  7. package/dist/{BlogPage-RRHKP3GP.js → BlogPage-TAGSF4PK.js} +14 -14
  8. package/dist/{BlogPage-RRHKP3GP.js.map → BlogPage-TAGSF4PK.js.map} +1 -1
  9. package/dist/{BlogSinglePage-STNMFQHX.js → BlogSinglePage-WFECBPGR.js} +14 -14
  10. package/dist/{BlogSinglePage-STNMFQHX.js.map → BlogSinglePage-WFECBPGR.js.map} +1 -1
  11. package/dist/{BlogTagPage-YD3EPTQY.js → BlogTagPage-LEUUDNOX.js} +16 -16
  12. package/dist/{BlogTagPage-YD3EPTQY.js.map → BlogTagPage-LEUUDNOX.js.map} +1 -1
  13. package/dist/{BrandsPage-KJFB4QBN.js → BrandsPage-3DKJL2UC.js} +15 -15
  14. package/dist/{BrandsPage-KJFB4QBN.js.map → BrandsPage-3DKJL2UC.js.map} +1 -1
  15. package/dist/{Breadcrumb-QKHYTTFB.js → Breadcrumb-CZUWG3RH.js} +14 -14
  16. package/dist/{Breadcrumb-QKHYTTFB.js.map → Breadcrumb-CZUWG3RH.js.map} +1 -1
  17. package/dist/{CartItem-DCCYGMRI.js → CartItem-ZZZ34FK2.js} +14 -14
  18. package/dist/{CartItem-DCCYGMRI.js.map → CartItem-ZZZ34FK2.js.map} +1 -1
  19. package/dist/{CartSummary-DAAYDRFS.js → CartSummary-YICFP2HG.js} +14 -14
  20. package/dist/{CartSummary-DAAYDRFS.js.map → CartSummary-YICFP2HG.js.map} +1 -1
  21. package/dist/{Copyright-GL5Q4FTN.js → Copyright-N7AWWM6R.js} +3 -3
  22. package/dist/{Copyright-GL5Q4FTN.js.map → Copyright-N7AWWM6R.js.map} +1 -1
  23. package/dist/{CustomerLayout-D7HC4G7V.js → CustomerLayout-CDARXLTX.js} +14 -14
  24. package/dist/{CustomerLayout-D7HC4G7V.js.map → CustomerLayout-CDARXLTX.js.map} +1 -1
  25. package/dist/{Footer-3NQWLPAA.js → Footer-UAEQ5SBA.js} +4 -4
  26. package/dist/{Footer-3NQWLPAA.js.map → Footer-UAEQ5SBA.js.map} +1 -1
  27. package/dist/{Header-SCR46P4B.js → Header-TNV53WAC.js} +8 -8
  28. package/dist/{Header-SCR46P4B.js.map → Header-TNV53WAC.js.map} +1 -1
  29. package/dist/{LatestProducts-4UML6BNG.js → LatestProducts-CPULMFWH.js} +16 -16
  30. package/dist/{LatestProducts-4UML6BNG.js.map → LatestProducts-CPULMFWH.js.map} +1 -1
  31. package/dist/{LoyaltyPage-CQIUT7MD.js → LoyaltyPage-YYYXZOYO.js} +14 -14
  32. package/dist/{LoyaltyPage-CQIUT7MD.js.map → LoyaltyPage-YYYXZOYO.js.map} +1 -1
  33. package/dist/{LoyaltyPointsPage-ZOZFDRZT.js → LoyaltyPointsPage-66N76CP7.js} +6 -6
  34. package/dist/{LoyaltyPointsPage-ZOZFDRZT.js.map → LoyaltyPointsPage-66N76CP7.js.map} +1 -1
  35. package/dist/{MainMenu-YLCB4MT7.js → MainMenu-7WKMQYJE.js} +5 -5
  36. package/dist/{MainMenu-YLCB4MT7.js.map → MainMenu-7WKMQYJE.js.map} +1 -1
  37. package/dist/{MasterLayout-BDDKPLS6.js → MasterLayout-NXS4567C.js} +14 -14
  38. package/dist/{MasterLayout-BDDKPLS6.js.map → MasterLayout-NXS4567C.js.map} +1 -1
  39. package/dist/{MobileMenu-S5LB622I.js → MobileMenu-2ISSFTOL.js} +15 -15
  40. package/dist/{MobileMenu-S5LB622I.js.map → MobileMenu-2ISSFTOL.js.map} +1 -1
  41. package/dist/{NotificationsPage-FPF7UU3Q.js → NotificationsPage-GRLVJK4Q.js} +14 -14
  42. package/dist/{NotificationsPage-FPF7UU3Q.js.map → NotificationsPage-GRLVJK4Q.js.map} +1 -1
  43. package/dist/{OrderSinglePage-M37ROUBX.js → OrderSinglePage-XEX3ZDU4.js} +15 -15
  44. package/dist/{OrderSinglePage-M37ROUBX.js.map → OrderSinglePage-XEX3ZDU4.js.map} +1 -1
  45. package/dist/{OrdersPage-GIZFTPQ7.js → OrdersPage-7H5NZQYQ.js} +14 -14
  46. package/dist/{OrdersPage-GIZFTPQ7.js.map → OrdersPage-7H5NZQYQ.js.map} +1 -1
  47. package/dist/{PageSingle-EQD5Y3L5.js → PageSingle-Q6RGRZEC.js} +3 -3
  48. package/dist/{PageSingle-EQD5Y3L5.js.map → PageSingle-Q6RGRZEC.js.map} +1 -1
  49. package/dist/{ProductDetails-53BXVF37.js → ProductDetails-6W6YIGUS.js} +4 -4
  50. package/dist/{ProductDetails-53BXVF37.js.map → ProductDetails-6W6YIGUS.js.map} +1 -1
  51. package/dist/{ProfilePage-6GJXTBFN.js → ProfilePage-P5NHML4X.js} +14 -14
  52. package/dist/{ProfilePage-6GJXTBFN.js.map → ProfilePage-P5NHML4X.js.map} +1 -1
  53. package/dist/{ReviewsPage-SCHVMKXV.js → ReviewsPage-D2EPXJJZ.js} +3 -3
  54. package/dist/{ReviewsPage-SCHVMKXV.js.map → ReviewsPage-D2EPXJJZ.js.map} +1 -1
  55. package/dist/{SeoCartWidget-IUXLYOTC.js → SeoCartWidget-VMNWM3FM.js} +14 -14
  56. package/dist/{SeoCartWidget-IUXLYOTC.js.map → SeoCartWidget-VMNWM3FM.js.map} +1 -1
  57. package/dist/{SettingsPage-2TKL2COF.js → SettingsPage-JYEI7C4T.js} +14 -14
  58. package/dist/{SettingsPage-2TKL2COF.js.map → SettingsPage-JYEI7C4T.js.map} +1 -1
  59. package/dist/{StoreClosedNotification-HHOQXT6N.js → StoreClosedNotification-U36UX33X.js} +15 -15
  60. package/dist/{StoreClosedNotification-HHOQXT6N.js.map → StoreClosedNotification-U36UX33X.js.map} +1 -1
  61. package/dist/{TestimonialsPage-GJJT7F5G.js → TestimonialsPage-O2FN7CPT.js} +3 -3
  62. package/dist/{TestimonialsPage-GJJT7F5G.js.map → TestimonialsPage-O2FN7CPT.js.map} +1 -1
  63. package/dist/{ThankYouPage-ZAEZWSUK.js → ThankYouPage-UEHR5653.js} +14 -14
  64. package/dist/{ThankYouPage-ZAEZWSUK.js.map → ThankYouPage-UEHR5653.js.map} +1 -1
  65. package/dist/{WalletPage-74LAUONG.js → WalletPage-5X37XHOU.js} +15 -15
  66. package/dist/{WalletPage-74LAUONG.js.map → WalletPage-5X37XHOU.js.map} +1 -1
  67. package/dist/{WebMcpTools-J6HCO5B6.js → WebMcpTools-6ZN6KROP.js} +5 -5
  68. package/dist/{WebMcpTools-J6HCO5B6.js.map → WebMcpTools-6ZN6KROP.js.map} +1 -1
  69. package/dist/{WishlistPage-SV55V5CP.js → WishlistPage-2JCIUJEP.js} +16 -16
  70. package/dist/{WishlistPage-SV55V5CP.js.map → WishlistPage-2JCIUJEP.js.map} +1 -1
  71. package/dist/api/advertisement.js +2 -2
  72. package/dist/api/apps.js +2 -2
  73. package/dist/api/blog.js +3 -3
  74. package/dist/api/brands.js +3 -3
  75. package/dist/api/cart.js +3 -3
  76. package/dist/api/category.js +3 -3
  77. package/dist/api/client.js +1 -1
  78. package/dist/api/home.js +2 -2
  79. package/dist/api/loyalty.js +3 -3
  80. package/dist/api/menu.js +2 -2
  81. package/dist/api/notification.js +2 -2
  82. package/dist/api/order.js +3 -3
  83. package/dist/api/page.js +3 -3
  84. package/dist/api/product.js +3 -3
  85. package/dist/api/profile.js +1 -1
  86. package/dist/api/store.js +2 -2
  87. package/dist/api/translations.js +2 -2
  88. package/dist/api/user.js +2 -2
  89. package/dist/api/wallet.js +2 -2
  90. package/dist/api/wishlist.js +4 -4
  91. package/dist/{chunk-UL2DRYH3.js → chunk-2BRLDR24.js} +3 -3
  92. package/dist/{chunk-UL2DRYH3.js.map → chunk-2BRLDR24.js.map} +1 -1
  93. package/dist/{chunk-MJQ3HFLJ.js → chunk-3YMCWKFT.js} +3 -3
  94. package/dist/{chunk-MJQ3HFLJ.js.map → chunk-3YMCWKFT.js.map} +1 -1
  95. package/dist/{chunk-VBAFSMNX.js → chunk-46CWPZSI.js} +3 -3
  96. package/dist/{chunk-VBAFSMNX.js.map → chunk-46CWPZSI.js.map} +1 -1
  97. package/dist/{chunk-64RDACOS.js → chunk-4FPHFWEU.js} +4 -4
  98. package/dist/{chunk-64RDACOS.js.map → chunk-4FPHFWEU.js.map} +1 -1
  99. package/dist/{chunk-I3KAWUPG.js → chunk-4UPADKLB.js} +4 -4
  100. package/dist/{chunk-I3KAWUPG.js.map → chunk-4UPADKLB.js.map} +1 -1
  101. package/dist/{chunk-A2SS3TNE.js → chunk-4XT63VFN.js} +3 -3
  102. package/dist/{chunk-A2SS3TNE.js.map → chunk-4XT63VFN.js.map} +1 -1
  103. package/dist/{chunk-EAQAPYYU.js → chunk-53ULTYEF.js} +7 -7
  104. package/dist/{chunk-EAQAPYYU.js.map → chunk-53ULTYEF.js.map} +1 -1
  105. package/dist/{chunk-XEHOZTER.js → chunk-5WVJYMDS.js} +3 -3
  106. package/dist/{chunk-XEHOZTER.js.map → chunk-5WVJYMDS.js.map} +1 -1
  107. package/dist/{chunk-F5RU2UCE.js → chunk-6REUUGFM.js} +15 -15
  108. package/dist/{chunk-F5RU2UCE.js.map → chunk-6REUUGFM.js.map} +1 -1
  109. package/dist/{chunk-R4LA6IMS.js → chunk-6VBQ6HJO.js} +3 -3
  110. package/dist/{chunk-R4LA6IMS.js.map → chunk-6VBQ6HJO.js.map} +1 -1
  111. package/dist/{chunk-OZRGUVHQ.js → chunk-7RM7W4G7.js} +4 -4
  112. package/dist/{chunk-OZRGUVHQ.js.map → chunk-7RM7W4G7.js.map} +1 -1
  113. package/dist/{chunk-LAO3MSKN.js → chunk-7TEJBYGD.js} +7 -7
  114. package/dist/{chunk-LAO3MSKN.js.map → chunk-7TEJBYGD.js.map} +1 -1
  115. package/dist/{chunk-LJXWCGBH.js → chunk-A5QIBUZ5.js} +7 -7
  116. package/dist/{chunk-LJXWCGBH.js.map → chunk-A5QIBUZ5.js.map} +1 -1
  117. package/dist/{chunk-UBRG55VM.js → chunk-AME4LBNH.js} +4 -4
  118. package/dist/{chunk-UBRG55VM.js.map → chunk-AME4LBNH.js.map} +1 -1
  119. package/dist/{chunk-S5KE6KPV.js → chunk-ASLHSLMC.js} +4 -4
  120. package/dist/{chunk-S5KE6KPV.js.map → chunk-ASLHSLMC.js.map} +1 -1
  121. package/dist/{chunk-BIVBSVWR.js → chunk-BBTYM4OY.js} +4 -4
  122. package/dist/{chunk-BIVBSVWR.js.map → chunk-BBTYM4OY.js.map} +1 -1
  123. package/dist/{chunk-ZBGMIDDO.js → chunk-DWWPRLD3.js} +3 -3
  124. package/dist/{chunk-ZBGMIDDO.js.map → chunk-DWWPRLD3.js.map} +1 -1
  125. package/dist/{chunk-FCFIG4M3.js → chunk-EMGVOEZZ.js} +3 -3
  126. package/dist/{chunk-FCFIG4M3.js.map → chunk-EMGVOEZZ.js.map} +1 -1
  127. package/dist/{chunk-XTBFIIAR.js → chunk-G4DDINNW.js} +4 -4
  128. package/dist/{chunk-XTBFIIAR.js.map → chunk-G4DDINNW.js.map} +1 -1
  129. package/dist/{chunk-UG44HSCN.js → chunk-JIFM6LXR.js} +4 -4
  130. package/dist/{chunk-UG44HSCN.js.map → chunk-JIFM6LXR.js.map} +1 -1
  131. package/dist/{chunk-IO4CVUL5.js → chunk-KAIASXU7.js} +6 -4
  132. package/dist/chunk-KAIASXU7.js.map +1 -0
  133. package/dist/{chunk-BWKHA4ZD.js → chunk-LDDZ7TUR.js} +4 -4
  134. package/dist/{chunk-BWKHA4ZD.js.map → chunk-LDDZ7TUR.js.map} +1 -1
  135. package/dist/{chunk-CV32FSEL.js → chunk-LYKDZ74X.js} +3 -3
  136. package/dist/{chunk-CV32FSEL.js.map → chunk-LYKDZ74X.js.map} +1 -1
  137. package/dist/{chunk-JWYZLXJZ.js → chunk-MO2NP3WX.js} +5 -5
  138. package/dist/{chunk-JWYZLXJZ.js.map → chunk-MO2NP3WX.js.map} +1 -1
  139. package/dist/{chunk-N2RAPPQ3.js → chunk-O6O2PDH5.js} +4 -4
  140. package/dist/{chunk-N2RAPPQ3.js.map → chunk-O6O2PDH5.js.map} +1 -1
  141. package/dist/{chunk-AU2XMLTH.js → chunk-ONBDJMLJ.js} +3 -3
  142. package/dist/{chunk-AU2XMLTH.js.map → chunk-ONBDJMLJ.js.map} +1 -1
  143. package/dist/{chunk-KNY2ZZ5M.js → chunk-P7RERWEY.js} +3 -3
  144. package/dist/{chunk-KNY2ZZ5M.js.map → chunk-P7RERWEY.js.map} +1 -1
  145. package/dist/{chunk-HSJCVD3P.js → chunk-PBTIZ7UF.js} +4 -4
  146. package/dist/{chunk-HSJCVD3P.js.map → chunk-PBTIZ7UF.js.map} +1 -1
  147. package/dist/{chunk-677OXNGV.js → chunk-PSWUFTNS.js} +3 -3
  148. package/dist/{chunk-677OXNGV.js.map → chunk-PSWUFTNS.js.map} +1 -1
  149. package/dist/{chunk-AFFBCOH6.js → chunk-QEE2A7O2.js} +3 -3
  150. package/dist/{chunk-AFFBCOH6.js.map → chunk-QEE2A7O2.js.map} +1 -1
  151. package/dist/{chunk-5VTVPQQB.js → chunk-QJR5FRIA.js} +4 -4
  152. package/dist/{chunk-5VTVPQQB.js.map → chunk-QJR5FRIA.js.map} +1 -1
  153. package/dist/chunk-T3GORIJL.js +69 -0
  154. package/dist/chunk-T3GORIJL.js.map +1 -0
  155. package/dist/{chunk-EFKVEYML.js → chunk-T3UUH7YX.js} +5 -5
  156. package/dist/{chunk-EFKVEYML.js.map → chunk-T3UUH7YX.js.map} +1 -1
  157. package/dist/{chunk-LPF6YURL.js → chunk-TK2ZIYF6.js} +3 -3
  158. package/dist/{chunk-LPF6YURL.js.map → chunk-TK2ZIYF6.js.map} +1 -1
  159. package/dist/{chunk-BY4DQTOG.js → chunk-U7ZHPOGI.js} +7 -7
  160. package/dist/{chunk-BY4DQTOG.js.map → chunk-U7ZHPOGI.js.map} +1 -1
  161. package/dist/{chunk-URBOD4MX.js → chunk-WYMDZDEZ.js} +3 -3
  162. package/dist/{chunk-URBOD4MX.js.map → chunk-WYMDZDEZ.js.map} +1 -1
  163. package/dist/{chunk-4SZNUX4K.js → chunk-YBWXK2OT.js} +11 -11
  164. package/dist/{chunk-4SZNUX4K.js.map → chunk-YBWXK2OT.js.map} +1 -1
  165. package/dist/{chunk-ZC4O472R.js → chunk-YY74QOIL.js} +5 -5
  166. package/dist/{chunk-ZC4O472R.js.map → chunk-YY74QOIL.js.map} +1 -1
  167. package/dist/{chunk-O76H6TDP.js → chunk-YZPHKPYI.js} +3 -3
  168. package/dist/{chunk-O76H6TDP.js.map → chunk-YZPHKPYI.js.map} +1 -1
  169. package/dist/{chunk-I5GFTVR2.js → chunk-ZHBZ6YMB.js} +4 -4
  170. package/dist/{chunk-I5GFTVR2.js.map → chunk-ZHBZ6YMB.js.map} +1 -1
  171. package/dist/{chunk-SXJEZEGN.js → chunk-ZKTSLYTT.js} +3 -3
  172. package/dist/{chunk-SXJEZEGN.js.map → chunk-ZKTSLYTT.js.map} +1 -1
  173. package/dist/components/cart/index.js +1 -1
  174. package/dist/components/common/index.js +1 -1
  175. package/dist/components/drawer/index.js +12 -12
  176. package/dist/components/home/index.js +17 -17
  177. package/dist/components/layout/index.js +4 -4
  178. package/dist/components/product/index.js +14 -14
  179. package/dist/components/store/index.js +13 -13
  180. package/dist/dev/editor/index.js +1 -1
  181. package/dist/dev/index.js +1 -1
  182. package/dist/{document-class-XYBFXCE7.js → document-class-YJDZSSZA.js} +12 -12
  183. package/dist/{document-class-XYBFXCE7.js.map → document-class-YJDZSSZA.js.map} +1 -1
  184. package/dist/hooks/index.js +12 -12
  185. package/dist/hooks/useGtm.js +12 -12
  186. package/dist/hooks/useMoney.js +12 -12
  187. package/dist/hooks/useStore.js +12 -12
  188. package/dist/hooks/useUser.js +3 -3
  189. package/dist/index.js +12 -12
  190. package/dist/{navigation-SHFUWYCA.js → navigation-W43IKI56.js} +5 -5
  191. package/dist/{navigation-SHFUWYCA.js.map → navigation-W43IKI56.js.map} +1 -1
  192. package/dist/{navigation-QDTYXINL.js → navigation-XQLKHMIZ.js} +4 -4
  193. package/dist/{navigation-QDTYXINL.js.map → navigation-XQLKHMIZ.js.map} +1 -1
  194. package/dist/{not-found-IFD562WC.js → not-found-LE7TH53E.js} +15 -15
  195. package/dist/{not-found-IFD562WC.js.map → not-found-LE7TH53E.js.map} +1 -1
  196. package/dist/providers/index.js +12 -12
  197. package/dist/routes/account/orders.js +4 -4
  198. package/dist/routes/account.js +13 -13
  199. package/dist/routes/blog.js +8 -8
  200. package/dist/routes/brands.js +4 -4
  201. package/dist/routes/cart.js +21 -21
  202. package/dist/routes/home.js +18 -18
  203. package/dist/routes/index.js +3 -3
  204. package/dist/routes/loyalty.js +5 -5
  205. package/dist/routes/page.js +4 -4
  206. package/dist/routes/product-listing.js +22 -22
  207. package/dist/routes/product.js +17 -17
  208. package/dist/routes/seo-redirects.d.ts +12 -0
  209. package/dist/routes/seo-redirects.d.ts.map +1 -1
  210. package/dist/routes/seo-redirects.js +3 -3
  211. package/dist/routes/testimonials.js +2 -2
  212. package/dist/routes/thank-you.js +4 -4
  213. package/dist/skeleton.js +18 -18
  214. package/dist/{store-lookup-AJT3ZHTS.js → store-lookup-FL54XOJB.js} +8 -8
  215. package/dist/{store-lookup-AJT3ZHTS.js.map → store-lookup-FL54XOJB.js.map} +1 -1
  216. package/dist/tanstack/link.d.ts.map +1 -1
  217. package/dist/tanstack/templates/locale-wrapper.d.ts.map +1 -1
  218. package/dist/tanstack.js +12 -12
  219. package/dist/utils/index.js +2 -2
  220. package/dist/vite/index.js +3 -1
  221. package/dist/vite/index.js.map +1 -1
  222. package/package.json +1 -1
  223. package/tailwind/routes/seo-redirects.ts.txt +52 -2
  224. package/dist/chunk-IO4CVUL5.js.map +0 -1
  225. package/dist/chunk-SIYINCXL.js +0 -41
  226. package/dist/chunk-SIYINCXL.js.map +0 -1
@@ -1,11 +1,11 @@
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';
1
+ import { category } from './chunk-BBTYM4OY.js';
2
+ import { blog } from './chunk-ZHBZ6YMB.js';
3
+ import { brand } from './chunk-QJR5FRIA.js';
4
+ import { product } from './chunk-LDDZ7TUR.js';
5
5
  import { DEV_LOOKUP_BUDGET_MS } from './chunk-OXMUPNMH.js';
6
- import './chunk-ZBGMIDDO.js';
6
+ import './chunk-DWWPRLD3.js';
7
7
  import './chunk-OUW6WESU.js';
8
- import './chunk-FCFIG4M3.js';
8
+ import './chunk-EMGVOEZZ.js';
9
9
  import './chunk-Z5M4YYWT.js';
10
10
  import './chunk-IURXJAIK.js';
11
11
  import './chunk-7IVHY4OR.js';
@@ -111,5 +111,5 @@ function lookupInStore(source, query) {
111
111
  }
112
112
 
113
113
  export { lookupInStore };
114
- //# sourceMappingURL=store-lookup-AJT3ZHTS.js.map
115
- //# sourceMappingURL=store-lookup-AJT3ZHTS.js.map
114
+ //# sourceMappingURL=store-lookup-FL54XOJB.js.map
115
+ //# sourceMappingURL=store-lookup-FL54XOJB.js.map
@@ -1 +1 @@
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"]}
1
+ {"version":3,"sources":["../src/dev/store-lookup.ts"],"names":["categories"],"mappings":"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","file":"store-lookup-FL54XOJB.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 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/tanstack/link.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAKvE;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,0HAmD/B,CAAC;AAIF;;GAEG;AACH,wBAAgB,yBAAyB,6HAExC"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/tanstack/link.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAQvE;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,0HAmD/B,CAAC;AAIF;;GAEG;AACH,wBAAgB,yBAAyB,6HAExC"}
@@ -1 +1 @@
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"}
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,CAgGzE"}
package/dist/tanstack.js CHANGED
@@ -1,27 +1,27 @@
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';
1
+ export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-YBWXK2OT.js';
2
+ import { requestHostOf } from './chunk-KAIASXU7.js';
3
+ export { TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter } from './chunk-KAIASXU7.js';
4
4
  import './chunk-Z4Y55HWX.js';
5
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-O76H6TDP.js';
8
- import './chunk-SXJEZEGN.js';
9
- import './chunk-I3KAWUPG.js';
10
- import './chunk-KNY2ZZ5M.js';
11
- import './chunk-BWKHA4ZD.js';
7
+ import { readNativeAppHeaders } from './chunk-YZPHKPYI.js';
8
+ import './chunk-ZKTSLYTT.js';
9
+ import './chunk-4UPADKLB.js';
10
+ import './chunk-P7RERWEY.js';
11
+ import './chunk-LDDZ7TUR.js';
12
12
  import { rootHead } from './chunk-GMXNVBCD.js';
13
13
  import './chunk-X55R4VVK.js';
14
- import './chunk-CV32FSEL.js';
14
+ import './chunk-LYKDZ74X.js';
15
15
  import './chunk-VDPMCOHX.js';
16
16
  import './chunk-GD26FI4J.js';
17
17
  import { maintenanceEvidence, MAINTENANCE_EVIDENCE_HEADER, maintenanceEvidenceHeader } from './chunk-BRIRWS2Q.js';
18
18
  import './chunk-M2MJKUQF.js';
19
- import './chunk-ZBGMIDDO.js';
19
+ import './chunk-DWWPRLD3.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-URBOD4MX.js';
24
- import './chunk-FCFIG4M3.js';
23
+ import './chunk-WYMDZDEZ.js';
24
+ import './chunk-EMGVOEZZ.js';
25
25
  import './chunk-Z5M4YYWT.js';
26
26
  import './chunk-TYNZ5B2B.js';
27
27
  import './chunk-BYMOPN2S.js';
@@ -1,6 +1,6 @@
1
1
  export { stripUnsafeHtml } from '../chunk-RUHSV4Z6.js';
2
2
  export { formatSallaPlural } from '../chunk-BT6HEEAP.js';
3
- export { dispatchRouteChanged } from '../chunk-KNY2ZZ5M.js';
3
+ export { dispatchRouteChanged } from '../chunk-P7RERWEY.js';
4
4
  export { sortOptions } from '../chunk-3LZJXKVO.js';
5
5
  export { color } from '../chunk-VVZNW5CB.js';
6
6
  export { applyAppScopeMocks, registerThemeHookSlots } from '../chunk-VDPMCOHX.js';
@@ -8,7 +8,7 @@ export { mergeHead, resolveHead, setHeadAdapter } from '../chunk-GD26FI4J.js';
8
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-FCFIG4M3.js';
11
+ import '../chunk-EMGVOEZZ.js';
12
12
  import '../chunk-Z5M4YYWT.js';
13
13
  export { getSallaSDK, getStoreIdentifier, onSallaEvent, whenSallaLoaded, whenSallaReady } from '../chunk-7IVHY4OR.js';
14
14
  export { AUTH_TOKEN_COOKIE_NAME, clearAuthTokenCookie, extractTokenFromCookies } from '../chunk-EEL6OYAQ.js';
@@ -1874,12 +1874,14 @@ function getLocaleWrapperTemplate(baseRoutesImport) {
1874
1874
  // @ts-nocheck \u2014 params types are generated by TanStack Router on pnpm dev
1875
1875
  import { createFileRoute, notFound, Outlet, redirect } from '@tanstack/react-router';
1876
1876
  import { FALLBACK_LOCALE, isLocale } from '${baseRoutesImport}';
1877
+ import { twigUrlRedirect } from '${baseRoutesImport}/seo-redirects';
1877
1878
  import { store } from '${mainPkg}/api/store';
1878
1879
 
1879
1880
  ${ADDRESS_LANGUAGE}
1880
1881
 
1881
1882
  export const Route = createFileRoute('/{-$locale}')({
1882
- beforeLoad: async ({ params, location, context }) => {
1883
+ beforeLoad: async ({ params, location, context, matches }) => {
1884
+ await twigUrlRedirect(location.pathname, location.searchStr, matches.at(-1));
1883
1885
  const { locale } = params;
1884
1886
  if (!locale) return;
1885
1887
  if (!isLocale(locale)) {