@salla.sa/twilight-theme-engine 1.0.60 → 1.0.61
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-GFAJUB4Y.js → AddToCartForm-RAQX7VHU.js} +3 -3
- package/dist/{AddToCartForm-GFAJUB4Y.js.map → AddToCartForm-RAQX7VHU.js.map} +1 -1
- package/dist/{BlogAuthorPage-WWA75UTA.js → BlogAuthorPage-HV6JUJNL.js} +17 -16
- package/dist/BlogAuthorPage-HV6JUJNL.js.map +1 -0
- package/dist/{BlogCategoryPage-VGIAMWPH.js → BlogCategoryPage-ATPIVUAL.js} +17 -16
- package/dist/BlogCategoryPage-ATPIVUAL.js.map +1 -0
- package/dist/{BlogPage-5MW4WSOH.js → BlogPage-6IIOSB45.js} +15 -14
- package/dist/BlogPage-6IIOSB45.js.map +1 -0
- package/dist/{BlogSinglePage-67E3PVMP.js → BlogSinglePage-DV3XYB26.js} +15 -14
- package/dist/BlogSinglePage-DV3XYB26.js.map +1 -0
- package/dist/{BlogTagPage-EEOIAALL.js → BlogTagPage-RVJIXERD.js} +17 -16
- package/dist/BlogTagPage-RVJIXERD.js.map +1 -0
- package/dist/BrandsPage-RQXP67LV.js +187 -0
- package/dist/BrandsPage-RQXP67LV.js.map +1 -0
- package/dist/{Breadcrumb-4I2HVAFR.js → Breadcrumb-NXXVZJJD.js} +15 -14
- package/dist/Breadcrumb-NXXVZJJD.js.map +1 -0
- package/dist/{CartItem-A7Y6MZXS.js → CartItem-XRWTSJB5.js} +15 -14
- package/dist/CartItem-XRWTSJB5.js.map +1 -0
- package/dist/{CartSummary-MUCVTNKG.js → CartSummary-F6BY5APF.js} +15 -14
- package/dist/CartSummary-F6BY5APF.js.map +1 -0
- package/dist/{Copyright-VJYMP42V.js → Copyright-TEDF6HMC.js} +3 -3
- package/dist/{Copyright-VJYMP42V.js.map → Copyright-TEDF6HMC.js.map} +1 -1
- package/dist/{CustomerLayout-L3Y2TIPF.js → CustomerLayout-T5BSTU6T.js} +15 -14
- package/dist/CustomerLayout-T5BSTU6T.js.map +1 -0
- package/dist/{Footer-OQFU25J4.js → Footer-IRX2WAEF.js} +15 -14
- package/dist/{Footer-OQFU25J4.js.map → Footer-IRX2WAEF.js.map} +1 -1
- package/dist/{Header-QNNAHZJL.js → Header-HQKDTZSI.js} +7 -7
- package/dist/{Header-QNNAHZJL.js.map → Header-HQKDTZSI.js.map} +1 -1
- package/dist/{LoyaltyPage-IULR2XKZ.js → LoyaltyPage-AIUDZLT7.js} +16 -15
- package/dist/LoyaltyPage-AIUDZLT7.js.map +1 -0
- package/dist/{MainMenu-3KKSHFCS.js → MainMenu-4ZPVIJCN.js} +9 -8
- package/dist/MainMenu-4ZPVIJCN.js.map +1 -0
- package/dist/{MasterLayout-HJWMQHWO.js → MasterLayout-G3MVZLYZ.js} +15 -14
- package/dist/{MasterLayout-HJWMQHWO.js.map → MasterLayout-G3MVZLYZ.js.map} +1 -1
- package/dist/{MobileMenu-DBJ23EKX.js → MobileMenu-A5DBTPS7.js} +16 -15
- package/dist/MobileMenu-A5DBTPS7.js.map +1 -0
- package/dist/{NotificationsPage-PUS3WBU6.js → NotificationsPage-T2O67MLD.js} +15 -14
- package/dist/NotificationsPage-T2O67MLD.js.map +1 -0
- package/dist/{OrderSinglePage-4CK6OT6U.js → OrderSinglePage-4W4JZX7I.js} +16 -15
- package/dist/OrderSinglePage-4W4JZX7I.js.map +1 -0
- package/dist/{OrdersPage-EGIDHSYS.js → OrdersPage-DYKFBMRC.js} +16 -15
- package/dist/OrdersPage-DYKFBMRC.js.map +1 -0
- package/dist/{PageSingle-ORPH52QX.js → PageSingle-6U6GPMXJ.js} +3 -3
- package/dist/{PageSingle-ORPH52QX.js.map → PageSingle-6U6GPMXJ.js.map} +1 -1
- package/dist/{ProductDetails-RY6PNKKJ.js → ProductDetails-OWSIL357.js} +3 -3
- package/dist/{ProductDetails-RY6PNKKJ.js.map → ProductDetails-OWSIL357.js.map} +1 -1
- package/dist/{ProfilePage-IO2MDE53.js → ProfilePage-LLCIJHAI.js} +15 -14
- package/dist/ProfilePage-LLCIJHAI.js.map +1 -0
- package/dist/{SeoCartWidget-TPSVEGMI.js → SeoCartWidget-ZL3FTBWK.js} +15 -14
- package/dist/SeoCartWidget-ZL3FTBWK.js.map +1 -0
- package/dist/{SettingsPage-ZTD4ALAA.js → SettingsPage-2XU5IF4A.js} +15 -14
- package/dist/SettingsPage-2XU5IF4A.js.map +1 -0
- package/dist/{StoreClosedNotification-52REE2T5.js → StoreClosedNotification-CNJI2Q26.js} +16 -15
- package/dist/{StoreClosedNotification-52REE2T5.js.map → StoreClosedNotification-CNJI2Q26.js.map} +1 -1
- package/dist/{TestimonialsPage-QDBHJADT.js → TestimonialsPage-QYPLMNWL.js} +3 -3
- package/dist/{TestimonialsPage-QDBHJADT.js.map → TestimonialsPage-QYPLMNWL.js.map} +1 -1
- package/dist/{ThankYouPage-IRLZI3HI.js → ThankYouPage-WG3CM5JP.js} +15 -14
- package/dist/ThankYouPage-WG3CM5JP.js.map +1 -0
- package/dist/{WalletPage-ZTSSGFMO.js → WalletPage-J7CH22JM.js} +16 -15
- package/dist/WalletPage-J7CH22JM.js.map +1 -0
- package/dist/{WishlistPage-OADS7B5J.js → WishlistPage-ZXWYB56R.js} +17 -16
- package/dist/WishlistPage-ZXWYB56R.js.map +1 -0
- package/dist/api/apps.js +6 -5
- package/dist/api/brands.d.ts +6 -5
- package/dist/api/brands.d.ts.map +1 -1
- package/dist/api/brands.js +7 -6
- package/dist/api/cart.js +7 -6
- package/dist/api/category.js +7 -6
- package/dist/api/client.js +5 -4
- package/dist/api/home.js +6 -5
- package/dist/api/loyalty.js +7 -6
- package/dist/api/menu.js +6 -5
- package/dist/api/notification.js +6 -5
- package/dist/api/order.js +7 -6
- package/dist/api/page.js +7 -6
- package/dist/api/product.js +7 -6
- package/dist/api/profile.js +5 -4
- package/dist/api/profile.js.map +1 -1
- package/dist/api/store.js +6 -5
- package/dist/api/translations.js +6 -5
- package/dist/api/user.js +6 -5
- package/dist/api/wishlist.js +8 -7
- package/dist/{chunk-ANWDPISS.js → chunk-2U3PUO3V.js} +18 -16
- package/dist/chunk-2U3PUO3V.js.map +1 -0
- package/dist/{chunk-YGDAYFQY.js → chunk-2XGQSJKH.js} +3 -3
- package/dist/{chunk-YGDAYFQY.js.map → chunk-2XGQSJKH.js.map} +1 -1
- package/dist/{chunk-J7BQY4ZK.js → chunk-3ITQB3PY.js} +4 -4
- package/dist/{chunk-J7BQY4ZK.js.map → chunk-3ITQB3PY.js.map} +1 -1
- package/dist/{chunk-IFWQTDEY.js → chunk-3YVAYIM4.js} +6 -6
- package/dist/{chunk-IFWQTDEY.js.map → chunk-3YVAYIM4.js.map} +1 -1
- package/dist/{chunk-K34A2LBY.js → chunk-4DHLIY6V.js} +4 -4
- package/dist/{chunk-K34A2LBY.js.map → chunk-4DHLIY6V.js.map} +1 -1
- package/dist/{chunk-KZMUU5ZD.js → chunk-5X2UFNKY.js} +3 -3
- package/dist/{chunk-KZMUU5ZD.js.map → chunk-5X2UFNKY.js.map} +1 -1
- package/dist/{chunk-S7JSNUU2.js → chunk-5ZR2HKZ7.js} +3 -3
- package/dist/{chunk-S7JSNUU2.js.map → chunk-5ZR2HKZ7.js.map} +1 -1
- package/dist/{chunk-UQAUDOI7.js → chunk-6IDCWH5K.js} +10 -7
- package/dist/chunk-6IDCWH5K.js.map +1 -0
- package/dist/{chunk-GXXWHVLS.js → chunk-7OIP65ER.js} +5 -5
- package/dist/{chunk-GXXWHVLS.js.map → chunk-7OIP65ER.js.map} +1 -1
- package/dist/{chunk-ICPO2ELD.js → chunk-EAZGFREP.js} +3 -3
- package/dist/{chunk-ICPO2ELD.js.map → chunk-EAZGFREP.js.map} +1 -1
- package/dist/{chunk-GX3EDS32.js → chunk-FUIPNVQY.js} +6 -6
- package/dist/{chunk-GX3EDS32.js.map → chunk-FUIPNVQY.js.map} +1 -1
- package/dist/{chunk-T63KKKW2.js → chunk-GUGZ4CEG.js} +4 -4
- package/dist/{chunk-T63KKKW2.js.map → chunk-GUGZ4CEG.js.map} +1 -1
- package/dist/{chunk-6LIGRH4O.js → chunk-IZFZLJHD.js} +5 -5
- package/dist/{chunk-6LIGRH4O.js.map → chunk-IZFZLJHD.js.map} +1 -1
- package/dist/{chunk-KRCPBXFJ.js → chunk-JVGZDLFP.js} +4 -4
- package/dist/{chunk-KRCPBXFJ.js.map → chunk-JVGZDLFP.js.map} +1 -1
- package/dist/{chunk-GZKCZ6X7.js → chunk-LCJW7JKZ.js} +5 -5
- package/dist/{chunk-GZKCZ6X7.js.map → chunk-LCJW7JKZ.js.map} +1 -1
- package/dist/{chunk-OGQXRBCR.js → chunk-N2S25NXP.js} +37 -9
- package/dist/chunk-N2S25NXP.js.map +1 -0
- package/dist/{chunk-R2ULWW5T.js → chunk-N4THXNXA.js} +28 -21
- package/dist/chunk-N4THXNXA.js.map +1 -0
- package/dist/{chunk-NYD5Z4RJ.js → chunk-NFTOMTTI.js} +4 -4
- package/dist/{chunk-NYD5Z4RJ.js.map → chunk-NFTOMTTI.js.map} +1 -1
- package/dist/{chunk-R3TPJHLI.js → chunk-NHKP5XIG.js} +4 -4
- package/dist/{chunk-R3TPJHLI.js.map → chunk-NHKP5XIG.js.map} +1 -1
- package/dist/{chunk-NOB7OWFA.js → chunk-NQVJ7NJ6.js} +3 -3
- package/dist/{chunk-NOB7OWFA.js.map → chunk-NQVJ7NJ6.js.map} +1 -1
- package/dist/{chunk-NKLKKZM6.js → chunk-OET4G4XC.js} +3 -3
- package/dist/{chunk-NKLKKZM6.js.map → chunk-OET4G4XC.js.map} +1 -1
- package/dist/{chunk-BHU25UEW.js → chunk-P3OPJL6I.js} +6 -5
- package/dist/chunk-P3OPJL6I.js.map +1 -0
- package/dist/{chunk-B3EFOE57.js → chunk-PK7EU5TM.js} +2 -2
- package/dist/chunk-PK7EU5TM.js.map +1 -0
- package/dist/{chunk-ZOZLNUNA.js → chunk-Q3COPV5Z.js} +4 -4
- package/dist/{chunk-ZOZLNUNA.js.map → chunk-Q3COPV5Z.js.map} +1 -1
- package/dist/{chunk-YGSU36MZ.js → chunk-RJAVZBUK.js} +3 -3
- package/dist/{chunk-YGSU36MZ.js.map → chunk-RJAVZBUK.js.map} +1 -1
- package/dist/{chunk-XTMHHLNK.js → chunk-SR4OTLTJ.js} +23 -5
- package/dist/chunk-SR4OTLTJ.js.map +1 -0
- package/dist/{chunk-HAV32VZS.js → chunk-TDZSHACC.js} +30 -5
- package/dist/chunk-TDZSHACC.js.map +1 -0
- package/dist/{chunk-CUX7O42G.js → chunk-TLAEW7TB.js} +3 -3
- package/dist/{chunk-CUX7O42G.js.map → chunk-TLAEW7TB.js.map} +1 -1
- package/dist/{chunk-NK2V2SW5.js → chunk-TLO2M5TJ.js} +5 -5
- package/dist/{chunk-NK2V2SW5.js.map → chunk-TLO2M5TJ.js.map} +1 -1
- package/dist/{chunk-T26Y47JL.js → chunk-TTMYT3RB.js} +4 -4
- package/dist/{chunk-T26Y47JL.js.map → chunk-TTMYT3RB.js.map} +1 -1
- package/dist/{chunk-VRV5F6G7.js → chunk-TYLKNVQA.js} +5 -25
- package/dist/chunk-TYLKNVQA.js.map +1 -0
- package/dist/{chunk-X7P2WSNU.js → chunk-UIOLSYKV.js} +3 -3
- package/dist/{chunk-X7P2WSNU.js.map → chunk-UIOLSYKV.js.map} +1 -1
- package/dist/{chunk-6DVYW7OA.js → chunk-UZKTK6YV.js} +4 -4
- package/dist/{chunk-6DVYW7OA.js.map → chunk-UZKTK6YV.js.map} +1 -1
- package/dist/{chunk-HF6RCUMD.js → chunk-VJHDE6UT.js} +4 -4
- package/dist/{chunk-HF6RCUMD.js.map → chunk-VJHDE6UT.js.map} +1 -1
- package/dist/{chunk-AODO3GFK.js → chunk-VSJLPWFI.js} +4 -4
- package/dist/{chunk-AODO3GFK.js.map → chunk-VSJLPWFI.js.map} +1 -1
- package/dist/{chunk-JDDQHFIW.js → chunk-W2B5P54C.js} +4 -4
- package/dist/{chunk-JDDQHFIW.js.map → chunk-W2B5P54C.js.map} +1 -1
- package/dist/{chunk-RLSYCDI4.js → chunk-WH225GEC.js} +26 -11
- package/dist/chunk-WH225GEC.js.map +1 -0
- package/dist/chunk-WY4IYO3G.js +25 -0
- package/dist/chunk-WY4IYO3G.js.map +1 -0
- package/dist/{chunk-WPHI6Q6N.js → chunk-YH4O3H4R.js} +4 -4
- package/dist/{chunk-WPHI6Q6N.js.map → chunk-YH4O3H4R.js.map} +1 -1
- package/dist/chunk-ZPRZQTYM.js +14 -0
- package/dist/{chunk-6EES4C7J.js.map → chunk-ZPRZQTYM.js.map} +1 -1
- package/dist/chunk-ZQGMVUPE.js +29 -0
- package/dist/chunk-ZQGMVUPE.js.map +1 -0
- package/dist/components/cart/index.js +1 -1
- package/dist/components/common/index.js +1 -1
- package/dist/components/drawer/index.js +13 -12
- package/dist/components/home/index.js +16 -15
- package/dist/components/layout/index.js +5 -5
- package/dist/components/product/index.js +14 -13
- package/dist/components/store/index.js +15 -14
- package/dist/components/store/index.js.map +1 -1
- package/dist/document-class-7KPUN2DK.js +26 -0
- package/dist/{document-class-SX2LHILG.js.map → document-class-7KPUN2DK.js.map} +1 -1
- package/dist/hooks/index.js +13 -12
- package/dist/hooks/useGtm.js +13 -12
- package/dist/hooks/useMoney.js +13 -12
- package/dist/hooks/useStore.js +13 -12
- package/dist/hooks/useUser.js +7 -6
- package/dist/index.js +13 -12
- package/dist/index.js.map +1 -1
- package/dist/navigation-QMBOIYJI.js +12 -0
- package/dist/{navigation-Z6JMJ4FZ.js.map → navigation-QMBOIYJI.js.map} +1 -1
- package/dist/{navigation-7WGWEDLB.js → navigation-XZJCQXY3.js} +5 -5
- package/dist/{navigation-7WGWEDLB.js.map → navigation-XZJCQXY3.js.map} +1 -1
- package/dist/{not-found-CDXSWL7T.js → not-found-UE5XOV5C.js} +16 -15
- package/dist/not-found-UE5XOV5C.js.map +1 -0
- package/dist/providers/NavigationProvider.d.ts +5 -5
- package/dist/providers/NavigationProvider.d.ts.map +1 -1
- package/dist/providers/TwilightProvider.d.ts.map +1 -1
- package/dist/providers/index.js +13 -12
- package/dist/routes/account/notifications/loader.d.ts.map +1 -1
- package/dist/routes/account/orders/loader.d.ts.map +1 -1
- package/dist/routes/account/orders.js +8 -7
- package/dist/routes/account/profile/loader.d.ts.map +1 -1
- package/dist/routes/account/settings/loader.d.ts.map +1 -1
- package/dist/routes/account/wallet/loader.d.ts.map +1 -1
- package/dist/routes/account/wishlist/loader.d.ts.map +1 -1
- package/dist/routes/account.js +24 -20
- package/dist/routes/account.js.map +1 -1
- package/dist/routes/blog.js +12 -11
- package/dist/routes/blog.js.map +1 -1
- package/dist/routes/brands/BrandsPage.d.ts +1 -1
- package/dist/routes/brands/BrandsPage.d.ts.map +1 -1
- package/dist/routes/brands/index.d.ts +2 -2
- package/dist/routes/brands/index.d.ts.map +1 -1
- package/dist/routes/brands/loader.d.ts.map +1 -1
- package/dist/routes/brands/types.d.ts +4 -1
- package/dist/routes/brands/types.d.ts.map +1 -1
- package/dist/routes/brands.js +12 -22
- package/dist/routes/brands.js.map +1 -1
- package/dist/routes/cart.js +21 -20
- package/dist/routes/cart.js.map +1 -1
- package/dist/routes/home.js +18 -17
- package/dist/routes/index.js +4 -4
- package/dist/routes/lazy.d.ts +1 -1
- package/dist/routes/lazy.d.ts.map +1 -1
- package/dist/routes/loyalty/index.d.ts +1 -1
- package/dist/routes/loyalty/index.d.ts.map +1 -1
- package/dist/routes/loyalty/loader.d.ts +1 -1
- package/dist/routes/loyalty/loader.d.ts.map +1 -1
- package/dist/routes/loyalty.js +21 -12
- package/dist/routes/loyalty.js.map +1 -1
- package/dist/routes/page.js +8 -7
- package/dist/routes/page.js.map +1 -1
- package/dist/routes/product-listing.js +18 -17
- package/dist/routes/product-listing.js.map +1 -1
- package/dist/routes/product.js +16 -15
- package/dist/routes/product.js.map +1 -1
- package/dist/routes/seo-redirects.js +4 -4
- package/dist/routes/testimonials.js +2 -2
- package/dist/routes/thank-you.js +8 -7
- package/dist/routes/thank-you.js.map +1 -1
- package/dist/skeleton.js +18 -17
- package/dist/tanstack/navigation.d.ts.map +1 -1
- package/dist/tanstack.js +19 -28
- package/dist/tanstack.js.map +1 -1
- package/dist/twilight/context.d.ts.map +1 -1
- package/dist/utils/cookies.d.ts +7 -0
- package/dist/utils/cookies.d.ts.map +1 -1
- package/dist/utils/head.d.ts +3 -0
- package/dist/utils/head.d.ts.map +1 -1
- package/dist/utils/head.js +1 -1
- package/dist/utils/index.js +7 -6
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/request-host.d.ts +2 -8
- package/dist/utils/request-host.d.ts.map +1 -1
- package/dist/utils/store-base.d.ts +11 -0
- package/dist/utils/store-base.d.ts.map +1 -1
- package/dist/vite/index.js +3 -3
- package/package.json +1 -1
- package/dist/BlogAuthorPage-WWA75UTA.js.map +0 -1
- package/dist/BlogCategoryPage-VGIAMWPH.js.map +0 -1
- package/dist/BlogPage-5MW4WSOH.js.map +0 -1
- package/dist/BlogSinglePage-67E3PVMP.js.map +0 -1
- package/dist/BlogTagPage-EEOIAALL.js.map +0 -1
- package/dist/BrandsPage-SNVIBZGR.js +0 -132
- package/dist/BrandsPage-SNVIBZGR.js.map +0 -1
- package/dist/Breadcrumb-4I2HVAFR.js.map +0 -1
- package/dist/CartItem-A7Y6MZXS.js.map +0 -1
- package/dist/CartSummary-MUCVTNKG.js.map +0 -1
- package/dist/CustomerLayout-L3Y2TIPF.js.map +0 -1
- package/dist/LoyaltyPage-IULR2XKZ.js.map +0 -1
- package/dist/MainMenu-3KKSHFCS.js.map +0 -1
- package/dist/MobileMenu-DBJ23EKX.js.map +0 -1
- package/dist/NotificationsPage-PUS3WBU6.js.map +0 -1
- package/dist/OrderSinglePage-4CK6OT6U.js.map +0 -1
- package/dist/OrdersPage-EGIDHSYS.js.map +0 -1
- package/dist/ProfilePage-IO2MDE53.js.map +0 -1
- package/dist/SeoCartWidget-TPSVEGMI.js.map +0 -1
- package/dist/SettingsPage-ZTD4ALAA.js.map +0 -1
- package/dist/ThankYouPage-IRLZI3HI.js.map +0 -1
- package/dist/WalletPage-ZTSSGFMO.js.map +0 -1
- package/dist/WishlistPage-OADS7B5J.js.map +0 -1
- package/dist/chunk-6EES4C7J.js +0 -14
- package/dist/chunk-ANWDPISS.js.map +0 -1
- package/dist/chunk-AVUX6GAG.js +0 -29
- package/dist/chunk-AVUX6GAG.js.map +0 -1
- package/dist/chunk-B3EFOE57.js.map +0 -1
- package/dist/chunk-BHU25UEW.js.map +0 -1
- package/dist/chunk-HAV32VZS.js.map +0 -1
- package/dist/chunk-OGQXRBCR.js.map +0 -1
- package/dist/chunk-R2ULWW5T.js.map +0 -1
- package/dist/chunk-RLSYCDI4.js.map +0 -1
- package/dist/chunk-UQAUDOI7.js.map +0 -1
- package/dist/chunk-VRV5F6G7.js.map +0 -1
- package/dist/chunk-XTMHHLNK.js.map +0 -1
- package/dist/document-class-SX2LHILG.js +0 -25
- package/dist/navigation-Z6JMJ4FZ.js +0 -11
- package/dist/not-found-CDXSWL7T.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/routes/account/orders/OrdersPage.tsx"],"names":["order"],"mappings":"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","file":"OrdersPage-DYKFBMRC.js","sourcesContent":["import { useState, useRef, useCallback } from 'react';\nimport { useCopyToClipboard } from '@uidotdev/usehooks';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { HookSlot, useDate, useMoney } from '../../../hooks';\nimport { NoContent, Link } from '../../../components/common';\nimport { useTranslation } from '../../../providers/I18nProvider';\nimport { useNavigate, useLocation } from '../../../providers/NavigationProvider';\nimport { order } from '../../../api/order';\nimport type { OrdersPageProps, OrderListItem } from './types';\n\ntype StatusOption = { slug: string; name: string };\n\n/**\n * Label for a selected status that isn't among the loaded orders (e.g. arriving on\n * `?status=pending` from the account menu, where no order names it). Always a translation\n * key, never a hard-coded string: the \"pending payments\" title for `pending`, otherwise\n * `pages.orders.status_<slug>` (a store or theme can define it for any status), falling back\n * to the slug made readable only when no such key exists.\n */\nfunction statusLabel(slug: string, t: ReturnType<typeof useTranslation>['t']): string {\n if (slug === 'pending') return t('common.titles.pending_orders', 'Pending payments');\n const words = slug.replace(/[_-]+/g, ' ').trim();\n return t(`pages.orders.status_${slug}`, words.charAt(0).toUpperCase() + words.slice(1));\n}\n\n/**\n * Adds the statuses found on `orders` to `known`. Only orders with a status `slug` count:\n * the loader and API filter by that identifier, and a display name (`Pending`, or a\n * localized label) would select nothing.\n */\nfunction mergeStatuses(known: StatusOption[], orders: OrderListItem[]): StatusOption[] {\n const seen = new Map(known.map((status) => [status.slug, status]));\n for (const item of orders) {\n const slug = item.status?.slug;\n if (slug && !seen.has(slug)) seen.set(slug, { slug, name: item.status.name });\n }\n return seen.size === known.length ? known : Array.from(seen.values());\n}\n\n/**\n * Status filter (\"All\" plus every status seen so far), as a labelled group of toggle\n * buttons — it filters one list through the URL, so it isn't a tab widget.\n *\n * There is no \"list every status this store uses\" endpoint, so the options are the\n * statuses seen so far: those on the loaded orders (the parent accumulates them across\n * filter changes and cursor pages) plus the selected one, so \"All\" stays available even\n * when a status has no orders.\n */\nfunction OrdersFilters({\n statuses,\n selectedStatus,\n}: {\n statuses: StatusOption[];\n selectedStatus?: string;\n}) {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const location = useLocation();\n\n const options =\n selectedStatus && !statuses.some((status) => status.slug === selectedStatus)\n ? [...statuses, { slug: selectedStatus, name: statusLabel(selectedStatus, t) }]\n : statuses;\n\n if (options.length === 0) return null;\n\n const setStatus = (slug?: string) => {\n const params = new URLSearchParams(location.searchStr);\n if (slug) params.set('status', slug);\n else params.delete('status');\n const search = params.toString();\n navigate(location.pathname + (search ? `?${search}` : ''));\n };\n\n return (\n <div className=\"s-orders-filters\" role=\"group\" aria-label={t('pages.orders.status')}>\n <button\n type=\"button\"\n aria-pressed={!selectedStatus}\n className={`s-orders-filters-item${!selectedStatus ? ' s-orders-filters-item-active' : ''}`}\n onClick={() => setStatus()}\n >\n {t('common.elements.all', 'All')}\n </button>\n {options.map((status) => (\n <button\n key={status.slug}\n type=\"button\"\n aria-pressed={selectedStatus === status.slug}\n className={`s-orders-filters-item${selectedStatus === status.slug ? ' s-orders-filters-item-active' : ''}`}\n onClick={() => setStatus(status.slug)}\n >\n {status.name}\n </button>\n ))}\n </div>\n );\n}\n\nexport function OrdersPage({ orders, cursor, query }: OrdersPageProps) {\n const { t } = useTranslation();\n const cursorRef = useRef<string | null>(cursor?.next ?? null);\n const prevQueryRef = useRef(query);\n if (prevQueryRef.current !== query) {\n prevQueryRef.current = query;\n cursorRef.current = cursor?.next ?? null;\n }\n\n // Statuses seen so far — kept across filter changes and cursor pages so the options\n // don't narrow to the selected status.\n const [statuses, setStatuses] = useState<StatusOption[]>(() => mergeStatuses([], orders));\n // Fold in a new `orders` prop while rendering (React's documented alternative to an\n // effect), so the options never lag a render behind the list.\n const [seenOrders, setSeenOrders] = useState(orders);\n if (seenOrders !== orders) {\n setSeenOrders(orders);\n setStatuses((known) => mergeStatuses(known, orders));\n }\n\n const loader = useCallback(async () => {\n if (!cursorRef.current) return { items: [], next: null };\n\n const response = await order.list({\n cursor: cursorRef.current,\n status: query?.status,\n feedback_status: query?.feedback_status,\n });\n cursorRef.current = response.cursor?.next ?? null;\n setStatuses((known) => mergeStatuses(known, response.data));\n return {\n items: response.data,\n next: response.cursor?.next ?? null,\n };\n }, [query]);\n\n return (\n <>\n <HookSlot name=\"customer:orders.index.items.start\" />\n\n <OrdersFilters statuses={statuses} selectedStatus={query?.status} />\n\n {orders.length === 0 ? (\n <NoContent icon=\"sicon-packed-box\" message={t('pages.orders.non_orders')} />\n ) : (\n <ItemsList\n items={orders}\n loader={cursor?.next ? loader : undefined}\n mode=\"button\"\n className=\"s-orders-wrapper\"\n t={(key, fallback) => t(key, fallback ?? '')}\n >\n {(items: OrderListItem[]) => (\n <table className=\"s-orders-table\">\n <thead className=\"s-orders-table-head\">\n <tr className=\"s-orders-table-head-tr\">\n <th className=\"s-orders-table-head-tr-th\" scope=\"col\">\n {t('pages.thank_you.order_id')}\n </th>\n <th className=\"s-orders-table-head-tr-th\" scope=\"col\">\n {t('pages.orders.total')}\n </th>\n <th className=\"s-orders-table-head-tr-th\" scope=\"col\">\n {t('pages.orders.date')}\n </th>\n <th className=\"s-orders-table-head-tr-th\" scope=\"col\">\n {t('pages.orders.status')}\n </th>\n </tr>\n </thead>\n <tbody className=\"s-orders-table-tbody\">\n {items.map((orderItem) => (\n <OrderRow key={orderItem.id} order={orderItem} />\n ))}\n </tbody>\n </table>\n )}\n </ItemsList>\n )}\n\n <HookSlot name=\"customer:orders.index.items.end\" />\n </>\n );\n}\n\nfunction OrderRow({ order }: { order: OrderListItem }) {\n const { t, isRTL } = useTranslation();\n const { format: formatDate } = useDate();\n const { format: formatMoney } = useMoney();\n const [, copyToClipboard] = useCopyToClipboard();\n const [copied, setCopied] = useState(false);\n const orderUrl = `/account/orders/${order.id}`;\n\n const handleCopy = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n copyToClipboard(String(order.reference_id));\n setCopied(true);\n setTimeout(() => setCopied(false), 1000);\n };\n\n return (\n <tr className=\"s-orders-table-tbody-tr s-orders-table-tbody-tr-shadow\">\n <td className=\"s-orders-table-tbody-tr-td\">\n <div className=\"s-orders-table-tbody-tr-td-content\">\n <span className=\"s-orders-mobile-title\">{t('pages.thank_you.order_id')}:</span>\n <span className=\"s-orders-reference-id hidden md:inline-block\">\n #{order.reference_id}\n </span>\n <Link to={orderUrl} aria-label={t('pages.thank_you.order_id')} />\n <div className=\"s-orders-copy-to-clipboard-button flex items-center md:hidden\">\n <SallaButton\n className={`relative ${copied ? 'copied' : 'code-to-copy'}`}\n color=\"dark\"\n shape=\"link\"\n data-content={order.reference_id.toString()}\n onClick={handleCopy}\n >\n {isRTL ? (\n <>\n <i className=\"sicon-swap-stroke s-orders-copy-to-clipboard-button-icon pointer-events-none rtl:mr-1 ltr:ml-1\" />\n <span>#{order.reference_id}</span>\n </>\n ) : (\n <>\n <span>#{order.reference_id}</span>\n <i className=\"sicon-swap-stroke s-orders-copy-to-clipboard-button-icon pointer-events-none rtl:mr-1 ltr:ml-1\" />\n </>\n )}\n </SallaButton>\n </div>\n </div>\n </td>\n\n <td className=\"s-orders-table-tbody-tr-td\">\n <div className=\"s-orders-table-tbody-tr-td-content\">\n <span className=\"s-orders-mobile-title\">{t('pages.orders.total')}:</span>\n {formatMoney(order.amounts.total.amount, { currency: order.amounts.total.currency })}\n <Link to={orderUrl} aria-label={t('pages.orders.total')} />\n </div>\n </td>\n\n <td className=\"s-orders-table-tbody-tr-td\">\n <div className=\"s-orders-table-tbody-tr-td-content\">\n <span className=\"s-orders-mobile-title\">{t('pages.orders.date')}:</span>\n {formatDate(order.created_at.date)}\n <Link to={orderUrl} aria-label={t('pages.orders.date')} />\n </div>\n </td>\n\n <td className=\"s-orders-table-tbody-tr-td\">\n <div className=\"s-orders-table-tbody-tr-td-content\">\n <span className=\"s-orders-mobile-title\">{t('pages.orders.status')}:</span>\n <span\n className=\"s-orders-status-container rtl:mr-auto ltr:ml-auto md:mx-0\"\n style={order.status.color ? { color: order.status.color } : undefined}\n >\n {order.status.icon && <i className={`mt-1 ${order.status.icon}`} />}\n <span>{order.status.name}</span>\n </span>\n <i\n className={`sicon-star2 s-orders-status-rated ${\n order.features.is_read ? 's-orders-rated-text' : 's-orders-unrated-text'\n }`}\n />\n <Link to={orderUrl} aria-label={t('pages.orders.status')} />\n </div>\n </td>\n </tr>\n );\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useComments } from './chunk-YMVLYYLU.js';
|
|
2
|
-
import { LazyBreadcrumb } from './chunk-
|
|
2
|
+
import { LazyBreadcrumb } from './chunk-TLAEW7TB.js';
|
|
3
3
|
import './chunk-AXW67SY7.js';
|
|
4
4
|
import './chunk-BYMOPN2S.js';
|
|
5
5
|
import './chunk-SKLEJJ6M.js';
|
|
@@ -25,5 +25,5 @@ function PageSingle({ page }) {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export { PageSingle };
|
|
28
|
-
//# sourceMappingURL=PageSingle-
|
|
29
|
-
//# sourceMappingURL=PageSingle-
|
|
28
|
+
//# sourceMappingURL=PageSingle-6U6GPMXJ.js.map
|
|
29
|
+
//# sourceMappingURL=PageSingle-6U6GPMXJ.js.map
|
|
@@ -1 +1 @@
|
|
|
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-
|
|
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-6U6GPMXJ.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"]}
|
|
@@ -4,7 +4,7 @@ import { useTranslation } from './chunk-TYNZ5B2B.js';
|
|
|
4
4
|
import './chunk-T72DAX7R.js';
|
|
5
5
|
import { HookSlot } from './chunk-Q7VWURUR.js';
|
|
6
6
|
import './chunk-GU2KUQVD.js';
|
|
7
|
-
import { Image, LazyCurrencySymbol } from './chunk-
|
|
7
|
+
import { Image, LazyCurrencySymbol } from './chunk-TLAEW7TB.js';
|
|
8
8
|
import { Link } from './chunk-AXW67SY7.js';
|
|
9
9
|
import './chunk-BYMOPN2S.js';
|
|
10
10
|
import './chunk-SKLEJJ6M.js';
|
|
@@ -192,5 +192,5 @@ function ProductQuantityInfo({ product }) {
|
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
export { ProductDetails };
|
|
195
|
-
//# sourceMappingURL=ProductDetails-
|
|
196
|
-
//# sourceMappingURL=ProductDetails-
|
|
195
|
+
//# sourceMappingURL=ProductDetails-OWSIL357.js.map
|
|
196
|
+
//# sourceMappingURL=ProductDetails-OWSIL357.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/product/ProductDetails.tsx"],"names":["Fragment"],"mappings":"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","file":"ProductDetails-RY6PNKKJ.js","sourcesContent":["import { Fragment, useState } from 'react';\nimport { HookSlot } from '../../hooks/HookSlot';\nimport { HookName } from '../../types/hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\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\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\"\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.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 <HookSlot name={HookName.PRODUCT_DESCRIPTION_END} context={productHookContext} />\n </>\n );\n}\n\nfunction ProductPrice({ product }: { product: Product }) {\n const { t } = useTranslation();\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={product.currency} />\n </p>\n <span className=\"text-gray-500 line-through\">\n {product.regular_price} <CurrencySymbol currency={product.currency} />\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={product.currency} />\n </p>\n </div>\n </div>\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 = 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
|
+
{"version":3,"sources":["../src/components/product/ProductDetails.tsx"],"names":["Fragment"],"mappings":"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","file":"ProductDetails-OWSIL357.js","sourcesContent":["import { Fragment, useState } from 'react';\nimport { HookSlot } from '../../hooks/HookSlot';\nimport { HookName } from '../../types/hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\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\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\"\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.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 <HookSlot name={HookName.PRODUCT_DESCRIPTION_END} context={productHookContext} />\n </>\n );\n}\n\nfunction ProductPrice({ product }: { product: Product }) {\n const { t } = useTranslation();\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={product.currency} />\n </p>\n <span className=\"text-gray-500 line-through\">\n {product.regular_price} <CurrencySymbol currency={product.currency} />\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={product.currency} />\n </p>\n </div>\n </div>\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 = 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,19 +1,20 @@
|
|
|
1
|
-
import './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
import './chunk-2U3PUO3V.js';
|
|
2
|
+
import './chunk-3YVAYIM4.js';
|
|
3
3
|
import './chunk-JKIRRMBU.js';
|
|
4
4
|
import './chunk-2JV6WZ6O.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-UIOLSYKV.js';
|
|
6
6
|
import './chunk-VVZNW5CB.js';
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
7
|
+
import './chunk-2XGQSJKH.js';
|
|
8
|
+
import './chunk-WH225GEC.js';
|
|
9
9
|
import './chunk-TFB3QXYH.js';
|
|
10
10
|
import './chunk-C5X6CVXC.js';
|
|
11
|
-
import { useUser } from './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
11
|
+
import { useUser } from './chunk-UZKTK6YV.js';
|
|
12
|
+
import './chunk-5X2UFNKY.js';
|
|
13
|
+
import './chunk-P3OPJL6I.js';
|
|
14
|
+
import './chunk-WY4IYO3G.js';
|
|
15
|
+
import './chunk-TYLKNVQA.js';
|
|
16
|
+
import './chunk-SR4OTLTJ.js';
|
|
17
|
+
import './chunk-N2S25NXP.js';
|
|
17
18
|
import './chunk-TP3LCGE7.js';
|
|
18
19
|
import './chunk-Z653O7MX.js';
|
|
19
20
|
import './chunk-ZCH7W7DZ.js';
|
|
@@ -29,7 +30,7 @@ import './chunk-YMVLYYLU.js';
|
|
|
29
30
|
import './chunk-RJPPO3ET.js';
|
|
30
31
|
import { HookSlot } from './chunk-Q7VWURUR.js';
|
|
31
32
|
import './chunk-GU2KUQVD.js';
|
|
32
|
-
import './chunk-
|
|
33
|
+
import './chunk-TLAEW7TB.js';
|
|
33
34
|
import './chunk-AXW67SY7.js';
|
|
34
35
|
import './chunk-BYMOPN2S.js';
|
|
35
36
|
import './chunk-SKLEJJ6M.js';
|
|
@@ -65,5 +66,5 @@ function ProfilePage(_props) {
|
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
export { ProfilePage };
|
|
68
|
-
//# sourceMappingURL=ProfilePage-
|
|
69
|
-
//# sourceMappingURL=ProfilePage-
|
|
69
|
+
//# sourceMappingURL=ProfilePage-LLCIJHAI.js.map
|
|
70
|
+
//# sourceMappingURL=ProfilePage-LLCIJHAI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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-LLCIJHAI.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,19 +1,20 @@
|
|
|
1
|
-
import './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
import './chunk-2U3PUO3V.js';
|
|
2
|
+
import './chunk-3YVAYIM4.js';
|
|
3
3
|
import './chunk-JKIRRMBU.js';
|
|
4
4
|
import './chunk-2JV6WZ6O.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-UIOLSYKV.js';
|
|
6
6
|
import './chunk-VVZNW5CB.js';
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
7
|
+
import './chunk-2XGQSJKH.js';
|
|
8
|
+
import './chunk-WH225GEC.js';
|
|
9
9
|
import './chunk-TFB3QXYH.js';
|
|
10
10
|
import './chunk-C5X6CVXC.js';
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
11
|
+
import './chunk-UZKTK6YV.js';
|
|
12
|
+
import './chunk-5X2UFNKY.js';
|
|
13
|
+
import './chunk-P3OPJL6I.js';
|
|
14
|
+
import './chunk-WY4IYO3G.js';
|
|
15
|
+
import './chunk-TYLKNVQA.js';
|
|
16
|
+
import './chunk-SR4OTLTJ.js';
|
|
17
|
+
import './chunk-N2S25NXP.js';
|
|
17
18
|
import './chunk-TP3LCGE7.js';
|
|
18
19
|
import './chunk-Z653O7MX.js';
|
|
19
20
|
import './chunk-ZCH7W7DZ.js';
|
|
@@ -29,7 +30,7 @@ import './chunk-YMVLYYLU.js';
|
|
|
29
30
|
import './chunk-RJPPO3ET.js';
|
|
30
31
|
import './chunk-Q7VWURUR.js';
|
|
31
32
|
import './chunk-GU2KUQVD.js';
|
|
32
|
-
import './chunk-
|
|
33
|
+
import './chunk-TLAEW7TB.js';
|
|
33
34
|
import './chunk-AXW67SY7.js';
|
|
34
35
|
import './chunk-BYMOPN2S.js';
|
|
35
36
|
import './chunk-SKLEJJ6M.js';
|
|
@@ -110,5 +111,5 @@ function SeoCartWidget({ cart, step = 1 }) {
|
|
|
110
111
|
}
|
|
111
112
|
|
|
112
113
|
export { SeoCartWidget };
|
|
113
|
-
//# sourceMappingURL=SeoCartWidget-
|
|
114
|
-
//# sourceMappingURL=SeoCartWidget-
|
|
114
|
+
//# sourceMappingURL=SeoCartWidget-ZL3FTBWK.js.map
|
|
115
|
+
//# sourceMappingURL=SeoCartWidget-ZL3FTBWK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/analytics/gtm.ts","../src/components/cart/SeoCartWidget.tsx"],"names":[],"mappings":"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","file":"SeoCartWidget-ZL3FTBWK.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';\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 salla = window.salla;\n if (!salla?.event?.on) return;\n\n const onShipping = () => pushCheckoutEvent(2, cart, currencyCode);\n const onPayment = () => pushCheckoutEvent(3, cart, currencyCode);\n\n salla.event.on('checkout::step.shipping', onShipping);\n salla.event.on('checkout::step.payment', onPayment);\n\n return () => {\n salla.event?.off?.('checkout::step.shipping', onShipping);\n salla.event?.off?.('checkout::step.payment', onPayment);\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 storeName = store.name ?? '';\n const stepTitle = t(PAGE_TITLE_KEYS[step], PAGE_TITLE_KEYS[step]);\n document.title = storeName ? `${stepTitle} — ${storeName}` : stepTitle;\n }, [step, store.name, t]);\n\n return null;\n}\n"]}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
import './chunk-2U3PUO3V.js';
|
|
2
|
+
import './chunk-3YVAYIM4.js';
|
|
3
3
|
import './chunk-JKIRRMBU.js';
|
|
4
4
|
import './chunk-2JV6WZ6O.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-UIOLSYKV.js';
|
|
6
6
|
import './chunk-VVZNW5CB.js';
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
7
|
+
import './chunk-2XGQSJKH.js';
|
|
8
|
+
import './chunk-WH225GEC.js';
|
|
9
9
|
import './chunk-TFB3QXYH.js';
|
|
10
10
|
import './chunk-C5X6CVXC.js';
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
11
|
+
import './chunk-UZKTK6YV.js';
|
|
12
|
+
import './chunk-5X2UFNKY.js';
|
|
13
|
+
import './chunk-P3OPJL6I.js';
|
|
14
|
+
import './chunk-WY4IYO3G.js';
|
|
15
|
+
import './chunk-TYLKNVQA.js';
|
|
16
|
+
import './chunk-SR4OTLTJ.js';
|
|
17
|
+
import './chunk-N2S25NXP.js';
|
|
17
18
|
import './chunk-TP3LCGE7.js';
|
|
18
19
|
import './chunk-Z653O7MX.js';
|
|
19
20
|
import './chunk-ZCH7W7DZ.js';
|
|
@@ -29,7 +30,7 @@ import './chunk-YMVLYYLU.js';
|
|
|
29
30
|
import './chunk-RJPPO3ET.js';
|
|
30
31
|
import { HookSlot } from './chunk-Q7VWURUR.js';
|
|
31
32
|
import './chunk-GU2KUQVD.js';
|
|
32
|
-
import './chunk-
|
|
33
|
+
import './chunk-TLAEW7TB.js';
|
|
33
34
|
import './chunk-AXW67SY7.js';
|
|
34
35
|
import './chunk-BYMOPN2S.js';
|
|
35
36
|
import './chunk-SKLEJJ6M.js';
|
|
@@ -52,5 +53,5 @@ function SettingsPage(_props) {
|
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
export { SettingsPage };
|
|
55
|
-
//# sourceMappingURL=SettingsPage-
|
|
56
|
-
//# sourceMappingURL=SettingsPage-
|
|
56
|
+
//# sourceMappingURL=SettingsPage-2XU5IF4A.js.map
|
|
57
|
+
//# sourceMappingURL=SettingsPage-2XU5IF4A.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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-2XU5IF4A.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,20 +1,21 @@
|
|
|
1
|
-
export { StoreClosedNotification } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { StoreClosedNotification } from './chunk-NFTOMTTI.js';
|
|
2
|
+
import './chunk-2U3PUO3V.js';
|
|
3
|
+
import './chunk-3YVAYIM4.js';
|
|
4
4
|
import './chunk-JKIRRMBU.js';
|
|
5
5
|
import './chunk-2JV6WZ6O.js';
|
|
6
|
-
import './chunk-
|
|
6
|
+
import './chunk-UIOLSYKV.js';
|
|
7
7
|
import './chunk-VVZNW5CB.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
8
|
+
import './chunk-2XGQSJKH.js';
|
|
9
|
+
import './chunk-WH225GEC.js';
|
|
10
10
|
import './chunk-TFB3QXYH.js';
|
|
11
11
|
import './chunk-C5X6CVXC.js';
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
12
|
+
import './chunk-UZKTK6YV.js';
|
|
13
|
+
import './chunk-5X2UFNKY.js';
|
|
14
|
+
import './chunk-P3OPJL6I.js';
|
|
15
|
+
import './chunk-WY4IYO3G.js';
|
|
16
|
+
import './chunk-TYLKNVQA.js';
|
|
17
|
+
import './chunk-SR4OTLTJ.js';
|
|
18
|
+
import './chunk-N2S25NXP.js';
|
|
18
19
|
import './chunk-TP3LCGE7.js';
|
|
19
20
|
import './chunk-Z653O7MX.js';
|
|
20
21
|
import './chunk-ZCH7W7DZ.js';
|
|
@@ -30,7 +31,7 @@ import './chunk-YMVLYYLU.js';
|
|
|
30
31
|
import './chunk-RJPPO3ET.js';
|
|
31
32
|
import './chunk-Q7VWURUR.js';
|
|
32
33
|
import './chunk-GU2KUQVD.js';
|
|
33
|
-
import './chunk-
|
|
34
|
+
import './chunk-TLAEW7TB.js';
|
|
34
35
|
import './chunk-AXW67SY7.js';
|
|
35
36
|
import './chunk-BYMOPN2S.js';
|
|
36
37
|
import './chunk-SKLEJJ6M.js';
|
|
@@ -41,5 +42,5 @@ import './chunk-HX3YKS5W.js';
|
|
|
41
42
|
import './chunk-OBSAH7K6.js';
|
|
42
43
|
import './chunk-DF6FBKDN.js';
|
|
43
44
|
import './chunk-DGUM43GV.js';
|
|
44
|
-
//# sourceMappingURL=StoreClosedNotification-
|
|
45
|
-
//# sourceMappingURL=StoreClosedNotification-
|
|
45
|
+
//# sourceMappingURL=StoreClosedNotification-CNJI2Q26.js.map
|
|
46
|
+
//# sourceMappingURL=StoreClosedNotification-CNJI2Q26.js.map
|
package/dist/{StoreClosedNotification-52REE2T5.js.map → StoreClosedNotification-CNJI2Q26.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"StoreClosedNotification-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"StoreClosedNotification-CNJI2Q26.js"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useTranslation } from './chunk-TYNZ5B2B.js';
|
|
2
2
|
import './chunk-T72DAX7R.js';
|
|
3
3
|
import { useComments } from './chunk-YMVLYYLU.js';
|
|
4
|
-
import { LazyBreadcrumb } from './chunk-
|
|
4
|
+
import { LazyBreadcrumb } from './chunk-TLAEW7TB.js';
|
|
5
5
|
import './chunk-AXW67SY7.js';
|
|
6
6
|
import './chunk-BYMOPN2S.js';
|
|
7
7
|
import './chunk-SKLEJJ6M.js';
|
|
@@ -74,5 +74,5 @@ function TestimonialsPage({ page }) {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
export { TestimonialsPage };
|
|
77
|
-
//# sourceMappingURL=TestimonialsPage-
|
|
78
|
-
//# sourceMappingURL=TestimonialsPage-
|
|
77
|
+
//# sourceMappingURL=TestimonialsPage-QYPLMNWL.js.map
|
|
78
|
+
//# sourceMappingURL=TestimonialsPage-QYPLMNWL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/testimonials/TestimonialsPage.tsx"],"names":[],"mappings":"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","file":"TestimonialsPage-
|
|
1
|
+
{"version":3,"sources":["../src/routes/testimonials/TestimonialsPage.tsx"],"names":[],"mappings":"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","file":"TestimonialsPage-QYPLMNWL.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,19 +1,20 @@
|
|
|
1
|
-
import { usePageConfig } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
import { usePageConfig } from './chunk-2U3PUO3V.js';
|
|
2
|
+
import './chunk-3YVAYIM4.js';
|
|
3
3
|
import './chunk-JKIRRMBU.js';
|
|
4
4
|
import './chunk-2JV6WZ6O.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-UIOLSYKV.js';
|
|
6
6
|
import './chunk-VVZNW5CB.js';
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
7
|
+
import './chunk-2XGQSJKH.js';
|
|
8
|
+
import './chunk-WH225GEC.js';
|
|
9
9
|
import './chunk-TFB3QXYH.js';
|
|
10
10
|
import './chunk-C5X6CVXC.js';
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
11
|
+
import './chunk-UZKTK6YV.js';
|
|
12
|
+
import './chunk-5X2UFNKY.js';
|
|
13
|
+
import './chunk-P3OPJL6I.js';
|
|
14
|
+
import './chunk-WY4IYO3G.js';
|
|
15
|
+
import './chunk-TYLKNVQA.js';
|
|
16
|
+
import './chunk-SR4OTLTJ.js';
|
|
17
|
+
import './chunk-N2S25NXP.js';
|
|
17
18
|
import './chunk-TP3LCGE7.js';
|
|
18
19
|
import './chunk-Z653O7MX.js';
|
|
19
20
|
import './chunk-ZCH7W7DZ.js';
|
|
@@ -29,7 +30,7 @@ import './chunk-YMVLYYLU.js';
|
|
|
29
30
|
import './chunk-RJPPO3ET.js';
|
|
30
31
|
import { HookSlot } from './chunk-Q7VWURUR.js';
|
|
31
32
|
import './chunk-GU2KUQVD.js';
|
|
32
|
-
import './chunk-
|
|
33
|
+
import './chunk-TLAEW7TB.js';
|
|
33
34
|
import { Link } from './chunk-AXW67SY7.js';
|
|
34
35
|
import './chunk-BYMOPN2S.js';
|
|
35
36
|
import './chunk-SKLEJJ6M.js';
|
|
@@ -252,5 +253,5 @@ function ThankYouPage({
|
|
|
252
253
|
}
|
|
253
254
|
|
|
254
255
|
export { ThankYouPage };
|
|
255
|
-
//# sourceMappingURL=ThankYouPage-
|
|
256
|
-
//# sourceMappingURL=ThankYouPage-
|
|
256
|
+
//# sourceMappingURL=ThankYouPage-WG3CM5JP.js.map
|
|
257
|
+
//# sourceMappingURL=ThankYouPage-WG3CM5JP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/routes/thank-you/ThankYouPage.tsx"],"names":[],"mappings":"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","file":"ThankYouPage-WG3CM5JP.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';\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 salla = window.salla;\n if (!salla?.order?.event?.onInvoiceSent) return;\n\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\n salla.order.event.onInvoiceSent(handleInvoiceSent);\n\n return () => {\n salla.event.off('order::invoice.sent', handleInvoiceSent as (...args: unknown[]) => void);\n };\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"]}
|