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

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 (221) hide show
  1. package/dist/{AddToCartForm-WY5QEHJ4.js → AddToCartForm-NMHCW3UT.js} +3 -3
  2. package/dist/{AddToCartForm-WY5QEHJ4.js.map → AddToCartForm-NMHCW3UT.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-E2WXK6HD.js → BlogAuthorPage-2WTKZNOV.js} +16 -16
  4. package/dist/{BlogAuthorPage-E2WXK6HD.js.map → BlogAuthorPage-2WTKZNOV.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-B2JEB33A.js → BlogCategoryPage-SF3FJKUX.js} +16 -16
  6. package/dist/{BlogCategoryPage-B2JEB33A.js.map → BlogCategoryPage-SF3FJKUX.js.map} +1 -1
  7. package/dist/{BlogPage-CSNI6SS5.js → BlogPage-LYB32QET.js} +14 -14
  8. package/dist/{BlogPage-CSNI6SS5.js.map → BlogPage-LYB32QET.js.map} +1 -1
  9. package/dist/{BlogSinglePage-5ZY5EB6H.js → BlogSinglePage-BLPEE6HL.js} +14 -14
  10. package/dist/{BlogSinglePage-5ZY5EB6H.js.map → BlogSinglePage-BLPEE6HL.js.map} +1 -1
  11. package/dist/{BlogTagPage-QFS7AKNK.js → BlogTagPage-D7QVEP5N.js} +16 -16
  12. package/dist/{BlogTagPage-QFS7AKNK.js.map → BlogTagPage-D7QVEP5N.js.map} +1 -1
  13. package/dist/{BrandsPage-QBA2WQHF.js → BrandsPage-7C5IPCVT.js} +15 -15
  14. package/dist/{BrandsPage-QBA2WQHF.js.map → BrandsPage-7C5IPCVT.js.map} +1 -1
  15. package/dist/{Breadcrumb-CH35WQ6M.js → Breadcrumb-WMXQ3SI3.js} +14 -14
  16. package/dist/{Breadcrumb-CH35WQ6M.js.map → Breadcrumb-WMXQ3SI3.js.map} +1 -1
  17. package/dist/{CartItem-NBM3KRUH.js → CartItem-BBC25XRJ.js} +14 -14
  18. package/dist/{CartItem-NBM3KRUH.js.map → CartItem-BBC25XRJ.js.map} +1 -1
  19. package/dist/{CartSummary-OD2IJTTA.js → CartSummary-6QADXXET.js} +14 -14
  20. package/dist/{CartSummary-OD2IJTTA.js.map → CartSummary-6QADXXET.js.map} +1 -1
  21. package/dist/{Copyright-7EC2FQUB.js → Copyright-GFBOKME6.js} +3 -3
  22. package/dist/{Copyright-7EC2FQUB.js.map → Copyright-GFBOKME6.js.map} +1 -1
  23. package/dist/{CustomerLayout-7GEOMQ3Z.js → CustomerLayout-4LOPQ7HW.js} +14 -14
  24. package/dist/{CustomerLayout-7GEOMQ3Z.js.map → CustomerLayout-4LOPQ7HW.js.map} +1 -1
  25. package/dist/{Footer-JTQIMWSF.js → Footer-HATEFXZP.js} +4 -4
  26. package/dist/{Footer-JTQIMWSF.js.map → Footer-HATEFXZP.js.map} +1 -1
  27. package/dist/{Header-4ZW5UVTX.js → Header-R2VM5EFR.js} +8 -8
  28. package/dist/{Header-4ZW5UVTX.js.map → Header-R2VM5EFR.js.map} +1 -1
  29. package/dist/{LatestProducts-VHN2P5TE.js → LatestProducts-IOYD7Y4Z.js} +16 -16
  30. package/dist/{LatestProducts-VHN2P5TE.js.map → LatestProducts-IOYD7Y4Z.js.map} +1 -1
  31. package/dist/{LoyaltyPage-PVK7FBFE.js → LoyaltyPage-2JPXJ3DB.js} +14 -14
  32. package/dist/{LoyaltyPage-PVK7FBFE.js.map → LoyaltyPage-2JPXJ3DB.js.map} +1 -1
  33. package/dist/{LoyaltyPointsPage-WYCO453U.js → LoyaltyPointsPage-B7EALH4Z.js} +6 -6
  34. package/dist/{LoyaltyPointsPage-WYCO453U.js.map → LoyaltyPointsPage-B7EALH4Z.js.map} +1 -1
  35. package/dist/{MainMenu-Y2PAFESM.js → MainMenu-BGVWE6TJ.js} +5 -5
  36. package/dist/{MainMenu-Y2PAFESM.js.map → MainMenu-BGVWE6TJ.js.map} +1 -1
  37. package/dist/{MasterLayout-EBLVT53G.js → MasterLayout-U33ZBIZO.js} +14 -14
  38. package/dist/{MasterLayout-EBLVT53G.js.map → MasterLayout-U33ZBIZO.js.map} +1 -1
  39. package/dist/{MobileMenu-YIL4MEWX.js → MobileMenu-6OERFJSR.js} +15 -15
  40. package/dist/{MobileMenu-YIL4MEWX.js.map → MobileMenu-6OERFJSR.js.map} +1 -1
  41. package/dist/{NotificationsPage-K2CJOV2N.js → NotificationsPage-YBFHEZYG.js} +14 -14
  42. package/dist/{NotificationsPage-K2CJOV2N.js.map → NotificationsPage-YBFHEZYG.js.map} +1 -1
  43. package/dist/{OrderSinglePage-T7S7KXJ3.js → OrderSinglePage-EPOX5KJG.js} +15 -15
  44. package/dist/{OrderSinglePage-T7S7KXJ3.js.map → OrderSinglePage-EPOX5KJG.js.map} +1 -1
  45. package/dist/{OrdersPage-WAW3NS2E.js → OrdersPage-6RPTMFAL.js} +14 -14
  46. package/dist/{OrdersPage-WAW3NS2E.js.map → OrdersPage-6RPTMFAL.js.map} +1 -1
  47. package/dist/{PageSingle-L5EBQGWS.js → PageSingle-CEFQDKOP.js} +3 -3
  48. package/dist/{PageSingle-L5EBQGWS.js.map → PageSingle-CEFQDKOP.js.map} +1 -1
  49. package/dist/{ProductDetails-4E46ZCMQ.js → ProductDetails-M6C6H3J4.js} +4 -4
  50. package/dist/{ProductDetails-4E46ZCMQ.js.map → ProductDetails-M6C6H3J4.js.map} +1 -1
  51. package/dist/{ProfilePage-KN7BWYFZ.js → ProfilePage-EJV2V46I.js} +14 -14
  52. package/dist/{ProfilePage-KN7BWYFZ.js.map → ProfilePage-EJV2V46I.js.map} +1 -1
  53. package/dist/{ReviewsPage-CCTPJN76.js → ReviewsPage-5K4PEJVZ.js} +3 -3
  54. package/dist/{ReviewsPage-CCTPJN76.js.map → ReviewsPage-5K4PEJVZ.js.map} +1 -1
  55. package/dist/{SeoCartWidget-Q5XK5MEW.js → SeoCartWidget-EQY6JIQR.js} +14 -14
  56. package/dist/{SeoCartWidget-Q5XK5MEW.js.map → SeoCartWidget-EQY6JIQR.js.map} +1 -1
  57. package/dist/{SettingsPage-DQAAMJE5.js → SettingsPage-AXHVNXFO.js} +14 -14
  58. package/dist/{SettingsPage-DQAAMJE5.js.map → SettingsPage-AXHVNXFO.js.map} +1 -1
  59. package/dist/{StoreClosedNotification-ZSDPBM3L.js → StoreClosedNotification-W2ATH4WF.js} +15 -15
  60. package/dist/{StoreClosedNotification-ZSDPBM3L.js.map → StoreClosedNotification-W2ATH4WF.js.map} +1 -1
  61. package/dist/{TestimonialsPage-6LGQSJSQ.js → TestimonialsPage-DYXOQOYG.js} +3 -3
  62. package/dist/{TestimonialsPage-6LGQSJSQ.js.map → TestimonialsPage-DYXOQOYG.js.map} +1 -1
  63. package/dist/{ThankYouPage-ZI6NEGN3.js → ThankYouPage-NZVL7WLY.js} +14 -14
  64. package/dist/{ThankYouPage-ZI6NEGN3.js.map → ThankYouPage-NZVL7WLY.js.map} +1 -1
  65. package/dist/{WalletPage-R6G5BQAI.js → WalletPage-6JUYGDBV.js} +15 -15
  66. package/dist/{WalletPage-R6G5BQAI.js.map → WalletPage-6JUYGDBV.js.map} +1 -1
  67. package/dist/{WebMcpTools-2NWIVDL2.js → WebMcpTools-5RGBTR7I.js} +5 -5
  68. package/dist/{WebMcpTools-2NWIVDL2.js.map → WebMcpTools-5RGBTR7I.js.map} +1 -1
  69. package/dist/{WishlistPage-CQ62GPLC.js → WishlistPage-VVPNCLOP.js} +16 -16
  70. package/dist/{WishlistPage-CQ62GPLC.js.map → WishlistPage-VVPNCLOP.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-X5W7HZNX.js → chunk-2DM2EXRT.js} +4 -4
  92. package/dist/{chunk-X5W7HZNX.js.map → chunk-2DM2EXRT.js.map} +1 -1
  93. package/dist/{chunk-HPK6GB7G.js → chunk-2LXCSBJU.js} +15 -15
  94. package/dist/{chunk-HPK6GB7G.js.map → chunk-2LXCSBJU.js.map} +1 -1
  95. package/dist/{chunk-MJHYLDXL.js → chunk-4UGJ4VC3.js} +3 -3
  96. package/dist/{chunk-MJHYLDXL.js.map → chunk-4UGJ4VC3.js.map} +1 -1
  97. package/dist/{chunk-MA3R5QON.js → chunk-4VDW24VN.js} +3 -3
  98. package/dist/{chunk-MA3R5QON.js.map → chunk-4VDW24VN.js.map} +1 -1
  99. package/dist/{chunk-SCWUJ5PP.js → chunk-5GMXXHV2.js} +3 -3
  100. package/dist/{chunk-SCWUJ5PP.js.map → chunk-5GMXXHV2.js.map} +1 -1
  101. package/dist/{chunk-T55MRK24.js → chunk-5OMZ4GZ6.js} +5 -5
  102. package/dist/{chunk-T55MRK24.js.map → chunk-5OMZ4GZ6.js.map} +1 -1
  103. package/dist/{chunk-JZ54GDXO.js → chunk-62IIZZPR.js} +4 -4
  104. package/dist/{chunk-JZ54GDXO.js.map → chunk-62IIZZPR.js.map} +1 -1
  105. package/dist/{chunk-QOC7HUYN.js → chunk-6HUQL6WU.js} +4 -4
  106. package/dist/{chunk-QOC7HUYN.js.map → chunk-6HUQL6WU.js.map} +1 -1
  107. package/dist/{chunk-GBJK6KKM.js → chunk-A6Y33KCR.js} +3 -3
  108. package/dist/{chunk-GBJK6KKM.js.map → chunk-A6Y33KCR.js.map} +1 -1
  109. package/dist/{chunk-LILNJBFU.js → chunk-ANVS7UYN.js} +3 -3
  110. package/dist/{chunk-LILNJBFU.js.map → chunk-ANVS7UYN.js.map} +1 -1
  111. package/dist/{chunk-3BDSQIYZ.js → chunk-CJTORCZE.js} +3 -3
  112. package/dist/{chunk-3BDSQIYZ.js.map → chunk-CJTORCZE.js.map} +1 -1
  113. package/dist/{chunk-4FFABE3P.js → chunk-D6OV66P2.js} +3 -3
  114. package/dist/{chunk-4FFABE3P.js.map → chunk-D6OV66P2.js.map} +1 -1
  115. package/dist/{chunk-NRMAYV4G.js → chunk-DN3SKCOX.js} +4 -4
  116. package/dist/{chunk-NRMAYV4G.js.map → chunk-DN3SKCOX.js.map} +1 -1
  117. package/dist/{chunk-5PMEGLR6.js → chunk-E3Z3PQAP.js} +4 -4
  118. package/dist/{chunk-5PMEGLR6.js.map → chunk-E3Z3PQAP.js.map} +1 -1
  119. package/dist/{chunk-R72B5P4R.js → chunk-EE7SB3QH.js} +4 -4
  120. package/dist/{chunk-R72B5P4R.js.map → chunk-EE7SB3QH.js.map} +1 -1
  121. package/dist/{chunk-33327CFA.js → chunk-EMNDPJRS.js} +4 -4
  122. package/dist/{chunk-33327CFA.js.map → chunk-EMNDPJRS.js.map} +1 -1
  123. package/dist/{chunk-C7LAIXEO.js → chunk-F7RABDDP.js} +3 -3
  124. package/dist/{chunk-C7LAIXEO.js.map → chunk-F7RABDDP.js.map} +1 -1
  125. package/dist/{chunk-23OJW6CK.js → chunk-FJWQ4PYX.js} +3 -3
  126. package/dist/{chunk-23OJW6CK.js.map → chunk-FJWQ4PYX.js.map} +1 -1
  127. package/dist/{chunk-V6IKYNU6.js → chunk-FYL4GPXH.js} +8 -8
  128. package/dist/chunk-FYL4GPXH.js.map +1 -0
  129. package/dist/{chunk-ELYKF67K.js → chunk-H2M2573Y.js} +5 -5
  130. package/dist/{chunk-ELYKF67K.js.map → chunk-H2M2573Y.js.map} +1 -1
  131. package/dist/{chunk-5ABT7QLS.js → chunk-HHJD2GGA.js} +7 -7
  132. package/dist/{chunk-5ABT7QLS.js.map → chunk-HHJD2GGA.js.map} +1 -1
  133. package/dist/{chunk-ZXEJ46OF.js → chunk-IKCXJYYQ.js} +11 -11
  134. package/dist/{chunk-ZXEJ46OF.js.map → chunk-IKCXJYYQ.js.map} +1 -1
  135. package/dist/{chunk-BAJBKIGI.js → chunk-IQNTYZGF.js} +3 -3
  136. package/dist/{chunk-BAJBKIGI.js.map → chunk-IQNTYZGF.js.map} +1 -1
  137. package/dist/{chunk-F3QHKYS3.js → chunk-ISW7G4IX.js} +4 -4
  138. package/dist/{chunk-F3QHKYS3.js.map → chunk-ISW7G4IX.js.map} +1 -1
  139. package/dist/{chunk-JDCZWE7N.js → chunk-JSHOX64U.js} +5 -5
  140. package/dist/{chunk-JDCZWE7N.js.map → chunk-JSHOX64U.js.map} +1 -1
  141. package/dist/{chunk-IFKCPNDF.js → chunk-KOR42MT5.js} +4 -4
  142. package/dist/{chunk-IFKCPNDF.js.map → chunk-KOR42MT5.js.map} +1 -1
  143. package/dist/{chunk-DQEJV5SR.js → chunk-LOXWQLSH.js} +7 -7
  144. package/dist/{chunk-DQEJV5SR.js.map → chunk-LOXWQLSH.js.map} +1 -1
  145. package/dist/{chunk-6T4HGLQM.js → chunk-MDZ7OUAW.js} +3 -3
  146. package/dist/{chunk-6T4HGLQM.js.map → chunk-MDZ7OUAW.js.map} +1 -1
  147. package/dist/{chunk-3AIK4QGW.js → chunk-MFTPNDEI.js} +3 -3
  148. package/dist/{chunk-3AIK4QGW.js.map → chunk-MFTPNDEI.js.map} +1 -1
  149. package/dist/{chunk-CAAIQPEN.js → chunk-NIPEIVU4.js} +6 -5
  150. package/dist/chunk-NIPEIVU4.js.map +1 -0
  151. package/dist/{chunk-CNTXY27A.js → chunk-ORLSTZ45.js} +4 -4
  152. package/dist/{chunk-CNTXY27A.js.map → chunk-ORLSTZ45.js.map} +1 -1
  153. package/dist/{chunk-CUURFACL.js → chunk-QMIPHH5I.js} +3 -3
  154. package/dist/{chunk-CUURFACL.js.map → chunk-QMIPHH5I.js.map} +1 -1
  155. package/dist/{chunk-NWQUPGB4.js → chunk-SNTJYDYZ.js} +4 -4
  156. package/dist/{chunk-NWQUPGB4.js.map → chunk-SNTJYDYZ.js.map} +1 -1
  157. package/dist/{chunk-WPRJVK7K.js → chunk-TJ3TISBF.js} +4 -4
  158. package/dist/{chunk-WPRJVK7K.js.map → chunk-TJ3TISBF.js.map} +1 -1
  159. package/dist/{chunk-WH73HWTE.js → chunk-TQEQECN7.js} +7 -7
  160. package/dist/{chunk-WH73HWTE.js.map → chunk-TQEQECN7.js.map} +1 -1
  161. package/dist/{chunk-W2A5AWNA.js → chunk-VGZEPMXG.js} +3 -3
  162. package/dist/{chunk-W2A5AWNA.js.map → chunk-VGZEPMXG.js.map} +1 -1
  163. package/dist/{chunk-KUQQJTFA.js → chunk-WAVAK2RB.js} +3 -3
  164. package/dist/{chunk-KUQQJTFA.js.map → chunk-WAVAK2RB.js.map} +1 -1
  165. package/dist/{chunk-CXKA35FJ.js → chunk-WJJOFIBJ.js} +3 -3
  166. package/dist/{chunk-CXKA35FJ.js.map → chunk-WJJOFIBJ.js.map} +1 -1
  167. package/dist/{chunk-7R43CIG7.js → chunk-WJVKBSKY.js} +3 -3
  168. package/dist/{chunk-7R43CIG7.js.map → chunk-WJVKBSKY.js.map} +1 -1
  169. package/dist/{chunk-W3QKGF2O.js → chunk-XDA6N5GZ.js} +3 -3
  170. package/dist/{chunk-W3QKGF2O.js.map → chunk-XDA6N5GZ.js.map} +1 -1
  171. package/dist/{chunk-3WA5RJGC.js → chunk-ZN3RZJRX.js} +3 -3
  172. package/dist/{chunk-3WA5RJGC.js.map → chunk-ZN3RZJRX.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/ProductCard.d.ts.map +1 -1
  179. package/dist/components/product/index.js +14 -14
  180. package/dist/components/store/index.js +13 -13
  181. package/dist/dev/editor/index.js +1 -1
  182. package/dist/dev/index.js +1 -1
  183. package/dist/{document-class-B57F7JZW.js → document-class-FSNL65IJ.js} +12 -12
  184. package/dist/{document-class-B57F7JZW.js.map → document-class-FSNL65IJ.js.map} +1 -1
  185. package/dist/hooks/index.js +12 -12
  186. package/dist/hooks/useGtm.js +12 -12
  187. package/dist/hooks/useMoney.js +12 -12
  188. package/dist/hooks/useStore.js +12 -12
  189. package/dist/hooks/useUser.js +3 -3
  190. package/dist/index.js +12 -12
  191. package/dist/{navigation-N3WBAE74.js → navigation-CCGB3YEB.js} +5 -5
  192. package/dist/{navigation-N3WBAE74.js.map → navigation-CCGB3YEB.js.map} +1 -1
  193. package/dist/{navigation-VJBIYPFD.js → navigation-I5H3HLZV.js} +4 -4
  194. package/dist/{navigation-VJBIYPFD.js.map → navigation-I5H3HLZV.js.map} +1 -1
  195. package/dist/{not-found-KDDMHTAU.js → not-found-SMNBZNFW.js} +15 -15
  196. package/dist/{not-found-KDDMHTAU.js.map → not-found-SMNBZNFW.js.map} +1 -1
  197. package/dist/providers/index.js +12 -12
  198. package/dist/routes/account/orders.js +4 -4
  199. package/dist/routes/account.js +13 -13
  200. package/dist/routes/blog.js +8 -8
  201. package/dist/routes/brands.js +4 -4
  202. package/dist/routes/cart.js +21 -21
  203. package/dist/routes/home.js +18 -18
  204. package/dist/routes/index.js +3 -3
  205. package/dist/routes/loyalty.js +5 -5
  206. package/dist/routes/page.js +4 -4
  207. package/dist/routes/product-listing.js +22 -22
  208. package/dist/routes/product.js +17 -17
  209. package/dist/routes/seo-redirects.js +3 -3
  210. package/dist/routes/testimonials.js +2 -2
  211. package/dist/routes/thank-you.js +4 -4
  212. package/dist/skeleton.js +18 -18
  213. package/dist/{store-lookup-WBKOYMDU.js → store-lookup-VFRN2MVI.js} +8 -8
  214. package/dist/{store-lookup-WBKOYMDU.js.map → store-lookup-VFRN2MVI.js.map} +1 -1
  215. package/dist/tanstack.js +12 -12
  216. package/dist/utils/index.js +2 -2
  217. package/package.json +1 -1
  218. package/tailwind/components/home/FixedProducts.tsx.txt +2 -2
  219. package/tailwind/components/product/ProductCard.tsx.txt +2 -1
  220. package/dist/chunk-CAAIQPEN.js.map +0 -1
  221. package/dist/chunk-V6IKYNU6.js.map +0 -1
@@ -1,7 +1,7 @@
1
- export { slugBrandRedirectLoader } from '../chunk-SCWUJ5PP.js';
2
- import '../chunk-MJHYLDXL.js';
1
+ export { slugBrandRedirectLoader } from '../chunk-5GMXXHV2.js';
2
+ import '../chunk-4UGJ4VC3.js';
3
3
  import '../chunk-OUW6WESU.js';
4
- import '../chunk-CXKA35FJ.js';
4
+ import '../chunk-WJJOFIBJ.js';
5
5
  import '../chunk-Z5M4YYWT.js';
6
6
  import '../chunk-TYNZ5B2B.js';
7
7
  import '../chunk-6TFM3UTF.js';
@@ -1,8 +1,8 @@
1
- import { loyalty } from '../chunk-X5W7HZNX.js';
1
+ import { loyalty } from '../chunk-2DM2EXRT.js';
2
2
  import { buildHreflangAlternates } from '../chunk-MGG4XAJ5.js';
3
- import { unauthorized, orUnauthorized, redirect } from '../chunk-MJHYLDXL.js';
3
+ import { unauthorized, orUnauthorized, redirect } from '../chunk-4UGJ4VC3.js';
4
4
  import { RouteId } from '../chunk-OUW6WESU.js';
5
- import { getAuthToken } from '../chunk-CXKA35FJ.js';
5
+ import { getAuthToken } from '../chunk-WJJOFIBJ.js';
6
6
  import '../chunk-Z5M4YYWT.js';
7
7
  import '../chunk-6TFM3UTF.js';
8
8
  import '../chunk-XMRNYUQY.js';
@@ -59,10 +59,10 @@ async function loyaltyPointsLoader(locale) {
59
59
 
60
60
  // src/routes/loyalty/index.tsx
61
61
  var LazyLoyaltyPage = lazyComponent(
62
- () => import('../LoyaltyPage-PVK7FBFE.js').then((m) => ({ default: m.LoyaltyPage }))
62
+ () => import('../LoyaltyPage-2JPXJ3DB.js').then((m) => ({ default: m.LoyaltyPage }))
63
63
  );
64
64
  var LazyLoyaltyPointsPage = lazyComponent(
65
- () => import('../LoyaltyPointsPage-WYCO453U.js').then((m) => ({ default: m.LoyaltyPointsPage }))
65
+ () => import('../LoyaltyPointsPage-B7EALH4Z.js').then((m) => ({ default: m.LoyaltyPointsPage }))
66
66
  );
67
67
  var LoyaltyPage = LazyLoyaltyPage;
68
68
  var LoyaltyPointsPage = LazyLoyaltyPointsPage;
@@ -1,8 +1,8 @@
1
- import { page } from '../chunk-NRMAYV4G.js';
1
+ import { page } from '../chunk-DN3SKCOX.js';
2
2
  import { buildHreflangAlternates } from '../chunk-MGG4XAJ5.js';
3
- import '../chunk-MJHYLDXL.js';
3
+ import '../chunk-4UGJ4VC3.js';
4
4
  import { RouteId } from '../chunk-OUW6WESU.js';
5
- import '../chunk-CXKA35FJ.js';
5
+ import '../chunk-WJJOFIBJ.js';
6
6
  import '../chunk-Z5M4YYWT.js';
7
7
  import '../chunk-6TFM3UTF.js';
8
8
  import '../chunk-XMRNYUQY.js';
@@ -31,7 +31,7 @@ async function pageSingleLoader({ params }) {
31
31
 
32
32
  // src/routes/page/index.tsx
33
33
  var LazyPageSingle = lazyComponent(
34
- () => import('../PageSingle-L5EBQGWS.js').then((m) => ({ default: m.PageSingle }))
34
+ () => import('../PageSingle-CEFQDKOP.js').then((m) => ({ default: m.PageSingle }))
35
35
  );
36
36
  var PageSingleLazy = LazyPageSingle;
37
37
  async function loader(ctx, extend) {
@@ -1,37 +1,37 @@
1
- import { useAppliedFilters } from '../chunk-5PMEGLR6.js';
2
- export { parseFiltersFromSearch, useAppliedFilters } from '../chunk-5PMEGLR6.js';
3
- import { dispatchProductsFetched } from '../chunk-7R43CIG7.js';
1
+ import { useAppliedFilters } from '../chunk-E3Z3PQAP.js';
2
+ export { parseFiltersFromSearch, useAppliedFilters } from '../chunk-E3Z3PQAP.js';
3
+ import { dispatchProductsFetched } from '../chunk-WJVKBSKY.js';
4
4
  import { SORT_IDS, availableSortIds, sortOptions } from '../chunk-3LZJXKVO.js';
5
- import { category } from '../chunk-33327CFA.js';
6
- import { brand } from '../chunk-CNTXY27A.js';
7
- import { useReorderButtons, LazyTestimonials } from '../chunk-V6IKYNU6.js';
8
- import '../chunk-W3QKGF2O.js';
9
- import { product, parseNextPageToken } from '../chunk-R72B5P4R.js';
5
+ import { category } from '../chunk-EMNDPJRS.js';
6
+ import { brand } from '../chunk-ORLSTZ45.js';
7
+ import { useReorderButtons, LazyTestimonials } from '../chunk-FYL4GPXH.js';
8
+ import '../chunk-XDA6N5GZ.js';
9
+ import { product, parseNextPageToken } from '../chunk-EE7SB3QH.js';
10
10
  import { Drawer } from '../chunk-6TKIUG5C.js';
11
- import '../chunk-T55MRK24.js';
12
- import { ProductCard } from '../chunk-CAAIQPEN.js';
11
+ import '../chunk-5OMZ4GZ6.js';
12
+ import { ProductCard } from '../chunk-NIPEIVU4.js';
13
13
  import { registry, COMPONENT_KEYS } from '../chunk-Y32RHCOH.js';
14
- import { useStore } from '../chunk-HPK6GB7G.js';
14
+ import { useStore } from '../chunk-2LXCSBJU.js';
15
15
  import '../chunk-Q77J3D2W.js';
16
- import '../chunk-5ABT7QLS.js';
17
- import '../chunk-6T4HGLQM.js';
16
+ import '../chunk-HHJD2GGA.js';
17
+ import '../chunk-MDZ7OUAW.js';
18
18
  import '../chunk-5V4W3GBI.js';
19
19
  import '../chunk-X55R4VVK.js';
20
20
  import '../chunk-YL6X3ZMG.js';
21
- import '../chunk-LILNJBFU.js';
21
+ import '../chunk-ANVS7UYN.js';
22
22
  import '../chunk-OXMUPNMH.js';
23
- import '../chunk-3BDSQIYZ.js';
23
+ import '../chunk-CJTORCZE.js';
24
24
  import '../chunk-VVZNW5CB.js';
25
25
  import '../chunk-EGI7F57E.js';
26
26
  import '../chunk-GD26FI4J.js';
27
27
  import '../chunk-SLBO4SEE.js';
28
28
  import { buildHreflangAlternates, storePageUrl } from '../chunk-MGG4XAJ5.js';
29
- import { unauthorized, notFound, orThrow, useNavigate, useLocation } from '../chunk-MJHYLDXL.js';
29
+ import { unauthorized, notFound, orThrow, useNavigate, useLocation } from '../chunk-4UGJ4VC3.js';
30
30
  import { RouteId } from '../chunk-OUW6WESU.js';
31
31
  import '../chunk-IHOUADLX.js';
32
32
  import '../chunk-HI5V5X3S.js';
33
- import '../chunk-BAJBKIGI.js';
34
- import '../chunk-GBJK6KKM.js';
33
+ import '../chunk-IQNTYZGF.js';
34
+ import '../chunk-A6Y33KCR.js';
35
35
  import '../chunk-6T55LXJL.js';
36
36
  import '../chunk-Z653O7MX.js';
37
37
  import '../chunk-ZCH7W7DZ.js';
@@ -42,16 +42,16 @@ import '../chunk-7V36I5GT.js';
42
42
  import '../chunk-6WI7R2BD.js';
43
43
  import '../chunk-M5WTY3EH.js';
44
44
  import '../chunk-OAMIDZKW.js';
45
- import '../chunk-CUURFACL.js';
45
+ import '../chunk-QMIPHH5I.js';
46
46
  import '../chunk-OQIIJRAS.js';
47
47
  import '../chunk-V2ZDTY6H.js';
48
- import '../chunk-3AIK4QGW.js';
48
+ import '../chunk-MFTPNDEI.js';
49
49
  import { HookSlot } from '../chunk-5XDPAKF5.js';
50
50
  import '../chunk-GCPEMNSU.js';
51
- import { getAuthToken } from '../chunk-CXKA35FJ.js';
51
+ import { getAuthToken } from '../chunk-WJJOFIBJ.js';
52
52
  import '../chunk-Z5M4YYWT.js';
53
53
  import { useTranslation } from '../chunk-TYNZ5B2B.js';
54
- import { LazyBreadcrumb, Image, LazyNoContent, ProductCardSkeleton, LazyRenderWhenVisible } from '../chunk-W2A5AWNA.js';
54
+ import { LazyBreadcrumb, Image, LazyNoContent, ProductCardSkeleton, LazyRenderWhenVisible } from '../chunk-VGZEPMXG.js';
55
55
  import '../chunk-AXW67SY7.js';
56
56
  import '../chunk-BYMOPN2S.js';
57
57
  import '../chunk-SKLEJJ6M.js';
@@ -1,30 +1,30 @@
1
- import { ProductsSlider, LazyTestimonials } from '../chunk-V6IKYNU6.js';
2
- import '../chunk-W3QKGF2O.js';
3
- import { product } from '../chunk-R72B5P4R.js';
4
- import { ProductGallery, LazyProductDetails, LazyAddToCartForm } from '../chunk-T55MRK24.js';
5
- import '../chunk-CAAIQPEN.js';
1
+ import { ProductsSlider, LazyTestimonials } from '../chunk-FYL4GPXH.js';
2
+ import '../chunk-XDA6N5GZ.js';
3
+ import { product } from '../chunk-EE7SB3QH.js';
4
+ import { ProductGallery, LazyProductDetails, LazyAddToCartForm } from '../chunk-5OMZ4GZ6.js';
5
+ import '../chunk-NIPEIVU4.js';
6
6
  import '../chunk-Y32RHCOH.js';
7
- import { fastCheckoutScript } from '../chunk-HPK6GB7G.js';
7
+ import { fastCheckoutScript } from '../chunk-2LXCSBJU.js';
8
8
  import '../chunk-Q77J3D2W.js';
9
- import '../chunk-5ABT7QLS.js';
10
- import '../chunk-6T4HGLQM.js';
9
+ import '../chunk-HHJD2GGA.js';
10
+ import '../chunk-MDZ7OUAW.js';
11
11
  import '../chunk-5V4W3GBI.js';
12
12
  import '../chunk-X55R4VVK.js';
13
13
  import '../chunk-YL6X3ZMG.js';
14
- import '../chunk-LILNJBFU.js';
14
+ import '../chunk-ANVS7UYN.js';
15
15
  import '../chunk-OXMUPNMH.js';
16
- import '../chunk-3BDSQIYZ.js';
16
+ import '../chunk-CJTORCZE.js';
17
17
  import '../chunk-VVZNW5CB.js';
18
18
  import '../chunk-EGI7F57E.js';
19
19
  import '../chunk-GD26FI4J.js';
20
20
  import '../chunk-SLBO4SEE.js';
21
21
  import { buildHreflangAlternates } from '../chunk-MGG4XAJ5.js';
22
- import '../chunk-MJHYLDXL.js';
22
+ import '../chunk-4UGJ4VC3.js';
23
23
  import { RouteId } from '../chunk-OUW6WESU.js';
24
24
  import { useComments } from '../chunk-IHOUADLX.js';
25
25
  import '../chunk-HI5V5X3S.js';
26
- import '../chunk-BAJBKIGI.js';
27
- import '../chunk-GBJK6KKM.js';
26
+ import '../chunk-IQNTYZGF.js';
27
+ import '../chunk-A6Y33KCR.js';
28
28
  import '../chunk-6T55LXJL.js';
29
29
  import '../chunk-Z653O7MX.js';
30
30
  import '../chunk-ZCH7W7DZ.js';
@@ -35,16 +35,16 @@ import '../chunk-7V36I5GT.js';
35
35
  import '../chunk-6WI7R2BD.js';
36
36
  import '../chunk-M5WTY3EH.js';
37
37
  import '../chunk-OAMIDZKW.js';
38
- import '../chunk-CUURFACL.js';
38
+ import '../chunk-QMIPHH5I.js';
39
39
  import '../chunk-OQIIJRAS.js';
40
40
  import '../chunk-V2ZDTY6H.js';
41
- import '../chunk-3AIK4QGW.js';
41
+ import '../chunk-MFTPNDEI.js';
42
42
  import { HookSlot } from '../chunk-5XDPAKF5.js';
43
43
  import '../chunk-GCPEMNSU.js';
44
- import { getActiveCurrency } from '../chunk-CXKA35FJ.js';
44
+ import { getActiveCurrency } from '../chunk-WJJOFIBJ.js';
45
45
  import '../chunk-Z5M4YYWT.js';
46
46
  import { useTranslation } from '../chunk-TYNZ5B2B.js';
47
- import { LazyBreadcrumb, LazyRenderWhenVisible } from '../chunk-W2A5AWNA.js';
47
+ import { LazyBreadcrumb, LazyRenderWhenVisible } from '../chunk-VGZEPMXG.js';
48
48
  import '../chunk-AXW67SY7.js';
49
49
  import '../chunk-BYMOPN2S.js';
50
50
  import '../chunk-SKLEJJ6M.js';
@@ -1,7 +1,7 @@
1
- export { LogoutRedirect, accountRedirectLoader, pendingOrdersRedirectLoader, productsSourceRedirectLoader, ratingRedirectLoader, slugBrandRedirectLoader } from '../chunk-SCWUJ5PP.js';
2
- import '../chunk-MJHYLDXL.js';
1
+ export { LogoutRedirect, accountRedirectLoader, pendingOrdersRedirectLoader, productsSourceRedirectLoader, ratingRedirectLoader, slugBrandRedirectLoader } from '../chunk-5GMXXHV2.js';
2
+ import '../chunk-4UGJ4VC3.js';
3
3
  import '../chunk-OUW6WESU.js';
4
- import '../chunk-CXKA35FJ.js';
4
+ import '../chunk-WJJOFIBJ.js';
5
5
  import '../chunk-Z5M4YYWT.js';
6
6
  import '../chunk-6TFM3UTF.js';
7
7
  import '../chunk-XMRNYUQY.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-6LGQSJSQ.js').then((m) => ({ default: m.TestimonialsPage }))
36
+ () => import('../TestimonialsPage-DYXOQOYG.js').then((m) => ({ default: m.TestimonialsPage }))
37
37
  );
38
38
  var LazyReviewsPage = lazyComponent(
39
- () => import('../ReviewsPage-CCTPJN76.js').then((m) => ({ default: m.ReviewsPage }))
39
+ () => import('../ReviewsPage-5K4PEJVZ.js').then((m) => ({ default: m.ReviewsPage }))
40
40
  );
41
41
  var TestimonialsPage = LazyTestimonialsPage;
42
42
  var ReviewsPage = LazyReviewsPage;
@@ -1,8 +1,8 @@
1
- import { order } from '../chunk-F3QHKYS3.js';
1
+ import { order } from '../chunk-ISW7G4IX.js';
2
2
  import { buildHreflangAlternates, storePageUrl } from '../chunk-MGG4XAJ5.js';
3
- import '../chunk-MJHYLDXL.js';
3
+ import '../chunk-4UGJ4VC3.js';
4
4
  import { RouteId } from '../chunk-OUW6WESU.js';
5
- import { getAuthToken, api } from '../chunk-CXKA35FJ.js';
5
+ import { getAuthToken, api } from '../chunk-WJJOFIBJ.js';
6
6
  import '../chunk-Z5M4YYWT.js';
7
7
  import '../chunk-6TFM3UTF.js';
8
8
  import '../chunk-XMRNYUQY.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-ZI6NEGN3.js').then((m) => ({ default: m.ThankYouPage }))
108
+ () => import('../ThankYouPage-NZVL7WLY.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,33 +1,33 @@
1
1
  export { BlogSkeleton, BreadcrumbSkeleton, CartSkeleton, CustomerLayoutSkeleton, CustomerPageSkeleton, PageSkeleton, ProductCardSkeleton, ProductDetailSkeleton, ProductGridSkeleton, SkeletonPulse } from './chunk-N7CCSGZF.js';
2
- export { HomeSkeleton } from './chunk-JDCZWE7N.js';
2
+ export { HomeSkeleton } from './chunk-JSHOX64U.js';
3
3
  import './chunk-IXHM24Z4.js';
4
- import './chunk-V6IKYNU6.js';
5
- import './chunk-W3QKGF2O.js';
6
- import './chunk-R72B5P4R.js';
7
- import './chunk-T55MRK24.js';
8
- import './chunk-CAAIQPEN.js';
4
+ import './chunk-FYL4GPXH.js';
5
+ import './chunk-XDA6N5GZ.js';
6
+ import './chunk-EE7SB3QH.js';
7
+ import './chunk-5OMZ4GZ6.js';
8
+ import './chunk-NIPEIVU4.js';
9
9
  import './chunk-Y32RHCOH.js';
10
- import './chunk-HPK6GB7G.js';
10
+ import './chunk-2LXCSBJU.js';
11
11
  import './chunk-Q77J3D2W.js';
12
- import './chunk-5ABT7QLS.js';
13
- import './chunk-6T4HGLQM.js';
12
+ import './chunk-HHJD2GGA.js';
13
+ import './chunk-MDZ7OUAW.js';
14
14
  import './chunk-5V4W3GBI.js';
15
15
  import './chunk-X55R4VVK.js';
16
16
  import './chunk-YL6X3ZMG.js';
17
- import './chunk-LILNJBFU.js';
17
+ import './chunk-ANVS7UYN.js';
18
18
  import './chunk-OXMUPNMH.js';
19
- import './chunk-3BDSQIYZ.js';
19
+ import './chunk-CJTORCZE.js';
20
20
  import './chunk-VVZNW5CB.js';
21
21
  import './chunk-EGI7F57E.js';
22
22
  import './chunk-GD26FI4J.js';
23
23
  import './chunk-SLBO4SEE.js';
24
24
  import './chunk-MGG4XAJ5.js';
25
- import './chunk-MJHYLDXL.js';
25
+ import './chunk-4UGJ4VC3.js';
26
26
  import './chunk-OUW6WESU.js';
27
27
  import './chunk-IHOUADLX.js';
28
28
  import './chunk-HI5V5X3S.js';
29
- import './chunk-BAJBKIGI.js';
30
- import './chunk-GBJK6KKM.js';
29
+ import './chunk-IQNTYZGF.js';
30
+ import './chunk-A6Y33KCR.js';
31
31
  import './chunk-6T55LXJL.js';
32
32
  import './chunk-Z653O7MX.js';
33
33
  import './chunk-ZCH7W7DZ.js';
@@ -38,16 +38,16 @@ import './chunk-7V36I5GT.js';
38
38
  import './chunk-6WI7R2BD.js';
39
39
  import './chunk-M5WTY3EH.js';
40
40
  import './chunk-OAMIDZKW.js';
41
- import './chunk-CUURFACL.js';
41
+ import './chunk-QMIPHH5I.js';
42
42
  import './chunk-OQIIJRAS.js';
43
43
  import './chunk-V2ZDTY6H.js';
44
- import './chunk-3AIK4QGW.js';
44
+ import './chunk-MFTPNDEI.js';
45
45
  import './chunk-5XDPAKF5.js';
46
46
  import './chunk-GCPEMNSU.js';
47
- import './chunk-CXKA35FJ.js';
47
+ import './chunk-WJJOFIBJ.js';
48
48
  import './chunk-Z5M4YYWT.js';
49
49
  import './chunk-TYNZ5B2B.js';
50
- import './chunk-W2A5AWNA.js';
50
+ import './chunk-VGZEPMXG.js';
51
51
  import './chunk-AXW67SY7.js';
52
52
  import './chunk-BYMOPN2S.js';
53
53
  import './chunk-SKLEJJ6M.js';
@@ -1,11 +1,11 @@
1
- import { category } from './chunk-33327CFA.js';
2
- import { blog } from './chunk-WPRJVK7K.js';
3
- import { brand } from './chunk-CNTXY27A.js';
4
- import { product } from './chunk-R72B5P4R.js';
1
+ import { category } from './chunk-EMNDPJRS.js';
2
+ import { blog } from './chunk-TJ3TISBF.js';
3
+ import { brand } from './chunk-ORLSTZ45.js';
4
+ import { product } from './chunk-EE7SB3QH.js';
5
5
  import { DEV_LOOKUP_BUDGET_MS } from './chunk-OXMUPNMH.js';
6
- import './chunk-MJHYLDXL.js';
6
+ import './chunk-4UGJ4VC3.js';
7
7
  import './chunk-OUW6WESU.js';
8
- import './chunk-CXKA35FJ.js';
8
+ import './chunk-WJJOFIBJ.js';
9
9
  import './chunk-Z5M4YYWT.js';
10
10
  import './chunk-6TFM3UTF.js';
11
11
  import './chunk-XMRNYUQY.js';
@@ -111,5 +111,5 @@ function lookupInStore(source, query) {
111
111
  }
112
112
 
113
113
  export { lookupInStore };
114
- //# sourceMappingURL=store-lookup-WBKOYMDU.js.map
115
- //# sourceMappingURL=store-lookup-WBKOYMDU.js.map
114
+ //# sourceMappingURL=store-lookup-VFRN2MVI.js.map
115
+ //# sourceMappingURL=store-lookup-VFRN2MVI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dev/store-lookup.ts"],"names":["categories"],"mappings":"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","file":"store-lookup-WBKOYMDU.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-VFRN2MVI.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"]}
package/dist/tanstack.js CHANGED
@@ -1,27 +1,27 @@
1
- export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-ZXEJ46OF.js';
2
- import { requestHostOf } from './chunk-23OJW6CK.js';
3
- export { TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter } from './chunk-23OJW6CK.js';
1
+ export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-IKCXJYYQ.js';
2
+ import { requestHostOf } from './chunk-FJWQ4PYX.js';
3
+ export { TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter } from './chunk-FJWQ4PYX.js';
4
4
  import './chunk-Z4Y55HWX.js';
5
5
  export { tanstackHeadAdapter as head, withHead } from './chunk-R7VWIXFX.js';
6
6
  import { CRITICAL_STYLE_HREF } from './chunk-4FJGZQD3.js';
7
- import { readNativeAppHeaders } from './chunk-KUQQJTFA.js';
8
- import './chunk-3WA5RJGC.js';
9
- import './chunk-5PMEGLR6.js';
10
- import './chunk-7R43CIG7.js';
11
- import './chunk-R72B5P4R.js';
7
+ import { readNativeAppHeaders } from './chunk-WAVAK2RB.js';
8
+ import './chunk-ZN3RZJRX.js';
9
+ import './chunk-E3Z3PQAP.js';
10
+ import './chunk-WJVKBSKY.js';
11
+ import './chunk-EE7SB3QH.js';
12
12
  import { rootHead } from './chunk-5V4W3GBI.js';
13
13
  import './chunk-X55R4VVK.js';
14
- import './chunk-3BDSQIYZ.js';
14
+ import './chunk-CJTORCZE.js';
15
15
  import './chunk-EGI7F57E.js';
16
16
  import './chunk-GD26FI4J.js';
17
17
  import { maintenanceEvidence, MAINTENANCE_EVIDENCE_HEADER, maintenanceEvidenceHeader } from './chunk-SLBO4SEE.js';
18
18
  import './chunk-MGG4XAJ5.js';
19
- import './chunk-MJHYLDXL.js';
19
+ import './chunk-4UGJ4VC3.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-3AIK4QGW.js';
24
- import './chunk-CXKA35FJ.js';
23
+ import './chunk-MFTPNDEI.js';
24
+ import './chunk-WJJOFIBJ.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-7R43CIG7.js';
3
+ export { dispatchRouteChanged } from '../chunk-WJVKBSKY.js';
4
4
  export { sortOptions } from '../chunk-3LZJXKVO.js';
5
5
  export { color } from '../chunk-VVZNW5CB.js';
6
6
  export { applyAppScopeMocks, registerThemeHookSlots } from '../chunk-EGI7F57E.js';
@@ -8,7 +8,7 @@ export { mergeHead, resolveHead, setHeadAdapter } from '../chunk-GD26FI4J.js';
8
8
  export { buildBaseHead, buildHreflangAlternates, localeToOgLocale } from '../chunk-MGG4XAJ5.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-CXKA35FJ.js';
11
+ import '../chunk-WJJOFIBJ.js';
12
12
  import '../chunk-Z5M4YYWT.js';
13
13
  export { getSallaSDK, getStoreIdentifier, onSallaEvent, whenSallaLoaded, whenSallaReady } from '../chunk-XMRNYUQY.js';
14
14
  export { AUTH_TOKEN_COOKIE_NAME, clearAuthTokenCookie, extractTokenFromCookies } from '../chunk-T2752RH7.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salla.sa/twilight-theme-engine",
3
- "version": "1.0.148",
3
+ "version": "1.0.149",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -29,8 +29,8 @@ export function FixedProducts({ data }: FixedProductsProps) {
29
29
  // isn't a positive whole number falls back to what the API returns.
30
30
  const parsedLimit = Number(data.limit);
31
31
  const limit = Number.isInteger(parsedLimit) && parsedLimit > 0 ? parsedLimit : undefined;
32
- // Matches Twig Raed: `theme.settings.get('vertical_fixed_products', true)`.
33
- const isVertical = data.isVertical ?? theme.settings.vertical_fixed_products ?? true;
32
+ // As Twig Raed, the merchant's switch decides: the API sends `isVertical: true` regardless.
33
+ const isVertical = theme.settings.vertical_fixed_products ?? data.isVertical ?? true;
34
34
 
35
35
  const { data: result, isLoading } = useQuery(
36
36
  product.queries.list({
@@ -154,7 +154,8 @@ const ProductCardContent = memo(function ProductCardContent({
154
154
  's-product-card-entry',
155
155
  isVertical ? 's-product-card-vertical' : '',
156
156
  isHorizontal ? 's-product-card-horizontal' : '',
157
- fitImageHeight && isVertical ? `s-product-card-fit-height` : '',
157
+ // As Twig's card: the store's unified image height sizes horizontal cards too.
158
+ fitImageHeight && (isVertical || isHorizontal) ? `s-product-card-fit-height` : '',
158
159
  isSpecial ? 's-product-card-special' : '',
159
160
  isFullImage ? 's-product-card-full-image' : '',
160
161
  isMinimal ? 's-product-card-minimal' : '',
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/product/ProductCard.tsx"],"names":["ProductCardContent","ProductCard"],"mappings":"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","file":"chunk-CAAIQPEN.js","sourcesContent":["import { memo, useCallback, useMemo } from 'react';\nimport { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { useHostAttributes } from '@salla.sa/twilight-theme-engine/hooks/useHostAttributes';\nimport { useMoney } from '../../hooks/useMoney';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useTwilight } from '../../providers/TwilightProvider';\nimport { useWishlist } from '../../hooks/useWishlist';\nimport { useAsset } from '../../hooks/useAsset';\nimport { useNumber } from '../../hooks/useNumber';\nimport { registry } from '../ComponentRegistry';\nimport { Image } from '../common';\nimport type { Product } from '../../types';\n\nconst PRODUCT_CARD_KEY = 'product:card';\n\nconst PRODUCT_IMAGE_SRCSET_WIDTHS = [150, 300, 450, 600] as const;\n/** Matches `.s-products-list-vertical-cards`: 2-col below 768px, 4-col above. */\nconst PRODUCT_IMAGE_SIZES = '(min-width: 768px) 25vw, 50vw';\n/** fullImage / minimal slots in FeaturedProductsStyle3 (`lg:grid-cols-2`). */\nconst PRODUCT_WIDE_IMAGE_SIZES = '(min-width: 1024px) 50vw, 100vw';\n\n/** Product card layout variants - mutually exclusive */\nexport type ProductCardLayout = 'vertical' | 'horizontal' | 'fullImage' | 'minimal' | 'special';\n\nexport interface ProductCardProps {\n product: Product;\n layout?: ProductCardLayout;\n className?: string;\n withShadow?: boolean;\n withQuantity?: boolean;\n withoutAddButton?: boolean;\n index?: number;\n imagePriority?: boolean;\n /** Overrides the layout-based image `sizes` hint. */\n sizes?: string;\n}\n\n/**\n * ProductCard - Displays a product in various layouts\n *\n * Layouts:\n * - vertical: Default card with image top, content bottom\n * - horizontal: Side-by-side image and content\n * - fullImage: Full bleed image with overlay content\n * - minimal: Compact version with reduced info\n * - special: Featured card with quantity pie chart\n *\n * Features:\n * - Native lazy loading for images\n * - Product badges (promotion, preorder, quantity, out of stock)\n * - Wishlist toggle button\n * - Price display (sale, starting, regular)\n * - Rating display\n * - Add to cart button via SallaAddProductButton (handles labels internally)\n */\nconst ProductCardContent = memo(function ProductCardContent({\n product,\n layout = 'vertical',\n className = '',\n withShadow = false,\n withQuantity = false,\n withoutAddButton = false,\n index = 0,\n imagePriority = false,\n sizes,\n}: ProductCardProps) {\n const { format } = useMoney();\n const { t } = useTranslation();\n const { store, theme } = useTwilight();\n const wishlist = useWishlist();\n const { isPlaceholder } = useAsset();\n const { format: formatNumber } = useNumber();\n\n // Out-of-stock cards offer \"notify me when available\" instead of a dead button, unless\n // the merchant switched `notify_when_available_in_card` off (Twig theme-raed parity).\n const notifyInCard = theme?.settings?.notify_when_available_in_card !== false;\n const addButtonStatus =\n notifyInCard &&\n product.is_out_of_stock &&\n product.type !== 'donating' &&\n product.type !== 'financial_support'\n ? 'out-and-notify'\n : product.status;\n\n const addButtonRef = useHostAttributes({ fill: 'outline', width: 'wide' });\n\n // Layout flags\n const isVertical = layout === 'vertical';\n const isHorizontal = layout === 'horizontal';\n const isFullImage = layout === 'fullImage';\n const isMinimal = layout === 'minimal';\n const isSpecial = layout === 'special';\n\n // Wishlist status\n const productInWishlist = wishlist.has(Number(product.id));\n const handleWishlistToggle = useCallback(() => {\n wishlist.toggle(Number(product.id));\n }, [wishlist, product.id]);\n\n // Get image fit type from store settings\n const fitImageHeight = store?.settings?.product?.fit_type;\n\n // Product badge component\n const getProductBadge = () => {\n if (product?.preorder?.label && typeof product.preorder.label === 'string') {\n return <div className=\"s-product-card-promotion-title\">{product.preorder.label}</div>;\n }\n if (product.promotion_title) {\n return <div className=\"s-product-card-promotion-title\">{product.promotion_title}</div>;\n }\n if (withQuantity && product?.quantity) {\n const formattedQty = formatNumber(product.quantity);\n return (\n <div className=\"s-product-card-quantity\">\n {t('pages.products.remained', 'Remained')} {formattedQty}\n </div>\n );\n }\n if (withQuantity && product?.is_out_of_stock) {\n return (\n <div className=\"s-product-card-out-badge\">\n {t('pages.products.out_of_stock', 'Out of Stock')}\n </div>\n );\n }\n return null;\n };\n\n // Price display component\n const getProductPrice = () => {\n if (product.is_on_sale && product.sale_price) {\n return (\n <div className=\"s-product-card-sale-price\">\n <h4>{format(product.sale_price)}</h4>\n {product.regular_price && <span>{format(product.regular_price)}</span>}\n </div>\n );\n }\n if (product.starting_price) {\n return (\n <div className=\"s-product-card-starting-price\">\n <p>{t('pages.products.starting_price', 'Starting from')}</p>\n <h4>{format(product.starting_price)}</h4>\n </div>\n );\n }\n return <h4 className=\"s-product-card-price\">{format(product.price)}</h4>;\n };\n\n // Build card class names\n const cardClassName = [\n 's-product-card',\n 's-product-card-entry',\n isVertical ? 's-product-card-vertical' : '',\n isHorizontal ? 's-product-card-horizontal' : '',\n fitImageHeight && isVertical ? `s-product-card-fit-height` : '',\n isSpecial ? 's-product-card-special' : '',\n isFullImage ? 's-product-card-full-image' : '',\n isMinimal ? 's-product-card-minimal' : '',\n product?.donation ? 's-product-card-donation' : '',\n withShadow ? 's-product-card-shadow' : '',\n product?.is_out_of_stock ? 's-product-card-out-of-stock' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Image fit class\n const isProductPlaceholder = isPlaceholder(product.image?.url);\n const imageFitClass = isProductPlaceholder ? 'contain' : fitImageHeight || 'cover';\n\n return (\n <div\n id={`product-card-${product.id}`}\n className={cardClassName}\n data-product-id={product.id}\n style={{\n animationDelay: `${index * 100}ms`,\n }}\n >\n <div className={isFullImage ? 's-product-card-image-full' : 's-product-card-image'}>\n <a href={product.url} aria-label={product.image?.alt || product.name}>\n <Image\n className={`s-product-card-image-${imageFitClass}`}\n src={product.image?.url}\n alt={product.image?.alt ?? product.name}\n width={300}\n height={300}\n sizes={\n sizes ?? (isFullImage || isMinimal ? PRODUCT_WIDE_IMAGE_SIZES : PRODUCT_IMAGE_SIZES)\n }\n srcSetWidths={PRODUCT_IMAGE_SRCSET_WIDTHS}\n aspectRatio=\"1/1\"\n priority={imagePriority}\n />\n {!isFullImage && !isMinimal && getProductBadge()}\n </a>\n {isFullImage && (\n <a href={product.url} aria-label={product.name} className=\"s-product-card-overlay\" />\n )}\n {!isHorizontal && !isFullImage && (\n <SallaButton\n shape=\"icon\"\n fill=\"outline\"\n color=\"light\"\n ariaLabel={t('pages.wishlist.toggle', 'Add or remove to wishlist')}\n className={`s-product-card-wishlist-btn animated ${productInWishlist ? 's-product-card-wishlist-added pulse-anime' : 'not-added un-favorited'}`}\n onClick={handleWishlistToggle}\n data-id={product.id}\n >\n <i className=\"sicon-heart\" />\n </SallaButton>\n )}\n </div>\n <div className=\"s-product-card-content\">\n {/* Special card: quantity pie */}\n {isSpecial && product?.quantity && (\n <div className=\"s-product-card-content-pie\">\n <span>\n <b>{formatNumber(product.quantity)}</b>\n {t('pages.products.remained', 'Remained')}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"-2 -1 36 34\"\n className=\"s-product-card-content-pie-svg\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"15.9155\" className=\"s-product-card-content-pie-svg-base\" />\n <circle cx=\"16\" cy=\"16\" r=\"15.9155\" className=\"s-product-card-content-pie-svg-bar\" />\n </svg>\n </div>\n )}\n\n <div\n className={`s-product-card-content-main ${isSpecial ? 's-product-card-content-extra-padding' : ''}`}\n >\n <h3 className=\"s-product-card-content-title\">\n <a href={product.url}>{product.name}</a>\n </h3>\n {product.subtitle && !isMinimal && (\n <p className=\"s-product-card-content-subtitle opacity-80\">{product.subtitle}</p>\n )}\n </div>\n\n <div\n className={`s-product-card-content-sub ${isSpecial ? 's-product-card-content-extra-padding' : ''}`}\n >\n {!product?.donation?.can_donate && getProductPrice()}\n {product.rating?.stars && (\n <div className=\"s-product-card-rating\">\n <i className=\"sicon-star2 text-orange-300\" />\n <span>{product.rating.stars}</span>\n </div>\n )}\n </div>\n\n {!withoutAddButton && (\n <div className=\"s-product-card-content-footer gap-2\">\n <SallaAddProductButton\n ref={addButtonRef}\n fill=\"outline\"\n width=\"wide\"\n productId={product.id}\n productStatus={addButtonStatus}\n productType={product.type}\n hasPreOrder={product.has_preorder_campaign}\n />\n {(isHorizontal || isFullImage) && (\n <SallaButton\n shape=\"icon\"\n fill=\"outline\"\n color=\"light\"\n ariaLabel={t('pages.wishlist.toggle', 'Add or remove to wishlist')}\n className={`s-product-card-wishlist-btn animated ${productInWishlist ? 's-product-card-wishlist-added pulse-anime' : 'not-added un-favorited'}`}\n onClick={handleWishlistToggle}\n data-id={product.id}\n >\n <i className=\"sicon-heart\" />\n </SallaButton>\n )}\n </div>\n )}\n </div>\n </div>\n );\n});\n\nexport const ProductCard = memo(function ProductCard(props: ProductCardProps) {\n const Component = useMemo(() => {\n const hasOverride = registry.getOriginal<ProductCardProps>(PRODUCT_CARD_KEY) !== null;\n if (hasOverride) {\n return registry.resolve<ProductCardProps>(PRODUCT_CARD_KEY);\n }\n return null;\n }, []);\n\n if (Component) {\n return <Component {...props} />;\n }\n\n return <ProductCardContent {...props} />;\n});\n\nexport default ProductCard;\n"]}