@salla.sa/twilight-theme-engine 1.0.95 → 1.0.97
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.
- package/dist/{AddToCartForm-6M57VCZU.js → AddToCartForm-OV4OJ6ZI.js} +3 -3
- package/dist/{AddToCartForm-6M57VCZU.js.map → AddToCartForm-OV4OJ6ZI.js.map} +1 -1
- package/dist/{BlogAuthorPage-F6RKZEXT.js → BlogAuthorPage-RFJMRGTW.js} +26 -24
- package/dist/BlogAuthorPage-RFJMRGTW.js.map +1 -0
- package/dist/{BlogCategoryPage-TMADZWDK.js → BlogCategoryPage-UB27VWXE.js} +26 -24
- package/dist/BlogCategoryPage-UB27VWXE.js.map +1 -0
- package/dist/{BlogPage-KUNTYL2L.js → BlogPage-E6SWRULY.js} +24 -22
- package/dist/BlogPage-E6SWRULY.js.map +1 -0
- package/dist/{BlogSinglePage-JCI5KX6K.js → BlogSinglePage-SFQRA6EC.js} +24 -22
- package/dist/BlogSinglePage-SFQRA6EC.js.map +1 -0
- package/dist/{BlogTagPage-6IC6HRXA.js → BlogTagPage-UQ7AG7IY.js} +26 -24
- package/dist/BlogTagPage-UQ7AG7IY.js.map +1 -0
- package/dist/{BrandsPage-CK7LZ4ZR.js → BrandsPage-54TYVIIH.js} +25 -23
- package/dist/BrandsPage-54TYVIIH.js.map +1 -0
- package/dist/{Breadcrumb-5RWSAJKQ.js → Breadcrumb-5PRKPMLH.js} +24 -22
- package/dist/Breadcrumb-5PRKPMLH.js.map +1 -0
- package/dist/{CartItem-AEIRNYUK.js → CartItem-YYZHPLOW.js} +24 -22
- package/dist/CartItem-YYZHPLOW.js.map +1 -0
- package/dist/{CartSummary-WCQL3GV5.js → CartSummary-55QHAA2D.js} +24 -22
- package/dist/CartSummary-55QHAA2D.js.map +1 -0
- package/dist/{Copyright-HRQKNNC3.js → Copyright-M5PLSEJB.js} +3 -3
- package/dist/{Copyright-HRQKNNC3.js.map → Copyright-M5PLSEJB.js.map} +1 -1
- package/dist/{CustomerLayout-ET4OD3VV.js → CustomerLayout-5SAJUVCD.js} +24 -22
- package/dist/CustomerLayout-5SAJUVCD.js.map +1 -0
- package/dist/{Footer-N2DCHQMO.js → Footer-APIPC5PU.js} +4 -4
- package/dist/{Footer-N2DCHQMO.js.map → Footer-APIPC5PU.js.map} +1 -1
- package/dist/Header-5DTS6TVG.js +22 -0
- package/dist/{Header-SGRINHMD.js.map → Header-5DTS6TVG.js.map} +1 -1
- package/dist/{LoyaltyPage-FLTNW6G3.js → LoyaltyPage-AUOTLLDU.js} +24 -22
- package/dist/LoyaltyPage-AUOTLLDU.js.map +1 -0
- package/dist/{LoyaltyPointsPage-W4QU4RDU.js → LoyaltyPointsPage-QS74LPGZ.js} +8 -7
- package/dist/LoyaltyPointsPage-QS74LPGZ.js.map +1 -0
- package/dist/{MainMenu-D5CFVBNQ.js → MainMenu-CF6EYHYR.js} +7 -6
- package/dist/MainMenu-CF6EYHYR.js.map +1 -0
- package/dist/{MasterLayout-DKUMEBDQ.js → MasterLayout-UQ6UJIS2.js} +24 -22
- package/dist/{MasterLayout-DKUMEBDQ.js.map → MasterLayout-UQ6UJIS2.js.map} +1 -1
- package/dist/{MobileMenu-3LCM35WP.js → MobileMenu-Y3IEUQD7.js} +25 -23
- package/dist/MobileMenu-Y3IEUQD7.js.map +1 -0
- package/dist/{NotificationsPage-KJ6WDEVH.js → NotificationsPage-LTTYF45A.js} +24 -22
- package/dist/NotificationsPage-LTTYF45A.js.map +1 -0
- package/dist/{OrderSinglePage-H6TGX43N.js → OrderSinglePage-RG5GJQ7H.js} +25 -23
- package/dist/OrderSinglePage-RG5GJQ7H.js.map +1 -0
- package/dist/{OrdersPage-BEBXUZGC.js → OrdersPage-ILD4GC4Q.js} +24 -22
- package/dist/OrdersPage-ILD4GC4Q.js.map +1 -0
- package/dist/{PageSingle-P5PI65M5.js → PageSingle-5QJOHIFO.js} +6 -5
- package/dist/PageSingle-5QJOHIFO.js.map +1 -0
- package/dist/{ProductDetails-PWS4VZWO.js → ProductDetails-ASAPGMTN.js} +7 -6
- package/dist/ProductDetails-ASAPGMTN.js.map +1 -0
- package/dist/{ProfilePage-25NC72CQ.js → ProfilePage-4GPD5OJA.js} +24 -22
- package/dist/ProfilePage-4GPD5OJA.js.map +1 -0
- package/dist/{RenderWhenVisible-F44J5MMG.js → RenderWhenVisible-KWAXEJOJ.js} +8 -5
- package/dist/RenderWhenVisible-KWAXEJOJ.js.map +1 -0
- package/dist/{ReviewsPage-JQJEEKR3.js → ReviewsPage-VZX65JNB.js} +3 -3
- package/dist/{ReviewsPage-JQJEEKR3.js.map → ReviewsPage-VZX65JNB.js.map} +1 -1
- package/dist/{SeoCartWidget-A7MCWGQ2.js → SeoCartWidget-5W42B33H.js} +24 -22
- package/dist/SeoCartWidget-5W42B33H.js.map +1 -0
- package/dist/{SettingsPage-6W32UA32.js → SettingsPage-AIHWRJXR.js} +24 -22
- package/dist/SettingsPage-AIHWRJXR.js.map +1 -0
- package/dist/{StoreClosedNotification-B3MQFPFY.js → StoreClosedNotification-N3RS2Y6Q.js} +25 -23
- package/dist/{StoreClosedNotification-B3MQFPFY.js.map → StoreClosedNotification-N3RS2Y6Q.js.map} +1 -1
- package/dist/{TestimonialsPage-MDYX65Z3.js → TestimonialsPage-TLHRLY4O.js} +6 -5
- package/dist/TestimonialsPage-TLHRLY4O.js.map +1 -0
- package/dist/{ThankYouPage-AFJCN3AH.js → ThankYouPage-BXDQRBQW.js} +24 -22
- package/dist/ThankYouPage-BXDQRBQW.js.map +1 -0
- package/dist/{WalletPage-S6S5ZV3A.js → WalletPage-Q3HSJ6DX.js} +25 -23
- package/dist/WalletPage-Q3HSJ6DX.js.map +1 -0
- package/dist/{WishlistPage-YH4OQPXP.js → WishlistPage-TZ7NZX4K.js} +26 -24
- package/dist/WishlistPage-TZ7NZX4K.js.map +1 -0
- package/dist/ambient/virtual-modules.d.ts +43 -1
- package/dist/api/advertisement.js +4 -3
- package/dist/api/apps.js +4 -3
- package/dist/api/blog.js +6 -5
- package/dist/api/brands.js +6 -5
- package/dist/api/cart.js +6 -5
- package/dist/api/category.js +6 -5
- package/dist/api/client.js +3 -2
- package/dist/api/home.js +4 -3
- package/dist/api/loyalty.js +6 -5
- package/dist/api/menu.js +4 -3
- package/dist/api/notification.js +4 -3
- package/dist/api/order.js +6 -5
- package/dist/api/page.js +6 -5
- package/dist/api/product.js +6 -5
- package/dist/api/profile.js +3 -2
- package/dist/api/profile.js.map +1 -1
- package/dist/api/store.js +4 -3
- package/dist/api/translations.js +4 -3
- package/dist/api/user.js +4 -3
- package/dist/api/wallet.js +4 -3
- package/dist/api/wishlist.js +7 -6
- package/dist/{chunk-HQAFPDJK.js → chunk-2FDLEB5J.js} +3 -3
- package/dist/{chunk-HQAFPDJK.js.map → chunk-2FDLEB5J.js.map} +1 -1
- package/dist/chunk-2FKZAAV7.js +90 -0
- package/dist/chunk-2FKZAAV7.js.map +1 -0
- package/dist/{chunk-ZTXEXO4W.js → chunk-4P77DKHC.js} +7 -7
- package/dist/{chunk-ZTXEXO4W.js.map → chunk-4P77DKHC.js.map} +1 -1
- package/dist/{chunk-CEYT3JER.js → chunk-56T47K7P.js} +4 -4
- package/dist/{chunk-CEYT3JER.js.map → chunk-56T47K7P.js.map} +1 -1
- package/dist/{chunk-LPQ5FUMJ.js → chunk-5SDCUGYR.js} +4 -4
- package/dist/{chunk-LPQ5FUMJ.js.map → chunk-5SDCUGYR.js.map} +1 -1
- package/dist/{chunk-QGOPTVV5.js → chunk-6EQ7G3SZ.js} +4 -3
- package/dist/chunk-6EQ7G3SZ.js.map +1 -0
- package/dist/{chunk-FZYR4BA2.js → chunk-7WTUA4WY.js} +3 -3
- package/dist/{chunk-FZYR4BA2.js.map → chunk-7WTUA4WY.js.map} +1 -1
- package/dist/{chunk-3PXONLUK.js → chunk-BH7YNCYB.js} +3 -3
- package/dist/{chunk-3PXONLUK.js.map → chunk-BH7YNCYB.js.map} +1 -1
- package/dist/{chunk-DBW7XXNE.js → chunk-BPL5H33B.js} +4 -4
- package/dist/{chunk-DBW7XXNE.js.map → chunk-BPL5H33B.js.map} +1 -1
- package/dist/{chunk-66K5P5ZX.js → chunk-CNUBL24W.js} +3 -3
- package/dist/{chunk-66K5P5ZX.js.map → chunk-CNUBL24W.js.map} +1 -1
- package/dist/chunk-COJH52VR.js +443 -0
- package/dist/chunk-COJH52VR.js.map +1 -0
- package/dist/{chunk-6OOTDFC7.js → chunk-D56TVNOG.js} +3 -3
- package/dist/{chunk-6OOTDFC7.js.map → chunk-D56TVNOG.js.map} +1 -1
- package/dist/{chunk-N6OPDLCU.js → chunk-DMOXGVMT.js} +13 -12
- package/dist/chunk-DMOXGVMT.js.map +1 -0
- package/dist/{chunk-Y7XVWQXG.js → chunk-DNPQ2JBM.js} +4 -4
- package/dist/{chunk-Y7XVWQXG.js.map → chunk-DNPQ2JBM.js.map} +1 -1
- package/dist/{chunk-JJARU7YP.js → chunk-EWLVLDRP.js} +3 -3
- package/dist/{chunk-JJARU7YP.js.map → chunk-EWLVLDRP.js.map} +1 -1
- package/dist/{chunk-J47OCHM7.js → chunk-EXREO7W6.js} +20 -19
- package/dist/chunk-EXREO7W6.js.map +1 -0
- package/dist/{chunk-HSWRYXC7.js → chunk-FO4WVGUQ.js} +3 -88
- package/dist/chunk-FO4WVGUQ.js.map +1 -0
- package/dist/{chunk-FCTL7IV6.js → chunk-FXIX4O3Q.js} +3 -3
- package/dist/{chunk-FCTL7IV6.js.map → chunk-FXIX4O3Q.js.map} +1 -1
- package/dist/{chunk-BNI6SKFL.js → chunk-G3UTLICK.js} +4 -4
- package/dist/{chunk-BNI6SKFL.js.map → chunk-G3UTLICK.js.map} +1 -1
- package/dist/{chunk-C4RXPVDF.js → chunk-GMXI6V2D.js} +6 -5
- package/dist/chunk-GMXI6V2D.js.map +1 -0
- package/dist/{chunk-RKQH63G2.js → chunk-GXHJXZBG.js} +4 -4
- package/dist/{chunk-RKQH63G2.js.map → chunk-GXHJXZBG.js.map} +1 -1
- package/dist/{chunk-43D2CG4F.js → chunk-IBSQO6LW.js} +4 -4
- package/dist/{chunk-43D2CG4F.js.map → chunk-IBSQO6LW.js.map} +1 -1
- package/dist/{chunk-ZVZGLEZ6.js → chunk-IU4KTCS3.js} +3 -3
- package/dist/{chunk-ZVZGLEZ6.js.map → chunk-IU4KTCS3.js.map} +1 -1
- package/dist/{chunk-ENJ3CM5M.js → chunk-J5X4LXNM.js} +3 -3
- package/dist/{chunk-ENJ3CM5M.js.map → chunk-J5X4LXNM.js.map} +1 -1
- package/dist/{chunk-4WAUITU2.js → chunk-KNIGLCRV.js} +3 -3
- package/dist/{chunk-4WAUITU2.js.map → chunk-KNIGLCRV.js.map} +1 -1
- package/dist/{chunk-IR47RORL.js → chunk-M63VKFWB.js} +7 -7
- package/dist/{chunk-IR47RORL.js.map → chunk-M63VKFWB.js.map} +1 -1
- package/dist/chunk-N45X7D55.js +63 -0
- package/dist/chunk-N45X7D55.js.map +1 -0
- package/dist/{chunk-OH2L4U2C.js → chunk-NZRJOAA7.js} +3 -3
- package/dist/{chunk-OH2L4U2C.js.map → chunk-NZRJOAA7.js.map} +1 -1
- package/dist/{chunk-TEOVJ6WU.js → chunk-O7B5JL6H.js} +4 -4
- package/dist/{chunk-TEOVJ6WU.js.map → chunk-O7B5JL6H.js.map} +1 -1
- package/dist/{chunk-RNCISHJT.js → chunk-O7U7O434.js} +8 -7
- package/dist/chunk-O7U7O434.js.map +1 -0
- package/dist/{chunk-UURVAJ42.js → chunk-OZP2FID7.js} +4 -4
- package/dist/{chunk-UURVAJ42.js.map → chunk-OZP2FID7.js.map} +1 -1
- package/dist/{chunk-HCA2TE4G.js → chunk-PGUKRWOY.js} +5 -5
- package/dist/{chunk-HCA2TE4G.js.map → chunk-PGUKRWOY.js.map} +1 -1
- package/dist/{chunk-3MIFT4VQ.js → chunk-Q62YEBIA.js} +4 -4
- package/dist/{chunk-3MIFT4VQ.js.map → chunk-Q62YEBIA.js.map} +1 -1
- package/dist/{chunk-6DMNJPLW.js → chunk-QS4EDTEX.js} +3 -3
- package/dist/{chunk-6DMNJPLW.js.map → chunk-QS4EDTEX.js.map} +1 -1
- package/dist/{chunk-H64QXA6N.js → chunk-QWYXFQUZ.js} +4 -4
- package/dist/{chunk-H64QXA6N.js.map → chunk-QWYXFQUZ.js.map} +1 -1
- package/dist/{chunk-SAGXF3MU.js → chunk-QZEQOVA5.js} +3 -3
- package/dist/{chunk-SAGXF3MU.js.map → chunk-QZEQOVA5.js.map} +1 -1
- package/dist/{chunk-JTOVO3ZU.js → chunk-RWBTMHLR.js} +5 -5
- package/dist/{chunk-JTOVO3ZU.js.map → chunk-RWBTMHLR.js.map} +1 -1
- package/dist/{chunk-DV6SJHL5.js → chunk-S34G5DL4.js} +4 -4
- package/dist/{chunk-DV6SJHL5.js.map → chunk-S34G5DL4.js.map} +1 -1
- package/dist/{chunk-MKVCFBVF.js → chunk-TIPR4JUO.js} +4 -4
- package/dist/{chunk-MKVCFBVF.js.map → chunk-TIPR4JUO.js.map} +1 -1
- package/dist/{chunk-UOQR643Q.js → chunk-UUFUJZFE.js} +4 -4
- package/dist/{chunk-UOQR643Q.js.map → chunk-UUFUJZFE.js.map} +1 -1
- package/dist/{chunk-IVBOLREE.js → chunk-VWVCSD3N.js} +3 -3
- package/dist/{chunk-IVBOLREE.js.map → chunk-VWVCSD3N.js.map} +1 -1
- package/dist/{chunk-5G7NYNX6.js → chunk-W2LNKEBF.js} +3 -3
- package/dist/{chunk-5G7NYNX6.js.map → chunk-W2LNKEBF.js.map} +1 -1
- package/dist/{chunk-LV6J5FMT.js → chunk-W7K4IFI3.js} +20 -17
- package/dist/chunk-W7K4IFI3.js.map +1 -0
- package/dist/chunk-WRLEZ2WR.js +14 -0
- package/dist/{chunk-7GBNI3AU.js.map → chunk-WRLEZ2WR.js.map} +1 -1
- package/dist/{chunk-QFS2SHJ4.js → chunk-X52JCIUM.js} +7 -7
- package/dist/{chunk-QFS2SHJ4.js.map → chunk-X52JCIUM.js.map} +1 -1
- package/dist/{chunk-46NBPXAI.js → chunk-XT6CLGF5.js} +3 -3
- package/dist/{chunk-46NBPXAI.js.map → chunk-XT6CLGF5.js.map} +1 -1
- package/dist/{chunk-6ELXANJG.js → chunk-YFAZT6XB.js} +4 -4
- package/dist/{chunk-6ELXANJG.js.map → chunk-YFAZT6XB.js.map} +1 -1
- package/dist/{chunk-DTS3AGXT.js → chunk-Z7N242DF.js} +9 -8
- package/dist/chunk-Z7N242DF.js.map +1 -0
- package/dist/{chunk-SFZ7IIWL.js → chunk-ZEGNYJOR.js} +4 -4
- package/dist/{chunk-SFZ7IIWL.js.map → chunk-ZEGNYJOR.js.map} +1 -1
- package/dist/components/cart/index.js +1 -1
- package/dist/components/common/RenderWhenVisible.d.ts +3 -1
- package/dist/components/common/RenderWhenVisible.d.ts.map +1 -1
- package/dist/components/common/index.js +1 -1
- package/dist/components/common/lazy.d.ts +1 -1
- package/dist/components/common/lazy.d.ts.map +1 -1
- package/dist/components/drawer/index.js +22 -20
- package/dist/components/home/HomePageRenderer.d.ts.map +1 -1
- package/dist/components/home/index.js +26 -24
- package/dist/components/layout/index.js +6 -5
- package/dist/components/product/ProductGallery.d.ts.map +1 -1
- package/dist/components/product/index.js +23 -21
- package/dist/components/store/index.js +24 -22
- package/dist/components/store/index.js.map +1 -1
- package/dist/components/toast/index.js +4 -3
- package/dist/components/toast/index.js.map +1 -1
- package/dist/components/tracking/index.js +1 -1
- package/dist/dev/DevSettingsWidget.d.ts +6 -7
- package/dist/dev/DevSettingsWidget.d.ts.map +1 -1
- package/dist/dev/dev-settings-store.d.ts +89 -46
- package/dist/dev/dev-settings-store.d.ts.map +1 -1
- package/dist/dev/editor/AddElementDrawer.d.ts +17 -0
- package/dist/dev/editor/AddElementDrawer.d.ts.map +1 -0
- package/dist/dev/editor/BuilderPanel.d.ts +23 -0
- package/dist/dev/editor/BuilderPanel.d.ts.map +1 -0
- package/dist/dev/editor/SettingsPanel.d.ts +9 -0
- package/dist/dev/editor/SettingsPanel.d.ts.map +1 -0
- package/dist/dev/editor/ThemeEditor.d.ts +20 -0
- package/dist/dev/editor/ThemeEditor.d.ts.map +1 -0
- package/dist/dev/editor/catalog.d.ts +10 -0
- package/dist/dev/editor/catalog.d.ts.map +1 -0
- package/dist/dev/editor/fields.d.ts +18 -0
- package/dist/dev/editor/fields.d.ts.map +1 -0
- package/dist/dev/editor/i18n.d.ts +72 -0
- package/dist/dev/editor/i18n.d.ts.map +1 -0
- package/dist/dev/editor/icons.d.ts +21 -0
- package/dist/dev/editor/icons.d.ts.map +1 -0
- package/dist/dev/editor/index.d.ts +8 -0
- package/dist/dev/editor/index.d.ts.map +1 -0
- package/dist/dev/editor/index.js +2059 -0
- package/dist/dev/editor/index.js.map +1 -0
- package/dist/dev/editor/lookup.d.ts +22 -0
- package/dist/dev/editor/lookup.d.ts.map +1 -0
- package/dist/dev/editor/mount.d.ts +4 -0
- package/dist/dev/editor/mount.d.ts.map +1 -0
- package/dist/dev/editor/paths.d.ts +44 -0
- package/dist/dev/editor/paths.d.ts.map +1 -0
- package/dist/dev/editor/pickers.d.ts +12 -0
- package/dist/dev/editor/pickers.d.ts.map +1 -0
- package/dist/dev/editor/styles.d.ts +8 -0
- package/dist/dev/editor/styles.d.ts.map +1 -0
- package/dist/dev/index.d.ts +1 -1
- package/dist/dev/index.d.ts.map +1 -1
- package/dist/dev/index.js +35 -309
- package/dist/dev/index.js.map +1 -1
- package/dist/dev/schema-types.d.ts +124 -4
- package/dist/dev/schema-types.d.ts.map +1 -1
- package/dist/dev/store-lookup.d.ts +13 -0
- package/dist/dev/store-lookup.d.ts.map +1 -0
- package/dist/document-class-3QOJVTQL.js +29 -0
- package/dist/{document-class-BRRNAIKV.js.map → document-class-3QOJVTQL.js.map} +1 -1
- package/dist/hooks/index.js +22 -20
- package/dist/hooks/useComments.js +3 -2
- package/dist/hooks/useGtm.js +22 -20
- package/dist/hooks/useMoney.js +22 -20
- package/dist/hooks/useProduct.js +3 -2
- package/dist/hooks/useStore.js +22 -20
- package/dist/hooks/useUser.js +5 -4
- package/dist/hooks/useWishlist.js +3 -2
- package/dist/index.js +22 -20
- package/dist/index.js.map +1 -1
- package/dist/native-app/index.js +3 -2
- package/dist/{navigation-KTFJWOWI.js → navigation-JB2CJXBF.js} +7 -6
- package/dist/navigation-JB2CJXBF.js.map +1 -0
- package/dist/navigation-KTMLD4VB.js +14 -0
- package/dist/{navigation-BARZWXJZ.js.map → navigation-KTMLD4VB.js.map} +1 -1
- package/dist/{not-found-VJDPMT6N.js → not-found-XVRNO2WE.js} +25 -23
- package/dist/not-found-XVRNO2WE.js.map +1 -0
- package/dist/providers/index.js +22 -20
- package/dist/routes/account/orders.js +7 -6
- package/dist/routes/account.js +16 -15
- package/dist/routes/account.js.map +1 -1
- package/dist/routes/blog.js +11 -10
- package/dist/routes/blog.js.map +1 -1
- package/dist/routes/brands.js +7 -6
- package/dist/routes/brands.js.map +1 -1
- package/dist/routes/cart.js +30 -28
- package/dist/routes/cart.js.map +1 -1
- package/dist/routes/home/HomePage.d.ts.map +1 -1
- package/dist/routes/home.js +27 -25
- package/dist/routes/index.js +6 -5
- package/dist/routes/loyalty.js +8 -7
- package/dist/routes/loyalty.js.map +1 -1
- package/dist/routes/page.js +7 -6
- package/dist/routes/page.js.map +1 -1
- package/dist/routes/product-listing.js +28 -26
- package/dist/routes/product-listing.js.map +1 -1
- package/dist/routes/product.js +26 -24
- package/dist/routes/product.js.map +1 -1
- package/dist/routes/seo-redirects.js +6 -5
- package/dist/routes/testimonials.js +2 -2
- package/dist/routes/thank-you.js +7 -6
- package/dist/routes/thank-you.js.map +1 -1
- package/dist/skeleton.js +27 -25
- package/dist/store-lookup-T4TK7CKA.js +114 -0
- package/dist/store-lookup-T4TK7CKA.js.map +1 -0
- package/dist/tanstack.js +17 -16
- package/dist/tanstack.js.map +1 -1
- package/dist/types/salla-sdk.d.ts +7 -0
- package/dist/types/salla-sdk.d.ts.map +1 -1
- package/dist/utils/index.js +6 -5
- package/dist/utils/index.js.map +1 -1
- package/dist/vite/index.js +415 -23
- package/dist/vite/index.js.map +1 -1
- package/dist/vite/plugins/twilight-schema.d.ts +7 -2
- package/dist/vite/plugins/twilight-schema.d.ts.map +1 -1
- package/dist/vite/plugins/twilight-schema.plugin.d.ts +26 -0
- package/dist/vite/plugins/twilight-schema.plugin.d.ts.map +1 -1
- package/package.json +5 -1
- package/tailwind/components/common/RenderWhenVisible.tsx.txt +9 -2
- package/tailwind/components/home/HomePageRenderer.tsx.txt +2 -0
- package/tailwind/components/product/ProductGallery.tsx.txt +19 -10
- package/tailwind/routes/home/HomePage.tsx.txt +7 -6
- package/dist/BlogAuthorPage-F6RKZEXT.js.map +0 -1
- package/dist/BlogCategoryPage-TMADZWDK.js.map +0 -1
- package/dist/BlogPage-KUNTYL2L.js.map +0 -1
- package/dist/BlogSinglePage-JCI5KX6K.js.map +0 -1
- package/dist/BlogTagPage-6IC6HRXA.js.map +0 -1
- package/dist/BrandsPage-CK7LZ4ZR.js.map +0 -1
- package/dist/Breadcrumb-5RWSAJKQ.js.map +0 -1
- package/dist/CartItem-AEIRNYUK.js.map +0 -1
- package/dist/CartSummary-WCQL3GV5.js.map +0 -1
- package/dist/CustomerLayout-ET4OD3VV.js.map +0 -1
- package/dist/Header-SGRINHMD.js +0 -21
- package/dist/LoyaltyPage-FLTNW6G3.js.map +0 -1
- package/dist/LoyaltyPointsPage-W4QU4RDU.js.map +0 -1
- package/dist/MainMenu-D5CFVBNQ.js.map +0 -1
- package/dist/MobileMenu-3LCM35WP.js.map +0 -1
- package/dist/NotificationsPage-KJ6WDEVH.js.map +0 -1
- package/dist/OrderSinglePage-H6TGX43N.js.map +0 -1
- package/dist/OrdersPage-BEBXUZGC.js.map +0 -1
- package/dist/PageSingle-P5PI65M5.js.map +0 -1
- package/dist/ProductDetails-PWS4VZWO.js.map +0 -1
- package/dist/ProfilePage-25NC72CQ.js.map +0 -1
- package/dist/RenderWhenVisible-F44J5MMG.js.map +0 -1
- package/dist/SeoCartWidget-A7MCWGQ2.js.map +0 -1
- package/dist/SettingsPage-6W32UA32.js.map +0 -1
- package/dist/TestimonialsPage-MDYX65Z3.js.map +0 -1
- package/dist/ThankYouPage-AFJCN3AH.js.map +0 -1
- package/dist/WalletPage-S6S5ZV3A.js.map +0 -1
- package/dist/WishlistPage-YH4OQPXP.js.map +0 -1
- package/dist/chunk-2JV6WZ6O.js +0 -136
- package/dist/chunk-2JV6WZ6O.js.map +0 -1
- package/dist/chunk-7GBNI3AU.js +0 -14
- package/dist/chunk-C4RXPVDF.js.map +0 -1
- package/dist/chunk-DTS3AGXT.js.map +0 -1
- package/dist/chunk-HSWRYXC7.js.map +0 -1
- package/dist/chunk-J47OCHM7.js.map +0 -1
- package/dist/chunk-LV6J5FMT.js.map +0 -1
- package/dist/chunk-N6OPDLCU.js.map +0 -1
- package/dist/chunk-QGOPTVV5.js.map +0 -1
- package/dist/chunk-RNCISHJT.js.map +0 -1
- package/dist/document-class-BRRNAIKV.js +0 -28
- package/dist/navigation-BARZWXJZ.js +0 -13
- package/dist/navigation-KTFJWOWI.js.map +0 -1
- package/dist/not-found-VJDPMT6N.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/navigation/MobileMenu.tsx"],"names":["MobileMenuSkeleton"],"mappings":"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","file":"MobileMenu-3LCM35WP.js","sourcesContent":["import { useState, useCallback, useEffect, memo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { useTwilight } from '../../providers/twilight-context';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { Drawer } from '../../components/drawer';\nimport { Link } from '../common';\nimport { menu } from '../../api/menu';\nimport type { MenuItem } from '../../types';\n\nexport interface MobileMenuProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nconst MOBILE_SKELETON_ITEMS = 5;\nconst SKELETON_WIDTHS = ['w-32', 'w-28', 'w-36', 'w-24', 'w-30'];\n\nconst MobileMenuSkeleton = memo(function MobileMenuSkeleton() {\n return (\n <ul className=\"divide-y divide-gray-100\">\n {Array.from({ length: MOBILE_SKELETON_ITEMS }, (_, i) => (\n <li key={i} className=\"py-4\">\n <span\n className={`inline-block animate-pulse rounded bg-gray-200 h-5 ${SKELETON_WIDTHS[i]}`}\n />\n </li>\n ))}\n </ul>\n );\n});\n\nexport function MobileMenu(props: MobileMenuProps) {\n if (!props.isOpen) return null;\n return <MobileMenuContent {...props} />;\n}\n\nfunction MobileMenuContent({ onClose }: MobileMenuProps) {\n const { theme } = useTwilight();\n const { data: menus = [], isLoading } = useQuery(menu.queries.header());\n const { t } = useTranslation();\n\n const [menuStack, setMenuStack] = useState<{ title: string; items: MenuItem[] }[]>([]);\n const [isAnimating, setIsAnimating] = useState(false);\n\n const currentLevel = menuStack[menuStack.length - 1] ?? { title: '', items: menus };\n const isRootLevel = menuStack.length === 0;\n\n const openSubmenu = useCallback((item: MenuItem) => {\n if (item.children && item.children.length > 0) {\n setIsAnimating(true);\n setMenuStack((prev) => [...prev, { title: item.title, items: item.children! }]);\n requestAnimationFrame(() => {\n setIsAnimating(false);\n });\n }\n }, []);\n\n const goBack = useCallback(() => {\n setIsAnimating(true);\n setMenuStack((prev) => prev.slice(0, -1));\n requestAnimationFrame(() => {\n setIsAnimating(false);\n });\n }, []);\n\n useEffect(() => {\n document.body.classList.add('menu-opened');\n return () => document.body.classList.remove('menu-opened');\n }, []);\n\n const getListAnimationClass = () => {\n if (isAnimating) {\n return theme.is_rtl ? 'translate-x-4 opacity-0' : '-translate-x-4 opacity-0';\n }\n return 'translate-x-0 opacity-100';\n };\n\n return (\n <>\n <Drawer\n isOpen\n onClose={onClose}\n size=\"md\"\n closeOnBackdropClick={true}\n preventBodyScroll={false}\n className=\"overflow-visible\"\n >\n <button\n type=\"button\"\n onClick={onClose}\n aria-label={t('common.buttons.close', 'Close')}\n className=\"absolute top-0 w-12 h-12 flex items-center justify-center bg-[#d35a51] text-white hover:bg-red-600 transition-colors z-50 ltr:-right-12 rtl:-left-12\"\n >\n <i className=\"sicon-cancel text-xl leading-none\"></i>\n </button>\n\n <Drawer.Header showCloseButton={false} onClose={onClose}>\n <div className=\"flex items-center gap-2 w-full\">\n {!isRootLevel && (\n <button\n type=\"button\"\n className=\"text-gray-500 hover:text-gray-800 transition-colors flex-shrink-0\"\n onClick={goBack}\n aria-label={t('common.buttons.back', 'Back')}\n >\n <i className=\"sicon-keyboard_arrow_left text-xl flex items-center justify-center\"></i>\n </button>\n )}\n <span className=\"font-bold text-lg truncate flex-1 text-center pr-6 rtl:pl-6 rtl:pr-0\">\n {isRootLevel ? t('blocks.header.main_menu', 'Menu') : currentLevel.title}\n </span>\n </div>\n </Drawer.Header>\n <Drawer.Body className=\"p-0 overflow-hidden\">\n <nav className=\"mobile-menu h-full overflow-y-auto\">\n {isLoading ? (\n <MobileMenuSkeleton />\n ) : (\n <ul\n className={`divide-y divide-gray-100 transition-all duration-200 ease-out ${getListAnimationClass()}`}\n >\n {currentLevel.items.map((item) => {\n const hasChildren =\n item.has_children && item.children && item.children.length > 0;\n\n return (\n <li key={item.id} className=\"mobile-menu-item\">\n {hasChildren ? (\n <button\n type=\"button\"\n className=\"flex items-center justify-between w-full py-4 hover:text-primary transition-colors text-start group\"\n onClick={() => openSubmenu(item)}\n >\n <span className=\"text-gray-800 group-hover:text-primary font-medium text-base\">\n {item.title}\n </span>\n <i className=\"sicon-keyboard_arrow_right rtl:rotate-180 text-gray-500 group-hover:text-primary text-lg flex items-center justify-center h-full\"></i>\n </button>\n ) : (\n <Link\n to={item.url}\n className=\"block w-full py-4 hover:text-primary transition-colors text-gray-800 font-medium text-base group\"\n onClick={onClose}\n >\n <span className=\"group-hover:translate-x-1 rtl:group-hover:-translate-x-1 inline-block transition-transform\">\n {item.title}\n </span>\n </Link>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </nav>\n </Drawer.Body>\n </Drawer>\n </>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/account/notifications/NotificationsPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAS,gBAAA,CAAiB,EAAE,YAAA,EAAa,EAAmC;AAC1E,EAAA,uBACE,IAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,MAAM,YAAA,CAAa,GAAA;AAAA,MACnB,SAAA,EAAW,CAAA,gDAAA,EAAmD,YAAA,CAAa,OAAA,GAAU,+BAA+B,EAAE,CAAA,CAAA;AAAA,MAEtH,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,2BAAA,EACd,QAAA,kBAAA,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,WAAW,CAAA,yCAAA,EAA4C,CAAC,YAAA,CAAa,OAAA,GAAU,mCAAmC,EAAE,CAAA;AAAA;AAAA,SACrH,EACH,CAAA;AAAA,wBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACb,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sCAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAA,EAAA,EAAI,uBAAa,KAAA,EAAM,CAAA;AAAA,4BACxB,GAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,YAAA,CAAa,IAAA,EAAK;AAAA,WAAA,EACxB,CAAA;AAAA,0BACA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uCAAA,EACd,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,uDAAA,EAAwD,CAAA;AAAA,4BACrE,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,YAAA,CAAa,QAAA,EAAS;AAAA,WAAA,EAC/B;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAEO,SAAS,iBAAA,CAAkB,EAAE,aAAA,EAAc,EAA2B;AAC3E,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAE7B,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,oCAAA,EAAqC,CAAA;AAAA,oBACpD,GAAA,CAAC,SAAI,SAAA,EAAU,yBAAA,EACZ,wBAAc,MAAA,GAAS,CAAA,mBACtB,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qCAAA,EACZ,wBAAc,GAAA,CAAI,CAAC,IAAA,qBAClB,GAAA,CAAC,gBAAA,EAAA,EAA+B,YAAA,EAAc,QAAvB,IAAA,CAAK,EAAwB,CACrD,CAAA,EACH,CAAA,mBAEA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,iBAAA;AAAA,QACL,OAAA,EAAS,CAAA,CAAE,gCAAA,EAAkC,kBAAkB;AAAA;AAAA,KACjE,EAEJ,CAAA;AAAA,oBACA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,kCAAA,EAAmC;AAAA,GAAA,EACpD,CAAA;AAEJ","file":"NotificationsPage-KJ6WDEVH.js","sourcesContent":["import { HookSlot } from '../../../hooks';\nimport { NoContent } from '../../../components/common';\nimport { useTranslation } from '../../../providers/I18nProvider';\nimport type { NotificationsPageProps, Notification } from './types';\n\nfunction NotificationItem({ notification }: { notification: Notification }) {\n return (\n <a\n href={notification.url}\n className={`s-notifications-item s-notifications-item-shadow${notification.is_read ? ' s-notifications-item-read' : ''}`}\n >\n <span className=\"s-notifications-item-icon\">\n <i\n className={`s-notifications-item-icon sicon-bell-ring${!notification.is_read ? ' s-notifications-item-icon-new' : ''}`}\n ></i>\n </span>\n <div className=\"s-notifications-item-content\">\n <div className=\"s-notifications-item-content-leading\">\n <h4>{notification.title}</h4>\n <p>{notification.body}</p>\n </div>\n <span className=\"s-notifications-item-content-trailing\">\n <i className=\"sicon-time s-notifications-item-content-trailing-icon\"></i>\n <span>{notification.time_ago}</span>\n </span>\n </div>\n </a>\n );\n}\n\nexport function NotificationsPage({ notifications }: NotificationsPageProps) {\n const { t } = useTranslation();\n\n return (\n <>\n <HookSlot name=\"customer:notifications.items.start\" />\n <div className=\"s-notifications-wrapper\">\n {notifications.length > 0 ? (\n <div className=\"s-notifications-container space-y-2\">\n {notifications.map((item: Notification) => (\n <NotificationItem key={item.id} notification={item} />\n ))}\n </div>\n ) : (\n <NoContent\n icon=\"sicon-bell-ring\"\n message={t('blocks.header.no_notifications', 'No notifications')}\n />\n )}\n </div>\n <HookSlot name=\"customer:notifications.items.end\" />\n </>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/account/orders/single/OrderHeader.tsx","../src/routes/account/orders/single/OrderItemRow.tsx","../src/routes/account/orders/single/OrderActions.tsx","../src/routes/account/orders/single/OrderSections.tsx","../src/routes/account/orders/OrderSinglePage.tsx"],"names":["order","jsx","jsxs","SallaButton","Fragment","useState"],"mappings":"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","file":"OrderSinglePage-H6TGX43N.js","sourcesContent":["import { useState } from 'react';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { useDate, useNumber } from '../../../../hooks';\nimport { useTranslation } from '../../../../providers/I18nProvider';\nimport { useTwilight } from '../../../../providers/twilight-context';\nimport type { Order, TwigOrder } from './types';\n\nconst PRINT_WINDOW = 'noopener, toolbar=yes, scrollbars=yes, resizable=yes, width=900, height=700';\n\nfunction OrderStatus({ order, paymentExpired }: { order: Order; paymentExpired: boolean }) {\n const { t } = useTranslation();\n if (paymentExpired) {\n return <span className=\"text-red-500\">{t('pages.orders.pending_payment_expired')}</span>;\n }\n return (\n <span\n className=\"text-primary inline-flex items-center rtl:space-x-reverse space-x-1\"\n style={{ color: order.status.color }}\n >\n <i className={`mt-1 ${order.status.icon}`}></i>\n <span> {order.status.name}</span>\n </span>\n );\n}\n\n/** Twig's `order.print_url()`; `urls.receipt` is the buyer's bank-transfer image. */\nfunction PrintAction({ order }: { order: Order }) {\n const { t } = useTranslation();\n const { store } = useTwilight();\n const [printNoticeOpen, setPrintNoticeOpen] = useState(false);\n const print = () =>\n window.open(\n order.urls.print ??\n `${(store?.url ?? '').replace(/\\/$/, '')}/account/orders/${order.id}/print`,\n '_blank',\n PRINT_WINDOW\n );\n\n return order.actions.invoice_printable === false ? (\n <div\n className={`tooltip-toggle tooltip-toggle--clickable inline-block${printNoticeOpen ? ' visible' : ''}`}\n >\n <button\n type=\"button\"\n className=\"text-primary border border-primary rounded text-center px-4 py-2 cursor-pointer\"\n onClick={() => setPrintNoticeOpen(true)}\n >\n <i className=\"sicon-printer2 v-align\"></i> {t('pages.orders.print')}\n </button>\n <div className=\"tooltip-content shadow-md rounded text-gray-500\">\n <small>\n {' '}\n {t('pages.orders.to_order_invoice_contact_vendor')}\n <br />\n {t('pages.orders.print_order_details')}{' '}\n <button type=\"button\" className=\"text-primary underline cursor-pointer\" onClick={print}>\n {t('pages.orders.click_here')}\n </button>\n </small>\n <SallaButton\n shape=\"link\"\n color=\"danger\"\n size=\"small\"\n className=\"close-tooltip\"\n onClick={() => setPrintNoticeOpen(false)}\n >\n <i className=\"sicon-cancel\"></i>\n </SallaButton>\n </div>\n </div>\n ) : (\n <SallaButton fill=\"outline\" size=\"small\" onClick={print}>\n <i className=\"sicon-printer2 v-align\"></i> {t('pages.orders.print')}\n </SallaButton>\n );\n}\n\n/** The date / status / links / print row at the top of the order page. */\nexport function OrderHeader({\n order,\n links,\n paymentExpired,\n}: {\n order: Order;\n links: TwigOrder['links'];\n paymentExpired: boolean;\n}) {\n const { t, direction } = useTranslation();\n const { format: formatDate } = useDate();\n const { format: formatNumber } = useNumber();\n\n return (\n <table className=\"min-w-full rounded-md overflow-hidden\">\n <tbody>\n <tr className=\"bg-white overflow-hidden flex md:table-row flex-row md:flex-row flex-wrap md:flex-no-wrap py-1.5 md:py-0\">\n <td\n data-testid=\"store-order-status\"\n className=\"single-order-header-item w-full md:w-auto px-3 md:px-6 py-2 md:py-4 md:h-20 whitespace-nowrap text-sm \"\n >\n <div className=\"rtl:ml-2 ltr:mr-2 font-normal text-gray-400\">\n {t('pages.orders.date')}\n </div>\n <b>{formatNumber(formatDate(order.created_at.date))}</b>\n </td>\n\n <td className=\"single-order-header-item flex justify-between items-center w-full md:w-auto px-3 md:px-6 py-2 md:py-4 md:h-20 whitespace-nowrap text-sm \">\n <OrderStatus order={order} paymentExpired={paymentExpired} />\n\n <div className=\"flex items-center justify-between\">\n {order.type === 'quote' && (\n <span className=\"text-red-500 ml-4\">\n {t('pages.orders.your_order_is_under_review')}\n </span>\n )}\n\n {!!links?.length && (\n <div className=\"flex space-x-2 rtl:space-x-reverse text-start flex-none px-2\">\n {links.map((link) => (\n <a\n key={link.url}\n href={link.url}\n className=\"text-primary-reverse bg-primary px-4 py-2 rounded\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {link.label}{' '}\n <i\n className={\n direction === 'rtl' ? 'sicon-arrow-up-left' : 'sicon-arrow-up-right'\n }\n ></i>\n </a>\n ))}\n </div>\n )}\n <PrintAction order={order} />\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n );\n}\n","import { createElement } from 'react';\nimport { SallaOrderDetails } from '@salla.sa/twilight-components-react/order-details';\nimport { useDate, useNumber } from '../../../../hooks';\nimport { useTranslation } from '../../../../providers/I18nProvider';\nimport type { FormatMoney, OrderItem, TwigItem } from './types';\n\nfunction ItemAttachments({ item }: { item: OrderItem }) {\n const { t } = useTranslation();\n if (!item.attachments?.length) return null;\n return (\n <div className=\"flow-root rounded-md px-4 border border-gray-200\">\n <dl className=\"text-sm text-dark divide-y divide-border-color\">\n {item.attachments.map((attachment) => (\n <div\n key={`${attachment.type}:${attachment.url}`}\n className=\"py-3.5 md:flex items-center justify-between\"\n >\n <dt className=\"mb-2 md:mb-0\">{t('pages.products.attachments')}</dt>\n <dd\n className={`font-medium ${attachment.type === 'image' ? 'text-gray-900' : 'text-xs'}`}\n >\n {attachment.type === 'image' ? (\n <div className=\"flex rtl:space-x-reverse space-x-2.5\">\n <a href={attachment.url} target=\"_blank\" rel=\"noreferrer\">\n <img\n className=\"h-7 w-7 object-cover rounded-md\"\n src={attachment.url}\n alt={item.name}\n />\n </a>\n </div>\n ) : (\n <a href={attachment.url}>{t('pages.orders.file_url')}</a>\n )}\n </dd>\n </div>\n ))}\n </dl>\n </div>\n );\n}\n\n/** A date-only day (`2026-09-20`) as that calendar day wherever it is formatted, not UTC midnight. */\nfunction calendarDay(day: unknown): Date | string {\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(String(day));\n return match ? new Date(+match[1], +match[2] - 1, +match[3]) : String(day);\n}\n\n/** Twig's booking block: the location and each reservation's day and time. */\nfunction ItemReservations({ item, productType }: { item: OrderItem; productType?: string }) {\n const { t } = useTranslation();\n const { format: formatDate } = useDate();\n const { format: formatNumber, useArabicNumerals } = useNumber();\n const reservations = item.product_reservations ?? [];\n if (productType !== 'booking' || !reservations.length) return null;\n const time = (value: unknown) =>\n useArabicNumerals\n ? formatNumber(String(value)).replace(/PM/g, 'م').replace(/AM/g, 'ص')\n : String(value);\n\n return (\n <>\n {item.booking_location && (\n <ul className=\"font-medium text-xs text-gray-600\">\n <li className=\"py-1 flex justify-between items-baseline\">\n <span className=\"mt-5 mb-3.5 text-sm font-bold\">{t('common.elements.location')}</span>\n <span className=\"text-unicode\">{item.booking_location}</span>\n </li>\n </ul>\n )}\n <h2 className=\"mt-5 mb-3.5 text-sm font-bold\">\n {reservations.length > 1 ? t('pages.cart.reservations') : t('pages.cart.item_options')}\n </h2>\n <div className=\"rounded-md p-4 border border-gray-200 mb-2\">\n <ul className=\"font-medium text-xs text-gray-600\">\n {reservations.map((reservation) => (\n <li key={`${reservation.day}:${reservation.from}`} className=\"py-1\">\n <span className=\"text-unicode\">\n {formatNumber(formatDate(calendarDay(reservation.day)))}\n {reservation.from_timestamp\n ? ` (${time(reservation.from)} - ${time(reservation.to)})`\n : ''}\n </span>\n </li>\n ))}\n </ul>\n </div>\n </>\n );\n}\n\nfunction ItemSummary({\n item,\n twigItem,\n money,\n currency,\n}: {\n item: OrderItem;\n twigItem?: TwigItem;\n money: FormatMoney;\n currency: string;\n}) {\n const { t } = useTranslation();\n const product = twigItem?.product;\n const image = product?.image?.url || item.image || item.thumbnail;\n const price = item.amounts.amount ?? { amount: 0, currency };\n const priceText = money(price.amount, price.currency);\n const total = item.amounts.total ?? { amount: 0, currency };\n\n return (\n <div className=\"mb-5 last:mb-0\">\n {product ? (\n <div className=\"flex rtl:space-x-reverse space-x-5 mb-4\">\n <a href={product.url} className=\"shrink-0\">\n <img\n src={image || '/images/placeholder.png'}\n alt={item.name}\n className={`w-18 h-14 object-${image ? 'cover' : 'contain'} rounded-md`}\n />\n </a>\n <div>\n <a\n href={product.url}\n className=\"block leading-5 mb-1.5 md:text-base font-semibold transition-colors text-gray-500 hover:text-primary\"\n >\n {item.name}\n </a>\n <b>{priceText}</b>\n </div>\n </div>\n ) : (\n <div className=\"w-full flex justify-between text-sm py-2.5\">\n <span className=\"w-40 inline-block font-normal\">{item.name}</span>\n <b>{priceText}</b>\n </div>\n )}\n\n <div className=\"w-full flex justify-between text-sm py-2.5\">\n <span className=\"w-40 inline-block font-normal\">{t('pages.products.quantity')}</span>\n <b>{item.quantity}</b>\n </div>\n <div className=\"flex justify-between text-sm py-2.5\">\n <span className=\" w-40 inline-block font-normal\">{t('pages.products.price')}</span>\n <b>{priceText}</b>\n </div>\n <div className=\"flex justify-between text-sm py-2.5\">\n <span className=\"w-40 inline-block font-normal\">{t('pages.orders.total')}</span>\n <b>{money(total.amount, total.currency)}</b>\n </div>\n </div>\n );\n}\n\n/** One item of the order page (the body of `{% for item in package.items %}`). */\nexport function OrderItemRow({\n item,\n twigItem,\n money,\n currency,\n}: {\n item: OrderItem;\n twigItem?: TwigItem;\n money: FormatMoney;\n currency: string;\n}) {\n const { t } = useTranslation();\n const productId = twigItem?.product?.id;\n\n return (\n <div\n data-testid={`store-order-item-${item.id}`}\n data-order-item-id={item.id}\n data-order-item-product-id={productId}\n className=\"order-item bg-white p-5 border-b border-gray-100 first:rounded-t-md last:rounded-b-md last:border-none\"\n >\n <ItemSummary item={item} twigItem={twigItem} money={money} currency={currency} />\n\n {item.availability_date && (\n <div className=\"flex gap-2 text-sm py-2.5 text-blue-500\">\n <i className=\"sicon-info\"></i>\n <span>\n {t('pages.products.expected_to_be')}:{' '}\n <b>{String(item.availability_date).slice(0, 10)}</b>\n </span>\n </div>\n )}\n\n <ItemReservations item={item} productType={twigItem?.product?.type ?? item.product?.type} />\n\n <SallaOrderDetails orderDetails={JSON.stringify(twigItem ?? item)} />\n\n {item.note && (\n <p className=\"mt-3 text-sm text-gray-500\">\n <span>{t('common.elements.note')} : </span>\n {item.note}\n </p>\n )}\n\n <ItemAttachments item={item} />\n\n {/* No React wrapper yet; Twilight upgrades it (adds `hydrated`) before React hydrates. */}\n {productId &&\n createElement('salla-review-order-item', {\n 'product-id': productId,\n suppressHydrationWarning: true,\n })}\n </div>\n );\n}\n","import { useState } from 'react';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaModal } from '@salla.sa/twilight-components-react/modal';\nimport { useIsClient, useUser } from '../../../../hooks';\nimport { useAsyncFn } from '../../../../hooks/useAsyncFn';\nimport { useTranslation } from '../../../../providers/I18nProvider';\nimport { useLocation, useNavigate } from '../../../../providers/NavigationProvider';\nimport type { Order } from './types';\n\nfunction ConfirmModal({\n visible,\n onVisibleChange,\n title,\n subTitle,\n iconStyle,\n confirmColor,\n onConfirm,\n busy,\n}: {\n visible: boolean;\n onVisibleChange: (visible: boolean) => void;\n title: string;\n subTitle: string;\n iconStyle: 'success' | 'error';\n confirmColor?: 'danger';\n onConfirm: () => void;\n busy: boolean;\n}) {\n const { t } = useTranslation();\n // The modal wrapper renders only in the browser, so mount after hydration to match the server.\n const isClient = useIsClient();\n if (!isClient) return null;\n return (\n <SallaModal\n width=\"sm\"\n visible={visible}\n onModalVisibilityChanged={(e) => onVisibleChange(Boolean(e.detail))}\n {...{ 'modal-title': title }}\n subTitle={subTitle}\n iconStyle={iconStyle}\n >\n <div slot=\"footer\" className=\"grid grid-cols-2 gap-3\">\n <SallaButton\n width=\"wide\"\n color={confirmColor}\n className=\"w-full cursor-pointer\"\n onClick={onConfirm}\n disabled={busy}\n >\n {t('common.elements.ok')}\n </SallaButton>\n <SallaButton\n className=\"w-full\"\n fill=\"outline\"\n color=\"light\"\n onClick={() => onVisibleChange(false)}\n disabled={busy}\n >\n {t('common.elements.cancel')}\n </SallaButton>\n </div>\n </SallaModal>\n );\n}\n\nfunction PaymentOrReorder({\n order,\n paymentExpired,\n canReorder,\n onReorder,\n busy,\n}: {\n order: Order;\n paymentExpired: boolean;\n canReorder: boolean;\n onReorder: () => void;\n busy: boolean;\n}) {\n const { t } = useTranslation();\n if (order.actions.payable) {\n return paymentExpired || !order.urls.checkout ? (\n <span className=\"text-red-500\">{t('pages.orders.pending_payment_expired')}</span>\n ) : (\n <SallaButton width=\"wide\" href={order.urls.checkout}>\n <i className=\"sicon sicon-wallet rtl:ml-2 ltr:mr-2\"></i>\n <span>{t('pages.orders.finish_payment')}</span>\n </SallaButton>\n );\n }\n if (!canReorder) return null;\n return (\n <>\n <div className=\"text-sm\">\n <h3 className=\"font-bold text-lg leading-none mb-1\">{t('pages.orders.reorder')}</h3>\n <p className=\"text-gray-500\">{t('pages.orders.reorder_description')}</p>\n </div>\n <SallaButton\n data-testid=\"store-order-reorder-btn\"\n shape=\"link\"\n onClick={onReorder}\n disabled={busy}\n >\n <i className=\"sicon sicon-rotate rtl:ml-2 ltr:mr-2\"></i>\n <span>{t('pages.orders.reorder')}</span>\n </SallaButton>\n </>\n );\n}\n\n/** The \"Reorder & Cancel\" card, its pending-payment state and the two confirmations. */\nexport function OrderActions({ order, paymentExpired }: { order: Order; paymentExpired: boolean }) {\n const { t } = useTranslation();\n // Token-based, so the server and the first client render agree (the user query loads later).\n const { isLoggedIn } = useUser();\n const navigate = useNavigate();\n const location = useLocation();\n const [showReorder, setShowReorder] = useState(false);\n const [showCancel, setShowCancel] = useState(false);\n const { reorderable, cancellable, payable } = order.actions;\n const canReorder = isLoggedIn && reorderable;\n\n const [reorderState, handleReorder] = useAsyncFn(async () => {\n await window.salla?.order.createCartFromOrder(Number(order.id));\n setShowReorder(false);\n navigate('/cart');\n }, [navigate, order.id]);\n\n const [cancelState, handleCancel] = useAsyncFn(async () => {\n await window.salla?.order.cancel(Number(order.id));\n setShowCancel(false);\n navigate(location.pathname, { replace: true });\n }, [navigate, order.id, location.pathname]);\n\n if (!reorderable && !cancellable && !payable) return null;\n\n return (\n <>\n <div className=\"bg-white rounded-md p-5 divide-y divide-border-color space-y-4\">\n {(reorderable || payable) && (\n <div className={payable ? 'flex-center' : 'center-between'}>\n <PaymentOrReorder\n order={order}\n paymentExpired={paymentExpired}\n canReorder={!!canReorder}\n onReorder={() => setShowReorder(true)}\n busy={reorderState.loading}\n />\n </div>\n )}\n\n {cancellable && (\n <div className=\"center-between pt-4\">\n <div className=\"text-sm\">\n <h3 className=\"font-bold text-lg leading-none mb-1\">{t('pages.orders.cancel')}</h3>\n <p className=\"text-gray-500\">{t('pages.order.order_cancelation_desc')}</p>\n </div>\n <SallaButton\n data-testid=\"store-order-cancel-btn\"\n shape=\"link\"\n color=\"danger\"\n onClick={() => setShowCancel(true)}\n disabled={cancelState.loading}\n >\n <i className=\"sicon sicon-cancel-circle rtl:ml-2 ltr:mr-2\"></i>\n <span>{t('pages.orders.cancel')}</span>\n </SallaButton>\n </div>\n )}\n </div>\n\n {/* Always mounted: salla-modal moves itself under <body> and opens from `visible`. */}\n {canReorder && (\n <ConfirmModal\n visible={showReorder}\n onVisibleChange={setShowReorder}\n title={t('pages.orders.reorder')}\n subTitle={t('pages.orders.reorder_confirmation')}\n iconStyle=\"success\"\n onConfirm={handleReorder}\n busy={reorderState.loading}\n />\n )}\n {cancellable && (\n <ConfirmModal\n visible={showCancel}\n onVisibleChange={setShowCancel}\n title={t('common.elements.warning')}\n subTitle={t('pages.orders.cancel_confirmation')}\n iconStyle=\"error\"\n confirmColor=\"danger\"\n onConfirm={handleCancel}\n busy={cancelState.loading}\n />\n )}\n </>\n );\n}\n","import { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaRatingStars } from '@salla.sa/twilight-components-react/rating-stars';\nimport { useTranslation } from '../../../../providers/I18nProvider';\nimport { useQuery } from '@tanstack/react-query';\nimport { order as orderApi } from '../../../../api/order';\nimport type { FormatMoney, Order, TwigOrder, TwigRating } from './types';\n\nfunction RatingAction({\n disabled,\n endedKey,\n color,\n fill,\n icon,\n onClick,\n}: {\n disabled: boolean;\n endedKey: string;\n color: 'dark' | 'danger';\n fill: 'outline';\n icon: string;\n onClick: () => void;\n}) {\n const { t } = useTranslation();\n return (\n <div className=\"tooltip-toggle tooltip-toggle--hover icon-trigger mobile-shifted\">\n {disabled && (\n <div className=\"tooltip-content shadow-md rounded\">\n <small> {t(endedKey)}.</small>\n </div>\n )}\n <SallaButton\n loaderPosition=\"center\"\n disabled={disabled}\n shape=\"icon\"\n fill={fill}\n color={color}\n size=\"medium\"\n onClick={disabled ? undefined : onClick}\n >\n <i className={`${icon} text-xl`}></i>\n </SallaButton>\n </div>\n );\n}\n\n/** A store or shipping rating the customer left, with its edit / delete buttons. */\nexport function RatingSection({\n title,\n rating,\n type,\n allowUpdate,\n}: {\n title: string;\n rating: TwigRating;\n type: 'store' | 'shipping';\n allowUpdate: boolean;\n}) {\n const dispatch = (event: string, payload: Record<string, unknown>) =>\n window.salla?.event?.dispatch(event, payload);\n const locked = !rating.can_update;\n\n return (\n <section className=\"flex justify-between items-start bg-white p-5 rounded-md\">\n <div>\n <h2 className=\"text-lg font-bold mb-5\">{title}</h2>\n <p className=\"mb-2\">{rating.content}</p>\n <SallaRatingStars withLabel value={rating.stars} />\n </div>\n <div className=\"rating-actions\">\n {allowUpdate && (\n <>\n <RatingAction\n disabled={locked}\n endedKey=\"pages.order.edit_period_ended\"\n color=\"dark\"\n fill=\"outline\"\n icon=\"sicon-format-border-color\"\n onClick={() => dispatch('rating::edit', { type, feedback_id: String(rating.id) })}\n />\n <RatingAction\n disabled={locked}\n endedKey=\"pages.order.delete_period_ended\"\n color=\"danger\"\n fill=\"outline\"\n icon=\"sicon-trash-2\"\n onClick={() => dispatch('rating::delete', { feedback_id: String(rating.id) })}\n />\n </>\n )}\n </div>\n </section>\n );\n}\n\ninterface Shipment {\n id?: number;\n name?: string;\n logo?: string;\n number?: string;\n tracking?: string | null;\n}\n\nfunction ShippingRow({ shipment }: { shipment: Shipment }) {\n const { t } = useTranslation();\n // Twig treats the string \"0\" as empty.\n const hasNumber = !!shipment.number && shipment.number !== '0';\n\n return (\n <div className=\"flex flex-col md:flex-row justify-between md:items-center bg-white px-5 py-3 border-b border-gray-100 rounded-t-md text-sm space-y-4 md:space-y-0\">\n <div className=\"flex items-center space-x-2 rtl:space-x-reverse\">\n {shipment.logo && (\n <img src={shipment.logo} className=\"max-w-16 max-h-8\" alt={shipment.name} />\n )}\n <span>{shipment.name}</span>\n </div>\n <div className=\"flex space-x-5 rtl:space-x-reverse\">\n {hasNumber && (\n <span>\n {t('pages.orders.shipment_no')}: <span className=\"font-bold\">{shipment.number}</span>\n </span>\n )}\n {shipment.tracking && (\n <a\n className=\"font-bold text-primary hover:opacity-80 flex items-center\"\n href={shipment.tracking}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <span className=\"sicon-shipping rtl:ml-1 ltr:mr-1\"></span>\n {t('pages.orders.tracking_url')}\n </a>\n )}\n </div>\n </div>\n );\n}\n\n/**\n * The shipping company rows above the items (Twig's per-package titles). The order carries only\n * its first shipment, so the rest come from the shipments endpoint.\n */\nexport function ShippingHeader({ twig, order }: { twig: TwigOrder; order: Order }) {\n const { data } = useQuery({\n ...orderApi.queries.shipments(String(order.id)),\n enabled: order.features.shippable && !twig.is_pickable,\n });\n if (twig.is_pickable) return null;\n\n const shipments: Shipment[] = data?.length\n ? data.map((shipment) => ({ ...shipment, tracking: shipment.tracking_url }))\n : twig.shipping\n ? [{ ...twig.shipping, tracking: twig.shipping.tracing_link }]\n : [];\n\n return (\n <>\n {shipments.map((shipment) => (\n <ShippingRow key={shipment.id ?? shipment.name} shipment={shipment} />\n ))}\n </>\n );\n}\n\n/** An option's price as a number: the API sends a number, `{ amount }` or an empty array. */\nconst optionPrice = (price: unknown): number =>\n typeof price === 'number' ? price : ((price as { amount?: number } | null)?.amount ?? 0);\n\n/** The order-level options table (`order.options`). */\nexport function OrderOptionsTable({\n options,\n money,\n currency,\n}: {\n options: NonNullable<TwigOrder['options']>;\n money: FormatMoney;\n currency: string;\n}) {\n const { t } = useTranslation();\n return (\n <div className=\"bg-white p-5 rounded-md\">\n <h2 className=\"mb-3.5 text-sm font-bold\">{t('pages.checkout.cart_options_title')}</h2>\n <table className=\"table-fixed w-full border border-gray-200\">\n <thead>\n <tr className=\"border-b border-gray-200\">\n <th scope=\"col\" className=\"p-3 text-start text-sm\">\n {t('pages.order.option_name')}\n </th>\n <th scope=\"col\" className=\"p-3 text-sm\">\n {t('pages.order.option_content')}\n </th>\n <th scope=\"col\" className=\"p-3 rtl:text-left ltr:text-right text-sm\">\n {t('pages.products.price')}\n </th>\n </tr>\n </thead>\n <tbody>\n {options.flatMap((option) =>\n (option.options ?? []).map((value) => (\n <tr\n key={`${value.name}:${value.value}`}\n className=\"border-b last:border-b-0 border-gray-200\"\n >\n <td className=\"text-sm p-3\">{value.name} :</td>\n <td className=\"text-center p-3 font-medium text-xs\">{value.value}</td>\n <td className=\"rtl:text-start ltr:text-end p-3 font-medium text-xs\">\n <strong>{money(optionPrice(value.price), currency)}</strong>\n </td>\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n );\n}\n","import { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaRatingModal } from '@salla.sa/twilight-components-react/rating-modal';\nimport { SallaEditOrderButton } from '@salla.sa/twilight-components-react/edit-order-button';\nimport { SallaOrderBranch } from '@salla.sa/twilight-components-react/order-branch';\nimport { SallaOrderTotalsCard } from '@salla.sa/twilight-components-react/order-totals-card';\nimport { HookSlot, usePageConfig } from '../../../hooks';\nimport { useMoney } from '../../../hooks/useMoney';\nimport { useTranslation } from '../../../providers/I18nProvider';\nimport { useTwilight } from '../../../providers/twilight-context';\nimport type { OrderSinglePageProps } from '../types';\nimport { OrderHeader } from './single/OrderHeader';\nimport { OrderItemRow } from './single/OrderItemRow';\nimport { OrderActions } from './single/OrderActions';\nimport { OrderOptionsTable, RatingSection, ShippingHeader } from './single/OrderSections';\nimport type { TwigOrder } from './single/types';\n\n/** Twig's `inner_title` extras: the gift tag and the edit-order button. */\nfunction TitleRow({ order }: { order: OrderSinglePageProps['order'] }) {\n const { t } = useTranslation();\n return (\n <div className=\"flex justify-between items-center\">\n {order.type === 'buy_as_gift' || order.source?.type === 'buy_as_gift' ? (\n <span className=\"inline-block text-primary\">\n <i className=\"sicon-gift-sharing\"></i> {t('pages.orders.gift_tag')}\n </span>\n ) : (\n <span />\n )}\n <div className=\"flex items-center gap-3 flex-wrap\">\n <SallaEditOrderButton data-testid=\"store-order-edit-btn\" orderId={String(order.id)} />\n </div>\n </div>\n );\n}\n\nfunction RefundMessage({ message }: { message?: string }) {\n if (!message) return null;\n return (\n <div className=\"min-w-full rounded-md overflow-hidden\">\n <div className=\"bg-white flex items-center gap-1 rounded-md px-3 py-5 md:px-5\">\n <i className=\"sicon-refund h-6 w-6\"></i>\n <p className=\"font-medium text-base\" dangerouslySetInnerHTML={{ __html: message }} />\n </div>\n </div>\n );\n}\n\nfunction RatingNotices({ twig }: { twig: TwigOrder }) {\n const { t } = useTranslation();\n const { store } = useTwilight();\n const settings = store?.settings?.rating;\n const rated = !!twig.rating && !Array.isArray(twig.rating);\n\n return (\n <>\n {settings?.allow_update && rated && (\n <div className=\"flex items-start gap-2 bg-blue-50 border border-blue-200 text-blue-500 px-2 py-3 rounded-md text-sm\">\n <i className=\"sicon-info\"></i>\n <p>\n {t('pages.order.can_edit_or_delete_your_review_within')} {settings.update_period}{' '}\n {t('pages.order.days_since_added')}.\n </p>\n </div>\n )}\n {twig.can_rate && (\n <div className=\"rating-header gradient-bg center-between\">\n <div>\n <h2 className=\"font-bold mb-1\">{t('pages.order.order_rating_title')}</h2>\n <p className=\"text-sm\">{t('pages.order.order_rating_message')}</p>\n </div>\n <SallaButton\n data-testid=\"store-order-rate-btn\"\n color=\"light\"\n className=\"btn--rounded-full !text-primary\"\n onClick={() => window.salla?.event?.dispatch('rating::open')}\n >\n {t('pages.rating.rate')}\n </SallaButton>\n </div>\n )}\n </>\n );\n}\n\nfunction OrderRatings({ twig }: { twig: TwigOrder }) {\n const { t } = useTranslation();\n const { store } = useTwilight();\n const allowUpdate = !!store?.settings?.rating?.allow_update;\n const rating = Array.isArray(twig.rating) ? undefined : twig.rating;\n\n return (\n <>\n {rating?.store?.stars ? (\n <RatingSection\n title={t('pages.rating.rate_the_store')}\n rating={rating.store}\n type=\"store\"\n allowUpdate={allowUpdate}\n />\n ) : null}\n {rating?.shipping?.stars ? (\n <RatingSection\n title={t('pages.rating.rate_shipping')}\n rating={rating.shipping}\n type=\"shipping\"\n allowUpdate={allowUpdate}\n />\n ) : null}\n </>\n );\n}\n\n/**\n * The order page as the Twig storefront renders it (Raed's `pages/customer/orders/single.twig`).\n * The markup and the Twilight components read the order in Twig's shape (`componentsOrder`);\n * `order` supplies what that shape lacks and Twig computed on the server: the actions and the\n * receipt and payment URLs.\n */\nexport function OrderSinglePage({ order, page, componentsOrder }: OrderSinglePageProps) {\n // The order components read the order id from `salla.config.page.id`, which the router\n // only sets on client-side navigations — seed it so a direct load works too.\n usePageConfig(page);\n const { store } = useTwilight();\n const { format } = useMoney();\n const twig = (componentsOrder ?? { items: [] }) as unknown as TwigOrder;\n const paymentExpired =\n order.actions.payable && (order.payment?.pending_payment_ends_at ?? 0) === 0;\n const money = (amount: number, currency?: string) => format(amount, { currency });\n\n return (\n <div className=\"space-y-4\">\n <TitleRow order={order} />\n\n <HookSlot name=\"customer:orders.single.details.start\" />\n\n <OrderHeader order={order} links={twig.links} paymentExpired={paymentExpired} />\n\n {twig.is_pickable && <SallaOrderBranch data-testid=\"store-order-branch\" stackCards />}\n\n <RefundMessage message={order.refund_message} />\n\n <RatingNotices twig={twig} />\n\n <div className=\"overflow-hidden space-y-5\">\n <div className=\"shipping-orders\">\n <ShippingHeader twig={twig} order={order} />\n {order.items.map((item, index) => (\n <OrderItemRow\n key={item.id}\n item={item}\n twigItem={twig.items[index]}\n money={money}\n currency={order.currency}\n />\n ))}\n </div>\n\n {!!twig.options?.length && (\n <OrderOptionsTable options={twig.options} money={money} currency={order.currency} />\n )}\n </div>\n\n {componentsOrder && (\n <SallaOrderTotalsCard\n data-testid=\"store-order-totals\"\n order={JSON.stringify(componentsOrder)}\n />\n )}\n\n <OrderActions order={order} paymentExpired={paymentExpired} />\n\n <OrderRatings twig={twig} />\n\n <HookSlot name=\"customer:orders.single.details.end\" />\n\n {(twig.can_rate || store?.settings?.rating?.allow_update) && (\n <SallaRatingModal data-testid=\"store-order-rating-modal\" />\n )}\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/account/orders/OrdersPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,SAAS,UAAA,CAAW,EAAE,MAAA,EAAQ,KAAA,EAAM,EAAoB;AAC7D,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAE7B,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,mCAAA,EAAoC,CAAA;AAAA,IAClD,OAAO,MAAA,mBACN,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAY,mBAAA;AAAA,QAEZ,QAAQ,KAAA,EAAO,MAAA,GAAU,EAAE,MAAA,EAAQ,KAAA,CAAM,QAAO,GAAc;AAAA;AAAA,wBAGhE,IAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,oBAAA,EAAqB,WAAU,wBAAA,EAC9C,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,uBAAA,EAAwB,CAAA;AAAA,sBACrC,GAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,CAAA,CAAE,yBAAyB,CAAA,EAAE;AAAA,KAAA,EACnC,CAAA;AAAA,oBAEF,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,iCAAA,EAAkC;AAAA,GAAA,EACnD,CAAA;AAEJ","file":"OrdersPage-BEBXUZGC.js","sourcesContent":["import { SallaOrders } from '@salla.sa/twilight-components-react/orders';\nimport { HookSlot } from '../../../hooks';\nimport { useTranslation } from '../../../providers/I18nProvider';\nimport type { OrdersPageProps } from './types';\n\n/** The orders list as the Twig storefront renders it: `<salla-orders>` loads and shows it. */\nexport function OrdersPage({ orders, query }: OrdersPageProps) {\n const { t } = useTranslation();\n\n return (\n <>\n <HookSlot name=\"customer:orders.index.items.start\" />\n {orders.length ? (\n <SallaOrders\n data-testid=\"store-orders-list\"\n // Typed as status ids; the API also takes the `pending` slug the loader uses.\n params={query?.status ? ({ status: query.status } as never) : undefined}\n />\n ) : (\n <div data-testid=\"store-orders-empty\" className=\"no-content-placeholder\">\n <i className=\"sicon-packed-box icon\"></i>\n <p>{t('pages.orders.non_orders')}</p>\n </div>\n )}\n <HookSlot name=\"customer:orders.index.items.end\" />\n </>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/page/PageSingle.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAMO,SAAS,UAAA,CAAW,EAAE,IAAA,EAAK,EAAoB;AACpD,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,WAAA,EAAY;AAGpC,EAAA,MAAM,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAA,IAAI,CAAC,IAAA,CAAK,OAAA,EAAS,OAAO,EAAA;AAE1B,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,SAAA,EAAW,GAAG,CAAA;AAAA,EAC5C,CAAA,EAAG,CAAC,IAAA,CAAK,OAAO,CAAC,CAAA;AAEjB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAoB,SAAA,EAAU,WAAA,EAC7B,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,kBAAW,IAAA,EAAY,CAAA;AAAA,wBAEvB,KAAA,EAAA,EAAI,SAAA,EAAU,uBACb,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0FAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,yBAAA,EAA2B,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,MACnD,YAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAgB,uBAAA,EAAyB,EAAE,MAAA,EAAQ,YAAA,EAAa,EAAG,CAAA;AAAA,MAEnF,IAAA,CAAK,EAAA,oBACJ,GAAA,CAAC,aAAA,EAAA,EAAgC,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA,EAAG,IAAA,EAAM,MAAA,EAAA,EAA5C,WAA2D;AAAA,KAAA,EAEnF,CAAA,EACF;AAAA,GAAA,EAAA,EAbQ,KAAK,IAcf,CAAA;AAEJ","file":"PageSingle-P5PI65M5.js","sourcesContent":["import { useMemo } from 'react';\nimport { SallaComments } from '@salla.sa/twilight-components-react/comments';\nimport type { PageSingleProps } from './types';\nimport { Breadcrumb } from '../../components/common';\nimport { useComments } from '../../hooks/useComments';\n\nexport function PageSingle({ page }: PageSingleProps) {\n const { commentsKey } = useComments();\n\n // Clean content articles - matches app.js commonThings()\n const cleanContent = useMemo(() => {\n if (!page.content) return '';\n // Replace entities with regular spaces\n return page.content.replace(/ /g, ' ');\n }, [page.content]);\n\n return (\n <div key={page.slug} className=\"container\">\n <Breadcrumb page={page} />\n\n <div className=\"flex justify-center\">\n <div className=\"content content--single-page w-full lg:w-10/12 bg-white rounded p-6 lg:p-8 mt-4 lg:mt-12\">\n <h1 className=\"font-bold text-2xl mb-6\">{page.title}</h1>\n {cleanContent && (\n <div className=\"content-entry\" dangerouslySetInnerHTML={{ __html: cleanContent }} />\n )}\n {page.id && (\n <SallaComments key={commentsKey} itemId={Number(page.id)} type={'page' as any} />\n )}\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/product/ProductDetails.tsx"],"names":["Fragment"],"mappings":"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","file":"ProductDetails-PWS4VZWO.js","sourcesContent":["import { Fragment, useState } from 'react';\nimport { HookSlot } from '../../hooks/HookSlot';\nimport { HookName } from '../../types/hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { getActiveCurrency } from '../../api/client';\nimport { useWishlist } from '../../hooks/useWishlist';\nimport { CurrencySymbol, Link, Image } from '../common';\nimport { SallaRatingStars } from '@salla.sa/twilight-components-react/rating-stars';\nimport { SallaSocialShare } from '@salla.sa/twilight-components-react/social-share';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaInstallment } from '@salla.sa/twilight-components-react/installment';\nimport { SallaMetadata } from '@salla.sa/twilight-components-react/metadata';\nimport { formatSallaPlural } from '../../utils/salla-plural';\nimport type { Product } from '../../types';\n\ninterface ProductDetailsProps {\n product: Product;\n showTags?: boolean;\n}\n\nexport function ProductDetails({ product, showTags = true }: ProductDetailsProps) {\n const { t } = useTranslation();\n const wishlist = useWishlist();\n\n // Context for all product hooks - contains product data\n const productHookContext = { product };\n\n return (\n <>\n <HookSlot name={HookName.PRODUCT_DESCRIPTION_START} context={productHookContext} />\n\n {product.brand?.name && (\n <div className=\"product-brand mb-5 w-12\">\n <Link className=\"brand-logo\" to={product.brand.url || '#'} title={product.brand.name}>\n <Image\n className=\"max-h-full object-contain\"\n src={product.brand.logo}\n title={product.brand.name}\n alt={product.brand.name}\n aspectRatio=\"1/1\"\n />\n </Link>\n </div>\n )}\n\n <h1 className=\"text-xl md:text-2xl leading-10 font-bold mb-6 text-gray-800\">\n {product.name}\n </h1>\n\n {product.subtitle && (\n <h2 className=\"product-entry__sub-title text-sm text-gray-500 leading-6 mb-2.5\">\n {product.subtitle}\n </h2>\n )}\n\n {product.rating && (\n <SallaRatingStars value={product.rating.stars} reviews={product.rating.count} />\n )}\n\n {product.is_taxable && (\n <small className=\"color-grey\">{t('pages.products.tax_included', 'VAT Inclusive')}</small>\n )}\n\n <ProductPrice product={product} />\n\n <ProductDescription product={product} />\n\n {!!product.tags?.length && showTags && (\n <div className=\"mb-3\">\n {product.tags.map((tag, index) => (\n <Fragment key={tag.name}>\n <Link\n to={tag.url}\n className=\"rtl:ml-2 ltr:mr-2 inline-flex text-gray-500 hover:text-primary underline text-sm mb-1\"\n >\n {tag.name}\n </Link>\n {index < product.tags!.length - 1 && ','}\n </Fragment>\n ))}\n </div>\n )}\n\n <div className=\"flex rtl:space-x-reverse space-x-3\">\n <SallaSocialShare className=\"inline-flex mb-5\" aria-label=\"social share\" />\n\n <SallaButton\n className={`btn--wishlist animated hidden sm:inline-flex ${wishlist.has(Number(product.id)) ? 'is-added' : 'not-added'}`}\n data-id={product.id}\n onClick={() => window.salla?.wishlist.toggle(product.id)}\n shape=\"icon\"\n fill=\"outline\"\n color=\"light\"\n ariaLabel=\"add to wishlist\"\n >\n <i className=\"sicon-heart\"></i>\n </SallaButton>\n </div>\n\n <ProductQuantityInfo product={product} />\n\n {product.sku && (\n <div className=\"mb-4 flex justify-between sm:grid sm:grid-cols-3 bg-white rounded-md px-4 py-2\">\n <div className=\"flex items-center\">\n <i className=\"sicon-barcode mx-1\"></i>\n {t('pages.products.sku', 'SKU')}\n </div>\n <div className=\"text-unicode\">{product.sku}</div>\n </div>\n )}\n\n {product.barcode && (\n <div className=\"mb-4 flex justify-between sm:grid sm:grid-cols-3 bg-white rounded-md px-4 py-2\">\n <div className=\"flex items-center\">\n <i className=\"sicon-barcode mx-1\"></i>\n {t('pages.products.barcode')}\n </div>\n <div className=\"text-unicode\">{product.barcode}</div>\n </div>\n )}\n\n {product.show_availability && (\n <section className=\"bg-white p-5 rounded-md mb-5 last:mb-0\">\n <div className=\"center-between\">\n <label className=\"flex items-center text-base\">\n <span className=\"sicon-location rtl:ml-1 ltr:mr-1\"></span>\n <span className=\"inline-block\">\n {t('pages.products.availability', 'Availability')}\n </span>\n </label>\n <div className=\"mt-1 sm:mt-0 sm:col-span-2 text-end\">\n <div className=\"flex rtl:space-x-reverse space-x-3\">\n <a\n href=\"#!\"\n onClick={() =>\n window.salla?.event?.dispatch('scopes::open', {\n mode: 'availability',\n product_id: String(product.id),\n })\n }\n className=\"group text-primary flex items-center justify-center\"\n >\n <span>{t('pages.products.select_branch', 'Select Branch')}</span>\n <span className=\"sicon-keyboard_arrow_left mr-2 transition-all group-hover:-translate-x-1\"></span>\n </a>\n </div>\n </div>\n </div>\n </section>\n )}\n\n <HookSlot name={HookName.PRODUCT_DESCRIPTION} context={productHookContext} />\n\n <SallaInstallment\n price={String(\n typeof product.base_currency_price === 'object'\n ? product.base_currency_price.amount\n : product.base_currency_price\n )}\n />\n\n {product.has_metadata && <SallaMetadata />}\n </>\n );\n}\n\nfunction ProductPrice({ product }: { product: Product }) {\n const { t } = useTranslation();\n // The API converts the amounts but still labels them in the store's own currency.\n const priceCurrency = getActiveCurrency(product.currency);\n\n return (\n <div className=\"flex whitespace-nowrap gap-4 items-center\">\n <div\n className={`${product.is_on_sale ? '' : 'hidden'} space-x-2 rtl:space-x-reverse whitespace-nowrap`}\n >\n <p className=\"text-red-800 font-bold text-xl inline-block\">\n {product.sale_price} <CurrencySymbol currency={priceCurrency} />\n </p>\n <span className=\"text-gray-500 line-through\">\n {product.regular_price} <CurrencySymbol currency={priceCurrency} />\n </span>\n </div>\n <div className={`gap-4 ${product.is_on_sale ? 'hidden' : 'flex'}`}>\n {product.starting_price && (\n <span>{t('pages.products.starting_price', 'Starting from')}</span>\n )}\n <p className=\"font-bold text-xl inline-block\">\n {product.starting_price ?? product.price} <CurrencySymbol currency={priceCurrency} />\n </p>\n </div>\n </div>\n );\n}\n\n/** An `<iframe>` start tag; quoted values may hold `>`. */\nconst IFRAME_TAG = /<iframe\\b(?:[^>\"']|\"[^\"]*\"|'[^']*')*>/gi;\n\n/** Embedded players (YouTube, Vimeo, maps) load only when scrolled near, unless the merchant set `loading`. */\nfunction lazyIframes(html: string): string {\n return html.replace(IFRAME_TAG, (tag) =>\n /\\sloading\\s*=/i.test(tag.replace(/\"[^\"]*\"|'[^']*'/g, '\"\"'))\n ? tag\n : tag.replace(/^<iframe/i, '<iframe loading=\"lazy\"')\n );\n}\n\nfunction ProductDescription({ product }: { product: Product }) {\n const { t } = useTranslation();\n const [isExpanded, setIsExpanded] = useState(false);\n\n if (!product.description) return null;\n\n const description = lazyIframes(product.description.replace(/ /g, '\\n'));\n\n if (product.has_read_more) {\n return (\n <div className=\"product__description p-2 px-5 sm:p-1 leading-7 mb-3\">\n <article\n className=\"article article--main relative leading-8 overflow-hidden transition-all duration-300 py-4\"\n id=\"more-content\"\n style={{ maxHeight: isExpanded ? 'none' : '5.25rem' }}\n dangerouslySetInnerHTML={{ __html: description }}\n />\n <button\n type=\"button\"\n id=\"btn-show-more\"\n className={`link--primary inline-block mt-2 cursor-pointer bg-transparent border-0 p-0 ${isExpanded ? 'is-expanded' : ''}`}\n onClick={() => setIsExpanded(true)}\n >\n {t('pages.products.read_more', 'Read more')}\n </button>\n </div>\n );\n }\n\n return (\n <div className=\"product__description p-2 px-5 sm:p-1 leading-7 mb-3\">\n <article className=\"article--main pb-1\" dangerouslySetInnerHTML={{ __html: description }} />\n </div>\n );\n}\n\nfunction ProductQuantityInfo({ product }: { product: Product }) {\n const { t } = useTranslation();\n if (product.sold_quantity == null && !product.can_show_remained_quantity) {\n return null;\n }\n\n return (\n <div className=\"bg-white py-2.5 mb-5 rounded-md inline-flex text-sm\">\n {(product.sold_quantity ?? 0) > 0 && (\n <div className=\"px-4 !text-red-800\">\n <i className=\"sicon-fire rtl:ml-1.5 ltr:mr-1.5\"></i> {t('pages.products.sold', 'Sold')}{' '}\n {/* Salla ships `sold_times` in Laravel plural format; resolve it for the count. */}\n <span>{formatSallaPlural(t('pages.products.sold_times'), product.sold_quantity!)}</span>\n </div>\n )}\n {product.can_show_remained_quantity && (\n <div className=\"px-4 rtl:even:border-r ltr:even:border-l even:border-gray-200\">\n <i className=\"!text-red-800 sicon-box-bankers rtl:ml-1.5 ltr:mr-1.5\"></i>\n {t('pages.products.remained', 'Remained')}: {product.quantity}\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/account/profile/ProfilePage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,SAAS,YAAY,MAAA,EAA0B;AACpD,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,OAAA,EAAQ;AAE/B,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,wBAAA,EAAyB,CAAA;AAAA,oBAExC,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,6BAAA,EAA8B,CAAA;AAAA,wBAE5C,gBAAA,EAAA,EAAiB,CAAA;AAAA,oBAElB,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,2BAAA,EAA4B,CAAA;AAAA,wBAE1C,WAAA,EAAA,EAAY,CAAA;AAAA,oBAEb,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACE,GAAI,MAAM,WAAA,EAAa,qBAAA,GAAwB,EAAE,YAAA,EAAc,IAAA,KAAS,EAAC;AAAA,QAC1E,SAAA,EAAU;AAAA;AAAA,KACZ;AAAA,oBAEA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,sBAAA,EAAuB;AAAA,GAAA,EACxC,CAAA;AAEJ","file":"ProfilePage-25NC72CQ.js","sourcesContent":["import { SallaUserProfile } from '@salla.sa/twilight-components-react/user-profile';\nimport { SallaVerify } from '@salla.sa/twilight-components-react/verify';\nimport { SallaUserSettings } from '@salla.sa/twilight-components-react/user-settings';\nimport { HookSlot, useUser } from '../../../hooks';\nimport type { ProfilePageProps } from './types';\n\nexport function ProfilePage(_props: ProfilePageProps) {\n const { data: user } = useUser();\n\n return (\n <>\n <HookSlot name=\"customer:profile.start\" />\n\n <HookSlot name=\"customer:profile.form.start\" />\n\n <SallaUserProfile />\n\n <HookSlot name=\"customer:profile.form.end\" />\n\n <SallaVerify />\n\n <SallaUserSettings\n {...(user?.preferences?.notifications_enabled ? { isNotifiable: true } : {})}\n className=\"mt-10 block\"\n />\n\n <HookSlot name=\"customer:profile.end\" />\n </>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/common/RenderWhenVisible.tsx"],"names":["RenderWhenVisible"],"mappings":";;;;AAEA,SAAS,eAAA,CAAgB,EAAE,MAAA,EAAO,EAAuB;AACvD,EAAA,uBAAO,GAAA,CAAC,SAAI,KAAA,EAAO,EAAE,WAAW,MAAA,EAAO,EAAG,WAAU,mCAAA,EAAoC,CAAA;AAC1F;AAGA,SAAS,WAAA,CAAY,EAAE,OAAA,EAAQ,EAA4C;AACzE,EAAA,SAAA,CAAU,MAAM,OAAA,CAAQ,IAAI,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACxC,EAAA,OAAO,IAAA;AACT;AA0BO,IAAM,iBAAA,GAAoB,IAAA,CAAK,SAASA,kBAAAA,CAAkB;AAAA,EAC/D,QAAA;AAAA,EACA,UAAA,GAAa,MAAA;AAAA,EACb,WAAA;AAAA,EACA,SAAA;AAAA,EACA,EAAA;AAAA,EACA,eAAA,GAAkB,OAAA;AAAA,EAClB,aAAA,GAAgB;AAClB,CAAA,EAA2B;AACzB,EAAA,MAAM,GAAA,GAAM,OAAoB,IAAI,CAAA;AACpC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,aAAa,CAAA;AACpD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,iBAAiB,OAAA,EAAS;AAC9B,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,EAAA,EAAI;AAET,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACnB,CAAC,OAAA,KAAY;AAIX,QAAA,IAAI,QAAQ,IAAA,CAAK,CAAC,KAAA,KAAU,KAAA,CAAM,cAAc,CAAA,EAAG;AACjD,UAAA,UAAA,CAAW,IAAI,CAAA;AACf,UAAA,QAAA,CAAS,UAAA,EAAW;AAAA,QACtB;AAAA,MACF,CAAA;AAAA,MACA,EAAE,UAAA;AAAW,KACf;AAEA,IAAA,QAAA,CAAS,QAAQ,EAAE,CAAA;AAEnB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,aAAA,EAAe,OAAA,EAAS,UAAU,CAAC,CAAA;AAEvC,EAAA,MAAM,QAAA,GAAW,WAAA,oBAAe,GAAA,CAAC,eAAA,EAAA,EAAgB,QAAQ,eAAA,EAAiB,CAAA;AAE1E,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,CAAC,OAAA,GAAU,GAAA,GAAM,MAAA;AAAA,MACtB,SAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA,EAAO,EAAE,SAAA,EAAW,OAAA,GAAU,SAAY,eAAA,EAAgB;AAAA,MAEzD,QAAA,EAAA,OAAA,mBACC,IAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EACP,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACD,GAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAS,UAAA,EAAY;AAAA,OAAA,EACpC,CAAA,GAEA;AAAA;AAAA,GAEJ;AAEJ,CAAC","file":"RenderWhenVisible-F44J5MMG.js","sourcesContent":["import { memo, useState, useEffect, useRef, Suspense, type ReactNode } from 'react';\n\nfunction DefaultSkeleton({ height }: { height: string }) {\n return <div style={{ minHeight: height }} className=\"animate-pulse rounded bg-gray-100\" />;\n}\n\n/** Sibling of the children inside Suspense: its effect only runs once the boundary resolves. */\nfunction MarkMounted({ onMount }: { onMount: (mounted: boolean) => void }) {\n useEffect(() => onMount(true), [onMount]);\n return null;\n}\n\nexport interface RenderWhenVisibleProps {\n children: ReactNode;\n rootMargin?: string;\n placeholder?: ReactNode;\n className?: string;\n id?: string;\n estimatedHeight?: string;\n renderOnMount?: boolean;\n}\n\n/**\n * RenderWhenVisible — defers mounting children until the container enters the viewport.\n *\n * Children are NOT in the React tree at all until the Intersection Observer fires,\n * so no effects, API calls, or renders happen for off-screen sections.\n * Once rendered, children stay mounted permanently (no re-unmount on scroll away).\n *\n * The `estimatedHeight` prop prevents the zero-height collapse problem: without it\n * every unrendered section stacks at the top with 0px height, causing all observers\n * to fire at once on mount. It applies as a min-height until the children have\n * actually committed — through the Suspense window too, since a custom placeholder\n * may be shorter than the estimate. After that the section's height is owned by its\n * content, so shorter blocks don't leave reserved dead space below them.\n */\nexport const RenderWhenVisible = memo(function RenderWhenVisible({\n children,\n rootMargin = '50px',\n placeholder,\n className,\n id,\n estimatedHeight = '400px',\n renderOnMount = false,\n}: RenderWhenVisibleProps) {\n const ref = useRef<HTMLElement>(null);\n const [visible, setVisible] = useState(renderOnMount);\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n if (renderOnMount || visible) return;\n const el = ref.current;\n if (!el) return;\n\n const observer = new IntersectionObserver(\n (entries) => {\n // A busy main thread (e.g. mounting a page while the user is already\n // scrolling) batches entries; reading only the first drops a\n // [false, true] pair and the observer never fires again.\n if (entries.some((entry) => entry.isIntersecting)) {\n setVisible(true);\n observer.disconnect();\n }\n },\n { rootMargin }\n );\n\n observer.observe(el);\n\n return () => observer.disconnect();\n }, [renderOnMount, visible, rootMargin]);\n\n const fallback = placeholder ?? <DefaultSkeleton height={estimatedHeight} />;\n\n return (\n <section\n ref={!visible ? ref : undefined}\n className={className}\n id={id}\n style={{ minHeight: mounted ? undefined : estimatedHeight }}\n >\n {visible ? (\n <Suspense fallback={fallback}>\n {children}\n <MarkMounted onMount={setMounted} />\n </Suspense>\n ) : (\n fallback\n )}\n </section>\n );\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/analytics/gtm.ts","../src/components/cart/SeoCartWidget.tsx"],"names":[],"mappings":"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","file":"SeoCartWidget-A7MCWGQ2.js","sourcesContent":["import type { Cart, CartItem } from '../../types';\n\n// ─── Payload Types ───────────────────────────────────────────────────────────\n\nexport interface GtmCheckoutProduct {\n id: number;\n name: string;\n price: number;\n quantity: number;\n}\n\nexport interface GtmCheckoutEvent {\n event: 'checkout';\n ecommerce: {\n checkout: {\n actionField: { step: 1 | 2 | 3 };\n products: GtmCheckoutProduct[];\n cart_total: number;\n currency: string;\n };\n };\n}\n\n// ─── Helpers ─────────────────────────────────────────────────────────────────\n\nfunction getPriceAmount(value: CartItem['price']): number {\n if (typeof value === 'number') return value;\n return value.amount;\n}\n\nfunction getTotalAmount(value: Cart['total']): number {\n if (typeof value === 'number') return value;\n return parseFloat(value) || 0;\n}\n\n/**\n * Maps `Cart.items` to the GTM product array format.\n *\n * Only available items are included — mirrors PHP `$cartService->getAvailableItems()`.\n */\nexport function mapCartItemsToProducts(items: CartItem[]): GtmCheckoutProduct[] {\n return items\n .filter((item) => item.is_available)\n .map((item) => ({\n id: item.product_id,\n name: item.product_name,\n price: getPriceAmount(item.price),\n quantity: item.quantity,\n }));\n}\n\n// ─── Main Utility ─────────────────────────────────────────────────────────────\n\n/**\n * Pushes a GTM `checkout` event to `window.dataLayer`.\n *\n * Safe to call in SSR environments — guards against `typeof window`.\n * Initialises `window.dataLayer` if GTM hasn't done so yet.\n *\n * @param step Checkout funnel step (1 = cart, 2 = shipping, 3 = payment)\n * @param cart Current cart data from the Twilight loader\n * @param currencyCode ISO 4217 currency code, e.g. \"SAR\"\n */\nexport function pushCheckoutEvent(step: 1 | 2 | 3, cart: Cart, currencyCode: string): void {\n if (typeof window === 'undefined') return;\n\n window.dataLayer = window.dataLayer ?? [];\n\n const payload: GtmCheckoutEvent = {\n event: 'checkout',\n ecommerce: {\n checkout: {\n actionField: { step },\n products: mapCartItemsToProducts(cart.items),\n cart_total: getTotalAmount(cart.total),\n currency: currencyCode,\n },\n },\n };\n\n window.dataLayer.push(payload);\n}\n","import { useEffect } from 'react';\nimport { useTwilight } from '../../providers/TwilightProvider';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { Cart } from '../../types';\nimport { pushCheckoutEvent } from '../../lib/analytics/gtm';\nimport { onSallaEvent } from '../../utils/sdk-helpers';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface SeoCartWidgetProps {\n /**\n * Cart data from the TanStack Router loader — no extra fetch needed.\n */\n cart: Cart;\n /**\n * Current checkout funnel step.\n * Defaults to `1` (cart view) — CartPage always passes this default.\n * The widget internally listens to Salla SDK events to promote to 2 / 3.\n */\n step?: 1 | 2 | 3;\n}\n\n// ─── Page title translation keys (mirrors PHP SeoCartWidget::$pageTitle) ─────\n\n/**\n * Matches the PHP backend exactly:\n * ```php\n * protected $pageTitle = [\n * self::STEP_CART => 'common.titles.cart',\n * self::STEP_SHIPPING => 'common.titles.shipping',\n * self::STEP_PAYMENT => 'common.titles.checkout',\n * ];\n * ```\n */\nconst PAGE_TITLE_KEYS: Record<1 | 2 | 3, string> = {\n 1: 'common.titles.cart',\n 2: 'common.titles.shipping',\n 3: 'common.titles.checkout',\n};\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * SeoCartWidget — Null-rendering analytics side-effect component.\n *\n * Responsibilities:\n * 1. Fires a GTM `checkout` event (step 1) on cart page load.\n * 2. Listens to Salla SDK checkout overlay events to fire steps 2 & 3.\n * 3. Updates `document.title` to reflect the cart context.\n *\n * Architecture:\n * - Lives in `theme-engine` so all themes using the engine get GTM tracking.\n * - Mounted directly inside `CartPage`, which already has loader data.\n * - `window.dataLayer` must be initialised by the store's GTM embed snippet;\n * the widget initialises it as a safe-guard but does NOT inject GTM itself.\n * - Must be mounted inside `<TwilightProvider>` (reads `currency` from context).\n *\n * @example\n * // In CartPage:\n * <SeoCartWidget cart={cart} />\n */\nexport function SeoCartWidget({ cart, step = 1 }: SeoCartWidgetProps) {\n const { store, currency } = useTwilight();\n const { t } = useTranslation();\n const currencyCode = currency?.code ?? 'SAR';\n\n // ── Fire GTM checkout event for step 1 (or whichever step is passed) ────────\n useEffect(() => {\n pushCheckoutEvent(step, cart, currencyCode);\n // Re-fire if the cart id, contents, or currency changes\n }, [step, cart, currencyCode]);\n\n // ── Subscribe to Salla SDK checkout step events (steps 2 & 3) ──────────────\n // Fires GTM events when the user advances through the checkout overlay.\n useEffect(() => {\n const onShipping = () => pushCheckoutEvent(2, cart, currencyCode);\n const onPayment = () => pushCheckoutEvent(3, cart, currencyCode);\n\n const offShipping = onSallaEvent('checkout::step.shipping', onShipping);\n const offPayment = onSallaEvent('checkout::step.payment', onPayment);\n\n return () => {\n offShipping();\n offPayment();\n };\n }, [cart, currencyCode]);\n\n // ── Update document title — mirrors PHP SeoCartWidget::$pageTitle ───────────\n // Step 1 → 'common.titles.cart' (e.g. \"Cart\")\n // Step 2 → 'common.titles.shipping' (e.g. \"Shipping\")\n // Step 3 → 'common.titles.checkout' (e.g. \"Checkout\")\n useEffect(() => {\n const storeTitle = store.meta?.title || store.name;\n const stepTitle = t(PAGE_TITLE_KEYS[step], PAGE_TITLE_KEYS[step]);\n document.title = storeTitle ? `${stepTitle} - ${storeTitle}` : stepTitle;\n }, [step, store.meta?.title, store.name, t]);\n\n return null;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/account/settings/SettingsPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,SAAS,aAAa,MAAA,EAA2B;AACtD,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,yBAAA,EAA0B,CAAA;AAAA,wBACxC,iBAAA,EAAA,EAAkB,CAAA;AAAA,oBACnB,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,uBAAA,EAAwB;AAAA,GAAA,EACzC,CAAA;AAEJ","file":"SettingsPage-6W32UA32.js","sourcesContent":["import { SallaUserSettings } from '@salla.sa/twilight-components-react/user-settings';\nimport { HookSlot } from '../../../hooks';\nimport type { SettingsPageProps } from './types';\n\nexport function SettingsPage(_props: SettingsPageProps) {\n return (\n <>\n <HookSlot name=\"customer:settings.start\" />\n <SallaUserSettings />\n <HookSlot name=\"customer:settings.end\" />\n </>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/testimonials/TestimonialsPage.tsx"],"names":[],"mappings":"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","file":"TestimonialsPage-MDYX65Z3.js","sourcesContent":["import { useState, useEffect } from 'react';\nimport { SallaComments } from '@salla.sa/twilight-components-react/comments';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useComments } from '../../hooks/useComments';\nimport type { TestimonialsPageProps } from './types';\nimport { Breadcrumb } from '../../components/common';\n\nconst buildSortOptions = (t: (key: string, fb: string) => string) => [\n { id: 'latest', label: t('pages.testimonials.sort_by_date_desc', 'Latest') },\n { id: 'oldest', label: t('pages.testimonials.sort_by_date_asc', 'Oldest') },\n {\n id: 'top_rating',\n label: t('pages.testimonials.sort_by_rating_desc', 'Top rated'),\n },\n {\n id: 'bottom_rating',\n label: t('pages.testimonials.sort_by_rating_asc', 'Low rated'),\n },\n];\n\nexport function TestimonialsPage({ page }: TestimonialsPageProps) {\n const { t } = useTranslation();\n const { commentsKey } = useComments();\n\n // Sync sort state with URL\n const [selectedSort, setSelectedSort] = useState(() => {\n const params = new URLSearchParams(window.location.search);\n return params.get('sort') || 'latest';\n });\n\n // Update URL when sort changes\n useEffect(() => {\n const url = new URL(window.location.href);\n url.searchParams.set('sort', selectedSort);\n window.history.replaceState(null, '', url.toString());\n }, [selectedSort]);\n\n return (\n <div className=\"container\">\n <Breadcrumb page={page} />\n\n <div className=\"flex justify-center\">\n <div className=\"w-full lg:w-10/12 bg-white rounded p-6 lg:p-8 mt-4 lg:mt-12\">\n <div className=\"mb-4 sm:mb-6 flex justify-between items-center\">\n <h1 className=\"font-bold text-2xl\">{page.title}</h1>\n <div className=\"flex items-center\">\n <label\n className=\"hidden sm:block rtl:ml-3 ltr:mr-3 whitespace-nowrap\"\n htmlFor=\"testimonials-filter\"\n >\n {t('pages.categories.sorting', 'Sort by')}\n </label>\n <select\n id=\"testimonials-filter\"\n className=\"form-input pt-0 pb-1 rtl:pl-10 ltr:pr-10 bg-white text-gray-900\"\n value={selectedSort}\n onChange={(e) => setSelectedSort(e.target.value)}\n >\n {buildSortOptions(t).map((opt) => (\n <option key={opt.id} value={opt.id}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n </div>\n\n {/* Key prop forces reload when sort changes or new comment added */}\n <SallaComments\n key={`${selectedSort}-${commentsKey}`}\n testimonials\n // drifted wrapper types require itemId; testimonials mode has none\n itemId={undefined as never}\n sort={selectedSort as any}\n />\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/thank-you/ThankYouPage.tsx"],"names":[],"mappings":"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","file":"ThankYouPage-AFJCN3AH.js","sourcesContent":["import { useState, useEffect } from 'react';\nimport { useCopyToClipboard } from '@uidotdev/usehooks';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaNextOrderCoupon } from '@salla.sa/twilight-components-react/next-order-coupon';\nimport { SallaOrderBranch } from '@salla.sa/twilight-components-react/order-branch';\nimport { Link } from '../../components/common';\nimport { HookSlot, usePageConfig } from '../../hooks';\nimport type { ThankYouPageProps } from './types';\nimport { useTwilight } from '../../providers/twilight-context';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport confettiImage from './confetti.svg';\nimport { onSallaEvent } from '../../utils/sdk-helpers';\n\nconst EMPTY_MESSAGES: NonNullable<ThankYouPageProps['messages']> = [];\n\nexport function ThankYouPage({\n page,\n order,\n thank_you_title,\n messages = EMPTY_MESSAGES,\n}: ThankYouPageProps) {\n const { store } = useTwilight();\n const { t } = useTranslation();\n // `<salla-order-branch>` reads the order id from `salla.config.page.id` (see OrderSinglePage).\n usePageConfig(page);\n const title =\n thank_you_title ?? t('pages.thank_you.hero_title', 'Thank you for shopping with us! 😊');\n const [invoiceSent, setInvoiceSent] = useState(order?.email_sent ?? false);\n const [invoiceMessage, setInvoiceMessage] = useState<string | null>(null);\n const [, copyToClipboard] = useCopyToClipboard();\n\n // Listen for invoice sent event (matches thankyou.js)\n useEffect(() => {\n const handleInvoiceSent = (res: { data?: { message?: string } }) => {\n setInvoiceMessage(\n res.data?.message || t('pages.thank_you.invoice_sent_success', 'Invoice sent successfully')\n );\n setInvoiceSent(true);\n };\n const listener = handleInvoiceSent as (...args: unknown[]) => void;\n\n return onSallaEvent('order::invoice.sent', listener);\n }, [t]);\n\n return (\n <>\n <HookSlot name=\"thank-you:start\" />\n\n <div className=\"h-52 -mb-52 w-full bg-primary rtl:right-0 ltr:left-0 relative -z-1\">\n <svg\n className=\"text-primary absolute top-full\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 1440 320\"\n >\n <path\n className=\"fill-current\"\n fillOpacity=\"1\"\n d=\"M0,96L120,112C240,128,480,160,720,165.3C960,171,1200,149,1320,138.7L1440,128L1440,0L1320,0C1200,0,960,0,720,0C480,0,240,0,120,0L0,0Z\"\n ></path>\n </svg>\n </div>\n\n <div className=\"container mb-20\">\n <nav className=\"w-full py-5\">\n <ol className=\"list-reset flex items-center text-sm text-primary-reverse\">\n <li>\n <Link to=\"/\" className=\"fix-align text-primary-reverse\">\n {t('common.titles.home', 'Home')}\n </Link>\n </li>\n <li>\n <i className=\"sicon-keyboard_arrow_left mx-2\"></i>\n </li>\n <li>\n <span className=\"fix-align\">{title}</span>\n </li>\n </ol>\n </nav>\n\n <div className=\"bg-white p-4 md:p-8 rounded-md mb-6 md:mb-8\">\n <div className=\"flex flex-col items-center pt-16 pb-10\">\n <img src={confettiImage} alt={title} className=\"size-[140px] mb-8\" />\n <h1 className=\"font-bold text-lg mb-2.5\">{title}</h1>\n <p className=\"text-gray-500 max-w-xs text-center text-sm leading-6 mb-2.5\">\n {t(\n 'pages.thank_you.description',\n 'Your order has been received and will be reviewed and confirmed shortly.'\n )}\n </p>\n {order && (\n <>\n <p className=\"text-gray-500 max-w-xs text-center text-sm leading-6 mb-6\">\n {t('pages.thank_you.order_id_label', 'Order ID')}{' '}\n <SallaButton\n className=\"relative\"\n onClick={() => copyToClipboard(String(order.reference_id))}\n color=\"dark\"\n shape=\"link\"\n >\n <span>#{order.reference_id}</span>\n <i className=\"copy-icon sicon-swap-stroke pointer-events-none rtl:mr-1 ltr:ml-1\"></i>\n </SallaButton>\n </p>\n <Link\n to={`/account/orders/${order.id}`}\n className=\"bg-primary text-white text-sm font-bold h-10 px-4 rounded-md flex items-center justify-center gap-1.5\"\n >\n <i className=\"sicon-newspaper rtl:ml-1 ltr:mr-1\"></i>\n {t('pages.thank_you.view_order_details', 'View Order Details')}\n </Link>\n </>\n )}\n </div>\n\n {(order as { instructions?: string } | undefined)?.instructions && (\n <article\n className=\"article article--main article--small text-center\"\n dangerouslySetInnerHTML={{\n __html: (order as { instructions?: string }).instructions ?? '',\n }}\n />\n )}\n\n {messages.map((message) => (\n <div\n key={message}\n className=\"flex flex-col items-center pt-1 pb-10 justify-start rtl:space-x-reverse space-x-2\"\n >\n <span className=\"font-bold\">{message}</span>\n </div>\n ))}\n\n <HookSlot name=\"thank-you:items.start\" />\n <HookSlot name=\"thank-you:items.end\" />\n </div>\n\n {/* Next-order coupon and pickup branch — each renders nothing when it doesn't apply */}\n <SallaNextOrderCoupon />\n <SallaOrderBranch />\n\n <div className=\"lg:flex rtl:space-x-reverse lg:space-x-8\">\n {invoiceSent ? (\n <div className=\"duration-500 hover:shadow-default flex-1 bg-white p-8 rounded-md mb-6 md:mb-10 flex flex-col items-center justify-center\">\n <div className=\"bg-gray-100 rounded-icon w-12 h-12 mb-2.5\">\n <i className=\"sicon-newspaper-alt text-xl\"></i>\n </div>\n <p className=\"text-sm mb-2.5\">\n {t('pages.thank_you.email_sent_to', 'Email sent to')}\n </p>\n <b className=\"text-sm\">{order?.customer?.email}</b>\n {invoiceMessage && <p className=\"text-sm text-green-600 mt-2\">{invoiceMessage}</p>}\n </div>\n ) : (\n <div\n id=\"invoice-form\"\n className={invoiceMessage ? 'thankyou-block sent' : 'thankyou-block'}\n >\n {invoiceMessage ? (\n <div className=\"text-center\">\n <div className=\"bg-gray-100 rounded-icon w-12 h-12 mb-2.5 mx-auto\">\n <i className=\"sicon-newspaper-alt text-xl\"></i>\n </div>\n <p className=\"text-sm\" dangerouslySetInnerHTML={{ __html: invoiceMessage }} />\n </div>\n ) : (\n <>\n <div className=\"bg-gray-100 rounded-icon w-12 h-12 mb-2.5\">\n <i className=\"sicon-newspaper-alt text-xl\"></i>\n </div>\n <p className=\"text-sm mb-2.5\">\n {t('pages.thank_you.resend_invoice', 'Resend invoice email')}\n </p>\n <form\n onSubmit={(e) => {\n e.preventDefault();\n window.salla?.form.onSubmit('order.sendInvoice', e);\n }}\n >\n <div className=\"flex max-w-3xl w-full\">\n <input\n type=\"email\"\n className=\"form-input rtl:rounded-l-none ltr:rounded-r-none rtl:border-l-0 ltr:border-r-0 !w-[160px] sm:!w-[220px]\"\n placeholder=\"your@email.com\"\n required\n name=\"email\"\n />\n <SallaButton\n type=\"submit\"\n loaderPosition=\"center\"\n className=\"rtl:rounded-r-none ltr:rounded-l-none lg:w-24 h-10\"\n >\n <span className=\"btn__text\">{t('pages.thank_you.send', 'Send')}</span>\n </SallaButton>\n </div>\n </form>\n </>\n )}\n </div>\n )}\n\n <div className=\"thankyou-block\">\n <div className=\"bg-gray-100 rounded-icon w-12 h-12 mb-2.5\">\n <i className=\"sicon-mail-letter text-xl\"></i>\n </div>\n <p className=\"text-sm mb-2.5\">{t('pages.thank_you.support', 'Support')}</p>\n\n <div className=\"flex rtl:space-x-reverse space-x-6\">\n {store.contacts.mobile && (\n <div className=\"text-sm unicode flex items-center\">\n <i className=\"sicon-phone\"></i>\n <a\n href={`tel:${store.contacts.mobile}`}\n className=\"hover:text-primary transition\"\n >\n <b className=\"unicode mx-1.5\">{store.contacts.mobile}</b>\n </a>\n </div>\n )}\n\n {store.contacts.whatsapp && (\n <div className=\"text-sm unicode flex items-center\">\n <i className=\"sicon-whatsapp\"></i>\n <a\n href={`https://wa.me/${store.contacts.whatsapp.replace(/[\\s+-]/g, '')}`}\n className=\"hover:text-primary transition\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <b className=\"unicode mx-1.5\">{store.contacts.whatsapp}</b>\n </a>\n </div>\n )}\n </div>\n </div>\n </div>\n\n <HookSlot name=\"thank-you:end\" />\n </div>\n </>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/account/wallet/WalletPage.tsx"],"names":["TransactionRow"],"mappings":"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","file":"WalletPage-S6S5ZV3A.js","sourcesContent":["import { memo, useCallback, useRef } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { wallet } from '../../../api/wallet';\nimport type { TransactionItem } from '../../../api/wallet';\nimport { HookSlot, useMoney } from '../../../hooks';\nimport { useTranslation } from '../../../providers/I18nProvider';\nimport type { WalletPageProps } from './types';\nimport { NoContent } from '../../../components/common';\n\nconst TransactionRow = memo(function TransactionRow({\n transaction,\n}: {\n transaction: TransactionItem;\n}) {\n const { t, locale } = useTranslation();\n const { format: formatMoney } = useMoney();\n\n const formatTimestamp = (ts: number) => {\n if (!ts) return '';\n return new Date(ts * 1000).toLocaleDateString(locale, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n });\n };\n\n const actionTypeClass =\n transaction.action_type === 'cashback'\n ? 's-wallet-table-transaction-status-cashback'\n : transaction.action_type === 'refund'\n ? 's-wallet-table-transaction-status-refund'\n : transaction.action_type === 'purchase_by_wallet'\n ? 's-wallet-table-transaction-status-purchase'\n : '';\n\n return (\n <tr className=\"s-wallet-table-tbody-tr s-wallet-table-tbody-tr-shadow animated\">\n <td className=\"s-wallet-table-tbody-tr-td\">\n <div className=\"s-wallet-table-tbody-tr-td-content\">\n <span className=\"s-wallet-mobile-title\">{t('pages.wallet.transaction_number')}:</span>\n {transaction.id && <span className=\"hidden md:inline-block\">#{transaction.id}</span>}\n <div className=\"flex items-center md:hidden\">\n {transaction.id && <span>#{transaction.id}</span>}\n </div>\n </div>\n </td>\n\n <td className=\"s-wallet-table-tbody-tr-td\">\n <div className=\"s-wallet-table-tbody-tr-td-content\">\n <span className=\"s-wallet-mobile-title\">{t('pages.wallet.amount')}:</span>\n <div>{formatMoney(transaction.amount, { type: 'general' })}</div>\n </div>\n </td>\n\n <td className=\"s-wallet-table-tbody-tr-td\">\n <div className=\"s-wallet-table-tbody-tr-td-content\">\n <span className=\"s-wallet-mobile-title\">{t('pages.wallet.date')}:</span>\n {transaction.created_at ? formatTimestamp(transaction.created_at) : ''}\n </div>\n </td>\n\n <td className=\"s-wallet-table-tbody-tr-td\">\n <div className=\"s-wallet-table-tbody-tr-td-content\">\n <span className=\"s-wallet-mobile-title\">{t('pages.wallet.order_no')}:</span>\n <span className=\"rtl:mr-auto ltr:ml-auto md:mx-0\">\n {transaction.order_id && <span>#{transaction.order_id}</span>}\n </span>\n </div>\n </td>\n\n <td className=\"s-wallet-table-tbody-tr-td\">\n <div className=\"s-wallet-table-tbody-tr-td-content\">\n <span className=\"s-wallet-mobile-title\">{t('pages.wallet.expiry_date')}:</span>\n <span>{transaction.expired_at ? formatTimestamp(transaction.expired_at) : ''}</span>\n </div>\n </td>\n\n <td className=\"s-wallet-table-tbody-tr-td\">\n <div className=\"s-wallet-table-tbody-tr-td-content\">\n <div>\n <span className=\"s-wallet-mobile-title\">{t('pages.wallet.transaction_type')}:</span>\n </div>\n <div className={`s-wallet-table-transaction-status-default ${actionTypeClass}`}>\n {!!transaction.description && (\n <>\n <i\n id={transaction.id.toString()}\n className=\"sicon-information text-lg rtl:ml-4 ltr:mr-4 s-wallet-table-transaction-status-icon-success\"\n />\n <salla-tooltip\n text={transaction.description}\n targetId={transaction.id.toString()}\n />\n </>\n )}\n <span>{transaction.title}</span>\n </div>\n </div>\n </td>\n </tr>\n );\n});\n\nexport function WalletPage({ query, transactions, balance, pagination }: WalletPageProps) {\n const { t } = useTranslation();\n\n const { format: formatMoney } = useMoney();\n\n const nextPageRef = useRef(query.page + 1);\n\n const loader = useCallback(async () => {\n const pageToLoad = nextPageRef.current;\n const result = await wallet.list({ page: pageToLoad });\n\n nextPageRef.current = pageToLoad + 1;\n\n return {\n items: result.items,\n next: result.next,\n };\n }, []);\n\n if (transactions.length === 0) {\n return (\n <>\n <HookSlot name=\"customer:wallet.transactions.start\" />\n <NoContent icon=\"sicon-full-wallet\" message={`${t('pages.wallet.no_transactions')}`} />\n <HookSlot name=\"customer:wallet.transactions.end\" />\n </>\n );\n }\n\n return (\n <>\n <HookSlot name=\"customer:wallet.transactions.start\" />\n <table className=\"s-wallet-table\">\n <tbody className=\"s-wallet-table-tbody\">\n <tr className=\"s-table__tr\">\n <td>\n <div className=\"s-wallet-table-balance-container\">\n <i className=\"s-wallet-table-balance-icon sicon-wallet\" />\n <div>\n <div>{formatMoney(balance, { type: 'general' })}</div>\n <div className=\"font-normal text-gray-400\">{t('pages.wallet.balance')}</div>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n\n <h2 className=\"mt-8\">{t('pages.wallet.title')}</h2>\n <table className=\"s-wallet-table\">\n <thead className=\"s-wallet-table-head\">\n <tr className=\"s-wallet-table-head-tr\">\n <th scope=\"col\">{t('pages.wallet.transaction_number')}</th>\n <th scope=\"col\" className=\"s-wallet-table-head-tr-th\">\n {t('pages.wallet.amount')}\n </th>\n <th scope=\"col\" className=\"s-wallet-table-head-tr-th\">\n {t('pages.wallet.date')}\n </th>\n <th scope=\"col\" className=\"s-wallet-table-head-tr-th\">\n {t('pages.wallet.order_no')}\n </th>\n <th scope=\"col\" className=\"s-wallet-table-head-tr-th\">\n {t('pages.wallet.expiry_date')}\n </th>\n <th scope=\"col\" className=\"s-wallet-table-head-tr-th\">\n {t('pages.wallet.transaction_type')}\n </th>\n </tr>\n </thead>\n <tbody className=\"s-wallet-table-tbody\">\n <ItemsList<TransactionItem>\n items={transactions}\n loader={loader}\n mode={pagination.next ? 'infinite' : 'static'}\n itemsAs=\"Fragment\"\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) =>\n items.map((transaction) => (\n <TransactionRow key={transaction.id} transaction={transaction} />\n ))\n }\n </ItemsList>\n </tbody>\n </table>\n <HookSlot name=\"customer:wallet.transactions.end\" />\n </>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/account/wishlist/WishlistShare.tsx","../src/routes/account/wishlist/WishlistPage.tsx"],"names":["SallaSocialShare","useEffect","jsxs","jsx","SallaButton","useRef","useState","useCallback","items"],"mappings":"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","file":"WishlistPage-YH4OQPXP.js","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\n// The eager (non-deferred) export: the share dialog is opened imperatively through a ref, and the\n// deferred wrapper doesn't attach it until it has hydrated — a click before that would do nothing.\nimport { SallaSocialShareCore as SallaSocialShare } from '@salla.sa/twilight-components-react/social-share';\nimport { useTranslation } from '../../../providers/I18nProvider';\n\ntype ShareResponse = { data?: { url?: string }; url?: string } | undefined;\ntype SocialShareElement = HTMLElement & {\n url?: string;\n refresh?: () => Promise<void>;\n open?: () => Promise<void>;\n close?: () => Promise<void>;\n};\n\n/**\n * Share state for the wishlist page: the \"Share\" dropdown (share the whole list / share\n * specific items), the selection used by \"specific items\", and the share request itself.\n * Mirrors what the SDK's `<salla-wishlist-actions>` does, but drives the page's own React\n * list — that component needs a sibling `<salla-products-list>`, which this page doesn't render.\n */\nexport function useWishlistShare() {\n const [menuOpen, setMenuOpen] = useState(false);\n const [selecting, setSelecting] = useState(false);\n const [selectedIds, setSelectedIds] = useState<number[]>([]);\n const [sharing, setSharing] = useState(false);\n const [shareUrl, setShareUrl] = useState('');\n /** Ids of every product currently rendered (later cursor pages included), for \"select all\". */\n const loadedIdsRef = useRef<number[]>([]);\n const socialShareRef = useRef<SocialShareElement | null>(null);\n\n const share = useCallback(async (ids: number[], selectAll: boolean) => {\n if (!window.salla?.wishlist?.share) return;\n setSharing(true);\n try {\n const response = (await window.salla.wishlist.share(ids, selectAll)) as ShareResponse;\n const url = response?.data?.url || response?.url || '';\n if (!url) return;\n setShareUrl(url);\n const element = socialShareRef.current;\n if (element) {\n element.url = url;\n await element.refresh?.();\n await element.open?.();\n }\n } catch {\n // The SDK reports a failed share itself (notification); nothing to recover here.\n } finally {\n setSharing(false);\n }\n }, []);\n\n const shareAll = useCallback(() => {\n setMenuOpen(false);\n void share([], true);\n }, [share]);\n\n const shareSelected = useCallback(() => {\n if (selectedIds.length) void share(selectedIds, false);\n }, [share, selectedIds]);\n\n const startSelecting = useCallback(() => {\n setMenuOpen(false);\n setSelecting(true);\n }, []);\n\n const cancelSelecting = useCallback(() => {\n setSelecting(false);\n setSelectedIds([]);\n setShareUrl('');\n void socialShareRef.current?.close?.();\n }, []);\n\n const toggleSelected = useCallback((id: number) => {\n setShareUrl('');\n setSelectedIds((current) =>\n current.includes(id) ? current.filter((existing) => existing !== id) : [...current, id]\n );\n }, []);\n\n const selectedIdsRef = useRef(selectedIds);\n useEffect(() => {\n selectedIdsRef.current = selectedIds;\n }, [selectedIds]);\n\n const deselect = useCallback((id: number) => {\n if (!selectedIdsRef.current.includes(id)) return;\n // A link built for the old selection would still offer the removed product.\n setShareUrl('');\n const element = socialShareRef.current;\n if (element) {\n element.url = undefined;\n void element.close?.();\n }\n setSelectedIds((current) => current.filter((existing) => existing !== id));\n }, []);\n\n const toggleAll = useCallback(() => {\n setShareUrl('');\n setSelectedIds((current) =>\n current.length && current.length === loadedIdsRef.current.length\n ? []\n : [...loadedIdsRef.current]\n );\n }, []);\n\n return {\n menuOpen,\n setMenuOpen,\n selecting,\n selectedIds,\n sharing,\n shareUrl,\n loadedIdsRef,\n socialShareRef,\n shareAll,\n shareSelected,\n startSelecting,\n cancelSelecting,\n toggleSelected,\n toggleAll,\n deselect,\n };\n}\n\nexport type WishlistShareState = ReturnType<typeof useWishlistShare>;\n\n/** The bar above the wishlist: the \"Share\" dropdown, or — while picking products — the selection controls. */\nexport function WishlistShareBar({\n state,\n hasProducts,\n}: {\n state: WishlistShareState;\n hasProducts: boolean;\n}) {\n const { t } = useTranslation();\n const rootRef = useRef<HTMLDivElement>(null);\n const { menuOpen, setMenuOpen } = state;\n\n // Close the dropdown on an outside click or Escape.\n useEffect(() => {\n if (!menuOpen) return;\n const onPointerDown = (event: MouseEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) setMenuOpen(false);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') setMenuOpen(false);\n };\n document.addEventListener('mousedown', onPointerDown);\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('mousedown', onPointerDown);\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [menuOpen, setMenuOpen]);\n\n const selectedCount = state.selectedIds.length;\n const allSelected = selectedCount > 0 && selectedCount === state.loadedIdsRef.current.length;\n\n return (\n <div ref={rootRef} className=\"s-wishlist-actions\">\n <div className=\"s-wishlist-actions-bar flex items-center justify-end gap-3 mb-3\">\n {state.selecting ? (\n <div className=\"s-wishlist-actions-selection flex items-center gap-3\">\n <label className=\"s-wishlist-actions-select-all inline-flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n checked={allSelected}\n ref={(input) => {\n if (input) input.indeterminate = selectedCount > 0 && !allSelected;\n }}\n onChange={state.toggleAll}\n />\n {t('pages.wishlist.select_all', 'Select all')}\n </label>\n <SallaButton\n color=\"primary\"\n disabled={selectedCount === 0 || state.sharing}\n onClick={state.shareSelected}\n >\n {t('pages.wishlist.share', 'Share')}\n {selectedCount > 0 ? ` (${selectedCount})` : ''}\n </SallaButton>\n <SallaButton fill=\"outline\" color=\"light\" onClick={state.cancelSelecting}>\n {t('common.elements.cancel', 'Cancel')}\n </SallaButton>\n </div>\n ) : (\n <div className=\"s-wishlist-actions-dropdown relative\">\n <SallaButton\n color=\"primary\"\n fill=\"outline\"\n disabled={!hasProducts || state.sharing}\n aria-haspopup=\"true\"\n aria-expanded={menuOpen}\n onClick={() => setMenuOpen(!menuOpen)}\n >\n <span className=\"flex items-center justify-center gap-2\">\n <i className=\"sicon-share-alt\" aria-hidden=\"true\" />\n {t('pages.wishlist.share', 'Share')}\n <i className=\"sicon-keyboard_arrow_down\" aria-hidden=\"true\" />\n </span>\n </SallaButton>\n {menuOpen && (\n <ul\n role=\"menu\"\n className=\"s-wishlist-actions-menu absolute z-10 mt-2 min-w-48 rounded-md bg-white py-2 shadow-default rtl:right-0 ltr:left-0\"\n >\n <li role=\"none\">\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"s-wishlist-actions-item block w-full px-4 py-2 text-start text-sm text-gray-700 hover:bg-gray-50\"\n onClick={state.shareAll}\n >\n {t('pages.wishlist.share_all', 'Share the list')}\n </button>\n </li>\n <li role=\"none\">\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"s-wishlist-actions-item block w-full px-4 py-2 text-start text-sm text-gray-700 hover:bg-gray-50\"\n onClick={state.startSelecting}\n >\n {t('pages.wishlist.share_specific', 'Share specific items')}\n </button>\n </li>\n </ul>\n )}\n </div>\n )}\n </div>\n {/* Same setup as the SDK's <salla-wishlist-actions>: the centered modal variant, opened by the\n dropdown rather than by the component's own round share button, so the default\n `widget` slot (that button) is replaced by an empty anchor. */}\n <SallaSocialShare\n ref={state.socialShareRef as never}\n url={state.shareUrl || undefined}\n mode=\"modal\"\n modalTitle={t('pages.wishlist.share_list_title', 'Share wishlist')}\n className=\"s-wishlist-actions-social\"\n >\n <span slot=\"widget\" className=\"s-wishlist-actions-social-anchor\" aria-hidden=\"true\" />\n </SallaSocialShare>\n </div>\n );\n}\n","import { useCallback, useEffect, useMemo, useRef, useState, type CSSProperties } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { wishlist } from '../../../api/wishlist';\nimport type { Product } from '../../../types';\nimport { HookSlot, useWishlist, useMoney } from '../../../hooks';\nimport { useTranslation } from '../../../providers/I18nProvider';\nimport type { WishlistPageProps } from './types';\nimport { WishlistShareBar, useWishlistShare } from './WishlistShare';\nimport { NoContent, Image } from '../../../components/common';\nimport { useLocation } from '../../../providers/NavigationProvider';\nimport { onSallaEvent } from '../../../utils/sdk-helpers';\n\ninterface WishlistCardSelection {\n /** \"Share specific items\" mode: the card shows a checkbox and toggles on click. */\n selecting: boolean;\n selected: boolean;\n onToggle: (id: number) => void;\n}\n\n// The loaded component copies host attributes (not properties) onto its inner salla-button.\nconst setAddButtonAttributes = (el: HTMLElement | null) => {\n el?.setAttribute('loader-position', 'center');\n el?.setAttribute('fill', 'outline');\n};\n\nconst REMOVING_MS = 300;\n\nconst REMOVING_STYLE: CSSProperties = {\n opacity: 0,\n transform: 'scale(0.95)',\n transition: `opacity ${REMOVING_MS}ms ease-in-out, transform ${REMOVING_MS}ms ease-in-out`,\n};\n\nfunction WishlistCard({\n product: prod,\n selection,\n removing,\n onRemoved,\n}: {\n product: Product;\n selection?: WishlistCardSelection;\n /** Fades the card out, then calls `onRemoved` once the fade ends. */\n removing?: boolean;\n onRemoved?: (id: number) => void;\n}) {\n const { remove } = useWishlist();\n const { format } = useMoney();\n\n // Drops the card even when `transitionend` never fires (hidden tab, overridden styles).\n useEffect(() => {\n if (!removing) return;\n const timer = setTimeout(() => onRemoved?.(Number(prod.id)), REMOVING_MS + 50);\n return () => clearTimeout(timer);\n }, [removing, onRemoved, prod.id]);\n\n const handleRemove = () => {\n if (prod.id) {\n remove(Number(prod.id));\n }\n };\n\n const displayPrice = prod.sale_price ?? prod.price;\n const regularPrice = prod.regular_price;\n\n return (\n <div\n id={`wishlist-product-${prod.id}`}\n className={`product-entry product-entry--wishlist${selection?.selected ? ' is-selected' : ''}`}\n style={removing ? REMOVING_STYLE : undefined}\n onTransitionEnd={(event) => {\n if (removing && event.target === event.currentTarget && event.propertyName === 'opacity') {\n onRemoved?.(Number(prod.id));\n }\n }}\n >\n {selection?.selecting && (\n <input\n type=\"checkbox\"\n className=\"s-wishlist-select shrink-0 rtl:ml-4 ltr:mr-4\"\n aria-label={prod.name}\n checked={selection.selected}\n onChange={() => selection.onToggle(Number(prod.id))}\n />\n )}\n <div className=\"flex items-center mb-4 sm:mb-0\">\n <a href={prod.url} className=\"product-entry__image\">\n <Image\n className=\"object-cover w-full h-full\"\n src={prod.image?.url}\n alt={prod.image?.alt ?? prod.name}\n aspectRatio=\"1/1\"\n />\n </a>\n <div className=\"flex-1 rtl:pr-5 ltr:pl-5\">\n <h3 className=\"text-sm text-gray-800 leading-6 mb-1.5 rtl:pl-5 ltr:pr-5 rtl:md:pl-8 ltr:md:pr-8 line-clamp-1\">\n <a href={prod.url}>{prod.name}</a>\n </h3>\n <div className=\"w-full center-between\">\n {prod.is_on_sale && regularPrice ? (\n <div className=\"space-x-1 rtl:space-x-reverse\">\n <h4 className=\"inline-block text-sm font-bold text-red-400\">\n {format(displayPrice)}\n </h4>\n <span className=\"text-sm text-gray-500 line-through\">{format(regularPrice)}</span>\n </div>\n ) : (\n <h4 className=\"text-sm font-bold\">{format(displayPrice)}</h4>\n )}\n </div>\n </div>\n </div>\n <div className=\"flex items-center space-x-4 rtl:space-x-reverse\">\n <SallaAddProductButton\n ref={setAddButtonAttributes}\n productStatus={prod.status}\n productId={prod.id}\n productType={prod.type}\n loaderPosition=\"center\"\n fill=\"outline\"\n className=\"flex-grow w-full sm:grow-0 md:w-40\"\n />\n <SallaButton\n loaderPosition=\"center\"\n shape=\"icon\"\n size=\"small\"\n color=\"danger\"\n className=\"btn--delete\"\n onClick={handleRemove}\n >\n <i className=\"sicon-cancel\" />\n </SallaButton>\n </div>\n </div>\n );\n}\n\n/** The loaded wishlist pages, reloaded from the server once every loaded card is removed (like Twig). */\nfunction useWishlistItems(\n { query, products, pagination }: WishlistPageProps,\n onRemoved: (id: number) => void\n) {\n const queryClient = useQueryClient();\n // Track the next page to load (starts at page 2 since page 1 is SSR)\n const nextPageRef = useRef(query.page + 1);\n const [removedIds, setRemovedIds] = useState<ReadonlySet<number>>(() => new Set());\n const [removingIds, setRemovingIds] = useState<ReadonlySet<number>>(() => new Set());\n const [reloaded, setReloaded] = useState<{\n items: Product[];\n next: string | null;\n generation: number;\n } | null>(null);\n const loadedRef = useRef({\n ids: products.map((prod) => Number(prod.id)),\n hasMore: !!pagination?.next,\n });\n\n // A `?page=` navigation keeps this instance, so drop what the previous page removed or reloaded.\n const [loadedProducts, setLoadedProducts] = useState(products);\n if (loadedProducts !== products) {\n setLoadedProducts(products);\n setRemovedIds(new Set());\n setRemovingIds(new Set());\n setReloaded(null);\n }\n\n useEffect(() => {\n nextPageRef.current = query.page + 1;\n loadedRef.current = {\n ids: products.map((prod) => Number(prod.id)),\n hasMore: !!pagination?.next,\n };\n }, [products, query.page, pagination?.next]);\n\n useEffect(() => {\n const handleRemoved = (_response: unknown, id: unknown) => {\n const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n (reduceMotion ? setRemovedIds : setRemovingIds)((current) =>\n new Set(current).add(Number(id))\n );\n onRemoved(Number(id));\n };\n\n return onSallaEvent('wishlist::removed', handleRemoved);\n }, [onRemoved]);\n\n useEffect(() => {\n const { ids, hasMore } = loadedRef.current;\n if (!ids.length || !ids.every((id) => removedIds.has(id))) return;\n\n const reset = (items: Product[], next: string | null) => {\n nextPageRef.current = query.page + 1;\n loadedRef.current = { ids: items.map((prod) => Number(prod.id)), hasMore: !!next };\n setRemovedIds(new Set());\n setRemovingIds(new Set());\n setReloaded((current) => ({ items, next, generation: (current?.generation ?? 0) + 1 }));\n };\n\n if (!hasMore) {\n reset([], null);\n return;\n }\n\n let cancelled = false;\n queryClient\n .fetchQuery({ ...wishlist.queries.list({ page: query.page }), staleTime: 0 })\n .then((result) => {\n if (!cancelled) reset(result.items, result.next);\n })\n // A failed reload keeps the list as it is; later pages still load on scroll.\n .catch(() => undefined);\n return () => {\n cancelled = true;\n };\n }, [removedIds, query.page, products, queryClient]);\n\n const loader = async () => {\n const pageToLoad = nextPageRef.current;\n const result = await wishlist.list({ page: pageToLoad });\n\n nextPageRef.current = pageToLoad + 1;\n loadedRef.current = {\n ids: [...loadedRef.current.ids, ...result.items.map((prod) => Number(prod.id))],\n hasMore: !!result.next,\n };\n\n return {\n items: result.items,\n next: result.next,\n };\n };\n\n const finishRemoving = useCallback((id: number) => {\n setRemovedIds((current) => (current.has(id) ? current : new Set(current).add(id)));\n }, []);\n\n return {\n items: reloaded ? reloaded.items : products,\n next: reloaded ? reloaded.next : pagination?.next,\n generation: reloaded?.generation ?? 0,\n removedIds,\n removingIds,\n finishRemoving,\n loader,\n };\n}\n\nexport function WishlistPage(props: WishlistPageProps) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n const shareState = useWishlistShare();\n const selectedIdSet = useMemo(() => new Set(shareState.selectedIds), [shareState.selectedIds]);\n const { items, next, generation, removedIds, removingIds, finishRemoving, loader } =\n useWishlistItems(props, shareState.deselect);\n const hasRemaining = items.some((prod) => !removedIds.has(Number(prod.id)));\n\n return (\n <div className=\"space-y-5\" id=\"wishlist\">\n {/* The SDK unconditionally auto-renders its own `<salla-wishlist-actions>` into this\n slot on every `customer.wishlist` page (tools/twilight's init-static-sections.js),\n but that widget only works alongside a sibling `<salla-products-list>` web\n component -- this page renders its products via the React-native `ItemsList`\n instead, so the SDK's widget never finds one and sits permanently disabled.\n `WishlistShareBar` below is this page's own, fully working replacement for the\n exact same \"Share\" feature. The slot itself stays (removing it would also drop\n whatever themes/apps register here via the hook registry, not just this widget);\n `#wishlist > salla-wishlist-actions` (user-pages.scss) hides just the dead\n SDK widget, which the SDK always inserts as this element's first child. */}\n <HookSlot name=\"customer:wishlist.items.start\" />\n <WishlistShareBar state={shareState} hasProducts={hasRemaining || !!next} />\n <ItemsList<Product>\n key={generation}\n items={items}\n loader={loader}\n mode={next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-products-list\"\n itemsClassName=\"s-products-list-wrapper s-products-list-row-cards\"\n empty={\n <div className=\"text-center py-16\">\n <NoContent\n icon=\"sicon-heart\"\n message={t('common.errors.no_wishlist', \"You don't have any wishes\")}\n actionLabel={t('pages.offer.continue_shopping', 'Continue shopping')}\n actionUrl=\"/\"\n />\n </div>\n }\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) => {\n const remaining = items.filter((item) => !removedIds.has(Number(item.id)));\n shareState.loadedIdsRef.current = remaining.map((item) => Number(item.id));\n return remaining.map((prod) => (\n <WishlistCard\n key={prod.id}\n product={prod}\n removing={removingIds.has(Number(prod.id))}\n onRemoved={finishRemoving}\n selection={{\n selecting: shareState.selecting,\n selected: selectedIdSet.has(Number(prod.id)),\n onToggle: shareState.toggleSelected,\n }}\n />\n ));\n }}\n </ItemsList>\n <HookSlot name=\"customer:wishlist.items.end\" />\n </div>\n );\n}\n"]}
|