@salla.sa/twilight-theme-engine 1.0.0-beta.9 → 1.0.1
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-VS67AFNL.js → AddToCartForm-E6LDRNGM.js} +24 -25
- package/dist/AddToCartForm-E6LDRNGM.js.map +1 -0
- package/dist/{BlogAuthorPage-276K2KQS.js → BlogAuthorPage-SK7ZTUPN.js} +30 -27
- package/dist/BlogAuthorPage-SK7ZTUPN.js.map +1 -0
- package/dist/{BlogCategoryPage-GF5PLRG7.js → BlogCategoryPage-XEUUE3H2.js} +30 -27
- package/dist/BlogCategoryPage-XEUUE3H2.js.map +1 -0
- package/dist/{BlogPage-BU672BXD.js → BlogPage-67ZEZTMY.js} +33 -24
- package/dist/BlogPage-67ZEZTMY.js.map +1 -0
- package/dist/{BlogSinglePage-ELV4S5EV.js → BlogSinglePage-H5NWL37R.js} +25 -23
- package/dist/BlogSinglePage-H5NWL37R.js.map +1 -0
- package/dist/{BlogTagPage-TXQP6ZOI.js → BlogTagPage-I6YXVDTH.js} +30 -27
- package/dist/BlogTagPage-I6YXVDTH.js.map +1 -0
- package/dist/{BrandsPage-C6ZHC4KC.js → BrandsPage-RVK36ZAV.js} +24 -23
- package/dist/BrandsPage-RVK36ZAV.js.map +1 -0
- package/dist/{Breadcrumb-TG4UTNRM.js → Breadcrumb-KINELHN4.js} +24 -23
- package/dist/Breadcrumb-KINELHN4.js.map +1 -0
- package/dist/{CartItem-55JV6HDS.js → CartItem-YPIGZYJX.js} +27 -26
- package/dist/CartItem-YPIGZYJX.js.map +1 -0
- package/dist/{CartSummary-CUWMHHMD.js → CartSummary-FHG4IR4S.js} +24 -23
- package/dist/CartSummary-FHG4IR4S.js.map +1 -0
- package/dist/Copyright-TWAHRC7V.js +9 -0
- package/dist/{Copyright-PG76AVV6.js.map → Copyright-TWAHRC7V.js.map} +1 -1
- package/dist/{CustomerLayout-SLNVCNZ6.js → CustomerLayout-NI3HBOZB.js} +24 -23
- package/dist/CustomerLayout-NI3HBOZB.js.map +1 -0
- package/dist/ErrorPage-XGBROULF.js +6 -0
- package/dist/{ErrorPage-TK4U3ENF.js.map → ErrorPage-XGBROULF.js.map} +1 -1
- package/dist/Footer-6XXLPWRH.js +40 -0
- package/dist/{Footer-MZDSEK57.js.map → Footer-6XXLPWRH.js.map} +1 -1
- package/dist/Header-56YZL6PB.js +15 -0
- package/dist/{Header-CXFKDTOA.js.map → Header-56YZL6PB.js.map} +1 -1
- package/dist/ImageModal-LHFSYPSU.js +32 -0
- package/dist/ImageModal-LHFSYPSU.js.map +1 -0
- package/dist/{LoyaltyPage-AIA3CUYI.js → LoyaltyPage-3QLMFVWD.js} +29 -28
- package/dist/LoyaltyPage-3QLMFVWD.js.map +1 -0
- package/dist/{MainMenu-T3M5RB7L.js → MainMenu-TDLQET2Y.js} +16 -37
- package/dist/MainMenu-TDLQET2Y.js.map +1 -0
- package/dist/MasterLayout-4IYMFDYJ.js +40 -0
- package/dist/{MasterLayout-QUBHRA32.js.map → MasterLayout-4IYMFDYJ.js.map} +1 -1
- package/dist/{MobileMenu-6D52JOQA.js → MobileMenu-GVXPV5HQ.js} +47 -60
- package/dist/MobileMenu-GVXPV5HQ.js.map +1 -0
- package/dist/{NotificationsPage-6H45SAS7.js → NotificationsPage-AOZRDULT.js} +24 -23
- package/dist/NotificationsPage-AOZRDULT.js.map +1 -0
- package/dist/{OrderSinglePage-GP2M3YVH.js → OrderSinglePage-M6GBDZPD.js} +73 -61
- package/dist/OrderSinglePage-M6GBDZPD.js.map +1 -0
- package/dist/{OrdersPage-OQGJLTQP.js → OrdersPage-DJMOQVJP.js} +25 -24
- package/dist/OrdersPage-DJMOQVJP.js.map +1 -0
- package/dist/{PageSingle-44NVAUIT.js → PageSingle-TQC47BEK.js} +3 -3
- package/dist/{PageSingle-44NVAUIT.js.map → PageSingle-TQC47BEK.js.map} +1 -1
- package/dist/{PreOrderNotification-ZVTGNV7K.js → PreOrderNotification-OP57EA6F.js} +3 -3
- package/dist/PreOrderNotification-OP57EA6F.js.map +1 -0
- package/dist/{PriceQuoteButton-RAAPL4N4.js → PriceQuoteButton-CGRNHY3E.js} +6 -6
- package/dist/PriceQuoteButton-CGRNHY3E.js.map +1 -0
- package/dist/{ProductDetails-2JUCRU4W.js → ProductDetails-4YZW7CKN.js} +11 -10
- package/dist/ProductDetails-4YZW7CKN.js.map +1 -0
- package/dist/{ProfilePage-XGZ2HCQH.js → ProfilePage-KFR7PX6Z.js} +24 -23
- package/dist/ProfilePage-KFR7PX6Z.js.map +1 -0
- package/dist/{SeoCartWidget-PDK6IQ2H.js → SeoCartWidget-N6KHTRZA.js} +24 -23
- package/dist/SeoCartWidget-N6KHTRZA.js.map +1 -0
- package/dist/{SettingsPage-VCQNV2PP.js → SettingsPage-7VCOR3YR.js} +24 -23
- package/dist/SettingsPage-7VCOR3YR.js.map +1 -0
- package/dist/StoreClosedNotification-7XSPEVKM.js +41 -0
- package/dist/{StoreClosedNotification-3JRNBNQK.js.map → StoreClosedNotification-7XSPEVKM.js.map} +1 -1
- package/dist/{TestimonialsPage-ENMVJ4QG.js → TestimonialsPage-YWWIGHDX.js} +4 -4
- package/dist/TestimonialsPage-YWWIGHDX.js.map +1 -0
- package/dist/{ThankYouPage-4FTP6E2Y.js → ThankYouPage-O6NMGVNQ.js} +32 -26
- package/dist/ThankYouPage-O6NMGVNQ.js.map +1 -0
- package/dist/{WalletPage-VKV44EEG.js → WalletPage-TGFDG6JQ.js} +25 -24
- package/dist/WalletPage-TGFDG6JQ.js.map +1 -0
- package/dist/WidgetHead-RWL7D3CT.js +7 -0
- package/dist/{WidgetHead-FXEPCB23.js.map → WidgetHead-RWL7D3CT.js.map} +1 -1
- package/dist/{WishlistPage-GJZCXQUY.js → WishlistPage-XDXSQXME.js} +25 -24
- package/dist/WishlistPage-XDXSQXME.js.map +1 -0
- package/dist/ambient/virtual-modules.d.ts +28 -0
- package/dist/api/apps.js +2 -2
- package/dist/api/brands.js +5 -34
- package/dist/api/cart.js +5 -34
- package/dist/api/category.js +5 -34
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +2 -2
- package/dist/api/home.js +3 -3
- package/dist/api/loyalty.js +5 -34
- package/dist/api/menu.js +3 -3
- package/dist/api/notification.js +3 -3
- package/dist/api/order.js +5 -34
- package/dist/api/page.js +5 -34
- package/dist/api/product.js +5 -34
- package/dist/api/profile.js +2 -2
- package/dist/api/store.js +3 -3
- package/dist/api/translations.d.ts +1 -1
- package/dist/api/translations.d.ts.map +1 -1
- package/dist/api/translations.js +3 -3
- package/dist/api/user.js +3 -3
- package/dist/api/wishlist.js +3 -3
- package/dist/{chunk-THXWAZX2.js → chunk-2FG3NNIK.js} +12 -17
- package/dist/chunk-2FG3NNIK.js.map +1 -0
- package/dist/chunk-2JV6WZ6O.js +136 -0
- package/dist/chunk-2JV6WZ6O.js.map +1 -0
- package/dist/{chunk-TQUHDSKQ.js → chunk-2TB2LTL2.js} +3 -11
- package/dist/chunk-2TB2LTL2.js.map +1 -0
- package/dist/{chunk-JIJOXZPF.js → chunk-2ZRLSZ4V.js} +6 -12
- package/dist/chunk-2ZRLSZ4V.js.map +1 -0
- package/dist/{chunk-HL3HSO4R.js → chunk-4UG4W72N.js} +5 -5
- package/dist/chunk-4UG4W72N.js.map +1 -0
- package/dist/{chunk-GFMVML6I.js → chunk-6D7SF3YR.js} +3 -3
- package/dist/{chunk-GFMVML6I.js.map → chunk-6D7SF3YR.js.map} +1 -1
- package/dist/{chunk-FCZRF6DB.js → chunk-6NBBXERE.js} +3 -3
- package/dist/{chunk-FCZRF6DB.js.map → chunk-6NBBXERE.js.map} +1 -1
- package/dist/{chunk-5DZ7HLSO.js → chunk-6Q5BFHFA.js} +3 -3
- package/dist/{chunk-5DZ7HLSO.js.map → chunk-6Q5BFHFA.js.map} +1 -1
- package/dist/{chunk-XHGF75TM.js → chunk-6TKIUG5C.js} +11 -4
- package/dist/chunk-6TKIUG5C.js.map +1 -0
- package/dist/{chunk-TQLEQSXE.js → chunk-6Z4MOC4S.js} +3 -19
- package/dist/chunk-6Z4MOC4S.js.map +1 -0
- package/dist/{chunk-SUFCEN4T.js → chunk-7LP7D75V.js} +3 -3
- package/dist/{chunk-SUFCEN4T.js.map → chunk-7LP7D75V.js.map} +1 -1
- package/dist/{chunk-GS3G4O2R.js → chunk-7O5DYSLX.js} +4 -4
- package/dist/chunk-7O5DYSLX.js.map +1 -0
- package/dist/{chunk-EB7X4YMZ.js → chunk-7UZEHQEQ.js} +4 -4
- package/dist/{chunk-EB7X4YMZ.js.map → chunk-7UZEHQEQ.js.map} +1 -1
- package/dist/{chunk-REQC7YOE.js → chunk-A4HWQ5PP.js} +9 -14
- package/dist/chunk-A4HWQ5PP.js.map +1 -0
- package/dist/{chunk-D4SRWUMH.js → chunk-B2NXQJEO.js} +4 -4
- package/dist/{chunk-D4SRWUMH.js.map → chunk-B2NXQJEO.js.map} +1 -1
- package/dist/{chunk-2FU6CVSB.js → chunk-C5X6CVXC.js} +3 -3
- package/dist/{chunk-2FU6CVSB.js.map → chunk-C5X6CVXC.js.map} +1 -1
- package/dist/{chunk-S6AVEFCN.js → chunk-CJEBLY6D.js} +19 -12
- package/dist/chunk-CJEBLY6D.js.map +1 -0
- package/dist/chunk-CUG6VOLM.js +10 -0
- package/dist/{chunk-3DCZJDDK.js.map → chunk-CUG6VOLM.js.map} +1 -1
- package/dist/{chunk-BWFBVXT3.js → chunk-DF6FBKDN.js} +2 -2
- package/dist/chunk-DF6FBKDN.js.map +1 -0
- package/dist/{chunk-SAZBQNQK.js → chunk-DHXE3JE6.js} +7 -7
- package/dist/chunk-DHXE3JE6.js.map +1 -0
- package/dist/{chunk-YRKMHN7W.js → chunk-EHKTHLXK.js} +3 -3
- package/dist/{chunk-YRKMHN7W.js.map → chunk-EHKTHLXK.js.map} +1 -1
- package/dist/{chunk-U33UQAWO.js → chunk-FH5YDZFQ.js} +10 -9
- package/dist/chunk-FH5YDZFQ.js.map +1 -0
- package/dist/{chunk-UE3BUFZI.js → chunk-FZKRSGLP.js} +3 -3
- package/dist/{chunk-UE3BUFZI.js.map → chunk-FZKRSGLP.js.map} +1 -1
- package/dist/{chunk-C5GWTTB6.js → chunk-GQG4KE5Z.js} +4 -4
- package/dist/chunk-GQG4KE5Z.js.map +1 -0
- package/dist/{chunk-J37AYLWL.js → chunk-GU2KUQVD.js} +4 -3
- package/dist/chunk-GU2KUQVD.js.map +1 -0
- package/dist/{chunk-SVZOWI7E.js → chunk-HTGBIA7K.js} +3 -6
- package/dist/chunk-HTGBIA7K.js.map +1 -0
- package/dist/{chunk-ZZ7Q5LEG.js → chunk-HWVEOUG4.js} +3 -3
- package/dist/{chunk-ZZ7Q5LEG.js.map → chunk-HWVEOUG4.js.map} +1 -1
- package/dist/{chunk-3UHSMGPY.js → chunk-HX3YKS5W.js} +9 -3
- package/dist/chunk-HX3YKS5W.js.map +1 -0
- package/dist/{chunk-WA5QBFRU.js → chunk-I5Z4NJBB.js} +4 -4
- package/dist/{chunk-WA5QBFRU.js.map → chunk-I5Z4NJBB.js.map} +1 -1
- package/dist/{chunk-TWAHYRKI.js → chunk-IWMGDYNN.js} +4 -4
- package/dist/chunk-IWMGDYNN.js.map +1 -0
- package/dist/{chunk-TFZ2RT6P.js → chunk-JKIRRMBU.js} +3 -3
- package/dist/chunk-JKIRRMBU.js.map +1 -0
- package/dist/{chunk-YU36GBMB.js → chunk-KCKHA75V.js} +3 -3
- package/dist/{chunk-YU36GBMB.js.map → chunk-KCKHA75V.js.map} +1 -1
- package/dist/{chunk-W4CSWDEH.js → chunk-KIPZQN3Y.js} +2 -7
- package/dist/chunk-KIPZQN3Y.js.map +1 -0
- package/dist/{chunk-2SUOZEX2.js → chunk-KJRALAYM.js} +3 -3
- package/dist/chunk-KJRALAYM.js.map +1 -0
- package/dist/{chunk-O7Z6BIPP.js → chunk-LSDIFHXZ.js} +4 -4
- package/dist/{chunk-O7Z6BIPP.js.map → chunk-LSDIFHXZ.js.map} +1 -1
- package/dist/{chunk-7RVUSB5C.js → chunk-NBHI5X36.js} +4 -4
- package/dist/{chunk-7RVUSB5C.js.map → chunk-NBHI5X36.js.map} +1 -1
- package/dist/{chunk-UIX3W2PN.js → chunk-OAMIDZKW.js} +3 -3
- package/dist/chunk-OAMIDZKW.js.map +1 -0
- package/dist/{chunk-MXQCE3KA.js → chunk-OBSAH7K6.js} +4 -45
- package/dist/chunk-OBSAH7K6.js.map +1 -0
- package/dist/chunk-P4M64WVZ.js +14 -0
- package/dist/{chunk-ZOCDYJPX.js.map → chunk-P4M64WVZ.js.map} +1 -1
- package/dist/{chunk-25SSLQAJ.js → chunk-Q7VWURUR.js} +5 -12
- package/dist/chunk-Q7VWURUR.js.map +1 -0
- package/dist/{chunk-SSQ75CKA.js → chunk-RINZVHVS.js} +4 -4
- package/dist/chunk-RINZVHVS.js.map +1 -0
- package/dist/{chunk-RYBA3JDM.js → chunk-RJPPO3ET.js} +4 -4
- package/dist/{chunk-RYBA3JDM.js.map → chunk-RJPPO3ET.js.map} +1 -1
- package/dist/{chunk-433EFDBW.js → chunk-SM7VMQZY.js} +4 -4
- package/dist/chunk-SM7VMQZY.js.map +1 -0
- package/dist/{chunk-GTM2GV2N.js → chunk-SSZR6JBK.js} +65 -43
- package/dist/chunk-SSZR6JBK.js.map +1 -0
- package/dist/{chunk-Q6MQLAYL.js → chunk-TCSNNCRH.js} +3 -3
- package/dist/{chunk-Q6MQLAYL.js.map → chunk-TCSNNCRH.js.map} +1 -1
- package/dist/{chunk-IILTG4A6.js → chunk-THMQ2Z3N.js} +84 -63
- package/dist/chunk-THMQ2Z3N.js.map +1 -0
- package/dist/{chunk-GOYYO4NI.js → chunk-TP3LCGE7.js} +2 -2
- package/dist/{chunk-GOYYO4NI.js.map → chunk-TP3LCGE7.js.map} +1 -1
- package/dist/{chunk-VVRYP6IL.js → chunk-TYNZ5B2B.js} +2 -2
- package/dist/chunk-TYNZ5B2B.js.map +1 -0
- package/dist/{chunk-CI4HKXVH.js → chunk-W6HFR7YA.js} +4 -4
- package/dist/chunk-W6HFR7YA.js.map +1 -0
- package/dist/{chunk-P43TLDS6.js → chunk-XECKVHG7.js} +6 -6
- package/dist/chunk-XECKVHG7.js.map +1 -0
- package/dist/{chunk-4AYOFKHU.js → chunk-XK42WXU5.js} +3 -3
- package/dist/chunk-XK42WXU5.js.map +1 -0
- package/dist/{chunk-FBFPH5BB.js → chunk-Z4Y55HWX.js} +8 -8
- package/dist/chunk-Z4Y55HWX.js.map +1 -0
- package/dist/{chunk-6LQFMCWK.js → chunk-ZNOJPVX3.js} +4 -4
- package/dist/chunk-ZNOJPVX3.js.map +1 -0
- package/dist/components/cart/CartItem.d.ts.map +1 -1
- package/dist/components/cart/PriceQuoteButton.d.ts.map +1 -1
- package/dist/components/cart/index.js +1 -1
- package/dist/components/collapse/Collapse.d.ts +2 -2
- package/dist/components/collapse/Collapse.d.ts.map +1 -1
- package/dist/components/collapse/index.js +3 -3
- package/dist/components/collapse/index.js.map +1 -1
- package/dist/components/common/DeferredData.d.ts +0 -1
- package/dist/components/common/DeferredData.d.ts.map +1 -1
- package/dist/components/common/ErrorPage.d.ts.map +1 -1
- package/dist/components/common/index.js +1 -1
- package/dist/components/drawer/Drawer.d.ts.map +1 -1
- package/dist/components/drawer/index.js +23 -22
- package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
- package/dist/components/dropdown/index.js +17 -1
- package/dist/components/dropdown/index.js.map +1 -1
- package/dist/components/home/ComponentErrorBoundary.d.ts +1 -1
- package/dist/components/home/ComponentErrorBoundary.d.ts.map +1 -1
- package/dist/components/home/PhotosSlider.d.ts +1 -0
- package/dist/components/home/PhotosSlider.d.ts.map +1 -1
- package/dist/components/home/SquarePhotos.d.ts +1 -0
- package/dist/components/home/SquarePhotos.d.ts.map +1 -1
- package/dist/components/home/StoreFeatures.d.ts.map +1 -1
- package/dist/components/home/index.js +25 -24
- package/dist/components/layout/Header.d.ts.map +1 -1
- package/dist/components/layout/index.js +10 -10
- package/dist/components/modal/ImageModal.d.ts.map +1 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/index.js +2 -2
- package/dist/components/navigation/MainMenu.d.ts.map +1 -1
- package/dist/components/navigation/MobileMenu.d.ts +1 -1
- package/dist/components/navigation/MobileMenu.d.ts.map +1 -1
- package/dist/components/product/AddToCartForm.d.ts +1 -1
- package/dist/components/product/AddToCartForm.d.ts.map +1 -1
- package/dist/components/product/ProductGallery.d.ts.map +1 -1
- package/dist/components/product/index.js +23 -22
- package/dist/components/store/index.js +24 -23
- package/dist/components/store/index.js.map +1 -1
- package/dist/components/toast/index.js +47 -2
- package/dist/components/toast/index.js.map +1 -1
- package/dist/dev/DevSettingsWidget.d.ts +19 -0
- package/dist/dev/DevSettingsWidget.d.ts.map +1 -0
- package/dist/dev/dev-settings-store.d.ts +62 -0
- package/dist/dev/dev-settings-store.d.ts.map +1 -0
- package/dist/dev/index.d.ts +9 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +330 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/dev/schema-types.d.ts +43 -0
- package/dist/dev/schema-types.d.ts.map +1 -0
- package/dist/document-class-4EILSNLT.js +21 -0
- package/dist/{document-class-V5XSWLMX.js.map → document-class-4EILSNLT.js.map} +1 -1
- package/dist/hooks/HookRegistry.d.ts +1 -0
- package/dist/hooks/HookRegistry.d.ts.map +1 -1
- package/dist/hooks/HookRegistry.js +1 -1
- package/dist/hooks/HookSlot.d.ts +1 -1
- package/dist/hooks/HookSlot.d.ts.map +1 -1
- package/dist/hooks/HookSlot.js +3 -3
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +22 -21
- package/dist/hooks/useBlogLike.js +2 -2
- package/dist/hooks/useGtm.js +22 -21
- package/dist/hooks/useHook.js +2 -2
- package/dist/hooks/useMoney.d.ts.map +1 -1
- package/dist/hooks/useMoney.js +22 -21
- package/dist/hooks/useNumber.d.ts.map +1 -1
- package/dist/hooks/useStore.js +22 -21
- package/dist/hooks/useTheme.js +2 -2
- package/dist/hooks/useUser.js +4 -4
- package/dist/i18n.d.ts +1 -1
- package/dist/i18n.js +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -21
- package/dist/index.js.map +1 -1
- package/dist/navigation-ZCEGLIHD.js +10 -0
- package/dist/{navigation-77T2NTFS.js.map → navigation-ZCEGLIHD.js.map} +1 -1
- package/dist/{navigation-JPUI67XY.js → navigation-ZIULIDFF.js} +6 -6
- package/dist/{navigation-JPUI67XY.js.map → navigation-ZIULIDFF.js.map} +1 -1
- package/dist/nextjs/index.d.ts +1 -2
- package/dist/nextjs/index.d.ts.map +1 -1
- package/dist/nextjs/link.d.ts +0 -4
- package/dist/nextjs/link.d.ts.map +1 -1
- package/dist/nextjs/router.d.ts +0 -6
- package/dist/nextjs/router.d.ts.map +1 -1
- package/dist/nextjs.js +2 -7
- package/dist/nextjs.js.map +1 -1
- package/dist/{not-found-73ZVE5QO.js → not-found-MGLRWOWH.js} +24 -23
- package/dist/not-found-MGLRWOWH.js.map +1 -0
- package/dist/providers/{i18n.d.ts → I18nProvider.d.ts} +1 -1
- package/dist/providers/I18nProvider.d.ts.map +1 -0
- package/dist/providers/NavigationProvider.d.ts +1 -4
- package/dist/providers/NavigationProvider.d.ts.map +1 -1
- package/dist/providers/TwilightProvider.d.ts +1 -1
- package/dist/providers/TwilightProvider.d.ts.map +1 -1
- package/dist/providers/index.js +22 -21
- package/dist/providers/navigation-setups.d.ts +5 -0
- package/dist/providers/navigation-setups.d.ts.map +1 -0
- package/dist/providers/twilight-context.d.ts +1 -1
- package/dist/providers/twilight-context.d.ts.map +1 -1
- package/dist/providers/twilight-init.d.ts +1 -2
- package/dist/providers/twilight-init.d.ts.map +1 -1
- package/dist/routes/account/orders/OrderSinglePage.d.ts.map +1 -1
- package/dist/routes/account/orders.js +6 -35
- package/dist/routes/account.js +14 -43
- package/dist/routes/account.js.map +1 -1
- package/dist/routes/blog/BlogAuthorPage.d.ts.map +1 -1
- package/dist/routes/blog/BlogCategoryPage.d.ts.map +1 -1
- package/dist/routes/blog/BlogPage.d.ts +1 -1
- package/dist/routes/blog/BlogPage.d.ts.map +1 -1
- package/dist/routes/blog/BlogSinglePage.d.ts.map +1 -1
- package/dist/routes/blog/BlogTagPage.d.ts.map +1 -1
- package/dist/routes/blog.js +10 -39
- package/dist/routes/blog.js.map +1 -1
- package/dist/routes/brands.js +6 -35
- package/dist/routes/brands.js.map +1 -1
- package/dist/routes/cart.js +30 -29
- package/dist/routes/cart.js.map +1 -1
- package/dist/routes/home/HomePage.d.ts.map +1 -1
- package/dist/routes/home.js +27 -26
- package/dist/routes/index.d.ts +2 -2
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +5 -35
- package/dist/routes/loyalty.js +6 -35
- package/dist/routes/loyalty.js.map +1 -1
- package/dist/routes/page.js +6 -35
- package/dist/routes/page.js.map +1 -1
- package/dist/routes/product-listing/ProductListPage.d.ts.map +1 -1
- package/dist/routes/product-listing.js +30 -32
- package/dist/routes/product-listing.js.map +1 -1
- package/dist/routes/product.js +25 -24
- package/dist/routes/product.js.map +1 -1
- package/dist/routes/root/beforeLoad.d.ts +0 -2
- package/dist/routes/root/beforeLoad.d.ts.map +1 -1
- package/dist/routes/seo-redirects.js +4 -35
- package/dist/routes/testimonials.js +2 -2
- package/dist/routes/thank-you/ThankYouPage.d.ts +1 -1
- package/dist/routes/thank-you/ThankYouPage.d.ts.map +1 -1
- package/dist/routes/thank-you.js +6 -35
- package/dist/routes/thank-you.js.map +1 -1
- package/dist/skeleton.js +27 -26
- package/dist/tanstack/middleware/twilight.d.ts.map +1 -1
- package/dist/tanstack/router.d.ts +0 -3
- package/dist/tanstack/router.d.ts.map +1 -1
- package/dist/tanstack.js +16 -31
- package/dist/tanstack.js.map +1 -1
- package/dist/twilight/context.d.ts +0 -1
- package/dist/twilight/context.d.ts.map +1 -1
- package/dist/types/hooks.d.ts +1 -0
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/hooks.js +1 -1
- package/dist/types/index.js +1 -1
- package/dist/{providers/salla-sdk.types.d.ts → types/salla-sdk.d.ts} +3 -1
- package/dist/types/salla-sdk.d.ts.map +1 -0
- package/dist/{providers/twilight.types.d.ts → types/twilight.d.ts} +4 -5
- package/dist/types/twilight.d.ts.map +1 -0
- package/dist/utils/breadcrumb.d.ts +0 -1
- package/dist/utils/breadcrumb.d.ts.map +1 -1
- package/dist/utils/engine-version.d.ts +10 -0
- package/dist/utils/engine-version.d.ts.map +1 -0
- package/dist/utils/index.js +21 -3
- package/dist/utils/index.js.map +1 -1
- package/dist/vite/adapters/tanstack.adapter.d.ts.map +1 -1
- package/dist/vite/index.js +174 -4
- package/dist/vite/index.js.map +1 -1
- package/dist/vite/plugins/twilight-schema.d.ts +18 -0
- package/dist/vite/plugins/twilight-schema.d.ts.map +1 -0
- package/dist/vite/plugins/twilight-schema.plugin.d.ts +20 -0
- package/dist/vite/plugins/twilight-schema.plugin.d.ts.map +1 -0
- package/dist/vite/types.d.ts +7 -0
- package/dist/vite/types.d.ts.map +1 -1
- package/package.json +10 -3
- package/dist/AddToCartForm-VS67AFNL.js.map +0 -1
- package/dist/BlogAuthorPage-276K2KQS.js.map +0 -1
- package/dist/BlogCategoryPage-GF5PLRG7.js.map +0 -1
- package/dist/BlogPage-BU672BXD.js.map +0 -1
- package/dist/BlogSinglePage-ELV4S5EV.js.map +0 -1
- package/dist/BlogTagPage-TXQP6ZOI.js.map +0 -1
- package/dist/BrandsPage-C6ZHC4KC.js.map +0 -1
- package/dist/Breadcrumb-TG4UTNRM.js.map +0 -1
- package/dist/CartItem-55JV6HDS.js.map +0 -1
- package/dist/CartSummary-CUWMHHMD.js.map +0 -1
- package/dist/Copyright-PG76AVV6.js +0 -9
- package/dist/CustomerLayout-SLNVCNZ6.js.map +0 -1
- package/dist/ErrorPage-TK4U3ENF.js +0 -6
- package/dist/Footer-MZDSEK57.js +0 -39
- package/dist/Header-CXFKDTOA.js +0 -15
- package/dist/ImageModal-WLJM3WIE.js +0 -41
- package/dist/ImageModal-WLJM3WIE.js.map +0 -1
- package/dist/LoyaltyPage-AIA3CUYI.js.map +0 -1
- package/dist/MainMenu-T3M5RB7L.js.map +0 -1
- package/dist/MasterLayout-QUBHRA32.js +0 -39
- package/dist/MobileMenu-6D52JOQA.js.map +0 -1
- package/dist/NotificationsPage-6H45SAS7.js.map +0 -1
- package/dist/OrderSinglePage-GP2M3YVH.js.map +0 -1
- package/dist/OrdersPage-OQGJLTQP.js.map +0 -1
- package/dist/PreOrderNotification-ZVTGNV7K.js.map +0 -1
- package/dist/PriceQuoteButton-RAAPL4N4.js.map +0 -1
- package/dist/ProductDetails-2JUCRU4W.js.map +0 -1
- package/dist/ProfilePage-XGZ2HCQH.js.map +0 -1
- package/dist/SeoCartWidget-PDK6IQ2H.js.map +0 -1
- package/dist/SettingsPage-VCQNV2PP.js.map +0 -1
- package/dist/StoreClosedNotification-3JRNBNQK.js +0 -40
- package/dist/TestimonialsPage-ENMVJ4QG.js.map +0 -1
- package/dist/ThankYouPage-4FTP6E2Y.js.map +0 -1
- package/dist/WalletPage-VKV44EEG.js.map +0 -1
- package/dist/WidgetHead-FXEPCB23.js +0 -7
- package/dist/WishlistPage-GJZCXQUY.js.map +0 -1
- package/dist/chunk-25SSLQAJ.js.map +0 -1
- package/dist/chunk-2SUOZEX2.js.map +0 -1
- package/dist/chunk-3DCZJDDK.js +0 -10
- package/dist/chunk-3UHSMGPY.js.map +0 -1
- package/dist/chunk-433EFDBW.js.map +0 -1
- package/dist/chunk-4AYOFKHU.js.map +0 -1
- package/dist/chunk-6LQFMCWK.js.map +0 -1
- package/dist/chunk-BWFBVXT3.js.map +0 -1
- package/dist/chunk-C5GWTTB6.js.map +0 -1
- package/dist/chunk-CI4HKXVH.js.map +0 -1
- package/dist/chunk-FBFPH5BB.js.map +0 -1
- package/dist/chunk-GS3G4O2R.js.map +0 -1
- package/dist/chunk-GTM2GV2N.js.map +0 -1
- package/dist/chunk-HL3HSO4R.js.map +0 -1
- package/dist/chunk-IILTG4A6.js.map +0 -1
- package/dist/chunk-J37AYLWL.js.map +0 -1
- package/dist/chunk-JIJOXZPF.js.map +0 -1
- package/dist/chunk-MXQCE3KA.js.map +0 -1
- package/dist/chunk-P43TLDS6.js.map +0 -1
- package/dist/chunk-REQC7YOE.js.map +0 -1
- package/dist/chunk-S6AVEFCN.js.map +0 -1
- package/dist/chunk-SAZBQNQK.js.map +0 -1
- package/dist/chunk-SSQ75CKA.js.map +0 -1
- package/dist/chunk-SVZOWI7E.js.map +0 -1
- package/dist/chunk-TFZ2RT6P.js.map +0 -1
- package/dist/chunk-THXWAZX2.js.map +0 -1
- package/dist/chunk-TQLEQSXE.js.map +0 -1
- package/dist/chunk-TQUHDSKQ.js.map +0 -1
- package/dist/chunk-TWAHYRKI.js.map +0 -1
- package/dist/chunk-U33UQAWO.js.map +0 -1
- package/dist/chunk-UIX3W2PN.js.map +0 -1
- package/dist/chunk-VVRYP6IL.js.map +0 -1
- package/dist/chunk-W4CSWDEH.js.map +0 -1
- package/dist/chunk-XHGF75TM.js.map +0 -1
- package/dist/chunk-ZOCDYJPX.js +0 -14
- package/dist/components/common/types.d.ts +0 -7
- package/dist/components/common/types.d.ts.map +0 -1
- package/dist/document-class-V5XSWLMX.js +0 -21
- package/dist/hooks/useIsMobile.d.ts +0 -2
- package/dist/hooks/useIsMobile.d.ts.map +0 -1
- package/dist/lib/services/index.d.ts +0 -1
- package/dist/lib/services/index.d.ts.map +0 -1
- package/dist/navigation-77T2NTFS.js +0 -10
- package/dist/not-found-73ZVE5QO.js.map +0 -1
- package/dist/providers/i18n.d.ts.map +0 -1
- package/dist/providers/salla-sdk.types.d.ts.map +0 -1
- package/dist/providers/twilight.types.d.ts.map +0 -1
- package/dist/router/context.d.ts +0 -3
- package/dist/router/context.d.ts.map +0 -1
- package/dist/router/index.d.ts +0 -4
- package/dist/router/index.d.ts.map +0 -1
- package/dist/twilight/index.d.ts +0 -3
- package/dist/twilight/index.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/home/ProductsSlider.tsx","../src/components/home/StoreFeatures.tsx","../src/components/home/FixedBanner.tsx","../src/components/home/FixedProducts.tsx","../src/components/home/FeaturedProductsStyle1.tsx","../src/components/home/FeaturedProductsStyle2.tsx","../src/components/home/FeaturedProductsStyle3.tsx","../src/components/home/ParallaxBackground.tsx","../src/components/home/PhotosSlider.tsx","../src/components/home/SquarePhotos.tsx","../src/components/home/Youtube.tsx","../src/components/home/BundleComponent.tsx","../src/components/home/lazy.ts","../src/components/home/register.ts","../src/components/home/ComponentErrorBoundary.tsx","../src/components/home/HomePageRenderer.tsx"],"names":["product","StoreFeatures","jsx","memo","FixedBanner","Fragment","jsxs","Suspense","FeaturedProductsStyle1","useCallback","FeaturedProductsStyle2","useState","SallaButton","SallaProductsSlider","FeaturedProductsStyle3","ParallaxBackground","PhotosSlider","SquarePhotos","Youtube","BundleComponent","useEffect","FallbackComponent","ProductsSliderSkeleton","FixedProductsSkeleton","HomeComponentRenderer","Component"],"mappings":"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","file":"chunk-SSZR6JBK.js","sourcesContent":["import { Suspense, useCallback, useMemo } from 'react';\nimport { product, ProductsListSource } from '../../api/product';\nimport { ProductCard } from '../../components/product';\nimport { ProductsSliderSkeleton, SallaProductsSlider } from '@salla.sa/twilight-components-react';\nimport { useTranslation } from '../../providers/I18nProvider';\n\ninterface ProductsSourceConfig {\n source: ProductsListSource;\n source_value?: number | number[] | null;\n}\n\nexport interface ProductsSliderProps {\n data: {\n products: ProductsSourceConfig;\n title?: string;\n display_all_url?: string;\n position?: number;\n priority?: boolean;\n show_controls?: boolean;\n controls_outer?: boolean;\n loop?: boolean;\n centered?: boolean;\n slides_per_view?: number | 'auto';\n direction?: 'rtl' | 'ltr';\n autoplay?: boolean;\n [key: string]: unknown;\n };\n}\n\nexport function ProductsSlider({ data }: ProductsSliderProps) {\n const { t } = useTranslation();\n const {\n products,\n title,\n display_all_url: displayAllUrl,\n position = 1,\n priority = false,\n show_controls: showControls,\n controls_outer: controlsOuter,\n loop,\n centered,\n slides_per_view: slidesPerView,\n direction,\n autoplay,\n } = data;\n\n const sliderProps = useMemo(\n () => ({\n id: `slider-${position}`,\n displayAllTitle: t('blocks.home.display_all', 'View All'),\n ...(showControls !== undefined && { showControls }),\n ...(controlsOuter !== undefined && { controlsOuter }),\n ...(loop !== undefined && { loop }),\n ...(centered !== undefined && { centered }),\n ...(slidesPerView !== undefined && { slidesPerView }),\n ...(direction !== undefined && { direction }),\n }),\n [position, t, showControls, controlsOuter, loop, centered, slidesPerView, direction]\n );\n\n const loader = useCallback(\n () =>\n product.list({\n source: products.source,\n sourceValue: products.source_value,\n }),\n [products.source, products.source_value]\n );\n\n return (\n <Suspense fallback={<ProductsSliderSkeleton />}>\n <SallaProductsSlider\n id={`best-offers-${position}-slider`}\n loader={loader}\n sliderProps={sliderProps}\n {...(displayAllUrl ? { displayAllUrl } : {})}\n {...(title ? { blockTitle: title } : {})}\n {...(autoplay !== undefined ? { autoplay } : {})}\n skeleton={<ProductsSliderSkeleton />}\n >\n {(product, index) => (\n <ProductCard product={product} imagePriority={priority && index < 2} />\n )}\n </SallaProductsSlider>\n </Suspense>\n );\n}\n","import { memo } from 'react';\nimport type { Feature } from '../../types';\n\nexport interface StoreFeaturesProps {\n data: {\n features: Feature[];\n [key: string]: unknown;\n };\n}\n\nexport const StoreFeatures = memo(function StoreFeatures({ data }: StoreFeaturesProps) {\n const { features } = data;\n\n if (!features.length) return null;\n\n return (\n <>\n <div className=\"grid grid-cols-[repeat(2,minmax(0,1fr))] md:grid-cols-[repeat(3,minmax(0,1fr))] gap-4 sm:gap-6 xl:gap-8\">\n {features.map((feature) => (\n <div\n key={`${feature.icon}:${feature.title}:${feature.description ?? ''}`}\n className=\"s-block--features__item\"\n >\n <div className=\"feature-icon\">\n <i className={feature.icon}></i>\n </div>\n <h2>{feature.title}</h2>\n <p>{feature.description}</p>\n </div>\n ))}\n </div>\n </>\n );\n});\n","import { memo } from 'react';\nimport { Link } from '../common';\n\nexport interface FixedBannerComponentProps {\n data: {\n image: {\n url: string;\n alt?: string;\n small_url?: string;\n };\n url?: string;\n title?: string;\n position?: number;\n [key: string]: unknown;\n };\n priority?: boolean;\n}\n\nexport const FixedBanner = memo(function FixedBanner(props: FixedBannerComponentProps) {\n const { data, priority = false } = props;\n const image = data.image?.url;\n\n if (!image) {\n return null;\n }\n\n const url = data.url;\n const altText = data.image.alt?.trim() ? data.image.alt : data.title || 'fixed banner';\n\n const imgProps = priority\n ? {\n loading: 'eager' as const,\n fetchPriority: 'high' as const,\n decoding: 'sync' as const,\n }\n : {\n loading: 'lazy' as const,\n decoding: 'async' as const,\n };\n\n const smallUrl = data.image.small_url;\n\n return (\n <>\n <div className=\"container\">\n <Link\n to={url || '#'}\n className=\"banner banner--fixed overflow-hidden\"\n aria-label={`Banner ${altText}`}\n >\n <picture>\n {smallUrl && <source media=\"(max-width: 767px)\" srcSet={smallUrl} />}\n <img\n width=\"1200\"\n height=\"300\"\n src={image}\n alt={altText}\n style={{ maxWidth: '100%', objectFit: 'contain' }}\n loading={imgProps.loading}\n decoding={imgProps.decoding}\n {...(priority && { fetchPriority: imgProps.fetchPriority })}\n />\n </picture>\n </Link>\n </div>\n </>\n );\n});\n","import { Suspense } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { FixedProductsSkeleton } from '@salla.sa/twilight-components-react';\nimport { Link } from '../common';\nimport { product, ProductsListSource } from '../../api/product';\nimport { ProductCard } from '../../components/product';\nimport { useTranslation } from '../../providers/I18nProvider';\n\nexport interface FixedProductsProps {\n data: {\n products: { source: ProductsListSource; source_value?: number[] | null };\n title?: string;\n limit?: number | string;\n display_all_url?: string | null;\n key?: string | null;\n isVertical?: boolean;\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport function FixedProducts({ data }: FixedProductsProps) {\n const { t } = useTranslation();\n\n const title = data.title;\n const limit = data.limit ? Number(data.limit) : undefined;\n const isVertical = data.isVertical ?? true;\n\n const { data: result, isLoading } = useQuery(\n product.queries.list({\n source: data.products.source,\n sourceValue: data.products?.source_value,\n perPage: limit,\n })\n );\n\n const products = result?.items ?? [];\n\n if (isLoading) {\n return <FixedProductsSkeleton />;\n }\n\n if (!products.length) return null;\n\n return (\n <Suspense fallback={<FixedProductsSkeleton />}>\n {title && (\n <div className=\"s-block__title\">\n <div className=\"right-side\">\n <h2>{title}</h2>\n </div>\n {data.display_all_url && (\n <Link to={data.display_all_url} className=\"s-block__display-all\">\n {t('blocks.home.display_all', 'View All')}\n <i className=\"sicon-arrow-left\"></i>\n </Link>\n )}\n </div>\n )}\n <div\n className={\n 's-products-list-wrapper ' +\n (isVertical ? 's-products-list-vertical-cards' : 's-products-list-horizontal-cards')\n }\n >\n {products.slice(0, 4).map((product) => (\n <ProductCard key={product.id} product={product} />\n ))}\n </div>\n </Suspense>\n );\n}\n","import { memo, useState, useCallback } from 'react';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport type { Product } from '../../types';\n\ninterface SectionItem {\n title?: string;\n name?: string;\n type?: string;\n id?: string;\n products?: Product[];\n limit?: number;\n}\n\ninterface MainProduct {\n id?: string;\n title?: string;\n value?: string;\n product?: Product;\n}\n\nexport interface FeaturedProductsStyle1Props {\n data: {\n items: SectionItem[];\n main_product?: MainProduct;\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport const FeaturedProductsStyle1 = memo(function FeaturedProductsStyle1({\n data,\n}: FeaturedProductsStyle1Props) {\n const items = data.items || [];\n const mainProduct = data.main_product;\n\n const [activeTab, setActiveTab] = useState<string>(items[0]?.id || '');\n const [isAnimating, setIsAnimating] = useState(false);\n\n const handleTabClick = useCallback(\n (tabId: string) => {\n if (tabId === activeTab) return;\n setIsAnimating(true);\n setActiveTab(tabId);\n setTimeout(() => setIsAnimating(false), 100);\n },\n [activeTab]\n );\n\n if (!items.length) return null;\n\n const hasMultipleSections = items.length > 1;\n\n return (\n <>\n <div className=\"s-block__title\">\n <div className=\"right-side\">\n <h2>{mainProduct?.title}</h2>\n </div>\n {hasMultipleSections && (\n <div className=\"tabs hide-scroll hidden lg:flex\">\n {items.map((section) => (\n <SallaButton\n key={section.id}\n shape=\"link\"\n onClick={() => handleTabClick(section.id || '')}\n className={`tab-trigger ${activeTab === section.id ? 'is-active' : ''}`}\n >\n {section.title || section.name}\n </SallaButton>\n ))}\n </div>\n )}\n </div>\n\n <div className={`grid grid-cols-1 gap-8 ${mainProduct?.product ? 'lg:grid-cols-2' : ''}`}>\n {mainProduct?.product && (\n <div className=\"flex flex-col\">\n <custom-salla-product-card\n shadow-on-hover\n product={JSON.stringify(mainProduct.product)}\n isSpecial\n ></custom-salla-product-card>\n </div>\n )}\n <div className=\"flex flex-col\">\n {hasMultipleSections && (\n <div className=\"tabs mb-4 sm:mb-8 hide-scroll lg:hidden\">\n {items.map((section) => (\n <SallaButton\n key={section.id}\n shape=\"link\"\n onClick={() => handleTabClick(section.id || '')}\n className={`tab-trigger ${activeTab === section.id ? 'is-active' : ''}`}\n >\n {section.title || section.name}\n </SallaButton>\n ))}\n </div>\n )}\n\n <div className=\"tabs-wrapper flex flex-1\">\n {items.map((section) => {\n const isActive = activeTab === section.id;\n return (\n <div\n key={section.id}\n className={`tabs__item grid-cols-2 ${mainProduct?.product ? '' : 'lg:grid-cols-4'} ${isActive ? 'is-active' : ''} ${isAnimating && isActive ? 'opacity-0 translate-y-3' : ''} ${!isAnimating && isActive ? 'opacity-100 translate-y-0' : ''}`}\n >\n {section.products\n ?.slice(0, mainProduct?.product ? 4 : 8)\n .map((product, productIndex) => (\n <custom-salla-product-card\n key={product.id || productIndex}\n product={JSON.stringify(product)}\n ></custom-salla-product-card>\n ))}\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </>\n );\n});\n","import { memo, useState, useCallback } from 'react';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { SallaProductsList } from '@salla.sa/twilight-components-react';\nimport { SallaProductsSlider } from '@salla.sa/twilight-components-react';\nimport { product, ProductsListSource } from '../../api/product';\nimport { ProductCard } from '../../components/product';\n\ninterface ProductSource {\n source: ProductsListSource;\n limit?: number;\n source_value?: number | number[];\n}\n\ninterface SectionItem {\n title?: string;\n name?: string;\n type?: string;\n id?: string;\n products: ProductSource;\n limit?: number;\n}\n\nexport interface FeaturedProductsStyle2Props {\n data: {\n items: SectionItem[];\n position?: number;\n is_slider?: boolean;\n [key: string]: unknown;\n };\n}\n\nexport const FeaturedProductsStyle2 = memo(function FeaturedProductsStyle2({\n data,\n}: FeaturedProductsStyle2Props) {\n const items = data.items || [];\n const isSlider = data.is_slider ?? true;\n\n const [activeTab, setActiveTab] = useState<string>(items[0]?.id || '');\n const [isAnimating, setIsAnimating] = useState(false);\n\n const handleTabClick = useCallback(\n (tabId: string) => {\n if (tabId === activeTab) return;\n setIsAnimating(true);\n setActiveTab(tabId);\n setTimeout(() => setIsAnimating(false), 100);\n },\n [activeTab]\n );\n\n const loader = useCallback(\n (source: ProductsListSource, value?: number | number[], limit?: number) => {\n return () =>\n product.list({\n source: source,\n sourceValue: value,\n perPage: limit,\n });\n },\n []\n );\n\n if (!items.length) return null;\n\n const hasMultipleSections = items.length > 1;\n\n return (\n <>\n <div className=\"container\">\n {hasMultipleSections && (\n <div className=\"tabs hide-scroll\">\n {items.map((section) => (\n <SallaButton\n key={section.id}\n fill=\"outline\"\n onClick={() => handleTabClick(section.id || '')}\n className={`tab-trigger ${activeTab === section.id ? 'is-active' : ''}`}\n >\n {section.title || section.name}\n </SallaButton>\n ))}\n </div>\n )}\n\n <div className=\"tabs-wrapper\">\n {items.map((section) => {\n const isActive = activeTab === section.id;\n return (\n <div\n key={section.id}\n className={`tabs__item ${isActive ? 'is-active' : ''} ${isAnimating && isActive ? 'opacity-0 translate-y-3' : ''} ${!isAnimating && isActive ? 'opacity-100 translate-y-0' : ''}`}\n >\n {isSlider ? (\n <SallaProductsSlider\n loader={loader(\n section.products.source,\n section.products?.source_value,\n section.products?.limit\n )}\n sliderProps={{ id: `section-${section.id}-slider` }}\n >\n {(product) => (\n <ProductCard className=\"s-products-slider-card\" product={product} />\n )}\n </SallaProductsSlider>\n ) : (\n <SallaProductsList\n loader={loader(\n section.products.source,\n section.products?.source_value,\n section.products?.limit\n )}\n itemsClassName=\"s-products-list-horizontal-cards\"\n >\n {(products) =>\n products.map((product) => <ProductCard key={product.id} product={product} />)\n }\n </SallaProductsList>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </>\n );\n});\n","import { memo } from 'react';\nimport { ProductCard } from '../product/ProductCard';\nimport type { Product } from '../../types';\n\ninterface SectionItem {\n title?: string;\n name?: string;\n type?: string;\n products?: Product[];\n featured_product?: Product;\n limit?: number;\n id?: string;\n}\n\nexport interface FeaturedProductsStyle3Props {\n data: {\n items: SectionItem[];\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport const FeaturedProductsStyle3 = memo(function FeaturedProductsStyle3({\n data,\n}: FeaturedProductsStyle3Props) {\n const items = data.items || [];\n\n if (!items.length) return null;\n\n return (\n <>\n <div className=\"inner\">\n {items.map((section, sectionIndex) => (\n <div key={section.id || sectionIndex}>\n <div className=\"s-block__title\">\n <h2>{section.title}</h2>\n </div>\n <div className=\"flex-1 grid lg:grid-cols-2 gap-4 sm:gap-8\">\n {section.featured_product ? (\n <>\n <ProductCard product={section.featured_product} layout=\"fullImage\" withShadow />\n <div className=\"grid gap-4 sm:gap-8\">\n {section.products?.slice(0, 3).map((product, idx) => (\n <ProductCard\n key={product.id}\n product={product}\n layout=\"minimal\"\n withShadow\n index={idx}\n />\n ))}\n </div>\n </>\n ) : (\n section.products?.map((product, idx) => (\n <ProductCard\n key={product.id}\n product={product}\n layout=\"minimal\"\n withShadow\n index={idx}\n />\n ))\n )}\n </div>\n </div>\n ))}\n </div>\n </>\n );\n});\n","import { memo } from 'react';\nimport { Link } from '../common';\n\ninterface ImageData {\n url?: string;\n}\n\nexport interface ParallaxBackgroundProps {\n data: {\n image: ImageData;\n url?: string;\n title?: string;\n link_text?: string;\n is_opacity?: boolean;\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport const ParallaxBackground = memo(function ParallaxBackground({\n data,\n}: ParallaxBackgroundProps) {\n const { image, url, title, link_text: linkText, is_opacity: isOpacity = false } = data;\n\n if (!image?.url) return null;\n\n return (\n <>\n <div className=\"full-banner-entry\" style={{ backgroundImage: `url(${image.url})` }}>\n <div\n className={`overlay h-full w-full ${isOpacity ? 'bg-black' : ''} opacity-60 absolute top-0 left-0`}\n ></div>\n <div className=\"flex h-full items-center justify-center p-5 xs:p-11 relative\">\n <div>\n {title && <h2 className=\"text-2xl font-bold leading-12\">{title}</h2>}\n\n {url && linkText && (\n <Link\n to={url}\n className=\"inline-block text-white text-sm border rounded-md font-bold px-8 py-4\"\n >\n {linkText}\n </Link>\n )}\n </div>\n </div>\n </div>\n </>\n );\n});\n","import { memo } from 'react';\nimport { SallaSlider } from '@salla.sa/twilight-components-react/slider';\nimport { Link, Image } from '../common';\n\ninterface PhotoItem {\n id?: string | number;\n url?: string;\n link_type?: string;\n image?: string;\n}\n\nexport interface PhotosSliderProps {\n data: {\n items: PhotoItem[];\n position?: number;\n is_repeated?: boolean;\n [key: string]: unknown;\n };\n}\n\nexport const PhotosSlider = memo(function PhotosSlider({ data }: PhotosSliderProps) {\n const items = data.items || [];\n const position = data.position ?? 1;\n\n if (!items.length) return null;\n\n return (\n <>\n <SallaSlider\n type=\"carousel\"\n className=\"home-slider photos-slider\"\n centered\n autoPlay\n pagination\n id={`photos-${position}-slider`}\n sliderConfig={{ watchOverflow: true }}\n >\n <div slot=\"items\">\n {items.map((item, index) => (\n <div\n key={item.id ?? `${item.url ?? ''}:${item.image ?? ''}`}\n className=\"swiper-slide\"\n style={{ aspectRatio: '1200/300' }}\n >\n <Link to={item.url || '#'}>\n <Image\n src={item.image}\n className=\"w-full h-full object-contain rounded-md\"\n alt={`image-slider-${index}`}\n width={1200}\n height={300}\n priority={index === 0}\n />\n </Link>\n </div>\n ))}\n </div>\n </SallaSlider>\n </>\n );\n});\n","import { memo } from 'react';\nimport { Link } from '../common';\n\ninterface ImageData {\n url?: string;\n alt?: string;\n}\n\ninterface SquarePhotoItem {\n id?: string | number;\n url?: string;\n link_type?: string;\n image?: ImageData;\n text?: string;\n}\n\nexport interface SquarePhotosProps {\n data: {\n title?: string;\n items: SquarePhotoItem[];\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport const SquarePhotos = memo(function SquarePhotos({ data }: SquarePhotosProps) {\n const items = data.items || [];\n const title = data.title;\n\n if (!items.length) return null;\n\n const gridCols =\n items.length <= 3 ? `one-row md:grid-cols-${items.length}` : 'md:grid-cols-3 two-row';\n\n return (\n <>\n {title && (\n <div className=\"s-block__title\">\n <div className=\"right-side\">\n <h2>{title}</h2>\n </div>\n </div>\n )}\n\n <div className={`grid ${gridCols} grid-flow-row gap-3 sm:gap-8`}>\n {items.map((item) => (\n <Link\n {...(item.link_type === 'external_link' ? { target: '_blank' } : {})}\n key={item.id ?? item.image?.url ?? item.url}\n className={`banner-entry square-photos ${item.text ? 'has-overlay with-hover' : ''}`}\n style={{ backgroundImage: `url(${item.image?.url})` }}\n to={item.url || '#'}\n >\n {item.text && (\n <h3 className=\"text-with-border\">\n <span>{item.text}</span>\n </h3>\n )}\n </Link>\n ))}\n </div>\n </>\n );\n});\n","import { memo, useEffect, useState } from 'react';\n\nexport interface YoutubeProps {\n data: {\n youtube_id: string;\n position?: number;\n [key: string]: unknown;\n };\n}\n\nexport const Youtube = memo(function Youtube({ data }: YoutubeProps) {\n const { youtube_id: youtubeId } = data;\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n if (!youtubeId) return;\n\n // Lazy load the lite-youtube web component\n let mounted = true;\n import('@justinribeiro/lite-youtube')\n .then(() => {\n if (mounted) setIsLoaded(true);\n })\n .catch((err) => {\n console.error('Failed to load lite-youtube:', err);\n });\n\n return () => {\n mounted = false;\n };\n }, [youtubeId]);\n\n if (!youtubeId) return null;\n\n return (\n <>\n <div className=\"container\">\n <div className=\"videoWrapper\">\n {isLoaded ? (\n <lite-youtube videoid={youtubeId} params=\"rel=0\"></lite-youtube>\n ) : (\n <div className=\"animate-pulse bg-gray-200 w-full h-full min-h-[300px] rounded\" />\n )}\n </div>\n </div>\n </>\n );\n});\n","import { memo, useState, useEffect } from 'react';\n\nexport interface BundleComponentProps {\n data: {\n component_name: string;\n bundle_id: string;\n [key: string]: unknown;\n };\n}\n\nexport const BundleComponent = memo(function BundleComponent(props: BundleComponentProps) {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (!mounted) {\n return null;\n }\n\n const { component_name: componentName, bundle_id: bundleId, ...rest } = props.data;\n const config = JSON.stringify(rest);\n\n return (\n <>\n <salla-custom-component\n component-name={componentName}\n bundle-id={bundleId}\n config={config}\n suppressHydrationWarning\n />\n </>\n );\n});\n","import { lazy } from 'react';\n\nexport { ProductsSlider as LazyProductsSlider } from './ProductsSlider';\nexport { StoreFeatures as LazyStoreFeatures } from './StoreFeatures';\nexport { FixedBanner as LazyFixedBanner } from './FixedBanner';\nexport { FixedProducts as LazyFixedProducts } from './FixedProducts';\nexport { FeaturedProductsStyle1 as LazyFeaturedProductsStyle1 } from './FeaturedProductsStyle1';\nexport { FeaturedProductsStyle2 as LazyFeaturedProductsStyle2 } from './FeaturedProductsStyle2';\nexport { FeaturedProductsStyle3 as LazyFeaturedProductsStyle3 } from './FeaturedProductsStyle3';\nexport { ParallaxBackground as LazyParallaxBackground } from './ParallaxBackground';\nexport { PhotosSlider as LazyPhotosSlider } from './PhotosSlider';\nexport { SquarePhotos as LazySquarePhotos } from './SquarePhotos';\nexport const LazyTestimonials = lazy(() =>\n import('./Testimonials').then((m) => ({ default: m.Testimonials }))\n);\nexport { Youtube as LazyYoutube } from './Youtube';\nexport { BundleComponent as LazyBundleComponent } from './BundleComponent';\n","import {\n LazyProductsSlider,\n LazyStoreFeatures,\n LazyFixedBanner,\n LazyFixedProducts,\n LazyFeaturedProductsStyle1,\n LazyFeaturedProductsStyle2,\n LazyFeaturedProductsStyle3,\n LazyParallaxBackground,\n LazyPhotosSlider,\n LazySquarePhotos,\n LazyTestimonials,\n LazyYoutube,\n LazyBundleComponent,\n} from './lazy';\nimport type { AnyHomeComponent } from './types';\nimport { registry } from '../ComponentRegistry';\n\nexport const DefaultHomeComponents: Record<string, AnyHomeComponent | null> = {\n 'fixed-banner': LazyFixedBanner,\n 'photos-slider': LazyPhotosSlider,\n testimonial: LazyTestimonials,\n 'store-features': LazyStoreFeatures,\n youtube: LazyYoutube,\n 'square-photos': LazySquarePhotos,\n 'fixed-products': LazyFixedProducts,\n 'products-slider': LazyProductsSlider,\n 'parallax-background': LazyParallaxBackground,\n 'featured-products:style1': LazyFeaturedProductsStyle1,\n 'featured-products:style2': LazyFeaturedProductsStyle2,\n 'featured-products:style3': LazyFeaturedProductsStyle3,\n 'bundle-component': LazyBundleComponent,\n};\n\nexport function registerHomeComponents(\n components: Record<string, AnyHomeComponent | null> = DefaultHomeComponents,\n prefix = 'home:'\n): void {\n Object.entries(components).forEach(([path, component]) => {\n if (component) {\n registry.register(`${prefix}${path}`, component);\n }\n });\n}\n","import { Component, type ReactNode, type ErrorInfo } from 'react';\nimport { TwilightContext } from '../../providers/twilight-context';\nimport type { TwilightContextValue } from '../../types/twilight';\nimport type { HomeComponentData } from '../../types';\n\ninterface ComponentErrorBoundaryProps {\n children: ReactNode;\n data: HomeComponentData;\n position: number;\n}\n\ninterface ComponentErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nfunction DevelopmentErrorCard({ error, data }: { error: Error; data: HomeComponentData }) {\n return (\n <section\n dir=\"ltr\"\n className=\"s-block container overflow-hidden bg-red-50 border border-red-300 p-4\"\n >\n <p className=\"text-red-800 text-sm font-bold\">Home Component Error: {data.path}</p>\n <p className=\"text-red-700 text-sm mt-2\">{error.message}</p>\n <details className=\"mt-2\">\n <summary className=\"text-xs cursor-pointer text-red-600\">Stack Trace</summary>\n <pre className=\"text-xs mt-1 overflow-auto max-h-32 text-red-700\">{error.stack}</pre>\n </details>\n <details className=\"mt-2\">\n <summary className=\"text-xs cursor-pointer text-red-600\">Component Data</summary>\n <pre className=\"text-xs mt-1 overflow-auto max-h-32 text-red-700\">\n {JSON.stringify(data, null, 2)}\n </pre>\n </details>\n </section>\n );\n}\n\nexport class ComponentErrorBoundary extends Component<\n ComponentErrorBoundaryProps,\n ComponentErrorBoundaryState\n> {\n static contextType = TwilightContext;\n\n declare context: TwilightContextValue | null;\n\n constructor(props: ComponentErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ComponentErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n if (!this.context) {\n console.error('[ComponentErrorBoundary] Must be used within TwilightProvider');\n return;\n }\n const { log } = this.context;\n const { data, position } = this.props;\n\n log.groupCollapsed(`HomeComponent Error: ${data.path || 'unknown'}`);\n log.error('ERROR', error.message);\n log.label('COMPONENT', data.path || 'unknown');\n log.label('POSITION', position);\n log.label('URL', typeof window !== 'undefined' ? window.location.href : 'SSR');\n log.label('TIME', new Date().toISOString());\n log.trace('STACK TRACE', error.stack || '');\n log.trace('COMPONENT STACK', errorInfo.componentStack || '');\n log.dir('COMPONENT DATA', data);\n log.groupEnd();\n }\n\n render(): ReactNode {\n const { hasError, error } = this.state;\n const { children, data } = this.props;\n\n if (hasError && error) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n\n return <DevelopmentErrorCard error={error} data={data} />;\n }\n\n return children;\n }\n}\n","import { memo, useEffect, useRef, type ReactNode } from 'react';\nimport { registry } from '../ComponentRegistry';\nimport { RenderWhenVisible } from '../common';\nimport { ComponentErrorBoundary } from './ComponentErrorBoundary';\nimport type { AnyHomeComponent } from './index';\nimport type { HomeComponentData } from '../../types';\nimport {\n BackgroundSliderSkeleton,\n BulletDeliverySkeleton,\n FixedProductsSkeleton,\n ListSkeleton,\n ProductsSliderSkeleton,\n Pulse,\n ReviewItemSkeleton,\n SliderSkeleton,\n} from '@salla.sa/twilight-components-react';\n\nfunction SquareGridSkeleton() {\n return (\n <div className=\"s-block container grid grid-cols-2 sm:grid-cols-4 gap-4 py-8\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"aspect-square\" />\n ))}\n </div>\n );\n}\n\nexport type HomeComponentsProps = {\n data: HomeComponentData & {\n position?: number;\n [key: string]: unknown;\n };\n};\n\n/**\n * Fallback component for unknown/unregistered components\n * Only shows in development mode\n */\nconst FallbackComponent = memo(function FallbackComponent({ data }: HomeComponentsProps) {\n if (process.env.NODE_ENV === 'production') return null;\n\n return (\n <section\n dir=\"ltr\"\n className=\"s-block container overflow-hidden bg-yellow-50 border border-yellow-200 p-4\"\n >\n <p className=\"text-yellow-800 text-sm\">\n <strong>Unknown component:</strong> {data.path}\n </p>\n <p className=\"text-yellow-700 text-xs mt-1\">\n Register it in setup.ts: <code>registry.register('home:{data.path}', YourComponent)</code>\n </p>\n <details className=\"mt-2\">\n <summary className=\"text-xs cursor-pointer\">Component Data</summary>\n <pre className=\"text-xs mt-1 overflow-auto max-h-32\">{JSON.stringify(data, null, 2)}</pre>\n </details>\n </section>\n );\n});\n\n/**\n * Get the React component for a given home component path\n * Looks up from registry only - theme must register components\n */\nfunction getComponentByPath(data: HomeComponentData): AnyHomeComponent {\n const { path, view_style: viewStyle } = data;\n\n // 1. Check for view_style variant first\n if (viewStyle) {\n const variantKey = `home:${path}:${viewStyle}`;\n const variant = registry.resolve(variantKey);\n if (variant) {\n return variant as AnyHomeComponent;\n }\n }\n\n // 2. Check registry for component\n const registryKey = `home:${path}`;\n const component = registry.resolve(registryKey);\n if (component) {\n return component as AnyHomeComponent;\n }\n\n // 3. Fallback for unknown components\n return FallbackComponent;\n}\n\n/**\n * Render-shell config for a home block: the values the lazy-load wrapper\n * (`RenderWhenVisible`) needs *before* the block mounts — reserved height, the\n * skeleton placeholder, and the wrapper's className/id.\n *\n * Themes register config for blocks they own via `registerHomeComponentConfig`;\n * the engine knows nothing about theme-specific blocks.\n */\nexport type HomeComponentConfig = {\n height?: string;\n className?: string | ((data: HomeComponentData) => string);\n id?: string | ((data: HomeComponentData) => string);\n placeholder?: ReactNode;\n};\n\nconst COMPONENT_CONFIG: Record<string, HomeComponentConfig> = {\n 'products-slider': { height: '450px', placeholder: <ProductsSliderSkeleton /> },\n 'fixed-products': { height: '450px', placeholder: <FixedProductsSkeleton /> },\n 'featured-products': {\n height: '450px',\n placeholder: <ProductsSliderSkeleton />,\n className: (data) => {\n const style = data.view_style;\n if (style === 'style1')\n return 's-block s-block--featured-products s-block-tabs s-block--special-products container tabs-initialized';\n if (style === 'style2')\n return `s-block s-block--featured-products s-block-tabs s-block--tabs-produtcs s-block--full-bg tabs-initialized ${data.is_slider ? 'as-slider' : 'as-grid'} bg-gray-100 py-8 sm:py-16`;\n if (style === 'style3')\n return `s-block s-block--featured-products s-block--features-products${Array.isArray(data.items) && data.items.length > 1 ? ' two-cols' : ''} container`;\n return 's-block s-block--featured-products container overflow-hidden';\n },\n id: (data) => `featured-products-${data.view_style}-${data.position ?? 0}`,\n },\n testimonial: { height: '350px', placeholder: <ReviewItemSkeleton /> },\n 'store-features': { height: '200px', placeholder: <BulletDeliverySkeleton /> },\n 'parallax-background': { height: '500px', placeholder: <BackgroundSliderSkeleton /> },\n 'fixed-banner': { height: '350px', placeholder: <BackgroundSliderSkeleton /> },\n 'photos-slider': {\n height: 'clamp(130px, 30vw, 350px)',\n placeholder: <SliderSkeleton />,\n className: (data) =>\n `s-block s-block--photos-slider${data.is_repeated ? ' repeated-block' : ''}`,\n },\n 'square-photos': { height: '250px', placeholder: <SquareGridSkeleton /> },\n youtube: { height: '350px', placeholder: <SliderSkeleton /> },\n 'bundle-component': {\n height: '400px',\n placeholder: <ProductsSliderSkeleton />,\n className: (data) => `s-block s-block--bundle-${data.component_name}`,\n },\n 'main-links': {\n height: '200px',\n placeholder: <ListSkeleton />,\n className: (data) => {\n const mergeWithTop = data.merge_links_with_top_component;\n const position = data.position;\n return [\n 's-block',\n 's-block--main-links',\n mergeWithTop && position ? 'merge-with-top-component' : '',\n !data.title && mergeWithTop ? 'merged-has-no-title' : '',\n ]\n .filter(Boolean)\n .join(' ');\n },\n },\n 'square-links': { height: '200px', placeholder: <SquareGridSkeleton /> },\n};\n\n/**\n * Theme-registered render-shell config, keyed by home component path. Themes own\n * the display of their blocks by registering config here; at render time a path's\n * theme entry replaces (not field-merges) the engine's built-in `COMPONENT_CONFIG`\n * entry for that path.\n */\nconst themeComponentConfig: Record<string, HomeComponentConfig> = {};\n\n/**\n * Register render-shell config for home blocks a theme owns (height, placeholder,\n * className, id). Merges by path and overwrites existing keys, so it is safe to\n * call more than once and idempotent for the same keys.\n */\nexport function registerHomeComponentConfig(config: Record<string, HomeComponentConfig>): void {\n Object.assign(themeComponentConfig, config);\n}\n\n/**\n * Resolve a block's render-shell config: theme-registered config takes precedence\n * over the engine's built-in config; returns `undefined` when neither defines the\n * path so the renderer can apply generic defaults.\n */\nfunction resolveComponentConfig(path: string): HomeComponentConfig | undefined {\n return themeComponentConfig[path] ?? COMPONENT_CONFIG[path];\n}\n\n/**\n * Memoized component renderer with scroll-based lazy loading\n * Components only mount when scrolled into view - preventing API calls until needed\n */\nexport const HomeComponentRenderer = memo(function HomeComponentRenderer({\n data,\n index,\n}: {\n data: HomeComponentData;\n index: number;\n}) {\n const renderCountRef = useRef(0);\n renderCountRef.current += 1;\n\n if (process.env.NODE_ENV === 'development') {\n console.log(\n `[HomeComponentRenderer] RENDER: path=${data.path}, index=${index}, renderCount=${renderCountRef.current}`\n );\n }\n\n useEffect(() => {\n console.log(\n `[HomeComponentRenderer] MOUNT: path=${data.path}, index=${index}, renderCount=${renderCountRef.current}`\n );\n return () => {\n console.log(`[HomeComponentRenderer] UNMOUNT: path=${data.path}, index=${index}`);\n };\n }, [data.path, index]);\n\n const isFirstComponent = index <= 2;\n const Component = getComponentByPath(data);\n\n const config = resolveComponentConfig(data.path);\n\n const resolvedClassName = config?.className\n ? typeof config.className === 'function'\n ? config.className(data)\n : config.className\n : `s-block s-block--${data.path}`;\n const resolvedId = config?.id\n ? typeof config.id === 'function'\n ? config.id(data)\n : config.id\n : undefined;\n const height = config?.height || '400px';\n\n const content = (\n <ComponentErrorBoundary data={data} position={index + 1}>\n <Component data={{ ...data, position: index + 1, priority: isFirstComponent }} />\n </ComponentErrorBoundary>\n );\n\n return (\n <RenderWhenVisible\n rootMargin=\"50px\"\n className={resolvedClassName}\n id={resolvedId}\n estimatedHeight={height}\n renderOnMount={isFirstComponent}\n placeholder={config?.placeholder ?? <ProductsSliderSkeleton />}\n >\n {content}\n </RenderWhenVisible>\n );\n});\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { api } from './chunk-
|
|
1
|
+
import { api } from './chunk-2TB2LTL2.js';
|
|
2
2
|
import { queryOptions } from '@tanstack/react-query';
|
|
3
3
|
|
|
4
4
|
var user = {
|
|
@@ -19,5 +19,5 @@ var user = {
|
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
export { user };
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-TCSNNCRH.js.map
|
|
23
|
+
//# sourceMappingURL=chunk-TCSNNCRH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/user.ts"],"names":[],"mappings":";;;AAIO,IAAM,IAAA,GAAO;AAAA,EAClB,KAAK,YAAkC;AACrC,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,GAAA,CACV,GAAA,CAAI,WAAW,CAAA,CACf,MAAmC,CACnC,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,IAAA,EAAM,QAAgB,CAAE,CAAA;AAAA,IACvD,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,sBAAsB,KAAK,CAAA;AACzC,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,MACP,YAAA,CAA0B;AAAA,MACxB,QAAA,EAAU,CAAC,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC5B,SAAS,IAAA,CAAK;AAAA,KACf;AAAA;AAEP","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/api/user.ts"],"names":[],"mappings":";;;AAIO,IAAM,IAAA,GAAO;AAAA,EAClB,KAAK,YAAkC;AACrC,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,GAAA,CACV,GAAA,CAAI,WAAW,CAAA,CACf,MAAmC,CACnC,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,IAAA,EAAM,QAAgB,CAAE,CAAA;AAAA,IACvD,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,sBAAsB,KAAK,CAAA;AACzC,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,MACP,YAAA,CAA0B;AAAA,MACxB,QAAA,EAAU,CAAC,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC5B,SAAS,IAAA,CAAK;AAAA,KACf;AAAA;AAEP","file":"chunk-TCSNNCRH.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport type { User } from '../types';\n\nexport const user = {\n get: async (): Promise<User | null> => {\n try {\n return await api\n .get('auth/user')\n .json<{ data: Omit<User, 'type'> }>()\n .then((r) => ({ ...r.data, type: 'user' as const }));\n } catch (error) {\n console.debug('[user.get] Failed:', error);\n return null;\n }\n },\n\n queries: {\n current: () =>\n queryOptions<User | null>({\n queryKey: ['user', 'current'],\n queryFn: user.get,\n }),\n },\n};\n"]}
|
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
import { Header } from './chunk-
|
|
2
|
-
import { Copyright } from './chunk-
|
|
3
|
-
import {
|
|
1
|
+
import { Header } from './chunk-FH5YDZFQ.js';
|
|
2
|
+
import { Copyright } from './chunk-JKIRRMBU.js';
|
|
3
|
+
import { useDevSettingsOverrides } from './chunk-2JV6WZ6O.js';
|
|
4
4
|
import { color } from './chunk-VVZNW5CB.js';
|
|
5
|
-
import {
|
|
5
|
+
import { useLocation, useIsHome, NavigationInterceptor } from './chunk-2ZRLSZ4V.js';
|
|
6
|
+
import { useUser } from './chunk-I5Z4NJBB.js';
|
|
6
7
|
import { AUTH_TOKEN_COOKIE_NAME, clearAuthTokenCookie, syncSdkLocale } from './chunk-QYL5OHAV.js';
|
|
7
|
-
import { getTwilightContext, updateTwilightContext } from './chunk-
|
|
8
|
+
import { getTwilightContext, updateTwilightContext } from './chunk-KIPZQN3Y.js';
|
|
8
9
|
import { useAsset } from './chunk-Z653O7MX.js';
|
|
9
10
|
import { DocumentClassProvider, useDocumentClass } from './chunk-JWXJPJBO.js';
|
|
10
|
-
import { useTranslation, I18nProvider } from './chunk-
|
|
11
|
+
import { useTranslation, I18nProvider } from './chunk-TYNZ5B2B.js';
|
|
11
12
|
import { FALLBACK_LOCALE, getLanguageInfo } from './chunk-T72DAX7R.js';
|
|
12
|
-
import { WidgetHead } from './chunk-
|
|
13
|
-
import { HookSlot } from './chunk-
|
|
14
|
-
import { hookRegistry } from './chunk-
|
|
15
|
-
import { Image } from './chunk-
|
|
13
|
+
import { WidgetHead } from './chunk-RJPPO3ET.js';
|
|
14
|
+
import { HookSlot } from './chunk-Q7VWURUR.js';
|
|
15
|
+
import { hookRegistry } from './chunk-GU2KUQVD.js';
|
|
16
|
+
import { Image } from './chunk-SM7VMQZY.js';
|
|
16
17
|
import { Link } from './chunk-AXW67SY7.js';
|
|
17
|
-
import { LazyImageModal } from './chunk-
|
|
18
|
-
import { Toaster } from './chunk-
|
|
19
|
-
import { useTwilight, TwilightContext } from './chunk-
|
|
18
|
+
import { LazyImageModal } from './chunk-CUG6VOLM.js';
|
|
19
|
+
import { Toaster } from './chunk-OBSAH7K6.js';
|
|
20
|
+
import { useTwilight, TwilightContext } from './chunk-DF6FBKDN.js';
|
|
20
21
|
import React2, { lazy, Suspense, useCallback, useMemo, useRef, useEffect, useState } from 'react';
|
|
21
22
|
import { SallaAppsIcons } from '@salla.sa/twilight-components-react/apps-icons';
|
|
22
23
|
import { SallaContacts } from '@salla.sa/twilight-components-react/contacts';
|
|
@@ -102,6 +103,11 @@ function ThemeDocumentSync({
|
|
|
102
103
|
}, [theme]);
|
|
103
104
|
return null;
|
|
104
105
|
}
|
|
106
|
+
|
|
107
|
+
// src/utils/engine-version.ts
|
|
108
|
+
var ENGINE_VERSION = "1.0.1" ;
|
|
109
|
+
|
|
110
|
+
// src/providers/twilight-init.ts
|
|
105
111
|
function getSalla() {
|
|
106
112
|
if (typeof window === "undefined") return void 0;
|
|
107
113
|
return window.salla;
|
|
@@ -120,7 +126,7 @@ function useTwilightInit({
|
|
|
120
126
|
const [storeData, setStoreData] = useState(
|
|
121
127
|
() => settingsData?.store ?? {}
|
|
122
128
|
);
|
|
123
|
-
const [
|
|
129
|
+
const [baseTheme] = useState(() => {
|
|
124
130
|
const theme = settingsData?.theme;
|
|
125
131
|
if (theme) {
|
|
126
132
|
return {
|
|
@@ -130,9 +136,21 @@ function useTwilightInit({
|
|
|
130
136
|
}
|
|
131
137
|
return { is_rtl: initialLanguage.dir === "rtl" };
|
|
132
138
|
});
|
|
139
|
+
const devOverrides = useDevSettingsOverrides();
|
|
140
|
+
const themeData = useMemo(() => {
|
|
141
|
+
if (import.meta.env.DEV && devOverrides.enabled) {
|
|
142
|
+
const overrides = devOverrides.settings;
|
|
143
|
+
if (overrides && Object.keys(overrides).length > 0) {
|
|
144
|
+
return {
|
|
145
|
+
...baseTheme,
|
|
146
|
+
settings: { ...baseTheme.settings ?? {}, ...overrides }
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return baseTheme;
|
|
151
|
+
}, [baseTheme, devOverrides]);
|
|
133
152
|
const [currency] = useState(null);
|
|
134
153
|
const [isMobileWebview] = useState(false);
|
|
135
|
-
const [isMobile] = useState(() => getTwilightContext().isMobile);
|
|
136
154
|
useEffect(() => {
|
|
137
155
|
if (!isBrowser || !themeData) return;
|
|
138
156
|
const sdk = getSalla();
|
|
@@ -142,6 +160,8 @@ function useTwilightInit({
|
|
|
142
160
|
useEffect(() => {
|
|
143
161
|
const sdk = getSalla();
|
|
144
162
|
if (!sdk) return;
|
|
163
|
+
const sdkWithVersions = sdk;
|
|
164
|
+
sdkWithVersions.versions = { ...sdkWithVersions.versions, engine: ENGINE_VERSION };
|
|
145
165
|
if (initialLocale) {
|
|
146
166
|
syncSdkLocale(initialLocale);
|
|
147
167
|
}
|
|
@@ -177,13 +197,18 @@ function useTwilightInit({
|
|
|
177
197
|
setStoreData,
|
|
178
198
|
themeData,
|
|
179
199
|
currency,
|
|
180
|
-
isMobileWebview
|
|
181
|
-
isMobile
|
|
200
|
+
isMobileWebview
|
|
182
201
|
};
|
|
183
202
|
}
|
|
203
|
+
var navigationSetups = {
|
|
204
|
+
tanstack: lazy(
|
|
205
|
+
() => import('./navigation-ZCEGLIHD.js').then((m) => ({ default: m.NavigationSetup }))
|
|
206
|
+
),
|
|
207
|
+
nextjs: lazy(() => import('./navigation-ZIULIDFF.js').then((m) => ({ default: m.NavigationSetup })))
|
|
208
|
+
};
|
|
184
209
|
var routeDocumentSyncs = {
|
|
185
210
|
tanstack: lazy(
|
|
186
|
-
() => import('./document-class-
|
|
211
|
+
() => import('./document-class-4EILSNLT.js').then((m) => ({
|
|
187
212
|
default: m.TanStackDocumentSync
|
|
188
213
|
}))
|
|
189
214
|
)
|
|
@@ -251,13 +276,13 @@ function useDate() {
|
|
|
251
276
|
|
|
252
277
|
// src/hooks/useNumber.ts
|
|
253
278
|
var ARABIC_NUMERALS = ["\u0660", "\u0661", "\u0662", "\u0663", "\u0664", "\u0665", "\u0666", "\u0667", "\u0668", "\u0669"];
|
|
279
|
+
var toArabic = (input) => {
|
|
280
|
+
const str = String(input);
|
|
281
|
+
return str.replace(/[0-9]/g, (d) => ARABIC_NUMERALS[parseInt(d)]);
|
|
282
|
+
};
|
|
254
283
|
function useNumber() {
|
|
255
284
|
const { store } = useTwilight();
|
|
256
285
|
const useArabicNumerals = store?.settings?.arabic_numbers_enabled ?? false;
|
|
257
|
-
const toArabic = (input) => {
|
|
258
|
-
const str = String(input);
|
|
259
|
-
return str.replace(/[0-9]/g, (d) => ARABIC_NUMERALS[parseInt(d)]);
|
|
260
|
-
};
|
|
261
286
|
const format = (number) => {
|
|
262
287
|
return useArabicNumerals ? toArabic(number) : String(number);
|
|
263
288
|
};
|
|
@@ -272,6 +297,33 @@ function useNumber() {
|
|
|
272
297
|
}
|
|
273
298
|
var AR_LOCALE = "ar";
|
|
274
299
|
var SAR_CURRENCY = "SAR";
|
|
300
|
+
var intlCache = /* @__PURE__ */ new Map();
|
|
301
|
+
function getCachedIntl(loc, opts) {
|
|
302
|
+
const key = `${loc}|${JSON.stringify(opts)}`;
|
|
303
|
+
let fmt = intlCache.get(key);
|
|
304
|
+
if (!fmt) {
|
|
305
|
+
fmt = new Intl.NumberFormat(loc, opts);
|
|
306
|
+
intlCache.set(key, fmt);
|
|
307
|
+
}
|
|
308
|
+
return fmt;
|
|
309
|
+
}
|
|
310
|
+
var parse = (moneyString) => {
|
|
311
|
+
const cleaned = moneyString.replace(/[^\d.,٬٫]/g, "");
|
|
312
|
+
const normalized = cleaned.replace(/٬/g, "").replace(/٫/g, ".");
|
|
313
|
+
const parts = normalized.split(/[.,]/);
|
|
314
|
+
if (parts.length > 2) {
|
|
315
|
+
return parseFloat(`${parts.slice(0, -1).join("")}.${parts[parts.length - 1]}`);
|
|
316
|
+
}
|
|
317
|
+
return parseFloat(normalized.replace(/,/g, ""));
|
|
318
|
+
};
|
|
319
|
+
var isValid = (value) => {
|
|
320
|
+
if (typeof value === "number" && !isNaN(value) && isFinite(value)) return true;
|
|
321
|
+
if (typeof value === "string") {
|
|
322
|
+
const parsed = parseFloat(value);
|
|
323
|
+
return !isNaN(parsed) && isFinite(parsed);
|
|
324
|
+
}
|
|
325
|
+
return false;
|
|
326
|
+
};
|
|
275
327
|
function useMoney() {
|
|
276
328
|
const { store } = useTwilight();
|
|
277
329
|
const { locale } = useTranslation();
|
|
@@ -291,7 +343,7 @@ function useMoney() {
|
|
|
291
343
|
const showDash = type === "product" ? store?.settings?.product?.show_price_as_dash : false;
|
|
292
344
|
return showDash ? "-" : "";
|
|
293
345
|
}
|
|
294
|
-
let formatted =
|
|
346
|
+
let formatted = getCachedIntl(loc, {
|
|
295
347
|
minimumFractionDigits: 2,
|
|
296
348
|
maximumFractionDigits: 2
|
|
297
349
|
}).format(numericAmount);
|
|
@@ -306,7 +358,7 @@ function useMoney() {
|
|
|
306
358
|
] });
|
|
307
359
|
}
|
|
308
360
|
try {
|
|
309
|
-
return
|
|
361
|
+
return getCachedIntl(loc, {
|
|
310
362
|
style: "currency",
|
|
311
363
|
currency,
|
|
312
364
|
minimumFractionDigits: 2,
|
|
@@ -316,23 +368,6 @@ function useMoney() {
|
|
|
316
368
|
return `${formatted} ${currency}`;
|
|
317
369
|
}
|
|
318
370
|
};
|
|
319
|
-
const parse = (moneyString) => {
|
|
320
|
-
const cleaned = moneyString.replace(/[^\d.,٬٫]/g, "");
|
|
321
|
-
const normalized = cleaned.replace(/٬/g, "").replace(/٫/g, ".");
|
|
322
|
-
const parts = normalized.split(/[.,]/);
|
|
323
|
-
if (parts.length > 2) {
|
|
324
|
-
return parseFloat(`${parts.slice(0, -1).join("")}.${parts[parts.length - 1]}`);
|
|
325
|
-
}
|
|
326
|
-
return parseFloat(normalized.replace(/,/g, ""));
|
|
327
|
-
};
|
|
328
|
-
const isValid = (value) => {
|
|
329
|
-
if (typeof value === "number" && !isNaN(value) && isFinite(value)) return true;
|
|
330
|
-
if (typeof value === "string") {
|
|
331
|
-
const parsed = parseFloat(value);
|
|
332
|
-
return !isNaN(parsed) && isFinite(parsed);
|
|
333
|
-
}
|
|
334
|
-
return false;
|
|
335
|
-
};
|
|
336
371
|
return { format, parse, isValid };
|
|
337
372
|
}
|
|
338
373
|
function eventId(prefix) {
|
|
@@ -644,19 +679,6 @@ function usePageConfig(pageData) {
|
|
|
644
679
|
});
|
|
645
680
|
}, []);
|
|
646
681
|
}
|
|
647
|
-
var MOBILE_BREAKPOINT = 768;
|
|
648
|
-
function useIsMobile() {
|
|
649
|
-
const { isMobile: serverIsMobile } = useTwilight();
|
|
650
|
-
const [isMobile, setIsMobile] = useState(serverIsMobile);
|
|
651
|
-
useEffect(() => {
|
|
652
|
-
const mq = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT}px)`);
|
|
653
|
-
setIsMobile(mq.matches);
|
|
654
|
-
const handler = (e) => setIsMobile(e.matches);
|
|
655
|
-
mq.addEventListener("change", handler);
|
|
656
|
-
return () => mq.removeEventListener("change", handler);
|
|
657
|
-
}, []);
|
|
658
|
-
return isMobile;
|
|
659
|
-
}
|
|
660
682
|
|
|
661
683
|
// src/utils/breadcrumb.ts
|
|
662
684
|
var BREADCRUMB_REFERRER_KEY = "breadcrumb-referrer";
|
|
@@ -718,15 +740,15 @@ var LazySiftSnippet = lazy(
|
|
|
718
740
|
() => import('./SiftSnippet-5FCU6TR6.js').then((m) => ({ default: m.SiftSnippet }))
|
|
719
741
|
);
|
|
720
742
|
var LazyStoreClosedNotification = lazy(
|
|
721
|
-
() => import('./StoreClosedNotification-
|
|
743
|
+
() => import('./StoreClosedNotification-7XSPEVKM.js').then((m) => ({
|
|
722
744
|
default: m.StoreClosedNotification
|
|
723
745
|
}))
|
|
724
746
|
);
|
|
725
747
|
var LazyPriceQuoteButton = lazy(
|
|
726
|
-
() => import('./PriceQuoteButton-
|
|
748
|
+
() => import('./PriceQuoteButton-CGRNHY3E.js').then((m) => ({ default: m.PriceQuoteButton }))
|
|
727
749
|
);
|
|
728
750
|
var LazyPreOrderNotification = lazy(
|
|
729
|
-
() => import('./PreOrderNotification-
|
|
751
|
+
() => import('./PreOrderNotification-OP57EA6F.js').then((m) => ({
|
|
730
752
|
default: m.PreOrderNotification
|
|
731
753
|
}))
|
|
732
754
|
);
|
|
@@ -1029,7 +1051,7 @@ function TwilightProvider({
|
|
|
1029
1051
|
sdk.event.off("api::token.injected", handleTokenFetched);
|
|
1030
1052
|
};
|
|
1031
1053
|
}, []);
|
|
1032
|
-
const { isReady, storeData, setStoreData, themeData, currency, isMobileWebview
|
|
1054
|
+
const { isReady, storeData, setStoreData, themeData, currency, isMobileWebview } = useTwilightInit({
|
|
1033
1055
|
debug,
|
|
1034
1056
|
initialData,
|
|
1035
1057
|
onReady,
|
|
@@ -1060,7 +1082,6 @@ function TwilightProvider({
|
|
|
1060
1082
|
const contextValue = useMemo(
|
|
1061
1083
|
() => ({
|
|
1062
1084
|
isReady,
|
|
1063
|
-
isMobile,
|
|
1064
1085
|
store: storeData,
|
|
1065
1086
|
_setStore: setStoreData,
|
|
1066
1087
|
theme: themeData,
|
|
@@ -1095,7 +1116,7 @@ function TwilightProvider({
|
|
|
1095
1116
|
return getTwilightContext().extras;
|
|
1096
1117
|
}
|
|
1097
1118
|
}),
|
|
1098
|
-
[isReady,
|
|
1119
|
+
[isReady, storeData, setStoreData, themeData, currency, config, log, authToken]
|
|
1099
1120
|
);
|
|
1100
1121
|
const framework = client !== false ? client?.framework ?? "tanstack" : null;
|
|
1101
1122
|
const LazyNavSetup = framework ? navigationSetups[framework] : null;
|
|
@@ -1181,6 +1202,6 @@ function useStore() {
|
|
|
1181
1202
|
return { ...store, refresh };
|
|
1182
1203
|
}
|
|
1183
1204
|
|
|
1184
|
-
export { Footer, MasterLayout, TwilightProvider, registerDefaultHooks, registerDocumentSync, routeDocumentSyncs, useBreadcrumbs, useDate, useGtm,
|
|
1185
|
-
//# sourceMappingURL=chunk-
|
|
1186
|
-
//# sourceMappingURL=chunk-
|
|
1205
|
+
export { Footer, MasterLayout, TwilightProvider, registerDefaultHooks, registerDocumentSync, routeDocumentSyncs, useBreadcrumbs, useDate, useGtm, useMoney, useNumber, useOpeningHours, usePageConfig, useStore };
|
|
1206
|
+
//# sourceMappingURL=chunk-THMQ2Z3N.js.map
|
|
1207
|
+
//# sourceMappingURL=chunk-THMQ2Z3N.js.map
|