@salla.sa/twilight-theme-engine 1.0.23 → 1.0.24

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 (265) hide show
  1. package/dist/{AddToCartForm-5P2QQGOG.js → AddToCartForm-RPBBQKPK.js} +3 -3
  2. package/dist/{AddToCartForm-5P2QQGOG.js.map → AddToCartForm-RPBBQKPK.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-QJLGMSK3.js → BlogAuthorPage-TVFUV56M.js} +15 -13
  4. package/dist/BlogAuthorPage-TVFUV56M.js.map +1 -0
  5. package/dist/{BlogCategoryPage-H7VYN7OV.js → BlogCategoryPage-IJUXUKS7.js} +15 -13
  6. package/dist/BlogCategoryPage-IJUXUKS7.js.map +1 -0
  7. package/dist/{BlogPage-LWAQ6ZVO.js → BlogPage-PRQXQDUH.js} +13 -11
  8. package/dist/BlogPage-PRQXQDUH.js.map +1 -0
  9. package/dist/{BlogSinglePage-DMAMK26P.js → BlogSinglePage-FMFV7W3Z.js} +13 -11
  10. package/dist/BlogSinglePage-FMFV7W3Z.js.map +1 -0
  11. package/dist/{BlogTagPage-6URVT6AD.js → BlogTagPage-HTGO6BSN.js} +15 -13
  12. package/dist/BlogTagPage-HTGO6BSN.js.map +1 -0
  13. package/dist/{BrandsPage-AANQU2O3.js → BrandsPage-U35JXHJR.js} +13 -11
  14. package/dist/BrandsPage-U35JXHJR.js.map +1 -0
  15. package/dist/{Breadcrumb-UAMFZYT6.js → Breadcrumb-MMZI72KB.js} +13 -11
  16. package/dist/Breadcrumb-MMZI72KB.js.map +1 -0
  17. package/dist/{CartItem-3677CNHU.js → CartItem-QT2MDGJW.js} +13 -11
  18. package/dist/CartItem-QT2MDGJW.js.map +1 -0
  19. package/dist/{CartSummary-BJJNE6C5.js → CartSummary-DYGLRM55.js} +13 -11
  20. package/dist/CartSummary-DYGLRM55.js.map +1 -0
  21. package/dist/{Copyright-DHEUTAZQ.js → Copyright-IJC4R2EC.js} +3 -3
  22. package/dist/{Copyright-DHEUTAZQ.js.map → Copyright-IJC4R2EC.js.map} +1 -1
  23. package/dist/{CustomerLayout-SG2CUIJU.js → CustomerLayout-GJVHZWIJ.js} +13 -11
  24. package/dist/CustomerLayout-GJVHZWIJ.js.map +1 -0
  25. package/dist/{Footer-OHHHBUAR.js → Footer-B2NQD5SY.js} +13 -11
  26. package/dist/{Footer-OHHHBUAR.js.map → Footer-B2NQD5SY.js.map} +1 -1
  27. package/dist/{Header-NIEPJXYE.js → Header-4BVMG3XU.js} +6 -6
  28. package/dist/{Header-NIEPJXYE.js.map → Header-4BVMG3XU.js.map} +1 -1
  29. package/dist/{LoyaltyPage-YBVHG57L.js → LoyaltyPage-5BRVSONO.js} +14 -12
  30. package/dist/LoyaltyPage-5BRVSONO.js.map +1 -0
  31. package/dist/{MainMenu-U6WGGXHK.js → MainMenu-G2UOWOOA.js} +7 -7
  32. package/dist/{MainMenu-U6WGGXHK.js.map → MainMenu-G2UOWOOA.js.map} +1 -1
  33. package/dist/{MasterLayout-YOBUFJNN.js → MasterLayout-5ICJO4UO.js} +13 -11
  34. package/dist/{MasterLayout-YOBUFJNN.js.map → MasterLayout-5ICJO4UO.js.map} +1 -1
  35. package/dist/{MobileMenu-DNMUVXPY.js → MobileMenu-HLOHDYMD.js} +14 -12
  36. package/dist/MobileMenu-HLOHDYMD.js.map +1 -0
  37. package/dist/{NotificationsPage-X7PIHUNY.js → NotificationsPage-6EWGCPYG.js} +13 -11
  38. package/dist/NotificationsPage-6EWGCPYG.js.map +1 -0
  39. package/dist/{OrderSinglePage-E7SXRGRF.js → OrderSinglePage-6XI6DREN.js} +14 -12
  40. package/dist/OrderSinglePage-6XI6DREN.js.map +1 -0
  41. package/dist/{OrdersPage-G6HBVJKI.js → OrdersPage-RNOQQBIY.js} +14 -12
  42. package/dist/OrdersPage-RNOQQBIY.js.map +1 -0
  43. package/dist/{PageSingle-PVGXNR42.js → PageSingle-XIHQ5WLE.js} +3 -3
  44. package/dist/{PageSingle-PVGXNR42.js.map → PageSingle-XIHQ5WLE.js.map} +1 -1
  45. package/dist/{ProductDetails-XG26QCTN.js → ProductDetails-2N6XFO3N.js} +3 -3
  46. package/dist/{ProductDetails-XG26QCTN.js.map → ProductDetails-2N6XFO3N.js.map} +1 -1
  47. package/dist/{ProfilePage-6QDPXYNR.js → ProfilePage-M4D55XUW.js} +13 -11
  48. package/dist/ProfilePage-M4D55XUW.js.map +1 -0
  49. package/dist/{SeoCartWidget-GR6PYXDP.js → SeoCartWidget-QUYOXYUG.js} +13 -11
  50. package/dist/SeoCartWidget-QUYOXYUG.js.map +1 -0
  51. package/dist/{SettingsPage-2OVEIVCT.js → SettingsPage-5VXVGDGN.js} +13 -11
  52. package/dist/SettingsPage-5VXVGDGN.js.map +1 -0
  53. package/dist/{StoreClosedNotification-NU5QC2TG.js → StoreClosedNotification-FFCHNXJC.js} +14 -12
  54. package/dist/{StoreClosedNotification-NU5QC2TG.js.map → StoreClosedNotification-FFCHNXJC.js.map} +1 -1
  55. package/dist/{TestimonialsPage-4UJWE4X4.js → TestimonialsPage-7JP3OLAU.js} +3 -3
  56. package/dist/{TestimonialsPage-4UJWE4X4.js.map → TestimonialsPage-7JP3OLAU.js.map} +1 -1
  57. package/dist/{ThankYouPage-5IDWYLTL.js → ThankYouPage-6WFBFJQE.js} +13 -11
  58. package/dist/ThankYouPage-6WFBFJQE.js.map +1 -0
  59. package/dist/{WalletPage-MQR4UAMN.js → WalletPage-PQUO54K7.js} +14 -12
  60. package/dist/WalletPage-PQUO54K7.js.map +1 -0
  61. package/dist/{WishlistPage-4YADKHYB.js → WishlistPage-XHJDEZCY.js} +14 -12
  62. package/dist/WishlistPage-XHJDEZCY.js.map +1 -0
  63. package/dist/api/apps.d.ts +40 -10
  64. package/dist/api/apps.d.ts.map +1 -1
  65. package/dist/api/apps.js +4 -22
  66. package/dist/api/apps.js.map +1 -1
  67. package/dist/api/brands.js +5 -5
  68. package/dist/api/cart.js +5 -5
  69. package/dist/api/category.js +5 -5
  70. package/dist/api/client.d.ts +6 -0
  71. package/dist/api/client.d.ts.map +1 -1
  72. package/dist/api/client.js +3 -3
  73. package/dist/api/home.js +4 -4
  74. package/dist/api/loyalty.js +5 -5
  75. package/dist/api/menu.js +4 -4
  76. package/dist/api/notification.js +4 -4
  77. package/dist/api/order.js +5 -5
  78. package/dist/api/page.js +5 -5
  79. package/dist/api/product.js +5 -5
  80. package/dist/api/profile.js +3 -3
  81. package/dist/api/store.js +4 -4
  82. package/dist/api/translations.js +4 -4
  83. package/dist/api/user.js +4 -4
  84. package/dist/api/wishlist.js +4 -4
  85. package/dist/{chunk-QQGFEBYP.js → chunk-2FDMBW2G.js} +3 -3
  86. package/dist/{chunk-QQGFEBYP.js.map → chunk-2FDMBW2G.js.map} +1 -1
  87. package/dist/{chunk-A5XHG5DY.js → chunk-2JHVZBQ7.js} +3 -3
  88. package/dist/{chunk-A5XHG5DY.js.map → chunk-2JHVZBQ7.js.map} +1 -1
  89. package/dist/{chunk-FUH74TV3.js → chunk-2WNYE75P.js} +39 -4
  90. package/dist/chunk-2WNYE75P.js.map +1 -0
  91. package/dist/{chunk-PASKA2UT.js → chunk-4EHNAFYR.js} +4 -4
  92. package/dist/{chunk-PASKA2UT.js.map → chunk-4EHNAFYR.js.map} +1 -1
  93. package/dist/{chunk-OY3VMBTA.js → chunk-53AXOEUK.js} +4 -4
  94. package/dist/{chunk-OY3VMBTA.js.map → chunk-53AXOEUK.js.map} +1 -1
  95. package/dist/{chunk-MSBPOHMV.js → chunk-6V45LHKF.js} +7 -7
  96. package/dist/{chunk-MSBPOHMV.js.map → chunk-6V45LHKF.js.map} +1 -1
  97. package/dist/{chunk-FXXATUWJ.js → chunk-ABKWUNWF.js} +5 -5
  98. package/dist/{chunk-FXXATUWJ.js.map → chunk-ABKWUNWF.js.map} +1 -1
  99. package/dist/{chunk-VOTDCMG3.js → chunk-AY6KRPHL.js} +3 -3
  100. package/dist/{chunk-VOTDCMG3.js.map → chunk-AY6KRPHL.js.map} +1 -1
  101. package/dist/{chunk-R5VMDBV2.js → chunk-BR26I5WV.js} +4 -4
  102. package/dist/{chunk-R5VMDBV2.js.map → chunk-BR26I5WV.js.map} +1 -1
  103. package/dist/chunk-E2FO6OSL.js +136 -0
  104. package/dist/chunk-E2FO6OSL.js.map +1 -0
  105. package/dist/{chunk-MD35JQVL.js → chunk-EGXKYLBD.js} +4 -4
  106. package/dist/{chunk-MD35JQVL.js.map → chunk-EGXKYLBD.js.map} +1 -1
  107. package/dist/{chunk-HPR6QACC.js → chunk-EXYGVSRB.js} +3 -3
  108. package/dist/{chunk-HPR6QACC.js.map → chunk-EXYGVSRB.js.map} +1 -1
  109. package/dist/{chunk-KOVPH7TW.js → chunk-F7TFLW56.js} +5 -4
  110. package/dist/chunk-F7TFLW56.js.map +1 -0
  111. package/dist/{chunk-Y73ZOE3I.js → chunk-FALZ7SZO.js} +4 -4
  112. package/dist/{chunk-Y73ZOE3I.js.map → chunk-FALZ7SZO.js.map} +1 -1
  113. package/dist/{chunk-2PWN27HQ.js → chunk-GVMWHNQ5.js} +4 -4
  114. package/dist/{chunk-2PWN27HQ.js.map → chunk-GVMWHNQ5.js.map} +1 -1
  115. package/dist/{chunk-RW2WZ4BN.js → chunk-LP3IE6UV.js} +4 -4
  116. package/dist/{chunk-RW2WZ4BN.js.map → chunk-LP3IE6UV.js.map} +1 -1
  117. package/dist/{chunk-POU6ARSQ.js → chunk-LSR4FTZJ.js} +4 -4
  118. package/dist/{chunk-POU6ARSQ.js.map → chunk-LSR4FTZJ.js.map} +1 -1
  119. package/dist/{chunk-2WBVZR4E.js → chunk-LUFVVUWZ.js} +4 -4
  120. package/dist/{chunk-2WBVZR4E.js.map → chunk-LUFVVUWZ.js.map} +1 -1
  121. package/dist/{chunk-BH6NMIAK.js → chunk-MAYB5543.js} +116 -13
  122. package/dist/chunk-MAYB5543.js.map +1 -0
  123. package/dist/{chunk-X4Z6MIBG.js → chunk-MLJS3VEC.js} +6 -6
  124. package/dist/{chunk-X4Z6MIBG.js.map → chunk-MLJS3VEC.js.map} +1 -1
  125. package/dist/{chunk-DFIZHPDP.js → chunk-NUPOX7ID.js} +4 -4
  126. package/dist/{chunk-DFIZHPDP.js.map → chunk-NUPOX7ID.js.map} +1 -1
  127. package/dist/{chunk-DA43QUYK.js → chunk-NXM2FQJ7.js} +3 -3
  128. package/dist/{chunk-DA43QUYK.js.map → chunk-NXM2FQJ7.js.map} +1 -1
  129. package/dist/chunk-O36J2QLP.js +14 -0
  130. package/dist/{chunk-W64WJKTH.js.map → chunk-O36J2QLP.js.map} +1 -1
  131. package/dist/{chunk-WI7TR7RK.js → chunk-OPKTJIZQ.js} +10 -2
  132. package/dist/chunk-OPKTJIZQ.js.map +1 -0
  133. package/dist/{chunk-ZBTCQZVO.js → chunk-PQNPO2J3.js} +3 -3
  134. package/dist/{chunk-ZBTCQZVO.js.map → chunk-PQNPO2J3.js.map} +1 -1
  135. package/dist/{chunk-2CRMGVH6.js → chunk-Q5DFI4WQ.js} +3 -3
  136. package/dist/{chunk-2CRMGVH6.js.map → chunk-Q5DFI4WQ.js.map} +1 -1
  137. package/dist/{chunk-DIKZRWOS.js → chunk-QAZXUVOA.js} +4 -4
  138. package/dist/{chunk-DIKZRWOS.js.map → chunk-QAZXUVOA.js.map} +1 -1
  139. package/dist/{chunk-EEYZYG36.js → chunk-QMT3KQ3V.js} +4 -4
  140. package/dist/{chunk-EEYZYG36.js.map → chunk-QMT3KQ3V.js.map} +1 -1
  141. package/dist/{chunk-4BH3L5ZI.js → chunk-SBDHJUNI.js} +3 -3
  142. package/dist/{chunk-4BH3L5ZI.js.map → chunk-SBDHJUNI.js.map} +1 -1
  143. package/dist/{chunk-UXCLRJ3Q.js → chunk-SQCDRDPH.js} +6 -6
  144. package/dist/{chunk-UXCLRJ3Q.js.map → chunk-SQCDRDPH.js.map} +1 -1
  145. package/dist/{chunk-TFDN2SKC.js → chunk-U3S6RFYL.js} +3 -3
  146. package/dist/{chunk-TFDN2SKC.js.map → chunk-U3S6RFYL.js.map} +1 -1
  147. package/dist/chunk-ULAPZSHY.js +44 -0
  148. package/dist/chunk-ULAPZSHY.js.map +1 -0
  149. package/dist/{chunk-KN6YUQ6L.js → chunk-UNGQL6AB.js} +3 -3
  150. package/dist/{chunk-KN6YUQ6L.js.map → chunk-UNGQL6AB.js.map} +1 -1
  151. package/dist/{chunk-7P3CT2PM.js → chunk-UQ2MAJXN.js} +14 -4
  152. package/dist/chunk-UQ2MAJXN.js.map +1 -0
  153. package/dist/{chunk-QHDMWYJO.js → chunk-URH4CDTN.js} +4 -4
  154. package/dist/{chunk-QHDMWYJO.js.map → chunk-URH4CDTN.js.map} +1 -1
  155. package/dist/{chunk-H3QMQIKP.js → chunk-VIRPVAK3.js} +3 -3
  156. package/dist/{chunk-H3QMQIKP.js.map → chunk-VIRPVAK3.js.map} +1 -1
  157. package/dist/{chunk-IIQKLIII.js → chunk-WPJEVWKC.js} +247 -156
  158. package/dist/chunk-WPJEVWKC.js.map +1 -0
  159. package/dist/{chunk-ODXQLAF4.js → chunk-YY2CTLTJ.js} +5 -5
  160. package/dist/{chunk-ODXQLAF4.js.map → chunk-YY2CTLTJ.js.map} +1 -1
  161. package/dist/components/cart/index.js +1 -1
  162. package/dist/components/common/index.js +1 -1
  163. package/dist/components/drawer/index.js +11 -9
  164. package/dist/components/home/index.js +14 -12
  165. package/dist/components/layout/index.js +5 -5
  166. package/dist/components/product/index.js +12 -10
  167. package/dist/components/snippets/AppsSnippets.d.ts +18 -0
  168. package/dist/components/snippets/AppsSnippets.d.ts.map +1 -0
  169. package/dist/components/snippets/index.d.ts +2 -0
  170. package/dist/components/snippets/index.d.ts.map +1 -0
  171. package/dist/components/store/index.js +13 -11
  172. package/dist/components/store/index.js.map +1 -1
  173. package/dist/document-class-XCYIBISX.js +23 -0
  174. package/dist/{document-class-224GXQZQ.js.map → document-class-XCYIBISX.js.map} +1 -1
  175. package/dist/hooks/index.js +11 -9
  176. package/dist/hooks/useGtm.js +11 -9
  177. package/dist/hooks/useMoney.js +11 -9
  178. package/dist/hooks/useStore.js +11 -9
  179. package/dist/hooks/useUser.js +5 -5
  180. package/dist/index.js +11 -9
  181. package/dist/index.js.map +1 -1
  182. package/dist/{navigation-SXCM653S.js → navigation-WMJ77B6H.js} +4 -4
  183. package/dist/{navigation-SXCM653S.js.map → navigation-WMJ77B6H.js.map} +1 -1
  184. package/dist/{navigation-B6FATNWM.js → navigation-WXELHHVJ.js} +5 -5
  185. package/dist/{navigation-B6FATNWM.js.map → navigation-WXELHHVJ.js.map} +1 -1
  186. package/dist/{not-found-EMPUSRN4.js → not-found-AO2ZXILV.js} +13 -11
  187. package/dist/not-found-AO2ZXILV.js.map +1 -0
  188. package/dist/providers/TwilightProvider.d.ts.map +1 -1
  189. package/dist/providers/index.js +11 -9
  190. package/dist/routes/account/orders.js +6 -6
  191. package/dist/routes/account.js +14 -14
  192. package/dist/routes/blog.js +10 -10
  193. package/dist/routes/brands.js +6 -6
  194. package/dist/routes/cart.js +19 -17
  195. package/dist/routes/cart.js.map +1 -1
  196. package/dist/routes/home.js +16 -14
  197. package/dist/routes/index.js +3 -3
  198. package/dist/routes/loyalty.js +6 -6
  199. package/dist/routes/page.js +6 -6
  200. package/dist/routes/product-listing.js +16 -14
  201. package/dist/routes/product-listing.js.map +1 -1
  202. package/dist/routes/product.js +14 -12
  203. package/dist/routes/product.js.map +1 -1
  204. package/dist/routes/root/beforeLoad.d.ts +7 -0
  205. package/dist/routes/root/beforeLoad.d.ts.map +1 -1
  206. package/dist/routes/root/head.d.ts +14 -0
  207. package/dist/routes/root/head.d.ts.map +1 -1
  208. package/dist/routes/seo-redirects.js +3 -3
  209. package/dist/routes/testimonials.js +2 -2
  210. package/dist/routes/thank-you.js +6 -6
  211. package/dist/skeleton.js +16 -14
  212. package/dist/tanstack/router.d.ts.map +1 -1
  213. package/dist/tanstack.js +14 -12
  214. package/dist/tanstack.js.map +1 -1
  215. package/dist/twilight/context.d.ts +7 -0
  216. package/dist/twilight/context.d.ts.map +1 -1
  217. package/dist/twilight/ensure-context.d.ts.map +1 -1
  218. package/dist/types/salla-sdk.d.ts +15 -0
  219. package/dist/types/salla-sdk.d.ts.map +1 -1
  220. package/dist/utils/app-scope.d.ts +46 -0
  221. package/dist/utils/app-scope.d.ts.map +1 -0
  222. package/dist/utils/index.d.ts +2 -0
  223. package/dist/utils/index.d.ts.map +1 -1
  224. package/dist/utils/index.js +4 -3
  225. package/dist/utils/index.js.map +1 -1
  226. package/dist/utils/inline-script.d.ts +8 -0
  227. package/dist/utils/inline-script.d.ts.map +1 -0
  228. package/dist/utils/runtime-env.d.ts +34 -0
  229. package/dist/utils/runtime-env.d.ts.map +1 -0
  230. package/dist/utils/sdk-helpers.d.ts +4 -2
  231. package/dist/utils/sdk-helpers.d.ts.map +1 -1
  232. package/dist/utils/theme-hook-slots.d.ts +36 -0
  233. package/dist/utils/theme-hook-slots.d.ts.map +1 -0
  234. package/dist/vite/index.js +2 -2
  235. package/package.json +1 -1
  236. package/dist/BlogAuthorPage-QJLGMSK3.js.map +0 -1
  237. package/dist/BlogCategoryPage-H7VYN7OV.js.map +0 -1
  238. package/dist/BlogPage-LWAQ6ZVO.js.map +0 -1
  239. package/dist/BlogSinglePage-DMAMK26P.js.map +0 -1
  240. package/dist/BlogTagPage-6URVT6AD.js.map +0 -1
  241. package/dist/BrandsPage-AANQU2O3.js.map +0 -1
  242. package/dist/Breadcrumb-UAMFZYT6.js.map +0 -1
  243. package/dist/CartItem-3677CNHU.js.map +0 -1
  244. package/dist/CartSummary-BJJNE6C5.js.map +0 -1
  245. package/dist/CustomerLayout-SG2CUIJU.js.map +0 -1
  246. package/dist/LoyaltyPage-YBVHG57L.js.map +0 -1
  247. package/dist/MobileMenu-DNMUVXPY.js.map +0 -1
  248. package/dist/NotificationsPage-X7PIHUNY.js.map +0 -1
  249. package/dist/OrderSinglePage-E7SXRGRF.js.map +0 -1
  250. package/dist/OrdersPage-G6HBVJKI.js.map +0 -1
  251. package/dist/ProfilePage-6QDPXYNR.js.map +0 -1
  252. package/dist/SeoCartWidget-GR6PYXDP.js.map +0 -1
  253. package/dist/SettingsPage-2OVEIVCT.js.map +0 -1
  254. package/dist/ThankYouPage-5IDWYLTL.js.map +0 -1
  255. package/dist/WalletPage-MQR4UAMN.js.map +0 -1
  256. package/dist/WishlistPage-4YADKHYB.js.map +0 -1
  257. package/dist/chunk-7P3CT2PM.js.map +0 -1
  258. package/dist/chunk-BH6NMIAK.js.map +0 -1
  259. package/dist/chunk-FUH74TV3.js.map +0 -1
  260. package/dist/chunk-IIQKLIII.js.map +0 -1
  261. package/dist/chunk-KOVPH7TW.js.map +0 -1
  262. package/dist/chunk-W64WJKTH.js +0 -14
  263. package/dist/chunk-WI7TR7RK.js.map +0 -1
  264. package/dist/document-class-224GXQZQ.js +0 -21
  265. package/dist/not-found-EMPUSRN4.js.map +0 -1
@@ -1,21 +1,23 @@
1
1
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
2
- import { ProductsSlider, LazyTestimonials } from '../chunk-ODXQLAF4.js';
3
- import { product } from '../chunk-Y73ZOE3I.js';
4
- import { ProductGallery, LazyProductDetails, LazyAddToCartForm } from '../chunk-X4Z6MIBG.js';
2
+ import { ProductsSlider, LazyTestimonials } from '../chunk-YY2CTLTJ.js';
3
+ import { product } from '../chunk-FALZ7SZO.js';
4
+ import { ProductGallery, LazyProductDetails, LazyAddToCartForm } from '../chunk-MLJS3VEC.js';
5
5
  import '../chunk-G7ALL4BC.js';
6
- import '../chunk-BH6NMIAK.js';
7
- import '../chunk-UXCLRJ3Q.js';
6
+ import '../chunk-MAYB5543.js';
7
+ import '../chunk-SQCDRDPH.js';
8
8
  import '../chunk-JKIRRMBU.js';
9
9
  import '../chunk-2JV6WZ6O.js';
10
+ import '../chunk-ULAPZSHY.js';
10
11
  import '../chunk-VVZNW5CB.js';
11
- import '../chunk-ZBTCQZVO.js';
12
+ import '../chunk-E2FO6OSL.js';
13
+ import '../chunk-PQNPO2J3.js';
12
14
  import { RouteId } from '../chunk-MTONGOJD.js';
13
15
  import '../chunk-C5X6CVXC.js';
14
- import '../chunk-DFIZHPDP.js';
15
- import '../chunk-A5XHG5DY.js';
16
- import '../chunk-KOVPH7TW.js';
17
- import '../chunk-FUH74TV3.js';
18
- import { getTwilightContext } from '../chunk-WI7TR7RK.js';
16
+ import '../chunk-NUPOX7ID.js';
17
+ import '../chunk-2JHVZBQ7.js';
18
+ import '../chunk-F7TFLW56.js';
19
+ import '../chunk-2WNYE75P.js';
20
+ import { getTwilightContext } from '../chunk-OPKTJIZQ.js';
19
21
  import '../chunk-TP3LCGE7.js';
20
22
  import '../chunk-Z653O7MX.js';
21
23
  import '../chunk-ZCH7W7DZ.js';
@@ -31,7 +33,7 @@ import { useComments } from '../chunk-YMVLYYLU.js';
31
33
  import '../chunk-RJPPO3ET.js';
32
34
  import { HookSlot } from '../chunk-Q7VWURUR.js';
33
35
  import '../chunk-GU2KUQVD.js';
34
- import { LazyBreadcrumb, LazyRenderWhenVisible } from '../chunk-DA43QUYK.js';
36
+ import { LazyBreadcrumb, LazyRenderWhenVisible } from '../chunk-NXM2FQJ7.js';
35
37
  import '../chunk-AXW67SY7.js';
36
38
  import '../chunk-BYMOPN2S.js';
37
39
  import '../chunk-6BZ5TKEV.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/product/loader.ts","../../src/routes/product/ProductPage.tsx","../../src/routes/product/index.tsx"],"names":["product"],"mappings":"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","file":"product.js","sourcesContent":["import type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport { product } from '../../api/product';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\nimport type { Breadcrumb } from '../../types';\n\nexport async function productLoader({ params }: { params: IdParams }): Promise<ProductPageProps> {\n const data = await product.findOrThrow(params.id);\n const i18n = getTwilightContext().i18n;\n const home: Breadcrumb = { name: i18n.t('common.titles.home'), url: '/' };\n\n const breadcrumbs: Breadcrumb[] = [home];\n if (data.category) {\n breadcrumbs.push({ name: data.category.name, url: data.category.url });\n }\n breadcrumbs.push({ name: data.name, url: data.url });\n\n const page = {\n slug: RouteId.PRODUCT_SINGLE,\n id: data.id,\n title: data.name,\n url: data.url,\n parent:\n data.category && data.category.id\n ? { id: data.category.id, name: data.category.name, url: data.category.url }\n : null,\n breadcrumbs,\n };\n\n return {\n page,\n product: data,\n };\n}\n","import { SallaQuickOrder } from '@salla.sa/twilight-components-react/quick-order';\nimport { SallaOffer } from '@salla.sa/twilight-components-react/offer';\nimport { SallaComments } from '@salla.sa/twilight-components-react/comments';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useProduct } from '../../hooks/useProduct';\nimport { useComments } from '../../hooks/useComments';\nimport type { ProductPageProps } from './types';\nimport { Breadcrumb, RenderWhenVisible } from '../../components/common';\nimport { ProductDetails, AddToCartForm, ProductGallery } from '../../components/product';\nimport { ProductsSlider, Testimonials } from '../../components/home';\nimport { useTwilight } from '../../providers/twilight-context';\n\nexport function ProductPage({ product: initialProduct, page }: ProductPageProps) {\n const { theme, store } = useTwilight();\n const { t } = useTranslation();\n const { product } = useProduct(initialProduct);\n const { commentsKey } = useComments();\n\n return (\n <div key={product.id}>\n <div className=\"container\">\n <Breadcrumb page={page} />\n\n <HookSlot name=\"product:start\" />\n\n <div className=\"flex flex-col items-start md:flex-row\" id={`product-${product.id}`}>\n <ProductGallery product={product} />\n\n <div className=\"main-content md:sticky md:overflow-hidden top-24 w-full md:w-2/4 md:pb-16\">\n <HookSlot name=\"product:details.start\" />\n <HookSlot name=\"product:single.description.start\" />\n <ProductDetails product={product} showTags={theme.settings.show_tags} />\n <HookSlot name=\"product:single.description\" />\n <HookSlot name=\"product:single.description.end\" />\n <HookSlot name=\"product:details.end\" />\n\n <HookSlot name=\"product:single.form.start\" />\n <AddToCartForm product={product} stickyAddToCart={theme.settings.sticky_add_to_cart} />\n <HookSlot name=\"product:single.form.end\" />\n\n <SallaQuickOrder className=\"mt-5 md:-mb-2 block\" />\n </div>\n </div>\n\n <SallaOffer />\n </div>\n\n {store.settings?.rating?.show_on_product && (\n <RenderWhenVisible>\n <SallaComments key={commentsKey} itemId={product.id} type={'product' as any} />\n </RenderWhenVisible>\n )}\n\n <HookSlot name=\"product:related.start\" />\n <RenderWhenVisible>\n <div className=\"container\">\n <ProductsSlider\n data={{\n products: { source: 'related', source_value: product.id },\n title: t('pages.products.similar_products'),\n display_all_url: '',\n }}\n />\n </div>\n </RenderWhenVisible>\n <HookSlot name=\"product:related.end\" />\n\n <RenderWhenVisible>\n <div className=\"container\">\n <Testimonials data={{}} />\n </div>\n </RenderWhenVisible>\n\n <HookSlot name=\"product:end\" />\n </div>\n );\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { productLoader } from './loader';\nimport { RouteId } from '../../router/route-ids';\nimport { ProductPage } from './ProductPage';\nexport { productLoader } from './loader';\nexport type { ProductPageProps } from './types';\n\nasync function loader(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: ProductPageProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<ProductPageProps> {\n const data = await productLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as ProductPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: ProductPageProps): HeadDescriptor {\n if (!data?.product) {\n return {\n title: 'Products',\n description: 'Browse our products',\n };\n }\n const product = data.product;\n const storeName = ctx.settings?.store?.name ?? '';\n\n // Strip HTML and limit description to 160 chars\n const description = product.description?.replace(/<[^>]*>/g, '').slice(0, 160) ?? '';\n\n // Price valid until: 1 month from now\n const priceValidUntil = new Date();\n priceValidUntil.setMonth(priceValidUntil.getMonth() + 1);\n\n // Collect all product images\n const images = product.images?.map((img) => img.url).filter(Boolean) ?? [];\n if (product.image?.url && !images.includes(product.image.url)) {\n images.unshift(product.image.url);\n }\n\n // Build JSON-LD schema matching SchemaProductWidget.php\n const jsonLd: Record<string, unknown> = {\n '@context': 'https://schema.org',\n '@type': 'Product',\n name: product.name,\n description,\n sku: product.sku,\n image: images.length > 0 ? images : undefined,\n offers: {\n '@type': 'Offer',\n url: product.url,\n availability: product.is_available\n ? 'https://schema.org/InStock'\n : 'https://schema.org/OutOfStock',\n price: product.sale_price,\n priceCurrency: product.currency,\n priceValidUntil: priceValidUntil.toISOString().split('T')[0],\n seller: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n },\n };\n\n // Add brand if exists\n if (product.brand) {\n jsonLd.brand = {\n '@type': 'Brand',\n name: product.brand.name,\n description: product.brand.description,\n logo: product.brand.logo,\n };\n }\n\n // Add aggregateRating and review if rating exists\n if (product.rating && product.rating.count > 0) {\n const ratingValue = product.rating.stars;\n jsonLd.aggregateRating = {\n '@type': 'AggregateRating',\n ratingCount: product.rating.count,\n ratingValue,\n };\n jsonLd.review = {\n '@type': 'Review',\n author: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n reviewRating: {\n '@type': 'Rating',\n bestRating: 5,\n ratingValue,\n },\n };\n }\n\n if (product.gtin && product.gtin.length === 8) {\n jsonLd.gtin8 = product.gtin;\n }\n\n if (product.mpn) {\n jsonLd.mpn = product.mpn;\n }\n\n const base: HeadDescriptor = {\n title: product.name,\n description,\n canonical: product.url,\n openGraph: {\n type: 'product',\n title: product.name,\n description,\n images: product.image?.url,\n url: product.url,\n },\n twitter: {\n card: 'summary_large_image',\n title: product.name,\n description,\n images: product.image?.url,\n },\n jsonLd,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Product = {\n id: RouteId.PRODUCT_SINGLE,\n loader,\n head,\n Component: ProductPage,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/routes/product/loader.ts","../../src/routes/product/ProductPage.tsx","../../src/routes/product/index.tsx"],"names":["product"],"mappings":"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","file":"product.js","sourcesContent":["import type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport { product } from '../../api/product';\nimport { getTwilightContext } from '../../twilight/context';\nimport { RouteId } from '../../router/route-ids';\nimport type { Breadcrumb } from '../../types';\n\nexport async function productLoader({ params }: { params: IdParams }): Promise<ProductPageProps> {\n const data = await product.findOrThrow(params.id);\n const i18n = getTwilightContext().i18n;\n const home: Breadcrumb = { name: i18n.t('common.titles.home'), url: '/' };\n\n const breadcrumbs: Breadcrumb[] = [home];\n if (data.category) {\n breadcrumbs.push({ name: data.category.name, url: data.category.url });\n }\n breadcrumbs.push({ name: data.name, url: data.url });\n\n const page = {\n slug: RouteId.PRODUCT_SINGLE,\n id: data.id,\n title: data.name,\n url: data.url,\n parent:\n data.category && data.category.id\n ? { id: data.category.id, name: data.category.name, url: data.category.url }\n : null,\n breadcrumbs,\n };\n\n return {\n page,\n product: data,\n };\n}\n","import { SallaQuickOrder } from '@salla.sa/twilight-components-react/quick-order';\nimport { SallaOffer } from '@salla.sa/twilight-components-react/offer';\nimport { SallaComments } from '@salla.sa/twilight-components-react/comments';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useProduct } from '../../hooks/useProduct';\nimport { useComments } from '../../hooks/useComments';\nimport type { ProductPageProps } from './types';\nimport { Breadcrumb, RenderWhenVisible } from '../../components/common';\nimport { ProductDetails, AddToCartForm, ProductGallery } from '../../components/product';\nimport { ProductsSlider, Testimonials } from '../../components/home';\nimport { useTwilight } from '../../providers/twilight-context';\n\nexport function ProductPage({ product: initialProduct, page }: ProductPageProps) {\n const { theme, store } = useTwilight();\n const { t } = useTranslation();\n const { product } = useProduct(initialProduct);\n const { commentsKey } = useComments();\n\n return (\n <div key={product.id}>\n <div className=\"container\">\n <Breadcrumb page={page} />\n\n <HookSlot name=\"product:start\" />\n\n <div className=\"flex flex-col items-start md:flex-row\" id={`product-${product.id}`}>\n <ProductGallery product={product} />\n\n <div className=\"main-content md:sticky md:overflow-hidden top-24 w-full md:w-2/4 md:pb-16\">\n <HookSlot name=\"product:details.start\" />\n <HookSlot name=\"product:single.description.start\" />\n <ProductDetails product={product} showTags={theme.settings.show_tags} />\n <HookSlot name=\"product:single.description\" />\n <HookSlot name=\"product:single.description.end\" />\n <HookSlot name=\"product:details.end\" />\n\n <HookSlot name=\"product:single.form.start\" />\n <AddToCartForm product={product} stickyAddToCart={theme.settings.sticky_add_to_cart} />\n <HookSlot name=\"product:single.form.end\" />\n\n <SallaQuickOrder className=\"mt-5 md:-mb-2 block\" />\n </div>\n </div>\n\n <SallaOffer />\n </div>\n\n {store.settings?.rating?.show_on_product && (\n <RenderWhenVisible>\n <SallaComments key={commentsKey} itemId={product.id} type={'product' as any} />\n </RenderWhenVisible>\n )}\n\n <HookSlot name=\"product:related.start\" />\n <RenderWhenVisible>\n <div className=\"container\">\n <ProductsSlider\n data={{\n products: { source: 'related', source_value: product.id },\n title: t('pages.products.similar_products'),\n display_all_url: '',\n }}\n />\n </div>\n </RenderWhenVisible>\n <HookSlot name=\"product:related.end\" />\n\n <RenderWhenVisible>\n <div className=\"container\">\n <Testimonials data={{}} />\n </div>\n </RenderWhenVisible>\n\n <HookSlot name=\"product:end\" />\n </div>\n );\n}\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport type { ProductPageProps } from './types';\nimport type { IdParams } from '../types';\nimport type { TwilightContext } from '../../twilight/context';\nimport { productLoader } from './loader';\nimport { RouteId } from '../../router/route-ids';\nimport { ProductPage } from './ProductPage';\nexport { productLoader } from './loader';\nexport type { ProductPageProps } from './types';\n\nasync function loader(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: ProductPageProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<ProductPageProps> {\n const data = await productLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as ProductPageProps;\n }\n return data;\n}\n\nfunction head(ctx: TwilightContext, data: ProductPageProps): HeadDescriptor {\n if (!data?.product) {\n return {\n title: 'Products',\n description: 'Browse our products',\n };\n }\n const product = data.product;\n const storeName = ctx.settings?.store?.name ?? '';\n\n // Strip HTML and limit description to 160 chars\n const description = product.description?.replace(/<[^>]*>/g, '').slice(0, 160) ?? '';\n\n // Price valid until: 1 month from now\n const priceValidUntil = new Date();\n priceValidUntil.setMonth(priceValidUntil.getMonth() + 1);\n\n // Collect all product images\n const images = product.images?.map((img) => img.url).filter(Boolean) ?? [];\n if (product.image?.url && !images.includes(product.image.url)) {\n images.unshift(product.image.url);\n }\n\n // Build JSON-LD schema matching SchemaProductWidget.php\n const jsonLd: Record<string, unknown> = {\n '@context': 'https://schema.org',\n '@type': 'Product',\n name: product.name,\n description,\n sku: product.sku,\n image: images.length > 0 ? images : undefined,\n offers: {\n '@type': 'Offer',\n url: product.url,\n availability: product.is_available\n ? 'https://schema.org/InStock'\n : 'https://schema.org/OutOfStock',\n price: product.sale_price,\n priceCurrency: product.currency,\n priceValidUntil: priceValidUntil.toISOString().split('T')[0],\n seller: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n },\n };\n\n // Add brand if exists\n if (product.brand) {\n jsonLd.brand = {\n '@type': 'Brand',\n name: product.brand.name,\n description: product.brand.description,\n logo: product.brand.logo,\n };\n }\n\n // Add aggregateRating and review if rating exists\n if (product.rating && product.rating.count > 0) {\n const ratingValue = product.rating.stars;\n jsonLd.aggregateRating = {\n '@type': 'AggregateRating',\n ratingCount: product.rating.count,\n ratingValue,\n };\n jsonLd.review = {\n '@type': 'Review',\n author: storeName\n ? {\n '@type': 'Organization',\n name: storeName,\n }\n : undefined,\n reviewRating: {\n '@type': 'Rating',\n bestRating: 5,\n ratingValue,\n },\n };\n }\n\n if (product.gtin && product.gtin.length === 8) {\n jsonLd.gtin8 = product.gtin;\n }\n\n if (product.mpn) {\n jsonLd.mpn = product.mpn;\n }\n\n const base: HeadDescriptor = {\n title: product.name,\n description,\n canonical: product.url,\n openGraph: {\n type: 'product',\n title: product.name,\n description,\n images: product.image?.url,\n url: product.url,\n },\n twitter: {\n card: 'summary_large_image',\n title: product.name,\n description,\n images: product.image?.url,\n },\n jsonLd,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Product = {\n id: RouteId.PRODUCT_SINGLE,\n loader,\n head,\n Component: ProductPage,\n} as const;\n"]}
@@ -1,11 +1,18 @@
1
1
  import type { QueryClient } from '@tanstack/react-query';
2
2
  import type { StoreContext } from '../../api/store';
3
+ import { type AppSnippet, type AppSettings } from '../../api/apps';
3
4
  import type { TwilightLocation } from '../../twilight/context';
4
5
  export interface BeforeLoadResult {
5
6
  settings: StoreContext;
6
7
  locale: string;
7
8
  dir: 'ltr' | 'rtl';
8
9
  authToken: string | null;
10
+ /** Installed apps' snippets, threaded through the beforeLoad context (and recovered on the
11
+ * client via ensureTwilightContextFromMatches) so AppsSnippets can render CDN tags in SSR. */
12
+ appsSnippets?: AppSnippet[];
13
+ /** Per-app public `app.*` buckets, threaded the same way so rootHead can install the
14
+ * `Salla.appScope` factory inline in the SSR head. */
15
+ appsSettings?: AppSettings;
9
16
  }
10
17
  export declare function rootBeforeLoad(ctx: {
11
18
  params: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"beforeLoad.d.ts","sourceRoot":"","sources":["../../../src/routes/root/beforeLoad.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AA0B/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE;QACP,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;KAC7D,CAAC;IACF,aAAa,CAAC,EAAE;QACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC;CACH,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsF5B"}
1
+ {"version":3,"file":"beforeLoad.d.ts","sourceRoot":"","sources":["../../../src/routes/root/beforeLoad.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAQ,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AA0B/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;mGAC+F;IAC/F,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B;2DACuD;IACvD,YAAY,CAAC,EAAE,WAAW,CAAC;CAC5B;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE;QACP,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;KAC7D,CAAC;IACF,aAAa,CAAC,EAAE;QACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC;CACH,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6G5B"}
@@ -1,7 +1,21 @@
1
1
  import type { HeadResult } from '../../utils/head';
2
2
  import type { TwilightContextMatch } from '../../twilight/ensure-context';
3
3
  import type { StoreContext } from '../../api/store';
4
+ import type { AppSnippet } from '../../api/apps';
5
+ /**
6
+ * Which twilight.esm.js the storefront loads, in priority order:
7
+ * 1. `VITE_TWILIGHT_URL` — full local/deployment override.
8
+ * 2. `VITE_TWILIGHT_VERSION` — dev-CDN build override.
9
+ * 3. `theme.twilight.version` from the settings endpoint — the platform-pinned
10
+ * release used when no environment override is configured.
11
+ * 4. The engine's own pinned dev build.
12
+ */
4
13
  export declare function resolveTwilightSdkUrl(settings?: StoreContext): string;
14
+ /**
15
+ * Distinct snippet-host origins to `preconnect` (warm DNS/TCP/TLS during parse). From the real
16
+ * URLs (dev/prod-correct), deduped and capped at 4. No `crossOrigin`: snippets are no-cors fetches.
17
+ */
18
+ export declare function snippetPreconnectOrigins(snippets: readonly AppSnippet[] | undefined): string[];
5
19
  export declare function rootHead(ctx: {
6
20
  params: Record<string, string>;
7
21
  matches?: readonly TwilightContextMatch[];
@@ -1 +1 @@
1
- {"version":3,"file":"head.d.ts","sourceRoot":"","sources":["../../../src/routes/root/head.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA+BpD,wBAAgB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,MAAM,CAWrE;AAsCD,wBAAgB,QAAQ,CAAC,GAAG,EAAE;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC3C,GAAG,UAAU,CAsLb"}
1
+ {"version":3,"file":"head.d.ts","sourceRoot":"","sources":["../../../src/routes/root/head.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA2BjD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,MAAM,CAWrE;AA6BD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAgB9F;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC3C,GAAG,UAAU,CA6Bb"}
@@ -1,7 +1,7 @@
1
- export { pendingOrdersRedirectLoader, slugBrandRedirectLoader } from '../chunk-KN6YUQ6L.js';
2
- import '../chunk-ZBTCQZVO.js';
1
+ export { pendingOrdersRedirectLoader, slugBrandRedirectLoader } from '../chunk-UNGQL6AB.js';
2
+ import '../chunk-PQNPO2J3.js';
3
3
  import '../chunk-MTONGOJD.js';
4
- import '../chunk-WI7TR7RK.js';
4
+ import '../chunk-OPKTJIZQ.js';
5
5
  import '../chunk-T72DAX7R.js';
6
6
  import '../chunk-DF6FBKDN.js';
7
7
  import '../chunk-DGUM43GV.js';
@@ -1,6 +1,6 @@
1
1
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
2
2
  import { RouteId } from '../chunk-MTONGOJD.js';
3
- import { getTwilightContext } from '../chunk-WI7TR7RK.js';
3
+ import { getTwilightContext } from '../chunk-OPKTJIZQ.js';
4
4
  import '../chunk-T72DAX7R.js';
5
5
  import '../chunk-DGUM43GV.js';
6
6
  import { lazy } from 'react';
@@ -18,7 +18,7 @@ async function testimonialsLoader(_ctx) {
18
18
 
19
19
  // src/routes/testimonials/index.tsx
20
20
  var LazyTestimonialsPage = lazy(
21
- () => import('../TestimonialsPage-4UJWE4X4.js').then((m) => ({ default: m.TestimonialsPage }))
21
+ () => import('../TestimonialsPage-7JP3OLAU.js').then((m) => ({ default: m.TestimonialsPage }))
22
22
  );
23
23
  var TestimonialsPage = LazyTestimonialsPage;
24
24
  async function loader(ctx, extend) {
@@ -1,10 +1,10 @@
1
- import { order } from '../chunk-2PWN27HQ.js';
1
+ import { order } from '../chunk-GVMWHNQ5.js';
2
2
  import { buildHreflangAlternates } from '../chunk-TZ3E5BN4.js';
3
- import '../chunk-ZBTCQZVO.js';
3
+ import '../chunk-PQNPO2J3.js';
4
4
  import { RouteId } from '../chunk-MTONGOJD.js';
5
- import '../chunk-KOVPH7TW.js';
6
- import '../chunk-FUH74TV3.js';
7
- import { getTwilightContext } from '../chunk-WI7TR7RK.js';
5
+ import '../chunk-F7TFLW56.js';
6
+ import '../chunk-2WNYE75P.js';
7
+ import { getTwilightContext } from '../chunk-OPKTJIZQ.js';
8
8
  import '../chunk-T72DAX7R.js';
9
9
  import '../chunk-DF6FBKDN.js';
10
10
  import '../chunk-DGUM43GV.js';
@@ -38,7 +38,7 @@ async function thankYouLoader({
38
38
 
39
39
  // src/routes/thank-you/index.tsx
40
40
  var LazyThankYouPage = lazy(
41
- () => import('../ThankYouPage-5IDWYLTL.js').then((m) => ({ default: m.ThankYouPage }))
41
+ () => import('../ThankYouPage-6WFBFJQE.js').then((m) => ({ default: m.ThankYouPage }))
42
42
  );
43
43
  var ThankYouPage = LazyThankYouPage;
44
44
  async function loader(ctx, extend) {
package/dist/skeleton.js CHANGED
@@ -1,24 +1,26 @@
1
1
  export { BlogSkeleton, BreadcrumbSkeleton, CartSkeleton, CustomerLayoutSkeleton, CustomerPageSkeleton, PageSkeleton, ProductCardSkeleton, ProductDetailSkeleton, ProductGridSkeleton, SkeletonPulse } from './chunk-N7CCSGZF.js';
2
- export { HomeSkeleton } from './chunk-FXXATUWJ.js';
3
- import './chunk-QQGFEBYP.js';
2
+ export { HomeSkeleton } from './chunk-ABKWUNWF.js';
3
+ import './chunk-2FDMBW2G.js';
4
4
  import './chunk-TZ3E5BN4.js';
5
- import './chunk-ODXQLAF4.js';
6
- import './chunk-Y73ZOE3I.js';
7
- import './chunk-X4Z6MIBG.js';
5
+ import './chunk-YY2CTLTJ.js';
6
+ import './chunk-FALZ7SZO.js';
7
+ import './chunk-MLJS3VEC.js';
8
8
  import './chunk-G7ALL4BC.js';
9
- import './chunk-BH6NMIAK.js';
10
- import './chunk-UXCLRJ3Q.js';
9
+ import './chunk-MAYB5543.js';
10
+ import './chunk-SQCDRDPH.js';
11
11
  import './chunk-JKIRRMBU.js';
12
12
  import './chunk-2JV6WZ6O.js';
13
+ import './chunk-ULAPZSHY.js';
13
14
  import './chunk-VVZNW5CB.js';
14
- import './chunk-ZBTCQZVO.js';
15
+ import './chunk-E2FO6OSL.js';
16
+ import './chunk-PQNPO2J3.js';
15
17
  import './chunk-MTONGOJD.js';
16
18
  import './chunk-C5X6CVXC.js';
17
- import './chunk-DFIZHPDP.js';
18
- import './chunk-A5XHG5DY.js';
19
- import './chunk-KOVPH7TW.js';
20
- import './chunk-FUH74TV3.js';
21
- import './chunk-WI7TR7RK.js';
19
+ import './chunk-NUPOX7ID.js';
20
+ import './chunk-2JHVZBQ7.js';
21
+ import './chunk-F7TFLW56.js';
22
+ import './chunk-2WNYE75P.js';
23
+ import './chunk-OPKTJIZQ.js';
22
24
  import './chunk-TP3LCGE7.js';
23
25
  import './chunk-Z653O7MX.js';
24
26
  import './chunk-ZCH7W7DZ.js';
@@ -34,7 +36,7 @@ import './chunk-YMVLYYLU.js';
34
36
  import './chunk-RJPPO3ET.js';
35
37
  import './chunk-Q7VWURUR.js';
36
38
  import './chunk-GU2KUQVD.js';
37
- import './chunk-DA43QUYK.js';
39
+ import './chunk-NXM2FQJ7.js';
38
40
  import './chunk-AXW67SY7.js';
39
41
  import './chunk-BYMOPN2S.js';
40
42
  import './chunk-6BZ5TKEV.js';
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/tanstack/router.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAMnF,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAOhE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAC7D;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAqC7D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD;AAoED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,KAG7B,SAAS,GAAG,kRAOrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,sCAkBhE;AAwGD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uBAAuB,CAAC,EAAE,CAAC,MAAM,SAAS,CAAC,GAAG,KAAK,CAAC;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,uGA6HzE;AAED,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAU,QAAQ;QAChB,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;KACzC;IAED,UAAU,aAAc,SAAQ,oBAAoB;KAAG;CACxD"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/tanstack/router.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAMnF,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQhE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAC7D;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAqC7D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD;AAoED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,KAG7B,SAAS,GAAG,kRAOrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,sCAkBhE;AAoHD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uBAAuB,CAAC,EAAE,CAAC,MAAM,SAAS,CAAC,GAAG,KAAK,CAAC;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,uGA6HzE;AAED,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAU,QAAQ;QAChB,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;KACzC;IAED,UAAU,aAAc,SAAQ,oBAAoB;KAAG;CACxD"}
package/dist/tanstack.js CHANGED
@@ -1,19 +1,21 @@
1
- import { rootHead } from './chunk-IIQKLIII.js';
2
- export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-IIQKLIII.js';
3
- export { TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter } from './chunk-H3QMQIKP.js';
1
+ import { rootHead } from './chunk-WPJEVWKC.js';
2
+ export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-WPJEVWKC.js';
3
+ export { TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter } from './chunk-VIRPVAK3.js';
4
4
  import './chunk-Z4Y55HWX.js';
5
- export { tanstackHeadAdapter as head, withHead } from './chunk-7P3CT2PM.js';
6
- import './chunk-2CRMGVH6.js';
5
+ export { tanstackHeadAdapter as head, withHead } from './chunk-UQ2MAJXN.js';
6
+ import './chunk-Q5DFI4WQ.js';
7
7
  import './chunk-B3EFOE57.js';
8
- import './chunk-RW2WZ4BN.js';
9
- import './chunk-HPR6QACC.js';
8
+ import './chunk-LP3IE6UV.js';
9
+ import './chunk-EXYGVSRB.js';
10
10
  import './chunk-TZ3E5BN4.js';
11
- import './chunk-ZBTCQZVO.js';
11
+ import './chunk-ULAPZSHY.js';
12
+ import './chunk-E2FO6OSL.js';
13
+ import './chunk-PQNPO2J3.js';
12
14
  import './chunk-MTONGOJD.js';
13
- import './chunk-KOVPH7TW.js';
14
- import { AUTH_TOKEN_COOKIE_NAME, extractTokenFromCookies, extractScopeIdFromCookies } from './chunk-FUH74TV3.js';
15
- import { runWithTwilightContext } from './chunk-WI7TR7RK.js';
16
- export { getTwilightContext, runWithTwilightContext, updateTwilightContext } from './chunk-WI7TR7RK.js';
15
+ import './chunk-F7TFLW56.js';
16
+ import { AUTH_TOKEN_COOKIE_NAME, extractTokenFromCookies, extractScopeIdFromCookies } from './chunk-2WNYE75P.js';
17
+ import { runWithTwilightContext } from './chunk-OPKTJIZQ.js';
18
+ export { getTwilightContext, runWithTwilightContext, updateTwilightContext } from './chunk-OPKTJIZQ.js';
17
19
  import './chunk-JWXJPJBO.js';
18
20
  export { mergeDocumentDescriptors as mergeAttrs } from './chunk-CW625T2E.js';
19
21
  import './chunk-TYNZ5B2B.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tanstack/middleware/twilight.ts","../src/tanstack/middleware/earlyHints.ts"],"names":["createMiddleware"],"mappings":"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","file":"tanstack.js","sourcesContent":["import type { AnyRequestMiddleware } from '@tanstack/react-start';\nimport { createMiddleware } from '@tanstack/react-start';\nimport {\n extractTokenFromCookies,\n extractScopeIdFromCookies,\n AUTH_TOKEN_COOKIE_NAME,\n} from '../../utils/cookies';\nimport { runWithTwilightContext } from '../../twilight/context';\n\ninterface TwilightMiddlewareOptions {\n cookieName?: string;\n}\n\nexport const twilightMiddleware = (options?: TwilightMiddlewareOptions): AnyRequestMiddleware => {\n const cookieName = options?.cookieName ?? AUTH_TOKEN_COOKIE_NAME;\n\n return createMiddleware().server(({ request, next }) => {\n const cookieHeader = request.headers.get('Cookie');\n const authToken = extractTokenFromCookies(cookieHeader, cookieName);\n const scopeId = extractScopeIdFromCookies(cookieHeader);\n\n return runWithTwilightContext({ authToken, scopeId }, () => next({ context: { authToken } }));\n });\n};\n","import type { AnyRequestMiddleware } from '@tanstack/react-start';\nimport { createMiddleware } from '@tanstack/react-start';\nimport { tsrStartManifest } from 'tanstack-start-manifest:v';\nimport { rootHead } from '../../routes/root/head';\n\n/** Known critical assets that should always be preloaded */\nconst CRITICAL_ASSETS = [\n { rel: 'modulepreload', href: 'https://cdn.assets.salla.network/static/lit/3.3.3/lit.js' },\n { rel: 'preconnect', href: 'https://api.salla.dev' },\n { rel: 'preconnect', href: 'https://cdn.salla.sa' },\n { rel: 'preconnect', href: 'https://cdn.assets.salla.network', crossOrigin: 'anonymous' },\n { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossOrigin: 'anonymous' },\n] as const;\n\n/** Extract locale from URL path (e.g., /ar/products → 'ar') */\nfunction extractLocale(url: string): string | undefined {\n const match = url.match(/^\\/([a-z]{2})(\\/|$)/);\n return match?.[1];\n}\n\n/** Build Link header value from a link descriptor */\nfunction buildLinkHeader(link: Record<string, unknown>): string | null {\n const href = link.href as string | undefined;\n const rel = link.rel as string | undefined;\n if (!href || !rel) return null;\n\n // Skip print-media stylesheets (already non-blocking)\n if (rel === 'stylesheet') {\n const media = link.media as string | undefined;\n if (media === 'print') return null;\n return `<${href}>; rel=preload; as=style`;\n }\n\n if (rel === 'preload') {\n const asType = link.as as string | undefined;\n if (!asType) return null;\n const parts = [`<${href}>`, 'rel=preload', `as=${asType}`];\n if (asType === 'font' || link.crossOrigin) {\n parts.push('crossorigin');\n }\n return parts.join('; ');\n }\n\n if (rel === 'modulepreload') {\n return `<${href}>; rel=modulepreload`;\n }\n\n return null;\n}\n\nexport const earlyHintsMiddleware = (): AnyRequestMiddleware => {\n let cachedManifestPaths: string[] | null = null;\n\n return createMiddleware().server(async ({ request, next }) => {\n const response = await next();\n\n const accept = request.headers.get('Accept') ?? '';\n if (!accept.includes('text/html') && accept !== '*/*') return response;\n if (!(response instanceof Response)) return response;\n\n const linkHeaders: string[] = [];\n\n // 1. Add critical assets from rootHead (fonts, icons, SDK, etc.)\n try {\n const url = new URL(request.url);\n const locale = extractLocale(url.pathname);\n if (locale) {\n const headResult = rootHead({ params: { locale } });\n const links = (headResult.links as Record<string, unknown>[]) ?? [];\n for (const link of links) {\n const header = buildLinkHeader(link);\n if (header) linkHeaders.push(header);\n }\n }\n } catch (e) {\n // rootHead failed — log why, then fall back to known critical assets\n console.warn('[earlyHints] rootHead failed:', e instanceof Error ? e.message : e);\n for (const asset of CRITICAL_ASSETS) {\n const co = 'crossOrigin' in asset ? asset.crossOrigin : undefined;\n linkHeaders.push(`<${asset.href}>; rel=${asset.rel}${co ? '; crossorigin' : ''}`);\n }\n }\n\n // 2. Add CSS from TanStack Start manifest (bundled theme CSS)\n if (!cachedManifestPaths) {\n try {\n const manifest = tsrStartManifest();\n const rootAssets = manifest.routes['__root__']?.assets ?? [];\n const seen = new Set<string>();\n cachedManifestPaths = [];\n for (const asset of rootAssets) {\n if (asset.tag === 'link' && asset.attrs?.href?.endsWith('.css')) {\n if (!seen.has(asset.attrs.href)) {\n seen.add(asset.attrs.href);\n cachedManifestPaths.push(asset.attrs.href);\n }\n }\n }\n } catch (e) {\n // manifest not available — skip\n console.warn('[earlyHints] tsrStartManifest failed:', e instanceof Error ? e.message : e);\n }\n }\n\n if (cachedManifestPaths) {\n for (const href of cachedManifestPaths) {\n linkHeaders.push(`<${href}>; rel=preload; as=style`);\n }\n }\n\n // Apply Link headers if we have any\n if (linkHeaders.length === 0) {\n console.warn('[earlyHints] no critical assets found — no Link headers added');\n return response;\n }\n\n const headers = new Headers(response.headers);\n for (const linkHeader of linkHeaders) {\n headers.append('Link', linkHeader);\n }\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n });\n};\n"]}
1
+ {"version":3,"sources":["../src/tanstack/middleware/twilight.ts","../src/tanstack/middleware/earlyHints.ts"],"names":["createMiddleware"],"mappings":"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","file":"tanstack.js","sourcesContent":["import type { AnyRequestMiddleware } from '@tanstack/react-start';\nimport { createMiddleware } from '@tanstack/react-start';\nimport {\n extractTokenFromCookies,\n extractScopeIdFromCookies,\n AUTH_TOKEN_COOKIE_NAME,\n} from '../../utils/cookies';\nimport { runWithTwilightContext } from '../../twilight/context';\n\ninterface TwilightMiddlewareOptions {\n cookieName?: string;\n}\n\nexport const twilightMiddleware = (options?: TwilightMiddlewareOptions): AnyRequestMiddleware => {\n const cookieName = options?.cookieName ?? AUTH_TOKEN_COOKIE_NAME;\n\n return createMiddleware().server(({ request, next }) => {\n const cookieHeader = request.headers.get('Cookie');\n const authToken = extractTokenFromCookies(cookieHeader, cookieName);\n const scopeId = extractScopeIdFromCookies(cookieHeader);\n\n return runWithTwilightContext({ authToken, scopeId }, () => next({ context: { authToken } }));\n });\n};\n","import type { AnyRequestMiddleware } from '@tanstack/react-start';\nimport { createMiddleware } from '@tanstack/react-start';\nimport { tsrStartManifest } from 'tanstack-start-manifest:v';\nimport { rootHead } from '../../routes/root/head';\n\n/** Known critical assets that should always be preloaded */\nconst CRITICAL_ASSETS = [\n { rel: 'modulepreload', href: 'https://cdn.assets.salla.network/static/lit/3.3.3/lit.js' },\n { rel: 'preconnect', href: 'https://api.salla.dev' },\n { rel: 'preconnect', href: 'https://cdn.salla.sa' },\n { rel: 'preconnect', href: 'https://cdn.assets.salla.network', crossOrigin: 'anonymous' },\n { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossOrigin: 'anonymous' },\n] as const;\n\n/** Extract locale from URL path (e.g., /ar/products → 'ar') */\nfunction extractLocale(url: string): string | undefined {\n const match = url.match(/^\\/([a-z]{2})(\\/|$)/);\n return match?.[1];\n}\n\n/** Build Link header value from a link descriptor */\nfunction buildLinkHeader(link: Record<string, unknown>): string | null {\n const href = link.href as string | undefined;\n const rel = link.rel as string | undefined;\n if (!href || !rel) return null;\n\n // Skip print-media stylesheets (already non-blocking)\n if (rel === 'stylesheet') {\n const media = link.media as string | undefined;\n if (media === 'print') return null;\n return `<${href}>; rel=preload; as=style`;\n }\n\n if (rel === 'preload') {\n const asType = link.as as string | undefined;\n if (!asType) return null;\n const parts = [`<${href}>`, 'rel=preload', `as=${asType}`];\n if (asType === 'font' || link.crossOrigin) {\n parts.push('crossorigin');\n }\n return parts.join('; ');\n }\n\n if (rel === 'modulepreload') {\n return `<${href}>; rel=modulepreload`;\n }\n\n return null;\n}\n\nexport const earlyHintsMiddleware = (): AnyRequestMiddleware => {\n let cachedManifestPaths: string[] | null = null;\n\n return createMiddleware().server(async ({ request, next }) => {\n const response = await next();\n\n const accept = request.headers.get('Accept') ?? '';\n if (!accept.includes('text/html') && accept !== '*/*') return response;\n if (!(response instanceof Response)) return response;\n\n const linkHeaders: string[] = [];\n\n // 1. Add critical assets from rootHead (fonts, icons, SDK, etc.)\n try {\n const url = new URL(request.url);\n const locale = extractLocale(url.pathname);\n if (locale) {\n const headResult = rootHead({ params: { locale } });\n const links = (headResult.links as Record<string, unknown>[]) ?? [];\n for (const link of links) {\n const header = buildLinkHeader(link);\n if (header) linkHeaders.push(header);\n }\n }\n } catch (e) {\n // rootHead failed — log why, then fall back to known critical assets\n console.warn('[earlyHints] rootHead failed:', e instanceof Error ? e.message : e);\n for (const asset of CRITICAL_ASSETS) {\n const co = 'crossOrigin' in asset ? asset.crossOrigin : undefined;\n linkHeaders.push(`<${asset.href}>; rel=${asset.rel}${co ? '; crossorigin' : ''}`);\n }\n }\n\n // 2. Add CSS from TanStack Start manifest (bundled theme CSS)\n if (!cachedManifestPaths) {\n try {\n const manifest = tsrStartManifest();\n const rootAssets = manifest.routes['__root__']?.assets ?? [];\n const seen = new Set<string>();\n cachedManifestPaths = [];\n for (const asset of rootAssets) {\n if (asset.tag === 'link' && asset.attrs?.href?.endsWith('.css')) {\n if (!seen.has(asset.attrs.href)) {\n seen.add(asset.attrs.href);\n cachedManifestPaths.push(asset.attrs.href);\n }\n }\n }\n } catch (e) {\n // manifest not available — skip\n console.warn('[earlyHints] tsrStartManifest failed:', e instanceof Error ? e.message : e);\n }\n }\n\n if (cachedManifestPaths) {\n for (const href of cachedManifestPaths) {\n linkHeaders.push(`<${href}>; rel=preload; as=style`);\n }\n }\n\n // Apply Link headers if we have any\n if (linkHeaders.length === 0) {\n console.warn('[earlyHints] no critical assets found — no Link headers added');\n return response;\n }\n\n const headers = new Headers(response.headers);\n for (const linkHeader of linkHeaders) {\n headers.append('Link', linkHeader);\n }\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n });\n};\n"]}
@@ -1,6 +1,7 @@
1
1
  import type { QueryClient } from '@tanstack/react-query';
2
2
  import type { i18n } from 'i18next';
3
3
  import type { StoreContext } from '../api/store';
4
+ import type { AppSnippet, AppSettings } from '../api/apps';
4
5
  export interface TwilightLocation<TSearch = Record<string, unknown>> {
5
6
  href: string;
6
7
  pathname: string;
@@ -35,6 +36,12 @@ export interface TwilightContext {
35
36
  i18n: i18n;
36
37
  dir: 'ltr' | 'rtl';
37
38
  page?: PageContext;
39
+ /** Installed apps' snippets, fetched in rootBeforeLoad so AppsSnippets can render CDN
40
+ * <script> tags during SSR (React Query isn't dehydrated here, so useQuery has no SSR data). */
41
+ appsSnippets?: AppSnippet[];
42
+ /** Per-app public `app.*` buckets, fetched in rootBeforeLoad so rootHead can install the
43
+ * `Salla.appScope` factory inline at parse time — ahead of the snippets' onReady callbacks. */
44
+ appsSettings?: AppSettings;
38
45
  extras?: Record<string, unknown>;
39
46
  }
40
47
  export declare function runWithTwilightContext<T>(partial: Partial<TwilightContext>, fn: () => T): T;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/twilight/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAUjD,MAAM,WAAW,gBAAgB,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnE,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAoGD,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAQ3F;AAMD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAKlE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAM7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAM7C;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CA4CpD;AAED,wCAAwC;AACxC,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/twilight/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAU3D,MAAM,WAAW,gBAAgB,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnE,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;qGACiG;IACjG,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B;oGACgG;IAChG,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAwGD,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAQ3F;AAMD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAKlE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAM7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAM7C;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAkDpD;AAED,wCAAwC;AACxC,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-context.d.ts","sourceRoot":"","sources":["../../src/twilight/ensure-context.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,GACnD,OAAO,CAkBT"}
1
+ {"version":3,"file":"ensure-context.d.ts","sourceRoot":"","sources":["../../src/twilight/ensure-context.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAsBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,GACnD,OAAO,CAoBT"}
@@ -296,6 +296,14 @@ export interface SallaWishlist {
296
296
  toggle: (_productId: number | string) => Promise<void>;
297
297
  event?: SallaWishlistEvent;
298
298
  }
299
+ export interface SallaHooks {
300
+ /**
301
+ * Whitelist of theme-rendered slot names that apps are allowed to mount into. The SDK
302
+ * rejects `mount()` for any name absent from it; see `registerThemeHookSlots`.
303
+ */
304
+ _themeSlots?: string[];
305
+ mount?: (_slot: string, ..._args: unknown[]) => unknown;
306
+ }
299
307
  export interface SallaLogger {
300
308
  debug: (...args: unknown[]) => void;
301
309
  info: (...args: unknown[]) => void;
@@ -316,6 +324,8 @@ export interface SallaSDK {
316
324
  product: SallaProduct;
317
325
  wishlist: SallaWishlist;
318
326
  logger: SallaLogger;
327
+ /** Slot registry apps mount into; present once the SDK's hooks module has loaded. */
328
+ hooks?: SallaHooks;
319
329
  notify: SallaNotify;
320
330
  comment: SallaComment;
321
331
  order: SallaOrder;
@@ -332,6 +342,11 @@ export interface SallaSDK {
332
342
  /** Native-webview bridge (twilight Salla.mobile); self-gated, no-op on web. */
333
343
  mobile?: SallaMobile;
334
344
  onReady: (callback?: (event: Event) => unknown) => Promise<void>;
345
+ /**
346
+ * Per-app `salla` facade: `config` resolves `app.*` to one app's bucket, else the real SDK.
347
+ * CDN snippets call it with their `data-scope-id`. Installed inline (SSR head) or by `installAppScope`.
348
+ */
349
+ appScope?: (appScopeId: string) => SallaSDK;
335
350
  [key: string]: unknown;
336
351
  }
337
352
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"salla-sdk.d.ts","sourceRoot":"","sources":["../../src/types/salla-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"salla-sdk.d.ts","sourceRoot":"","sources":["../../src/types/salla-sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { SallaSDK } from '../types/salla-sdk';
2
+ /** One app's private `app.*` bag, keyed without the `app.` prefix (`app.color` → `color`). */
3
+ export type AppConfigBag = Record<string, unknown>;
4
+ /** One public `app.*` bucket per app, keyed by appScopeId. Everything else is read from the
5
+ * real `salla.config` at runtime. */
6
+ export interface AppScopeContexts {
7
+ apps: Record<string, AppConfigBag>;
8
+ }
9
+ /** Builds the `scopeId → sandboxed SDK` factory over a live bucket bag. */
10
+ export type AppScopeFactoryBuilder = (w: any, appCtx: Record<string, AppConfigBag>) => (scopeId: string) => SallaSDK;
11
+ /**
12
+ * The sandbox itself: proxies that resolve `app.*` against the app's own bucket and pass
13
+ * everything else through to the real SDK.
14
+ *
15
+ * MUST stay self-contained (only `Object`/`Proxy` and its two arguments): it is serialized via
16
+ * `.toString()` next to {@link appScopeBootstrap} and handed in as an argument, so anything it
17
+ * closed over at module scope would be undefined in the inline head copy. Split out from the
18
+ * bootstrap purely to keep both halves reviewable.
19
+ */
20
+ export declare const createAppScopeFactory: AppScopeFactoryBuilder;
21
+ /**
22
+ * Installs `window.Salla.appScope`, seeded with `contexts` and sandboxed by `makeFactory`.
23
+ *
24
+ * MUST stay self-contained (only `window`/`Object` and its arguments): it's serialized via
25
+ * `.toString()` and inlined into the SSR head so the factory exists at parse time — before the
26
+ * SDK init/hydration a CDN snippet's `onReady` races, else it throws `Salla.appScope is not a
27
+ * function`. `makeFactory` is passed in rather than imported for exactly that reason. Also
28
+ * called directly by `installAppScope` (tests/fallback).
29
+ *
30
+ * Idempotent: the factory is first-write-wins, while buckets are merged per scope (also
31
+ * first-write-wins) so a later call can seed scopes the first one had no data for. `appCtx` is
32
+ * closure-private (namespacing, not security: buckets are public-only and the boundary is
33
+ * server-side).
34
+ */
35
+ export declare function appScopeBootstrap(contexts: AppScopeContexts, makeFactory: AppScopeFactoryBuilder): void;
36
+ /** Overlay preview mocks onto one app's bucket (over its pristine values). Delegates to the
37
+ * bootstrap's `__appScopeMock`, so it works for both install paths. False if unknown/uninstalled. */
38
+ export declare function applyAppScopeMocks(appScopeId: string, mocks: AppConfigBag): boolean;
39
+ /** Serialize the installer into an inline `<script>` body seeded with `contexts` — both halves
40
+ * via `.toString()`, hence their self-contained requirement. See `rootHead`. */
41
+ export declare function renderAppScopeInstallScript(contexts: AppScopeContexts): string;
42
+ /** Install `Salla.appScope` on the client, or seed buckets into the inline SSR head copy that
43
+ * already installed it. No-op on the server. Fallback for unseeded loads + the unit-test entry
44
+ * point. */
45
+ export declare function installAppScope(contexts: AppScopeContexts): void;
46
+ //# sourceMappingURL=app-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-scope.d.ts","sourceRoot":"","sources":["../../src/utils/app-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAKnD,8FAA8F;AAC9F,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD;sCACsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACpC;AAED,2EAA2E;AAC3E,MAAM,MAAM,sBAAsB,GAAG,CAEnC,CAAC,EAAE,GAAG,EACN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KACjC,CAAC,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAC;AAEnC;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,sBA0EnC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,sBAAsB,GAClC,IAAI,CA8CN;AAED;sGACsG;AACtG,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAKnF;AAID;iFACiF;AACjF,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAK9E;AAED;;aAEa;AACb,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAGhE"}
@@ -15,6 +15,8 @@ export { buildBaseHead, buildHreflangAlternates, localeToOgLocale } from './base
15
15
  export { normalizeClasses, mergeElementAttrs, toReactProps, mergeDocumentDescriptors, syncAttrsToElement, type DocumentElementAttrs, type DocumentElementDescriptor, } from './document-class';
16
16
  export { getStoreIdentifier, getSallaSDK, type StoreContext } from './sdk-helpers';
17
17
  export { dispatchRouteChanged, type RouteChangedEvent } from './sdk-events';
18
+ export { applyAppScopeMocks, type AppScopeContexts, type AppConfigBag } from './app-scope';
19
+ export { registerThemeHookSlots } from './theme-hook-slots';
18
20
  export { sortOptions } from './sort-options';
19
21
  export { stripUnsafeHtml } from './sanitize';
20
22
  export { getMobileOS, resolveAppStoreUrl, type MobileOS } from './device';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGtF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,GAC/B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGnF,OAAO,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAG5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAG1E,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGtF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,GAC/B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGnF,OAAO,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAM5E,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAG1E,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC"}