@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 @@
1
+ {"version":3,"sources":["../src/components/home/ProductsSlider.tsx","../src/components/home/StoreFeatures.tsx","../src/components/home/FixedBanner.tsx","../src/components/home/FixedProducts.tsx","../src/components/home/FeaturedProductsStyle1.tsx","../src/components/home/FeaturedProductsStyle2.tsx","../src/components/home/FeaturedProductsStyle3.tsx","../src/components/home/ParallaxBackground.tsx","../src/components/home/PhotosSlider.tsx","../src/components/home/SquarePhotos.tsx","../src/components/home/Youtube.tsx","../src/components/home/BundleComponent.tsx","../src/components/home/lazy.ts","../src/components/home/register.ts","../src/components/home/ComponentErrorBoundary.tsx","../src/components/home/HomePageRenderer.tsx"],"names":["product","StoreFeatures","jsx","memo","FixedBanner","Fragment","jsxs","Suspense","FeaturedProductsStyle1","useCallback","FeaturedProductsStyle2","useState","SallaButton","SallaProductsSlider","FeaturedProductsStyle3","ParallaxBackground","PhotosSlider","SquarePhotos","Youtube","BundleComponent","useEffect","FallbackComponent","ProductsSliderSkeleton","FixedProductsSkeleton","HomeComponentRenderer","Component"],"mappings":"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","file":"chunk-NSX6XPDU.js","sourcesContent":["import { Suspense, useCallback, useMemo } from 'react';\nimport { product, ProductsListSource } from '../../api/product';\nimport { ProductCard } from '../../components/product';\nimport { ProductsSliderSkeleton, SallaProductsSlider } from '@salla.sa/twilight-components-react';\nimport { useTranslation } from '../../providers/i18n';\n\ninterface ProductsSourceConfig {\n source: ProductsListSource;\n source_value?: number | number[] | null;\n}\n\nexport interface ProductsSliderProps {\n data: {\n products: ProductsSourceConfig;\n title?: string;\n display_all_url?: string;\n position?: number;\n priority?: boolean;\n show_controls?: boolean;\n controls_outer?: boolean;\n loop?: boolean;\n centered?: boolean;\n slides_per_view?: number | 'auto';\n direction?: 'rtl' | 'ltr';\n autoplay?: boolean;\n [key: string]: unknown;\n };\n}\n\nexport function ProductsSlider({ data }: ProductsSliderProps) {\n const { t } = useTranslation();\n const {\n products,\n title,\n display_all_url: displayAllUrl,\n position = 1,\n priority = false,\n show_controls: showControls,\n controls_outer: controlsOuter,\n loop,\n centered,\n slides_per_view: slidesPerView,\n direction,\n autoplay,\n } = data;\n\n const sliderProps = useMemo(\n () => ({\n id: `slider-${position}`,\n displayAllTitle: t('blocks.home.display_all', 'View All'),\n ...(showControls !== undefined && { showControls }),\n ...(controlsOuter !== undefined && { controlsOuter }),\n ...(loop !== undefined && { loop }),\n ...(centered !== undefined && { centered }),\n ...(slidesPerView !== undefined && { slidesPerView }),\n ...(direction !== undefined && { direction }),\n }),\n [position, t, showControls, controlsOuter, loop, centered, slidesPerView, direction]\n );\n\n const loader = useCallback(\n () =>\n product.list({\n source: products.source,\n sourceValue: products.source_value,\n }),\n [products.source, products.source_value]\n );\n\n return (\n <Suspense fallback={<ProductsSliderSkeleton />}>\n <SallaProductsSlider\n id={`best-offers-${position}-slider`}\n loader={loader}\n sliderProps={sliderProps}\n {...(displayAllUrl ? { displayAllUrl } : {})}\n {...(title ? { blockTitle: title } : {})}\n {...(autoplay !== undefined ? { autoplay } : {})}\n skeleton={<ProductsSliderSkeleton />}\n >\n {(product, index) => (\n <ProductCard product={product} imagePriority={priority && index < 2} />\n )}\n </SallaProductsSlider>\n </Suspense>\n );\n}\n","import { memo } from 'react';\nimport type { Feature } from '../../types';\n\nexport interface StoreFeaturesProps {\n data: {\n features: Feature[];\n [key: string]: unknown;\n };\n}\n\nexport const StoreFeatures = memo(function StoreFeatures({ data }: StoreFeaturesProps) {\n const { features } = data;\n\n if (!features.length) return null;\n\n return (\n <>\n <div className=\"grid grid-cols-[repeat(2,minmax(0,1fr))] md:grid-cols-[repeat(3,minmax(0,1fr))] gap-4 sm:gap-6 xl:gap-8\">\n {features.map((feature, index) => (\n <div key={index} className=\"s-block--features__item\">\n <div className=\"feature-icon\">\n <i className={feature.icon}></i>\n </div>\n <h2>{feature.title}</h2>\n <p>{feature.description}</p>\n </div>\n ))}\n </div>\n </>\n );\n});\n","import { memo } from 'react';\nimport { Link } from '../common';\n\nexport interface FixedBannerComponentProps {\n data: {\n image: {\n url: string;\n alt?: string;\n small_url?: string;\n };\n url?: string;\n title?: string;\n position?: number;\n [key: string]: unknown;\n };\n priority?: boolean;\n}\n\nexport const FixedBanner = memo(function FixedBanner(props: FixedBannerComponentProps) {\n const { data, priority = false } = props;\n const image = data.image?.url;\n\n if (!image) {\n return null;\n }\n\n const url = data.url;\n const altText = data.image.alt?.trim() ? data.image.alt : data.title || 'fixed banner';\n\n const imgProps = priority\n ? {\n loading: 'eager' as const,\n fetchPriority: 'high' as const,\n decoding: 'sync' as const,\n }\n : {\n loading: 'lazy' as const,\n decoding: 'async' as const,\n };\n\n const smallUrl = data.image.small_url;\n\n return (\n <>\n <div className=\"container\">\n <Link\n to={url || '#'}\n className=\"banner banner--fixed overflow-hidden\"\n aria-label={`Banner ${altText}`}\n >\n <picture>\n {smallUrl && <source media=\"(max-width: 767px)\" srcSet={smallUrl} />}\n <img\n width=\"1200\"\n height=\"300\"\n src={image}\n alt={altText}\n style={{ maxWidth: '100%', objectFit: 'contain' }}\n loading={imgProps.loading}\n decoding={imgProps.decoding}\n {...(priority && { fetchPriority: imgProps.fetchPriority })}\n />\n </picture>\n </Link>\n </div>\n </>\n );\n});\n","import { Suspense } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { FixedProductsSkeleton } from '@salla.sa/twilight-components-react';\nimport { Link } from '../common';\nimport { product, ProductsListSource } from '../../api/product';\nimport { ProductCard } from '../../components/product';\nimport { useTranslation } from '../../providers/i18n';\n\nexport interface FixedProductsProps {\n data: {\n products: { source: ProductsListSource; source_value?: number[] | null };\n title?: string;\n limit?: number | string;\n display_all_url?: string | null;\n key?: string | null;\n isVertical?: boolean;\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport function FixedProducts({ data }: FixedProductsProps) {\n const { t } = useTranslation();\n\n const title = data.title;\n const limit = data.limit ? Number(data.limit) : undefined;\n const isVertical = data.isVertical ?? true;\n\n const { data: result, isLoading } = useQuery(\n product.queries.list({\n source: data.products.source,\n sourceValue: data.products?.source_value,\n perPage: limit,\n })\n );\n\n const products = result?.items ?? [];\n\n if (isLoading) {\n return <FixedProductsSkeleton />;\n }\n\n if (!products.length) return null;\n\n return (\n <Suspense fallback={<FixedProductsSkeleton />}>\n {title && (\n <div className=\"s-block__title\">\n <div className=\"right-side\">\n <h2>{title}</h2>\n </div>\n {data.display_all_url && (\n <Link to={data.display_all_url} className=\"s-block__display-all\">\n {t('blocks.home.display_all', 'View All')}\n <i className=\"sicon-arrow-left\"></i>\n </Link>\n )}\n </div>\n )}\n <div\n className={\n 's-products-list-wrapper ' +\n (isVertical ? 's-products-list-vertical-cards' : 's-products-list-horizontal-cards')\n }\n >\n {products.slice(0, 4).map((product) => (\n <ProductCard key={product.id} product={product} />\n ))}\n </div>\n </Suspense>\n );\n}\n","import { memo, useState, useCallback } from 'react';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport type { Product } from '../../types';\n\ninterface SectionItem {\n title?: string;\n name?: string;\n type?: string;\n id?: string;\n products?: Product[];\n limit?: number;\n}\n\ninterface MainProduct {\n id?: string;\n title?: string;\n value?: string;\n product?: Product;\n}\n\nexport interface FeaturedProductsStyle1Props {\n data: {\n items: SectionItem[];\n main_product?: MainProduct;\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport const FeaturedProductsStyle1 = memo(function FeaturedProductsStyle1({\n data,\n}: FeaturedProductsStyle1Props) {\n const items = data.items || [];\n const mainProduct = data.main_product;\n\n const [activeTab, setActiveTab] = useState<string>(items[0]?.id || '');\n const [isAnimating, setIsAnimating] = useState(false);\n\n const handleTabClick = useCallback(\n (tabId: string) => {\n if (tabId === activeTab) return;\n setIsAnimating(true);\n setActiveTab(tabId);\n setTimeout(() => setIsAnimating(false), 100);\n },\n [activeTab]\n );\n\n if (!items.length) return null;\n\n const hasMultipleSections = items.length > 1;\n\n return (\n <>\n <div className=\"s-block__title\">\n <div className=\"right-side\">\n <h2>{mainProduct?.title}</h2>\n </div>\n {hasMultipleSections && (\n <div className=\"tabs hide-scroll hidden lg:flex\">\n {items.map((section) => (\n <SallaButton\n key={section.id}\n shape=\"link\"\n onClick={() => handleTabClick(section.id || '')}\n className={`tab-trigger ${activeTab === section.id ? 'is-active' : ''}`}\n >\n {section.title || section.name}\n </SallaButton>\n ))}\n </div>\n )}\n </div>\n\n <div className={`grid grid-cols-1 gap-8 ${mainProduct?.product ? 'lg:grid-cols-2' : ''}`}>\n {mainProduct?.product && (\n <div className=\"flex flex-col\">\n <custom-salla-product-card\n shadow-on-hover\n product={JSON.stringify(mainProduct.product)}\n isSpecial\n ></custom-salla-product-card>\n </div>\n )}\n <div className=\"flex flex-col\">\n {hasMultipleSections && (\n <div className=\"tabs mb-4 sm:mb-8 hide-scroll lg:hidden\">\n {items.map((section) => (\n <SallaButton\n key={section.id}\n shape=\"link\"\n onClick={() => handleTabClick(section.id || '')}\n className={`tab-trigger ${activeTab === section.id ? 'is-active' : ''}`}\n >\n {section.title || section.name}\n </SallaButton>\n ))}\n </div>\n )}\n\n <div className=\"tabs-wrapper flex flex-1\">\n {items.map((section) => {\n const isActive = activeTab === section.id;\n return (\n <div\n key={section.id}\n className={`tabs__item grid-cols-2 ${mainProduct?.product ? '' : 'lg:grid-cols-4'} ${isActive ? 'is-active' : ''} ${isAnimating && isActive ? 'opacity-0 translate-y-3' : ''} ${!isAnimating && isActive ? 'opacity-100 translate-y-0' : ''}`}\n >\n {section.products\n ?.slice(0, mainProduct?.product ? 4 : 8)\n .map((product, productIndex) => (\n <custom-salla-product-card\n key={product.id || productIndex}\n product={JSON.stringify(product)}\n ></custom-salla-product-card>\n ))}\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </>\n );\n});\n","import { memo, useState, useCallback } from 'react';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaProductsList } from '@salla.sa/twilight-components-react';\nimport { SallaProductsSlider } from '@salla.sa/twilight-components-react';\nimport { product, ProductsListSource } from '../../api/product';\nimport { ProductCard } from '../../components/product';\n\ninterface ProductSource {\n source: ProductsListSource;\n limit?: number;\n source_value?: number | number[];\n}\n\ninterface SectionItem {\n title?: string;\n name?: string;\n type?: string;\n id?: string;\n products: ProductSource;\n limit?: number;\n}\n\nexport interface FeaturedProductsStyle2Props {\n data: {\n items: SectionItem[];\n position?: number;\n is_slider?: boolean;\n [key: string]: unknown;\n };\n}\n\nexport const FeaturedProductsStyle2 = memo(function FeaturedProductsStyle2({\n data,\n}: FeaturedProductsStyle2Props) {\n const items = data.items || [];\n const isSlider = data.is_slider ?? true;\n\n const [activeTab, setActiveTab] = useState<string>(items[0]?.id || '');\n const [isAnimating, setIsAnimating] = useState(false);\n\n const handleTabClick = useCallback(\n (tabId: string) => {\n if (tabId === activeTab) return;\n setIsAnimating(true);\n setActiveTab(tabId);\n setTimeout(() => setIsAnimating(false), 100);\n },\n [activeTab]\n );\n\n const loader = useCallback(\n (source: ProductsListSource, value?: number | number[], limit?: number) => {\n return () =>\n product.list({\n source: source,\n sourceValue: value,\n perPage: limit,\n });\n },\n []\n );\n\n if (!items.length) return null;\n\n const hasMultipleSections = items.length > 1;\n\n return (\n <>\n <div className=\"container\">\n {hasMultipleSections && (\n <div className=\"tabs hide-scroll\">\n {items.map((section) => (\n <SallaButton\n key={section.id}\n fill=\"outline\"\n onClick={() => handleTabClick(section.id || '')}\n className={`tab-trigger ${activeTab === section.id ? 'is-active' : ''}`}\n >\n {section.title || section.name}\n </SallaButton>\n ))}\n </div>\n )}\n\n <div className=\"tabs-wrapper\">\n {items.map((section) => {\n const isActive = activeTab === section.id;\n return (\n <div\n key={section.id}\n className={`tabs__item ${isActive ? 'is-active' : ''} ${isAnimating && isActive ? 'opacity-0 translate-y-3' : ''} ${!isAnimating && isActive ? 'opacity-100 translate-y-0' : ''}`}\n >\n {isSlider ? (\n <SallaProductsSlider\n loader={loader(\n section.products.source,\n section.products?.source_value,\n section.products?.limit\n )}\n sliderProps={{ id: `section-${section.id}-slider` }}\n >\n {(product) => (\n <ProductCard className=\"s-products-slider-card\" product={product} />\n )}\n </SallaProductsSlider>\n ) : (\n <SallaProductsList\n loader={loader(\n section.products.source,\n section.products?.source_value,\n section.products?.limit\n )}\n itemsClassName=\"s-products-list-horizontal-cards\"\n >\n {(products) =>\n products.map((product) => <ProductCard key={product.id} product={product} />)\n }\n </SallaProductsList>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </>\n );\n});\n","import { memo } from 'react';\nimport { ProductCard } from '../product/ProductCard';\nimport type { Product } from '../../types';\n\ninterface SectionItem {\n title?: string;\n name?: string;\n type?: string;\n products?: Product[];\n featured_product?: Product;\n limit?: number;\n id?: string;\n}\n\nexport interface FeaturedProductsStyle3Props {\n data: {\n items: SectionItem[];\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport const FeaturedProductsStyle3 = memo(function FeaturedProductsStyle3({\n data,\n}: FeaturedProductsStyle3Props) {\n const items = data.items || [];\n\n if (!items.length) return null;\n\n return (\n <>\n <div className=\"inner\">\n {items.map((section, sectionIndex) => (\n <div key={section.id || sectionIndex}>\n <div className=\"s-block__title\">\n <h2>{section.title}</h2>\n </div>\n <div className=\"flex-1 grid lg:grid-cols-2 gap-4 sm:gap-8\">\n {section.featured_product ? (\n <>\n <ProductCard product={section.featured_product} layout=\"fullImage\" withShadow />\n <div className=\"grid gap-4 sm:gap-8\">\n {section.products?.slice(0, 3).map((product, idx) => (\n <ProductCard\n key={product.id}\n product={product}\n layout=\"minimal\"\n withShadow\n index={idx}\n />\n ))}\n </div>\n </>\n ) : (\n section.products?.map((product, idx) => (\n <ProductCard\n key={product.id}\n product={product}\n layout=\"minimal\"\n withShadow\n index={idx}\n />\n ))\n )}\n </div>\n </div>\n ))}\n </div>\n </>\n );\n});\n","import { memo } from 'react';\nimport { Link } from '../common';\n\ninterface ImageData {\n url?: string;\n}\n\nexport interface ParallaxBackgroundProps {\n data: {\n image: ImageData;\n url?: string;\n title?: string;\n link_text?: string;\n is_opacity?: boolean;\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport const ParallaxBackground = memo(function ParallaxBackground({\n data,\n}: ParallaxBackgroundProps) {\n const { image, url, title, link_text: linkText, is_opacity: isOpacity = false } = data;\n\n if (!image?.url) return null;\n\n return (\n <>\n <div className=\"full-banner-entry\" style={{ backgroundImage: `url(${image.url})` }}>\n <div\n className={`overlay h-full w-full ${isOpacity ? 'bg-black' : ''} opacity-60 absolute top-0 left-0`}\n ></div>\n <div className=\"flex h-full items-center justify-center p-5 xs:p-11 relative\">\n <div>\n {title && <h2 className=\"text-2xl font-bold leading-12\">{title}</h2>}\n\n {url && linkText && (\n <Link\n to={url}\n className=\"inline-block text-white text-sm border rounded-md font-bold px-8 py-4\"\n >\n {linkText}\n </Link>\n )}\n </div>\n </div>\n </div>\n </>\n );\n});\n","import { memo } from 'react';\nimport { SallaSlider } from '@salla.sa/twilight-components-react/slider';\nimport { Link, Image } from '../common';\n\ninterface PhotoItem {\n url?: string;\n link_type?: string;\n image?: string;\n}\n\nexport interface PhotosSliderProps {\n data: {\n items: PhotoItem[];\n position?: number;\n is_repeated?: boolean;\n [key: string]: unknown;\n };\n}\n\nexport const PhotosSlider = memo(function PhotosSlider({ data }: PhotosSliderProps) {\n const items = data.items || [];\n const position = data.position ?? 1;\n\n if (!items.length) return null;\n\n return (\n <>\n <SallaSlider\n type=\"carousel\"\n className=\"home-slider photos-slider\"\n centered\n autoPlay\n pagination\n id={`photos-${position}-slider`}\n sliderConfig={{ watchOverflow: true }}\n >\n <div slot=\"items\">\n {items.map((item, index) => (\n <div key={index} className=\"swiper-slide\" style={{ aspectRatio: '1200/300' }}>\n <Link to={item.url || '#'}>\n <Image\n src={item.image}\n className=\"w-full h-full object-contain rounded-md\"\n alt={`image-slider-${index}`}\n width={1200}\n height={300}\n priority={index === 0}\n />\n </Link>\n </div>\n ))}\n </div>\n </SallaSlider>\n </>\n );\n});\n","import { memo } from 'react';\nimport { Link } from '../common';\n\ninterface ImageData {\n url?: string;\n alt?: string;\n}\n\ninterface SquarePhotoItem {\n url?: string;\n link_type?: string;\n image?: ImageData;\n text?: string;\n}\n\nexport interface SquarePhotosProps {\n data: {\n title?: string;\n items: SquarePhotoItem[];\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport const SquarePhotos = memo(function SquarePhotos({ data }: SquarePhotosProps) {\n const items = data.items || [];\n const title = data.title;\n\n if (!items.length) return null;\n\n const gridCols =\n items.length <= 3 ? `one-row md:grid-cols-${items.length}` : 'md:grid-cols-3 two-row';\n\n return (\n <>\n {title && (\n <div className=\"s-block__title\">\n <div className=\"right-side\">\n <h2>{title}</h2>\n </div>\n </div>\n )}\n\n <div className={`grid ${gridCols} grid-flow-row gap-3 sm:gap-8`}>\n {items.map((item, index) => (\n <Link\n key={index}\n className={`banner-entry square-photos ${item.text ? 'has-overlay with-hover' : ''}`}\n style={{ backgroundImage: `url(${item.image?.url})` }}\n to={item.url || '#'}\n {...(item.link_type === 'external_link' ? { target: '_blank' } : {})}\n >\n {item.text && (\n <h3 className=\"text-with-border\">\n <span>{item.text}</span>\n </h3>\n )}\n </Link>\n ))}\n </div>\n </>\n );\n});\n","import { memo, useEffect, useState } from 'react';\n\nexport interface YoutubeProps {\n data: {\n youtube_id: string;\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport const Youtube = memo(function Youtube({ data }: YoutubeProps) {\n const { youtube_id: youtubeId } = data;\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n if (!youtubeId) return;\n\n // Lazy load the lite-youtube web component\n let mounted = true;\n import('@justinribeiro/lite-youtube')\n .then(() => {\n if (mounted) setIsLoaded(true);\n })\n .catch((err) => {\n console.error('Failed to load lite-youtube:', err);\n });\n\n return () => {\n mounted = false;\n };\n }, [youtubeId]);\n\n if (!youtubeId) return null;\n\n return (\n <>\n <div className=\"container\">\n <div className=\"videoWrapper\">\n {isLoaded ? (\n <lite-youtube videoid={youtubeId} params=\"rel=0\"></lite-youtube>\n ) : (\n <div className=\"animate-pulse bg-gray-200 w-full h-full min-h-[300px] rounded\" />\n )}\n </div>\n </div>\n </>\n );\n});\n","import { memo, useState, useEffect } from 'react';\n\nexport interface BundleComponentProps {\n data: {\n component_name: string;\n bundle_id: string;\n [key: string]: unknown;\n };\n}\n\nexport const BundleComponent = memo(function BundleComponent(props: BundleComponentProps) {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (!mounted) {\n return null;\n }\n\n const { component_name: componentName, bundle_id: bundleId, ...rest } = props.data;\n const config = JSON.stringify(rest);\n\n return (\n <>\n <salla-custom-component\n component-name={componentName}\n bundle-id={bundleId}\n config={config}\n suppressHydrationWarning\n />\n </>\n );\n});\n","import { lazy } from 'react';\n\nexport { ProductsSlider as LazyProductsSlider } from './ProductsSlider';\nexport { StoreFeatures as LazyStoreFeatures } from './StoreFeatures';\nexport { FixedBanner as LazyFixedBanner } from './FixedBanner';\nexport { FixedProducts as LazyFixedProducts } from './FixedProducts';\nexport { FeaturedProductsStyle1 as LazyFeaturedProductsStyle1 } from './FeaturedProductsStyle1';\nexport { FeaturedProductsStyle2 as LazyFeaturedProductsStyle2 } from './FeaturedProductsStyle2';\nexport { FeaturedProductsStyle3 as LazyFeaturedProductsStyle3 } from './FeaturedProductsStyle3';\nexport { ParallaxBackground as LazyParallaxBackground } from './ParallaxBackground';\nexport { PhotosSlider as LazyPhotosSlider } from './PhotosSlider';\nexport { SquarePhotos as LazySquarePhotos } from './SquarePhotos';\nexport const LazyTestimonials = lazy(() =>\n import('./Testimonials').then((m) => ({ default: m.Testimonials }))\n);\nexport { Youtube as LazyYoutube } from './Youtube';\nexport { BundleComponent as LazyBundleComponent } from './BundleComponent';\n","import {\n LazyProductsSlider,\n LazyStoreFeatures,\n LazyFixedBanner,\n LazyFixedProducts,\n LazyFeaturedProductsStyle1,\n LazyFeaturedProductsStyle2,\n LazyFeaturedProductsStyle3,\n LazyParallaxBackground,\n LazyPhotosSlider,\n LazySquarePhotos,\n LazyTestimonials,\n LazyYoutube,\n LazyBundleComponent,\n} from './lazy';\nimport type { AnyHomeComponent } from './types';\nimport { registry } from '../ComponentRegistry';\n\nexport const DefaultHomeComponents: Record<string, AnyHomeComponent | null> = {\n 'fixed-banner': LazyFixedBanner,\n 'photos-slider': LazyPhotosSlider,\n testimonial: LazyTestimonials,\n 'store-features': LazyStoreFeatures,\n youtube: LazyYoutube,\n 'square-photos': LazySquarePhotos,\n 'fixed-products': LazyFixedProducts,\n 'products-slider': LazyProductsSlider,\n 'parallax-background': LazyParallaxBackground,\n 'featured-products:style1': LazyFeaturedProductsStyle1,\n 'featured-products:style2': LazyFeaturedProductsStyle2,\n 'featured-products:style3': LazyFeaturedProductsStyle3,\n 'bundle-component': LazyBundleComponent,\n};\n\nexport function registerHomeComponents(\n components: Record<string, AnyHomeComponent | null> = DefaultHomeComponents,\n prefix = 'home:'\n): void {\n Object.entries(components).forEach(([path, component]) => {\n if (component) {\n registry.register(`${prefix}${path}`, component);\n }\n });\n}\n","import { Component, type ReactNode, type ErrorInfo } from 'react';\nimport { TwilightContext } from '../../providers/twilight-context';\nimport type { TwilightContextValue } from '../../providers/twilight.types';\nimport type { HomeComponentData } from '../../types';\n\ninterface ComponentErrorBoundaryProps {\n children: ReactNode;\n data: HomeComponentData;\n position: number;\n}\n\ninterface ComponentErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nfunction DevelopmentErrorCard({ error, data }: { error: Error; data: HomeComponentData }) {\n return (\n <section dir=\"ltr\" className=\"s-block container overflow-hidden bg-red-50 border border-red-300 p-4\">\n <p className=\"text-red-800 text-sm font-bold\">Home Component Error: {data.path}</p>\n <p className=\"text-red-700 text-sm mt-2\">{error.message}</p>\n <details className=\"mt-2\">\n <summary className=\"text-xs cursor-pointer text-red-600\">Stack Trace</summary>\n <pre className=\"text-xs mt-1 overflow-auto max-h-32 text-red-700\">{error.stack}</pre>\n </details>\n <details className=\"mt-2\">\n <summary className=\"text-xs cursor-pointer text-red-600\">Component Data</summary>\n <pre className=\"text-xs mt-1 overflow-auto max-h-32 text-red-700\">\n {JSON.stringify(data, null, 2)}\n </pre>\n </details>\n </section>\n );\n}\n\nexport class ComponentErrorBoundary extends Component<\n ComponentErrorBoundaryProps,\n ComponentErrorBoundaryState\n> {\n static contextType = TwilightContext;\n\n declare context: TwilightContextValue | null;\n\n constructor(props: ComponentErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ComponentErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n if (!this.context) {\n console.error('[ComponentErrorBoundary] Must be used within TwilightProvider');\n return;\n }\n const { log } = this.context;\n const { data, position } = this.props;\n\n log.groupCollapsed(`HomeComponent Error: ${data.path || 'unknown'}`);\n log.error('ERROR', error.message);\n log.label('COMPONENT', data.path || 'unknown');\n log.label('POSITION', position);\n log.label('URL', typeof window !== 'undefined' ? window.location.href : 'SSR');\n log.label('TIME', new Date().toISOString());\n log.trace('STACK TRACE', error.stack || '');\n log.trace('COMPONENT STACK', errorInfo.componentStack || '');\n log.dir('COMPONENT DATA', data);\n log.groupEnd();\n }\n\n render(): ReactNode {\n const { hasError, error } = this.state;\n const { children, data } = this.props;\n\n if (hasError && error) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n\n return <DevelopmentErrorCard error={error} data={data} />;\n }\n\n return children;\n }\n}\n","import { memo, useEffect, useRef, type ReactNode } from 'react';\nimport { registry } from '../ComponentRegistry';\nimport { RenderWhenVisible } from '../common';\nimport { ComponentErrorBoundary } from './ComponentErrorBoundary';\nimport type { AnyHomeComponent } from './index';\nimport type { HomeComponentData } from '../../types';\nimport {\n BackgroundSliderSkeleton,\n BulletDeliverySkeleton,\n FixedProductsSkeleton,\n ListSkeleton,\n ProductsSliderSkeleton,\n Pulse,\n ReviewItemSkeleton,\n SliderSkeleton,\n} from '@salla.sa/twilight-components-react';\n\nfunction SquareGridSkeleton() {\n return (\n <div className=\"s-block container grid grid-cols-2 sm:grid-cols-4 gap-4 py-8\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"aspect-square\" />\n ))}\n </div>\n );\n}\n\nexport type HomeComponentsProps = {\n data: HomeComponentData & {\n position?: number;\n [key: string]: unknown;\n };\n};\n\n/**\n * Fallback component for unknown/unregistered components\n * Only shows in development mode\n */\nconst FallbackComponent = memo(function FallbackComponent({ data }: HomeComponentsProps) {\n if (process.env.NODE_ENV === 'production') return null;\n\n return (\n <section\n dir=\"ltr\"\n className=\"s-block container overflow-hidden bg-yellow-50 border border-yellow-200 p-4\"\n >\n <p className=\"text-yellow-800 text-sm\">\n <strong>Unknown component:</strong> {data.path}\n </p>\n <p className=\"text-yellow-700 text-xs mt-1\">\n Register it in setup.ts: <code>registry.register('home:{data.path}', YourComponent)</code>\n </p>\n <details className=\"mt-2\">\n <summary className=\"text-xs cursor-pointer\">Component Data</summary>\n <pre className=\"text-xs mt-1 overflow-auto max-h-32\">{JSON.stringify(data, null, 2)}</pre>\n </details>\n </section>\n );\n});\n\n/**\n * Get the React component for a given home component path\n * Looks up from registry only - theme must register components\n */\nfunction getComponentByPath(data: HomeComponentData): AnyHomeComponent {\n const { path, view_style: viewStyle } = data;\n\n // 1. Check for view_style variant first\n if (viewStyle) {\n const variantKey = `home:${path}:${viewStyle}`;\n const variant = registry.resolve(variantKey);\n if (variant) {\n return variant as AnyHomeComponent;\n }\n }\n\n // 2. Check registry for component\n const registryKey = `home:${path}`;\n const component = registry.resolve(registryKey);\n if (component) {\n return component as AnyHomeComponent;\n }\n\n // 3. Fallback for unknown components\n return FallbackComponent;\n}\n\n/**\n * Render-shell config for a home block: the values the lazy-load wrapper\n * (`RenderWhenVisible`) needs *before* the block mounts — reserved height, the\n * skeleton placeholder, and the wrapper's className/id.\n *\n * Themes register config for blocks they own via `registerHomeComponentConfig`;\n * the engine knows nothing about theme-specific blocks.\n */\nexport type HomeComponentConfig = {\n height?: string;\n className?: string | ((data: HomeComponentData) => string);\n id?: string | ((data: HomeComponentData) => string);\n placeholder?: ReactNode;\n};\n\nconst COMPONENT_CONFIG: Record<string, HomeComponentConfig> = {\n 'products-slider': { height: '450px', placeholder: <ProductsSliderSkeleton /> },\n 'fixed-products': { height: '450px', placeholder: <FixedProductsSkeleton /> },\n 'featured-products': {\n height: '450px',\n placeholder: <ProductsSliderSkeleton />,\n className: (data) => {\n const style = data.view_style;\n if (style === 'style1')\n return 's-block s-block--featured-products s-block-tabs s-block--special-products container tabs-initialized';\n if (style === 'style2')\n return `s-block s-block--featured-products s-block-tabs s-block--tabs-produtcs s-block--full-bg tabs-initialized ${data.is_slider ? 'as-slider' : 'as-grid'} bg-gray-100 py-8 sm:py-16`;\n if (style === 'style3')\n return `s-block s-block--featured-products s-block--features-products${Array.isArray(data.items) && data.items.length > 1 ? ' two-cols' : ''} container`;\n return 's-block s-block--featured-products container overflow-hidden';\n },\n id: (data) => `featured-products-${data.view_style}-${data.position ?? 0}`,\n },\n testimonial: { height: '350px', placeholder: <ReviewItemSkeleton /> },\n 'store-features': { height: '200px', placeholder: <BulletDeliverySkeleton /> },\n 'parallax-background': { height: '500px', placeholder: <BackgroundSliderSkeleton /> },\n 'fixed-banner': { height: '350px', placeholder: <BackgroundSliderSkeleton /> },\n 'photos-slider': {\n height: 'clamp(130px, 30vw, 350px)',\n placeholder: <SliderSkeleton />,\n className: (data) =>\n `s-block s-block--photos-slider${data.is_repeated ? ' repeated-block' : ''}`,\n },\n 'square-photos': { height: '250px', placeholder: <SquareGridSkeleton /> },\n youtube: { height: '350px', placeholder: <SliderSkeleton /> },\n 'bundle-component': {\n height: '400px',\n placeholder: <ProductsSliderSkeleton />,\n className: (data) => `s-block s-block--bundle-${data.component_name}`,\n },\n 'main-links': {\n height: '200px',\n placeholder: <ListSkeleton />,\n className: (data) => {\n const mergeWithTop = data.merge_links_with_top_component;\n const position = data.position;\n return [\n 's-block',\n 's-block--main-links',\n mergeWithTop && position ? 'merge-with-top-component' : '',\n !data.title && mergeWithTop ? 'merged-has-no-title' : '',\n ]\n .filter(Boolean)\n .join(' ');\n },\n },\n 'square-links': { height: '200px', placeholder: <SquareGridSkeleton /> },\n};\n\n/**\n * Theme-registered render-shell config, keyed by home component path. Themes own\n * the display of their blocks by registering config here; at render time a path's\n * theme entry replaces (not field-merges) the engine's built-in `COMPONENT_CONFIG`\n * entry for that path.\n */\nconst themeComponentConfig: Record<string, HomeComponentConfig> = {};\n\n/**\n * Register render-shell config for home blocks a theme owns (height, placeholder,\n * className, id). Merges by path and overwrites existing keys, so it is safe to\n * call more than once and idempotent for the same keys.\n */\nexport function registerHomeComponentConfig(config: Record<string, HomeComponentConfig>): void {\n Object.assign(themeComponentConfig, config);\n}\n\n/**\n * Resolve a block's render-shell config: theme-registered config takes precedence\n * over the engine's built-in config; returns `undefined` when neither defines the\n * path so the renderer can apply generic defaults.\n */\nfunction resolveComponentConfig(path: string): HomeComponentConfig | undefined {\n return themeComponentConfig[path] ?? COMPONENT_CONFIG[path];\n}\n\n/**\n * Memoized component renderer with scroll-based lazy loading\n * Components only mount when scrolled into view - preventing API calls until needed\n */\nexport const HomeComponentRenderer = memo(function HomeComponentRenderer({\n data,\n index,\n}: {\n data: HomeComponentData;\n index: number;\n}) {\n const renderCountRef = useRef(0);\n renderCountRef.current += 1;\n\n if (process.env.NODE_ENV === 'development') {\n console.log(\n `[HomeComponentRenderer] RENDER: path=${data.path}, index=${index}, renderCount=${renderCountRef.current}`\n );\n }\n\n useEffect(() => {\n console.log(\n `[HomeComponentRenderer] MOUNT: path=${data.path}, index=${index}, renderCount=${renderCountRef.current}`\n );\n return () => {\n console.log(`[HomeComponentRenderer] UNMOUNT: path=${data.path}, index=${index}`);\n };\n }, [data.path, index]);\n\n const isFirstComponent = index <= 2;\n const Component = getComponentByPath(data);\n\n const config = resolveComponentConfig(data.path);\n\n const resolvedClassName = config?.className\n ? typeof config.className === 'function'\n ? config.className(data)\n : config.className\n : `s-block s-block--${data.path}`;\n const resolvedId = config?.id\n ? typeof config.id === 'function'\n ? config.id(data)\n : config.id\n : undefined;\n const height = config?.height || '400px';\n\n const content = (\n <ComponentErrorBoundary data={data} position={index + 1}>\n <Component data={{ ...data, position: index + 1, priority: isFirstComponent }} />\n </ComponentErrorBoundary>\n );\n\n return (\n <RenderWhenVisible\n rootMargin=\"50px\"\n className={resolvedClassName}\n id={resolvedId}\n estimatedHeight={height}\n renderOnMount={isFirstComponent}\n placeholder={config?.placeholder ?? <ProductsSliderSkeleton />}\n >\n {content}\n </RenderWhenVisible>\n );\n});\n"]}
@@ -0,0 +1,32 @@
1
+ import { api } from './chunk-2TB2LTL2.js';
2
+ import { queryOptions } from '@tanstack/react-query';
3
+
4
+ var wishlist = {
5
+ list: async (params = {}) => {
6
+ const { page = 1, perPage = 15, filterable, signal } = params;
7
+ const searchParams = new URLSearchParams();
8
+ searchParams.set("source", "wishlist");
9
+ searchParams.set("page", String(page));
10
+ searchParams.set("per_page", String(perPage));
11
+ if (filterable !== void 0) {
12
+ searchParams.set("filterable", filterable ? "1" : "0");
13
+ }
14
+ const options = {};
15
+ if (signal) options.signal = signal;
16
+ const response = await api.get(`products?${searchParams.toString()}`, options).json();
17
+ return {
18
+ items: response.data ?? [],
19
+ next: response.cursor?.next ?? null
20
+ };
21
+ },
22
+ queries: {
23
+ list: (params) => queryOptions({
24
+ queryKey: ["wishlist", "list", params],
25
+ queryFn: ({ signal }) => wishlist.list({ ...params, signal })
26
+ })
27
+ }
28
+ };
29
+
30
+ export { wishlist };
31
+ //# sourceMappingURL=chunk-O2UOV5RK.js.map
32
+ //# sourceMappingURL=chunk-O2UOV5RK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/wishlist.ts"],"names":[],"mappings":";;;AAeO,IAAM,QAAA,GAAW;AAAA,EACtB,IAAA,EAAM,OAAO,MAAA,GAA6B,EAAC,KAAmC;AAC5E,IAAA,MAAM,EAAE,IAAA,GAAO,CAAA,EAAG,UAAU,EAAA,EAAI,UAAA,EAAY,QAAO,GAAI,MAAA;AAEvD,IAAA,MAAM,YAAA,GAAe,IAAI,eAAA,EAAgB;AACzC,IAAA,YAAA,CAAa,GAAA,CAAI,UAAU,UAAU,CAAA;AACrC,IAAA,YAAA,CAAa,GAAA,CAAI,MAAA,EAAQ,MAAA,CAAO,IAAI,CAAC,CAAA;AACrC,IAAA,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,MAAA,CAAO,OAAO,CAAC,CAAA;AAE5C,IAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,MAAA,YAAA,CAAa,GAAA,CAAI,YAAA,EAAc,UAAA,GAAa,GAAA,GAAM,GAAG,CAAA;AAAA,IACvD;AAEA,IAAA,MAAM,UAAmC,EAAC;AAC1C,IAAA,IAAI,MAAA,UAAgB,MAAA,GAAS,MAAA;AAE7B,IAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CACpB,GAAA,CAAI,CAAA,SAAA,EAAY,YAAA,CAAa,QAAA,EAAU,CAAA,CAAA,EAAI,OAAc,CAAA,CACzD,IAAA,EAA2B;AAE9B,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,QAAA,CAAS,IAAA,IAAQ,EAAC;AAAA,MACzB,IAAA,EAAM,QAAA,CAAS,MAAA,EAAQ,IAAA,IAAQ;AAAA,KACjC;AAAA,EACF,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,CAAC,MAAA,KACL,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,UAAA,EAAY,MAAA,EAAQ,MAAM,CAAA;AAAA,MACrC,OAAA,EAAS,CAAC,EAAE,MAAA,EAAO,KAAM,QAAA,CAAS,IAAA,CAAK,EAAE,GAAG,MAAA,EAAQ,MAAA,EAAQ;AAAA,KAC7D;AAAA;AAEP","file":"chunk-O2UOV5RK.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport type { ProductsListResult, ProductsListResponse } from './product';\n\nexport interface WishlistListParams {\n page?: number;\n perPage?: number;\n filterable?: boolean;\n signal?: AbortSignal;\n}\n\n/**\n * Wishlist API — page-based pagination only.\n * Kept separate from product.list to avoid mixing cursor and page pagination strategies.\n */\nexport const wishlist = {\n list: async (params: WishlistListParams = {}): Promise<ProductsListResult> => {\n const { page = 1, perPage = 15, filterable, signal } = params;\n\n const searchParams = new URLSearchParams();\n searchParams.set('source', 'wishlist');\n searchParams.set('page', String(page));\n searchParams.set('per_page', String(perPage));\n\n if (filterable !== undefined) {\n searchParams.set('filterable', filterable ? '1' : '0');\n }\n\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`products?${searchParams.toString()}`, options as any)\n .json<ProductsListResponse>();\n\n return {\n items: response.data ?? [],\n next: response.cursor?.next ?? null,\n };\n },\n\n queries: {\n list: (params: Omit<WishlistListParams, 'signal'>) =>\n queryOptions({\n queryKey: ['wishlist', 'list', params],\n queryFn: ({ signal }) => wishlist.list({ ...params, signal }),\n }),\n },\n};\n"]}
@@ -0,0 +1,66 @@
1
+ import { orThrow } from './chunk-GO34DE35.js';
2
+ import { getActiveScopeId, api } from './chunk-2TB2LTL2.js';
3
+ import { queryOptions } from '@tanstack/react-query';
4
+
5
+ var product = {
6
+ find: async (id) => {
7
+ const endpoint = `products/${id}/details?with[]=images&with[]=category&with[]=rating&with[]=notify_availability&with[]=tags&with[]=brand&with[]=options&with[]=skus&with[]=skus_availability&with[]=included_products&with[]=bundle&with[]=sold_quantity`;
8
+ const { data } = await api.get(endpoint).json();
9
+ return data;
10
+ },
11
+ findOrThrow: (id) => orThrow(product.find(id)),
12
+ /**
13
+ * Fetch products list with pagination support
14
+ * Used by native ProductsList component for SSR loaders
15
+ *
16
+ * API pattern: GET /products?source=wishlist&page=1
17
+ */
18
+ list: async (params) => {
19
+ const { source, sourceValue, page, cursor, perPage = 16, sort, filterable, signal } = params;
20
+ const searchParams = new URLSearchParams();
21
+ searchParams.set("source", source);
22
+ if (page !== void 0) searchParams.set("page", String(page));
23
+ searchParams.set("per_page", String(perPage));
24
+ if (sourceValue !== void 0) {
25
+ if (source === "search") {
26
+ searchParams.set("keyword", String(sourceValue));
27
+ } else if (Array.isArray(sourceValue)) {
28
+ sourceValue.forEach((val) => searchParams.append("source_value[]", String(val)));
29
+ } else {
30
+ searchParams.append("source_value[]", String(sourceValue));
31
+ }
32
+ }
33
+ if (filterable !== void 0) {
34
+ searchParams.set("filterable", filterable ? "1" : "0");
35
+ }
36
+ if (sort) {
37
+ searchParams.set("sort", sort);
38
+ }
39
+ if (cursor) {
40
+ searchParams.set("cursor", cursor);
41
+ }
42
+ const options = {};
43
+ if (signal) options.signal = signal;
44
+ const response = await api.get(`products?${searchParams.toString()}`, options).json();
45
+ return {
46
+ items: response.data ?? [],
47
+ next: response.cursor?.next ?? null,
48
+ filters: response.filters
49
+ };
50
+ },
51
+ queries: {
52
+ detail: (id) => queryOptions({
53
+ queryKey: ["products", "detail", id],
54
+ queryFn: () => product.find(id)
55
+ }),
56
+ list: (params) => queryOptions({
57
+ // Scope (branch) varies product availability — key must include it.
58
+ queryKey: ["products", "list", params, { scope: getActiveScopeId() }],
59
+ queryFn: ({ signal }) => product.list({ ...params, signal })
60
+ })
61
+ }
62
+ };
63
+
64
+ export { product };
65
+ //# sourceMappingURL=chunk-OZTGUF7K.js.map
66
+ //# sourceMappingURL=chunk-OZTGUF7K.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/product.ts"],"names":[],"mappings":";;;;AA4EO,IAAM,OAAA,GAAU;AAAA,EACrB,IAAA,EAAM,OAAO,EAAA,KAAiC;AAC5C,IAAA,MAAM,QAAA,GAAW,YAAY,EAAE,CAAA,wNAAA,CAAA;AAC/B,IAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,QAAQ,EAAE,IAAA,EAAwB;AACjE,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA,EAEA,aAAa,CAAC,EAAA,KAAiC,QAAQ,OAAA,CAAQ,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQvE,IAAA,EAAM,OAAO,MAAA,KAA4D;AACvE,IAAA,MAAM,EAAE,MAAA,EAAQ,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,UAAU,EAAA,EAAI,IAAA,EAAM,UAAA,EAAY,MAAA,EAAO,GAAI,MAAA;AAGtF,IAAA,MAAM,YAAA,GAAe,IAAI,eAAA,EAAgB;AACzC,IAAA,YAAA,CAAa,GAAA,CAAI,UAAU,MAAM,CAAA;AAEjC,IAAA,IAAI,SAAS,MAAA,EAAW,YAAA,CAAa,IAAI,MAAA,EAAQ,MAAA,CAAO,IAAI,CAAC,CAAA;AAC7D,IAAA,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,MAAA,CAAO,OAAO,CAAC,CAAA;AAI5C,IAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,MAAA,IAAI,WAAW,QAAA,EAAU;AACvB,QAAA,YAAA,CAAa,GAAA,CAAI,SAAA,EAAW,MAAA,CAAO,WAAW,CAAC,CAAA;AAAA,MACjD,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AACrC,QAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,GAAA,KAAQ,YAAA,CAAa,OAAO,gBAAA,EAAkB,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAAA,MACjF,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,MAAA,CAAO,gBAAA,EAAkB,MAAA,CAAO,WAAW,CAAC,CAAA;AAAA,MAC3D;AAAA,IACF;AAGA,IAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,MAAA,YAAA,CAAa,GAAA,CAAI,YAAA,EAAc,UAAA,GAAa,GAAA,GAAM,GAAG,CAAA;AAAA,IACvD;AAGA,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,YAAA,CAAa,GAAA,CAAI,QAAQ,IAAI,CAAA;AAAA,IAC/B;AAGA,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,YAAA,CAAa,GAAA,CAAI,UAAU,MAAM,CAAA;AAAA,IACnC;AAGA,IAAA,MAAM,UAAmC,EAAC;AAC1C,IAAA,IAAI,MAAA,UAAgB,MAAA,GAAS,MAAA;AAE7B,IAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CACpB,GAAA,CAAI,CAAA,SAAA,EAAY,YAAA,CAAa,QAAA,EAAU,CAAA,CAAA,EAAI,OAAc,CAAA,CACzD,IAAA,EAA2B;AAE9B,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,QAAA,CAAS,IAAA,IAAQ,EAAC;AAAA,MACzB,IAAA,EAAM,QAAA,CAAS,MAAA,EAAQ,IAAA,IAAQ,IAAA;AAAA,MAC/B,SAAS,QAAA,CAAS;AAAA,KACpB;AAAA,EACF,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,MAAA,EAAQ,CAAC,EAAA,KACP,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,UAAA,EAAY,QAAA,EAAU,EAAE,CAAA;AAAA,MACnC,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAA,CAAK,EAAE;AAAA,KAC/B,CAAA;AAAA,IACH,IAAA,EAAM,CAAC,MAAA,KACL,YAAA,CAAa;AAAA;AAAA,MAEX,QAAA,EAAU,CAAC,UAAA,EAAY,MAAA,EAAQ,QAAQ,EAAE,KAAA,EAAO,gBAAA,EAAiB,EAAG,CAAA;AAAA,MACpE,OAAA,EAAS,CAAC,EAAE,MAAA,EAAO,KAAM,OAAA,CAAQ,IAAA,CAAK,EAAE,GAAG,MAAA,EAAQ,MAAA,EAAQ;AAAA,KAC5D;AAAA;AAEP","file":"chunk-OZTGUF7K.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api, getActiveScopeId } from './client';\nimport type { Product } from '../types';\nimport type { Pagination, PaginatedResult } from './types';\nimport { orThrow } from '../providers';\n\n// ===== Filter Types =====\n\nexport interface FilterValue {\n key?: string;\n count?: number;\n value?: string;\n from?: number | '*';\n to?: number | '*';\n}\n\nexport interface Filter {\n key?: string;\n label?: string;\n type?: string;\n values?: FilterValue[];\n max?: number;\n min?: number;\n}\n\n// ===== Product List Types =====\n\nexport type ProductsListSource =\n | 'brands'\n | 'categories'\n | 'json'\n | 'landing-page'\n | 'latest'\n | 'offers'\n | 'recently'\n | 'related'\n | 'selected'\n | 'tags'\n | 'top-rated'\n | 'wishlist'\n | 'search'\n | 'sales'\n | 'reorder'\n | 'best_selling';\n\nexport interface ProductsListParams {\n /** Source type (wishlist, latest, brands, etc.) */\n source: ProductsListSource;\n /** Source value (brand_id, category_id, tag_id, search keyword, or JSON array of product IDs) */\n sourceValue?: string | number | number[] | null;\n /** Page number for offset-based pagination */\n page?: number;\n /** Cursor for cursor-based pagination (from previous response) */\n cursor?: string | null;\n /** Items per page (default: 15) */\n perPage?: number;\n /** Sort option */\n sort?: string;\n /** Enable filters on the response */\n filterable?: boolean;\n /** Abort signal for cancellation */\n signal?: AbortSignal;\n}\n\nexport type ProductsListResult = PaginatedResult<Product> & {\n filters?: Filter[];\n};\n\nexport interface ProductsListResponse {\n data: Product[];\n cursor?: Pagination;\n filters?: Filter[];\n}\n\n// ===== API Functions =====\n\nexport const product = {\n find: async (id: string): Promise<Product> => {\n const endpoint = `products/${id}/details?with[]=images&with[]=category&with[]=rating&with[]=notify_availability&with[]=tags&with[]=brand&with[]=options&with[]=skus&with[]=skus_availability&with[]=included_products&with[]=bundle&with[]=sold_quantity`;\n const { data } = await api.get(endpoint).json<{ data: Product }>();\n return data;\n },\n\n findOrThrow: (id: string): Promise<Product> => orThrow(product.find(id)),\n\n /**\n * Fetch products list with pagination support\n * Used by native ProductsList component for SSR loaders\n *\n * API pattern: GET /products?source=wishlist&page=1\n */\n list: async (params: ProductsListParams): Promise<ProductsListResult> => {\n const { source, sourceValue, page, cursor, perPage = 16, sort, filterable, signal } = params;\n\n // Build URL with query parameters\n const searchParams = new URLSearchParams();\n searchParams.set('source', source);\n // Only send page when explicitly provided — cursor-based callers omit it entirely\n if (page !== undefined) searchParams.set('page', String(page));\n searchParams.set('per_page', String(perPage));\n\n // Add source_value[] parameter (brand_id, category_id, tag_id, etc.)\n // For search source, use keyword parameter instead\n if (sourceValue !== undefined) {\n if (source === 'search') {\n searchParams.set('keyword', String(sourceValue));\n } else if (Array.isArray(sourceValue)) {\n sourceValue.forEach((val) => searchParams.append('source_value[]', String(val)));\n } else {\n searchParams.append('source_value[]', String(sourceValue));\n }\n }\n\n // Add filterable parameter\n if (filterable !== undefined) {\n searchParams.set('filterable', filterable ? '1' : '0');\n }\n\n // Add sort parameter\n if (sort) {\n searchParams.set('sort', sort);\n }\n\n // Add cursor for cursor-based pagination\n if (cursor) {\n searchParams.set('cursor', cursor);\n }\n\n // Make the request\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`products?${searchParams.toString()}`, options as any)\n .json<ProductsListResponse>();\n\n return {\n items: response.data ?? [],\n next: response.cursor?.next ?? null,\n filters: response.filters,\n };\n },\n\n queries: {\n detail: (id: string) =>\n queryOptions({\n queryKey: ['products', 'detail', id],\n queryFn: () => product.find(id),\n }),\n list: (params: Omit<ProductsListParams, 'signal'>) =>\n queryOptions({\n // Scope (branch) varies product availability — key must include it.\n queryKey: ['products', 'list', params, { scope: getActiveScopeId() }],\n queryFn: ({ signal }) => product.list({ ...params, signal }),\n }),\n },\n};\n"]}
@@ -0,0 +1,21 @@
1
+ import { orThrow } from './chunk-GO34DE35.js';
2
+ import { api } from './chunk-2TB2LTL2.js';
3
+ import { queryOptions } from '@tanstack/react-query';
4
+
5
+ var page = {
6
+ find: async (slug) => {
7
+ const { data } = await api.get(`pages/${slug}`).json();
8
+ return data;
9
+ },
10
+ findOrThrow: (slug) => orThrow(page.find(slug)),
11
+ queries: {
12
+ detail: (slug) => queryOptions({
13
+ queryKey: ["pages", "detail", slug],
14
+ queryFn: () => page.find(slug)
15
+ })
16
+ }
17
+ };
18
+
19
+ export { page };
20
+ //# sourceMappingURL=chunk-Q3VACSSR.js.map
21
+ //# sourceMappingURL=chunk-Q3VACSSR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/page.ts"],"names":[],"mappings":";;;;AAKO,IAAM,IAAA,GAAO;AAAA,EAClB,IAAA,EAAM,OAAO,IAAA,KAA2C;AACtD,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,CAAA,MAAA,EAAS,IAAI,CAAA,CAAE,CAAA,CAAE,IAAA,EAAgC;AAChF,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA,EAEA,aAAa,CAAC,IAAA,KAA2C,QAAQ,IAAA,CAAK,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,EAEhF,OAAA,EAAS;AAAA,IACP,MAAA,EAAQ,CAAC,IAAA,KACP,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,OAAA,EAAS,QAAA,EAAU,IAAI,CAAA;AAAA,MAClC,OAAA,EAAS,MAAM,IAAA,CAAK,IAAA,CAAK,IAAI;AAAA,KAC9B;AAAA;AAEP","file":"chunk-Q3VACSSR.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport type { ApiPageResponse } from '../routes/page/types';\nimport { orThrow } from '../providers';\n\nexport const page = {\n find: async (slug: string): Promise<ApiPageResponse> => {\n const { data } = await api.get(`pages/${slug}`).json<{ data: ApiPageResponse }>();\n return data;\n },\n\n findOrThrow: (slug: string): Promise<ApiPageResponse> => orThrow(page.find(slug)),\n\n queries: {\n detail: (slug: string) =>\n queryOptions({\n queryKey: ['pages', 'detail', slug],\n queryFn: () => page.find(slug),\n }),\n },\n};\n"]}
@@ -0,0 +1,123 @@
1
+ import { useIsHome } from './chunk-GO34DE35.js';
2
+ import { useTranslation } from './chunk-VVRYP6IL.js';
3
+ import { HookSlot } from './chunk-25SSLQAJ.js';
4
+ import { Image } from './chunk-2KF5JJU6.js';
5
+ import { useTwilight } from './chunk-BWFBVXT3.js';
6
+ import { lazy, useState } from 'react';
7
+ import { SallaAdvertisement } from '@salla.sa/twilight-components-react/advertisement';
8
+ import { SallaCartSummary } from '@salla.sa/twilight-components-react/cart-summary';
9
+ import { SallaContacts } from '@salla.sa/twilight-components-react/contacts';
10
+ import { SallaLocalizationModal } from '@salla.sa/twilight-components-react/localization-modal';
11
+ import { SallaMenu } from '@salla.sa/twilight-components-react/menu';
12
+ import { SallaSearch } from '@salla.sa/twilight-components-react/search';
13
+ import { SallaUserMenu } from '@salla.sa/twilight-components-react/user-menu';
14
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
15
+
16
+ var LazyMainMenu = lazy(() => import('./MainMenu-R3EWTNNC.js').then((m) => ({ default: m.MainMenu })));
17
+ var LazyMobileMenu = lazy(
18
+ () => import('./MobileMenu-QXESUQXC.js').then((m) => ({ default: m.MobileMenu }))
19
+ );
20
+ function Header(_props) {
21
+ const { currency, theme, store } = useTwilight();
22
+ const { locale, languageName } = useTranslation();
23
+ const settings = theme?.settings || {};
24
+ const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
25
+ const isHomepage = useIsHome();
26
+ const StoreTitle = isHomepage ? "h1" : "span";
27
+ return /* @__PURE__ */ jsxs("header", { className: "store-header", suppressHydrationWarning: true, children: [
28
+ /* @__PURE__ */ jsx(HookSlot, { name: "header:start" }),
29
+ /* @__PURE__ */ jsx("div", { className: "advertisement-slot", children: /* @__PURE__ */ jsx(SallaAdvertisement, {}) }),
30
+ /* @__PURE__ */ jsx("div", { className: `top-navbar${settings.topnav_is_dark ? " top-navbar--dark" : ""}`, children: /* @__PURE__ */ jsxs("div", { className: "container flex justify-between", children: [
31
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 flex items-center gap-2", children: [
32
+ settings.important_links && /* @__PURE__ */ jsx(SallaMenu, { source: "footer", topnav: true }),
33
+ /* @__PURE__ */ jsx("div", { className: "header-buttons", children: (store?.settings?.is_multilingual || store?.settings?.currencies_enabled) && /* @__PURE__ */ jsxs(Fragment, { children: [
34
+ /* @__PURE__ */ jsxs(
35
+ "button",
36
+ {
37
+ type: "button",
38
+ onClick: () => window.salla?.event.dispatch("localization::open"),
39
+ className: "btn--rounded-gray basis-0",
40
+ children: [
41
+ /* @__PURE__ */ jsx("span", { children: languageName }),
42
+ /* @__PURE__ */ jsx("span", { className: "mx-1.5", children: "|" }),
43
+ /* @__PURE__ */ jsx("span", { className: `flag iti__flag iti__${store?.country.toLowerCase()}` }),
44
+ /* @__PURE__ */ jsx("span", { children: store?.settings?.use_sar_symbol && currency?.code === "SAR" ? /* @__PURE__ */ jsx("i", { className: "sicon-sar" }) : /* @__PURE__ */ jsx(Fragment, { children: currency?.symbol }) })
45
+ ]
46
+ }
47
+ ),
48
+ /* @__PURE__ */ jsx(
49
+ SallaLocalizationModal,
50
+ {
51
+ language: locale,
52
+ currency: currency?.code || "SAR",
53
+ suppressHydrationWarning: true
54
+ }
55
+ )
56
+ ] }) }),
57
+ store?.scope && /* @__PURE__ */ jsxs(
58
+ "button",
59
+ {
60
+ className: "btn--rounded-gray",
61
+ onClick: () => window.salla?.event.dispatch("scopes::open", {
62
+ mode: "default"
63
+ }),
64
+ children: [
65
+ /* @__PURE__ */ jsx("i", { className: "sicon-location rtl:ml-1 ltr:mr-1" }),
66
+ store.scope.name
67
+ ]
68
+ }
69
+ ),
70
+ /* @__PURE__ */ jsx("div", { className: "header-search flex-1", children: /* @__PURE__ */ jsx(SallaSearch, { inline: true, oval: true, height: 36 }) })
71
+ ] }),
72
+ /* @__PURE__ */ jsx(SallaContacts, { contacts: store?.contacts, contactsTitle: "N/A", isHeader: true })
73
+ ] }) }),
74
+ /* @__PURE__ */ jsx(
75
+ "div",
76
+ {
77
+ id: "mainnav",
78
+ className: `main-nav-container shadow-default bg-white flex items-center relative z-50${settings.header_is_sticky ? " sticky top-0" : ""}`,
79
+ children: /* @__PURE__ */ jsx("div", { className: "inner bg-inherit w-full", children: /* @__PURE__ */ jsx("div", { className: "container", children: /* @__PURE__ */ jsxs("div", { className: "flex items-stretch justify-between relative", children: [
80
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
81
+ /* @__PURE__ */ jsx(
82
+ "a",
83
+ {
84
+ className: "lg:hidden mburger mburger--collapse leading-none rtl:ml-4 ltr:mr-4",
85
+ href: "#mobile-menu",
86
+ "aria-label": "Open-menu",
87
+ onClick: (e) => {
88
+ e.preventDefault();
89
+ setIsMobileMenuOpen(true);
90
+ },
91
+ children: /* @__PURE__ */ jsx("i", { className: "sicon-menu text-primary text-2xl" })
92
+ }
93
+ ),
94
+ /* @__PURE__ */ jsxs("a", { className: "navbar-brand", href: store?.url || "/", children: [
95
+ /* @__PURE__ */ jsx("div", { className: "logo-wrapper", children: /* @__PURE__ */ jsx(
96
+ Image,
97
+ {
98
+ src: store?.logo,
99
+ alt: `${store?.name || "Store"} logo`,
100
+ priority: true,
101
+ width: 120,
102
+ height: 48
103
+ }
104
+ ) }),
105
+ /* @__PURE__ */ jsx(StoreTitle, { className: "sr-only", children: store?.name || "Store" })
106
+ ] }),
107
+ /* @__PURE__ */ jsx(LazyMainMenu, {})
108
+ ] }),
109
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end my-2.5", children: [
110
+ /* @__PURE__ */ jsx(SallaUserMenu, { avatarOnly: true, showHeader: true, className: "header-btn" }),
111
+ /* @__PURE__ */ jsx(SallaCartSummary, { className: "ml-4 rtl:ml-[unset] rtl:mr-4", children: /* @__PURE__ */ jsx("i", { slot: "icon", className: "header-btn__icon icon sicon-shopping-bag" }) })
112
+ ] })
113
+ ] }) }) })
114
+ }
115
+ ),
116
+ /* @__PURE__ */ jsx(LazyMobileMenu, { isOpen: isMobileMenuOpen, onClose: () => setIsMobileMenuOpen(false) }),
117
+ /* @__PURE__ */ jsx(HookSlot, { name: "header:end" })
118
+ ] });
119
+ }
120
+
121
+ export { Header };
122
+ //# sourceMappingURL=chunk-QTDGM2SO.js.map
123
+ //# sourceMappingURL=chunk-QTDGM2SO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/navigation/lazy.ts","../src/components/layout/Header.tsx"],"names":[],"mappings":"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","file":"chunk-QTDGM2SO.js","sourcesContent":["import { lazy } from 'react';\n\n/**\n * Lazy-loaded navigation components\n * Use these for code-splitting navigation sections\n */\nexport const LazyMainMenu = lazy(() => import('./MainMenu').then((m) => ({ default: m.MainMenu })));\n\nexport const LazyMobileMenu = lazy(() =>\n import('./MobileMenu').then((m) => ({ default: m.MobileMenu }))\n);\n","import { useState } from 'react';\nimport { useIsHome } from '../../providers/NavigationProvider';\nimport { SallaAdvertisement } from '@salla.sa/twilight-components-react/advertisement';\nimport { SallaCartSummary } from '@salla.sa/twilight-components-react/cart-summary';\nimport { SallaContacts } from '@salla.sa/twilight-components-react/contacts';\nimport { SallaLocalizationModal } from '@salla.sa/twilight-components-react/localization-modal';\nimport { SallaMenu } from '@salla.sa/twilight-components-react/menu';\nimport { SallaSearch } from '@salla.sa/twilight-components-react/search';\nimport { SallaUserMenu } from '@salla.sa/twilight-components-react/user-menu';\nimport { useTwilight } from '../../providers/twilight-context';\nimport { useTranslation } from '../../providers/i18n';\nimport { HookSlot } from '../../hooks/HookSlot';\nimport { MainMenu, MobileMenu } from '../navigation';\nimport { Image } from '../common';\nimport type { Cart } from '../../types';\n\ninterface HeaderProps {\n cart?: Cart;\n}\n\nexport function Header(_props: HeaderProps) {\n const { currency, theme, store } = useTwilight();\n const { locale, languageName } = useTranslation();\n const settings = theme?.settings || {};\n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);\n\n // Check if we're on homepage\n const isHomepage = useIsHome();\n\n const StoreTitle = isHomepage ? 'h1' : 'span';\n\n return (\n <header className=\"store-header\" suppressHydrationWarning>\n <HookSlot name=\"header:start\" />\n <div className=\"advertisement-slot\">\n <SallaAdvertisement />\n </div>\n {/* Top Nav */}\n <div className={`top-navbar${settings.topnav_is_dark ? ' top-navbar--dark' : ''}`}>\n <div className=\"container flex justify-between\">\n <div className=\"flex-1 flex items-center gap-2\">\n {/* Footer Menu */}\n {settings.important_links && <SallaMenu source=\"footer\" topnav />}\n\n {/* Language & Currency */}\n <div className=\"header-buttons\">\n {(store?.settings?.is_multilingual || store?.settings?.currencies_enabled) && (\n <>\n <button\n type=\"button\"\n onClick={() => window.salla?.event.dispatch('localization::open')}\n className=\"btn--rounded-gray basis-0\"\n >\n <span>{languageName}</span>\n <span className=\"mx-1.5\">|</span>\n <span className={`flag iti__flag iti__${store?.country.toLowerCase()}`}></span>\n\n <span>\n {store?.settings?.use_sar_symbol && currency?.code === 'SAR' ? (\n <i className=\"sicon-sar\"></i>\n ) : (\n <>{currency?.symbol}</>\n )}\n </span>\n </button>\n {/* TODO:: support switch the lang without hit the web API, by set it in the sdk and local storage */}\n {/* TODO:: Support switch the curency without hit the web API, by set it in the sdk and local storage */}\n <SallaLocalizationModal\n language={locale}\n currency={currency?.code || 'SAR'}\n suppressHydrationWarning\n />\n </>\n )}\n </div>\n\n {/* Scopes / Branches */}\n {store?.scope && (\n <button\n className=\"btn--rounded-gray\"\n onClick={() =>\n window.salla?.event.dispatch('scopes::open', {\n mode: 'default',\n })\n }\n >\n <i className=\"sicon-location rtl:ml-1 ltr:mr-1\"></i>\n {store.scope.name}\n </button>\n )}\n\n {/* Search bar */}\n <div className=\"header-search flex-1\">\n {/* todo:: use a search icon insted with open the search popup */}\n <SallaSearch inline oval height={36} />\n </div>\n </div>\n\n <SallaContacts contacts={store?.contacts} contactsTitle=\"N/A\" isHeader />\n </div>\n </div>\n\n {/* Main Nav */}\n <div\n id=\"mainnav\"\n className={`main-nav-container shadow-default bg-white flex items-center relative z-50${settings.header_is_sticky ? ' sticky top-0' : ''}`}\n >\n <div className=\"inner bg-inherit w-full\">\n <div className=\"container\">\n <div className=\"flex items-stretch justify-between relative\">\n <div className=\"flex items-center\">\n <a\n className=\"lg:hidden mburger mburger--collapse leading-none rtl:ml-4 ltr:mr-4\"\n href=\"#mobile-menu\"\n aria-label=\"Open-menu\"\n onClick={(e) => {\n e.preventDefault();\n setIsMobileMenuOpen(true);\n }}\n >\n <i className=\"sicon-menu text-primary text-2xl\"></i>\n </a>\n <a className=\"navbar-brand\" href={store?.url || '/'}>\n <div className=\"logo-wrapper\">\n <Image\n src={store?.logo}\n alt={`${store?.name || 'Store'} logo`}\n priority\n width={120}\n height={48}\n />\n </div>\n <StoreTitle className=\"sr-only\">{store?.name || 'Store'}</StoreTitle>\n </a>\n <MainMenu />\n </div>\n <div className=\"flex items-center justify-end my-2.5\">\n <SallaUserMenu avatarOnly showHeader className=\"header-btn\" />\n <SallaCartSummary className=\"ml-4 rtl:ml-[unset] rtl:mr-4\">\n <i slot=\"icon\" className=\"header-btn__icon icon sicon-shopping-bag\"></i>\n </SallaCartSummary>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {/* Mobile Menu */}\n <MobileMenu isOpen={isMobileMenuOpen} onClose={() => setIsMobileMenuOpen(false)} />\n <HookSlot name=\"header:end\" />\n </header>\n );\n}\n"]}
@@ -0,0 +1,70 @@
1
+ // src/utils/sdk-helpers.ts
2
+ var isBrowser = typeof window !== "undefined";
3
+ function getStoreIdentifier(explicit) {
4
+ if (explicit) return explicit;
5
+ try {
6
+ const viteEnv = import.meta.env?.VITE_STORE_DOMAIN;
7
+ if (viteEnv) return viteEnv;
8
+ } catch {
9
+ }
10
+ if (isBrowser) return window.location.host;
11
+ return typeof process !== "undefined" && process.env?.STORE_DOMAIN || "";
12
+ }
13
+ function getSallaSDK() {
14
+ if (!isBrowser) return void 0;
15
+ return window.salla;
16
+ }
17
+ function syncSdkLocale(locale) {
18
+ const sdk = getSallaSDK();
19
+ if (!sdk || !locale) return;
20
+ try {
21
+ sdk.lang?.setLocale?.(locale);
22
+ sdk.api?.setHeader?.("accept-language", locale);
23
+ sdk.config?.set?.("user.language_code", locale);
24
+ } catch {
25
+ }
26
+ }
27
+
28
+ // src/utils/cookies.ts
29
+ var AUTH_TOKEN_COOKIE_NAME = "token";
30
+ var SCOPE_COOKIE_NAME = "scope";
31
+ function clearAuthTokenCookie() {
32
+ if (typeof document === "undefined") return;
33
+ document.cookie = `${AUTH_TOKEN_COOKIE_NAME}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;
34
+ }
35
+ function extractTokenFromCookies(cookieHeader, cookieName) {
36
+ if (!cookieHeader) return null;
37
+ const prefix = `${cookieName}=`;
38
+ let start = 0;
39
+ while (start < cookieHeader.length) {
40
+ const idx = cookieHeader.indexOf(prefix, start);
41
+ if (idx === -1) return null;
42
+ const prevChar = idx > 0 ? cookieHeader[idx - 1] : "";
43
+ if (prevChar === "" || prevChar === ";" || prevChar === " ") {
44
+ let end = cookieHeader.indexOf(";", idx);
45
+ if (end === -1) end = cookieHeader.length;
46
+ const value = cookieHeader.slice(idx + prefix.length, end).trim();
47
+ try {
48
+ return decodeURIComponent(value) || null;
49
+ } catch {
50
+ return value || null;
51
+ }
52
+ }
53
+ start = idx + prefix.length;
54
+ }
55
+ return null;
56
+ }
57
+ function extractScopeIdFromCookies(cookieHeader) {
58
+ const raw = extractTokenFromCookies(cookieHeader, SCOPE_COOKIE_NAME);
59
+ if (!raw) return null;
60
+ try {
61
+ const scope = JSON.parse(raw);
62
+ return scope?.id != null ? String(scope.id) : null;
63
+ } catch {
64
+ return null;
65
+ }
66
+ }
67
+
68
+ export { AUTH_TOKEN_COOKIE_NAME, clearAuthTokenCookie, extractScopeIdFromCookies, extractTokenFromCookies, getSallaSDK, getStoreIdentifier, syncSdkLocale };
69
+ //# sourceMappingURL=chunk-QYL5OHAV.js.map
70
+ //# sourceMappingURL=chunk-QYL5OHAV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/sdk-helpers.ts","../src/utils/cookies.ts"],"names":[],"mappings":"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","file":"chunk-QYL5OHAV.js","sourcesContent":["export type { StoreContext } from '../api/store';\n\nconst isBrowser = typeof window !== 'undefined';\n\n/**\n * Get the store identifier from multiple sources.\n * Priority: explicit param > VITE_STORE_DOMAIN > window.location.host > process.env.STORE_DOMAIN.\n */\nexport function getStoreIdentifier(explicit?: string): string {\n if (explicit) return explicit;\n try {\n const viteEnv = (import.meta as any).env?.VITE_STORE_DOMAIN;\n if (viteEnv) return viteEnv;\n } catch {\n /* import.meta not available in all environments */\n }\n if (isBrowser) return window.location.host;\n return (typeof process !== 'undefined' && process.env?.STORE_DOMAIN) || '';\n}\n\n/**\n * Get Salla SDK instance if available\n */\nexport function getSallaSDK(): typeof window.salla | undefined {\n if (!isBrowser) return undefined;\n return window.salla;\n}\n\n/**\n * Push the active route locale onto the Salla SDK.\n *\n * Why this is needed (and why it must run on every navigation):\n * - The SDK seeds its locale from `navigator.language` — the theme sets no `s-lang`\n * cookie or `window.locale` — so an English browser starts the SDK in `en` even on\n * an `/ar` store.\n * - The SDK fixes its axios `accept-language` header ONCE, at init. `salla.lang.setLocale`\n * only swaps UI translations (it never touches the header), and `salla.init()` is a\n * no-op after `Salla.status === 'ready'`, so the header never refreshes on its own.\n * - `profile::info.fetched` (login / profile refresh on navigation) overrides the header\n * to the *account's* language.\n *\n * Net result without this: `salla.api.*` calls (cart/product details) return data in the\n * wrong locale — e.g. English cart item names on `/ar/cart` — intermittently, depending on\n * load order and whether a profile fetch ran. Re-asserting the URL locale here keeps the\n * header correct. No-op on the server and until the SDK exposes the methods.\n */\nexport function syncSdkLocale(locale: string): void {\n const sdk = getSallaSDK();\n if (!sdk || !locale) return;\n try {\n sdk.lang?.setLocale?.(locale);\n sdk.api?.setHeader?.('accept-language', locale);\n // The localization modal swaps `/${user.language_code}/` in the URL on submit;\n // the SDK never sets this locally, so without it the switch reloads the same page.\n sdk.config?.set?.('user.language_code', locale);\n } catch {\n // SDK partially loaded — the header is re-asserted on the next navigation.\n }\n}\n","export const AUTH_TOKEN_COOKIE_NAME = 'token';\nexport const SCOPE_COOKIE_NAME = 'scope';\n\n/**\n * Deletes the auth `token` cookie. This cookie is written client-side by the theme\n * (TwilightProvider), not by the SDK — `salla.cookie.clearAll()` only clears its own\n * allowlist and leaves `token` behind — so logout must clear it here. Client-only.\n */\nexport function clearAuthTokenCookie(): void {\n if (typeof document === 'undefined') return;\n document.cookie = `${AUTH_TOKEN_COOKIE_NAME}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;\n}\n\nexport function extractTokenFromCookies(\n cookieHeader: string | null,\n cookieName: string\n): string | null {\n if (!cookieHeader) return null;\n\n const prefix = `${cookieName}=`;\n let start = 0;\n\n while (start < cookieHeader.length) {\n const idx = cookieHeader.indexOf(prefix, start);\n if (idx === -1) return null;\n\n const prevChar = idx > 0 ? cookieHeader[idx - 1] : '';\n if (prevChar === '' || prevChar === ';' || prevChar === ' ') {\n let end = cookieHeader.indexOf(';', idx);\n if (end === -1) end = cookieHeader.length;\n\n const value = cookieHeader.slice(idx + prefix.length, end).trim();\n try {\n return decodeURIComponent(value) || null;\n } catch {\n return value || null;\n }\n }\n\n start = idx + prefix.length;\n }\n\n return null;\n}\n\n/**\n * Reads the active scope id from the `scope` cookie, which Salla persists as a\n * JSON object (e.g. `{\"id\":123,\"type\":\"branch\"}`). Returns null when the cookie\n * is missing or unparseable. Used server-side, where `salla.storage` is absent.\n */\nexport function extractScopeIdFromCookies(cookieHeader: string | null): string | null {\n const raw = extractTokenFromCookies(cookieHeader, SCOPE_COOKIE_NAME);\n if (!raw) return null;\n try {\n const scope = JSON.parse(raw) as { id?: number | string | null };\n return scope?.id != null ? String(scope.id) : null;\n } catch {\n return null;\n }\n}\n"]}