@salla.sa/twilight-theme-engine 1.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +165 -0
- package/dist/AddToCartForm-HOWNKCKX.js +304 -0
- package/dist/AddToCartForm-HOWNKCKX.js.map +1 -0
- package/dist/BlogAuthorPage-W3BZIJHJ.js +101 -0
- package/dist/BlogAuthorPage-W3BZIJHJ.js.map +1 -0
- package/dist/BlogCategoryPage-AIAJ5JBR.js +101 -0
- package/dist/BlogCategoryPage-AIAJ5JBR.js.map +1 -0
- package/dist/BlogPage-4BYF2EQW.js +190 -0
- package/dist/BlogPage-4BYF2EQW.js.map +1 -0
- package/dist/BlogSinglePage-AMNAUMWW.js +187 -0
- package/dist/BlogSinglePage-AMNAUMWW.js.map +1 -0
- package/dist/BlogTagPage-ELG2H5N5.js +101 -0
- package/dist/BlogTagPage-ELG2H5N5.js.map +1 -0
- package/dist/BrandsPage-ZSO3PYAV.js +127 -0
- package/dist/BrandsPage-ZSO3PYAV.js.map +1 -0
- package/dist/Breadcrumb-N32QFMVK.js +152 -0
- package/dist/Breadcrumb-N32QFMVK.js.map +1 -0
- package/dist/CartItem-SGTGOTEC.js +171 -0
- package/dist/CartItem-SGTGOTEC.js.map +1 -0
- package/dist/CartSummary-OKDGVSX2.js +236 -0
- package/dist/CartSummary-OKDGVSX2.js.map +1 -0
- package/dist/Copyright-F3HLYXFJ.js +9 -0
- package/dist/Copyright-F3HLYXFJ.js.map +1 -0
- package/dist/CurrencySymbol-TARAYUOT.js +11 -0
- package/dist/CurrencySymbol-TARAYUOT.js.map +1 -0
- package/dist/CustomerLayout-LB4E2LHT.js +68 -0
- package/dist/CustomerLayout-LB4E2LHT.js.map +1 -0
- package/dist/ErrorPage-TK4U3ENF.js +6 -0
- package/dist/ErrorPage-TK4U3ENF.js.map +1 -0
- package/dist/Footer-UVCSKTW3.js +39 -0
- package/dist/Footer-UVCSKTW3.js.map +1 -0
- package/dist/GoogleTag-4LHWC365.js +52 -0
- package/dist/GoogleTag-4LHWC365.js.map +1 -0
- package/dist/Header-BF6SPZJC.js +15 -0
- package/dist/Header-BF6SPZJC.js.map +1 -0
- package/dist/ImageModal-WLJM3WIE.js +41 -0
- package/dist/ImageModal-WLJM3WIE.js.map +1 -0
- package/dist/LoyaltyPage-X4PHPUFC.js +188 -0
- package/dist/LoyaltyPage-X4PHPUFC.js.map +1 -0
- package/dist/MainMenu-R3EWTNNC.js +91 -0
- package/dist/MainMenu-R3EWTNNC.js.map +1 -0
- package/dist/MasterLayout-5JLM7IMW.js +39 -0
- package/dist/MasterLayout-5JLM7IMW.js.map +1 -0
- package/dist/MobileMenu-QXESUQXC.js +175 -0
- package/dist/MobileMenu-QXESUQXC.js.map +1 -0
- package/dist/NoContent-PBGESHBJ.js +21 -0
- package/dist/NoContent-PBGESHBJ.js.map +1 -0
- package/dist/NotificationsPage-V6UIPDJD.js +84 -0
- package/dist/NotificationsPage-V6UIPDJD.js.map +1 -0
- package/dist/OrderSinglePage-ZMEKPLE3.js +441 -0
- package/dist/OrderSinglePage-ZMEKPLE3.js.map +1 -0
- package/dist/OrdersPage-EAATVPYK.js +184 -0
- package/dist/OrdersPage-EAATVPYK.js.map +1 -0
- package/dist/PageSingle-Y6ARZ5LS.js +28 -0
- package/dist/PageSingle-Y6ARZ5LS.js.map +1 -0
- package/dist/PreOrderNotification-ZVTGNV7K.js +23 -0
- package/dist/PreOrderNotification-ZVTGNV7K.js.map +1 -0
- package/dist/PriceQuoteButton-RAAPL4N4.js +26 -0
- package/dist/PriceQuoteButton-RAAPL4N4.js.map +1 -0
- package/dist/ProductDetails-KTY4ZSFM.js +194 -0
- package/dist/ProductDetails-KTY4ZSFM.js.map +1 -0
- package/dist/ProfilePage-6SK34MDJ.js +64 -0
- package/dist/ProfilePage-6SK34MDJ.js.map +1 -0
- package/dist/RenderWhenVisible-TR7G2KUC.js +50 -0
- package/dist/RenderWhenVisible-TR7G2KUC.js.map +1 -0
- package/dist/SeoCartWidget-XF4GEJK7.js +109 -0
- package/dist/SeoCartWidget-XF4GEJK7.js.map +1 -0
- package/dist/SettingsPage-DPYARBPO.js +51 -0
- package/dist/SettingsPage-DPYARBPO.js.map +1 -0
- package/dist/SiftSnippet-X74S5KDO.js +29 -0
- package/dist/SiftSnippet-X74S5KDO.js.map +1 -0
- package/dist/StoreClosedNotification-KSB2GPEZ.js +91 -0
- package/dist/StoreClosedNotification-KSB2GPEZ.js.map +1 -0
- package/dist/Testimonials-MZCVP66E.js +26 -0
- package/dist/Testimonials-MZCVP66E.js.map +1 -0
- package/dist/TestimonialsPage-4OFS5Z4V.js +77 -0
- package/dist/TestimonialsPage-4OFS5Z4V.js.map +1 -0
- package/dist/ThankYouPage-C7PA3RJP.js +236 -0
- package/dist/ThankYouPage-C7PA3RJP.js.map +1 -0
- package/dist/TwilightBundles-5F2H75VV.js +46 -0
- package/dist/TwilightBundles-5F2H75VV.js.map +1 -0
- package/dist/WalletPage-66XGZKO7.js +189 -0
- package/dist/WalletPage-66XGZKO7.js.map +1 -0
- package/dist/WidgetHead-FXEPCB23.js +7 -0
- package/dist/WidgetHead-FXEPCB23.js.map +1 -0
- package/dist/WishlistPage-7ZZYHBSZ.js +144 -0
- package/dist/WishlistPage-7ZZYHBSZ.js.map +1 -0
- package/dist/ambient/salla-components.d.ts +312 -0
- package/dist/ambient/virtual-modules.d.ts +22 -0
- package/dist/api/apps.d.ts +28 -0
- package/dist/api/apps.d.ts.map +1 -0
- package/dist/api/apps.js +26 -0
- package/dist/api/apps.js.map +1 -0
- package/dist/api/blog.d.ts +61 -0
- package/dist/api/blog.d.ts.map +1 -0
- package/dist/api/brands.d.ts +25 -0
- package/dist/api/brands.d.ts.map +1 -0
- package/dist/api/brands.js +40 -0
- package/dist/api/brands.js.map +1 -0
- package/dist/api/cart.d.ts +21 -0
- package/dist/api/cart.d.ts.map +1 -0
- package/dist/api/cart.js +40 -0
- package/dist/api/cart.js.map +1 -0
- package/dist/api/category.d.ts +31 -0
- package/dist/api/category.d.ts.map +1 -0
- package/dist/api/category.js +40 -0
- package/dist/api/category.js.map +1 -0
- package/dist/api/client.d.ts +17 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +7 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/home.d.ts +15 -0
- package/dist/api/home.d.ts.map +1 -0
- package/dist/api/home.js +8 -0
- package/dist/api/home.js.map +1 -0
- package/dist/api/loyalty.d.ts +25 -0
- package/dist/api/loyalty.d.ts.map +1 -0
- package/dist/api/loyalty.js +40 -0
- package/dist/api/loyalty.js.map +1 -0
- package/dist/api/menu.d.ts +16 -0
- package/dist/api/menu.d.ts.map +1 -0
- package/dist/api/menu.js +8 -0
- package/dist/api/menu.js.map +1 -0
- package/dist/api/notification.d.ts +26 -0
- package/dist/api/notification.d.ts.map +1 -0
- package/dist/api/order.d.ts +74 -0
- package/dist/api/order.d.ts.map +1 -0
- package/dist/api/order.js +40 -0
- package/dist/api/order.js.map +1 -0
- package/dist/api/page.d.ts +16 -0
- package/dist/api/page.d.ts.map +1 -0
- package/dist/api/page.js +40 -0
- package/dist/api/page.js.map +1 -0
- package/dist/api/product.d.ts +80 -0
- package/dist/api/product.d.ts.map +1 -0
- package/dist/api/product.js +40 -0
- package/dist/api/product.js.map +1 -0
- package/dist/api/profile.d.ts +9 -0
- package/dist/api/profile.d.ts.map +1 -0
- package/dist/api/profile.js +23 -0
- package/dist/api/profile.js.map +1 -0
- package/dist/api/store.d.ts +46 -0
- package/dist/api/store.d.ts.map +1 -0
- package/dist/api/store.js +8 -0
- package/dist/api/store.js.map +1 -0
- package/dist/api/translations.d.ts +15 -0
- package/dist/api/translations.d.ts.map +1 -0
- package/dist/api/translations.js +8 -0
- package/dist/api/translations.js.map +1 -0
- package/dist/api/types.d.ts +54 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +3 -0
- package/dist/api/types.js.map +1 -0
- package/dist/api/user.d.ts +15 -0
- package/dist/api/user.d.ts.map +1 -0
- package/dist/api/user.js +8 -0
- package/dist/api/user.js.map +1 -0
- package/dist/api/wallet.d.ts +30 -0
- package/dist/api/wallet.d.ts.map +1 -0
- package/dist/api/wishlist.d.ts +25 -0
- package/dist/api/wishlist.d.ts.map +1 -0
- package/dist/chunk-25SSLQAJ.js +67 -0
- package/dist/chunk-25SSLQAJ.js.map +1 -0
- package/dist/chunk-2FU6CVSB.js +18 -0
- package/dist/chunk-2FU6CVSB.js.map +1 -0
- package/dist/chunk-2KF5JJU6.js +169 -0
- package/dist/chunk-2KF5JJU6.js.map +1 -0
- package/dist/chunk-2TB2LTL2.js +103 -0
- package/dist/chunk-2TB2LTL2.js.map +1 -0
- package/dist/chunk-3DCZJDDK.js +10 -0
- package/dist/chunk-3DCZJDDK.js.map +1 -0
- package/dist/chunk-3UHSMGPY.js +145 -0
- package/dist/chunk-3UHSMGPY.js.map +1 -0
- package/dist/chunk-4EQEYRZ7.js +65 -0
- package/dist/chunk-4EQEYRZ7.js.map +1 -0
- package/dist/chunk-562ZMVI3.js +592 -0
- package/dist/chunk-562ZMVI3.js.map +1 -0
- package/dist/chunk-5Q6PFLDN.js +20 -0
- package/dist/chunk-5Q6PFLDN.js.map +1 -0
- package/dist/chunk-6B6VCCMC.js +28 -0
- package/dist/chunk-6B6VCCMC.js.map +1 -0
- package/dist/chunk-6BZ5TKEV.js +44 -0
- package/dist/chunk-6BZ5TKEV.js.map +1 -0
- package/dist/chunk-6NBBXERE.js +24 -0
- package/dist/chunk-6NBBXERE.js.map +1 -0
- package/dist/chunk-6Q5BFHFA.js +88 -0
- package/dist/chunk-6Q5BFHFA.js.map +1 -0
- package/dist/chunk-6YX4RS55.js +33 -0
- package/dist/chunk-6YX4RS55.js.map +1 -0
- package/dist/chunk-7LP7D75V.js +14 -0
- package/dist/chunk-7LP7D75V.js.map +1 -0
- package/dist/chunk-A5ZRUAMT.js +16 -0
- package/dist/chunk-A5ZRUAMT.js.map +1 -0
- package/dist/chunk-B3EFOE57.js +32 -0
- package/dist/chunk-B3EFOE57.js.map +1 -0
- package/dist/chunk-BT6HEEAP.js +31 -0
- package/dist/chunk-BT6HEEAP.js.map +1 -0
- package/dist/chunk-BVSJPBJ6.js +26 -0
- package/dist/chunk-BVSJPBJ6.js.map +1 -0
- package/dist/chunk-BWFBVXT3.js +13 -0
- package/dist/chunk-BWFBVXT3.js.map +1 -0
- package/dist/chunk-CW625T2E.js +62 -0
- package/dist/chunk-CW625T2E.js.map +1 -0
- package/dist/chunk-DFMO5KBU.js +67 -0
- package/dist/chunk-DFMO5KBU.js.map +1 -0
- package/dist/chunk-DGUM43GV.js +10 -0
- package/dist/chunk-DGUM43GV.js.map +1 -0
- package/dist/chunk-EQ5ZGAVR.js +89 -0
- package/dist/chunk-EQ5ZGAVR.js.map +1 -0
- package/dist/chunk-FBFPH5BB.js +34 -0
- package/dist/chunk-FBFPH5BB.js.map +1 -0
- package/dist/chunk-G7ALL4BC.js +52 -0
- package/dist/chunk-G7ALL4BC.js.map +1 -0
- package/dist/chunk-GBWCXUPD.js +99 -0
- package/dist/chunk-GBWCXUPD.js.map +1 -0
- package/dist/chunk-GLM3RPCP.js +1167 -0
- package/dist/chunk-GLM3RPCP.js.map +1 -0
- package/dist/chunk-GN34LCTG.js +92 -0
- package/dist/chunk-GN34LCTG.js.map +1 -0
- package/dist/chunk-GO34DE35.js +247 -0
- package/dist/chunk-GO34DE35.js.map +1 -0
- package/dist/chunk-HOSHJBPS.js +52 -0
- package/dist/chunk-HOSHJBPS.js.map +1 -0
- package/dist/chunk-I5Z4NJBB.js +17 -0
- package/dist/chunk-I5Z4NJBB.js.map +1 -0
- package/dist/chunk-J37AYLWL.js +66 -0
- package/dist/chunk-J37AYLWL.js.map +1 -0
- package/dist/chunk-KCKHA75V.js +19 -0
- package/dist/chunk-KCKHA75V.js.map +1 -0
- package/dist/chunk-KIPZQN3Y.js +158 -0
- package/dist/chunk-KIPZQN3Y.js.map +1 -0
- package/dist/chunk-LBUMC5PB.js +34 -0
- package/dist/chunk-LBUMC5PB.js.map +1 -0
- package/dist/chunk-LSDIFHXZ.js +80 -0
- package/dist/chunk-LSDIFHXZ.js.map +1 -0
- package/dist/chunk-M6ICEIWY.js +25 -0
- package/dist/chunk-M6ICEIWY.js.map +1 -0
- package/dist/chunk-MTONGOJD.js +42 -0
- package/dist/chunk-MTONGOJD.js.map +1 -0
- package/dist/chunk-MXQCE3KA.js +173 -0
- package/dist/chunk-MXQCE3KA.js.map +1 -0
- package/dist/chunk-N5RSKJP4.js +65 -0
- package/dist/chunk-N5RSKJP4.js.map +1 -0
- package/dist/chunk-N7CCSGZF.js +3 -0
- package/dist/chunk-N7CCSGZF.js.map +1 -0
- package/dist/chunk-NBHI5X36.js +27 -0
- package/dist/chunk-NBHI5X36.js.map +1 -0
- package/dist/chunk-NSX6XPDU.js +673 -0
- package/dist/chunk-NSX6XPDU.js.map +1 -0
- package/dist/chunk-O2UOV5RK.js +32 -0
- package/dist/chunk-O2UOV5RK.js.map +1 -0
- package/dist/chunk-OZTGUF7K.js +66 -0
- package/dist/chunk-OZTGUF7K.js.map +1 -0
- package/dist/chunk-Q3VACSSR.js +21 -0
- package/dist/chunk-Q3VACSSR.js.map +1 -0
- package/dist/chunk-QTDGM2SO.js +123 -0
- package/dist/chunk-QTDGM2SO.js.map +1 -0
- package/dist/chunk-QYL5OHAV.js +70 -0
- package/dist/chunk-QYL5OHAV.js.map +1 -0
- package/dist/chunk-RH32IGQD.js +372 -0
- package/dist/chunk-RH32IGQD.js.map +1 -0
- package/dist/chunk-RUHSV4Z6.js +12 -0
- package/dist/chunk-RUHSV4Z6.js.map +1 -0
- package/dist/chunk-RYBA3JDM.js +33 -0
- package/dist/chunk-RYBA3JDM.js.map +1 -0
- package/dist/chunk-SBIXBX6J.js +29 -0
- package/dist/chunk-SBIXBX6J.js.map +1 -0
- package/dist/chunk-SSRNIBVV.js +75 -0
- package/dist/chunk-SSRNIBVV.js.map +1 -0
- package/dist/chunk-SVZOWI7E.js +51 -0
- package/dist/chunk-SVZOWI7E.js.map +1 -0
- package/dist/chunk-SYHTMNYF.js +89 -0
- package/dist/chunk-SYHTMNYF.js.map +1 -0
- package/dist/chunk-T72DAX7R.js +65 -0
- package/dist/chunk-T72DAX7R.js.map +1 -0
- package/dist/chunk-TCSNNCRH.js +23 -0
- package/dist/chunk-TCSNNCRH.js.map +1 -0
- package/dist/chunk-TQLEQSXE.js +48 -0
- package/dist/chunk-TQLEQSXE.js.map +1 -0
- package/dist/chunk-TRUQDEMI.js +14 -0
- package/dist/chunk-TRUQDEMI.js.map +1 -0
- package/dist/chunk-TZ3E5BN4.js +91 -0
- package/dist/chunk-TZ3E5BN4.js.map +1 -0
- package/dist/chunk-TZ4YD5CU.js +16 -0
- package/dist/chunk-TZ4YD5CU.js.map +1 -0
- package/dist/chunk-U7HAK5U7.js +105 -0
- package/dist/chunk-U7HAK5U7.js.map +1 -0
- package/dist/chunk-UE3BUFZI.js +16 -0
- package/dist/chunk-UE3BUFZI.js.map +1 -0
- package/dist/chunk-UIX3W2PN.js +56 -0
- package/dist/chunk-UIX3W2PN.js.map +1 -0
- package/dist/chunk-VVRYP6IL.js +61 -0
- package/dist/chunk-VVRYP6IL.js.map +1 -0
- package/dist/chunk-VVZNW5CB.js +49 -0
- package/dist/chunk-VVZNW5CB.js.map +1 -0
- package/dist/chunk-XHGF75TM.js +133 -0
- package/dist/chunk-XHGF75TM.js.map +1 -0
- package/dist/chunk-XUI3TRXF.js +26 -0
- package/dist/chunk-XUI3TRXF.js.map +1 -0
- package/dist/chunk-YCYTBRYB.js +30 -0
- package/dist/chunk-YCYTBRYB.js.map +1 -0
- package/dist/chunk-YMVLYYLU.js +25 -0
- package/dist/chunk-YMVLYYLU.js.map +1 -0
- package/dist/chunk-Z653O7MX.js +10 -0
- package/dist/chunk-Z653O7MX.js.map +1 -0
- package/dist/chunk-ZCH7W7DZ.js +30 -0
- package/dist/chunk-ZCH7W7DZ.js.map +1 -0
- package/dist/components/Component.d.ts +8 -0
- package/dist/components/Component.d.ts.map +1 -0
- package/dist/components/ComponentRegistry.d.ts +19 -0
- package/dist/components/ComponentRegistry.d.ts.map +1 -0
- package/dist/components/cart/CartItem.d.ts +8 -0
- package/dist/components/cart/CartItem.d.ts.map +1 -0
- package/dist/components/cart/CartSummary.d.ts +12 -0
- package/dist/components/cart/CartSummary.d.ts.map +1 -0
- package/dist/components/cart/PreOrderNotification.d.ts +2 -0
- package/dist/components/cart/PreOrderNotification.d.ts.map +1 -0
- package/dist/components/cart/PriceQuoteButton.d.ts +2 -0
- package/dist/components/cart/PriceQuoteButton.d.ts.map +1 -0
- package/dist/components/cart/SeoCartWidget.d.ts +34 -0
- package/dist/components/cart/SeoCartWidget.d.ts.map +1 -0
- package/dist/components/cart/index.d.ts +4 -0
- package/dist/components/cart/index.d.ts.map +1 -0
- package/dist/components/cart/index.js +4 -0
- package/dist/components/cart/index.js.map +1 -0
- package/dist/components/cart/lazy.d.ts +8 -0
- package/dist/components/cart/lazy.d.ts.map +1 -0
- package/dist/components/collapse/Collapse.d.ts +51 -0
- package/dist/components/collapse/Collapse.d.ts.map +1 -0
- package/dist/components/collapse/index.d.ts +36 -0
- package/dist/components/collapse/index.d.ts.map +1 -0
- package/dist/components/collapse/index.js +44 -0
- package/dist/components/collapse/index.js.map +1 -0
- package/dist/components/common/Breadcrumb.d.ts +7 -0
- package/dist/components/common/Breadcrumb.d.ts.map +1 -0
- package/dist/components/common/BreadcrumbJsonLd.d.ts +8 -0
- package/dist/components/common/BreadcrumbJsonLd.d.ts.map +1 -0
- package/dist/components/common/BreadcrumbTrail.d.ts +8 -0
- package/dist/components/common/BreadcrumbTrail.d.ts.map +1 -0
- package/dist/components/common/CurrencySymbol.d.ts +8 -0
- package/dist/components/common/CurrencySymbol.d.ts.map +1 -0
- package/dist/components/common/DeferredData.d.ts +20 -0
- package/dist/components/common/DeferredData.d.ts.map +1 -0
- package/dist/components/common/ErrorPage.d.ts +18 -0
- package/dist/components/common/ErrorPage.d.ts.map +1 -0
- package/dist/components/common/Image.d.ts +28 -0
- package/dist/components/common/Image.d.ts.map +1 -0
- package/dist/components/common/Link.d.ts +21 -0
- package/dist/components/common/Link.d.ts.map +1 -0
- package/dist/components/common/Link.types.d.ts +82 -0
- package/dist/components/common/Link.types.d.ts.map +1 -0
- package/dist/components/common/NoContent.d.ts +9 -0
- package/dist/components/common/NoContent.d.ts.map +1 -0
- package/dist/components/common/RenderWhenVisible.d.ts +23 -0
- package/dist/components/common/RenderWhenVisible.d.ts.map +1 -0
- package/dist/components/common/index.d.ts +11 -0
- package/dist/components/common/index.d.ts.map +1 -0
- package/dist/components/common/index.js +6 -0
- package/dist/components/common/index.js.map +1 -0
- package/dist/components/common/lazy.d.ts +13 -0
- package/dist/components/common/lazy.d.ts.map +1 -0
- package/dist/components/common/types.d.ts +7 -0
- package/dist/components/common/types.d.ts.map +1 -0
- package/dist/components/defineComponent.d.ts +11 -0
- package/dist/components/defineComponent.d.ts.map +1 -0
- package/dist/components/drawer/Drawer.d.ts +53 -0
- package/dist/components/drawer/Drawer.d.ts.map +1 -0
- package/dist/components/drawer/index.d.ts +32 -0
- package/dist/components/drawer/index.d.ts.map +1 -0
- package/dist/components/drawer/index.js +40 -0
- package/dist/components/drawer/index.js.map +1 -0
- package/dist/components/dropdown/Dropdown.d.ts +63 -0
- package/dist/components/dropdown/Dropdown.d.ts.map +1 -0
- package/dist/components/dropdown/index.d.ts +34 -0
- package/dist/components/dropdown/index.d.ts.map +1 -0
- package/dist/components/dropdown/index.js +67 -0
- package/dist/components/dropdown/index.js.map +1 -0
- package/dist/components/home/BundleComponent.d.ts +9 -0
- package/dist/components/home/BundleComponent.d.ts.map +1 -0
- package/dist/components/home/ComponentErrorBoundary.d.ts +22 -0
- package/dist/components/home/ComponentErrorBoundary.d.ts.map +1 -0
- package/dist/components/home/FeaturedProductsStyle1.d.ts +26 -0
- package/dist/components/home/FeaturedProductsStyle1.d.ts.map +1 -0
- package/dist/components/home/FeaturedProductsStyle2.d.ts +25 -0
- package/dist/components/home/FeaturedProductsStyle2.d.ts.map +1 -0
- package/dist/components/home/FeaturedProductsStyle3.d.ts +20 -0
- package/dist/components/home/FeaturedProductsStyle3.d.ts.map +1 -0
- package/dist/components/home/FixedBanner.d.ts +16 -0
- package/dist/components/home/FixedBanner.d.ts.map +1 -0
- package/dist/components/home/FixedProducts.d.ts +18 -0
- package/dist/components/home/FixedProducts.d.ts.map +1 -0
- package/dist/components/home/HomePageRenderer.d.ts +37 -0
- package/dist/components/home/HomePageRenderer.d.ts.map +1 -0
- package/dist/components/home/ParallaxBackground.d.ts +17 -0
- package/dist/components/home/ParallaxBackground.d.ts.map +1 -0
- package/dist/components/home/PhotosSlider.d.ts +16 -0
- package/dist/components/home/PhotosSlider.d.ts.map +1 -0
- package/dist/components/home/ProductsSlider.d.ts +25 -0
- package/dist/components/home/ProductsSlider.d.ts.map +1 -0
- package/dist/components/home/SquarePhotos.d.ts +21 -0
- package/dist/components/home/SquarePhotos.d.ts.map +1 -0
- package/dist/components/home/StoreFeatures.d.ts +9 -0
- package/dist/components/home/StoreFeatures.d.ts.map +1 -0
- package/dist/components/home/Testimonials.d.ts +15 -0
- package/dist/components/home/Testimonials.d.ts.map +1 -0
- package/dist/components/home/Youtube.d.ts +9 -0
- package/dist/components/home/Youtube.d.ts.map +1 -0
- package/dist/components/home/index.d.ts +9 -0
- package/dist/components/home/index.d.ts.map +1 -0
- package/dist/components/home/index.js +43 -0
- package/dist/components/home/index.js.map +1 -0
- package/dist/components/home/lazy.d.ts +14 -0
- package/dist/components/home/lazy.d.ts.map +1 -0
- package/dist/components/home/register.d.ts +4 -0
- package/dist/components/home/register.d.ts.map +1 -0
- package/dist/components/home/types.d.ts +6 -0
- package/dist/components/home/types.d.ts.map +1 -0
- package/dist/components/layout/Copyright.d.ts +8 -0
- package/dist/components/layout/Copyright.d.ts.map +1 -0
- package/dist/components/layout/CustomerLayout.d.ts +8 -0
- package/dist/components/layout/CustomerLayout.d.ts.map +1 -0
- package/dist/components/layout/Footer.d.ts +2 -0
- package/dist/components/layout/Footer.d.ts.map +1 -0
- package/dist/components/layout/Header.d.ts +7 -0
- package/dist/components/layout/Header.d.ts.map +1 -0
- package/dist/components/layout/MasterLayout.d.ts +3 -0
- package/dist/components/layout/MasterLayout.d.ts.map +1 -0
- package/dist/components/layout/WidgetHead.d.ts +21 -0
- package/dist/components/layout/WidgetHead.d.ts.map +1 -0
- package/dist/components/layout/index.d.ts +5 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/index.js +25 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/components/layout/lazy.d.ts +11 -0
- package/dist/components/layout/lazy.d.ts.map +1 -0
- package/dist/components/layout/types.d.ts +10 -0
- package/dist/components/layout/types.d.ts.map +1 -0
- package/dist/components/modal/ImageModal.d.ts +37 -0
- package/dist/components/modal/ImageModal.d.ts.map +1 -0
- package/dist/components/modal/Modal.d.ts +78 -0
- package/dist/components/modal/Modal.d.ts.map +1 -0
- package/dist/components/modal/index.d.ts +30 -0
- package/dist/components/modal/index.d.ts.map +1 -0
- package/dist/components/modal/index.js +5 -0
- package/dist/components/modal/index.js.map +1 -0
- package/dist/components/modal/lazy.d.ts +7 -0
- package/dist/components/modal/lazy.d.ts.map +1 -0
- package/dist/components/navigation/MainMenu.d.ts +2 -0
- package/dist/components/navigation/MainMenu.d.ts.map +1 -0
- package/dist/components/navigation/MobileMenu.d.ts +6 -0
- package/dist/components/navigation/MobileMenu.d.ts.map +1 -0
- package/dist/components/navigation/index.d.ts +3 -0
- package/dist/components/navigation/index.d.ts.map +1 -0
- package/dist/components/navigation/lazy.d.ts +7 -0
- package/dist/components/navigation/lazy.d.ts.map +1 -0
- package/dist/components/product/AddToCartForm.d.ts +12 -0
- package/dist/components/product/AddToCartForm.d.ts.map +1 -0
- package/dist/components/product/ProductCard.d.ts +16 -0
- package/dist/components/product/ProductCard.d.ts.map +1 -0
- package/dist/components/product/ProductDetails.d.ts +8 -0
- package/dist/components/product/ProductDetails.d.ts.map +1 -0
- package/dist/components/product/ProductGallery.d.ts +7 -0
- package/dist/components/product/ProductGallery.d.ts.map +1 -0
- package/dist/components/product/index.d.ts +8 -0
- package/dist/components/product/index.d.ts.map +1 -0
- package/dist/components/product/index.js +41 -0
- package/dist/components/product/index.js.map +1 -0
- package/dist/components/product/lazy.d.ts +3 -0
- package/dist/components/product/lazy.d.ts.map +1 -0
- package/dist/components/store/StoreClosedNotification.d.ts +17 -0
- package/dist/components/store/StoreClosedNotification.d.ts.map +1 -0
- package/dist/components/store/index.d.ts +3 -0
- package/dist/components/store/index.d.ts.map +1 -0
- package/dist/components/store/lazy.d.ts +3 -0
- package/dist/components/store/lazy.d.ts.map +1 -0
- package/dist/components/toast/Toaster.d.ts +8 -0
- package/dist/components/toast/Toaster.d.ts.map +1 -0
- package/dist/components/toast/index.d.ts +4 -0
- package/dist/components/toast/index.d.ts.map +1 -0
- package/dist/components/toast/index.js +5 -0
- package/dist/components/toast/index.js.map +1 -0
- package/dist/components/toast/types.d.ts +27 -0
- package/dist/components/toast/types.d.ts.map +1 -0
- package/dist/components/toast/useToast.d.ts +5 -0
- package/dist/components/toast/useToast.d.ts.map +1 -0
- package/dist/components/tracking/GoogleTag.d.ts +13 -0
- package/dist/components/tracking/GoogleTag.d.ts.map +1 -0
- package/dist/components/tracking/SiftSnippet.d.ts +16 -0
- package/dist/components/tracking/SiftSnippet.d.ts.map +1 -0
- package/dist/components/tracking/TwilightBundles.d.ts +11 -0
- package/dist/components/tracking/TwilightBundles.d.ts.map +1 -0
- package/dist/components/tracking/index.d.ts +5 -0
- package/dist/components/tracking/index.d.ts.map +1 -0
- package/dist/components/tracking/lazy.d.ts +5 -0
- package/dist/components/tracking/lazy.d.ts.map +1 -0
- package/dist/components/useComponent.d.ts +4 -0
- package/dist/components/useComponent.d.ts.map +1 -0
- package/dist/contexts/CartContext.d.ts +34 -0
- package/dist/contexts/CartContext.d.ts.map +1 -0
- package/dist/contexts/ProductContext.d.ts +34 -0
- package/dist/contexts/ProductContext.d.ts.map +1 -0
- package/dist/contexts/index.d.ts +3 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/document-class-PLK3HUM6.js +21 -0
- package/dist/document-class-PLK3HUM6.js.map +1 -0
- package/dist/dom/document.d.ts +26 -0
- package/dist/dom/document.d.ts.map +1 -0
- package/dist/dom/index.d.ts +24 -0
- package/dist/dom/index.d.ts.map +1 -0
- package/dist/dom.d.ts +1 -0
- package/dist/dom.js +18 -0
- package/dist/dom.js.map +1 -0
- package/dist/eslint/index.d.ts +17 -0
- package/dist/eslint/index.d.ts.map +1 -0
- package/dist/eslint/index.js +86 -0
- package/dist/eslint/index.js.map +1 -0
- package/dist/hooks/HookRegistry.d.ts +47 -0
- package/dist/hooks/HookRegistry.d.ts.map +1 -0
- package/dist/hooks/HookRegistry.js +4 -0
- package/dist/hooks/HookRegistry.js.map +1 -0
- package/dist/hooks/HookSlot.d.ts +96 -0
- package/dist/hooks/HookSlot.d.ts.map +1 -0
- package/dist/hooks/HookSlot.js +6 -0
- package/dist/hooks/HookSlot.js.map +1 -0
- package/dist/hooks/index.d.ts +27 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +39 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/registerDefaultHooks.d.ts +18 -0
- package/dist/hooks/registerDefaultHooks.d.ts.map +1 -0
- package/dist/hooks/types.d.ts +100 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/useAsset.d.ts +26 -0
- package/dist/hooks/useAsset.d.ts.map +1 -0
- package/dist/hooks/useAsset.js +5 -0
- package/dist/hooks/useAsset.js.map +1 -0
- package/dist/hooks/useAsyncFn.d.ts +68 -0
- package/dist/hooks/useAsyncFn.d.ts.map +1 -0
- package/dist/hooks/useAsyncFn.js +4 -0
- package/dist/hooks/useAsyncFn.js.map +1 -0
- package/dist/hooks/useBlogLike.d.ts +7 -0
- package/dist/hooks/useBlogLike.d.ts.map +1 -0
- package/dist/hooks/useBlogLike.js +7 -0
- package/dist/hooks/useBlogLike.js.map +1 -0
- package/dist/hooks/useBreadcrumbs.d.ts +3 -0
- package/dist/hooks/useBreadcrumbs.d.ts.map +1 -0
- package/dist/hooks/useComments.d.ts +36 -0
- package/dist/hooks/useComments.d.ts.map +1 -0
- package/dist/hooks/useComments.js +4 -0
- package/dist/hooks/useComments.js.map +1 -0
- package/dist/hooks/useCoupon.d.ts +66 -0
- package/dist/hooks/useCoupon.d.ts.map +1 -0
- package/dist/hooks/useCoupon.js +5 -0
- package/dist/hooks/useCoupon.js.map +1 -0
- package/dist/hooks/useDate.d.ts +24 -0
- package/dist/hooks/useDate.d.ts.map +1 -0
- package/dist/hooks/useDocumentClass.d.ts +42 -0
- package/dist/hooks/useDocumentClass.d.ts.map +1 -0
- package/dist/hooks/useDocumentClass.js +5 -0
- package/dist/hooks/useDocumentClass.js.map +1 -0
- package/dist/hooks/useGtm.d.ts +38 -0
- package/dist/hooks/useGtm.d.ts.map +1 -0
- package/dist/hooks/useHook.d.ts +24 -0
- package/dist/hooks/useHook.d.ts.map +1 -0
- package/dist/hooks/useHook.js +5 -0
- package/dist/hooks/useHook.js.map +1 -0
- package/dist/hooks/useIsClient.d.ts +7 -0
- package/dist/hooks/useIsClient.d.ts.map +1 -0
- package/dist/hooks/useMoney.d.ts +26 -0
- package/dist/hooks/useMoney.d.ts.map +1 -0
- package/dist/hooks/useMoney.js +39 -0
- package/dist/hooks/useMoney.js.map +1 -0
- package/dist/hooks/useNumber.d.ts +24 -0
- package/dist/hooks/useNumber.d.ts.map +1 -0
- package/dist/hooks/useOpeningHours.d.ts +28 -0
- package/dist/hooks/useOpeningHours.d.ts.map +1 -0
- package/dist/hooks/usePageConfig.d.ts +44 -0
- package/dist/hooks/usePageConfig.d.ts.map +1 -0
- package/dist/hooks/useProduct.d.ts +47 -0
- package/dist/hooks/useProduct.d.ts.map +1 -0
- package/dist/hooks/useProduct.js +4 -0
- package/dist/hooks/useProduct.js.map +1 -0
- package/dist/hooks/useStore.d.ts +36 -0
- package/dist/hooks/useStore.d.ts.map +1 -0
- package/dist/hooks/useStore.js +39 -0
- package/dist/hooks/useStore.js.map +1 -0
- package/dist/hooks/useTheme.d.ts +41 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/hooks/useTheme.js +5 -0
- package/dist/hooks/useTheme.js.map +1 -0
- package/dist/hooks/useUser.d.ts +8 -0
- package/dist/hooks/useUser.d.ts.map +1 -0
- package/dist/hooks/useUser.js +9 -0
- package/dist/hooks/useUser.js.map +1 -0
- package/dist/hooks/useWishlist.d.ts +5 -0
- package/dist/hooks/useWishlist.d.ts.map +1 -0
- package/dist/hooks/useWishlist.js +5 -0
- package/dist/hooks/useWishlist.js.map +1 -0
- package/dist/i18n.d.ts +1 -0
- package/dist/i18n.js +5 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/analytics/gtm.d.ts +38 -0
- package/dist/lib/analytics/gtm.d.ts.map +1 -0
- package/dist/lib/services/index.d.ts +1 -0
- package/dist/lib/services/index.d.ts.map +1 -0
- package/dist/navigation-N4H65RUN.js +17 -0
- package/dist/navigation-N4H65RUN.js.map +1 -0
- package/dist/navigation-YCYHW4MK.js +10 -0
- package/dist/navigation-YCYHW4MK.js.map +1 -0
- package/dist/nextjs/document-class.d.ts +92 -0
- package/dist/nextjs/document-class.d.ts.map +1 -0
- package/dist/nextjs/head.d.ts +36 -0
- package/dist/nextjs/head.d.ts.map +1 -0
- package/dist/nextjs/index.d.ts +29 -0
- package/dist/nextjs/index.d.ts.map +1 -0
- package/dist/nextjs/link.d.ts +14 -0
- package/dist/nextjs/link.d.ts.map +1 -0
- package/dist/nextjs/navigation.d.ts +9 -0
- package/dist/nextjs/navigation.d.ts.map +1 -0
- package/dist/nextjs/router.d.ts +15 -0
- package/dist/nextjs/router.d.ts.map +1 -0
- package/dist/nextjs.d.ts +1 -0
- package/dist/nextjs.js +22 -0
- package/dist/nextjs.js.map +1 -0
- package/dist/not-found-BJ3VK5VJ.js +69 -0
- package/dist/not-found-BJ3VK5VJ.js.map +1 -0
- package/dist/providers/DocumentClassProvider.d.ts +56 -0
- package/dist/providers/DocumentClassProvider.d.ts.map +1 -0
- package/dist/providers/DocumentSyncRegistry.d.ts +20 -0
- package/dist/providers/DocumentSyncRegistry.d.ts.map +1 -0
- package/dist/providers/LinkProvider.d.ts +34 -0
- package/dist/providers/LinkProvider.d.ts.map +1 -0
- package/dist/providers/NavigationProvider.d.ts +223 -0
- package/dist/providers/NavigationProvider.d.ts.map +1 -0
- package/dist/providers/TwilightProvider.d.ts +7 -0
- package/dist/providers/TwilightProvider.d.ts.map +1 -0
- package/dist/providers/i18n-factory.d.ts +17 -0
- package/dist/providers/i18n-factory.d.ts.map +1 -0
- package/dist/providers/i18n.d.ts +31 -0
- package/dist/providers/i18n.d.ts.map +1 -0
- package/dist/providers/index.d.ts +6 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/locale-constants.d.ts +17 -0
- package/dist/providers/locale-constants.d.ts.map +1 -0
- package/dist/providers/salla-sdk.types.d.ts +352 -0
- package/dist/providers/salla-sdk.types.d.ts.map +1 -0
- package/dist/providers/twilight-context.d.ts +4 -0
- package/dist/providers/twilight-context.d.ts.map +1 -0
- package/dist/providers/twilight-init.d.ts +24 -0
- package/dist/providers/twilight-init.d.ts.map +1 -0
- package/dist/providers/twilight-theme.d.ts +9 -0
- package/dist/providers/twilight-theme.d.ts.map +1 -0
- package/dist/providers/twilight.types.d.ts +95 -0
- package/dist/providers/twilight.types.d.ts.map +1 -0
- package/dist/router/context.d.ts +3 -0
- package/dist/router/context.d.ts.map +1 -0
- package/dist/router/index.d.ts +4 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/route-ids.d.ts +37 -0
- package/dist/router/route-ids.d.ts.map +1 -0
- package/dist/routes/account/index.d.ts +8 -0
- package/dist/routes/account/index.d.ts.map +1 -0
- package/dist/routes/account/notifications/NotificationsPage.d.ts +3 -0
- package/dist/routes/account/notifications/NotificationsPage.d.ts.map +1 -0
- package/dist/routes/account/notifications/index.d.ts +17 -0
- package/dist/routes/account/notifications/index.d.ts.map +1 -0
- package/dist/routes/account/notifications/loader.d.ts +5 -0
- package/dist/routes/account/notifications/loader.d.ts.map +1 -0
- package/dist/routes/account/notifications/types.d.ts +17 -0
- package/dist/routes/account/notifications/types.d.ts.map +1 -0
- package/dist/routes/account/orders/OrderSinglePage.d.ts +3 -0
- package/dist/routes/account/orders/OrderSinglePage.d.ts.map +1 -0
- package/dist/routes/account/orders/OrdersPage.d.ts +3 -0
- package/dist/routes/account/orders/OrdersPage.d.ts.map +1 -0
- package/dist/routes/account/orders/index.d.ts +35 -0
- package/dist/routes/account/orders/index.d.ts.map +1 -0
- package/dist/routes/account/orders/loader.d.ts +11 -0
- package/dist/routes/account/orders/loader.d.ts.map +1 -0
- package/dist/routes/account/orders/types.d.ts +22 -0
- package/dist/routes/account/orders/types.d.ts.map +1 -0
- package/dist/routes/account/orders.d.ts +1 -0
- package/dist/routes/account/orders.js +42 -0
- package/dist/routes/account/orders.js.map +1 -0
- package/dist/routes/account/profile/ProfilePage.d.ts +3 -0
- package/dist/routes/account/profile/ProfilePage.d.ts.map +1 -0
- package/dist/routes/account/profile/index.d.ts +17 -0
- package/dist/routes/account/profile/index.d.ts.map +1 -0
- package/dist/routes/account/profile/loader.d.ts +5 -0
- package/dist/routes/account/profile/loader.d.ts.map +1 -0
- package/dist/routes/account/profile/types.d.ts +5 -0
- package/dist/routes/account/profile/types.d.ts.map +1 -0
- package/dist/routes/account/settings/SettingsPage.d.ts +3 -0
- package/dist/routes/account/settings/SettingsPage.d.ts.map +1 -0
- package/dist/routes/account/settings/index.d.ts +17 -0
- package/dist/routes/account/settings/index.d.ts.map +1 -0
- package/dist/routes/account/settings/loader.d.ts +5 -0
- package/dist/routes/account/settings/loader.d.ts.map +1 -0
- package/dist/routes/account/settings/types.d.ts +5 -0
- package/dist/routes/account/settings/types.d.ts.map +1 -0
- package/dist/routes/account/types.d.ts +300 -0
- package/dist/routes/account/types.d.ts.map +1 -0
- package/dist/routes/account/wallet/WalletPage.d.ts +3 -0
- package/dist/routes/account/wallet/WalletPage.d.ts.map +1 -0
- package/dist/routes/account/wallet/index.d.ts +16 -0
- package/dist/routes/account/wallet/index.d.ts.map +1 -0
- package/dist/routes/account/wallet/loader.d.ts +4 -0
- package/dist/routes/account/wallet/loader.d.ts.map +1 -0
- package/dist/routes/account/wallet/types.d.ts +11 -0
- package/dist/routes/account/wallet/types.d.ts.map +1 -0
- package/dist/routes/account/wishlist/WishlistPage.d.ts +3 -0
- package/dist/routes/account/wishlist/WishlistPage.d.ts.map +1 -0
- package/dist/routes/account/wishlist/index.d.ts +16 -0
- package/dist/routes/account/wishlist/index.d.ts.map +1 -0
- package/dist/routes/account/wishlist/loader.d.ts +4 -0
- package/dist/routes/account/wishlist/loader.d.ts.map +1 -0
- package/dist/routes/account/wishlist/types.d.ts +9 -0
- package/dist/routes/account/wishlist/types.d.ts.map +1 -0
- package/dist/routes/account.d.ts +1 -0
- package/dist/routes/account.js +253 -0
- package/dist/routes/account.js.map +1 -0
- package/dist/routes/blog/BlogAuthorPage.d.ts +3 -0
- package/dist/routes/blog/BlogAuthorPage.d.ts.map +1 -0
- package/dist/routes/blog/BlogCategoryPage.d.ts +3 -0
- package/dist/routes/blog/BlogCategoryPage.d.ts.map +1 -0
- package/dist/routes/blog/BlogPage.d.ts +3 -0
- package/dist/routes/blog/BlogPage.d.ts.map +1 -0
- package/dist/routes/blog/BlogSinglePage.d.ts +3 -0
- package/dist/routes/blog/BlogSinglePage.d.ts.map +1 -0
- package/dist/routes/blog/BlogTagPage.d.ts +3 -0
- package/dist/routes/blog/BlogTagPage.d.ts.map +1 -0
- package/dist/routes/blog/components.d.ts +14 -0
- package/dist/routes/blog/components.d.ts.map +1 -0
- package/dist/routes/blog/index.d.ts +76 -0
- package/dist/routes/blog/index.d.ts.map +1 -0
- package/dist/routes/blog/loader.d.ts +16 -0
- package/dist/routes/blog/loader.d.ts.map +1 -0
- package/dist/routes/blog/types.d.ts +92 -0
- package/dist/routes/blog/types.d.ts.map +1 -0
- package/dist/routes/blog.d.ts +1 -0
- package/dist/routes/blog.js +303 -0
- package/dist/routes/blog.js.map +1 -0
- package/dist/routes/brands/BrandsPage.d.ts +5 -0
- package/dist/routes/brands/BrandsPage.d.ts.map +1 -0
- package/dist/routes/brands/index.d.ts +20 -0
- package/dist/routes/brands/index.d.ts.map +1 -0
- package/dist/routes/brands/loader.d.ts +3 -0
- package/dist/routes/brands/loader.d.ts.map +1 -0
- package/dist/routes/brands/types.d.ts +32 -0
- package/dist/routes/brands/types.d.ts.map +1 -0
- package/dist/routes/brands.d.ts +1 -0
- package/dist/routes/brands.js +92 -0
- package/dist/routes/brands.js.map +1 -0
- package/dist/routes/cart/CartPage.d.ts +3 -0
- package/dist/routes/cart/CartPage.d.ts.map +1 -0
- package/dist/routes/cart/index.d.ts +20 -0
- package/dist/routes/cart/index.d.ts.map +1 -0
- package/dist/routes/cart/loader.d.ts +8 -0
- package/dist/routes/cart/loader.d.ts.map +1 -0
- package/dist/routes/cart/types.d.ts +6 -0
- package/dist/routes/cart/types.d.ts.map +1 -0
- package/dist/routes/cart.d.ts +1 -0
- package/dist/routes/cart.js +168 -0
- package/dist/routes/cart.js.map +1 -0
- package/dist/routes/home/HomePage.d.ts +5 -0
- package/dist/routes/home/HomePage.d.ts.map +1 -0
- package/dist/routes/home/index.d.ts +22 -0
- package/dist/routes/home/index.d.ts.map +1 -0
- package/dist/routes/home/loader.d.ts +12 -0
- package/dist/routes/home/loader.d.ts.map +1 -0
- package/dist/routes/home/types.d.ts +10 -0
- package/dist/routes/home/types.d.ts.map +1 -0
- package/dist/routes/home.d.ts +1 -0
- package/dist/routes/home.js +46 -0
- package/dist/routes/home.js.map +1 -0
- package/dist/routes/index.d.ts +20 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +40 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/lazy.d.ts +23 -0
- package/dist/routes/lazy.d.ts.map +1 -0
- package/dist/routes/loyalty/LoyaltyPage.d.ts +3 -0
- package/dist/routes/loyalty/LoyaltyPage.d.ts.map +1 -0
- package/dist/routes/loyalty/index.d.ts +19 -0
- package/dist/routes/loyalty/index.d.ts.map +1 -0
- package/dist/routes/loyalty/loader.d.ts +3 -0
- package/dist/routes/loyalty/loader.d.ts.map +1 -0
- package/dist/routes/loyalty/types.d.ts +96 -0
- package/dist/routes/loyalty/types.d.ts.map +1 -0
- package/dist/routes/loyalty.d.ts +1 -0
- package/dist/routes/loyalty.js +73 -0
- package/dist/routes/loyalty.js.map +1 -0
- package/dist/routes/not-found.d.ts +15 -0
- package/dist/routes/not-found.d.ts.map +1 -0
- package/dist/routes/page/PageSingle.d.ts +3 -0
- package/dist/routes/page/PageSingle.d.ts.map +1 -0
- package/dist/routes/page/index.d.ts +21 -0
- package/dist/routes/page/index.d.ts.map +1 -0
- package/dist/routes/page/loader.d.ts +6 -0
- package/dist/routes/page/loader.d.ts.map +1 -0
- package/dist/routes/page/types.d.ts +32 -0
- package/dist/routes/page/types.d.ts.map +1 -0
- package/dist/routes/page.d.ts +1 -0
- package/dist/routes/page.js +97 -0
- package/dist/routes/page.js.map +1 -0
- package/dist/routes/product/ProductPage.d.ts +3 -0
- package/dist/routes/product/ProductPage.d.ts.map +1 -0
- package/dist/routes/product/index.d.ts +21 -0
- package/dist/routes/product/index.d.ts.map +1 -0
- package/dist/routes/product/loader.d.ts +6 -0
- package/dist/routes/product/loader.d.ts.map +1 -0
- package/dist/routes/product/types.d.ts +6 -0
- package/dist/routes/product/types.d.ts.map +1 -0
- package/dist/routes/product-listing/ProductListPage.d.ts +13 -0
- package/dist/routes/product-listing/ProductListPage.d.ts.map +1 -0
- package/dist/routes/product-listing/index.d.ts +16 -0
- package/dist/routes/product-listing/index.d.ts.map +1 -0
- package/dist/routes/product-listing/loader.d.ts +3 -0
- package/dist/routes/product-listing/loader.d.ts.map +1 -0
- package/dist/routes/product-listing/types.d.ts +71 -0
- package/dist/routes/product-listing/types.d.ts.map +1 -0
- package/dist/routes/product-listing.d.ts +1 -0
- package/dist/routes/product-listing.js +516 -0
- package/dist/routes/product-listing.js.map +1 -0
- package/dist/routes/product.d.ts +1 -0
- package/dist/routes/product.js +225 -0
- package/dist/routes/product.js.map +1 -0
- package/dist/routes/root/beforeLoad.d.ts +21 -0
- package/dist/routes/root/beforeLoad.d.ts.map +1 -0
- package/dist/routes/root/head.d.ts +5 -0
- package/dist/routes/root/head.d.ts.map +1 -0
- package/dist/routes/root/index.d.ts +3 -0
- package/dist/routes/root/index.d.ts.map +1 -0
- package/dist/routes/seo-redirects.d.ts +19 -0
- package/dist/routes/seo-redirects.d.ts.map +1 -0
- package/dist/routes/seo-redirects.js +40 -0
- package/dist/routes/seo-redirects.js.map +1 -0
- package/dist/routes/testimonials/TestimonialsPage.d.ts +3 -0
- package/dist/routes/testimonials/TestimonialsPage.d.ts.map +1 -0
- package/dist/routes/testimonials/index.d.ts +19 -0
- package/dist/routes/testimonials/index.d.ts.map +1 -0
- package/dist/routes/testimonials/loader.d.ts +5 -0
- package/dist/routes/testimonials/loader.d.ts.map +1 -0
- package/dist/routes/testimonials/types.d.ts +5 -0
- package/dist/routes/testimonials/types.d.ts.map +1 -0
- package/dist/routes/testimonials.d.ts +1 -0
- package/dist/routes/testimonials.js +49 -0
- package/dist/routes/testimonials.js.map +1 -0
- package/dist/routes/thank-you/ThankYouPage.d.ts +3 -0
- package/dist/routes/thank-you/ThankYouPage.d.ts.map +1 -0
- package/dist/routes/thank-you/index.d.ts +20 -0
- package/dist/routes/thank-you/index.d.ts.map +1 -0
- package/dist/routes/thank-you/loader.d.ts +5 -0
- package/dist/routes/thank-you/loader.d.ts.map +1 -0
- package/dist/routes/thank-you/types.d.ts +14 -0
- package/dist/routes/thank-you/types.d.ts.map +1 -0
- package/dist/routes/thank-you.d.ts +1 -0
- package/dist/routes/thank-you.js +95 -0
- package/dist/routes/thank-you.js.map +1 -0
- package/dist/routes/types.d.ts +36 -0
- package/dist/routes/types.d.ts.map +1 -0
- package/dist/sentry/client.d.ts +6 -0
- package/dist/sentry/client.d.ts.map +1 -0
- package/dist/sentry/client.js +17 -0
- package/dist/sentry/client.js.map +1 -0
- package/dist/sentry/server.d.ts +10 -0
- package/dist/sentry/server.d.ts.map +1 -0
- package/dist/sentry/server.js +16 -0
- package/dist/sentry/server.js.map +1 -0
- package/dist/skeleton.d.ts +4 -0
- package/dist/skeleton.d.ts.map +1 -0
- package/dist/skeleton.js +47 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/tanstack/document-class.d.ts +44 -0
- package/dist/tanstack/document-class.d.ts.map +1 -0
- package/dist/tanstack/head.d.ts +24 -0
- package/dist/tanstack/head.d.ts.map +1 -0
- package/dist/tanstack/index.d.ts +28 -0
- package/dist/tanstack/index.d.ts.map +1 -0
- package/dist/tanstack/link.d.ts +18 -0
- package/dist/tanstack/link.d.ts.map +1 -0
- package/dist/tanstack/middleware/earlyHints.d.ts +3 -0
- package/dist/tanstack/middleware/earlyHints.d.ts.map +1 -0
- package/dist/tanstack/middleware/twilight.d.ts +7 -0
- package/dist/tanstack/middleware/twilight.d.ts.map +1 -0
- package/dist/tanstack/navigation.d.ts +13 -0
- package/dist/tanstack/navigation.d.ts.map +1 -0
- package/dist/tanstack/router.d.ts +85 -0
- package/dist/tanstack/router.d.ts.map +1 -0
- package/dist/tanstack/templates/account-layout.d.ts +8 -0
- package/dist/tanstack/templates/account-layout.d.ts.map +1 -0
- package/dist/tanstack/templates/index.d.ts +4 -0
- package/dist/tanstack/templates/index.d.ts.map +1 -0
- package/dist/tanstack/templates/locale-wrapper.d.ts +15 -0
- package/dist/tanstack/templates/locale-wrapper.d.ts.map +1 -0
- package/dist/tanstack/templates/redirect.d.ts +6 -0
- package/dist/tanstack/templates/redirect.d.ts.map +1 -0
- package/dist/tanstack.d.ts +1 -0
- package/dist/tanstack.js +137 -0
- package/dist/tanstack.js.map +1 -0
- package/dist/twilight/context.d.ts +46 -0
- package/dist/twilight/context.d.ts.map +1 -0
- package/dist/twilight/index.d.ts +3 -0
- package/dist/twilight/index.d.ts.map +1 -0
- package/dist/types/hooks.d.ts +58 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/index.d.ts +724 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/apply-theme.d.ts +3 -0
- package/dist/utils/apply-theme.d.ts.map +1 -0
- package/dist/utils/asset.d.ts +27 -0
- package/dist/utils/asset.d.ts.map +1 -0
- package/dist/utils/baseHead.d.ts +23 -0
- package/dist/utils/baseHead.d.ts.map +1 -0
- package/dist/utils/baseHead.js +5 -0
- package/dist/utils/baseHead.js.map +1 -0
- package/dist/utils/breadcrumb.d.ts +5 -0
- package/dist/utils/breadcrumb.d.ts.map +1 -0
- package/dist/utils/cdn-image.d.ts +5 -0
- package/dist/utils/cdn-image.d.ts.map +1 -0
- package/dist/utils/color.d.ts +34 -0
- package/dist/utils/color.d.ts.map +1 -0
- package/dist/utils/cookies.d.ts +16 -0
- package/dist/utils/cookies.d.ts.map +1 -0
- package/dist/utils/device.d.ts +19 -0
- package/dist/utils/device.d.ts.map +1 -0
- package/dist/utils/document-class.d.ts +67 -0
- package/dist/utils/document-class.d.ts.map +1 -0
- package/dist/utils/errors.d.ts +4 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/head.d.ts +100 -0
- package/dist/utils/head.d.ts.map +1 -0
- package/dist/utils/head.js +4 -0
- package/dist/utils/head.js.map +1 -0
- package/dist/utils/index.d.ts +22 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +15 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/number.d.ts +21 -0
- package/dist/utils/number.d.ts.map +1 -0
- package/dist/utils/salla-plural.d.ts +14 -0
- package/dist/utils/salla-plural.d.ts.map +1 -0
- package/dist/utils/sanitize.d.ts +2 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sdk-events.d.ts +25 -0
- package/dist/utils/sdk-events.d.ts.map +1 -0
- package/dist/utils/sdk-helpers.d.ts +30 -0
- package/dist/utils/sdk-helpers.d.ts.map +1 -0
- package/dist/utils/sort-options.d.ts +8 -0
- package/dist/utils/sort-options.d.ts.map +1 -0
- package/dist/vite/adapters/index.d.ts +18 -0
- package/dist/vite/adapters/index.d.ts.map +1 -0
- package/dist/vite/adapters/nextjs.adapter.d.ts +12 -0
- package/dist/vite/adapters/nextjs.adapter.d.ts.map +1 -0
- package/dist/vite/adapters/tanstack.adapter.d.ts +71 -0
- package/dist/vite/adapters/tanstack.adapter.d.ts.map +1 -0
- package/dist/vite/index.d.ts +6 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +2193 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/plugins/best-practices/best-practices.plugin.d.ts +4 -0
- package/dist/vite/plugins/best-practices/best-practices.plugin.d.ts.map +1 -0
- package/dist/vite/plugins/best-practices/hooks-registry.d.ts +27 -0
- package/dist/vite/plugins/best-practices/hooks-registry.d.ts.map +1 -0
- package/dist/vite/plugins/best-practices/reporter.d.ts +4 -0
- package/dist/vite/plugins/best-practices/reporter.d.ts.map +1 -0
- package/dist/vite/plugins/best-practices/rules/index.d.ts +4 -0
- package/dist/vite/plugins/best-practices/rules/index.d.ts.map +1 -0
- package/dist/vite/plugins/best-practices/rules/no-deep-component-import.d.ts +3 -0
- package/dist/vite/plugins/best-practices/rules/no-deep-component-import.d.ts.map +1 -0
- package/dist/vite/plugins/best-practices/rules/no-direct-product-card-import.d.ts +3 -0
- package/dist/vite/plugins/best-practices/rules/no-direct-product-card-import.d.ts.map +1 -0
- package/dist/vite/plugins/best-practices/rules/no-img-without-dimensions.d.ts +3 -0
- package/dist/vite/plugins/best-practices/rules/no-img-without-dimensions.d.ts.map +1 -0
- package/dist/vite/plugins/best-practices/rules/no-manual-dom.d.ts +3 -0
- package/dist/vite/plugins/best-practices/rules/no-manual-dom.d.ts.map +1 -0
- package/dist/vite/plugins/best-practices/rules/no-window-location-reload.d.ts +3 -0
- package/dist/vite/plugins/best-practices/rules/no-window-location-reload.d.ts.map +1 -0
- package/dist/vite/plugins/best-practices/rules/require-page-hooks.d.ts +16 -0
- package/dist/vite/plugins/best-practices/rules/require-page-hooks.d.ts.map +1 -0
- package/dist/vite/plugins/best-practices/types.d.ts +34 -0
- package/dist/vite/plugins/best-practices/types.d.ts.map +1 -0
- package/dist/vite/plugins/package-aliases.plugin.d.ts +3 -0
- package/dist/vite/plugins/package-aliases.plugin.d.ts.map +1 -0
- package/dist/vite/plugins/salla-hydration.plugin.d.ts +12 -0
- package/dist/vite/plugins/salla-hydration.plugin.d.ts.map +1 -0
- package/dist/vite/plugins/theme-translations.plugin.d.ts +20 -0
- package/dist/vite/plugins/theme-translations.plugin.d.ts.map +1 -0
- package/dist/vite/twilight-react.d.ts +22 -0
- package/dist/vite/twilight-react.d.ts.map +1 -0
- package/dist/vite/types.d.ts +110 -0
- package/dist/vite/types.d.ts.map +1 -0
- package/package.json +474 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useCoupon.ts"],"names":[],"mappings":";;;AAqEO,SAAS,SAAA,GAA6B;AAC3C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAwB,IAAI,CAAA;AAEtD,EAAA,MAAM,CAAC,UAAA,EAAY,OAAO,CAAA,GAAI,UAAA,CAAW,OAAO,IAAA,KAAiB;AAC/D,IAAA,IAAI,CAAC,IAAA,CAAK,IAAA,IAAQ,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAC9D,IAAA,MAAM,OAAO,KAAA,EAAO,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,MAAM,CAAA;AAC9C,IAAA,QAAA,CAAS,IAAA,CAAK,MAAM,CAAA;AAAA,EACtB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,CAAC,WAAA,EAAa,QAAQ,CAAA,GAAI,WAAW,YAAY;AACrD,IAAA,MAAM,MAAA,CAAO,KAAA,EAAO,IAAA,CAAK,YAAA,EAAa;AACtC,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,OAAA,EAAS,UAAA,CAAW,OAAA,IAAW,WAAA,CAAY,OAAA;AAAA,IAC3C,KAAA,EAAA,CAAQ,UAAA,CAAW,KAAA,IAAS,WAAA,CAAY,QAAQ,OAAA,IAAW,IAAA;AAAA,IAC3D,OAAO,OAAO,IAAA,KAAS,EAAI,MAAM,OAAA,CAAQ,IAAI,CAAA,YAA0B,KAAA,CAAA;AAAA,IACvE,MAAA,EAAQ,YAAY,EAAI,MAAM,UAAS,YAA0B,KAAA;AAAA,GACnE;AACF","file":"chunk-BVSJPBJ6.js","sourcesContent":["/**\n * useCoupon - Hook for managing coupon functionality in cart\n *\n * @example\n * ```tsx\n * function CouponInput() {\n * const { value, apply, remove, error, loading } = useCoupon();\n *\n * return (\n * <div>\n * <input placeholder=\"Enter coupon\" />\n * <button onClick={() => apply(code)}>Apply</button>\n * {error && <span>{error}</span>}\n * </div>\n * );\n * }\n * ```\n */\n\nimport { useState } from 'react';\nimport { useAsyncFn } from './useAsyncFn';\nimport type { UseApply } from './types';\n\n/**\n * UseCouponResult - Return type for useCoupon hook\n */\nexport type UseCouponResult = UseApply<string>;\n\n/**\n * useCoupon - Hook for managing cart coupons\n *\n * Handles applying and removing coupons from the cart using the\n * Salla SDK. Returns state for loading, errors, and the current\n * coupon value.\n *\n * @returns Coupon management object with apply and remove functions\n *\n * @example\n * ```tsx\n * function CouponInput() {\n * const { value, apply, remove, error, loading } = useCoupon();\n *\n * const [code, setCode] = useState('');\n *\n * return (\n * <div>\n * {value ? (\n * <>\n * <span>Coupon applied: {value}</span>\n * <button onClick={remove}>Remove</button>\n * </>\n * ) : (\n * <div>\n * <input\n * placeholder=\"Enter coupon code\"\n * value={code}\n * onChange={(e) => setCode(e.target.value)}\n * />\n * <button onClick={() => apply(code)} disabled={loading}>\n * Apply\n * </button>\n * </div>\n * )}\n * {error && <span className=\"error\">{error}</span>}\n * </div>\n * );\n * }\n * ```\n */\nexport function useCoupon(): UseCouponResult {\n const [value, setValue] = useState<string | null>(null);\n\n const [applyState, applyFn] = useAsyncFn(async (code: string) => {\n if (!code.trim()) throw new Error('Please enter a coupon code');\n await window.salla?.cart.addCoupon(code.trim());\n setValue(code.trim());\n }, []);\n\n const [removeState, removeFn] = useAsyncFn(async () => {\n await window.salla?.cart.deleteCoupon();\n setValue(null);\n }, []);\n\n return {\n value,\n loading: applyState.loading || removeState.loading,\n error: (applyState.error ?? removeState.error)?.message ?? null,\n apply: async (code) => !(((await applyFn(code)) as unknown) instanceof Error),\n remove: async () => !(((await removeFn()) as unknown) instanceof Error),\n };\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
|
|
3
|
+
// src/providers/twilight-context.ts
|
|
4
|
+
var TwilightContext = createContext(null);
|
|
5
|
+
function useTwilight() {
|
|
6
|
+
const context = useContext(TwilightContext);
|
|
7
|
+
if (!context) throw new Error("useTwilight must be used within a TwilightProvider");
|
|
8
|
+
return context;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { TwilightContext, useTwilight };
|
|
12
|
+
//# sourceMappingURL=chunk-BWFBVXT3.js.map
|
|
13
|
+
//# sourceMappingURL=chunk-BWFBVXT3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/providers/twilight-context.ts"],"names":[],"mappings":";;;AAGO,IAAM,eAAA,GAAkB,cAA2C,IAAI;AAEvE,SAAS,WAAA,GAAoC;AAClD,EAAA,MAAM,OAAA,GAAU,WAAW,eAAe,CAAA;AAC1C,EAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAClF,EAAA,OAAO,OAAA;AACT","file":"chunk-BWFBVXT3.js","sourcesContent":["import { createContext, useContext } from 'react';\nimport type { TwilightContextValue } from './twilight.types';\n\nexport const TwilightContext = createContext<TwilightContextValue | null>(null);\n\nexport function useTwilight(): TwilightContextValue {\n const context = useContext(TwilightContext);\n if (!context) throw new Error('useTwilight must be used within a TwilightProvider');\n return context;\n}\n"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// src/utils/document-class.ts
|
|
2
|
+
function normalizeClasses(input) {
|
|
3
|
+
if (!input) return [];
|
|
4
|
+
const arr = Array.isArray(input) ? input : [input];
|
|
5
|
+
return arr.flatMap((c) => c.split(/\s+/)).filter(Boolean);
|
|
6
|
+
}
|
|
7
|
+
function mergeElementAttrs(descriptors) {
|
|
8
|
+
const result = {};
|
|
9
|
+
const classSet = /* @__PURE__ */ new Set();
|
|
10
|
+
for (const d of descriptors) {
|
|
11
|
+
for (const [key, value] of Object.entries(d)) {
|
|
12
|
+
if (value === void 0) continue;
|
|
13
|
+
if (key === "class") {
|
|
14
|
+
for (const c of normalizeClasses(value)) classSet.add(c);
|
|
15
|
+
} else if (typeof value === "string" && value !== "") {
|
|
16
|
+
result[key] = value;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (classSet.size > 0) result["class"] = [...classSet].join(" ");
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
function toReactProps(attrs) {
|
|
24
|
+
const out = {};
|
|
25
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
26
|
+
out[key === "class" ? "className" : key] = value;
|
|
27
|
+
}
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
function mergeDocumentDescriptors(...descriptors) {
|
|
31
|
+
return {
|
|
32
|
+
bodyAttrs: toReactProps(mergeElementAttrs(descriptors.map((d) => d.body ?? {}))),
|
|
33
|
+
htmlAttrs: toReactProps(mergeElementAttrs(descriptors.map((d) => d.html ?? {})))
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function syncAttrsToElement(element, next) {
|
|
37
|
+
let prev = {};
|
|
38
|
+
try {
|
|
39
|
+
const raw = element.getAttribute("data-de-managed");
|
|
40
|
+
if (raw) prev = JSON.parse(raw);
|
|
41
|
+
} catch {
|
|
42
|
+
}
|
|
43
|
+
const prevClasses = (prev["class"] ?? "").split(" ").filter(Boolean);
|
|
44
|
+
for (const c of prevClasses) element.classList.remove(c);
|
|
45
|
+
for (const key of Object.keys(prev)) {
|
|
46
|
+
if (key !== "class") element.removeAttribute(key);
|
|
47
|
+
}
|
|
48
|
+
const nextClasses = (next["class"] ?? "").split(" ").filter(Boolean);
|
|
49
|
+
for (const c of nextClasses) element.classList.add(c);
|
|
50
|
+
for (const [key, value] of Object.entries(next)) {
|
|
51
|
+
if (key !== "class") element.setAttribute(key, value);
|
|
52
|
+
}
|
|
53
|
+
if (Object.keys(next).length > 0) {
|
|
54
|
+
element.setAttribute("data-de-managed", JSON.stringify(next));
|
|
55
|
+
} else {
|
|
56
|
+
element.removeAttribute("data-de-managed");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { mergeDocumentDescriptors, mergeElementAttrs, normalizeClasses, syncAttrsToElement, toReactProps };
|
|
61
|
+
//# sourceMappingURL=chunk-CW625T2E.js.map
|
|
62
|
+
//# sourceMappingURL=chunk-CW625T2E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/document-class.ts"],"names":[],"mappings":";AA6BO,SAAS,iBAAiB,KAAA,EAAgD;AAC/E,EAAA,IAAI,CAAC,KAAA,EAAO,OAAO,EAAC;AACpB,EAAA,MAAM,MAAM,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,CAAC,KAAK,CAAA;AACjD,EAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,CAAE,MAAM,KAAK,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AAC1D;AASO,SAAS,kBAAkB,WAAA,EAA6D;AAC7F,EAAA,MAAM,SAAiC,EAAC;AACxC,EAAA,MAAM,QAAA,uBAAe,GAAA,EAAY;AAEjC,EAAA,KAAA,MAAW,KAAK,WAAA,EAAa;AAC3B,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,EAAG;AAC5C,MAAA,IAAI,UAAU,MAAA,EAAW;AACzB,MAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,QAAA,KAAA,MAAW,KAAK,gBAAA,CAAiB,KAAK,CAAA,EAAG,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,MACzD,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,IAAY,UAAU,EAAA,EAAI;AACpD,QAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,QAAA,CAAS,IAAA,GAAO,CAAA,EAAG,MAAA,CAAO,OAAO,CAAA,GAAI,CAAC,GAAG,QAAQ,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAE/D,EAAA,OAAO,MAAA;AACT;AAMO,SAAS,aAAa,KAAA,EAAuD;AAClF,EAAA,MAAM,MAA8B,EAAC;AACrC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AAChD,IAAA,GAAA,CAAI,GAAA,KAAQ,OAAA,GAAU,WAAA,GAAc,GAAG,CAAA,GAAI,KAAA;AAAA,EAC7C;AACA,EAAA,OAAO,GAAA;AACT;AAmBO,SAAS,4BAA4B,WAAA,EAG1C;AACA,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,YAAA,CAAa,iBAAA,CAAkB,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,IAAQ,EAAE,CAAC,CAAC,CAAA;AAAA,IAC/E,SAAA,EAAW,YAAA,CAAa,iBAAA,CAAkB,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,IAAQ,EAAE,CAAC,CAAC;AAAA,GACjF;AACF;AASO,SAAS,kBAAA,CAAmB,SAAkB,IAAA,EAAoC;AAEvF,EAAA,IAAI,OAA+B,EAAC;AACpC,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,YAAA,CAAa,iBAAiB,CAAA;AAClD,IAAA,IAAI,GAAA,EAAK,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAAA,EAChC,CAAA,CAAA,MAAQ;AAAA,EAER;AAGA,EAAA,MAAM,WAAA,GAAA,CAAe,KAAK,OAAO,CAAA,IAAK,IAAI,KAAA,CAAM,GAAG,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AACnE,EAAA,KAAA,MAAW,CAAA,IAAK,WAAA,EAAa,OAAA,CAAQ,SAAA,CAAU,OAAO,CAAC,CAAA;AACvD,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACnC,IAAA,IAAI,GAAA,KAAQ,OAAA,EAAS,OAAA,CAAQ,eAAA,CAAgB,GAAG,CAAA;AAAA,EAClD;AAGA,EAAA,MAAM,WAAA,GAAA,CAAe,KAAK,OAAO,CAAA,IAAK,IAAI,KAAA,CAAM,GAAG,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AACnE,EAAA,KAAA,MAAW,CAAA,IAAK,WAAA,EAAa,OAAA,CAAQ,SAAA,CAAU,IAAI,CAAC,CAAA;AACpD,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,EAAG;AAC/C,IAAA,IAAI,GAAA,KAAQ,OAAA,EAAS,OAAA,CAAQ,YAAA,CAAa,KAAK,KAAK,CAAA;AAAA,EACtD;AAGA,EAAA,IAAI,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,SAAS,CAAA,EAAG;AAChC,IAAA,OAAA,CAAQ,YAAA,CAAa,iBAAA,EAAmB,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA;AAAA,EAC9D,CAAA,MAAO;AACL,IAAA,OAAA,CAAQ,gBAAgB,iBAAiB,CAAA;AAAA,EAC3C;AACF","file":"chunk-CW625T2E.js","sourcesContent":["/**\n * Attributes to apply to a single HTML element (`<body>` or `<html>`).\n *\n * - `class` is **union-merged** across all active route registrations (deduplicated).\n * - Every other attribute follows **last-registration-wins** (deepest active\n * route's value overrides parent routes).\n */\nexport interface DocumentElementAttrs {\n /** CSS classes — merged (union) across all active route registrations */\n class?: string | string[];\n /** Any other valid HTML attribute — deepest active route wins */\n [attr: string]: string | string[] | undefined;\n}\n\n/**\n * Descriptor that a route or component passes to `useDocumentClass`.\n * Each field maps to the corresponding HTML element.\n */\nexport interface DocumentElementDescriptor {\n /** Attributes to apply to `<body>` */\n body?: DocumentElementAttrs;\n /** Attributes to apply to `<html>` */\n html?: DocumentElementAttrs;\n}\n\n// ============================================================================\n// Utilities\n// ============================================================================\n\nexport function normalizeClasses(input: string | string[] | undefined): string[] {\n if (!input) return [];\n const arr = Array.isArray(input) ? input : [input];\n return arr.flatMap((c) => c.split(/\\s+/)).filter(Boolean);\n}\n\n/**\n * Merge an ordered array of `DocumentElementAttrs` into a flat\n * `Record<string, string>`.\n *\n * - `class` → union of all values, deduplicated\n * - all other keys → last value in the array wins\n */\nexport function mergeElementAttrs(descriptors: DocumentElementAttrs[]): Record<string, string> {\n const result: Record<string, string> = {};\n const classSet = new Set<string>();\n\n for (const d of descriptors) {\n for (const [key, value] of Object.entries(d)) {\n if (value === undefined) continue;\n if (key === 'class') {\n for (const c of normalizeClasses(value)) classSet.add(c);\n } else if (typeof value === 'string' && value !== '') {\n result[key] = value;\n }\n }\n }\n\n if (classSet.size > 0) result['class'] = [...classSet].join(' ');\n\n return result;\n}\n\n/**\n * Convert a merged attrs record (using HTML attribute names like `class`) to\n * React JSX prop names (e.g. `class` → `className`).\n */\nexport function toReactProps(attrs: Record<string, string>): Record<string, string> {\n const out: Record<string, string> = {};\n for (const [key, value] of Object.entries(attrs)) {\n out[key === 'class' ? 'className' : key] = value;\n }\n return out;\n}\n\n/**\n * Merge multiple `DocumentElementDescriptor`s into React-ready props.\n *\n * Useful for combining attrs from multiple sources (e.g., layout + page).\n *\n * Merge rules:\n * - `class` → union across all descriptors (deduplicated)\n * - all other attrs → last descriptor wins\n *\n * @example\n * ```typescript\n * const { bodyAttrs, htmlAttrs } = mergeDocumentDescriptors(\n * { html: { class: 'antialiased' } },\n * { html: { lang: 'ar', dir: 'rtl' }, body: { class: 'font-sans' } },\n * );\n * ```\n */\nexport function mergeDocumentDescriptors(...descriptors: DocumentElementDescriptor[]): {\n bodyAttrs: Record<string, string>;\n htmlAttrs: Record<string, string>;\n} {\n return {\n bodyAttrs: toReactProps(mergeElementAttrs(descriptors.map((d) => d.body ?? {}))),\n htmlAttrs: toReactProps(mergeElementAttrs(descriptors.map((d) => d.html ?? {}))),\n };\n}\n\n/**\n * Apply a merged attrs record to a real DOM element, tracking managed\n * attribute names so a subsequent call cleanly removes stale values without\n * touching attributes set by other systems.\n *\n * Managed state is serialised as JSON on `data-de-managed`.\n */\nexport function syncAttrsToElement(element: Element, next: Record<string, string>): void {\n // Read previously managed state\n let prev: Record<string, string> = {};\n try {\n const raw = element.getAttribute('data-de-managed');\n if (raw) prev = JSON.parse(raw) as Record<string, string>;\n } catch {\n // ignore malformed data\n }\n\n // Remove stale managed attrs\n const prevClasses = (prev['class'] ?? '').split(' ').filter(Boolean);\n for (const c of prevClasses) element.classList.remove(c);\n for (const key of Object.keys(prev)) {\n if (key !== 'class') element.removeAttribute(key);\n }\n\n // Apply new attrs\n const nextClasses = (next['class'] ?? '').split(' ').filter(Boolean);\n for (const c of nextClasses) element.classList.add(c);\n for (const [key, value] of Object.entries(next)) {\n if (key !== 'class') element.setAttribute(key, value);\n }\n\n // Persist managed state\n if (Object.keys(next).length > 0) {\n element.setAttribute('data-de-managed', JSON.stringify(next));\n } else {\n element.removeAttribute('data-de-managed');\n }\n}\n"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { orThrow } from './chunk-GO34DE35.js';
|
|
2
|
+
import { api } from './chunk-2TB2LTL2.js';
|
|
3
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
4
|
+
|
|
5
|
+
var blog = {
|
|
6
|
+
get: async (signal) => {
|
|
7
|
+
const options = {};
|
|
8
|
+
if (signal) options.signal = signal;
|
|
9
|
+
const response = await api.get("blog", options).json();
|
|
10
|
+
return {
|
|
11
|
+
categories: response.data.categories ?? [],
|
|
12
|
+
slides: response.data.slides ?? [],
|
|
13
|
+
articles: response.data.articles ?? [],
|
|
14
|
+
popular: response.data.popular ?? []
|
|
15
|
+
};
|
|
16
|
+
},
|
|
17
|
+
articles: {
|
|
18
|
+
list: async (params) => {
|
|
19
|
+
const { category, author, tag, page, cursor, signal } = params ?? {};
|
|
20
|
+
const searchParams = new URLSearchParams();
|
|
21
|
+
if (page !== void 0) searchParams.set("page", String(page));
|
|
22
|
+
if (cursor) searchParams.set("cursor", cursor);
|
|
23
|
+
if (category) searchParams.set("category", category);
|
|
24
|
+
if (author) searchParams.set("author", author);
|
|
25
|
+
if (tag) searchParams.set("tag", tag);
|
|
26
|
+
const options = {};
|
|
27
|
+
if (signal) options.signal = signal;
|
|
28
|
+
const response = await api.get(`blog/articles?${searchParams.toString()}`, options).json();
|
|
29
|
+
return {
|
|
30
|
+
data: response.data ?? [],
|
|
31
|
+
categories: response.categories ?? void 0,
|
|
32
|
+
category: response.category,
|
|
33
|
+
author: response.author,
|
|
34
|
+
tag: response.tag,
|
|
35
|
+
cursor: response.cursor
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
find: async (id, signal) => {
|
|
39
|
+
const options = {};
|
|
40
|
+
if (signal) options.signal = signal;
|
|
41
|
+
const response = await api.get(`blog/articles/${id}`, options).json();
|
|
42
|
+
if (!response.data) {
|
|
43
|
+
throw new Error(`Article ${id} not found`);
|
|
44
|
+
}
|
|
45
|
+
return response.data;
|
|
46
|
+
},
|
|
47
|
+
findOrThrow: (id, signal) => orThrow(blog.articles.find(id, signal))
|
|
48
|
+
},
|
|
49
|
+
queries: {
|
|
50
|
+
overview: () => queryOptions({
|
|
51
|
+
queryKey: ["blog", "overview"],
|
|
52
|
+
queryFn: ({ signal }) => blog.get(signal)
|
|
53
|
+
}),
|
|
54
|
+
articles: (params) => queryOptions({
|
|
55
|
+
queryKey: ["blog", "articles", params],
|
|
56
|
+
queryFn: ({ signal }) => blog.articles.list({ ...params, signal })
|
|
57
|
+
}),
|
|
58
|
+
article: (id) => queryOptions({
|
|
59
|
+
queryKey: ["blog", "article", id],
|
|
60
|
+
queryFn: ({ signal }) => blog.articles.find(id, signal)
|
|
61
|
+
})
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
export { blog };
|
|
66
|
+
//# sourceMappingURL=chunk-DFMO5KBU.js.map
|
|
67
|
+
//# sourceMappingURL=chunk-DFMO5KBU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/blog.ts"],"names":[],"mappings":"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","file":"chunk-DFMO5KBU.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport type { Options as KyOptions } from 'ky';\nimport { api } from './client';\nimport type { Pagination } from './types';\nimport type {\n ArticleSummary,\n ArticleDetail,\n BlogAuthor,\n BlogCategory,\n BlogTag,\n BlogOverview,\n} from '../routes/blog/types';\nimport { orThrow } from '../providers';\n\nexport interface BlogArticlesListParams {\n category?: string;\n author?: string;\n tag?: string;\n page?: number;\n cursor?: string | null;\n signal?: AbortSignal;\n}\n\nexport interface BlogArticlesListResponse {\n data: ArticleSummary[];\n categories?: BlogCategory[];\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n}\n\nexport interface BlogGetResponse {\n data: {\n categories: BlogCategory[] | null;\n slides: ArticleSummary[] | null;\n articles: ArticleSummary[] | null;\n popular: ArticleSummary[] | null;\n };\n}\n\nexport const blog = {\n get: async (signal?: AbortSignal): Promise<BlogOverview> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api.get('blog', options as KyOptions).json<BlogGetResponse>();\n\n return {\n categories: response.data.categories ?? [],\n slides: response.data.slides ?? [],\n articles: response.data.articles ?? [],\n popular: response.data.popular ?? [],\n };\n },\n\n articles: {\n list: async (params?: BlogArticlesListParams): Promise<BlogArticlesListResponse> => {\n const { category, author, tag, page, cursor, signal } = params ?? {};\n\n const searchParams = new URLSearchParams();\n if (page !== undefined) searchParams.set('page', String(page));\n if (cursor) searchParams.set('cursor', cursor);\n if (category) searchParams.set('category', category);\n if (author) searchParams.set('author', author);\n if (tag) searchParams.set('tag', tag);\n\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles?${searchParams.toString()}`, options as KyOptions)\n .json<{\n data: ArticleSummary[] | null;\n categories?: BlogCategory[] | null;\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n }>();\n\n return {\n data: response.data ?? [],\n categories: response.categories ?? undefined,\n category: response.category,\n author: response.author,\n tag: response.tag,\n cursor: response.cursor,\n };\n },\n\n find: async (id: string, signal?: AbortSignal): Promise<ArticleDetail> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles/${id}`, options as KyOptions)\n .json<{ data: ArticleDetail | null }>();\n\n if (!response.data) {\n throw new Error(`Article ${id} not found`);\n }\n\n return response.data;\n },\n\n findOrThrow: (id: string, signal?: AbortSignal): Promise<ArticleDetail> =>\n orThrow(blog.articles.find(id, signal)),\n },\n\n queries: {\n overview: () =>\n queryOptions({\n queryKey: ['blog', 'overview'],\n queryFn: ({ signal }) => blog.get(signal),\n }),\n articles: (params?: Omit<BlogArticlesListParams, 'signal'>) =>\n queryOptions({\n queryKey: ['blog', 'articles', params],\n queryFn: ({ signal }) => blog.articles.list({ ...params, signal }),\n }),\n article: (id: string) =>\n queryOptions({\n queryKey: ['blog', 'article', id],\n queryFn: ({ signal }) => blog.articles.find(id, signal),\n }),\n },\n};\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export { __require };
|
|
9
|
+
//# sourceMappingURL=chunk-DGUM43GV.js.map
|
|
10
|
+
//# sourceMappingURL=chunk-DGUM43GV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-DGUM43GV.js"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { configureNavigation, UnauthorizedError, NavigationProvider } from './chunk-GO34DE35.js';
|
|
2
|
+
import { isLocale } from './chunk-T72DAX7R.js';
|
|
3
|
+
import { LinkProvider } from './chunk-XUI3TRXF.js';
|
|
4
|
+
import { useParams, Link, redirect, notFound, useNavigate } from '@tanstack/react-router';
|
|
5
|
+
import { forwardRef, createElement, useCallback } from 'react';
|
|
6
|
+
import { jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function localizeDestination(destination, locale) {
|
|
9
|
+
if (!locale || !destination.startsWith("/") || destination.startsWith("//")) return destination;
|
|
10
|
+
const firstSegment = destination.split("/")[1]?.split(/[?#]/)[0];
|
|
11
|
+
if (isLocale(firstSegment)) return destination;
|
|
12
|
+
return destination === "/" ? `/${locale}` : `/${locale}${destination}`;
|
|
13
|
+
}
|
|
14
|
+
var TanStackLinkAdapter = forwardRef(
|
|
15
|
+
({
|
|
16
|
+
to,
|
|
17
|
+
href,
|
|
18
|
+
children,
|
|
19
|
+
className,
|
|
20
|
+
style,
|
|
21
|
+
title,
|
|
22
|
+
target,
|
|
23
|
+
rel,
|
|
24
|
+
onClick,
|
|
25
|
+
preload,
|
|
26
|
+
replace,
|
|
27
|
+
"aria-label": ariaLabel,
|
|
28
|
+
...rest
|
|
29
|
+
}, ref) => {
|
|
30
|
+
const { locale } = useParams({ strict: false });
|
|
31
|
+
const destination = localizeDestination(to ?? href ?? "/", locale);
|
|
32
|
+
return createElement(
|
|
33
|
+
Link,
|
|
34
|
+
{
|
|
35
|
+
ref,
|
|
36
|
+
to: destination,
|
|
37
|
+
className,
|
|
38
|
+
style,
|
|
39
|
+
title,
|
|
40
|
+
target,
|
|
41
|
+
rel,
|
|
42
|
+
onClick,
|
|
43
|
+
preload: preload === "intent" ? "intent" : void 0,
|
|
44
|
+
replace,
|
|
45
|
+
"aria-label": ariaLabel,
|
|
46
|
+
...rest
|
|
47
|
+
},
|
|
48
|
+
children
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
TanStackLinkAdapter.displayName = "TanStackLinkAdapter";
|
|
53
|
+
function createTanStackLinkAdapter() {
|
|
54
|
+
return TanStackLinkAdapter;
|
|
55
|
+
}
|
|
56
|
+
configureNavigation({
|
|
57
|
+
notFound: (message) => {
|
|
58
|
+
throw notFound({ data: message });
|
|
59
|
+
},
|
|
60
|
+
redirect: (path, opts) => {
|
|
61
|
+
throw redirect({ to: path, replace: opts?.replace });
|
|
62
|
+
},
|
|
63
|
+
unauthorized: (message) => {
|
|
64
|
+
throw new UnauthorizedError(message);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
function NavigationSetup({ children }) {
|
|
68
|
+
const navigate = useNavigate();
|
|
69
|
+
const { locale } = useParams({ strict: false });
|
|
70
|
+
const navigateFn = useCallback(
|
|
71
|
+
(to, opts) => navigate({ to: localizeDestination(to, locale), replace: opts?.replace }),
|
|
72
|
+
[navigate, locale]
|
|
73
|
+
);
|
|
74
|
+
return /* @__PURE__ */ jsx(NavigationProvider, { navigate: navigateFn, children: /* @__PURE__ */ jsx(LinkProvider, { adapter: TanStackLinkAdapter, children }) });
|
|
75
|
+
}
|
|
76
|
+
function TanStackNavigationProvider({ children }) {
|
|
77
|
+
const navigate = useNavigate();
|
|
78
|
+
return /* @__PURE__ */ jsx(
|
|
79
|
+
NavigationProvider,
|
|
80
|
+
{
|
|
81
|
+
navigate: (to, opts) => navigate({ to, replace: opts?.replace }),
|
|
82
|
+
children: /* @__PURE__ */ jsx(LinkProvider, { adapter: TanStackLinkAdapter, children })
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export { NavigationSetup, TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter };
|
|
88
|
+
//# sourceMappingURL=chunk-EQ5ZGAVR.js.map
|
|
89
|
+
//# sourceMappingURL=chunk-EQ5ZGAVR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tanstack/link.tsx","../src/tanstack/navigation.tsx"],"names":["TanStackLink","tanstackNotFound","tanstackRedirect","useParams"],"mappings":"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","file":"chunk-EQ5ZGAVR.js","sourcesContent":["import { forwardRef, createElement } from 'react';\nimport { Link as TanStackLink, useParams } from '@tanstack/react-router';\nimport { isLocale } from '../providers/locale-constants';\nimport type { BaseLinkProps } from '../components/common/Link.types';\n\n/**\n * Routes live under an optional `/{-$locale}` param, so a bare `to=\"/brands\"`\n * resolves with the locale omitted and the $locale loader bounces the user to\n * the fallback locale. Prefix the current locale onto internal paths that\n * don't already carry one.\n */\nexport function localizeDestination(destination: string, locale?: string) {\n if (!locale || !destination.startsWith('/') || destination.startsWith('//')) return destination;\n const firstSegment = destination.split('/')[1]?.split(/[?#]/)[0];\n if (isLocale(firstSegment)) return destination;\n return destination === '/' ? `/${locale}` : `/${locale}${destination}`;\n}\n\n/**\n * TanStack Router Link adapter.\n * Translates framework-agnostic props to TanStack Router Link props.\n */\nexport const TanStackLinkAdapter = forwardRef<HTMLAnchorElement, BaseLinkProps>(\n (\n {\n to,\n href,\n children,\n className,\n style,\n title,\n target,\n rel,\n onClick,\n preload,\n replace,\n 'aria-label': ariaLabel,\n ...rest\n },\n ref\n ) => {\n const { locale } = useParams({ strict: false }) as { locale?: string };\n const destination = localizeDestination(to ?? href ?? '/', locale);\n\n return createElement(\n TanStackLink,\n {\n ref,\n to: destination,\n className,\n style,\n title,\n target,\n rel,\n onClick,\n preload: preload === 'intent' ? 'intent' : undefined,\n replace,\n 'aria-label': ariaLabel,\n ...(rest as Record<string, unknown>),\n },\n children\n );\n }\n);\n\nTanStackLinkAdapter.displayName = 'TanStackLinkAdapter';\n\n/**\n * Create a TanStack Router Link adapter component.\n */\nexport function createTanStackLinkAdapter() {\n return TanStackLinkAdapter;\n}\n","import {\n useNavigate,\n useParams,\n redirect as tanstackRedirect,\n notFound as tanstackNotFound,\n} from '@tanstack/react-router';\nimport {\n NavigationProvider,\n configureNavigation,\n type NavigateOptions,\n} from '../providers/NavigationProvider';\nimport { LinkProvider } from '../providers/LinkProvider';\nimport { TanStackLinkAdapter, localizeDestination } from './link';\nimport { useCallback, type ReactNode } from 'react';\nimport { UnauthorizedError } from '../providers/NavigationProvider';\n\nconfigureNavigation({\n notFound: (message?: string) => {\n throw tanstackNotFound({ data: message });\n },\n redirect: (path: string, opts?: { replace?: boolean }) => {\n throw tanstackRedirect({ to: path, replace: opts?.replace });\n },\n unauthorized: (message?: string) => {\n throw new UnauthorizedError(message);\n },\n});\n\n/**\n * TanStack navigation setup - wraps children with NavigationProvider and LinkProvider.\n * Called by TwilightProvider when client.framework === 'tanstack'.\n */\nexport function NavigationSetup({ children }: { children: ReactNode }) {\n const navigate = useNavigate();\n const { locale } = useParams({ strict: false }) as { locale?: string };\n const navigateFn = useCallback(\n (to: string, opts?: NavigateOptions) =>\n navigate({ to: localizeDestination(to, locale), replace: opts?.replace }),\n [navigate, locale]\n );\n\n return (\n <NavigationProvider navigate={navigateFn}>\n <LinkProvider adapter={TanStackLinkAdapter}>{children}</LinkProvider>\n </NavigationProvider>\n );\n}\n\n/** @deprecated Use NavigationSetup instead */\nexport function TanStackNavigationProvider({ children }: { children: ReactNode }) {\n const navigate = useNavigate();\n return (\n <NavigationProvider\n navigate={(to: string, opts?: NavigateOptions) => navigate({ to, replace: opts?.replace })}\n >\n <LinkProvider adapter={TanStackLinkAdapter}>{children}</LinkProvider>\n </NavigationProvider>\n );\n}\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useTranslation } from './chunk-VVRYP6IL.js';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
function ErrorPage({
|
|
5
|
+
code,
|
|
6
|
+
title,
|
|
7
|
+
message,
|
|
8
|
+
actionText,
|
|
9
|
+
actionHref = "/",
|
|
10
|
+
showAction = true,
|
|
11
|
+
LinkComponent,
|
|
12
|
+
children
|
|
13
|
+
}) {
|
|
14
|
+
const { t } = useTranslation();
|
|
15
|
+
const resolvedTitle = title ?? t(`common.errors.${code}`) ?? "Error";
|
|
16
|
+
const resolvedMessage = message ?? t("common.errors.error_occurred") ?? "An unexpected error occurred.";
|
|
17
|
+
const resolvedActionText = actionText ?? t("common.elements.back_home") ?? "Back to Home";
|
|
18
|
+
const linkClassName = "inline-flex items-center px-6 py-3 rounded-lg transition-opacity hover:opacity-90";
|
|
19
|
+
const linkStyle = {
|
|
20
|
+
backgroundColor: "var(--color-primary)",
|
|
21
|
+
color: "var(--color-primary-reverse, #ffffff)"
|
|
22
|
+
};
|
|
23
|
+
return /* @__PURE__ */ jsxs("div", { className: "container py-16 text-center", children: [
|
|
24
|
+
code && /* @__PURE__ */ jsx("h1", { className: "text-6xl font-bold text-gray-300 mb-4", "data-testid": "error-code", children: code }),
|
|
25
|
+
/* @__PURE__ */ jsx("h2", { className: "text-2xl font-semibold text-gray-700 mb-4", children: resolvedTitle }),
|
|
26
|
+
/* @__PURE__ */ jsx("p", { className: "text-gray-500 mb-8", children: resolvedMessage }),
|
|
27
|
+
children,
|
|
28
|
+
showAction && (LinkComponent ? /* @__PURE__ */ jsx(LinkComponent, { to: actionHref, className: linkClassName, style: linkStyle, children: resolvedActionText }) : /* @__PURE__ */ jsx("a", { href: actionHref, className: linkClassName, style: linkStyle, children: resolvedActionText }))
|
|
29
|
+
] });
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { ErrorPage };
|
|
33
|
+
//# sourceMappingURL=chunk-FBFPH5BB.js.map
|
|
34
|
+
//# sourceMappingURL=chunk-FBFPH5BB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/common/ErrorPage.tsx"],"names":[],"mappings":";;;AAmBO,SAAS,SAAA,CAAU;AAAA,EACxB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA,GAAa,GAAA;AAAA,EACb,UAAA,GAAa,IAAA;AAAA,EACb,aAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAE7B,EAAA,MAAM,gBAAgB,KAAA,IAAS,CAAA,CAAE,CAAA,cAAA,EAAiB,IAAI,EAAE,CAAA,IAAK,OAAA;AAC7D,EAAA,MAAM,eAAA,GACJ,OAAA,IAAW,CAAA,CAAE,8BAA8B,CAAA,IAAK,+BAAA;AAClD,EAAA,MAAM,kBAAA,GAAqB,UAAA,IAAc,CAAA,CAAE,2BAA2B,CAAA,IAAK,cAAA;AAE3E,EAAA,MAAM,aAAA,GACJ,mFAAA;AACF,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,eAAA,EAAiB,sBAAA;AAAA,IACjB,KAAA,EAAO;AAAA,GACT;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EACZ,QAAA,EAAA;AAAA,IAAA,IAAA,wBACE,IAAA,EAAA,EAAG,SAAA,EAAU,uCAAA,EAAwC,aAAA,EAAY,cAC/D,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,oBAEF,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,2CAAA,EAA6C,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,oBACzE,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oBAAA,EAAsB,QAAA,EAAA,eAAA,EAAgB,CAAA;AAAA,IAElD,QAAA;AAAA,IAEA,UAAA,KACE,gCACC,GAAA,CAAC,aAAA,EAAA,EAAc,IAAI,UAAA,EAAY,SAAA,EAAW,eAAe,KAAA,EAAO,SAAA,EAC7D,8BACH,CAAA,mBAEA,GAAA,CAAC,OAAE,IAAA,EAAM,UAAA,EAAY,WAAW,aAAA,EAAe,KAAA,EAAO,WACnD,QAAA,EAAA,kBAAA,EACH,CAAA;AAAA,GAAA,EAEN,CAAA;AAEJ","file":"chunk-FBFPH5BB.js","sourcesContent":["import type { ComponentType, ReactNode } from 'react';\nimport { useTranslation } from '../../providers/i18n';\n\nexport interface ErrorPageProps {\n code?: string | number;\n title?: string;\n message?: string;\n actionText?: string;\n actionHref?: string;\n showAction?: boolean;\n LinkComponent?: ComponentType<{\n to: string;\n className?: string;\n style?: React.CSSProperties;\n children: ReactNode;\n }>;\n children?: ReactNode;\n}\n\nexport function ErrorPage({\n code,\n title,\n message,\n actionText,\n actionHref = '/',\n showAction = true,\n LinkComponent,\n children,\n}: ErrorPageProps) {\n const { t } = useTranslation();\n\n const resolvedTitle = title ?? t(`common.errors.${code}`) ?? 'Error';\n const resolvedMessage =\n message ?? t('common.errors.error_occurred') ?? 'An unexpected error occurred.';\n const resolvedActionText = actionText ?? t('common.elements.back_home') ?? 'Back to Home';\n\n const linkClassName =\n 'inline-flex items-center px-6 py-3 rounded-lg transition-opacity hover:opacity-90';\n const linkStyle = {\n backgroundColor: 'var(--color-primary)',\n color: 'var(--color-primary-reverse, #ffffff)',\n };\n\n return (\n <div className=\"container py-16 text-center\">\n {code && (\n <h1 className=\"text-6xl font-bold text-gray-300 mb-4\" data-testid=\"error-code\">\n {code}\n </h1>\n )}\n <h2 className=\"text-2xl font-semibold text-gray-700 mb-4\">{resolvedTitle}</h2>\n <p className=\"text-gray-500 mb-8\">{resolvedMessage}</p>\n\n {children}\n\n {showAction &&\n (LinkComponent ? (\n <LinkComponent to={actionHref} className={linkClassName} style={linkStyle}>\n {resolvedActionText}\n </LinkComponent>\n ) : (\n <a href={actionHref} className={linkClassName} style={linkStyle}>\n {resolvedActionText}\n </a>\n ))}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// src/components/ComponentRegistry.ts
|
|
2
|
+
var ComponentRegistry = class {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.components = /* @__PURE__ */ new Map();
|
|
5
|
+
}
|
|
6
|
+
register(name, component) {
|
|
7
|
+
this.components.set(name, {
|
|
8
|
+
component,
|
|
9
|
+
displayName: name
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
override(name, component) {
|
|
13
|
+
const existing = this.components.get(name);
|
|
14
|
+
if (existing) {
|
|
15
|
+
this.components.set(name, {
|
|
16
|
+
component,
|
|
17
|
+
displayName: name,
|
|
18
|
+
original: existing
|
|
19
|
+
});
|
|
20
|
+
} else {
|
|
21
|
+
this.register(name, component);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
resolve(name) {
|
|
25
|
+
const definition = this.components.get(name);
|
|
26
|
+
return definition?.component ?? null;
|
|
27
|
+
}
|
|
28
|
+
getOriginal(name) {
|
|
29
|
+
const definition = this.components.get(name);
|
|
30
|
+
return definition?.original?.component ?? null;
|
|
31
|
+
}
|
|
32
|
+
has(name) {
|
|
33
|
+
return this.components.has(name);
|
|
34
|
+
}
|
|
35
|
+
list() {
|
|
36
|
+
return Array.from(this.components.keys());
|
|
37
|
+
}
|
|
38
|
+
listByPrefix(prefix) {
|
|
39
|
+
return this.list().filter((name) => name.startsWith(prefix));
|
|
40
|
+
}
|
|
41
|
+
clear() {
|
|
42
|
+
this.components.clear();
|
|
43
|
+
}
|
|
44
|
+
remove(name) {
|
|
45
|
+
return this.components.delete(name);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
var registry = new ComponentRegistry();
|
|
49
|
+
|
|
50
|
+
export { ComponentRegistry, registry };
|
|
51
|
+
//# sourceMappingURL=chunk-G7ALL4BC.js.map
|
|
52
|
+
//# sourceMappingURL=chunk-G7ALL4BC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ComponentRegistry.ts"],"names":[],"mappings":";AAEA,IAAM,oBAAN,MAAwB;AAAA,EAAxB,WAAA,GAAA;AACE,IAAA,IAAA,CAAQ,UAAA,uBAAiB,GAAA,EAAiC;AAAA,EAAA;AAAA,EAE1D,QAAA,CAAsC,MAAc,SAAA,EAAmC;AACrF,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,IAAA,EAAM;AAAA,MACxB,SAAA;AAAA,MACA,WAAA,EAAa;AAAA,KACd,CAAA;AAAA,EACH;AAAA,EAEA,QAAA,CAAsC,MAAc,SAAA,EAAmC;AACrF,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA;AACzC,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,IAAA,CAAK,UAAA,CAAW,IAAI,IAAA,EAAM;AAAA,QACxB,SAAA;AAAA,QACA,WAAA,EAAa,IAAA;AAAA,QACb,QAAA,EAAU;AAAA,OACX,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,QAAA,CAAS,MAAM,SAAS,CAAA;AAAA,IAC/B;AAAA,EACF;AAAA,EAEA,QAAqC,IAAA,EAAuC;AAC1E,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA;AAC3C,IAAA,OAAQ,YAAY,SAAA,IAAkC,IAAA;AAAA,EACxD;AAAA,EAEA,YAAyC,IAAA,EAAuC;AAC9E,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA;AAC3C,IAAA,OAAQ,UAAA,EAAY,UAAU,SAAA,IAAkC,IAAA;AAAA,EAClE;AAAA,EAEA,IAAI,IAAA,EAAuB;AACzB,IAAA,OAAO,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA;AAAA,EACjC;AAAA,EAEA,IAAA,GAAiB;AACf,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA;AAAA,EAC1C;AAAA,EAEA,aAAa,MAAA,EAA0B;AACrC,IAAA,OAAO,IAAA,CAAK,MAAK,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,EAC7D;AAAA,EAEA,KAAA,GAAc;AACZ,IAAA,IAAA,CAAK,WAAW,KAAA,EAAM;AAAA,EACxB;AAAA,EAEA,OAAO,IAAA,EAAuB;AAC5B,IAAA,OAAO,IAAA,CAAK,UAAA,CAAW,MAAA,CAAO,IAAI,CAAA;AAAA,EACpC;AACF;AAEO,IAAM,QAAA,GAAW,IAAI,iBAAA","file":"chunk-G7ALL4BC.js","sourcesContent":["import type { ComponentType, ComponentDefinition } from '../types';\n\nclass ComponentRegistry {\n private components = new Map<string, ComponentDefinition>();\n\n register<P = Record<string, unknown>>(name: string, component: ComponentType<P>): void {\n this.components.set(name, {\n component: component as ComponentType,\n displayName: name,\n });\n }\n\n override<P = Record<string, unknown>>(name: string, component: ComponentType<P>): void {\n const existing = this.components.get(name);\n if (existing) {\n this.components.set(name, {\n component: component as ComponentType,\n displayName: name,\n original: existing,\n });\n } else {\n this.register(name, component);\n }\n }\n\n resolve<P = Record<string, unknown>>(name: string): ComponentType<P> | null {\n const definition = this.components.get(name);\n return (definition?.component as ComponentType<P>) ?? null;\n }\n\n getOriginal<P = Record<string, unknown>>(name: string): ComponentType<P> | null {\n const definition = this.components.get(name);\n return (definition?.original?.component as ComponentType<P>) ?? null;\n }\n\n has(name: string): boolean {\n return this.components.has(name);\n }\n\n list(): string[] {\n return Array.from(this.components.keys());\n }\n\n listByPrefix(prefix: string): string[] {\n return this.list().filter((name) => name.startsWith(prefix));\n }\n\n clear(): void {\n this.components.clear();\n }\n\n remove(name: string): boolean {\n return this.components.delete(name);\n }\n}\n\nexport const registry = new ComponentRegistry();\n\nexport { ComponentRegistry };\n\nexport const COMPONENT_KEYS = {\n PRODUCT_CARD: 'product:card',\n} as const;\n"]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { useAsyncFn } from './chunk-6BZ5TKEV.js';
|
|
2
|
+
import { useSyncExternalStore, useCallback } from 'react';
|
|
3
|
+
|
|
4
|
+
var WISHLIST_STORAGE_KEY = "salla::wishlist";
|
|
5
|
+
var ids = [];
|
|
6
|
+
var listeners = /* @__PURE__ */ new Set();
|
|
7
|
+
var subscribed = false;
|
|
8
|
+
function emitChange() {
|
|
9
|
+
for (const listener of listeners) listener();
|
|
10
|
+
}
|
|
11
|
+
function subscribe(listener) {
|
|
12
|
+
listeners.add(listener);
|
|
13
|
+
return () => {
|
|
14
|
+
listeners.delete(listener);
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function getSnapshot() {
|
|
18
|
+
return ids;
|
|
19
|
+
}
|
|
20
|
+
var getServerSnapshot = () => [];
|
|
21
|
+
function persistIds() {
|
|
22
|
+
try {
|
|
23
|
+
localStorage.setItem(WISHLIST_STORAGE_KEY, JSON.stringify(ids));
|
|
24
|
+
} catch {
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function initFromStorage() {
|
|
28
|
+
try {
|
|
29
|
+
const sdkWishlist = window.salla?.storage.get(WISHLIST_STORAGE_KEY, []);
|
|
30
|
+
const stored = localStorage.getItem(WISHLIST_STORAGE_KEY);
|
|
31
|
+
const parsed = stored ? JSON.parse(stored) : [];
|
|
32
|
+
ids = Array.isArray(sdkWishlist) && sdkWishlist.length > 0 ? sdkWishlist : parsed;
|
|
33
|
+
} catch {
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function ensureSubscribed() {
|
|
37
|
+
if (subscribed || typeof window === "undefined") return;
|
|
38
|
+
subscribed = true;
|
|
39
|
+
initFromStorage();
|
|
40
|
+
const salla = window.salla;
|
|
41
|
+
if (!salla?.wishlist?.event) return;
|
|
42
|
+
salla.wishlist.event.onAdded((_event, id) => {
|
|
43
|
+
if (ids.includes(id)) return;
|
|
44
|
+
ids = [...ids, id];
|
|
45
|
+
persistIds();
|
|
46
|
+
emitChange();
|
|
47
|
+
});
|
|
48
|
+
salla.wishlist.event.onRemoved((_response, id) => {
|
|
49
|
+
ids = ids.filter((itemId) => itemId !== id);
|
|
50
|
+
persistIds();
|
|
51
|
+
emitChange();
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function useWishlist() {
|
|
55
|
+
ensureSubscribed();
|
|
56
|
+
const storedIds = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
57
|
+
const [addState, addFn] = useAsyncFn(async (productId) => {
|
|
58
|
+
const salla = window.salla;
|
|
59
|
+
await salla?.wishlist.add(productId);
|
|
60
|
+
if (!ids.includes(productId)) {
|
|
61
|
+
ids = [...ids, productId];
|
|
62
|
+
persistIds();
|
|
63
|
+
emitChange();
|
|
64
|
+
}
|
|
65
|
+
}, []);
|
|
66
|
+
const [removeState, removeFn] = useAsyncFn(async (productId) => {
|
|
67
|
+
const salla = window.salla;
|
|
68
|
+
await salla?.wishlist.remove(productId);
|
|
69
|
+
ids = ids.filter((id) => id !== productId);
|
|
70
|
+
persistIds();
|
|
71
|
+
emitChange();
|
|
72
|
+
}, []);
|
|
73
|
+
const has = useCallback((productId) => storedIds.includes(productId), [storedIds]);
|
|
74
|
+
const add = async (productId) => !(await addFn(productId) instanceof Error);
|
|
75
|
+
const remove = async (productId) => !(await removeFn(productId) instanceof Error);
|
|
76
|
+
const toggle = useCallback(
|
|
77
|
+
(productId) => has(productId) ? remove(productId) : add(productId),
|
|
78
|
+
[has, addFn, removeFn]
|
|
79
|
+
);
|
|
80
|
+
return {
|
|
81
|
+
ids: storedIds,
|
|
82
|
+
count: storedIds.length,
|
|
83
|
+
has,
|
|
84
|
+
add,
|
|
85
|
+
remove,
|
|
86
|
+
toggle,
|
|
87
|
+
loading: addState.loading || removeState.loading,
|
|
88
|
+
error: (addState.error ?? removeState.error)?.message ?? null
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function resetWishlistStore() {
|
|
92
|
+
ids = [];
|
|
93
|
+
listeners.clear();
|
|
94
|
+
subscribed = false;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export { resetWishlistStore, useWishlist };
|
|
98
|
+
//# sourceMappingURL=chunk-GBWCXUPD.js.map
|
|
99
|
+
//# sourceMappingURL=chunk-GBWCXUPD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useWishlist.ts"],"names":[],"mappings":"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","file":"chunk-GBWCXUPD.js","sourcesContent":["import { useCallback, useSyncExternalStore } from 'react';\nimport { useAsyncFn } from './useAsyncFn';\nimport type { UseToggleWithItems } from './types';\n\nexport type UseWishlistResult = UseToggleWithItems<number>;\n\n/**\n * useWishlist - Hook for managing wishlist functionality\n *\n * Provides wishlist product management with local storage persistence\n * and Salla SDK integration. Syncs with the SDK's wishlist state and\n * listens for events to maintain real-time consistency.\n *\n * Uses a module-level singleton store so SDK event listeners are\n * registered ONCE globally — not per-component. All hook instances\n * share the same state via `useSyncExternalStore`.\n *\n * @returns Wishlist state and management functions\n *\n * @example\n * ```tsx\n * function WishlistButton({ productId }) {\n * const { has, toggle, loading } = useWishlist();\n *\n * return (\n * <button\n * onClick={() => toggle(productId)}\n * disabled={loading}\n * className={has(productId) ? 'liked' : ''}\n * >\n * ❤️\n * </button>\n * );\n * }\n * ```\n */\n\nconst WISHLIST_STORAGE_KEY = 'salla::wishlist';\n\nlet ids: number[] = [];\nconst listeners = new Set<() => void>();\nlet subscribed = false;\n\nfunction emitChange() {\n for (const listener of listeners) listener();\n}\n\nfunction subscribe(listener: () => void) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\nfunction getSnapshot(): number[] {\n return ids;\n}\n\nconst getServerSnapshot = (): number[] => [];\n\nfunction persistIds() {\n try {\n localStorage.setItem(WISHLIST_STORAGE_KEY, JSON.stringify(ids));\n } catch {\n /* ignore storage errors */\n }\n}\n\nfunction initFromStorage() {\n try {\n const sdkWishlist = window.salla?.storage.get(WISHLIST_STORAGE_KEY, []);\n const stored = localStorage.getItem(WISHLIST_STORAGE_KEY);\n const parsed = stored ? JSON.parse(stored) : [];\n ids = Array.isArray(sdkWishlist) && sdkWishlist.length > 0 ? sdkWishlist : parsed;\n } catch {\n /* ignore storage errors */\n }\n}\n\nfunction ensureSubscribed() {\n if (subscribed || typeof window === 'undefined') return;\n subscribed = true;\n initFromStorage();\n\n const salla = window.salla;\n if (!salla?.wishlist?.event) return;\n\n salla.wishlist.event.onAdded((_event: unknown, id: number) => {\n if (ids.includes(id)) return;\n ids = [...ids, id];\n persistIds();\n emitChange();\n });\n\n salla.wishlist.event.onRemoved((_response: unknown, id: number) => {\n ids = ids.filter((itemId) => itemId !== id);\n persistIds();\n emitChange();\n });\n}\n\nexport function useWishlist(): UseWishlistResult {\n ensureSubscribed();\n const storedIds = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n const [addState, addFn] = useAsyncFn(async (productId: number) => {\n const salla = window.salla;\n await salla?.wishlist.add(productId);\n if (!ids.includes(productId)) {\n ids = [...ids, productId];\n persistIds();\n emitChange();\n }\n }, []);\n\n const [removeState, removeFn] = useAsyncFn(async (productId: number) => {\n const salla = window.salla;\n await salla?.wishlist.remove(productId);\n ids = ids.filter((id) => id !== productId);\n persistIds();\n emitChange();\n }, []);\n\n const has = useCallback((productId: number) => storedIds.includes(productId), [storedIds]);\n\n const add = async (productId: number): Promise<boolean> =>\n !(((await addFn(productId)) as unknown) instanceof Error);\n\n const remove = async (productId: number): Promise<boolean> =>\n !(((await removeFn(productId)) as unknown) instanceof Error);\n\n const toggle = useCallback(\n (productId: number) => (has(productId) ? remove(productId) : add(productId)),\n [has, addFn, removeFn]\n );\n\n return {\n ids: storedIds,\n count: storedIds.length,\n has,\n add,\n remove,\n toggle,\n loading: addState.loading || removeState.loading,\n error: (addState.error ?? removeState.error)?.message ?? null,\n };\n}\n\nexport function resetWishlistStore() {\n ids = [];\n listeners.clear();\n subscribed = false;\n}\n"]}
|