@salla.sa/twilight-theme-engine 1.0.0-beta.4

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 (998) hide show
  1. package/README.md +165 -0
  2. package/dist/AddToCartForm-HOWNKCKX.js +304 -0
  3. package/dist/AddToCartForm-HOWNKCKX.js.map +1 -0
  4. package/dist/BlogAuthorPage-W3BZIJHJ.js +101 -0
  5. package/dist/BlogAuthorPage-W3BZIJHJ.js.map +1 -0
  6. package/dist/BlogCategoryPage-AIAJ5JBR.js +101 -0
  7. package/dist/BlogCategoryPage-AIAJ5JBR.js.map +1 -0
  8. package/dist/BlogPage-4BYF2EQW.js +190 -0
  9. package/dist/BlogPage-4BYF2EQW.js.map +1 -0
  10. package/dist/BlogSinglePage-AMNAUMWW.js +187 -0
  11. package/dist/BlogSinglePage-AMNAUMWW.js.map +1 -0
  12. package/dist/BlogTagPage-ELG2H5N5.js +101 -0
  13. package/dist/BlogTagPage-ELG2H5N5.js.map +1 -0
  14. package/dist/BrandsPage-ZSO3PYAV.js +127 -0
  15. package/dist/BrandsPage-ZSO3PYAV.js.map +1 -0
  16. package/dist/Breadcrumb-N32QFMVK.js +152 -0
  17. package/dist/Breadcrumb-N32QFMVK.js.map +1 -0
  18. package/dist/CartItem-SGTGOTEC.js +171 -0
  19. package/dist/CartItem-SGTGOTEC.js.map +1 -0
  20. package/dist/CartSummary-OKDGVSX2.js +236 -0
  21. package/dist/CartSummary-OKDGVSX2.js.map +1 -0
  22. package/dist/Copyright-F3HLYXFJ.js +9 -0
  23. package/dist/Copyright-F3HLYXFJ.js.map +1 -0
  24. package/dist/CurrencySymbol-TARAYUOT.js +11 -0
  25. package/dist/CurrencySymbol-TARAYUOT.js.map +1 -0
  26. package/dist/CustomerLayout-LB4E2LHT.js +68 -0
  27. package/dist/CustomerLayout-LB4E2LHT.js.map +1 -0
  28. package/dist/ErrorPage-TK4U3ENF.js +6 -0
  29. package/dist/ErrorPage-TK4U3ENF.js.map +1 -0
  30. package/dist/Footer-UVCSKTW3.js +39 -0
  31. package/dist/Footer-UVCSKTW3.js.map +1 -0
  32. package/dist/GoogleTag-4LHWC365.js +52 -0
  33. package/dist/GoogleTag-4LHWC365.js.map +1 -0
  34. package/dist/Header-BF6SPZJC.js +15 -0
  35. package/dist/Header-BF6SPZJC.js.map +1 -0
  36. package/dist/ImageModal-WLJM3WIE.js +41 -0
  37. package/dist/ImageModal-WLJM3WIE.js.map +1 -0
  38. package/dist/LoyaltyPage-X4PHPUFC.js +188 -0
  39. package/dist/LoyaltyPage-X4PHPUFC.js.map +1 -0
  40. package/dist/MainMenu-R3EWTNNC.js +91 -0
  41. package/dist/MainMenu-R3EWTNNC.js.map +1 -0
  42. package/dist/MasterLayout-5JLM7IMW.js +39 -0
  43. package/dist/MasterLayout-5JLM7IMW.js.map +1 -0
  44. package/dist/MobileMenu-QXESUQXC.js +175 -0
  45. package/dist/MobileMenu-QXESUQXC.js.map +1 -0
  46. package/dist/NoContent-PBGESHBJ.js +21 -0
  47. package/dist/NoContent-PBGESHBJ.js.map +1 -0
  48. package/dist/NotificationsPage-V6UIPDJD.js +84 -0
  49. package/dist/NotificationsPage-V6UIPDJD.js.map +1 -0
  50. package/dist/OrderSinglePage-ZMEKPLE3.js +441 -0
  51. package/dist/OrderSinglePage-ZMEKPLE3.js.map +1 -0
  52. package/dist/OrdersPage-EAATVPYK.js +184 -0
  53. package/dist/OrdersPage-EAATVPYK.js.map +1 -0
  54. package/dist/PageSingle-Y6ARZ5LS.js +28 -0
  55. package/dist/PageSingle-Y6ARZ5LS.js.map +1 -0
  56. package/dist/PreOrderNotification-ZVTGNV7K.js +23 -0
  57. package/dist/PreOrderNotification-ZVTGNV7K.js.map +1 -0
  58. package/dist/PriceQuoteButton-RAAPL4N4.js +26 -0
  59. package/dist/PriceQuoteButton-RAAPL4N4.js.map +1 -0
  60. package/dist/ProductDetails-KTY4ZSFM.js +194 -0
  61. package/dist/ProductDetails-KTY4ZSFM.js.map +1 -0
  62. package/dist/ProfilePage-6SK34MDJ.js +64 -0
  63. package/dist/ProfilePage-6SK34MDJ.js.map +1 -0
  64. package/dist/RenderWhenVisible-TR7G2KUC.js +50 -0
  65. package/dist/RenderWhenVisible-TR7G2KUC.js.map +1 -0
  66. package/dist/SeoCartWidget-XF4GEJK7.js +109 -0
  67. package/dist/SeoCartWidget-XF4GEJK7.js.map +1 -0
  68. package/dist/SettingsPage-DPYARBPO.js +51 -0
  69. package/dist/SettingsPage-DPYARBPO.js.map +1 -0
  70. package/dist/SiftSnippet-X74S5KDO.js +29 -0
  71. package/dist/SiftSnippet-X74S5KDO.js.map +1 -0
  72. package/dist/StoreClosedNotification-KSB2GPEZ.js +91 -0
  73. package/dist/StoreClosedNotification-KSB2GPEZ.js.map +1 -0
  74. package/dist/Testimonials-MZCVP66E.js +26 -0
  75. package/dist/Testimonials-MZCVP66E.js.map +1 -0
  76. package/dist/TestimonialsPage-4OFS5Z4V.js +77 -0
  77. package/dist/TestimonialsPage-4OFS5Z4V.js.map +1 -0
  78. package/dist/ThankYouPage-C7PA3RJP.js +236 -0
  79. package/dist/ThankYouPage-C7PA3RJP.js.map +1 -0
  80. package/dist/TwilightBundles-5F2H75VV.js +46 -0
  81. package/dist/TwilightBundles-5F2H75VV.js.map +1 -0
  82. package/dist/WalletPage-66XGZKO7.js +189 -0
  83. package/dist/WalletPage-66XGZKO7.js.map +1 -0
  84. package/dist/WidgetHead-FXEPCB23.js +7 -0
  85. package/dist/WidgetHead-FXEPCB23.js.map +1 -0
  86. package/dist/WishlistPage-7ZZYHBSZ.js +144 -0
  87. package/dist/WishlistPage-7ZZYHBSZ.js.map +1 -0
  88. package/dist/ambient/salla-components.d.ts +312 -0
  89. package/dist/ambient/virtual-modules.d.ts +22 -0
  90. package/dist/api/apps.d.ts +28 -0
  91. package/dist/api/apps.d.ts.map +1 -0
  92. package/dist/api/apps.js +26 -0
  93. package/dist/api/apps.js.map +1 -0
  94. package/dist/api/blog.d.ts +61 -0
  95. package/dist/api/blog.d.ts.map +1 -0
  96. package/dist/api/brands.d.ts +25 -0
  97. package/dist/api/brands.d.ts.map +1 -0
  98. package/dist/api/brands.js +40 -0
  99. package/dist/api/brands.js.map +1 -0
  100. package/dist/api/cart.d.ts +21 -0
  101. package/dist/api/cart.d.ts.map +1 -0
  102. package/dist/api/cart.js +40 -0
  103. package/dist/api/cart.js.map +1 -0
  104. package/dist/api/category.d.ts +31 -0
  105. package/dist/api/category.d.ts.map +1 -0
  106. package/dist/api/category.js +40 -0
  107. package/dist/api/category.js.map +1 -0
  108. package/dist/api/client.d.ts +17 -0
  109. package/dist/api/client.d.ts.map +1 -0
  110. package/dist/api/client.js +7 -0
  111. package/dist/api/client.js.map +1 -0
  112. package/dist/api/home.d.ts +15 -0
  113. package/dist/api/home.d.ts.map +1 -0
  114. package/dist/api/home.js +8 -0
  115. package/dist/api/home.js.map +1 -0
  116. package/dist/api/loyalty.d.ts +25 -0
  117. package/dist/api/loyalty.d.ts.map +1 -0
  118. package/dist/api/loyalty.js +40 -0
  119. package/dist/api/loyalty.js.map +1 -0
  120. package/dist/api/menu.d.ts +16 -0
  121. package/dist/api/menu.d.ts.map +1 -0
  122. package/dist/api/menu.js +8 -0
  123. package/dist/api/menu.js.map +1 -0
  124. package/dist/api/notification.d.ts +26 -0
  125. package/dist/api/notification.d.ts.map +1 -0
  126. package/dist/api/order.d.ts +74 -0
  127. package/dist/api/order.d.ts.map +1 -0
  128. package/dist/api/order.js +40 -0
  129. package/dist/api/order.js.map +1 -0
  130. package/dist/api/page.d.ts +16 -0
  131. package/dist/api/page.d.ts.map +1 -0
  132. package/dist/api/page.js +40 -0
  133. package/dist/api/page.js.map +1 -0
  134. package/dist/api/product.d.ts +80 -0
  135. package/dist/api/product.d.ts.map +1 -0
  136. package/dist/api/product.js +40 -0
  137. package/dist/api/product.js.map +1 -0
  138. package/dist/api/profile.d.ts +9 -0
  139. package/dist/api/profile.d.ts.map +1 -0
  140. package/dist/api/profile.js +23 -0
  141. package/dist/api/profile.js.map +1 -0
  142. package/dist/api/store.d.ts +46 -0
  143. package/dist/api/store.d.ts.map +1 -0
  144. package/dist/api/store.js +8 -0
  145. package/dist/api/store.js.map +1 -0
  146. package/dist/api/translations.d.ts +15 -0
  147. package/dist/api/translations.d.ts.map +1 -0
  148. package/dist/api/translations.js +8 -0
  149. package/dist/api/translations.js.map +1 -0
  150. package/dist/api/types.d.ts +54 -0
  151. package/dist/api/types.d.ts.map +1 -0
  152. package/dist/api/types.js +3 -0
  153. package/dist/api/types.js.map +1 -0
  154. package/dist/api/user.d.ts +15 -0
  155. package/dist/api/user.d.ts.map +1 -0
  156. package/dist/api/user.js +8 -0
  157. package/dist/api/user.js.map +1 -0
  158. package/dist/api/wallet.d.ts +30 -0
  159. package/dist/api/wallet.d.ts.map +1 -0
  160. package/dist/api/wishlist.d.ts +25 -0
  161. package/dist/api/wishlist.d.ts.map +1 -0
  162. package/dist/chunk-25SSLQAJ.js +67 -0
  163. package/dist/chunk-25SSLQAJ.js.map +1 -0
  164. package/dist/chunk-2FU6CVSB.js +18 -0
  165. package/dist/chunk-2FU6CVSB.js.map +1 -0
  166. package/dist/chunk-2KF5JJU6.js +169 -0
  167. package/dist/chunk-2KF5JJU6.js.map +1 -0
  168. package/dist/chunk-2TB2LTL2.js +103 -0
  169. package/dist/chunk-2TB2LTL2.js.map +1 -0
  170. package/dist/chunk-3DCZJDDK.js +10 -0
  171. package/dist/chunk-3DCZJDDK.js.map +1 -0
  172. package/dist/chunk-3UHSMGPY.js +145 -0
  173. package/dist/chunk-3UHSMGPY.js.map +1 -0
  174. package/dist/chunk-4EQEYRZ7.js +65 -0
  175. package/dist/chunk-4EQEYRZ7.js.map +1 -0
  176. package/dist/chunk-562ZMVI3.js +592 -0
  177. package/dist/chunk-562ZMVI3.js.map +1 -0
  178. package/dist/chunk-5Q6PFLDN.js +20 -0
  179. package/dist/chunk-5Q6PFLDN.js.map +1 -0
  180. package/dist/chunk-6B6VCCMC.js +28 -0
  181. package/dist/chunk-6B6VCCMC.js.map +1 -0
  182. package/dist/chunk-6BZ5TKEV.js +44 -0
  183. package/dist/chunk-6BZ5TKEV.js.map +1 -0
  184. package/dist/chunk-6NBBXERE.js +24 -0
  185. package/dist/chunk-6NBBXERE.js.map +1 -0
  186. package/dist/chunk-6Q5BFHFA.js +88 -0
  187. package/dist/chunk-6Q5BFHFA.js.map +1 -0
  188. package/dist/chunk-6YX4RS55.js +33 -0
  189. package/dist/chunk-6YX4RS55.js.map +1 -0
  190. package/dist/chunk-7LP7D75V.js +14 -0
  191. package/dist/chunk-7LP7D75V.js.map +1 -0
  192. package/dist/chunk-A5ZRUAMT.js +16 -0
  193. package/dist/chunk-A5ZRUAMT.js.map +1 -0
  194. package/dist/chunk-B3EFOE57.js +32 -0
  195. package/dist/chunk-B3EFOE57.js.map +1 -0
  196. package/dist/chunk-BT6HEEAP.js +31 -0
  197. package/dist/chunk-BT6HEEAP.js.map +1 -0
  198. package/dist/chunk-BVSJPBJ6.js +26 -0
  199. package/dist/chunk-BVSJPBJ6.js.map +1 -0
  200. package/dist/chunk-BWFBVXT3.js +13 -0
  201. package/dist/chunk-BWFBVXT3.js.map +1 -0
  202. package/dist/chunk-CW625T2E.js +62 -0
  203. package/dist/chunk-CW625T2E.js.map +1 -0
  204. package/dist/chunk-DFMO5KBU.js +67 -0
  205. package/dist/chunk-DFMO5KBU.js.map +1 -0
  206. package/dist/chunk-DGUM43GV.js +10 -0
  207. package/dist/chunk-DGUM43GV.js.map +1 -0
  208. package/dist/chunk-EQ5ZGAVR.js +89 -0
  209. package/dist/chunk-EQ5ZGAVR.js.map +1 -0
  210. package/dist/chunk-FBFPH5BB.js +34 -0
  211. package/dist/chunk-FBFPH5BB.js.map +1 -0
  212. package/dist/chunk-G7ALL4BC.js +52 -0
  213. package/dist/chunk-G7ALL4BC.js.map +1 -0
  214. package/dist/chunk-GBWCXUPD.js +99 -0
  215. package/dist/chunk-GBWCXUPD.js.map +1 -0
  216. package/dist/chunk-GLM3RPCP.js +1167 -0
  217. package/dist/chunk-GLM3RPCP.js.map +1 -0
  218. package/dist/chunk-GN34LCTG.js +92 -0
  219. package/dist/chunk-GN34LCTG.js.map +1 -0
  220. package/dist/chunk-GO34DE35.js +247 -0
  221. package/dist/chunk-GO34DE35.js.map +1 -0
  222. package/dist/chunk-HOSHJBPS.js +52 -0
  223. package/dist/chunk-HOSHJBPS.js.map +1 -0
  224. package/dist/chunk-I5Z4NJBB.js +17 -0
  225. package/dist/chunk-I5Z4NJBB.js.map +1 -0
  226. package/dist/chunk-J37AYLWL.js +66 -0
  227. package/dist/chunk-J37AYLWL.js.map +1 -0
  228. package/dist/chunk-KCKHA75V.js +19 -0
  229. package/dist/chunk-KCKHA75V.js.map +1 -0
  230. package/dist/chunk-KIPZQN3Y.js +158 -0
  231. package/dist/chunk-KIPZQN3Y.js.map +1 -0
  232. package/dist/chunk-LBUMC5PB.js +34 -0
  233. package/dist/chunk-LBUMC5PB.js.map +1 -0
  234. package/dist/chunk-LSDIFHXZ.js +80 -0
  235. package/dist/chunk-LSDIFHXZ.js.map +1 -0
  236. package/dist/chunk-M6ICEIWY.js +25 -0
  237. package/dist/chunk-M6ICEIWY.js.map +1 -0
  238. package/dist/chunk-MTONGOJD.js +42 -0
  239. package/dist/chunk-MTONGOJD.js.map +1 -0
  240. package/dist/chunk-MXQCE3KA.js +173 -0
  241. package/dist/chunk-MXQCE3KA.js.map +1 -0
  242. package/dist/chunk-N5RSKJP4.js +65 -0
  243. package/dist/chunk-N5RSKJP4.js.map +1 -0
  244. package/dist/chunk-N7CCSGZF.js +3 -0
  245. package/dist/chunk-N7CCSGZF.js.map +1 -0
  246. package/dist/chunk-NBHI5X36.js +27 -0
  247. package/dist/chunk-NBHI5X36.js.map +1 -0
  248. package/dist/chunk-NSX6XPDU.js +673 -0
  249. package/dist/chunk-NSX6XPDU.js.map +1 -0
  250. package/dist/chunk-O2UOV5RK.js +32 -0
  251. package/dist/chunk-O2UOV5RK.js.map +1 -0
  252. package/dist/chunk-OZTGUF7K.js +66 -0
  253. package/dist/chunk-OZTGUF7K.js.map +1 -0
  254. package/dist/chunk-Q3VACSSR.js +21 -0
  255. package/dist/chunk-Q3VACSSR.js.map +1 -0
  256. package/dist/chunk-QTDGM2SO.js +123 -0
  257. package/dist/chunk-QTDGM2SO.js.map +1 -0
  258. package/dist/chunk-QYL5OHAV.js +70 -0
  259. package/dist/chunk-QYL5OHAV.js.map +1 -0
  260. package/dist/chunk-RH32IGQD.js +372 -0
  261. package/dist/chunk-RH32IGQD.js.map +1 -0
  262. package/dist/chunk-RUHSV4Z6.js +12 -0
  263. package/dist/chunk-RUHSV4Z6.js.map +1 -0
  264. package/dist/chunk-RYBA3JDM.js +33 -0
  265. package/dist/chunk-RYBA3JDM.js.map +1 -0
  266. package/dist/chunk-SBIXBX6J.js +29 -0
  267. package/dist/chunk-SBIXBX6J.js.map +1 -0
  268. package/dist/chunk-SSRNIBVV.js +75 -0
  269. package/dist/chunk-SSRNIBVV.js.map +1 -0
  270. package/dist/chunk-SVZOWI7E.js +51 -0
  271. package/dist/chunk-SVZOWI7E.js.map +1 -0
  272. package/dist/chunk-SYHTMNYF.js +89 -0
  273. package/dist/chunk-SYHTMNYF.js.map +1 -0
  274. package/dist/chunk-T72DAX7R.js +65 -0
  275. package/dist/chunk-T72DAX7R.js.map +1 -0
  276. package/dist/chunk-TCSNNCRH.js +23 -0
  277. package/dist/chunk-TCSNNCRH.js.map +1 -0
  278. package/dist/chunk-TQLEQSXE.js +48 -0
  279. package/dist/chunk-TQLEQSXE.js.map +1 -0
  280. package/dist/chunk-TRUQDEMI.js +14 -0
  281. package/dist/chunk-TRUQDEMI.js.map +1 -0
  282. package/dist/chunk-TZ3E5BN4.js +91 -0
  283. package/dist/chunk-TZ3E5BN4.js.map +1 -0
  284. package/dist/chunk-TZ4YD5CU.js +16 -0
  285. package/dist/chunk-TZ4YD5CU.js.map +1 -0
  286. package/dist/chunk-U7HAK5U7.js +105 -0
  287. package/dist/chunk-U7HAK5U7.js.map +1 -0
  288. package/dist/chunk-UE3BUFZI.js +16 -0
  289. package/dist/chunk-UE3BUFZI.js.map +1 -0
  290. package/dist/chunk-UIX3W2PN.js +56 -0
  291. package/dist/chunk-UIX3W2PN.js.map +1 -0
  292. package/dist/chunk-VVRYP6IL.js +61 -0
  293. package/dist/chunk-VVRYP6IL.js.map +1 -0
  294. package/dist/chunk-VVZNW5CB.js +49 -0
  295. package/dist/chunk-VVZNW5CB.js.map +1 -0
  296. package/dist/chunk-XHGF75TM.js +133 -0
  297. package/dist/chunk-XHGF75TM.js.map +1 -0
  298. package/dist/chunk-XUI3TRXF.js +26 -0
  299. package/dist/chunk-XUI3TRXF.js.map +1 -0
  300. package/dist/chunk-YCYTBRYB.js +30 -0
  301. package/dist/chunk-YCYTBRYB.js.map +1 -0
  302. package/dist/chunk-YMVLYYLU.js +25 -0
  303. package/dist/chunk-YMVLYYLU.js.map +1 -0
  304. package/dist/chunk-Z653O7MX.js +10 -0
  305. package/dist/chunk-Z653O7MX.js.map +1 -0
  306. package/dist/chunk-ZCH7W7DZ.js +30 -0
  307. package/dist/chunk-ZCH7W7DZ.js.map +1 -0
  308. package/dist/components/Component.d.ts +8 -0
  309. package/dist/components/Component.d.ts.map +1 -0
  310. package/dist/components/ComponentRegistry.d.ts +19 -0
  311. package/dist/components/ComponentRegistry.d.ts.map +1 -0
  312. package/dist/components/cart/CartItem.d.ts +8 -0
  313. package/dist/components/cart/CartItem.d.ts.map +1 -0
  314. package/dist/components/cart/CartSummary.d.ts +12 -0
  315. package/dist/components/cart/CartSummary.d.ts.map +1 -0
  316. package/dist/components/cart/PreOrderNotification.d.ts +2 -0
  317. package/dist/components/cart/PreOrderNotification.d.ts.map +1 -0
  318. package/dist/components/cart/PriceQuoteButton.d.ts +2 -0
  319. package/dist/components/cart/PriceQuoteButton.d.ts.map +1 -0
  320. package/dist/components/cart/SeoCartWidget.d.ts +34 -0
  321. package/dist/components/cart/SeoCartWidget.d.ts.map +1 -0
  322. package/dist/components/cart/index.d.ts +4 -0
  323. package/dist/components/cart/index.d.ts.map +1 -0
  324. package/dist/components/cart/index.js +4 -0
  325. package/dist/components/cart/index.js.map +1 -0
  326. package/dist/components/cart/lazy.d.ts +8 -0
  327. package/dist/components/cart/lazy.d.ts.map +1 -0
  328. package/dist/components/collapse/Collapse.d.ts +51 -0
  329. package/dist/components/collapse/Collapse.d.ts.map +1 -0
  330. package/dist/components/collapse/index.d.ts +36 -0
  331. package/dist/components/collapse/index.d.ts.map +1 -0
  332. package/dist/components/collapse/index.js +44 -0
  333. package/dist/components/collapse/index.js.map +1 -0
  334. package/dist/components/common/Breadcrumb.d.ts +7 -0
  335. package/dist/components/common/Breadcrumb.d.ts.map +1 -0
  336. package/dist/components/common/BreadcrumbJsonLd.d.ts +8 -0
  337. package/dist/components/common/BreadcrumbJsonLd.d.ts.map +1 -0
  338. package/dist/components/common/BreadcrumbTrail.d.ts +8 -0
  339. package/dist/components/common/BreadcrumbTrail.d.ts.map +1 -0
  340. package/dist/components/common/CurrencySymbol.d.ts +8 -0
  341. package/dist/components/common/CurrencySymbol.d.ts.map +1 -0
  342. package/dist/components/common/DeferredData.d.ts +20 -0
  343. package/dist/components/common/DeferredData.d.ts.map +1 -0
  344. package/dist/components/common/ErrorPage.d.ts +18 -0
  345. package/dist/components/common/ErrorPage.d.ts.map +1 -0
  346. package/dist/components/common/Image.d.ts +28 -0
  347. package/dist/components/common/Image.d.ts.map +1 -0
  348. package/dist/components/common/Link.d.ts +21 -0
  349. package/dist/components/common/Link.d.ts.map +1 -0
  350. package/dist/components/common/Link.types.d.ts +82 -0
  351. package/dist/components/common/Link.types.d.ts.map +1 -0
  352. package/dist/components/common/NoContent.d.ts +9 -0
  353. package/dist/components/common/NoContent.d.ts.map +1 -0
  354. package/dist/components/common/RenderWhenVisible.d.ts +23 -0
  355. package/dist/components/common/RenderWhenVisible.d.ts.map +1 -0
  356. package/dist/components/common/index.d.ts +11 -0
  357. package/dist/components/common/index.d.ts.map +1 -0
  358. package/dist/components/common/index.js +6 -0
  359. package/dist/components/common/index.js.map +1 -0
  360. package/dist/components/common/lazy.d.ts +13 -0
  361. package/dist/components/common/lazy.d.ts.map +1 -0
  362. package/dist/components/common/types.d.ts +7 -0
  363. package/dist/components/common/types.d.ts.map +1 -0
  364. package/dist/components/defineComponent.d.ts +11 -0
  365. package/dist/components/defineComponent.d.ts.map +1 -0
  366. package/dist/components/drawer/Drawer.d.ts +53 -0
  367. package/dist/components/drawer/Drawer.d.ts.map +1 -0
  368. package/dist/components/drawer/index.d.ts +32 -0
  369. package/dist/components/drawer/index.d.ts.map +1 -0
  370. package/dist/components/drawer/index.js +40 -0
  371. package/dist/components/drawer/index.js.map +1 -0
  372. package/dist/components/dropdown/Dropdown.d.ts +63 -0
  373. package/dist/components/dropdown/Dropdown.d.ts.map +1 -0
  374. package/dist/components/dropdown/index.d.ts +34 -0
  375. package/dist/components/dropdown/index.d.ts.map +1 -0
  376. package/dist/components/dropdown/index.js +67 -0
  377. package/dist/components/dropdown/index.js.map +1 -0
  378. package/dist/components/home/BundleComponent.d.ts +9 -0
  379. package/dist/components/home/BundleComponent.d.ts.map +1 -0
  380. package/dist/components/home/ComponentErrorBoundary.d.ts +22 -0
  381. package/dist/components/home/ComponentErrorBoundary.d.ts.map +1 -0
  382. package/dist/components/home/FeaturedProductsStyle1.d.ts +26 -0
  383. package/dist/components/home/FeaturedProductsStyle1.d.ts.map +1 -0
  384. package/dist/components/home/FeaturedProductsStyle2.d.ts +25 -0
  385. package/dist/components/home/FeaturedProductsStyle2.d.ts.map +1 -0
  386. package/dist/components/home/FeaturedProductsStyle3.d.ts +20 -0
  387. package/dist/components/home/FeaturedProductsStyle3.d.ts.map +1 -0
  388. package/dist/components/home/FixedBanner.d.ts +16 -0
  389. package/dist/components/home/FixedBanner.d.ts.map +1 -0
  390. package/dist/components/home/FixedProducts.d.ts +18 -0
  391. package/dist/components/home/FixedProducts.d.ts.map +1 -0
  392. package/dist/components/home/HomePageRenderer.d.ts +37 -0
  393. package/dist/components/home/HomePageRenderer.d.ts.map +1 -0
  394. package/dist/components/home/ParallaxBackground.d.ts +17 -0
  395. package/dist/components/home/ParallaxBackground.d.ts.map +1 -0
  396. package/dist/components/home/PhotosSlider.d.ts +16 -0
  397. package/dist/components/home/PhotosSlider.d.ts.map +1 -0
  398. package/dist/components/home/ProductsSlider.d.ts +25 -0
  399. package/dist/components/home/ProductsSlider.d.ts.map +1 -0
  400. package/dist/components/home/SquarePhotos.d.ts +21 -0
  401. package/dist/components/home/SquarePhotos.d.ts.map +1 -0
  402. package/dist/components/home/StoreFeatures.d.ts +9 -0
  403. package/dist/components/home/StoreFeatures.d.ts.map +1 -0
  404. package/dist/components/home/Testimonials.d.ts +15 -0
  405. package/dist/components/home/Testimonials.d.ts.map +1 -0
  406. package/dist/components/home/Youtube.d.ts +9 -0
  407. package/dist/components/home/Youtube.d.ts.map +1 -0
  408. package/dist/components/home/index.d.ts +9 -0
  409. package/dist/components/home/index.d.ts.map +1 -0
  410. package/dist/components/home/index.js +43 -0
  411. package/dist/components/home/index.js.map +1 -0
  412. package/dist/components/home/lazy.d.ts +14 -0
  413. package/dist/components/home/lazy.d.ts.map +1 -0
  414. package/dist/components/home/register.d.ts +4 -0
  415. package/dist/components/home/register.d.ts.map +1 -0
  416. package/dist/components/home/types.d.ts +6 -0
  417. package/dist/components/home/types.d.ts.map +1 -0
  418. package/dist/components/layout/Copyright.d.ts +8 -0
  419. package/dist/components/layout/Copyright.d.ts.map +1 -0
  420. package/dist/components/layout/CustomerLayout.d.ts +8 -0
  421. package/dist/components/layout/CustomerLayout.d.ts.map +1 -0
  422. package/dist/components/layout/Footer.d.ts +2 -0
  423. package/dist/components/layout/Footer.d.ts.map +1 -0
  424. package/dist/components/layout/Header.d.ts +7 -0
  425. package/dist/components/layout/Header.d.ts.map +1 -0
  426. package/dist/components/layout/MasterLayout.d.ts +3 -0
  427. package/dist/components/layout/MasterLayout.d.ts.map +1 -0
  428. package/dist/components/layout/WidgetHead.d.ts +21 -0
  429. package/dist/components/layout/WidgetHead.d.ts.map +1 -0
  430. package/dist/components/layout/index.d.ts +5 -0
  431. package/dist/components/layout/index.d.ts.map +1 -0
  432. package/dist/components/layout/index.js +25 -0
  433. package/dist/components/layout/index.js.map +1 -0
  434. package/dist/components/layout/lazy.d.ts +11 -0
  435. package/dist/components/layout/lazy.d.ts.map +1 -0
  436. package/dist/components/layout/types.d.ts +10 -0
  437. package/dist/components/layout/types.d.ts.map +1 -0
  438. package/dist/components/modal/ImageModal.d.ts +37 -0
  439. package/dist/components/modal/ImageModal.d.ts.map +1 -0
  440. package/dist/components/modal/Modal.d.ts +78 -0
  441. package/dist/components/modal/Modal.d.ts.map +1 -0
  442. package/dist/components/modal/index.d.ts +30 -0
  443. package/dist/components/modal/index.d.ts.map +1 -0
  444. package/dist/components/modal/index.js +5 -0
  445. package/dist/components/modal/index.js.map +1 -0
  446. package/dist/components/modal/lazy.d.ts +7 -0
  447. package/dist/components/modal/lazy.d.ts.map +1 -0
  448. package/dist/components/navigation/MainMenu.d.ts +2 -0
  449. package/dist/components/navigation/MainMenu.d.ts.map +1 -0
  450. package/dist/components/navigation/MobileMenu.d.ts +6 -0
  451. package/dist/components/navigation/MobileMenu.d.ts.map +1 -0
  452. package/dist/components/navigation/index.d.ts +3 -0
  453. package/dist/components/navigation/index.d.ts.map +1 -0
  454. package/dist/components/navigation/lazy.d.ts +7 -0
  455. package/dist/components/navigation/lazy.d.ts.map +1 -0
  456. package/dist/components/product/AddToCartForm.d.ts +12 -0
  457. package/dist/components/product/AddToCartForm.d.ts.map +1 -0
  458. package/dist/components/product/ProductCard.d.ts +16 -0
  459. package/dist/components/product/ProductCard.d.ts.map +1 -0
  460. package/dist/components/product/ProductDetails.d.ts +8 -0
  461. package/dist/components/product/ProductDetails.d.ts.map +1 -0
  462. package/dist/components/product/ProductGallery.d.ts +7 -0
  463. package/dist/components/product/ProductGallery.d.ts.map +1 -0
  464. package/dist/components/product/index.d.ts +8 -0
  465. package/dist/components/product/index.d.ts.map +1 -0
  466. package/dist/components/product/index.js +41 -0
  467. package/dist/components/product/index.js.map +1 -0
  468. package/dist/components/product/lazy.d.ts +3 -0
  469. package/dist/components/product/lazy.d.ts.map +1 -0
  470. package/dist/components/store/StoreClosedNotification.d.ts +17 -0
  471. package/dist/components/store/StoreClosedNotification.d.ts.map +1 -0
  472. package/dist/components/store/index.d.ts +3 -0
  473. package/dist/components/store/index.d.ts.map +1 -0
  474. package/dist/components/store/lazy.d.ts +3 -0
  475. package/dist/components/store/lazy.d.ts.map +1 -0
  476. package/dist/components/toast/Toaster.d.ts +8 -0
  477. package/dist/components/toast/Toaster.d.ts.map +1 -0
  478. package/dist/components/toast/index.d.ts +4 -0
  479. package/dist/components/toast/index.d.ts.map +1 -0
  480. package/dist/components/toast/index.js +5 -0
  481. package/dist/components/toast/index.js.map +1 -0
  482. package/dist/components/toast/types.d.ts +27 -0
  483. package/dist/components/toast/types.d.ts.map +1 -0
  484. package/dist/components/toast/useToast.d.ts +5 -0
  485. package/dist/components/toast/useToast.d.ts.map +1 -0
  486. package/dist/components/tracking/GoogleTag.d.ts +13 -0
  487. package/dist/components/tracking/GoogleTag.d.ts.map +1 -0
  488. package/dist/components/tracking/SiftSnippet.d.ts +16 -0
  489. package/dist/components/tracking/SiftSnippet.d.ts.map +1 -0
  490. package/dist/components/tracking/TwilightBundles.d.ts +11 -0
  491. package/dist/components/tracking/TwilightBundles.d.ts.map +1 -0
  492. package/dist/components/tracking/index.d.ts +5 -0
  493. package/dist/components/tracking/index.d.ts.map +1 -0
  494. package/dist/components/tracking/lazy.d.ts +5 -0
  495. package/dist/components/tracking/lazy.d.ts.map +1 -0
  496. package/dist/components/useComponent.d.ts +4 -0
  497. package/dist/components/useComponent.d.ts.map +1 -0
  498. package/dist/contexts/CartContext.d.ts +34 -0
  499. package/dist/contexts/CartContext.d.ts.map +1 -0
  500. package/dist/contexts/ProductContext.d.ts +34 -0
  501. package/dist/contexts/ProductContext.d.ts.map +1 -0
  502. package/dist/contexts/index.d.ts +3 -0
  503. package/dist/contexts/index.d.ts.map +1 -0
  504. package/dist/document-class-PLK3HUM6.js +21 -0
  505. package/dist/document-class-PLK3HUM6.js.map +1 -0
  506. package/dist/dom/document.d.ts +26 -0
  507. package/dist/dom/document.d.ts.map +1 -0
  508. package/dist/dom/index.d.ts +24 -0
  509. package/dist/dom/index.d.ts.map +1 -0
  510. package/dist/dom.d.ts +1 -0
  511. package/dist/dom.js +18 -0
  512. package/dist/dom.js.map +1 -0
  513. package/dist/eslint/index.d.ts +17 -0
  514. package/dist/eslint/index.d.ts.map +1 -0
  515. package/dist/eslint/index.js +86 -0
  516. package/dist/eslint/index.js.map +1 -0
  517. package/dist/hooks/HookRegistry.d.ts +47 -0
  518. package/dist/hooks/HookRegistry.d.ts.map +1 -0
  519. package/dist/hooks/HookRegistry.js +4 -0
  520. package/dist/hooks/HookRegistry.js.map +1 -0
  521. package/dist/hooks/HookSlot.d.ts +96 -0
  522. package/dist/hooks/HookSlot.d.ts.map +1 -0
  523. package/dist/hooks/HookSlot.js +6 -0
  524. package/dist/hooks/HookSlot.js.map +1 -0
  525. package/dist/hooks/index.d.ts +27 -0
  526. package/dist/hooks/index.d.ts.map +1 -0
  527. package/dist/hooks/index.js +39 -0
  528. package/dist/hooks/index.js.map +1 -0
  529. package/dist/hooks/registerDefaultHooks.d.ts +18 -0
  530. package/dist/hooks/registerDefaultHooks.d.ts.map +1 -0
  531. package/dist/hooks/types.d.ts +100 -0
  532. package/dist/hooks/types.d.ts.map +1 -0
  533. package/dist/hooks/useAsset.d.ts +26 -0
  534. package/dist/hooks/useAsset.d.ts.map +1 -0
  535. package/dist/hooks/useAsset.js +5 -0
  536. package/dist/hooks/useAsset.js.map +1 -0
  537. package/dist/hooks/useAsyncFn.d.ts +68 -0
  538. package/dist/hooks/useAsyncFn.d.ts.map +1 -0
  539. package/dist/hooks/useAsyncFn.js +4 -0
  540. package/dist/hooks/useAsyncFn.js.map +1 -0
  541. package/dist/hooks/useBlogLike.d.ts +7 -0
  542. package/dist/hooks/useBlogLike.d.ts.map +1 -0
  543. package/dist/hooks/useBlogLike.js +7 -0
  544. package/dist/hooks/useBlogLike.js.map +1 -0
  545. package/dist/hooks/useBreadcrumbs.d.ts +3 -0
  546. package/dist/hooks/useBreadcrumbs.d.ts.map +1 -0
  547. package/dist/hooks/useComments.d.ts +36 -0
  548. package/dist/hooks/useComments.d.ts.map +1 -0
  549. package/dist/hooks/useComments.js +4 -0
  550. package/dist/hooks/useComments.js.map +1 -0
  551. package/dist/hooks/useCoupon.d.ts +66 -0
  552. package/dist/hooks/useCoupon.d.ts.map +1 -0
  553. package/dist/hooks/useCoupon.js +5 -0
  554. package/dist/hooks/useCoupon.js.map +1 -0
  555. package/dist/hooks/useDate.d.ts +24 -0
  556. package/dist/hooks/useDate.d.ts.map +1 -0
  557. package/dist/hooks/useDocumentClass.d.ts +42 -0
  558. package/dist/hooks/useDocumentClass.d.ts.map +1 -0
  559. package/dist/hooks/useDocumentClass.js +5 -0
  560. package/dist/hooks/useDocumentClass.js.map +1 -0
  561. package/dist/hooks/useGtm.d.ts +38 -0
  562. package/dist/hooks/useGtm.d.ts.map +1 -0
  563. package/dist/hooks/useHook.d.ts +24 -0
  564. package/dist/hooks/useHook.d.ts.map +1 -0
  565. package/dist/hooks/useHook.js +5 -0
  566. package/dist/hooks/useHook.js.map +1 -0
  567. package/dist/hooks/useIsClient.d.ts +7 -0
  568. package/dist/hooks/useIsClient.d.ts.map +1 -0
  569. package/dist/hooks/useMoney.d.ts +26 -0
  570. package/dist/hooks/useMoney.d.ts.map +1 -0
  571. package/dist/hooks/useMoney.js +39 -0
  572. package/dist/hooks/useMoney.js.map +1 -0
  573. package/dist/hooks/useNumber.d.ts +24 -0
  574. package/dist/hooks/useNumber.d.ts.map +1 -0
  575. package/dist/hooks/useOpeningHours.d.ts +28 -0
  576. package/dist/hooks/useOpeningHours.d.ts.map +1 -0
  577. package/dist/hooks/usePageConfig.d.ts +44 -0
  578. package/dist/hooks/usePageConfig.d.ts.map +1 -0
  579. package/dist/hooks/useProduct.d.ts +47 -0
  580. package/dist/hooks/useProduct.d.ts.map +1 -0
  581. package/dist/hooks/useProduct.js +4 -0
  582. package/dist/hooks/useProduct.js.map +1 -0
  583. package/dist/hooks/useStore.d.ts +36 -0
  584. package/dist/hooks/useStore.d.ts.map +1 -0
  585. package/dist/hooks/useStore.js +39 -0
  586. package/dist/hooks/useStore.js.map +1 -0
  587. package/dist/hooks/useTheme.d.ts +41 -0
  588. package/dist/hooks/useTheme.d.ts.map +1 -0
  589. package/dist/hooks/useTheme.js +5 -0
  590. package/dist/hooks/useTheme.js.map +1 -0
  591. package/dist/hooks/useUser.d.ts +8 -0
  592. package/dist/hooks/useUser.d.ts.map +1 -0
  593. package/dist/hooks/useUser.js +9 -0
  594. package/dist/hooks/useUser.js.map +1 -0
  595. package/dist/hooks/useWishlist.d.ts +5 -0
  596. package/dist/hooks/useWishlist.d.ts.map +1 -0
  597. package/dist/hooks/useWishlist.js +5 -0
  598. package/dist/hooks/useWishlist.js.map +1 -0
  599. package/dist/i18n.d.ts +1 -0
  600. package/dist/i18n.js +5 -0
  601. package/dist/i18n.js.map +1 -0
  602. package/dist/index.d.ts +11 -0
  603. package/dist/index.d.ts.map +1 -0
  604. package/dist/index.js +83 -0
  605. package/dist/index.js.map +1 -0
  606. package/dist/lib/analytics/gtm.d.ts +38 -0
  607. package/dist/lib/analytics/gtm.d.ts.map +1 -0
  608. package/dist/lib/services/index.d.ts +1 -0
  609. package/dist/lib/services/index.d.ts.map +1 -0
  610. package/dist/navigation-N4H65RUN.js +17 -0
  611. package/dist/navigation-N4H65RUN.js.map +1 -0
  612. package/dist/navigation-YCYHW4MK.js +10 -0
  613. package/dist/navigation-YCYHW4MK.js.map +1 -0
  614. package/dist/nextjs/document-class.d.ts +92 -0
  615. package/dist/nextjs/document-class.d.ts.map +1 -0
  616. package/dist/nextjs/head.d.ts +36 -0
  617. package/dist/nextjs/head.d.ts.map +1 -0
  618. package/dist/nextjs/index.d.ts +29 -0
  619. package/dist/nextjs/index.d.ts.map +1 -0
  620. package/dist/nextjs/link.d.ts +14 -0
  621. package/dist/nextjs/link.d.ts.map +1 -0
  622. package/dist/nextjs/navigation.d.ts +9 -0
  623. package/dist/nextjs/navigation.d.ts.map +1 -0
  624. package/dist/nextjs/router.d.ts +15 -0
  625. package/dist/nextjs/router.d.ts.map +1 -0
  626. package/dist/nextjs.d.ts +1 -0
  627. package/dist/nextjs.js +22 -0
  628. package/dist/nextjs.js.map +1 -0
  629. package/dist/not-found-BJ3VK5VJ.js +69 -0
  630. package/dist/not-found-BJ3VK5VJ.js.map +1 -0
  631. package/dist/providers/DocumentClassProvider.d.ts +56 -0
  632. package/dist/providers/DocumentClassProvider.d.ts.map +1 -0
  633. package/dist/providers/DocumentSyncRegistry.d.ts +20 -0
  634. package/dist/providers/DocumentSyncRegistry.d.ts.map +1 -0
  635. package/dist/providers/LinkProvider.d.ts +34 -0
  636. package/dist/providers/LinkProvider.d.ts.map +1 -0
  637. package/dist/providers/NavigationProvider.d.ts +223 -0
  638. package/dist/providers/NavigationProvider.d.ts.map +1 -0
  639. package/dist/providers/TwilightProvider.d.ts +7 -0
  640. package/dist/providers/TwilightProvider.d.ts.map +1 -0
  641. package/dist/providers/i18n-factory.d.ts +17 -0
  642. package/dist/providers/i18n-factory.d.ts.map +1 -0
  643. package/dist/providers/i18n.d.ts +31 -0
  644. package/dist/providers/i18n.d.ts.map +1 -0
  645. package/dist/providers/index.d.ts +6 -0
  646. package/dist/providers/index.d.ts.map +1 -0
  647. package/dist/providers/locale-constants.d.ts +17 -0
  648. package/dist/providers/locale-constants.d.ts.map +1 -0
  649. package/dist/providers/salla-sdk.types.d.ts +352 -0
  650. package/dist/providers/salla-sdk.types.d.ts.map +1 -0
  651. package/dist/providers/twilight-context.d.ts +4 -0
  652. package/dist/providers/twilight-context.d.ts.map +1 -0
  653. package/dist/providers/twilight-init.d.ts +24 -0
  654. package/dist/providers/twilight-init.d.ts.map +1 -0
  655. package/dist/providers/twilight-theme.d.ts +9 -0
  656. package/dist/providers/twilight-theme.d.ts.map +1 -0
  657. package/dist/providers/twilight.types.d.ts +95 -0
  658. package/dist/providers/twilight.types.d.ts.map +1 -0
  659. package/dist/router/context.d.ts +3 -0
  660. package/dist/router/context.d.ts.map +1 -0
  661. package/dist/router/index.d.ts +4 -0
  662. package/dist/router/index.d.ts.map +1 -0
  663. package/dist/router/route-ids.d.ts +37 -0
  664. package/dist/router/route-ids.d.ts.map +1 -0
  665. package/dist/routes/account/index.d.ts +8 -0
  666. package/dist/routes/account/index.d.ts.map +1 -0
  667. package/dist/routes/account/notifications/NotificationsPage.d.ts +3 -0
  668. package/dist/routes/account/notifications/NotificationsPage.d.ts.map +1 -0
  669. package/dist/routes/account/notifications/index.d.ts +17 -0
  670. package/dist/routes/account/notifications/index.d.ts.map +1 -0
  671. package/dist/routes/account/notifications/loader.d.ts +5 -0
  672. package/dist/routes/account/notifications/loader.d.ts.map +1 -0
  673. package/dist/routes/account/notifications/types.d.ts +17 -0
  674. package/dist/routes/account/notifications/types.d.ts.map +1 -0
  675. package/dist/routes/account/orders/OrderSinglePage.d.ts +3 -0
  676. package/dist/routes/account/orders/OrderSinglePage.d.ts.map +1 -0
  677. package/dist/routes/account/orders/OrdersPage.d.ts +3 -0
  678. package/dist/routes/account/orders/OrdersPage.d.ts.map +1 -0
  679. package/dist/routes/account/orders/index.d.ts +35 -0
  680. package/dist/routes/account/orders/index.d.ts.map +1 -0
  681. package/dist/routes/account/orders/loader.d.ts +11 -0
  682. package/dist/routes/account/orders/loader.d.ts.map +1 -0
  683. package/dist/routes/account/orders/types.d.ts +22 -0
  684. package/dist/routes/account/orders/types.d.ts.map +1 -0
  685. package/dist/routes/account/orders.d.ts +1 -0
  686. package/dist/routes/account/orders.js +42 -0
  687. package/dist/routes/account/orders.js.map +1 -0
  688. package/dist/routes/account/profile/ProfilePage.d.ts +3 -0
  689. package/dist/routes/account/profile/ProfilePage.d.ts.map +1 -0
  690. package/dist/routes/account/profile/index.d.ts +17 -0
  691. package/dist/routes/account/profile/index.d.ts.map +1 -0
  692. package/dist/routes/account/profile/loader.d.ts +5 -0
  693. package/dist/routes/account/profile/loader.d.ts.map +1 -0
  694. package/dist/routes/account/profile/types.d.ts +5 -0
  695. package/dist/routes/account/profile/types.d.ts.map +1 -0
  696. package/dist/routes/account/settings/SettingsPage.d.ts +3 -0
  697. package/dist/routes/account/settings/SettingsPage.d.ts.map +1 -0
  698. package/dist/routes/account/settings/index.d.ts +17 -0
  699. package/dist/routes/account/settings/index.d.ts.map +1 -0
  700. package/dist/routes/account/settings/loader.d.ts +5 -0
  701. package/dist/routes/account/settings/loader.d.ts.map +1 -0
  702. package/dist/routes/account/settings/types.d.ts +5 -0
  703. package/dist/routes/account/settings/types.d.ts.map +1 -0
  704. package/dist/routes/account/types.d.ts +300 -0
  705. package/dist/routes/account/types.d.ts.map +1 -0
  706. package/dist/routes/account/wallet/WalletPage.d.ts +3 -0
  707. package/dist/routes/account/wallet/WalletPage.d.ts.map +1 -0
  708. package/dist/routes/account/wallet/index.d.ts +16 -0
  709. package/dist/routes/account/wallet/index.d.ts.map +1 -0
  710. package/dist/routes/account/wallet/loader.d.ts +4 -0
  711. package/dist/routes/account/wallet/loader.d.ts.map +1 -0
  712. package/dist/routes/account/wallet/types.d.ts +11 -0
  713. package/dist/routes/account/wallet/types.d.ts.map +1 -0
  714. package/dist/routes/account/wishlist/WishlistPage.d.ts +3 -0
  715. package/dist/routes/account/wishlist/WishlistPage.d.ts.map +1 -0
  716. package/dist/routes/account/wishlist/index.d.ts +16 -0
  717. package/dist/routes/account/wishlist/index.d.ts.map +1 -0
  718. package/dist/routes/account/wishlist/loader.d.ts +4 -0
  719. package/dist/routes/account/wishlist/loader.d.ts.map +1 -0
  720. package/dist/routes/account/wishlist/types.d.ts +9 -0
  721. package/dist/routes/account/wishlist/types.d.ts.map +1 -0
  722. package/dist/routes/account.d.ts +1 -0
  723. package/dist/routes/account.js +253 -0
  724. package/dist/routes/account.js.map +1 -0
  725. package/dist/routes/blog/BlogAuthorPage.d.ts +3 -0
  726. package/dist/routes/blog/BlogAuthorPage.d.ts.map +1 -0
  727. package/dist/routes/blog/BlogCategoryPage.d.ts +3 -0
  728. package/dist/routes/blog/BlogCategoryPage.d.ts.map +1 -0
  729. package/dist/routes/blog/BlogPage.d.ts +3 -0
  730. package/dist/routes/blog/BlogPage.d.ts.map +1 -0
  731. package/dist/routes/blog/BlogSinglePage.d.ts +3 -0
  732. package/dist/routes/blog/BlogSinglePage.d.ts.map +1 -0
  733. package/dist/routes/blog/BlogTagPage.d.ts +3 -0
  734. package/dist/routes/blog/BlogTagPage.d.ts.map +1 -0
  735. package/dist/routes/blog/components.d.ts +14 -0
  736. package/dist/routes/blog/components.d.ts.map +1 -0
  737. package/dist/routes/blog/index.d.ts +76 -0
  738. package/dist/routes/blog/index.d.ts.map +1 -0
  739. package/dist/routes/blog/loader.d.ts +16 -0
  740. package/dist/routes/blog/loader.d.ts.map +1 -0
  741. package/dist/routes/blog/types.d.ts +92 -0
  742. package/dist/routes/blog/types.d.ts.map +1 -0
  743. package/dist/routes/blog.d.ts +1 -0
  744. package/dist/routes/blog.js +303 -0
  745. package/dist/routes/blog.js.map +1 -0
  746. package/dist/routes/brands/BrandsPage.d.ts +5 -0
  747. package/dist/routes/brands/BrandsPage.d.ts.map +1 -0
  748. package/dist/routes/brands/index.d.ts +20 -0
  749. package/dist/routes/brands/index.d.ts.map +1 -0
  750. package/dist/routes/brands/loader.d.ts +3 -0
  751. package/dist/routes/brands/loader.d.ts.map +1 -0
  752. package/dist/routes/brands/types.d.ts +32 -0
  753. package/dist/routes/brands/types.d.ts.map +1 -0
  754. package/dist/routes/brands.d.ts +1 -0
  755. package/dist/routes/brands.js +92 -0
  756. package/dist/routes/brands.js.map +1 -0
  757. package/dist/routes/cart/CartPage.d.ts +3 -0
  758. package/dist/routes/cart/CartPage.d.ts.map +1 -0
  759. package/dist/routes/cart/index.d.ts +20 -0
  760. package/dist/routes/cart/index.d.ts.map +1 -0
  761. package/dist/routes/cart/loader.d.ts +8 -0
  762. package/dist/routes/cart/loader.d.ts.map +1 -0
  763. package/dist/routes/cart/types.d.ts +6 -0
  764. package/dist/routes/cart/types.d.ts.map +1 -0
  765. package/dist/routes/cart.d.ts +1 -0
  766. package/dist/routes/cart.js +168 -0
  767. package/dist/routes/cart.js.map +1 -0
  768. package/dist/routes/home/HomePage.d.ts +5 -0
  769. package/dist/routes/home/HomePage.d.ts.map +1 -0
  770. package/dist/routes/home/index.d.ts +22 -0
  771. package/dist/routes/home/index.d.ts.map +1 -0
  772. package/dist/routes/home/loader.d.ts +12 -0
  773. package/dist/routes/home/loader.d.ts.map +1 -0
  774. package/dist/routes/home/types.d.ts +10 -0
  775. package/dist/routes/home/types.d.ts.map +1 -0
  776. package/dist/routes/home.d.ts +1 -0
  777. package/dist/routes/home.js +46 -0
  778. package/dist/routes/home.js.map +1 -0
  779. package/dist/routes/index.d.ts +20 -0
  780. package/dist/routes/index.d.ts.map +1 -0
  781. package/dist/routes/index.js +40 -0
  782. package/dist/routes/index.js.map +1 -0
  783. package/dist/routes/lazy.d.ts +23 -0
  784. package/dist/routes/lazy.d.ts.map +1 -0
  785. package/dist/routes/loyalty/LoyaltyPage.d.ts +3 -0
  786. package/dist/routes/loyalty/LoyaltyPage.d.ts.map +1 -0
  787. package/dist/routes/loyalty/index.d.ts +19 -0
  788. package/dist/routes/loyalty/index.d.ts.map +1 -0
  789. package/dist/routes/loyalty/loader.d.ts +3 -0
  790. package/dist/routes/loyalty/loader.d.ts.map +1 -0
  791. package/dist/routes/loyalty/types.d.ts +96 -0
  792. package/dist/routes/loyalty/types.d.ts.map +1 -0
  793. package/dist/routes/loyalty.d.ts +1 -0
  794. package/dist/routes/loyalty.js +73 -0
  795. package/dist/routes/loyalty.js.map +1 -0
  796. package/dist/routes/not-found.d.ts +15 -0
  797. package/dist/routes/not-found.d.ts.map +1 -0
  798. package/dist/routes/page/PageSingle.d.ts +3 -0
  799. package/dist/routes/page/PageSingle.d.ts.map +1 -0
  800. package/dist/routes/page/index.d.ts +21 -0
  801. package/dist/routes/page/index.d.ts.map +1 -0
  802. package/dist/routes/page/loader.d.ts +6 -0
  803. package/dist/routes/page/loader.d.ts.map +1 -0
  804. package/dist/routes/page/types.d.ts +32 -0
  805. package/dist/routes/page/types.d.ts.map +1 -0
  806. package/dist/routes/page.d.ts +1 -0
  807. package/dist/routes/page.js +97 -0
  808. package/dist/routes/page.js.map +1 -0
  809. package/dist/routes/product/ProductPage.d.ts +3 -0
  810. package/dist/routes/product/ProductPage.d.ts.map +1 -0
  811. package/dist/routes/product/index.d.ts +21 -0
  812. package/dist/routes/product/index.d.ts.map +1 -0
  813. package/dist/routes/product/loader.d.ts +6 -0
  814. package/dist/routes/product/loader.d.ts.map +1 -0
  815. package/dist/routes/product/types.d.ts +6 -0
  816. package/dist/routes/product/types.d.ts.map +1 -0
  817. package/dist/routes/product-listing/ProductListPage.d.ts +13 -0
  818. package/dist/routes/product-listing/ProductListPage.d.ts.map +1 -0
  819. package/dist/routes/product-listing/index.d.ts +16 -0
  820. package/dist/routes/product-listing/index.d.ts.map +1 -0
  821. package/dist/routes/product-listing/loader.d.ts +3 -0
  822. package/dist/routes/product-listing/loader.d.ts.map +1 -0
  823. package/dist/routes/product-listing/types.d.ts +71 -0
  824. package/dist/routes/product-listing/types.d.ts.map +1 -0
  825. package/dist/routes/product-listing.d.ts +1 -0
  826. package/dist/routes/product-listing.js +516 -0
  827. package/dist/routes/product-listing.js.map +1 -0
  828. package/dist/routes/product.d.ts +1 -0
  829. package/dist/routes/product.js +225 -0
  830. package/dist/routes/product.js.map +1 -0
  831. package/dist/routes/root/beforeLoad.d.ts +21 -0
  832. package/dist/routes/root/beforeLoad.d.ts.map +1 -0
  833. package/dist/routes/root/head.d.ts +5 -0
  834. package/dist/routes/root/head.d.ts.map +1 -0
  835. package/dist/routes/root/index.d.ts +3 -0
  836. package/dist/routes/root/index.d.ts.map +1 -0
  837. package/dist/routes/seo-redirects.d.ts +19 -0
  838. package/dist/routes/seo-redirects.d.ts.map +1 -0
  839. package/dist/routes/seo-redirects.js +40 -0
  840. package/dist/routes/seo-redirects.js.map +1 -0
  841. package/dist/routes/testimonials/TestimonialsPage.d.ts +3 -0
  842. package/dist/routes/testimonials/TestimonialsPage.d.ts.map +1 -0
  843. package/dist/routes/testimonials/index.d.ts +19 -0
  844. package/dist/routes/testimonials/index.d.ts.map +1 -0
  845. package/dist/routes/testimonials/loader.d.ts +5 -0
  846. package/dist/routes/testimonials/loader.d.ts.map +1 -0
  847. package/dist/routes/testimonials/types.d.ts +5 -0
  848. package/dist/routes/testimonials/types.d.ts.map +1 -0
  849. package/dist/routes/testimonials.d.ts +1 -0
  850. package/dist/routes/testimonials.js +49 -0
  851. package/dist/routes/testimonials.js.map +1 -0
  852. package/dist/routes/thank-you/ThankYouPage.d.ts +3 -0
  853. package/dist/routes/thank-you/ThankYouPage.d.ts.map +1 -0
  854. package/dist/routes/thank-you/index.d.ts +20 -0
  855. package/dist/routes/thank-you/index.d.ts.map +1 -0
  856. package/dist/routes/thank-you/loader.d.ts +5 -0
  857. package/dist/routes/thank-you/loader.d.ts.map +1 -0
  858. package/dist/routes/thank-you/types.d.ts +14 -0
  859. package/dist/routes/thank-you/types.d.ts.map +1 -0
  860. package/dist/routes/thank-you.d.ts +1 -0
  861. package/dist/routes/thank-you.js +95 -0
  862. package/dist/routes/thank-you.js.map +1 -0
  863. package/dist/routes/types.d.ts +36 -0
  864. package/dist/routes/types.d.ts.map +1 -0
  865. package/dist/sentry/client.d.ts +6 -0
  866. package/dist/sentry/client.d.ts.map +1 -0
  867. package/dist/sentry/client.js +17 -0
  868. package/dist/sentry/client.js.map +1 -0
  869. package/dist/sentry/server.d.ts +10 -0
  870. package/dist/sentry/server.d.ts.map +1 -0
  871. package/dist/sentry/server.js +16 -0
  872. package/dist/sentry/server.js.map +1 -0
  873. package/dist/skeleton.d.ts +4 -0
  874. package/dist/skeleton.d.ts.map +1 -0
  875. package/dist/skeleton.js +47 -0
  876. package/dist/skeleton.js.map +1 -0
  877. package/dist/tanstack/document-class.d.ts +44 -0
  878. package/dist/tanstack/document-class.d.ts.map +1 -0
  879. package/dist/tanstack/head.d.ts +24 -0
  880. package/dist/tanstack/head.d.ts.map +1 -0
  881. package/dist/tanstack/index.d.ts +28 -0
  882. package/dist/tanstack/index.d.ts.map +1 -0
  883. package/dist/tanstack/link.d.ts +18 -0
  884. package/dist/tanstack/link.d.ts.map +1 -0
  885. package/dist/tanstack/middleware/earlyHints.d.ts +3 -0
  886. package/dist/tanstack/middleware/earlyHints.d.ts.map +1 -0
  887. package/dist/tanstack/middleware/twilight.d.ts +7 -0
  888. package/dist/tanstack/middleware/twilight.d.ts.map +1 -0
  889. package/dist/tanstack/navigation.d.ts +13 -0
  890. package/dist/tanstack/navigation.d.ts.map +1 -0
  891. package/dist/tanstack/router.d.ts +85 -0
  892. package/dist/tanstack/router.d.ts.map +1 -0
  893. package/dist/tanstack/templates/account-layout.d.ts +8 -0
  894. package/dist/tanstack/templates/account-layout.d.ts.map +1 -0
  895. package/dist/tanstack/templates/index.d.ts +4 -0
  896. package/dist/tanstack/templates/index.d.ts.map +1 -0
  897. package/dist/tanstack/templates/locale-wrapper.d.ts +15 -0
  898. package/dist/tanstack/templates/locale-wrapper.d.ts.map +1 -0
  899. package/dist/tanstack/templates/redirect.d.ts +6 -0
  900. package/dist/tanstack/templates/redirect.d.ts.map +1 -0
  901. package/dist/tanstack.d.ts +1 -0
  902. package/dist/tanstack.js +137 -0
  903. package/dist/tanstack.js.map +1 -0
  904. package/dist/twilight/context.d.ts +46 -0
  905. package/dist/twilight/context.d.ts.map +1 -0
  906. package/dist/twilight/index.d.ts +3 -0
  907. package/dist/twilight/index.d.ts.map +1 -0
  908. package/dist/types/hooks.d.ts +58 -0
  909. package/dist/types/hooks.d.ts.map +1 -0
  910. package/dist/types/index.d.ts +724 -0
  911. package/dist/types/index.d.ts.map +1 -0
  912. package/dist/types/index.js +4 -0
  913. package/dist/types/index.js.map +1 -0
  914. package/dist/utils/apply-theme.d.ts +3 -0
  915. package/dist/utils/apply-theme.d.ts.map +1 -0
  916. package/dist/utils/asset.d.ts +27 -0
  917. package/dist/utils/asset.d.ts.map +1 -0
  918. package/dist/utils/baseHead.d.ts +23 -0
  919. package/dist/utils/baseHead.d.ts.map +1 -0
  920. package/dist/utils/baseHead.js +5 -0
  921. package/dist/utils/baseHead.js.map +1 -0
  922. package/dist/utils/breadcrumb.d.ts +5 -0
  923. package/dist/utils/breadcrumb.d.ts.map +1 -0
  924. package/dist/utils/cdn-image.d.ts +5 -0
  925. package/dist/utils/cdn-image.d.ts.map +1 -0
  926. package/dist/utils/color.d.ts +34 -0
  927. package/dist/utils/color.d.ts.map +1 -0
  928. package/dist/utils/cookies.d.ts +16 -0
  929. package/dist/utils/cookies.d.ts.map +1 -0
  930. package/dist/utils/device.d.ts +19 -0
  931. package/dist/utils/device.d.ts.map +1 -0
  932. package/dist/utils/document-class.d.ts +67 -0
  933. package/dist/utils/document-class.d.ts.map +1 -0
  934. package/dist/utils/errors.d.ts +4 -0
  935. package/dist/utils/errors.d.ts.map +1 -0
  936. package/dist/utils/head.d.ts +100 -0
  937. package/dist/utils/head.d.ts.map +1 -0
  938. package/dist/utils/head.js +4 -0
  939. package/dist/utils/head.js.map +1 -0
  940. package/dist/utils/index.d.ts +22 -0
  941. package/dist/utils/index.d.ts.map +1 -0
  942. package/dist/utils/index.js +15 -0
  943. package/dist/utils/index.js.map +1 -0
  944. package/dist/utils/number.d.ts +21 -0
  945. package/dist/utils/number.d.ts.map +1 -0
  946. package/dist/utils/salla-plural.d.ts +14 -0
  947. package/dist/utils/salla-plural.d.ts.map +1 -0
  948. package/dist/utils/sanitize.d.ts +2 -0
  949. package/dist/utils/sanitize.d.ts.map +1 -0
  950. package/dist/utils/sdk-events.d.ts +25 -0
  951. package/dist/utils/sdk-events.d.ts.map +1 -0
  952. package/dist/utils/sdk-helpers.d.ts +30 -0
  953. package/dist/utils/sdk-helpers.d.ts.map +1 -0
  954. package/dist/utils/sort-options.d.ts +8 -0
  955. package/dist/utils/sort-options.d.ts.map +1 -0
  956. package/dist/vite/adapters/index.d.ts +18 -0
  957. package/dist/vite/adapters/index.d.ts.map +1 -0
  958. package/dist/vite/adapters/nextjs.adapter.d.ts +12 -0
  959. package/dist/vite/adapters/nextjs.adapter.d.ts.map +1 -0
  960. package/dist/vite/adapters/tanstack.adapter.d.ts +71 -0
  961. package/dist/vite/adapters/tanstack.adapter.d.ts.map +1 -0
  962. package/dist/vite/index.d.ts +6 -0
  963. package/dist/vite/index.d.ts.map +1 -0
  964. package/dist/vite/index.js +2193 -0
  965. package/dist/vite/index.js.map +1 -0
  966. package/dist/vite/plugins/best-practices/best-practices.plugin.d.ts +4 -0
  967. package/dist/vite/plugins/best-practices/best-practices.plugin.d.ts.map +1 -0
  968. package/dist/vite/plugins/best-practices/hooks-registry.d.ts +27 -0
  969. package/dist/vite/plugins/best-practices/hooks-registry.d.ts.map +1 -0
  970. package/dist/vite/plugins/best-practices/reporter.d.ts +4 -0
  971. package/dist/vite/plugins/best-practices/reporter.d.ts.map +1 -0
  972. package/dist/vite/plugins/best-practices/rules/index.d.ts +4 -0
  973. package/dist/vite/plugins/best-practices/rules/index.d.ts.map +1 -0
  974. package/dist/vite/plugins/best-practices/rules/no-deep-component-import.d.ts +3 -0
  975. package/dist/vite/plugins/best-practices/rules/no-deep-component-import.d.ts.map +1 -0
  976. package/dist/vite/plugins/best-practices/rules/no-direct-product-card-import.d.ts +3 -0
  977. package/dist/vite/plugins/best-practices/rules/no-direct-product-card-import.d.ts.map +1 -0
  978. package/dist/vite/plugins/best-practices/rules/no-img-without-dimensions.d.ts +3 -0
  979. package/dist/vite/plugins/best-practices/rules/no-img-without-dimensions.d.ts.map +1 -0
  980. package/dist/vite/plugins/best-practices/rules/no-manual-dom.d.ts +3 -0
  981. package/dist/vite/plugins/best-practices/rules/no-manual-dom.d.ts.map +1 -0
  982. package/dist/vite/plugins/best-practices/rules/no-window-location-reload.d.ts +3 -0
  983. package/dist/vite/plugins/best-practices/rules/no-window-location-reload.d.ts.map +1 -0
  984. package/dist/vite/plugins/best-practices/rules/require-page-hooks.d.ts +16 -0
  985. package/dist/vite/plugins/best-practices/rules/require-page-hooks.d.ts.map +1 -0
  986. package/dist/vite/plugins/best-practices/types.d.ts +34 -0
  987. package/dist/vite/plugins/best-practices/types.d.ts.map +1 -0
  988. package/dist/vite/plugins/package-aliases.plugin.d.ts +3 -0
  989. package/dist/vite/plugins/package-aliases.plugin.d.ts.map +1 -0
  990. package/dist/vite/plugins/salla-hydration.plugin.d.ts +12 -0
  991. package/dist/vite/plugins/salla-hydration.plugin.d.ts.map +1 -0
  992. package/dist/vite/plugins/theme-translations.plugin.d.ts +20 -0
  993. package/dist/vite/plugins/theme-translations.plugin.d.ts.map +1 -0
  994. package/dist/vite/twilight-react.d.ts +22 -0
  995. package/dist/vite/twilight-react.d.ts.map +1 -0
  996. package/dist/vite/types.d.ts +110 -0
  997. package/dist/vite/types.d.ts.map +1 -0
  998. package/package.json +474 -0
@@ -0,0 +1,516 @@
1
+ import { sortOptions } from '../chunk-TQLEQSXE.js';
2
+ import '../chunk-BT6HEEAP.js';
3
+ import '../chunk-RUHSV4Z6.js';
4
+ import '../chunk-7LP7D75V.js';
5
+ import '../chunk-B3EFOE57.js';
6
+ import { category } from '../chunk-YCYTBRYB.js';
7
+ import { brand } from '../chunk-SBIXBX6J.js';
8
+ import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
9
+ import { LazyTestimonials } from '../chunk-NSX6XPDU.js';
10
+ import { product } from '../chunk-OZTGUF7K.js';
11
+ import { Drawer } from '../chunk-XHGF75TM.js';
12
+ import { ProductCard } from '../chunk-RH32IGQD.js';
13
+ import '../chunk-G7ALL4BC.js';
14
+ import { useStore } from '../chunk-GLM3RPCP.js';
15
+ import '../chunk-QTDGM2SO.js';
16
+ import '../chunk-5Q6PFLDN.js';
17
+ import { notFound, useNavigate, useLocation } from '../chunk-GO34DE35.js';
18
+ import '../chunk-VVZNW5CB.js';
19
+ import '../chunk-LBUMC5PB.js';
20
+ import { RouteId } from '../chunk-MTONGOJD.js';
21
+ import '../chunk-2FU6CVSB.js';
22
+ import '../chunk-I5Z4NJBB.js';
23
+ import '../chunk-TCSNNCRH.js';
24
+ import '../chunk-2TB2LTL2.js';
25
+ import '../chunk-QYL5OHAV.js';
26
+ import { getTwilightContext } from '../chunk-KIPZQN3Y.js';
27
+ import '../chunk-Z653O7MX.js';
28
+ import '../chunk-ZCH7W7DZ.js';
29
+ import '../chunk-SSRNIBVV.js';
30
+ import '../chunk-GN34LCTG.js';
31
+ import '../chunk-CW625T2E.js';
32
+ import '../chunk-BVSJPBJ6.js';
33
+ import '../chunk-GBWCXUPD.js';
34
+ import '../chunk-UIX3W2PN.js';
35
+ import { useTranslation } from '../chunk-VVRYP6IL.js';
36
+ import '../chunk-T72DAX7R.js';
37
+ import '../chunk-YMVLYYLU.js';
38
+ import '../chunk-RYBA3JDM.js';
39
+ import { HookSlot } from '../chunk-25SSLQAJ.js';
40
+ import '../chunk-J37AYLWL.js';
41
+ import { LazyBreadcrumb, Image, LazyNoContent, ProductCardSkeleton, LazyRenderWhenVisible } from '../chunk-2KF5JJU6.js';
42
+ import '../chunk-TZ4YD5CU.js';
43
+ import '../chunk-XUI3TRXF.js';
44
+ import '../chunk-6BZ5TKEV.js';
45
+ import '../chunk-UE3BUFZI.js';
46
+ import '../chunk-3DCZJDDK.js';
47
+ import '../chunk-3UHSMGPY.js';
48
+ import '../chunk-MXQCE3KA.js';
49
+ import '../chunk-BWFBVXT3.js';
50
+ import '../chunk-DGUM43GV.js';
51
+ import { useState, useMemo, useEffect, useCallback, useRef } from 'react';
52
+ import { SallaFilters } from '@salla.sa/twilight-components-react/filters';
53
+ import { ItemsList, ReviewItemSkeleton } from '@salla.sa/twilight-components-react';
54
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
55
+
56
+ // src/routes/product-listing/loader.ts
57
+ var DEFAULT_SORT = "ourSuggest";
58
+ var SOURCE_TO_API = {
59
+ categories: "categories",
60
+ latest: "latest",
61
+ sales: "sales",
62
+ offers: "offers",
63
+ search: "search",
64
+ tags: "tags",
65
+ brands: "brands"
66
+ };
67
+ var SOURCE_TITLE_KEY = {
68
+ latest: "blocks.home.latest_products",
69
+ sales: "common.titles.most_sales",
70
+ offers: "blocks.header.offers"
71
+ };
72
+ var SOURCE_SLUG = {
73
+ latest: "latest-products",
74
+ sales: "most-sales-products",
75
+ offers: "offers"
76
+ };
77
+ async function productListLoader(ctx) {
78
+ const { params, search } = ctx;
79
+ const cursor = search?.page ? String(search.page) : void 0;
80
+ const sort = search?.sort ?? DEFAULT_SORT;
81
+ const sourceType = params.source ?? (params.id ? "categories" : void 0);
82
+ if (!sourceType) {
83
+ throw new Error("ProductList loader requires source type");
84
+ }
85
+ if (sourceType === "categories" && params.id) {
86
+ return loadCategoryProducts(params.id, cursor, sort);
87
+ }
88
+ if (sourceType === "search") {
89
+ const keyword = (search?.q ?? params.keyword ?? "").trim();
90
+ return loadSearchProducts(keyword, cursor, sort);
91
+ }
92
+ if (sourceType === "tags" && params.id) {
93
+ return loadTagProducts(params.id, cursor, sort);
94
+ }
95
+ if (sourceType === "brands" && params.id) {
96
+ return loadBrandProducts(params.id, cursor, sort);
97
+ }
98
+ if (sourceType === "latest" || sourceType === "sales" || sourceType === "offers") {
99
+ return loadStaticProducts(
100
+ sourceType,
101
+ params.title ?? "",
102
+ params.slug ?? "",
103
+ cursor,
104
+ sort
105
+ );
106
+ }
107
+ throw new Error(`Unknown source type: ${sourceType}`);
108
+ }
109
+ async function loadCategoryProducts(id, cursor, sort) {
110
+ const { queryClient, i18n } = getTwilightContext();
111
+ let categoryData, productsResult;
112
+ try {
113
+ [categoryData, productsResult] = await Promise.all([
114
+ queryClient.fetchQuery(category.queries.detail(id)),
115
+ queryClient.fetchQuery(
116
+ product.queries.list({
117
+ source: "categories",
118
+ sourceValue: id,
119
+ cursor,
120
+ sort,
121
+ filterable: true
122
+ })
123
+ )
124
+ ]);
125
+ } catch {
126
+ throw notFound();
127
+ }
128
+ if (!categoryData) throw notFound();
129
+ return {
130
+ page: {
131
+ slug: RouteId.PRODUCT_INDEX,
132
+ id,
133
+ title: categoryData.name,
134
+ breadcrumbs: [
135
+ { name: i18n.t("common.titles.home"), url: "/" },
136
+ { name: categoryData.name, url: categoryData.url }
137
+ ]
138
+ },
139
+ source: { type: "categories", value: id, entity: categoryData },
140
+ query: { sort, filters: true },
141
+ products: productsResult.items,
142
+ pagination: {
143
+ next: productsResult.next
144
+ },
145
+ filters: productsResult.filters
146
+ };
147
+ }
148
+ async function loadSearchProducts(keyword, cursor, sort) {
149
+ if (!keyword) {
150
+ const { i18n: i18n2 } = getTwilightContext();
151
+ return {
152
+ page: {
153
+ slug: RouteId.SEARCH,
154
+ title: i18n2.t("common.titles.search") || "Search Results",
155
+ breadcrumbs: [
156
+ { name: i18n2.t("common.titles.home"), url: "/" },
157
+ { name: i18n2.t("common.titles.search") || "Search Results", url: "/search" }
158
+ ]
159
+ },
160
+ source: { type: "search", value: "" },
161
+ query: { sort, filters: true },
162
+ products: [],
163
+ pagination: { next: null }
164
+ };
165
+ }
166
+ const { queryClient, i18n } = getTwilightContext();
167
+ const productsResult = await queryClient.fetchQuery(
168
+ product.queries.list({
169
+ source: "search",
170
+ sourceValue: keyword,
171
+ cursor,
172
+ sort,
173
+ filterable: true
174
+ })
175
+ );
176
+ return {
177
+ page: {
178
+ slug: RouteId.SEARCH,
179
+ title: keyword,
180
+ breadcrumbs: [
181
+ { name: i18n.t("common.titles.home"), url: "/" },
182
+ { name: keyword, url: "/search" }
183
+ ]
184
+ },
185
+ source: { type: "search", value: keyword },
186
+ query: { sort, filters: true },
187
+ products: productsResult.items,
188
+ pagination: {
189
+ next: productsResult.next
190
+ },
191
+ filters: productsResult.filters
192
+ };
193
+ }
194
+ async function loadTagProducts(id, cursor, sort) {
195
+ const { queryClient, i18n } = getTwilightContext();
196
+ const productsResult = await queryClient.fetchQuery(
197
+ product.queries.list({
198
+ source: "tags",
199
+ sourceValue: id,
200
+ cursor,
201
+ sort
202
+ })
203
+ );
204
+ const tagFromProduct = productsResult.items[0]?.tags?.find((t) => String(t.id) === id);
205
+ if (!tagFromProduct) throw notFound();
206
+ const tag = { id: Number(tagFromProduct.id), name: tagFromProduct.name, url: tagFromProduct.url };
207
+ return {
208
+ page: {
209
+ slug: RouteId.PRODUCT_INDEX_TAG,
210
+ id,
211
+ title: tag.name,
212
+ breadcrumbs: [
213
+ { name: i18n.t("common.titles.home"), url: "/" },
214
+ { name: tag.name, url: tag.url }
215
+ ]
216
+ },
217
+ source: { type: "tags", value: id, entity: tag },
218
+ query: { sort, filters: false },
219
+ products: productsResult.items,
220
+ pagination: {
221
+ next: productsResult.next
222
+ }
223
+ };
224
+ }
225
+ async function loadBrandProducts(id, cursor, sort) {
226
+ const { queryClient, i18n } = getTwilightContext();
227
+ let brandData, productsResult;
228
+ try {
229
+ [brandData, productsResult] = await Promise.all([
230
+ queryClient.fetchQuery(brand.queries.detail(id)),
231
+ queryClient.fetchQuery(
232
+ product.queries.list({
233
+ source: "brands",
234
+ sourceValue: id,
235
+ cursor,
236
+ sort
237
+ })
238
+ )
239
+ ]);
240
+ } catch {
241
+ throw notFound();
242
+ }
243
+ if (!brandData) throw notFound();
244
+ return {
245
+ page: {
246
+ slug: RouteId.BRANDS_INDEX,
247
+ id,
248
+ title: brandData.name,
249
+ breadcrumbs: [
250
+ { name: i18n.t("common.titles.home"), url: "/" },
251
+ { name: brandData.name, url: brandData.url }
252
+ ]
253
+ },
254
+ source: { type: "brands", value: id, entity: brandData },
255
+ query: { sort, filters: false },
256
+ products: productsResult.items,
257
+ pagination: {
258
+ next: productsResult.next
259
+ }
260
+ };
261
+ }
262
+ var SOURCE_ROUTE_ID = {
263
+ latest: RouteId.PRODUCT_INDEX_LATEST,
264
+ sales: RouteId.PRODUCT_INDEX_SALES,
265
+ offers: RouteId.PRODUCT_INDEX_OFFERS
266
+ };
267
+ async function loadStaticProducts(source, title, slug, cursor, sort) {
268
+ const { queryClient, i18n } = getTwilightContext();
269
+ const resolvedTitle = title || i18n.t(SOURCE_TITLE_KEY[source]);
270
+ const resolvedSlug = slug || SOURCE_SLUG[source];
271
+ const productsResult = await queryClient.fetchQuery(
272
+ product.queries.list({
273
+ source: SOURCE_TO_API[source],
274
+ cursor,
275
+ sort
276
+ })
277
+ );
278
+ return {
279
+ page: {
280
+ slug: SOURCE_ROUTE_ID[source],
281
+ title: resolvedTitle,
282
+ breadcrumbs: [
283
+ { name: i18n.t("common.titles.home"), url: "/" },
284
+ { name: resolvedTitle, url: `/${resolvedSlug}` }
285
+ ]
286
+ },
287
+ source: { type: source },
288
+ query: { sort, filters: false },
289
+ products: productsResult.items,
290
+ pagination: {
291
+ next: productsResult.next
292
+ }
293
+ };
294
+ }
295
+ function ProductListPage({
296
+ page,
297
+ source,
298
+ query,
299
+ products,
300
+ pagination,
301
+ filters
302
+ }) {
303
+ const { t } = useTranslation();
304
+ const store = useStore();
305
+ const navigate = useNavigate();
306
+ const selectedSort = query.sort;
307
+ const [filtersOpen, setFiltersOpen] = useState(false);
308
+ const showFilters = query.filters && store?.settings?.product?.filters;
309
+ const isBrand = source.type === "brands";
310
+ const brand2 = isBrand ? source.entity : null;
311
+ const sortOptionsWithTrans = useMemo(() => sortOptions(selectedSort, t), [selectedSort, t]);
312
+ const location = useLocation();
313
+ useEffect(() => {
314
+ const handleFiltersChanged = () => setFiltersOpen(false);
315
+ const sdk = window.salla;
316
+ if (typeof sdk === "undefined") return;
317
+ sdk.event.on("salla-filters::changed", handleFiltersChanged);
318
+ return () => {
319
+ sdk.event.off("salla-filters::changed", handleFiltersChanged);
320
+ };
321
+ }, []);
322
+ const handleSortChange = useCallback(
323
+ (event) => {
324
+ const newSort = event.target.value;
325
+ const url = new URL(window.location.href);
326
+ url.searchParams.set("sort", newSort);
327
+ url.searchParams.delete("page");
328
+ navigate(url.pathname + url.search);
329
+ },
330
+ [navigate]
331
+ );
332
+ const listKey = source.value ?? source.type;
333
+ const nextCursorRef = useRef(pagination?.next ?? null);
334
+ useEffect(() => {
335
+ nextCursorRef.current = pagination?.next ?? null;
336
+ }, [pagination?.next]);
337
+ const loader = useCallback(async () => {
338
+ const nextUrl = nextCursorRef.current;
339
+ const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);
340
+ const cursor = cursorMatch ? decodeURIComponent(cursorMatch[1]) : nextUrl ?? void 0;
341
+ const result = await product.list({
342
+ source: source.type,
343
+ sourceValue: source.value,
344
+ ...cursor && { cursor },
345
+ sort: selectedSort
346
+ });
347
+ nextCursorRef.current = result.next;
348
+ return result;
349
+ }, [source.type, source.value, selectedSort]);
350
+ return /* @__PURE__ */ jsxs("div", { className: "container px-2.5 ms:px-5 mb-10", children: [
351
+ /* @__PURE__ */ jsx(LazyBreadcrumb, { page }),
352
+ isBrand && brand2 && /* @__PURE__ */ jsxs(Fragment, { children: [
353
+ /* @__PURE__ */ jsx(
354
+ Image,
355
+ {
356
+ width: 1200,
357
+ height: 300,
358
+ className: "w-full max-h-[300px] object-cover rounded-md bg-gray-100",
359
+ src: brand2.banner || void 0,
360
+ alt: brand2.name,
361
+ priority: true
362
+ }
363
+ ),
364
+ /* @__PURE__ */ jsxs("header", { className: "flex flex-col md:flex-row items-center md:items-start text-center rtl:md:text-right ltr:md:text-left mt-2 mb-8", children: [
365
+ /* @__PURE__ */ jsx(
366
+ Image,
367
+ {
368
+ className: "rounded-md w-40 h-24 object-contain shadow-md p-4 bg-white shrink-0",
369
+ src: brand2.logo || void 0,
370
+ alt: brand2.name,
371
+ aspectRatio: "5/3"
372
+ }
373
+ ),
374
+ /* @__PURE__ */ jsxs("div", { className: "px-5 pt-3 rtl:text-right", children: [
375
+ /* @__PURE__ */ jsx("h1", { className: "text-2xl font-bold mb-1", children: brand2.name }),
376
+ brand2.description && /* @__PURE__ */ jsx(
377
+ "p",
378
+ {
379
+ className: "text-base text-gray-500 font-medium",
380
+ dangerouslySetInnerHTML: { __html: brand2.description }
381
+ }
382
+ )
383
+ ] })
384
+ ] })
385
+ ] }),
386
+ /* @__PURE__ */ jsx(HookSlot, { name: "product:list.start" }),
387
+ /* @__PURE__ */ jsxs("div", { className: showFilters ? "md:grid md:grid-cols-[288px_1fr] gap-8" : "", children: [
388
+ showFilters && /* @__PURE__ */ jsx(
389
+ SallaFilters,
390
+ {
391
+ id: "filters-menu",
392
+ className: "hidden md:block lg:sticky lg:top-20",
393
+ filters
394
+ }
395
+ ),
396
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
397
+ /* @__PURE__ */ jsxs("div", { className: "mb-4 sm:mb-6 flex justify-between items-center", children: [
398
+ /* @__PURE__ */ jsx("h1", { className: "font-bold text-xl rtl:pl-3 ltr:pr-3", id: "page-main-title", children: isBrand ? t("common.titles.products") : page.title }),
399
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2 rtl:space-x-reverse", children: [
400
+ showFilters && /* @__PURE__ */ jsx(
401
+ "button",
402
+ {
403
+ type: "button",
404
+ onClick: () => setFiltersOpen(true),
405
+ className: "filters-trigger bg-border-color text-primary lg:hidden p-2 rounded",
406
+ children: /* @__PURE__ */ jsx("i", { className: "sicon-filter text-gray-text text-2xl" })
407
+ }
408
+ ),
409
+ sortOptionsWithTrans.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
410
+ /* @__PURE__ */ jsx(
411
+ "label",
412
+ {
413
+ className: "hidden sm:block rtl:ml-3 ltr:mr-3 whitespace-nowrap",
414
+ htmlFor: "product-sort",
415
+ children: t("pages.categories.sorting", "Sort By")
416
+ }
417
+ ),
418
+ /* @__PURE__ */ jsx(
419
+ "select",
420
+ {
421
+ id: "product-sort",
422
+ className: "form-input pt-0 pb-1 rtl:md:pl-10 ltr:md:pr-10",
423
+ value: selectedSort,
424
+ onChange: handleSortChange,
425
+ children: sortOptionsWithTrans.map((option) => /* @__PURE__ */ jsx("option", { value: option.id, children: option.name }, option.id))
426
+ }
427
+ )
428
+ ] })
429
+ ] })
430
+ ] }),
431
+ /* @__PURE__ */ jsx(HookSlot, { name: "product:list.items.start" }),
432
+ /* @__PURE__ */ jsx("div", { className: "flex min-h-screen", children: /* @__PURE__ */ jsx(
433
+ ItemsList,
434
+ {
435
+ resetKey: `${listKey}-${selectedSort}`,
436
+ items: products,
437
+ loader,
438
+ mode: pagination?.next ? "infinite" : "static",
439
+ pageUrl: location.pathname + location.searchStr,
440
+ className: "s-products-list flex-1 min-w-0",
441
+ itemsClassName: `s-products-list-wrapper s-products-list-vertical-cards${showFilters ? " s-products-list-with-filters" : ""}`,
442
+ skeleton: /* @__PURE__ */ jsx(ProductCardSkeleton, {}),
443
+ skeletonType: "item",
444
+ skeletonCount: 12,
445
+ empty: /* @__PURE__ */ jsx(
446
+ LazyNoContent,
447
+ {
448
+ icon: "sicon-shopping-bag",
449
+ message: t("pages.categories.no_products", "No products found in this category")
450
+ }
451
+ ),
452
+ t: (key, fallback) => t(key, fallback || key),
453
+ children: (items) => items.map((prod, idx) => /* @__PURE__ */ jsx(ProductCard, { product: prod, index: idx }, prod.id))
454
+ },
455
+ `${listKey}-${selectedSort}`
456
+ ) }),
457
+ /* @__PURE__ */ jsx(HookSlot, { name: "product:list.items.end" })
458
+ ] })
459
+ ] }),
460
+ showFilters && /* @__PURE__ */ jsx(Drawer, { isOpen: filtersOpen, onClose: () => setFiltersOpen(false), size: "md", children: /* @__PURE__ */ jsxs("div", { className: "p-4", children: [
461
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center mb-4", children: [
462
+ /* @__PURE__ */ jsx("h3", { className: "font-bold text-lg", children: t("pages.categories.filters", "Filters") }),
463
+ /* @__PURE__ */ jsx(
464
+ "button",
465
+ {
466
+ onClick: () => setFiltersOpen(false),
467
+ className: "btn--close-sm sicon-cancel text-gray-500"
468
+ }
469
+ )
470
+ ] }),
471
+ /* @__PURE__ */ jsx(SallaFilters, { id: "filters-menu-mobile", filters })
472
+ ] }) }),
473
+ source.type === "categories" && store?.settings?.category?.testimonial_enabled && /* @__PURE__ */ jsx(LazyRenderWhenVisible, { placeholder: /* @__PURE__ */ jsx(ReviewItemSkeleton, {}), children: /* @__PURE__ */ jsx(LazyTestimonials, { data: {} }) }),
474
+ /* @__PURE__ */ jsx(HookSlot, { name: "product:list.end" })
475
+ ] }, listKey);
476
+ }
477
+
478
+ // src/routes/product-listing/index.tsx
479
+ function head(ctx, data) {
480
+ const entity = data.source.entity;
481
+ const category2 = data.source.type === "categories" ? entity : void 0;
482
+ const tag = data.source.type === "tags" ? entity : void 0;
483
+ const canonical = category2?.url ?? tag?.url;
484
+ const title = category2?.name ?? tag?.name ?? data.page.title;
485
+ const image = category2?.image ?? void 0;
486
+ const base = {
487
+ title,
488
+ description: `Browse ${title}`,
489
+ canonical,
490
+ openGraph: {
491
+ type: "website",
492
+ title,
493
+ description: `Browse ${title}`,
494
+ images: image,
495
+ url: canonical
496
+ },
497
+ twitter: {
498
+ card: "summary_large_image",
499
+ title,
500
+ description: `Browse ${title}`,
501
+ images: image
502
+ },
503
+ alternateLanguages: buildHreflangAlternates(ctx.settings, canonical ?? ctx.location.pathname)
504
+ };
505
+ return base;
506
+ }
507
+ var ProductListing = {
508
+ id: RouteId.PRODUCT_INDEX,
509
+ loader: productListLoader,
510
+ head,
511
+ Component: ProductListPage
512
+ };
513
+
514
+ export { ProductListPage, ProductListing, head, productListLoader };
515
+ //# sourceMappingURL=product-listing.js.map
516
+ //# sourceMappingURL=product-listing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/routes/product-listing/loader.ts","../../src/routes/product-listing/ProductListPage.tsx","../../src/routes/product-listing/index.tsx"],"names":["i18n","brand","category"],"mappings":"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","file":"product-listing.js","sourcesContent":["import type { ProductListLoaderData, ProductListLoaderContext, ProductListSource } from './types';\nimport type { ProductsListSource } from '../../api/product';\nimport { category } from '../../api/category';\nimport { product } from '../../api/product';\nimport { brand } from '../../api/brands';\nimport { notFound } from '../../providers';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\n\nconst DEFAULT_SORT = 'ourSuggest';\n\nconst SOURCE_TO_API: Record<ProductListSource, ProductsListSource> = {\n categories: 'categories',\n latest: 'latest',\n sales: 'sales',\n offers: 'offers',\n search: 'search',\n tags: 'tags',\n brands: 'brands',\n};\n\nconst SOURCE_TITLE_KEY: Record<'latest' | 'sales' | 'offers', string> = {\n latest: 'blocks.home.latest_products',\n sales: 'common.titles.most_sales',\n offers: 'blocks.header.offers',\n};\n\nconst SOURCE_SLUG: Record<'latest' | 'sales' | 'offers', string> = {\n latest: 'latest-products',\n sales: 'most-sales-products',\n offers: 'offers',\n};\n\nexport async function productListLoader(\n ctx: ProductListLoaderContext\n): Promise<ProductListLoaderData> {\n const { params, search } = ctx;\n const cursor = search?.page ? String(search.page) : undefined;\n const sort = search?.sort ?? DEFAULT_SORT;\n\n const sourceType = params.source ?? (params.id ? 'categories' : undefined);\n\n if (!sourceType) {\n throw new Error('ProductList loader requires source type');\n }\n\n if (sourceType === 'categories' && params.id) {\n return loadCategoryProducts(params.id, cursor, sort);\n }\n\n if (sourceType === 'search') {\n const keyword = (search?.q ?? params.keyword ?? '').trim();\n return loadSearchProducts(keyword, cursor, sort);\n }\n\n if (sourceType === 'tags' && params.id) {\n return loadTagProducts(params.id, cursor, sort);\n }\n\n if (sourceType === 'brands' && params.id) {\n return loadBrandProducts(params.id, cursor, sort);\n }\n\n if (sourceType === 'latest' || sourceType === 'sales' || sourceType === 'offers') {\n return loadStaticProducts(\n sourceType as 'latest' | 'sales' | 'offers',\n params.title ?? '',\n params.slug ?? '',\n cursor,\n sort\n );\n }\n\n throw new Error(`Unknown source type: ${sourceType}`);\n}\n\n// ============================================================================\n// Source-Specific Loaders\n// ============================================================================\n\nasync function loadCategoryProducts(\n id: string,\n cursor: string | undefined,\n sort: string\n): Promise<ProductListLoaderData> {\n const { queryClient, i18n } = getTwilightContext();\n let categoryData, productsResult;\n try {\n [categoryData, productsResult] = await Promise.all([\n queryClient.fetchQuery(category.queries.detail(id)),\n queryClient.fetchQuery(\n product.queries.list({\n source: 'categories',\n sourceValue: id,\n cursor,\n sort,\n filterable: true,\n })\n ),\n ]);\n } catch {\n throw notFound();\n }\n\n if (!categoryData) throw notFound();\n\n return {\n page: {\n slug: RouteId.PRODUCT_INDEX,\n id,\n title: categoryData.name,\n breadcrumbs: [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: categoryData.name, url: categoryData.url },\n ],\n },\n source: { type: 'categories', value: id, entity: categoryData },\n query: { sort, filters: true },\n products: productsResult.items,\n pagination: {\n next: productsResult.next,\n },\n filters: productsResult.filters,\n };\n}\n\nasync function loadSearchProducts(\n keyword: string,\n cursor: string | undefined,\n sort: string\n): Promise<ProductListLoaderData> {\n if (!keyword) {\n const { i18n } = getTwilightContext();\n return {\n page: {\n slug: RouteId.SEARCH,\n title: i18n.t('common.titles.search') || 'Search Results',\n breadcrumbs: [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: i18n.t('common.titles.search') || 'Search Results', url: '/search' },\n ],\n },\n source: { type: 'search', value: '' },\n query: { sort, filters: true },\n products: [],\n pagination: { next: null },\n };\n }\n\n const { queryClient, i18n } = getTwilightContext();\n const productsResult = await queryClient.fetchQuery(\n product.queries.list({\n source: 'search',\n sourceValue: keyword,\n cursor,\n sort,\n filterable: true,\n })\n );\n\n return {\n page: {\n slug: RouteId.SEARCH,\n title: keyword,\n breadcrumbs: [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: keyword, url: '/search' },\n ],\n },\n source: { type: 'search', value: keyword },\n query: { sort, filters: true },\n products: productsResult.items,\n pagination: {\n next: productsResult.next,\n },\n filters: productsResult.filters,\n };\n}\n\nasync function loadTagProducts(\n id: string,\n cursor: string | undefined,\n sort: string\n): Promise<ProductListLoaderData> {\n const { queryClient, i18n } = getTwilightContext();\n const productsResult = await queryClient.fetchQuery(\n product.queries.list({\n source: 'tags',\n sourceValue: id,\n cursor,\n sort,\n })\n );\n\n const tagFromProduct = productsResult.items[0]?.tags?.find((t) => String(t.id) === id);\n if (!tagFromProduct) throw notFound();\n\n const tag = { id: Number(tagFromProduct.id), name: tagFromProduct.name, url: tagFromProduct.url };\n\n return {\n page: {\n slug: RouteId.PRODUCT_INDEX_TAG,\n id,\n title: tag.name,\n breadcrumbs: [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: tag.name, url: tag.url },\n ],\n },\n source: { type: 'tags', value: id, entity: tag },\n query: { sort, filters: false },\n products: productsResult.items,\n pagination: {\n next: productsResult.next,\n },\n };\n}\n\nasync function loadBrandProducts(\n id: string,\n cursor: string | undefined,\n sort: string\n): Promise<ProductListLoaderData> {\n const { queryClient, i18n } = getTwilightContext();\n let brandData, productsResult;\n try {\n [brandData, productsResult] = await Promise.all([\n queryClient.fetchQuery(brand.queries.detail(id)),\n queryClient.fetchQuery(\n product.queries.list({\n source: 'brands',\n sourceValue: id,\n cursor,\n sort,\n })\n ),\n ]);\n } catch {\n throw notFound();\n }\n\n if (!brandData) throw notFound();\n\n return {\n page: {\n slug: RouteId.BRANDS_INDEX,\n id,\n title: brandData.name,\n breadcrumbs: [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: brandData.name, url: brandData.url },\n ],\n },\n source: { type: 'brands', value: id, entity: brandData },\n query: { sort, filters: false },\n products: productsResult.items,\n pagination: {\n next: productsResult.next,\n },\n };\n}\n\nconst SOURCE_ROUTE_ID: Record<'latest' | 'sales' | 'offers', string> = {\n latest: RouteId.PRODUCT_INDEX_LATEST,\n sales: RouteId.PRODUCT_INDEX_SALES,\n offers: RouteId.PRODUCT_INDEX_OFFERS,\n};\n\nasync function loadStaticProducts(\n source: 'latest' | 'sales' | 'offers',\n title: string,\n slug: string,\n cursor: string | undefined,\n sort: string\n): Promise<ProductListLoaderData> {\n const { queryClient, i18n } = getTwilightContext();\n const resolvedTitle = title || i18n.t(SOURCE_TITLE_KEY[source]);\n const resolvedSlug = slug || SOURCE_SLUG[source];\n const productsResult = await queryClient.fetchQuery(\n product.queries.list({\n source: SOURCE_TO_API[source],\n cursor,\n sort,\n })\n );\n\n return {\n page: {\n slug: SOURCE_ROUTE_ID[source],\n title: resolvedTitle,\n breadcrumbs: [\n { name: i18n.t('common.titles.home'), url: '/' },\n { name: resolvedTitle, url: `/${resolvedSlug}` },\n ],\n },\n source: { type: source },\n query: { sort, filters: false },\n products: productsResult.items,\n pagination: {\n next: productsResult.next,\n },\n };\n}\n","import { useState, useRef, useEffect, useMemo, useCallback } from 'react';\nimport { HookSlot, useStore } from '../../hooks';\nimport { useTranslation } from '../../providers/i18n';\nimport { useNavigate, useLocation } from '../../providers/NavigationProvider';\nimport { sortOptions } from '../../utils';\nimport { Drawer } from '../../components/drawer';\nimport { Breadcrumb } from '../../components/common';\nimport { SallaFilters } from '@salla.sa/twilight-components-react/filters';\nimport { ItemsList, ReviewItemSkeleton } from '@salla.sa/twilight-components-react';\nimport { Testimonials } from '../../components/home';\nimport { ProductCard } from '../../components/product';\nimport { NoContent, ProductCardSkeleton, Image, RenderWhenVisible } from '../../components/common';\nimport { product } from '../../api/product';\nimport type { ProductListLoaderData } from './types';\nimport type { Brand } from '../brands/types';\nimport type { Product } from '../../types';\n\n/**\n * Product List Page - Unified component for all product listing pages\n *\n * Handles:\n * - Category pages (with filters, category entity, testimonials)\n * - Search pages (keyword display, product count)\n * - Tag pages (tag entity)\n * - Brand pages (brand entity with banner/logo)\n * - Static listings (latest, sales, offers)\n */\nexport function ProductListPage({\n page,\n source,\n query,\n products,\n pagination,\n filters,\n}: ProductListLoaderData) {\n const { t } = useTranslation();\n const store = useStore();\n const navigate = useNavigate();\n // Sort is now SSR-driven, no local state needed\n const selectedSort = query.sort;\n const [filtersOpen, setFiltersOpen] = useState(false);\n\n // Determine filters visibility\n const showFilters = query.filters && store?.settings?.product?.filters;\n // const isSearch = source.type === 'search';\n const isBrand = source.type === 'brands';\n const brand = isBrand ? (source.entity as Brand | undefined) : null;\n\n // Generate sort options with translations\n const sortOptionsWithTrans = useMemo(() => sortOptions(selectedSort, t), [selectedSort, t]);\n\n // Get location from hook for consistent URL handling\n const location = useLocation();\n\n // Listen for filters changed event to close drawer\n useEffect(() => {\n const handleFiltersChanged = () => setFiltersOpen(false);\n const sdk = window.salla;\n if (typeof sdk === 'undefined') return;\n\n sdk.event.on('salla-filters::changed', handleFiltersChanged);\n\n return () => {\n sdk.event.off('salla-filters::changed', handleFiltersChanged);\n };\n }, []);\n\n // Handle sort change - use client-side navigation to trigger route loader re-run\n const handleSortChange = useCallback(\n (event: React.ChangeEvent<HTMLSelectElement>) => {\n const newSort = event.target.value;\n\n const url = new URL(window.location.href);\n url.searchParams.set('sort', newSort);\n url.searchParams.delete('page'); // clear any cursor token from URL on sort change\n\n // Use client-side navigation to trigger route loader re-execution (SSR-like)\n navigate(url.pathname + url.search);\n },\n [navigate]\n );\n\n // Key for remounting products list\n const listKey = source.value ?? source.type;\n\n // Track cursor for the next page — initialized from SSR pagination response.\n // On sort change the key prop remounts ItemsList and this effect resets the cursor.\n const nextCursorRef = useRef<string | null>(pagination?.next ?? null);\n useEffect(() => {\n nextCursorRef.current = pagination?.next ?? null;\n }, [pagination?.next]);\n\n const loader = useCallback(async () => {\n const nextUrl = nextCursorRef.current;\n // Extract the cursor token from the next URL provided by the previous response\n const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);\n const cursor = cursorMatch ? decodeURIComponent(cursorMatch[1]) : (nextUrl ?? undefined);\n\n const result = await product.list({\n source: source.type,\n sourceValue: source.value,\n ...(cursor && { cursor }),\n sort: selectedSort,\n });\n\n nextCursorRef.current = result.next;\n\n return result;\n }, [source.type, source.value, selectedSort]);\n\n return (\n <div key={listKey} className=\"container px-2.5 ms:px-5 mb-10\">\n <Breadcrumb page={page} />\n\n {isBrand && brand && (\n <>\n <Image\n width={1200}\n height={300}\n className=\"w-full max-h-[300px] object-cover rounded-md bg-gray-100\"\n src={brand.banner || undefined}\n alt={brand.name}\n priority\n />\n <header className=\"flex flex-col md:flex-row items-center md:items-start text-center rtl:md:text-right ltr:md:text-left mt-2 mb-8\">\n <Image\n className=\"rounded-md w-40 h-24 object-contain shadow-md p-4 bg-white shrink-0\"\n src={brand.logo || undefined}\n alt={brand.name}\n aspectRatio=\"5/3\"\n />\n <div className=\"px-5 pt-3 rtl:text-right\">\n <h1 className=\"text-2xl font-bold mb-1\">{brand.name}</h1>\n {brand.description && (\n <p\n className=\"text-base text-gray-500 font-medium\"\n dangerouslySetInnerHTML={{ __html: brand.description }}\n />\n )}\n </div>\n </header>\n </>\n )}\n\n <HookSlot name=\"product:list.start\" />\n\n <div className={showFilters ? 'md:grid md:grid-cols-[288px_1fr] gap-8' : ''}>\n {/* <FiltersSkeleton></FiltersSkeleton> */}\n {showFilters && (\n <SallaFilters\n id=\"filters-menu\"\n className=\"hidden md:block lg:sticky lg:top-20\"\n filters={filters as any}\n />\n )}\n\n <div className=\"min-w-0\">\n <div className=\"mb-4 sm:mb-6 flex justify-between items-center\">\n <h1 className=\"font-bold text-xl rtl:pl-3 ltr:pr-3\" id=\"page-main-title\">\n {isBrand ? t('common.titles.products') : page.title}\n </h1>\n\n <div className=\"flex items-center space-x-2 rtl:space-x-reverse\">\n {showFilters && (\n <button\n type=\"button\"\n onClick={() => setFiltersOpen(true)}\n className=\"filters-trigger bg-border-color text-primary lg:hidden p-2 rounded\"\n >\n <i className=\"sicon-filter text-gray-text text-2xl\" />\n </button>\n )}\n\n {sortOptionsWithTrans.length > 0 && (\n <div className=\"flex items-center\">\n <label\n className=\"hidden sm:block rtl:ml-3 ltr:mr-3 whitespace-nowrap\"\n htmlFor=\"product-sort\"\n >\n {t('pages.categories.sorting', 'Sort By')}\n </label>\n <select\n id=\"product-sort\"\n className=\"form-input pt-0 pb-1 rtl:md:pl-10 ltr:md:pr-10\"\n value={selectedSort}\n onChange={handleSortChange}\n >\n {sortOptionsWithTrans.map((option) => (\n <option key={option.id} value={option.id}>\n {option.name}\n </option>\n ))}\n </select>\n </div>\n )}\n </div>\n </div>\n\n <HookSlot name=\"product:list.items.start\" />\n\n <div className=\"flex min-h-screen\">\n <ItemsList<Product>\n key={`${listKey}-${selectedSort}`}\n resetKey={`${listKey}-${selectedSort}`}\n items={products}\n loader={loader}\n mode={pagination?.next ? 'infinite' : 'static'}\n pageUrl={location.pathname + location.searchStr}\n className=\"s-products-list flex-1 min-w-0\"\n itemsClassName={`s-products-list-wrapper s-products-list-vertical-cards${showFilters ? ' s-products-list-with-filters' : ''}`}\n skeleton={<ProductCardSkeleton />}\n skeletonType=\"item\"\n skeletonCount={12}\n empty={\n <NoContent\n icon=\"sicon-shopping-bag\"\n message={t('pages.categories.no_products', 'No products found in this category')}\n />\n }\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) =>\n items.map((prod, idx) => <ProductCard key={prod.id} product={prod} index={idx} />)\n }\n </ItemsList>\n </div>\n\n <HookSlot name=\"product:list.items.end\" />\n </div>\n </div>\n\n {showFilters && (\n <Drawer isOpen={filtersOpen} onClose={() => setFiltersOpen(false)} size=\"md\">\n <div className=\"p-4\">\n <div className=\"flex justify-between items-center mb-4\">\n <h3 className=\"font-bold text-lg\">{t('pages.categories.filters', 'Filters')}</h3>\n <button\n onClick={() => setFiltersOpen(false)}\n className=\"btn--close-sm sicon-cancel text-gray-500\"\n />\n </div>\n <SallaFilters id=\"filters-menu-mobile\" filters={filters as any} />\n </div>\n </Drawer>\n )}\n\n {source.type === 'categories' && store?.settings?.category?.testimonial_enabled && (\n <RenderWhenVisible placeholder={<ReviewItemSkeleton />}>\n <Testimonials data={{}} />\n </RenderWhenVisible>\n )}\n\n <HookSlot name=\"product:list.end\" />\n </div>\n );\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport { productListLoader } from './loader';\nimport type { ProductListLoaderData, ProductListTag, Category } from './types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\nimport { ProductListPage } from './ProductListPage';\n\nexport function head(ctx: TwilightContext, data: ProductListLoaderData): HeadDescriptor {\n const entity = data.source.entity;\n const category = data.source.type === 'categories' ? (entity as Category | undefined) : undefined;\n const tag = data.source.type === 'tags' ? (entity as ProductListTag | undefined) : undefined;\n\n const canonical = category?.url ?? tag?.url;\n const title = category?.name ?? tag?.name ?? data.page.title;\n const image = category?.image ?? undefined;\n\n const base: HeadDescriptor = {\n title,\n description: `Browse ${title}`,\n canonical,\n openGraph: {\n type: 'website',\n title,\n description: `Browse ${title}`,\n images: image,\n url: canonical,\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description: `Browse ${title}`,\n images: image,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, canonical ?? ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const ProductListing = {\n id: RouteId.PRODUCT_INDEX,\n loader: productListLoader,\n head,\n Component: ProductListPage,\n} as const;\n\nexport { ProductListPage };\nexport { productListLoader };\n\nexport type {\n ProductListLoaderData,\n ProductListLoaderParams,\n ProductListLoaderContext,\n ProductListSource,\n ProductListTag,\n ProductListEntity,\n ProductListPageMeta,\n ProductListSourceConfig,\n ProductListQuery,\n CategoryPageProps,\n} from './types';\n"]}
@@ -0,0 +1 @@
1
+ export * from './product/index';